flatblox-tui 0.2.2 → 0.2.3

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.
Files changed (3) hide show
  1. package/README.md +1 -1
  2. package/dist/index.js +10 -10
  3. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -3,12 +3,12 @@
3
3
  process.env.FLATBLOX_SUPABASE_URL ||= "https://ldxdyymfagplpxxsqmgs.supabase.co";
4
4
  process.env.FLATBLOX_SUPABASE_PUBLISHABLE_KEY ||= "sb_publishable_mFx2R11m1O-XJCA1hZ85bA_bAOXyq9J";
5
5
  process.env.FLATBLOX_DASHBOARD_URL ||= "https://flatblox.com/dashboard/";
6
- var vu=Object.create;var{getPrototypeOf:Cu,defineProperty:Eo,getOwnPropertyNames:Eu}=Object;var Su=Object.prototype.hasOwnProperty;function Iu(e){return this[e]}var xu,ku,Ru=(e,t,r)=>{var n=e!=null&&typeof e==="object";if(n){var i=t?xu??=new WeakMap:ku??=new WeakMap,s=i.get(e);if(s)return s}r=e!=null?vu(Cu(e)):{};let o=t||!e||!e.__esModule?Eo(r,"default",{value:e,enumerable:!0}):r;if(e&&typeof e==="object"||typeof e==="function"){for(let a of Eu(e))if(!Su.call(o,a))Eo(o,a,{get:Iu.bind(e,a),enumerable:!0})}if(n)i.set(e,o);return o};var Tu=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Tl=Tu(function(A_,ci){var rl,nl,il,sl,ol,al,ll,cl,ul,dl,hl,Al,fl,ai,js,gl,ml,pl,Tr,bl,yl,wl,_l,vl,Cl,El,Sl,Il,li,xl,kl,Rl;(function(e){var t=typeof global==="object"?global:typeof self==="object"?self:typeof this==="object"?this:{};if(typeof define==="function"&&define.amd)define("tslib",["exports"],function(n){e(r(t,r(n)))});else if(typeof ci==="object"&&typeof A_==="object")e(r(t,r(A_)));else e(r(t));function r(n,i){if(n!==t)if(typeof Object.create==="function")Object.defineProperty(n,"__esModule",{value:!0});else n.__esModule=!0;return function(s,o){return n[s]=i?i(s,o):o}}})(function(e){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(s,o){s.__proto__=o}||function(s,o){for(var a in o)if(Object.prototype.hasOwnProperty.call(o,a))s[a]=o[a]};rl=function(s,o){if(typeof o!=="function"&&o!==null)throw TypeError("Class extends value "+String(o)+" is not a constructor or null");t(s,o);function a(){this.constructor=s}s.prototype=o===null?Object.create(o):(a.prototype=o.prototype,new a)},nl=Object.assign||function(s){for(var o,a=1,l=arguments.length;a<l;a++){o=arguments[a];for(var c in o)if(Object.prototype.hasOwnProperty.call(o,c))s[c]=o[c]}return s},il=function(s,o){var a={};for(var l in s)if(Object.prototype.hasOwnProperty.call(s,l)&&o.indexOf(l)<0)a[l]=s[l];if(s!=null&&typeof Object.getOwnPropertySymbols==="function"){for(var c=0,l=Object.getOwnPropertySymbols(s);c<l.length;c++)if(o.indexOf(l[c])<0&&Object.prototype.propertyIsEnumerable.call(s,l[c]))a[l[c]]=s[l[c]]}return a},sl=function(s,o,a,l){var c=arguments.length,u=c<3?o:l===null?l=Object.getOwnPropertyDescriptor(o,a):l,d;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")u=Reflect.decorate(s,o,a,l);else for(var A=s.length-1;A>=0;A--)if(d=s[A])u=(c<3?d(u):c>3?d(o,a,u):d(o,a))||u;return c>3&&u&&Object.defineProperty(o,a,u),u},ol=function(s,o){return function(a,l){o(a,l,s)}},al=function(s,o,a,l,c,u){function d(w){if(w!==void 0&&typeof w!=="function")throw TypeError("Function expected");return w}var A=l.kind,m=A==="getter"?"get":A==="setter"?"set":"value",g=!o&&s?l.static?s:s.prototype:null,f=o||(g?Object.getOwnPropertyDescriptor(g,l.name):{}),p,v=!1;for(var y=a.length-1;y>=0;y--){var S={};for(var _ in l)S[_]=_==="access"?{}:l[_];for(var _ in l.access)S.access[_]=l.access[_];S.addInitializer=function(w){if(v)throw TypeError("Cannot add initializers after decoration has completed");u.push(d(w||null))};var b=(0,a[y])(A==="accessor"?{get:f.get,set:f.set}:f[m],S);if(A==="accessor"){if(b===void 0)continue;if(b===null||typeof b!=="object")throw TypeError("Object expected");if(p=d(b.get))f.get=p;if(p=d(b.set))f.set=p;if(p=d(b.init))c.unshift(p)}else if(p=d(b))if(A==="field")c.unshift(p);else f[m]=p}if(g)Object.defineProperty(g,l.name,f);v=!0},ll=function(s,o,a){var l=arguments.length>2;for(var c=0;c<o.length;c++)a=l?o[c].call(s,a):o[c].call(s);return l?a:void 0},cl=function(s){return typeof s==="symbol"?s:"".concat(s)},ul=function(s,o,a){if(typeof o==="symbol")o=o.description?"[".concat(o.description,"]"):"";return Object.defineProperty(s,"name",{configurable:!0,value:a?"".concat(a," ",o):o})},dl=function(s,o){if(typeof Reflect==="object"&&typeof Reflect.metadata==="function")return Reflect.metadata(s,o)},hl=function(s,o,a,l){function c(u){return u instanceof a?u:new a(function(d){d(u)})}return new(a||(a=Promise))(function(u,d){function A(f){try{g(l.next(f))}catch(p){d(p)}}function m(f){try{g(l.throw(f))}catch(p){d(p)}}function g(f){f.done?u(f.value):c(f.value).then(A,m)}g((l=l.apply(s,o||[])).next())})},Al=function(s,o){var a={label:0,sent:function(){if(u[0]&1)throw u[1];return u[1]},trys:[],ops:[]},l,c,u,d=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return d.next=A(0),d.throw=A(1),d.return=A(2),typeof Symbol==="function"&&(d[Symbol.iterator]=function(){return this}),d;function A(g){return function(f){return m([g,f])}}function m(g){if(l)throw TypeError("Generator is already executing.");while(d&&(d=0,g[0]&&(a=0)),a)try{if(l=1,c&&(u=g[0]&2?c.return:g[0]?c.throw||((u=c.return)&&u.call(c),0):c.next)&&!(u=u.call(c,g[1])).done)return u;if(c=0,u)g=[g[0]&2,u.value];switch(g[0]){case 0:case 1:u=g;break;case 4:return a.label++,{value:g[1],done:!1};case 5:a.label++,c=g[1],g=[0];continue;case 7:g=a.ops.pop(),a.trys.pop();continue;default:if((u=a.trys,!(u=u.length>0&&u[u.length-1]))&&(g[0]===6||g[0]===2)){a=0;continue}if(g[0]===3&&(!u||g[1]>u[0]&&g[1]<u[3])){a.label=g[1];break}if(g[0]===6&&a.label<u[1]){a.label=u[1],u=g;break}if(u&&a.label<u[2]){a.label=u[2],a.ops.push(g);break}if(u[2])a.ops.pop();a.trys.pop();continue}g=o.call(s,a)}catch(f){g=[6,f],c=0}finally{l=u=0}if(g[0]&5)throw g[1];return{value:g[0]?g[1]:void 0,done:!0}}},fl=function(s,o){for(var a in s)if(a!=="default"&&!Object.prototype.hasOwnProperty.call(o,a))li(o,s,a)},li=Object.create?function(s,o,a,l){if(l===void 0)l=a;var c=Object.getOwnPropertyDescriptor(o,a);if(!c||("get"in c?!o.__esModule:c.writable||c.configurable))c={enumerable:!0,get:function(){return o[a]}};Object.defineProperty(s,l,c)}:function(s,o,a,l){if(l===void 0)l=a;s[l]=o[a]},ai=function(s){var o=typeof Symbol==="function"&&Symbol.iterator,a=o&&s[o],l=0;if(a)return a.call(s);if(s&&typeof s.length==="number")return{next:function(){if(s&&l>=s.length)s=void 0;return{value:s&&s[l++],done:!s}}};throw TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")},js=function(s,o){var a=typeof Symbol==="function"&&s[Symbol.iterator];if(!a)return s;var l=a.call(s),c,u=[],d;try{while((o===void 0||o-- >0)&&!(c=l.next()).done)u.push(c.value)}catch(A){d={error:A}}finally{try{if(c&&!c.done&&(a=l.return))a.call(l)}finally{if(d)throw d.error}}return u},gl=function(){for(var s=[],o=0;o<arguments.length;o++)s=s.concat(js(arguments[o]));return s},ml=function(){for(var s=0,o=0,a=arguments.length;o<a;o++)s+=arguments[o].length;for(var l=Array(s),c=0,o=0;o<a;o++)for(var u=arguments[o],d=0,A=u.length;d<A;d++,c++)l[c]=u[d];return l},pl=function(s,o,a){if(a||arguments.length===2){for(var l=0,c=o.length,u;l<c;l++)if(u||!(l in o)){if(!u)u=Array.prototype.slice.call(o,0,l);u[l]=o[l]}}return s.concat(u||Array.prototype.slice.call(o))},Tr=function(s){return this instanceof Tr?(this.v=s,this):new Tr(s)},bl=function(s,o,a){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var l=a.apply(s,o||[]),c,u=[];return c=Object.create((typeof AsyncIterator==="function"?AsyncIterator:Object).prototype),A("next"),A("throw"),A("return",d),c[Symbol.asyncIterator]=function(){return this},c;function d(y){return function(S){return Promise.resolve(S).then(y,p)}}function A(y,S){if(l[y]){if(c[y]=function(_){return new Promise(function(b,w){u.push([y,_,b,w])>1||m(y,_)})},S)c[y]=S(c[y])}}function m(y,S){try{g(l[y](S))}catch(_){v(u[0][3],_)}}function g(y){y.value instanceof Tr?Promise.resolve(y.value.v).then(f,p):v(u[0][2],y)}function f(y){m("next",y)}function p(y){m("throw",y)}function v(y,S){if(y(S),u.shift(),u.length)m(u[0][0],u[0][1])}},yl=function(s){var o,a;return o={},l("next"),l("throw",function(c){throw c}),l("return"),o[Symbol.iterator]=function(){return this},o;function l(c,u){o[c]=s[c]?function(d){return(a=!a)?{value:Tr(s[c](d)),done:!1}:u?u(d):d}:u}},wl=function(s){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var o=s[Symbol.asyncIterator],a;return o?o.call(s):(s=typeof ai==="function"?ai(s):s[Symbol.iterator](),a={},l("next"),l("throw"),l("return"),a[Symbol.asyncIterator]=function(){return this},a);function l(u){a[u]=s[u]&&function(d){return new Promise(function(A,m){d=s[u](d),c(A,m,d.done,d.value)})}}function c(u,d,A,m){Promise.resolve(m).then(function(g){u({value:g,done:A})},d)}},_l=function(s,o){if(Object.defineProperty)Object.defineProperty(s,"raw",{value:o});else s.raw=o;return s};var r=Object.create?function(s,o){Object.defineProperty(s,"default",{enumerable:!0,value:o})}:function(s,o){s.default=o},n=function(s){return n=Object.getOwnPropertyNames||function(o){var a=[];for(var l in o)if(Object.prototype.hasOwnProperty.call(o,l))a[a.length]=l;return a},n(s)};vl=function(s){if(s&&s.__esModule)return s;var o={};if(s!=null){for(var a=n(s),l=0;l<a.length;l++)if(a[l]!=="default")li(o,s,a[l])}return r(o,s),o},Cl=function(s){return s&&s.__esModule?s:{default:s}},El=function(s,o,a,l){if(a==="a"&&!l)throw TypeError("Private accessor was defined without a getter");if(typeof o==="function"?s!==o||!l:!o.has(s))throw TypeError("Cannot read private member from an object whose class did not declare it");return a==="m"?l:a==="a"?l.call(s):l?l.value:o.get(s)},Sl=function(s,o,a,l,c){if(l==="m")throw TypeError("Private method is not writable");if(l==="a"&&!c)throw TypeError("Private accessor was defined without a setter");if(typeof o==="function"?s!==o||!c:!o.has(s))throw TypeError("Cannot write private member to an object whose class did not declare it");return l==="a"?c.call(s,a):c?c.value=a:o.set(s,a),a},Il=function(s,o){if(o===null||typeof o!=="object"&&typeof o!=="function")throw TypeError("Cannot use 'in' operator on non-object");return typeof s==="function"?o===s:s.has(o)},xl=function(s,o,a){if(o!==null&&o!==void 0){if(typeof o!=="object"&&typeof o!=="function")throw TypeError("Object expected.");var l,c;if(a){if(!Symbol.asyncDispose)throw TypeError("Symbol.asyncDispose is not defined.");l=o[Symbol.asyncDispose]}if(l===void 0){if(!Symbol.dispose)throw TypeError("Symbol.dispose is not defined.");if(l=o[Symbol.dispose],a)c=l}if(typeof l!=="function")throw TypeError("Object not disposable.");if(c)l=function(){try{c.call(this)}catch(u){return Promise.reject(u)}};s.stack.push({value:o,dispose:l,async:a})}else if(a)s.stack.push({async:!0});return o};var i=typeof SuppressedError==="function"?SuppressedError:function(s,o,a){var l=Error(a);return l.name="SuppressedError",l.error=s,l.suppressed=o,l};kl=function(s){function o(u){s.error=s.hasError?new i(u,s.error,"An error was suppressed during disposal."):u,s.hasError=!0}var a,l=0;function c(){while(a=s.stack.pop())try{if(!a.async&&l===1)return l=0,s.stack.push(a),Promise.resolve().then(c);if(a.dispose){var u=a.dispose.call(a.value);if(a.async)return l|=2,Promise.resolve(u).then(c,function(d){return o(d),c()})}else l|=1}catch(d){o(d)}if(l===1)return s.hasError?Promise.reject(s.error):Promise.resolve();if(s.hasError)throw s.error}return c()},Rl=function(s,o){if(typeof s==="string"&&/^\.\.?\//.test(s))return s.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(a,l,c,u,d){return l?o?".jsx":".js":c&&(!u||!d)?a:c+u+"."+d.toLowerCase()+"js"});return s},e("__extends",rl),e("__assign",nl),e("__rest",il),e("__decorate",sl),e("__param",ol),e("__esDecorate",al),e("__runInitializers",ll),e("__propKey",cl),e("__setFunctionName",ul),e("__metadata",dl),e("__awaiter",hl),e("__generator",Al),e("__exportStar",fl),e("__createBinding",li),e("__values",ai),e("__read",js),e("__spread",gl),e("__spreadArrays",ml),e("__spreadArray",pl),e("__await",Tr),e("__asyncGenerator",bl),e("__asyncDelegator",yl),e("__asyncValues",wl),e("__makeTemplateObject",_l),e("__importStar",vl),e("__importDefault",Cl),e("__classPrivateFieldGet",El),e("__classPrivateFieldSet",Sl),e("__classPrivateFieldIn",Il),e("__addDisposableResource",xl),e("__disposeResources",kl),e("__rewriteRelativeImportExtension",Rl)})});import{CliRenderer as nd,createCliRenderer as id,engine as sd}from"@opentui/core";import{createTestRenderer as Ym}from"@opentui/core/testing";import{ASCIIFontRenderable as od,BoxRenderable as ad,CodeRenderable as ld,DiffRenderable as cd,ImageRenderable as ud,InputRenderable as dd,LineNumberRenderable as hd,MarkdownRenderable as Ad,ScrollBoxRenderable as fd,SelectRenderable as gd,TabSelectRenderable as md,TextareaRenderable as pd,TextAttributes as ts,TextNodeRenderable as bd,TextRenderable as yd}from"@opentui/core";import{engine as $m,Timeline as Zm}from"@opentui/core";var Ye={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return So(this.context.count)},getNextContextId(){return So(this.context.count++)}};function So(e){let t=String(e),r=t.length-1;return Ye.context.id+(r?String.fromCharCode(96+r):"")+t}function Qi(e){Ye.context=e}function Bu(){return{...Ye.context,id:Ye.getNextContextId(),count:0}}var Ou=!1,Pu=(e,t)=>e===t,Ji=Symbol("solid-proxy"),Nu=typeof Proxy==="function",Du=Symbol("solid-track"),Sm=Symbol("solid-dev-component"),jn={equals:Pu},Io=null,Bo=Mo,ft=1,Kr=2,Oo={owned:null,cleanups:null,context:null,owner:null};var ae=null,N=null,Yr=null,fr=null,we=null,Le=null,Je=null,Kn=0;function Zt(e,t){let r=we,n=ae,i=e.length===0,s=t===void 0?n:t,o=i?Oo:{owned:null,cleanups:null,context:s?s.context:null,owner:s},a=i?e:()=>e(()=>gt(()=>Ht(o)));ae=o,we=null;try{return Nt(a,!0)}finally{we=r,ae=n}}function Z(e,t){t=t?Object.assign({},jn,t):jn;let r={value:e,observers:null,observerSlots:null,comparator:t.equals||void 0},n=(i)=>{if(typeof i==="function")if(N&&N.running&&N.sources.has(r))i=i(r.tValue);else i=i(r.value);return Lo(r,i)};return[Do.bind(r),n]}function St(e,t,r){let n=Xi(e,t,!1,ft);if(Yr&&N&&N.running)Le.push(n);else Jr(n)}function Wn(e,t,r){Bo=Gu;let n=Xi(e,t,!1,ft),i=$i&&Qr($i);if(i)n.suspense=i;if(!r||!r.render)n.user=!0;Je?Je.push(n):Jr(n)}function Y(e,t,r){r=r?Object.assign({},jn,r):jn;let n=Xi(e,t,!0,0);if(n.observers=null,n.observerSlots=null,n.comparator=r.equals||void 0,Yr&&N&&N.running)n.tState=ft,Le.push(n);else Jr(n);return Do.bind(n)}function gt(e){if(!fr&&we===null)return e();let t=we;we=null;try{if(fr)return fr.untrack(e);return e()}finally{we=t}}function Xt(e){Wn(()=>gt(e))}function ze(e){if(ae===null);else if(ae.cleanups===null)ae.cleanups=[e];else ae.cleanups.push(e);return e}function Lu(e){if(N&&N.running)return e(),N.done;let t=we,r=ae;return Promise.resolve().then(()=>{we=t,ae=r;let n;if(Yr||$i)n=N||(N={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0}),n.done||(n.done=new Promise((i)=>n.resolve=i)),n.running=!0;return Nt(e,!1),we=ae=null,n?n.done:void 0})}var[Im,xo]=Z(!1);function Po(e,t){let r=Symbol("context");return{id:r,Provider:ju(r),defaultValue:e}}function Qr(e){let t;return ae&&ae.context&&(t=ae.context[e.id])!==void 0?t:e.defaultValue}function No(e){let t=Y(e),r=Y(()=>Zi(t()));return r.toArray=()=>{let n=r();return Array.isArray(n)?n:n!=null?[n]:[]},r}var $i;function Do(){let e=N&&N.running;if(this.sources&&(e?this.tState:this.state))if((e?this.tState:this.state)===ft)Jr(this);else{let t=Le;Le=null,Nt(()=>Hn(this),!1),Le=t}if(we){let t=this.observers?this.observers.length:0;if(!we.sources)we.sources=[this],we.sourceSlots=[t];else we.sources.push(this),we.sourceSlots.push(t);if(!this.observers)this.observers=[we],this.observerSlots=[we.sources.length-1];else this.observers.push(we),this.observerSlots.push(we.sources.length-1)}if(e&&N.sources.has(this))return this.tValue;return this.value}function Lo(e,t,r){let n=N&&N.running&&N.sources.has(e)?e.tValue:e.value;if(!e.comparator||!e.comparator(n,t)){if(N){let i=N.running;if(i||!r&&N.sources.has(e))N.sources.add(e),e.tValue=t;if(!i)e.value=t}else e.value=t;if(e.observers&&e.observers.length)Nt(()=>{for(let i=0;i<e.observers.length;i+=1){let s=e.observers[i],o=N&&N.running;if(o&&N.disposed.has(s))continue;if(o?!s.tState:!s.state){if(s.pure)Le.push(s);else Je.push(s);if(s.observers)Fo(s)}if(!o)s.state=ft;else s.tState=ft}if(Le.length>1e6)throw Le=[],Error()},!1)}return t}function Jr(e){if(!e.fn)return;Ht(e);let t=Kn;if(ko(e,N&&N.running&&N.sources.has(e)?e.tValue:e.value,t),N&&!N.running&&N.sources.has(e))queueMicrotask(()=>{Nt(()=>{N&&(N.running=!0),we=ae=e,ko(e,e.tValue,t),we=ae=null},!1)})}function ko(e,t,r){let n,i=ae,s=we;we=ae=e;try{n=e.fn(t)}catch(o){if(e.pure)if(N&&N.running)e.tState=ft,e.tOwned&&e.tOwned.forEach(Ht),e.tOwned=void 0;else e.state=ft,e.owned&&e.owned.forEach(Ht),e.owned=null;return e.updatedAt=r+1,Vi(o)}finally{we=s,ae=i}if(!e.updatedAt||e.updatedAt<=r){if(e.updatedAt!=null&&"observers"in e)Lo(e,n,!0);else if(N&&N.running&&e.pure){if(!N.sources.has(e))e.value=n;N.sources.add(e),e.tValue=n}else e.value=n;e.updatedAt=r}}function Xi(e,t,r,n=ft,i){let s={fn:e,state:n,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:ae,context:ae?ae.context:null,pure:r};if(N&&N.running)s.state=0,s.tState=n;if(ae===null);else if(ae!==Oo)if(N&&N.running&&ae.pure)if(!ae.tOwned)ae.tOwned=[s];else ae.tOwned.push(s);else if(!ae.owned)ae.owned=[s];else ae.owned.push(s);if(fr&&s.fn){let o=s.fn,[a,l]=Z(void 0,{equals:!1}),c=fr.factory(o,l);ze(()=>c.dispose());let u,d=()=>Lu(l).then(()=>{if(u)u.dispose(),u=void 0});s.fn=(A)=>{if(a(),N&&N.running){if(!u)u=fr.factory(o,d);return u.track(A)}return c.track(A)}}return s}function Wr(e){let t=N&&N.running;if((t?e.tState:e.state)===0)return;if((t?e.tState:e.state)===Kr)return Hn(e);if(e.suspense&&gt(e.suspense.inFallback))return e.suspense.effects.push(e);let r=[e];while((e=e.owner)&&(!e.updatedAt||e.updatedAt<Kn)){if(t&&N.disposed.has(e))return;if(t?e.tState:e.state)r.push(e)}for(let n=r.length-1;n>=0;n--){if(e=r[n],t){let i=e,s=r[n+1];while((i=i.owner)&&i!==s)if(N.disposed.has(i))return}if((t?e.tState:e.state)===ft)Jr(e);else if((t?e.tState:e.state)===Kr){let i=Le;Le=null,Nt(()=>Hn(e,r[0]),!1),Le=i}}}function Nt(e,t){if(Le)return e();let r=!1;if(!t)Le=[];if(Je)r=!0;else Je=[];Kn++;try{let n=e();return Mu(r),n}catch(n){if(!r)Je=null;Le=null,Vi(n)}}function Mu(e){if(Le){if(Yr&&N&&N.running)Fu(Le);else Mo(Le);Le=null}if(e)return;let t;if(N){if(!N.promises.size&&!N.queue.size){let{sources:n,disposed:i}=N;Je.push.apply(Je,N.effects),t=N.resolve;for(let s of Je)"tState"in s&&(s.state=s.tState),delete s.tState;N=null,Nt(()=>{for(let s of i)Ht(s);for(let s of n){if(s.value=s.tValue,s.owned)for(let o=0,a=s.owned.length;o<a;o++)Ht(s.owned[o]);if(s.tOwned)s.owned=s.tOwned;delete s.tValue,delete s.tOwned,s.tState=0}xo(!1)},!1)}else if(N.running){N.running=!1,N.effects.push.apply(N.effects,Je),Je=null,xo(!0);return}}let r=Je;if(Je=null,r.length)Nt(()=>Bo(r),!1);if(t)t()}function Mo(e){for(let t=0;t<e.length;t++)Wr(e[t])}function Fu(e){for(let t=0;t<e.length;t++){let r=e[t],n=N.queue;if(!n.has(r))n.add(r),Yr(()=>{n.delete(r),Nt(()=>{N.running=!0,Wr(r)},!1),N&&(N.running=!1)})}}function Gu(e){let t,r=0;for(t=0;t<e.length;t++){let n=e[t];if(!n.user)Wr(n);else e[r++]=n}if(Ye.context){if(Ye.count){Ye.effects||(Ye.effects=[]),Ye.effects.push(...e.slice(0,r));return}Qi()}if(Ye.effects&&(Ye.done||!Ye.count))e=[...Ye.effects,...e],r+=Ye.effects.length,delete Ye.effects;for(t=0;t<r;t++)Wr(e[t])}function Hn(e,t){let r=N&&N.running;if(r)e.tState=0;else e.state=0;for(let n=0;n<e.sources.length;n+=1){let i=e.sources[n];if(i.sources){let s=r?i.tState:i.state;if(s===ft){if(i!==t&&(!i.updatedAt||i.updatedAt<Kn))Wr(i)}else if(s===Kr)Hn(i,t)}}}function Fo(e){let t=N&&N.running;for(let r=0;r<e.observers.length;r+=1){let n=e.observers[r];if(t?!n.tState:!n.state){if(t)n.tState=Kr;else n.state=Kr;if(n.pure)Le.push(n);else Je.push(n);n.observers&&Fo(n)}}}function Ht(e){let t;if(e.sources)while(e.sources.length){let r=e.sources.pop(),n=e.sourceSlots.pop(),i=r.observers;if(i&&i.length){let s=i.pop(),o=r.observerSlots.pop();if(n<i.length)s.sourceSlots[o]=n,i[n]=s,r.observerSlots[n]=o}}if(e.tOwned){for(t=e.tOwned.length-1;t>=0;t--)Ht(e.tOwned[t]);delete e.tOwned}if(N&&N.running&&e.pure)Go(e,!0);else if(e.owned){for(t=e.owned.length-1;t>=0;t--)Ht(e.owned[t]);e.owned=null}if(e.cleanups){for(t=e.cleanups.length-1;t>=0;t--)e.cleanups[t]();e.cleanups=null}if(N&&N.running)e.tState=0;else e.state=0}function Go(e,t){if(!t)e.tState=0,N.disposed.add(e);if(e.owned)for(let r=0;r<e.owned.length;r++)Go(e.owned[r])}function Uu(e){if(e instanceof Error)return e;return Error(typeof e==="string"?e:"Unknown error",{cause:e})}function Ro(e,t,r){try{for(let n of t)n(e)}catch(n){Vi(n,r&&r.owner||null)}}function Vi(e,t=ae){let r=Io&&t&&t.context&&t.context[Io],n=Uu(e);if(!r)throw n;if(Je)Je.push({fn(){Ro(n,r,t)},state:ft});else Ro(n,r,t)}function Zi(e){if(typeof e==="function"&&!e.length)return Zi(e());if(Array.isArray(e)){let t=[];for(let r=0;r<e.length;r++){let n=Zi(e[r]);Array.isArray(n)?t.push.apply(t,n):t.push(n)}return t}return e}function ju(e,t){return function(n){let i;return St(()=>i=gt(()=>(ae.context={...ae.context,[e]:n.value},No(()=>n.children))),void 0),i}}var Hu=Symbol("fallback");function To(e){for(let t=0;t<e.length;t++)e[t]()}function Ku(e,t,r={}){let n=[],i=[],s=[],o=0,a=t.length>1?[]:null;return ze(()=>To(s)),()=>{let l=e()||[],c=l.length,u,d;return l[Du],gt(()=>{let m,g,f,p,v,y,S,_,b;if(c===0){if(o!==0)To(s),s=[],n=[],i=[],o=0,a&&(a=[]);if(r.fallback)n=[Hu],i[0]=Zt((w)=>(s[0]=w,r.fallback())),o=1}else if(o===0){i=Array(c);for(d=0;d<c;d++)n[d]=l[d],i[d]=Zt(A);o=c}else{f=Array(c),p=Array(c),a&&(v=Array(c));for(y=0,S=Math.min(o,c);y<S&&n[y]===l[y];y++);for(S=o-1,_=c-1;S>=y&&_>=y&&n[S]===l[_];S--,_--)f[_]=i[S],p[_]=s[S],a&&(v[_]=a[S]);m=new Map,g=Array(_+1);for(d=_;d>=y;d--)b=l[d],u=m.get(b),g[d]=u===void 0?-1:u,m.set(b,d);for(u=y;u<=S;u++)if(b=n[u],d=m.get(b),d!==void 0&&d!==-1)f[d]=i[u],p[d]=s[u],a&&(v[d]=a[u]),d=g[d],m.set(b,d);else s[u]();for(d=y;d<c;d++)if(d in f){if(i[d]=f[d],s[d]=p[d],a)a[d]=v[d],a[d](d)}else i[d]=Zt(A);i=i.slice(0,o=c),n=l.slice(0)}return i});function A(m){if(s[d]=m,a){let[g,f]=Z(d);return a[d]=f,t(l[d],g)}return t(l[d])}}}var Wu=!1;function Uo(e,t){if(Wu){if(Ye.context){let r=Ye.context;Qi(Bu());let n=gt(()=>e(t||{}));return Qi(r),n}}return gt(()=>e(t||{}))}function Un(){return!0}var Yu={get(e,t,r){if(t===Ji)return r;return e.get(t)},has(e,t){if(t===Ji)return!0;return e.has(t)},set:Un,deleteProperty:Un,getOwnPropertyDescriptor(e,t){return{configurable:!0,enumerable:!0,get(){return e.get(t)},set:Un,deleteProperty:Un}},ownKeys(e){return e.keys()}};function Yi(e){return!(e=typeof e==="function"?e():e)?{}:e}function Qu(){for(let e=0,t=this.length;e<t;++e){let r=this[e]();if(r!==void 0)return r}}function Yn(...e){let t=!1;for(let o=0;o<e.length;o++){let a=e[o];t=t||!!a&&Ji in a,e[o]=typeof a==="function"?(t=!0,Y(a)):a}if(Nu&&t)return new Proxy({get(o){for(let a=e.length-1;a>=0;a--){let l=Yi(e[a])[o];if(l!==void 0)return l}},has(o){for(let a=e.length-1;a>=0;a--)if(o in Yi(e[a]))return!0;return!1},keys(){let o=[];for(let a=0;a<e.length;a++)o.push(...Object.keys(Yi(e[a])));return[...new Set(o)]}},Yu);let r={},n=Object.create(null);for(let o=e.length-1;o>=0;o--){let a=e[o];if(!a)continue;let l=Object.getOwnPropertyNames(a);for(let c=l.length-1;c>=0;c--){let u=l[c];if(u==="__proto__"||u==="constructor")continue;let d=Object.getOwnPropertyDescriptor(a,u);if(!n[u])n[u]=d.get?{enumerable:!0,configurable:!0,get:Qu.bind(r[u]=[d.get.bind(a)])}:d.value!==void 0?d:void 0;else{let A=r[u];if(A){if(d.get)A.push(d.get.bind(a));else if(d.value!==void 0)A.push(()=>d.value)}}}}let i={},s=Object.keys(n);for(let o=s.length-1;o>=0;o--){let a=s[o],l=n[a];if(l&&l.get)Object.defineProperty(i,a,l);else i[a]=l?l.value:void 0}return i}var Ju=(e)=>`Stale read from <${e}>.`;function yt(e){let t="fallback"in e&&{fallback:()=>e.fallback};return Y(Ku(()=>e.each,e.children,t||void 0))}function Me(e){let t=e.keyed,r=Y(()=>e.when,void 0,void 0),n=t?r:Y(r,void 0,{equals:(i,s)=>!i===!s});return Y(()=>{let i=n();if(i){let s=e.children;return typeof s==="function"&&s.length>0?gt(()=>s(t?i:()=>{if(!gt(n))throw Ju("Show");return r()})):s}return e.fallback},void 0,void 0)}import{BaseRenderable as oa,createTextAttributes as Cd,ImageRenderable as Zo,InputRenderable as rs,InputRenderableEvents as Zr,isTextNodeRenderable as as,isEditBufferRenderable as Ed,parseColor as Xo,Renderable as Sd,RootTextNodeRenderable as Id,ScrollBoxRenderable as xd,SelectRenderable as Vo,SelectRenderableEvents as ns,TabSelectRenderable as zo,TabSelectRenderableEvents as is,TextNodeRenderable as kd,TextRenderable as aa}from"@opentui/core";var zi,$u=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),jo=(zi=String.fromCodePoint)!==null&&zi!==void 0?zi:(e)=>{let t="";if(e>65535)e-=65536,t+=String.fromCharCode(e>>>10&1023|55296),e=56320|e&1023;return t+=String.fromCharCode(e),t};function Ho(e){var t;if(e>=55296&&e<=57343||e>1114111)return 65533;return(t=$u.get(e))!==null&&t!==void 0?t:e}function Ko(e){let t=typeof atob==="function"?atob(e):typeof Buffer.from==="function"?Buffer.from(e,"base64").toString("binary"):new Buffer(e,"base64").toString("binary"),r=t.length&-2,n=new Uint16Array(r/2);for(let i=0,s=0;i<r;i+=2){let o=t.charCodeAt(i),a=t.charCodeAt(i+1);n[s++]=o|a<<8}return n}var Wo=Ko("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");var $e;(function(e){e[e.VALUE_LENGTH=49152]="VALUE_LENGTH",e[e.FLAG13=8192]="FLAG13",e[e.BRANCH_LENGTH=8064]="BRANCH_LENGTH",e[e.JUMP_TABLE=127]="JUMP_TABLE"})($e||($e={}));var Ce;(function(e){e[e.NUM=35]="NUM",e[e.SEMI=59]="SEMI",e[e.EQUALS=61]="EQUALS",e[e.ZERO=48]="ZERO",e[e.NINE=57]="NINE",e[e.LOWER_A=97]="LOWER_A",e[e.LOWER_F=102]="LOWER_F",e[e.LOWER_X=120]="LOWER_X",e[e.LOWER_Z=122]="LOWER_Z",e[e.UPPER_A=65]="UPPER_A",e[e.UPPER_F=70]="UPPER_F",e[e.UPPER_Z=90]="UPPER_Z"})(Ce||(Ce={}));var Yo=32;function qi(e){return e>=Ce.ZERO&&e<=Ce.NINE}function Zu(e){return e>=Ce.UPPER_A&&e<=Ce.UPPER_F||e>=Ce.LOWER_A&&e<=Ce.LOWER_F}function Xu(e){return e>=Ce.UPPER_A&&e<=Ce.UPPER_Z||e>=Ce.LOWER_A&&e<=Ce.LOWER_Z||qi(e)}function Vu(e){return e===Ce.EQUALS||Xu(e)}var je;(function(e){e[e.EntityStart=0]="EntityStart",e[e.NumericStart=1]="NumericStart",e[e.NumericDecimal=2]="NumericDecimal",e[e.NumericHex=3]="NumericHex",e[e.NamedEntity=4]="NamedEntity"})(je||(je={}));var Dt;(function(e){e[e.Legacy=0]="Legacy",e[e.Strict=1]="Strict",e[e.Attribute=2]="Attribute"})(Dt||(Dt={}));class es{constructor(e,t,r){this.decodeTree=e,this.emitCodePoint=t,this.errors=r,this.state=je.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=Dt.Strict,this.runConsumed=0}startEntity(e){this.decodeMode=e,this.state=je.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(e,t){switch(this.state){case je.EntityStart:{if(e.charCodeAt(t)===Ce.NUM)return this.state=je.NumericStart,this.consumed+=1,this.stateNumericStart(e,t+1);return this.state=je.NamedEntity,this.stateNamedEntity(e,t)}case je.NumericStart:return this.stateNumericStart(e,t);case je.NumericDecimal:return this.stateNumericDecimal(e,t);case je.NumericHex:return this.stateNumericHex(e,t);case je.NamedEntity:return this.stateNamedEntity(e,t)}}stateNumericStart(e,t){if(t>=e.length)return-1;if((e.charCodeAt(t)|Yo)===Ce.LOWER_X)return this.state=je.NumericHex,this.consumed+=1,this.stateNumericHex(e,t+1);return this.state=je.NumericDecimal,this.stateNumericDecimal(e,t)}stateNumericHex(e,t){while(t<e.length){let r=e.charCodeAt(t);if(qi(r)||Zu(r)){let n=r<=Ce.NINE?r-Ce.ZERO:(r|Yo)-Ce.LOWER_A+10;this.result=this.result*16+n,this.consumed++,t++}else return this.emitNumericEntity(r,3)}return-1}stateNumericDecimal(e,t){while(t<e.length){let r=e.charCodeAt(t);if(qi(r))this.result=this.result*10+(r-Ce.ZERO),this.consumed++,t++;else return this.emitNumericEntity(r,2)}return-1}emitNumericEntity(e,t){var r;if(this.consumed<=t)return(r=this.errors)===null||r===void 0||r.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(e===Ce.SEMI)this.consumed+=1;else if(this.decodeMode===Dt.Strict)return 0;if(this.emitCodePoint(Ho(this.result),this.consumed),this.errors){if(e!==Ce.SEMI)this.errors.missingSemicolonAfterCharacterReference();this.errors.validateNumericCharacterReference(this.result)}return this.consumed}stateNamedEntity(e,t){let{decodeTree:r}=this,n=r[this.treeIndex],i=(n&$e.VALUE_LENGTH)>>14;while(t<e.length){if(i===0&&(n&$e.FLAG13)!==0){let o=(n&$e.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let a=n&$e.JUMP_TABLE;if(e.charCodeAt(t)!==a)return this.result===0?0:this.emitNotTerminatedNamedEntity();t++,this.excess++,this.runConsumed++}while(this.runConsumed<o){if(t>=e.length)return-1;let a=this.runConsumed-1,l=r[this.treeIndex+1+(a>>1)],c=a%2===0?l&255:l>>8&255;if(e.charCodeAt(t)!==c)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();t++,this.excess++,this.runConsumed++}this.runConsumed=0,this.treeIndex+=1+(o>>1),n=r[this.treeIndex],i=(n&$e.VALUE_LENGTH)>>14}if(t>=e.length)break;let s=e.charCodeAt(t);if(s===Ce.SEMI&&i!==0&&(n&$e.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);if(this.treeIndex=qu(r,n,this.treeIndex+Math.max(1,i),s),this.treeIndex<0)return this.result===0||this.decodeMode===Dt.Attribute&&(i===0||Vu(s))?0:this.emitNotTerminatedNamedEntity();if(n=r[this.treeIndex],i=(n&$e.VALUE_LENGTH)>>14,i!==0){if(s===Ce.SEMI)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);if(this.decodeMode!==Dt.Strict&&(n&$e.FLAG13)===0)this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0}t++,this.excess++}return-1}emitNotTerminatedNamedEntity(){var e;let{result:t,decodeTree:r}=this,n=(r[t]&$e.VALUE_LENGTH)>>14;return this.emitNamedEntityData(t,n,this.consumed),(e=this.errors)===null||e===void 0||e.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(e,t,r){let{decodeTree:n}=this;if(this.emitCodePoint(t===1?n[e]&~($e.VALUE_LENGTH|$e.FLAG13):n[e+1],r),t===3)this.emitCodePoint(n[e+2],r);return r}end(){var e;switch(this.state){case je.NamedEntity:return this.result!==0&&(this.decodeMode!==Dt.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case je.NumericDecimal:return this.emitNumericEntity(0,2);case je.NumericHex:return this.emitNumericEntity(0,3);case je.NumericStart:return(e=this.errors)===null||e===void 0||e.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case je.EntityStart:return 0}}}function zu(e){let t="",r=new es(e,(n)=>t+=jo(n));return function(i,s){let o=0,a=0;while((a=i.indexOf("&",a))>=0){t+=i.slice(o,a),r.startEntity(s);let c=r.write(i,a+1);if(c<0){o=a+r.end();break}o=a+c,a=c===0?o+1:o}let l=t+i.slice(o);return t="",l}}function qu(e,t,r,n){let i=(t&$e.BRANCH_LENGTH)>>7,s=t&$e.JUMP_TABLE;if(i===0)return s!==0&&n===s?r:-1;if(s){let c=n-s;return c<0||c>=i?-1:e[r+c]-1}let o=i+1>>1,a=0,l=i-1;while(a<=l){let c=a+l>>>1,u=c>>1,A=e[r+u]>>(c&1)*8&255;if(A<n)a=c+1;else if(A>n)l=c-1;else return e[r+o+c]}return-1}var ed=zu(Wo);function $r(e){return ed(e,Dt.Strict)}var Qo;(function(e){e[e.XML=0]="XML",e[e.HTML=1]="HTML"})(Qo||(Qo={}));var Jo;(function(e){e[e.UTF8=0]="UTF8",e[e.ASCII=1]="ASCII",e[e.Extensive=2]="Extensive",e[e.Attribute=3]="Attribute",e[e.Text=4]="Text"})(Jo||(Jo={}));import{BaseRenderable as Ld,isTextNodeRenderable as Md,TextNodeRenderable as Fd,TextRenderable as Gd,Yoga as la}from"@opentui/core";import{BoxRenderable as lp,RootRenderable as cp}from"@opentui/core";import{TimeToFirstDrawRenderable as jd}from"@opentui/core";import{createSlotRegistry as Ap}from"@opentui/core";class Xr extends bd{_ctx;constructor(e,t){super(t);this._ctx=e}}class Jn extends Xr{constructor(e,t){super(null,e);if(t==="b"||t==="strong")this.attributes=(this.attributes||0)|ts.BOLD;else if(t==="i"||t==="em")this.attributes=(this.attributes||0)|ts.ITALIC;else if(t==="u")this.attributes=(this.attributes||0)|ts.UNDERLINE}}class ss extends Jn{constructor(e){super(e,"b")}}class os extends Jn{constructor(e){super(e,"i")}}class ra extends Jn{constructor(e){super(e,"u")}}class na extends Xr{constructor(e,t){super(null,t);this.add()}add(){return super.add(`
7
- `)}}class ia extends Xr{constructor(e,t){let r={...t,link:{url:t.href}};super(null,r)}}var wd={box:ad,text:yd,input:dd,select:gd,textarea:pd,ascii_font:od,tab_select:md,scrollbox:fd,code:ld,diff:cd,line_number:hd,markdown:Ad,image:ud,span:Xr,strong:ss,b:ss,em:os,i:os,u:ra,br:na,a:ia},sa={...wd};function Lt(e){Object.assign(sa,e)}function _d(){return sa}var ds=Po(),wt=()=>{let e=Qr(ds);if(!e)throw Error("No renderer found");return e},vd=(e)=>{let t=wt();Xt(()=>{t.on("resize",e)}),ze(()=>{t.off("resize",e)})},pr=()=>{let e=wt(),[t,r]=Z({width:e.width,height:e.height});return vd((i,s)=>{r({width:i,height:s})}),t},br=(e,t)=>{let n=wt().keyInput;Xt(()=>{if(n.on("keypress",e),t?.release)n.on("keyrelease",e)}),ze(()=>{if(n.off("keypress",e),t?.release)n.off("keyrelease",e)})};var Rd=(e)=>Y(()=>e());function Td({createElement:e,createTextNode:t,createDynamicTextNode:r,createSlotNode:n,isTextNode:i,replaceText:s,insertNode:o,removeNode:a,setProperty:l,getParentNode:c,getFirstChild:u,getNextSibling:d}){function A(_,b,w,C){if(w!==void 0&&!C)C=[];if(typeof b!=="function")return m(_,b,C,w);St((P)=>m(_,b(),P,w),C)}function m(_,b,w,C,P){while(typeof w==="function")w=w();if(b===w)return w;let M=typeof b,B=C!==void 0;if(M==="string"||M==="number"){if(M==="number")b=b.toString();if(B){let k=w[0];if(k&&i(k))s(k,b);else k=r(b);w=p(_,w,C,k)}else if(w!==""&&typeof w==="string")s(u(_),w=b);else p(_,w,C,r(b)),w=b}else if(b==null||M==="boolean")w=p(_,w,C);else if(M==="function")return St(()=>{let k=b();while(typeof k==="function")k=k();w=m(_,k,w,C)}),()=>w;else if(Array.isArray(b)){let k=[];if(g(k,b,P))return St(()=>w=m(_,k,w,C,!0)),()=>w;if(k.length===0){let j=p(_,w,C);if(B)return w=j}else if(Array.isArray(w))if(w.length===0)v(_,k,C);else f(_,w,k);else if(w==null||w==="")v(_,k);else f(_,B&&w||[u(_)],k);w=k}else{if(Array.isArray(w)){if(B)return w=p(_,w,C,b);p(_,w,null,b)}else if(w==null||w===""||!u(_))o(_,b);else y(_,b,u(_));w=b}return w}function g(_,b,w){let C=!1;for(let P=0,M=b.length;P<M;P++){let B=b[P],k;if(B==null||B===!0||B===!1);else if(Array.isArray(B))C=g(_,B)||C;else if((k=typeof B)==="string"||k==="number")_.push(r(B));else if(k==="function")if(w){while(typeof B==="function")B=B();C=g(_,Array.isArray(B)?B:[B])||C}else _.push(B),C=!0;else _.push(B)}return C}function f(_,b,w){let C=w.length,P=b.length,M=C,B=0,k=0,j=d(b[P-1]),X=null;while(B<P||k<M){if(b[B]===w[k]){B++,k++;continue}while(b[P-1]===w[M-1])P--,M--;if(P===B){let W=M<C?k?d(w[k-1]):w[M-k]:j;while(k<M)o(_,w[k++],W)}else if(M===k)while(B<P){if(!X||!X.has(b[B]))a(_,b[B]);B++}else if(b[B]===w[M-1]&&w[k]===b[P-1]){let W=d(b[--P]);o(_,w[k++],d(b[B++])),o(_,w[--M],W),b[P]=w[M]}else{if(!X){X=new Map;let q=k;while(q<M)X.set(w[q],q++)}let W=X.get(b[B]);if(W!=null)if(k<W&&W<M){let q=B,Ae=1,z;while(++q<P&&q<M){if((z=X.get(b[q]))==null||z!==W+Ae)break;Ae++}if(Ae>W-k){let ce=b[B];while(k<W)o(_,w[k++],ce)}else y(_,w[k++],b[B++])}else B++;else a(_,b[B++])}}}function p(_,b,w,C){if(w===void 0){let M;while(M=u(_))a(_,M);return C&&o(_,C),C??""}let P=C||n();if(b.length){let M=!1;for(let B=b.length-1;B>=0;B--){let k=b[B];if(P!==k){let j=c(k)===_;if(!M&&!B)j?y(_,P,k):o(_,P,w);else j&&a(_,k)}else M=!0}}else o(_,P,w);return[P]}function v(_,b,w){for(let C=0,P=b.length;C<P;C++)o(_,b[C],w)}function y(_,b,w){o(_,b,w),a(_,w)}function S(_,b,w={},C){if(b||(b={}),!C)St(()=>w.children=m(_,b.children,w.children));return St(()=>b.ref&&b.ref(_)),St(()=>{for(let P in b){if(P==="children"||P==="ref")continue;let M=b[P];if(M===w[P])continue;l(_,P,M,w[P]),w[P]=M}}),w}return{render(_,b){let w;return Zt((C)=>{w=C,A(b,_())}),w},insert:A,spread(_,b,w){if(typeof b==="function")St((C)=>S(_,b(),C,w));else S(_,b,void 0,w)},createElement:e,createTextNode:t,insertNode:o,setProp(_,b,w,C){return l(_,b,w,C),w},mergeProps:Yn,effect:St,memo:Rd,createComponent:Uo,use(_,b,w){return gt(()=>_(b,w))}}}function Bd(e){let t=Td(e);return t.mergeProps=Yn,t}var Qn=new Map;function hs(e){if(!Qn.has(e))Qn.set(e,0);let t=Qn.get(e)+1;return Qn.set(e,t),`${e}-${t}`}var He=(...e)=>{if(process.env.DEBUG)console.log("[Reconciler]",...e)};class gr extends kd{static fromString(e,t={}){let r=new gr(t);return r.add(e),r}}var Fe=(e)=>{if(!e)return;return e.id},ls=(e)=>{let t;if(e instanceof aa)t=e.getTextChildren();else t=e.getChildren();return t};function Od(e,t,r){if(He("Inserting node:",Fe(t),"into parent:",Fe(e),"with anchor:",Fe(r),t instanceof gr),t instanceof mr)t.parent=e,t=t.getSlotChild(e);if(r&&r instanceof mr)r=r.getSlotChild(e);if(as(t)){if(!(e instanceof aa)&&!as(e))throw Error(`Orphan text error: "${t.toChunks().map((s)=>s.text).join("")}" must have a <text> as a parent: ${e.id} above ${t.id}`)}if(!(e instanceof oa))throw console.error("[INSERT]","Tried to mount a non base renderable"),Error("Tried to mount a non base renderable");if(!r){e.add(t);return}let n=ls(e),i=n.indexOf(r);if(i===-1)He("[INSERT]","Could not find anchor",Fe(e),Fe(r),"[children]",...n.map((s)=>s.id));e.add(t,i)}function Pd(e,t){He("Removing node:",Fe(t),"from parent:",Fe(e));let r;if(t instanceof mr){r=t;let n=r.getSlotChildForRemoval(e);if(!n){if(r.parent===e)r.parent=null;return}t=n}e.remove(t),r?.didRemoveSlotChild(e,t),process.nextTick(()=>{if(t instanceof oa&&!t.parent){t.destroyRecursively();return}})}function qo(e,t){He("Creating text node:",e);let r=hs("text-node");if(typeof e==="number")e=e.toString();return gr.fromString(t?$r(e):e,{id:r})}function Nd(){let e=hs("slot-node");return He("Creating slot node",e),new mr(e)}function ea(e){He("Getting parent of node:",Fe(e));let t=e.parent??void 0;if(t instanceof Id)t=t.textParent??void 0;let r=t?.parent?.parent?.parent;if(r instanceof xd&&r.content===t)t=r;return t}var{render:Dd,effect:ge,memo:mt,createComponent:Q,createElement:I,createTextNode:_e,insertNode:R,insert:G,spread:np,setProp:h,mergeProps:ip,use:sp}=Bd({createElement(e){He("Creating element:",e);let t=hs(e),r=Qr(ds);if(!r)throw Error("No renderer found");let n=_d();if(!n[e])throw Error(`[Reconciler] Unknown component type: ${e}`);let i=new n[e](r,{id:t});if(i instanceof Zo)ze(()=>{i.source=void 0});return He("Element created with id:",t),i},createTextNode:(e)=>qo(e,!0),createDynamicTextNode:(e)=>qo(e,!1),createSlotNode:Nd,replaceText(e,t){if(He("Replacing text:",t,"in node:",Fe(e)),!(e instanceof gr))return;e.replace(t,0)},setProperty(e,t,r,n){if(t.startsWith("on:")){let i=t.slice(3);if(r)e.on(i,r);if(n)e.off(i,n);return}if(as(e)){if(t==="href"){e.link={url:r};return}if(t==="style"){e.attributes|=Cd(r),e.fg=r.fg?Xo(r.fg):e.fg,e.bg=r.bg?Xo(r.bg):e.bg;return}return}switch(t){case"id":He("Id mapped",e.id,"=",r),e[t]=r;break;case"focused":if(!(e instanceof Sd))return;if(r)e.focus();else e.blur();break;case"onChange":let i=void 0;if(e instanceof Vo)i=ns.SELECTION_CHANGED;else if(e instanceof zo)i=is.SELECTION_CHANGED;else if(e instanceof rs)i=Zr.CHANGE;if(!i)break;if(r)e.on(i,r);if(n)e.off(i,n);break;case"onInput":if(e instanceof rs){if(r)e.on(Zr.INPUT,r);if(n)e.off(Zr.INPUT,n)}break;case"onSubmit":if(e instanceof rs){if(r)e.on(Zr.ENTER,r);if(n)e.off(Zr.ENTER,n)}else e[t]=r;break;case"onSelect":if(e instanceof Vo){if(r)e.on(ns.ITEM_SELECTED,r);if(n)e.off(ns.ITEM_SELECTED,n)}else if(e instanceof zo){if(r)e.on(is.ITEM_SELECTED,r);if(n)e.off(is.ITEM_SELECTED,n)}break;case"style":let s=r??{},o=n??{};if(Ed(e)&&o.selectionOccupancy&&!s.selectionOccupancy)e.selectionOccupancy=void 0;if(e instanceof Zo)for(let a in o){if(Object.prototype.hasOwnProperty.call(s,a))continue;if(a!=="fit"&&a!=="protocol")continue;e[a]=void 0}for(let a in s){let l=s[a];if(l===o[a])continue;e[a]=l}break;case"text":case"content":{let a=typeof r==="string"?r:Array.isArray(r)?r.join(""):`${r}`;e[t]=a;break}default:e[t]=r}},isTextNode(e){return e instanceof gr},insertNode:Od,removeNode:Pd,getParentNode:ea,getFirstChild(e){He("Getting first child of node:",Fe(e));let t=ls(e)[0];if(!t){He("No first child found for node:",Fe(e));return}return He("First child found:",Fe(t),"for node:",Fe(e)),t},getNextSibling(e){He("Getting next sibling of node:",Fe(e));let t=ea(e);if(!t){He("No parent found for node:",Fe(e));return}if(e instanceof mr){let s=e.getSlotChildForRemoval(t);if(s)e=s}let r=ls(t),n=r.indexOf(e);if(n===-1||n===r.length-1){He("No next sibling found for node:",Fe(e));return}let i=r[n+1];if(!i){He("Next sibling is null for node:",Fe(e));return}return He("Next sibling found:",Fe(i),"for node:",Fe(e)),i}});function ta(e){return e?.getLayoutNode?.()?.constructor}function Ud(e){return e?.create?.()??la.default.Node.create()}class As extends Ld{constructor(e){super({id:e})}add(e,t){throw Error("Can't add children on an Slot renderable")}getChildren(){return[]}remove(e){}insertBefore(e,t){throw Error("Can't add children on an Slot renderable")}getRenderable(e){return}getChildrenCount(){return 0}requestRender(){}findDescendantById(e){return}}class cs extends Fd{slotParent;destroyed=!1;constructor(e,t){super({id:e});this._visible=!1,this.slotParent=t}detachFromSlot(){this.slotParent=void 0}disposeWithoutSlotCascade(){if(this.destroyed)return;this.destroyed=!0,this.detachFromSlot()}destroy(){if(this.destroyed)return;this.destroyed=!0;let e=this.slotParent;this.slotParent=void 0,e?.destroy(),super.destroy()}}class us extends As{yogaNode;slotParent;destroyed=!1;yogaNodeConstructor;yogaNodeFreed=!1;constructor(e,t,r){super(e);this._visible=!1,this.slotParent=t,this.yogaNodeConstructor=ta(r),this.yogaNode=Ud(this.yogaNodeConstructor),this.yogaNode.setDisplay(la.Display.None)}getLayoutNode(){return this.yogaNode}updateFromLayout(){}updateLayout(){}onRemove(){}isCompatibleWith(e){return this.yogaNodeConstructor===ta(e)}detachFromSlot(){this.slotParent=void 0}freeYogaNode(){if(this.yogaNodeFreed)return;this.yogaNodeFreed=!0;try{this.yogaNode.free()}catch{}}disposeWithoutSlotCascade(){if(this.destroyed)return;this.destroyed=!0,this.detachFromSlot(),this.freeYogaNode()}destroy(){if(this.destroyed)return;this.destroyed=!0;let e=this.slotParent;this.slotParent=void 0,this.freeYogaNode(),e?.destroy()}}class mr extends As{destroyed=!1;layoutNodesByParent=new Map;textNodesByParent=new Map;layoutNodeCount=0;textNodeCount=0;constructor(e){super(e);this._visible=!1}get layoutNode(){return this.getCurrentSlotChild(this.layoutNodesByParent)}get textNode(){return this.getCurrentSlotChild(this.textNodesByParent)}isTextSlotParent(e){return Md(e)||e instanceof Gd}getCurrentSlotChild(e){for(let t of e.values())if(t.parent)return t;return e.values().next().value}getTextNodeForParent(e){let t=this.textNodesByParent.get(e);if(t)return t;for(let[r,n]of this.textNodesByParent){if(n.parent!==e)continue;return this.textNodesByParent.delete(r),this.textNodesByParent.set(e,n),n}}getLayoutNodeForParent(e){let t=this.layoutNodesByParent.get(e);if(t)return t;for(let[r,n]of this.layoutNodesByParent){if(n.parent!==e)continue;return this.layoutNodesByParent.delete(r),this.layoutNodesByParent.set(e,n),n}}takeReusableTextNode(e){for(let[t,r]of this.textNodesByParent){if(r.parent)continue;return this.textNodesByParent.delete(t),this.textNodesByParent.set(e,r),r}}takeReusableLayoutNode(e){for(let[t,r]of this.layoutNodesByParent){if(r.parent)continue;if(!r.isCompatibleWith(e))continue;return this.layoutNodesByParent.delete(t),this.layoutNodesByParent.set(e,r),r}}disposeDetachedTextNodes(){for(let[e,t]of this.textNodesByParent){if(t.parent)continue;this.textNodesByParent.delete(e),t.disposeWithoutSlotCascade()}}disposeDetachedIncompatibleLayoutNodes(e){for(let[t,r]of this.layoutNodesByParent){if(r.parent||r.isCompatibleWith(e))continue;this.layoutNodesByParent.delete(t),r.disposeWithoutSlotCascade()}}getAttachedSlotParent(e){for(let t of this.textNodesByParent.values())if(t!==e&&t.parent)return t.parent;for(let t of this.layoutNodesByParent.values())if(t!==e&&t.parent)return t.parent;return null}hasOtherAttachedSlotChildren(e){return this.getAttachedSlotParent(e)!==null}getSlotChild(e){if(this.isTextSlotParent(e)){let i=this.getTextNodeForParent(e);if(i)return i;let s=this.takeReusableTextNode(e);if(s)return s;this.disposeDetachedIncompatibleLayoutNodes(e);let o=new cs(`slot-text-${this.id}-${++this.textNodeCount}`,this);return this.textNodesByParent.set(e,o),o}let t=this.getLayoutNodeForParent(e);if(t)return t;let r=this.takeReusableLayoutNode(e);if(r)return r;this.disposeDetachedTextNodes(),this.disposeDetachedIncompatibleLayoutNodes(e);let n=new us(`slot-layout-${this.id}-${++this.layoutNodeCount}`,this,e);return this.layoutNodesByParent.set(e,n),n}getSlotChildForRemoval(e){if(this.isTextSlotParent(e))return this.getTextNodeForParent(e);return this.getLayoutNodeForParent(e)}didRemoveSlotChild(e,t){let r=this.hasOtherAttachedSlotChildren(t);if(r&&t instanceof cs&&this.getTextNodeForParent(e)===t)this.textNodesByParent.delete(e),t.disposeWithoutSlotCascade();if(r&&t instanceof us&&this.getLayoutNodeForParent(e)===t)this.layoutNodesByParent.delete(e),t.disposeWithoutSlotCascade();if(this.parent===e)this.parent=this.getAttachedSlotParent(t)}destroy(){if(this.destroyed)return;this.destroyed=!0;let e=new Set(this.layoutNodesByParent.values());this.layoutNodesByParent.clear();for(let r of e)r.destroy();let t=new Set(this.textNodesByParent.values());this.textNodesByParent.clear();for(let r of t)r.destroy()}}Lt({time_to_first_draw:jd});var Hd=(e,t)=>{let r,n=!1,i=!1,s=!0,o=!1,a=e.destroy.bind(e),l=()=>{if(i)return;if(!r){n=!0;return}i=!0,r()};e.once("destroy",l),e.destroy=()=>{if(s){o=!0;return}a()};try{r=Dd(()=>Q(ds.Provider,{get value(){return e},get children(){return Q(t,{})}}),e.root)}finally{s=!1,e.destroy=a}if(n)l();if(o)a()},fs=async(e,t={})=>{let r=t instanceof nd?t:await id({...t,onDestroy:()=>{t.onDestroy?.()}});sd.attach(r),Hd(r,e)};var ca={tier0:32,tier1:64,tier2:64};var yr=1;function ut(e){if(typeof e!=="number"||!Number.isFinite(e))return 1;return Math.max(1,Math.min(8,Math.round(e)))}function gs(e,t){let r=ut(e);return{primary:r,mirrored:t?r-1:0}}var ms=64;var yp=ms*ms;var _p=new RegExp(["asshole","bastard","bitch","bullshit","cunt","dildo","faggot","fuck","goddamn","jackass","jerkoff","kike","nigga","nigger","penis","porn","prick","pussy","retard","scumbag","shit","slut","tits","twat","vagina","whore","wanker"].join("|"));var ps={version:1,linkedRoles:{leftLegFoot:"leftLeg",rightLegFoot:"rightLeg",leftArmFoot:"leftArm",rightArmFoot:"rightArm",leftSleeve:"leftArm",rightSleeve:"rightArm"},clips:{idle:{duration:2.4,loop:!0,model:{positionY:[[0,0.004],[0.25,0.008],[0.5,0.004],[0.75,0],[1,0.004]]},roles:{leftArm:{positionZ:[[0,0],[0.25,0.006],[0.5,0],[0.75,-0.006],[1,0]]},rightArm:{positionZ:[[0,0],[0.25,-0.006],[0.5,0],[0.75,0.006],[1,0]]}}},walk:{duration:0.9,loop:!0,model:{positionY:[[0,0.015],[0.25,0.06],[0.5,0.015],[0.75,0.06],[1,0.015]]},roles:{leftLeg:{positionZ:[[0,0],[0.25,0.055],[0.5,0],[0.75,-0.055],[1,0]]},rightLeg:{positionZ:[[0,0],[0.25,-0.055],[0.5,0],[0.75,0.055],[1,0]]},leftArm:{positionZ:[[0,0],[0.25,-0.055],[0.5,0],[0.75,0.055],[1,0]]},rightArm:{positionZ:[[0,0],[0.25,0.055],[0.5,0],[0.75,-0.055],[1,0]]}}},jump:{duration:0.78,loop:!1,model:{positionY:[[0,0],[0.76,0],[0.9,-0.055],[0.98,0],[1,0]],rotationX:[[0,0],[0.2,0.04],[0.58,0.14],[0.82,0.09],[1,0]]},roles:{leftLeg:{positionY:[[0,0],[0.18,-0.008],[0.48,0.035],[0.72,0.026],[0.88,-0.006],[1,0]]},rightLeg:{positionY:[[0,0],[0.18,-0.007],[0.48,0.032],[0.72,0.024],[0.88,-0.007],[1,0]]},leftArm:{positionZ:[[0,0],[0.25,-0.025],[0.58,0.05],[0.82,0.02],[1,0]],rotationX:[[0,0],[0.25,-0.3],[0.58,0.55],[0.82,0.25],[1,0]],rotationZ:[[0,0],[0.25,0.06],[0.58,0.09],[0.82,0.035],[1,0]]},rightArm:{positionZ:[[0,0],[0.25,0.03],[0.58,-0.045],[0.82,-0.018],[1,0]],rotationX:[[0,0],[0.25,0.35],[0.58,-0.5],[0.82,-0.22],[1,0]],rotationZ:[[0,0],[0.25,-0.07],[0.58,-0.08],[0.82,-0.035],[1,0]]}}},frontFlip:{duration:0.8,loop:!1,model:{rotationX:[[0,0],[0.08,0.25],[0.2,1.15],[0.35,2.35],[0.5,3.1416],[0.65,3.93],[0.8,5.13],[0.92,6.03],[1,6.2832]],positionY:[[0,0],[0.08,0.017],[0.2,0.326],[0.35,0.937],[0.5,1.1],[0.65,0.935],[0.8,0.327],[0.92,0.017],[1,0]],positionZ:[[0,0],[0.08,-0.136],[0.2,-0.502],[0.35,-0.391],[0.5,0],[0.65,0.393],[0.8,0.503],[0.92,0.138],[1,0]]},roles:{leftArm:{rotationX:[[0,0],[0.15,-1.25],[0.5,0.85],[0.85,0.25],[1,0]]},rightArm:{rotationX:[[0,0],[0.15,-1.15],[0.5,0.8],[0.85,0.22],[1,0]]},leftLeg:{positionY:[[0,0],[0.3,0.05],[0.55,0.075],[0.85,0.01],[1,0]]},rightLeg:{positionY:[[0,0],[0.3,0.048],[0.55,0.07],[0.85,0.012],[1,0]]}}},run:{duration:0.55,loop:!0,model:{positionY:[[0,0.02],[0.25,0.085],[0.5,0.02],[0.75,0.085],[1,0.02]]},roles:{leftLeg:{positionY:[[0,0],[0.25,0.035],[0.5,0],[0.75,0],[1,0]],positionZ:[[0,0],[0.25,0.085],[0.5,0],[0.75,-0.085],[1,0]],rotationX:[[0,0],[0.25,-0.34],[0.5,0],[0.75,0.34],[1,0]]},rightLeg:{positionY:[[0,0],[0.25,0],[0.5,0],[0.75,0.035],[1,0]],positionZ:[[0,0],[0.25,-0.085],[0.5,0],[0.75,0.085],[1,0]],rotationX:[[0,0],[0.25,0.34],[0.5,0],[0.75,-0.34],[1,0]]},leftArm:{positionY:[[0,0],[0.25,0],[0.5,0],[0.75,0.03],[1,0]],positionZ:[[0,0],[0.25,-0.072],[0.5,0],[0.75,0.072],[1,0]],rotationX:[[0,0],[0.25,0.3],[0.5,0],[0.75,-0.3],[1,0]]},rightArm:{positionY:[[0,0],[0.25,0.03],[0.5,0],[0.75,0],[1,0]],positionZ:[[0,0],[0.25,0.072],[0.5,0],[0.75,-0.072],[1,0]],rotationX:[[0,0],[0.25,-0.3],[0.5,0],[0.75,0.3],[1,0]]}}},swim:{duration:1.2,loop:!0,model:{positionY:[[0,0.018],[0.25,0.04],[0.5,0.018],[0.75,0],[1,0.018]],rotationX:[[0,0.1],[0.25,0.14],[0.5,0.1],[0.75,0.06],[1,0.1]]},roles:{leftArm:{positionY:[[0,0.045],[0.25,0.02],[0.5,0],[0.75,0.018],[1,0.045]],positionZ:[[0,0],[0.25,-0.055],[0.5,0],[0.75,0.04],[1,0]],rotationX:[[0,-0.9],[0.25,-0.15],[0.5,0.75],[0.75,0.15],[1,-0.9]],rotationZ:[[0,0.18],[0.25,0.34],[0.5,0.18],[0.75,0.08],[1,0.18]]},rightArm:{positionY:[[0,0],[0.25,0.018],[0.5,0.045],[0.75,0.02],[1,0]],positionZ:[[0,0],[0.25,0.04],[0.5,0],[0.75,-0.055],[1,0]],rotationX:[[0,0.75],[0.25,0.15],[0.5,-0.9],[0.75,-0.15],[1,0.75]],rotationZ:[[0,-0.18],[0.25,-0.08],[0.5,-0.18],[0.75,-0.34],[1,-0.18]]},leftLeg:{positionY:[[0,0.018],[0.25,0.035],[0.5,0],[0.75,0.012],[1,0.018]],positionZ:[[0,-0.045],[0.25,0],[0.5,0.045],[0.75,0],[1,-0.045]],rotationX:[[0,0.24],[0.25,0],[0.5,-0.24],[0.75,0],[1,0.24]]},rightLeg:{positionY:[[0,0],[0.25,0.012],[0.5,0.018],[0.75,0.035],[1,0]],positionZ:[[0,0.045],[0.25,0],[0.5,-0.045],[0.75,0],[1,0.045]],rotationX:[[0,-0.24],[0.25,0],[0.5,0.24],[0.75,0],[1,-0.24]]}}},horseWalk:{duration:0.9,loop:!0,model:{positionY:[[0,0.008],[0.125,0.016],[0.25,0.008],[0.375,0.016],[0.5,0.008],[0.625,0.016],[0.75,0.008],[0.875,0.016],[1,0.008]],rotationX:[[0,0],[0.125,0.012],[0.25,0],[0.375,-0.012],[0.5,0],[0.625,0.012],[0.75,0],[0.875,-0.012],[1,0]]},roles:{leftLeg:{positionY:[[0,0],[0.125,0],[0.25,0],[0.375,0],[0.5,0],[0.625,0.025],[0.75,0.055],[0.875,0.035],[1,0]],positionZ:[[0,0.025],[0.125,0.012],[0.25,-0.008],[0.375,-0.022],[0.5,-0.03],[0.625,-0.012],[0.75,0.012],[0.875,0.025],[1,0.025]],rotationX:[[0,-0.3],[0.125,-0.16],[0.25,0.03],[0.375,0.2],[0.5,0.28],[0.625,0.12],[0.75,-0.1],[0.875,-0.26],[1,-0.3]]},leftArm:{positionY:[[0,0.055],[0.125,0.035],[0.25,0],[0.375,0],[0.5,0],[0.625,0],[0.75,0],[0.875,0.025],[1,0.055]],positionZ:[[0,0.012],[0.125,0.025],[0.25,0.025],[0.375,0.012],[0.5,-0.008],[0.625,-0.022],[0.75,-0.03],[0.875,-0.012],[1,0.012]],rotationX:[[0,-0.1],[0.125,-0.26],[0.25,-0.3],[0.375,-0.16],[0.5,0.03],[0.625,0.2],[0.75,0.28],[0.875,0.12],[1,-0.1]]},rightLeg:{positionY:[[0,0],[0.125,0.025],[0.25,0.055],[0.375,0.035],[0.5,0],[0.625,0],[0.75,0],[0.875,0],[1,0]],positionZ:[[0,-0.03],[0.125,-0.012],[0.25,0.012],[0.375,0.025],[0.5,0.025],[0.625,0.012],[0.75,-0.008],[0.875,-0.022],[1,-0.03]],rotationX:[[0,0.28],[0.125,0.12],[0.25,-0.1],[0.375,-0.26],[0.5,-0.3],[0.625,-0.16],[0.75,0.03],[0.875,0.2],[1,0.28]]},rightArm:{positionY:[[0,0],[0.125,0],[0.25,0],[0.375,0.025],[0.5,0.055],[0.625,0.035],[0.75,0],[0.875,0],[1,0]],positionZ:[[0,-0.008],[0.125,-0.022],[0.25,-0.03],[0.375,-0.012],[0.5,0.012],[0.625,0.025],[0.75,0.025],[0.875,0.012],[1,-0.008]],rotationX:[[0,0.03],[0.125,0.2],[0.25,0.28],[0.375,0.12],[0.5,-0.1],[0.625,-0.26],[0.75,-0.3],[0.875,-0.16],[1,0.03]]}}},horseRun:{duration:0.55,loop:!0,model:{positionY:[[0,0.087361],[0.125,0.094508],[0.25,0.078511],[0.375,0.048743],[0.5,0.022639],[0.625,0.015492],[0.75,0.031489],[0.875,0.061257],[1,0.087361]],rotationX:[[0,0.013907],[0.125,-0.038677],[0.25,-0.068605],[0.375,-0.058344],[0.5,-0.013907],[0.625,0.038677],[0.75,0.068605],[0.875,0.058344],[1,0.013907]]},roles:{leftArm:{positionY:[[0,0],[0.125,0.060104],[0.25,0.085],[0.375,0.060104],[0.5,0],[0.625,0],[0.75,0],[0.875,0],[1,0]],positionZ:[[0,0],[0.125,0.120208],[0.25,0.17],[0.375,0.120208],[0.5,0],[0.625,-0.120208],[0.75,-0.17],[0.875,-0.120208],[1,0]],rotationX:[[0,0],[0.125,-0.240416],[0.25,-0.34],[0.375,-0.240416],[0.5,0],[0.625,0.240416],[0.75,0.34],[0.875,0.240416],[1,0]]},rightArm:{positionY:[[0,0],[0.125,0.027977],[0.25,0.076538],[0.375,0.080264],[0.5,0.036972],[0.625,0],[0.75,0],[0.875,0],[1,0]],positionZ:[[0,-0.073944],[0.125,0.055955],[0.25,0.153076],[0.375,0.160527],[0.5,0.073944],[0.625,-0.055955],[0.75,-0.153076],[0.875,-0.160527],[1,-0.073944]],rotationX:[[0,0.147888],[0.125,-0.111909],[0.25,-0.306152],[0.375,-0.321055],[0.5,-0.147888],[0.625,0.111909],[0.75,0.306152],[0.875,0.321055],[1,0.147888]]},leftLeg:{positionY:[[0,0.033275],[0.125,0],[0.25,0],[0.375,0],[0.5,0],[0.625,0.02518],[0.75,0.068884],[0.875,0.072237],[1,0.033275]],positionZ:[[0,0.077641],[0.125,-0.058752],[0.25,-0.16073],[0.375,-0.168554],[0.5,-0.077641],[0.625,0.058752],[0.75,0.16073],[0.875,0.168554],[1,0.077641]],rotationX:[[0,-0.125705],[0.125,0.095123],[0.25,0.260229],[0.375,0.272897],[0.5,0.125705],[0.625,-0.095123],[0.75,-0.260229],[0.875,-0.272897],[1,-0.125705]]},rightLeg:{positionY:[[0,0],[0.125,0],[0.25,0],[0.375,0],[0.5,0],[0.625,0.054094],[0.75,0.0765],[0.875,0.054094],[1,0]],positionZ:[[0,0],[0.125,-0.126219],[0.25,-0.1785],[0.375,-0.126219],[0.5,0],[0.625,0.126219],[0.75,0.1785],[0.875,0.126219],[1,0]],rotationX:[[0,0],[0.125,0.204354],[0.25,0.289],[0.375,0.204354],[0.5,0],[0.625,-0.204354],[0.75,-0.289],[0.875,-0.204354],[1,0]]}}},wave:{duration:2,loop:!1,model:{positionY:[[0,0],[1,0]]},roles:{leftArm:{positionY:[[0,0],[0.5,-0.08],[1,0]],rotationX:[[0,0],[0.5,-1.5],[1,0]]}}},look:{duration:4.9,loop:!1,model:{rotationY:[[0,0],[0.125,0.07],[0.25,0],[0.375,-0.16],[0.5,0],[0.625,0.16],[0.75,0],[0.875,-0.07],[1,0]]},roles:{leftArm:{positionZ:[[0,0],[0.125,0.012],[0.25,0],[0.375,-0.025],[0.5,0],[0.625,0.025],[0.75,0],[0.875,-0.012],[1,0]]},rightArm:{positionZ:[[0,0],[0.125,-0.012],[0.25,0],[0.375,0.025],[0.5,0],[0.625,-0.025],[0.75,0],[0.875,0.012],[1,0]]}}},sit:{duration:6.2,loop:!1,model:{positionY:[[0,0],[0.25,-0.042426],[0.5,-0.06],[0.75,-0.042426],[1,0]]},roles:{leftLeg:{positionY:[[0,0],[0.25,-0.024749],[0.5,-0.035],[0.75,-0.024749],[1,0]],positionZ:[[0,0],[0.25,0.070711],[0.5,0.1],[0.75,0.070711],[1,0]]},rightLeg:{positionY:[[0,0],[0.25,-0.024749],[0.5,-0.035],[0.75,-0.024749],[1,0]],positionZ:[[0,0],[0.25,0.070711],[0.5,0.1],[0.75,0.070711],[1,0]]},leftArm:{positionZ:[[0,0],[0.25,-0.021213],[0.5,-0.03],[0.75,-0.021213],[1,0]]},rightArm:{positionZ:[[0,0],[0.25,-0.021213],[0.5,-0.03],[0.75,-0.021213],[1,0]]}}}}};var Yd=["positionX","positionY","positionZ","rotationX","rotationY","rotationZ","scaleX","scaleY","scaleZ"];var Qd=new Set(Yd);function wr(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function ua(e,t){if(!wr(e))return[`${t} must be an object`];let r=[];for(let[n,i]of Object.entries(e)){if(!Qd.has(n)){r.push(`${t} uses unknown property ${n}`);continue}if(!Array.isArray(i)||i.length<2){r.push(`${t}.${n} must contain at least two keyframes`);continue}let s=-1;for(let[o,a]of i.entries()){if(!Array.isArray(a)||a.length!==2||!a.every((c)=>typeof c==="number"&&Number.isFinite(c))){r.push(`${t}.${n}[${o}] is invalid`);continue}let l=a[0];if(l<0||l>1||l<=s)r.push(`${t}.${n} keyframe times must increase from 0 to 1`);s=l}if(i[0]?.[0]!==0||i.at(-1)?.[0]!==1)r.push(`${t}.${n} must start at 0 and end at 1`)}return r}function ha(e){if(!wr(e))return["Animation catalog must be an object"];let t=[];if(e.version!==1)t.push("Animation catalog version must be 1");if(!wr(e.linkedRoles))t.push("Animation catalog linkedRoles must be an object");else if(Object.values(e.linkedRoles).some((r)=>typeof r!=="string"))t.push("Animation catalog linked roles must target role names");if(!wr(e.clips))return t.push("Animation catalog clips must be an object"),t;for(let[r,n]of Object.entries(e.clips)){let i=`Clip ${r}`;if(!wr(n)){t.push(`${i} must be an object`);continue}if(typeof n.duration!=="number"||!Number.isFinite(n.duration)||n.duration<=0)t.push(`${i} must have a positive duration`);if(typeof n.loop!=="boolean")t.push(`${i} must declare whether it loops`);if(n.model===void 0)t.push(`${i} must include a model animation track`);else t.push(...ua(n.model,`${i}.model`));if(n.roles!==void 0)if(!wr(n.roles))t.push(`${i}.roles must be an object`);else for(let[s,o]of Object.entries(n.roles))t.push(...ua(o,`${i}.roles.${s}`))}return t}var da=ha(ps);if(da.length>0)throw Error(`Invalid character animation catalog:
6
+ var vu=Object.create;var{getPrototypeOf:Cu,defineProperty:Eo,getOwnPropertyNames:Eu}=Object;var Su=Object.prototype.hasOwnProperty;function Iu(e){return this[e]}var xu,ku,Ru=(e,t,r)=>{var n=e!=null&&typeof e==="object";if(n){var i=t?xu??=new WeakMap:ku??=new WeakMap,s=i.get(e);if(s)return s}r=e!=null?vu(Cu(e)):{};let o=t||!e||!e.__esModule?Eo(r,"default",{value:e,enumerable:!0}):r;if(e&&typeof e==="object"||typeof e==="function"){for(let a of Eu(e))if(!Su.call(o,a))Eo(o,a,{get:Iu.bind(e,a),enumerable:!0})}if(n)i.set(e,o);return o};var Tu=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Tl=Tu(function(A_,ci){var rl,nl,il,sl,ol,al,ll,cl,ul,dl,hl,Al,fl,ai,js,gl,ml,pl,Tr,bl,yl,wl,_l,vl,Cl,El,Sl,Il,li,xl,kl,Rl;(function(e){var t=typeof global==="object"?global:typeof self==="object"?self:typeof this==="object"?this:{};if(typeof define==="function"&&define.amd)define("tslib",["exports"],function(n){e(r(t,r(n)))});else if(typeof ci==="object"&&typeof A_==="object")e(r(t,r(A_)));else e(r(t));function r(n,i){if(n!==t)if(typeof Object.create==="function")Object.defineProperty(n,"__esModule",{value:!0});else n.__esModule=!0;return function(s,o){return n[s]=i?i(s,o):o}}})(function(e){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(s,o){s.__proto__=o}||function(s,o){for(var a in o)if(Object.prototype.hasOwnProperty.call(o,a))s[a]=o[a]};rl=function(s,o){if(typeof o!=="function"&&o!==null)throw TypeError("Class extends value "+String(o)+" is not a constructor or null");t(s,o);function a(){this.constructor=s}s.prototype=o===null?Object.create(o):(a.prototype=o.prototype,new a)},nl=Object.assign||function(s){for(var o,a=1,l=arguments.length;a<l;a++){o=arguments[a];for(var c in o)if(Object.prototype.hasOwnProperty.call(o,c))s[c]=o[c]}return s},il=function(s,o){var a={};for(var l in s)if(Object.prototype.hasOwnProperty.call(s,l)&&o.indexOf(l)<0)a[l]=s[l];if(s!=null&&typeof Object.getOwnPropertySymbols==="function"){for(var c=0,l=Object.getOwnPropertySymbols(s);c<l.length;c++)if(o.indexOf(l[c])<0&&Object.prototype.propertyIsEnumerable.call(s,l[c]))a[l[c]]=s[l[c]]}return a},sl=function(s,o,a,l){var c=arguments.length,u=c<3?o:l===null?l=Object.getOwnPropertyDescriptor(o,a):l,d;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")u=Reflect.decorate(s,o,a,l);else for(var A=s.length-1;A>=0;A--)if(d=s[A])u=(c<3?d(u):c>3?d(o,a,u):d(o,a))||u;return c>3&&u&&Object.defineProperty(o,a,u),u},ol=function(s,o){return function(a,l){o(a,l,s)}},al=function(s,o,a,l,c,u){function d(w){if(w!==void 0&&typeof w!=="function")throw TypeError("Function expected");return w}var A=l.kind,m=A==="getter"?"get":A==="setter"?"set":"value",g=!o&&s?l.static?s:s.prototype:null,f=o||(g?Object.getOwnPropertyDescriptor(g,l.name):{}),p,v=!1;for(var y=a.length-1;y>=0;y--){var S={};for(var _ in l)S[_]=_==="access"?{}:l[_];for(var _ in l.access)S.access[_]=l.access[_];S.addInitializer=function(w){if(v)throw TypeError("Cannot add initializers after decoration has completed");u.push(d(w||null))};var b=(0,a[y])(A==="accessor"?{get:f.get,set:f.set}:f[m],S);if(A==="accessor"){if(b===void 0)continue;if(b===null||typeof b!=="object")throw TypeError("Object expected");if(p=d(b.get))f.get=p;if(p=d(b.set))f.set=p;if(p=d(b.init))c.unshift(p)}else if(p=d(b))if(A==="field")c.unshift(p);else f[m]=p}if(g)Object.defineProperty(g,l.name,f);v=!0},ll=function(s,o,a){var l=arguments.length>2;for(var c=0;c<o.length;c++)a=l?o[c].call(s,a):o[c].call(s);return l?a:void 0},cl=function(s){return typeof s==="symbol"?s:"".concat(s)},ul=function(s,o,a){if(typeof o==="symbol")o=o.description?"[".concat(o.description,"]"):"";return Object.defineProperty(s,"name",{configurable:!0,value:a?"".concat(a," ",o):o})},dl=function(s,o){if(typeof Reflect==="object"&&typeof Reflect.metadata==="function")return Reflect.metadata(s,o)},hl=function(s,o,a,l){function c(u){return u instanceof a?u:new a(function(d){d(u)})}return new(a||(a=Promise))(function(u,d){function A(f){try{g(l.next(f))}catch(p){d(p)}}function m(f){try{g(l.throw(f))}catch(p){d(p)}}function g(f){f.done?u(f.value):c(f.value).then(A,m)}g((l=l.apply(s,o||[])).next())})},Al=function(s,o){var a={label:0,sent:function(){if(u[0]&1)throw u[1];return u[1]},trys:[],ops:[]},l,c,u,d=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return d.next=A(0),d.throw=A(1),d.return=A(2),typeof Symbol==="function"&&(d[Symbol.iterator]=function(){return this}),d;function A(g){return function(f){return m([g,f])}}function m(g){if(l)throw TypeError("Generator is already executing.");while(d&&(d=0,g[0]&&(a=0)),a)try{if(l=1,c&&(u=g[0]&2?c.return:g[0]?c.throw||((u=c.return)&&u.call(c),0):c.next)&&!(u=u.call(c,g[1])).done)return u;if(c=0,u)g=[g[0]&2,u.value];switch(g[0]){case 0:case 1:u=g;break;case 4:return a.label++,{value:g[1],done:!1};case 5:a.label++,c=g[1],g=[0];continue;case 7:g=a.ops.pop(),a.trys.pop();continue;default:if((u=a.trys,!(u=u.length>0&&u[u.length-1]))&&(g[0]===6||g[0]===2)){a=0;continue}if(g[0]===3&&(!u||g[1]>u[0]&&g[1]<u[3])){a.label=g[1];break}if(g[0]===6&&a.label<u[1]){a.label=u[1],u=g;break}if(u&&a.label<u[2]){a.label=u[2],a.ops.push(g);break}if(u[2])a.ops.pop();a.trys.pop();continue}g=o.call(s,a)}catch(f){g=[6,f],c=0}finally{l=u=0}if(g[0]&5)throw g[1];return{value:g[0]?g[1]:void 0,done:!0}}},fl=function(s,o){for(var a in s)if(a!=="default"&&!Object.prototype.hasOwnProperty.call(o,a))li(o,s,a)},li=Object.create?function(s,o,a,l){if(l===void 0)l=a;var c=Object.getOwnPropertyDescriptor(o,a);if(!c||("get"in c?!o.__esModule:c.writable||c.configurable))c={enumerable:!0,get:function(){return o[a]}};Object.defineProperty(s,l,c)}:function(s,o,a,l){if(l===void 0)l=a;s[l]=o[a]},ai=function(s){var o=typeof Symbol==="function"&&Symbol.iterator,a=o&&s[o],l=0;if(a)return a.call(s);if(s&&typeof s.length==="number")return{next:function(){if(s&&l>=s.length)s=void 0;return{value:s&&s[l++],done:!s}}};throw TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")},js=function(s,o){var a=typeof Symbol==="function"&&s[Symbol.iterator];if(!a)return s;var l=a.call(s),c,u=[],d;try{while((o===void 0||o-- >0)&&!(c=l.next()).done)u.push(c.value)}catch(A){d={error:A}}finally{try{if(c&&!c.done&&(a=l.return))a.call(l)}finally{if(d)throw d.error}}return u},gl=function(){for(var s=[],o=0;o<arguments.length;o++)s=s.concat(js(arguments[o]));return s},ml=function(){for(var s=0,o=0,a=arguments.length;o<a;o++)s+=arguments[o].length;for(var l=Array(s),c=0,o=0;o<a;o++)for(var u=arguments[o],d=0,A=u.length;d<A;d++,c++)l[c]=u[d];return l},pl=function(s,o,a){if(a||arguments.length===2){for(var l=0,c=o.length,u;l<c;l++)if(u||!(l in o)){if(!u)u=Array.prototype.slice.call(o,0,l);u[l]=o[l]}}return s.concat(u||Array.prototype.slice.call(o))},Tr=function(s){return this instanceof Tr?(this.v=s,this):new Tr(s)},bl=function(s,o,a){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var l=a.apply(s,o||[]),c,u=[];return c=Object.create((typeof AsyncIterator==="function"?AsyncIterator:Object).prototype),A("next"),A("throw"),A("return",d),c[Symbol.asyncIterator]=function(){return this},c;function d(y){return function(S){return Promise.resolve(S).then(y,p)}}function A(y,S){if(l[y]){if(c[y]=function(_){return new Promise(function(b,w){u.push([y,_,b,w])>1||m(y,_)})},S)c[y]=S(c[y])}}function m(y,S){try{g(l[y](S))}catch(_){v(u[0][3],_)}}function g(y){y.value instanceof Tr?Promise.resolve(y.value.v).then(f,p):v(u[0][2],y)}function f(y){m("next",y)}function p(y){m("throw",y)}function v(y,S){if(y(S),u.shift(),u.length)m(u[0][0],u[0][1])}},yl=function(s){var o,a;return o={},l("next"),l("throw",function(c){throw c}),l("return"),o[Symbol.iterator]=function(){return this},o;function l(c,u){o[c]=s[c]?function(d){return(a=!a)?{value:Tr(s[c](d)),done:!1}:u?u(d):d}:u}},wl=function(s){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var o=s[Symbol.asyncIterator],a;return o?o.call(s):(s=typeof ai==="function"?ai(s):s[Symbol.iterator](),a={},l("next"),l("throw"),l("return"),a[Symbol.asyncIterator]=function(){return this},a);function l(u){a[u]=s[u]&&function(d){return new Promise(function(A,m){d=s[u](d),c(A,m,d.done,d.value)})}}function c(u,d,A,m){Promise.resolve(m).then(function(g){u({value:g,done:A})},d)}},_l=function(s,o){if(Object.defineProperty)Object.defineProperty(s,"raw",{value:o});else s.raw=o;return s};var r=Object.create?function(s,o){Object.defineProperty(s,"default",{enumerable:!0,value:o})}:function(s,o){s.default=o},n=function(s){return n=Object.getOwnPropertyNames||function(o){var a=[];for(var l in o)if(Object.prototype.hasOwnProperty.call(o,l))a[a.length]=l;return a},n(s)};vl=function(s){if(s&&s.__esModule)return s;var o={};if(s!=null){for(var a=n(s),l=0;l<a.length;l++)if(a[l]!=="default")li(o,s,a[l])}return r(o,s),o},Cl=function(s){return s&&s.__esModule?s:{default:s}},El=function(s,o,a,l){if(a==="a"&&!l)throw TypeError("Private accessor was defined without a getter");if(typeof o==="function"?s!==o||!l:!o.has(s))throw TypeError("Cannot read private member from an object whose class did not declare it");return a==="m"?l:a==="a"?l.call(s):l?l.value:o.get(s)},Sl=function(s,o,a,l,c){if(l==="m")throw TypeError("Private method is not writable");if(l==="a"&&!c)throw TypeError("Private accessor was defined without a setter");if(typeof o==="function"?s!==o||!c:!o.has(s))throw TypeError("Cannot write private member to an object whose class did not declare it");return l==="a"?c.call(s,a):c?c.value=a:o.set(s,a),a},Il=function(s,o){if(o===null||typeof o!=="object"&&typeof o!=="function")throw TypeError("Cannot use 'in' operator on non-object");return typeof s==="function"?o===s:s.has(o)},xl=function(s,o,a){if(o!==null&&o!==void 0){if(typeof o!=="object"&&typeof o!=="function")throw TypeError("Object expected.");var l,c;if(a){if(!Symbol.asyncDispose)throw TypeError("Symbol.asyncDispose is not defined.");l=o[Symbol.asyncDispose]}if(l===void 0){if(!Symbol.dispose)throw TypeError("Symbol.dispose is not defined.");if(l=o[Symbol.dispose],a)c=l}if(typeof l!=="function")throw TypeError("Object not disposable.");if(c)l=function(){try{c.call(this)}catch(u){return Promise.reject(u)}};s.stack.push({value:o,dispose:l,async:a})}else if(a)s.stack.push({async:!0});return o};var i=typeof SuppressedError==="function"?SuppressedError:function(s,o,a){var l=Error(a);return l.name="SuppressedError",l.error=s,l.suppressed=o,l};kl=function(s){function o(u){s.error=s.hasError?new i(u,s.error,"An error was suppressed during disposal."):u,s.hasError=!0}var a,l=0;function c(){while(a=s.stack.pop())try{if(!a.async&&l===1)return l=0,s.stack.push(a),Promise.resolve().then(c);if(a.dispose){var u=a.dispose.call(a.value);if(a.async)return l|=2,Promise.resolve(u).then(c,function(d){return o(d),c()})}else l|=1}catch(d){o(d)}if(l===1)return s.hasError?Promise.reject(s.error):Promise.resolve();if(s.hasError)throw s.error}return c()},Rl=function(s,o){if(typeof s==="string"&&/^\.\.?\//.test(s))return s.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(a,l,c,u,d){return l?o?".jsx":".js":c&&(!u||!d)?a:c+u+"."+d.toLowerCase()+"js"});return s},e("__extends",rl),e("__assign",nl),e("__rest",il),e("__decorate",sl),e("__param",ol),e("__esDecorate",al),e("__runInitializers",ll),e("__propKey",cl),e("__setFunctionName",ul),e("__metadata",dl),e("__awaiter",hl),e("__generator",Al),e("__exportStar",fl),e("__createBinding",li),e("__values",ai),e("__read",js),e("__spread",gl),e("__spreadArrays",ml),e("__spreadArray",pl),e("__await",Tr),e("__asyncGenerator",bl),e("__asyncDelegator",yl),e("__asyncValues",wl),e("__makeTemplateObject",_l),e("__importStar",vl),e("__importDefault",Cl),e("__classPrivateFieldGet",El),e("__classPrivateFieldSet",Sl),e("__classPrivateFieldIn",Il),e("__addDisposableResource",xl),e("__disposeResources",kl),e("__rewriteRelativeImportExtension",Rl)})});import{CliRenderer as nd,createCliRenderer as id,engine as sd}from"@opentui/core";import{createTestRenderer as Ym}from"@opentui/core/testing";import{ASCIIFontRenderable as od,BoxRenderable as ad,CodeRenderable as ld,DiffRenderable as cd,ImageRenderable as ud,InputRenderable as dd,LineNumberRenderable as hd,MarkdownRenderable as Ad,ScrollBoxRenderable as fd,SelectRenderable as gd,TabSelectRenderable as md,TextareaRenderable as pd,TextAttributes as ts,TextNodeRenderable as bd,TextRenderable as yd}from"@opentui/core";import{engine as $m,Timeline as Zm}from"@opentui/core";var Ye={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return So(this.context.count)},getNextContextId(){return So(this.context.count++)}};function So(e){let t=String(e),r=t.length-1;return Ye.context.id+(r?String.fromCharCode(96+r):"")+t}function Qi(e){Ye.context=e}function Bu(){return{...Ye.context,id:Ye.getNextContextId(),count:0}}var Ou=!1,Pu=(e,t)=>e===t,Ji=Symbol("solid-proxy"),Nu=typeof Proxy==="function",Du=Symbol("solid-track"),Sm=Symbol("solid-dev-component"),jn={equals:Pu},Io=null,Bo=Mo,ft=1,Kr=2,Oo={owned:null,cleanups:null,context:null,owner:null};var ae=null,N=null,Yr=null,fr=null,we=null,Me=null,Je=null,Kn=0;function Zt(e,t){let r=we,n=ae,i=e.length===0,s=t===void 0?n:t,o=i?Oo:{owned:null,cleanups:null,context:s?s.context:null,owner:s},a=i?e:()=>e(()=>gt(()=>Ht(o)));ae=o,we=null;try{return Nt(a,!0)}finally{we=r,ae=n}}function Z(e,t){t=t?Object.assign({},jn,t):jn;let r={value:e,observers:null,observerSlots:null,comparator:t.equals||void 0},n=(i)=>{if(typeof i==="function")if(N&&N.running&&N.sources.has(r))i=i(r.tValue);else i=i(r.value);return Lo(r,i)};return[Do.bind(r),n]}function St(e,t,r){let n=Xi(e,t,!1,ft);if(Yr&&N&&N.running)Me.push(n);else Jr(n)}function Wn(e,t,r){Bo=Gu;let n=Xi(e,t,!1,ft),i=$i&&Qr($i);if(i)n.suspense=i;if(!r||!r.render)n.user=!0;Je?Je.push(n):Jr(n)}function Y(e,t,r){r=r?Object.assign({},jn,r):jn;let n=Xi(e,t,!0,0);if(n.observers=null,n.observerSlots=null,n.comparator=r.equals||void 0,Yr&&N&&N.running)n.tState=ft,Me.push(n);else Jr(n);return Do.bind(n)}function gt(e){if(!fr&&we===null)return e();let t=we;we=null;try{if(fr)return fr.untrack(e);return e()}finally{we=t}}function Xt(e){Wn(()=>gt(e))}function ze(e){if(ae===null);else if(ae.cleanups===null)ae.cleanups=[e];else ae.cleanups.push(e);return e}function Lu(e){if(N&&N.running)return e(),N.done;let t=we,r=ae;return Promise.resolve().then(()=>{we=t,ae=r;let n;if(Yr||$i)n=N||(N={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0}),n.done||(n.done=new Promise((i)=>n.resolve=i)),n.running=!0;return Nt(e,!1),we=ae=null,n?n.done:void 0})}var[Im,xo]=Z(!1);function Po(e,t){let r=Symbol("context");return{id:r,Provider:ju(r),defaultValue:e}}function Qr(e){let t;return ae&&ae.context&&(t=ae.context[e.id])!==void 0?t:e.defaultValue}function No(e){let t=Y(e),r=Y(()=>Zi(t()));return r.toArray=()=>{let n=r();return Array.isArray(n)?n:n!=null?[n]:[]},r}var $i;function Do(){let e=N&&N.running;if(this.sources&&(e?this.tState:this.state))if((e?this.tState:this.state)===ft)Jr(this);else{let t=Me;Me=null,Nt(()=>Hn(this),!1),Me=t}if(we){let t=this.observers?this.observers.length:0;if(!we.sources)we.sources=[this],we.sourceSlots=[t];else we.sources.push(this),we.sourceSlots.push(t);if(!this.observers)this.observers=[we],this.observerSlots=[we.sources.length-1];else this.observers.push(we),this.observerSlots.push(we.sources.length-1)}if(e&&N.sources.has(this))return this.tValue;return this.value}function Lo(e,t,r){let n=N&&N.running&&N.sources.has(e)?e.tValue:e.value;if(!e.comparator||!e.comparator(n,t)){if(N){let i=N.running;if(i||!r&&N.sources.has(e))N.sources.add(e),e.tValue=t;if(!i)e.value=t}else e.value=t;if(e.observers&&e.observers.length)Nt(()=>{for(let i=0;i<e.observers.length;i+=1){let s=e.observers[i],o=N&&N.running;if(o&&N.disposed.has(s))continue;if(o?!s.tState:!s.state){if(s.pure)Me.push(s);else Je.push(s);if(s.observers)Fo(s)}if(!o)s.state=ft;else s.tState=ft}if(Me.length>1e6)throw Me=[],Error()},!1)}return t}function Jr(e){if(!e.fn)return;Ht(e);let t=Kn;if(ko(e,N&&N.running&&N.sources.has(e)?e.tValue:e.value,t),N&&!N.running&&N.sources.has(e))queueMicrotask(()=>{Nt(()=>{N&&(N.running=!0),we=ae=e,ko(e,e.tValue,t),we=ae=null},!1)})}function ko(e,t,r){let n,i=ae,s=we;we=ae=e;try{n=e.fn(t)}catch(o){if(e.pure)if(N&&N.running)e.tState=ft,e.tOwned&&e.tOwned.forEach(Ht),e.tOwned=void 0;else e.state=ft,e.owned&&e.owned.forEach(Ht),e.owned=null;return e.updatedAt=r+1,Vi(o)}finally{we=s,ae=i}if(!e.updatedAt||e.updatedAt<=r){if(e.updatedAt!=null&&"observers"in e)Lo(e,n,!0);else if(N&&N.running&&e.pure){if(!N.sources.has(e))e.value=n;N.sources.add(e),e.tValue=n}else e.value=n;e.updatedAt=r}}function Xi(e,t,r,n=ft,i){let s={fn:e,state:n,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:ae,context:ae?ae.context:null,pure:r};if(N&&N.running)s.state=0,s.tState=n;if(ae===null);else if(ae!==Oo)if(N&&N.running&&ae.pure)if(!ae.tOwned)ae.tOwned=[s];else ae.tOwned.push(s);else if(!ae.owned)ae.owned=[s];else ae.owned.push(s);if(fr&&s.fn){let o=s.fn,[a,l]=Z(void 0,{equals:!1}),c=fr.factory(o,l);ze(()=>c.dispose());let u,d=()=>Lu(l).then(()=>{if(u)u.dispose(),u=void 0});s.fn=(A)=>{if(a(),N&&N.running){if(!u)u=fr.factory(o,d);return u.track(A)}return c.track(A)}}return s}function Wr(e){let t=N&&N.running;if((t?e.tState:e.state)===0)return;if((t?e.tState:e.state)===Kr)return Hn(e);if(e.suspense&&gt(e.suspense.inFallback))return e.suspense.effects.push(e);let r=[e];while((e=e.owner)&&(!e.updatedAt||e.updatedAt<Kn)){if(t&&N.disposed.has(e))return;if(t?e.tState:e.state)r.push(e)}for(let n=r.length-1;n>=0;n--){if(e=r[n],t){let i=e,s=r[n+1];while((i=i.owner)&&i!==s)if(N.disposed.has(i))return}if((t?e.tState:e.state)===ft)Jr(e);else if((t?e.tState:e.state)===Kr){let i=Me;Me=null,Nt(()=>Hn(e,r[0]),!1),Me=i}}}function Nt(e,t){if(Me)return e();let r=!1;if(!t)Me=[];if(Je)r=!0;else Je=[];Kn++;try{let n=e();return Mu(r),n}catch(n){if(!r)Je=null;Me=null,Vi(n)}}function Mu(e){if(Me){if(Yr&&N&&N.running)Fu(Me);else Mo(Me);Me=null}if(e)return;let t;if(N){if(!N.promises.size&&!N.queue.size){let{sources:n,disposed:i}=N;Je.push.apply(Je,N.effects),t=N.resolve;for(let s of Je)"tState"in s&&(s.state=s.tState),delete s.tState;N=null,Nt(()=>{for(let s of i)Ht(s);for(let s of n){if(s.value=s.tValue,s.owned)for(let o=0,a=s.owned.length;o<a;o++)Ht(s.owned[o]);if(s.tOwned)s.owned=s.tOwned;delete s.tValue,delete s.tOwned,s.tState=0}xo(!1)},!1)}else if(N.running){N.running=!1,N.effects.push.apply(N.effects,Je),Je=null,xo(!0);return}}let r=Je;if(Je=null,r.length)Nt(()=>Bo(r),!1);if(t)t()}function Mo(e){for(let t=0;t<e.length;t++)Wr(e[t])}function Fu(e){for(let t=0;t<e.length;t++){let r=e[t],n=N.queue;if(!n.has(r))n.add(r),Yr(()=>{n.delete(r),Nt(()=>{N.running=!0,Wr(r)},!1),N&&(N.running=!1)})}}function Gu(e){let t,r=0;for(t=0;t<e.length;t++){let n=e[t];if(!n.user)Wr(n);else e[r++]=n}if(Ye.context){if(Ye.count){Ye.effects||(Ye.effects=[]),Ye.effects.push(...e.slice(0,r));return}Qi()}if(Ye.effects&&(Ye.done||!Ye.count))e=[...Ye.effects,...e],r+=Ye.effects.length,delete Ye.effects;for(t=0;t<r;t++)Wr(e[t])}function Hn(e,t){let r=N&&N.running;if(r)e.tState=0;else e.state=0;for(let n=0;n<e.sources.length;n+=1){let i=e.sources[n];if(i.sources){let s=r?i.tState:i.state;if(s===ft){if(i!==t&&(!i.updatedAt||i.updatedAt<Kn))Wr(i)}else if(s===Kr)Hn(i,t)}}}function Fo(e){let t=N&&N.running;for(let r=0;r<e.observers.length;r+=1){let n=e.observers[r];if(t?!n.tState:!n.state){if(t)n.tState=Kr;else n.state=Kr;if(n.pure)Me.push(n);else Je.push(n);n.observers&&Fo(n)}}}function Ht(e){let t;if(e.sources)while(e.sources.length){let r=e.sources.pop(),n=e.sourceSlots.pop(),i=r.observers;if(i&&i.length){let s=i.pop(),o=r.observerSlots.pop();if(n<i.length)s.sourceSlots[o]=n,i[n]=s,r.observerSlots[n]=o}}if(e.tOwned){for(t=e.tOwned.length-1;t>=0;t--)Ht(e.tOwned[t]);delete e.tOwned}if(N&&N.running&&e.pure)Go(e,!0);else if(e.owned){for(t=e.owned.length-1;t>=0;t--)Ht(e.owned[t]);e.owned=null}if(e.cleanups){for(t=e.cleanups.length-1;t>=0;t--)e.cleanups[t]();e.cleanups=null}if(N&&N.running)e.tState=0;else e.state=0}function Go(e,t){if(!t)e.tState=0,N.disposed.add(e);if(e.owned)for(let r=0;r<e.owned.length;r++)Go(e.owned[r])}function Uu(e){if(e instanceof Error)return e;return Error(typeof e==="string"?e:"Unknown error",{cause:e})}function Ro(e,t,r){try{for(let n of t)n(e)}catch(n){Vi(n,r&&r.owner||null)}}function Vi(e,t=ae){let r=Io&&t&&t.context&&t.context[Io],n=Uu(e);if(!r)throw n;if(Je)Je.push({fn(){Ro(n,r,t)},state:ft});else Ro(n,r,t)}function Zi(e){if(typeof e==="function"&&!e.length)return Zi(e());if(Array.isArray(e)){let t=[];for(let r=0;r<e.length;r++){let n=Zi(e[r]);Array.isArray(n)?t.push.apply(t,n):t.push(n)}return t}return e}function ju(e,t){return function(n){let i;return St(()=>i=gt(()=>(ae.context={...ae.context,[e]:n.value},No(()=>n.children))),void 0),i}}var Hu=Symbol("fallback");function To(e){for(let t=0;t<e.length;t++)e[t]()}function Ku(e,t,r={}){let n=[],i=[],s=[],o=0,a=t.length>1?[]:null;return ze(()=>To(s)),()=>{let l=e()||[],c=l.length,u,d;return l[Du],gt(()=>{let m,g,f,p,v,y,S,_,b;if(c===0){if(o!==0)To(s),s=[],n=[],i=[],o=0,a&&(a=[]);if(r.fallback)n=[Hu],i[0]=Zt((w)=>(s[0]=w,r.fallback())),o=1}else if(o===0){i=Array(c);for(d=0;d<c;d++)n[d]=l[d],i[d]=Zt(A);o=c}else{f=Array(c),p=Array(c),a&&(v=Array(c));for(y=0,S=Math.min(o,c);y<S&&n[y]===l[y];y++);for(S=o-1,_=c-1;S>=y&&_>=y&&n[S]===l[_];S--,_--)f[_]=i[S],p[_]=s[S],a&&(v[_]=a[S]);m=new Map,g=Array(_+1);for(d=_;d>=y;d--)b=l[d],u=m.get(b),g[d]=u===void 0?-1:u,m.set(b,d);for(u=y;u<=S;u++)if(b=n[u],d=m.get(b),d!==void 0&&d!==-1)f[d]=i[u],p[d]=s[u],a&&(v[d]=a[u]),d=g[d],m.set(b,d);else s[u]();for(d=y;d<c;d++)if(d in f){if(i[d]=f[d],s[d]=p[d],a)a[d]=v[d],a[d](d)}else i[d]=Zt(A);i=i.slice(0,o=c),n=l.slice(0)}return i});function A(m){if(s[d]=m,a){let[g,f]=Z(d);return a[d]=f,t(l[d],g)}return t(l[d])}}}var Wu=!1;function Uo(e,t){if(Wu){if(Ye.context){let r=Ye.context;Qi(Bu());let n=gt(()=>e(t||{}));return Qi(r),n}}return gt(()=>e(t||{}))}function Un(){return!0}var Yu={get(e,t,r){if(t===Ji)return r;return e.get(t)},has(e,t){if(t===Ji)return!0;return e.has(t)},set:Un,deleteProperty:Un,getOwnPropertyDescriptor(e,t){return{configurable:!0,enumerable:!0,get(){return e.get(t)},set:Un,deleteProperty:Un}},ownKeys(e){return e.keys()}};function Yi(e){return!(e=typeof e==="function"?e():e)?{}:e}function Qu(){for(let e=0,t=this.length;e<t;++e){let r=this[e]();if(r!==void 0)return r}}function Yn(...e){let t=!1;for(let o=0;o<e.length;o++){let a=e[o];t=t||!!a&&Ji in a,e[o]=typeof a==="function"?(t=!0,Y(a)):a}if(Nu&&t)return new Proxy({get(o){for(let a=e.length-1;a>=0;a--){let l=Yi(e[a])[o];if(l!==void 0)return l}},has(o){for(let a=e.length-1;a>=0;a--)if(o in Yi(e[a]))return!0;return!1},keys(){let o=[];for(let a=0;a<e.length;a++)o.push(...Object.keys(Yi(e[a])));return[...new Set(o)]}},Yu);let r={},n=Object.create(null);for(let o=e.length-1;o>=0;o--){let a=e[o];if(!a)continue;let l=Object.getOwnPropertyNames(a);for(let c=l.length-1;c>=0;c--){let u=l[c];if(u==="__proto__"||u==="constructor")continue;let d=Object.getOwnPropertyDescriptor(a,u);if(!n[u])n[u]=d.get?{enumerable:!0,configurable:!0,get:Qu.bind(r[u]=[d.get.bind(a)])}:d.value!==void 0?d:void 0;else{let A=r[u];if(A){if(d.get)A.push(d.get.bind(a));else if(d.value!==void 0)A.push(()=>d.value)}}}}let i={},s=Object.keys(n);for(let o=s.length-1;o>=0;o--){let a=s[o],l=n[a];if(l&&l.get)Object.defineProperty(i,a,l);else i[a]=l?l.value:void 0}return i}var Ju=(e)=>`Stale read from <${e}>.`;function yt(e){let t="fallback"in e&&{fallback:()=>e.fallback};return Y(Ku(()=>e.each,e.children,t||void 0))}function Fe(e){let t=e.keyed,r=Y(()=>e.when,void 0,void 0),n=t?r:Y(r,void 0,{equals:(i,s)=>!i===!s});return Y(()=>{let i=n();if(i){let s=e.children;return typeof s==="function"&&s.length>0?gt(()=>s(t?i:()=>{if(!gt(n))throw Ju("Show");return r()})):s}return e.fallback},void 0,void 0)}import{BaseRenderable as oa,createTextAttributes as Cd,ImageRenderable as Zo,InputRenderable as rs,InputRenderableEvents as Zr,isTextNodeRenderable as as,isEditBufferRenderable as Ed,parseColor as Xo,Renderable as Sd,RootTextNodeRenderable as Id,ScrollBoxRenderable as xd,SelectRenderable as Vo,SelectRenderableEvents as ns,TabSelectRenderable as zo,TabSelectRenderableEvents as is,TextNodeRenderable as kd,TextRenderable as aa}from"@opentui/core";var zi,$u=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),jo=(zi=String.fromCodePoint)!==null&&zi!==void 0?zi:(e)=>{let t="";if(e>65535)e-=65536,t+=String.fromCharCode(e>>>10&1023|55296),e=56320|e&1023;return t+=String.fromCharCode(e),t};function Ho(e){var t;if(e>=55296&&e<=57343||e>1114111)return 65533;return(t=$u.get(e))!==null&&t!==void 0?t:e}function Ko(e){let t=typeof atob==="function"?atob(e):typeof Buffer.from==="function"?Buffer.from(e,"base64").toString("binary"):new Buffer(e,"base64").toString("binary"),r=t.length&-2,n=new Uint16Array(r/2);for(let i=0,s=0;i<r;i+=2){let o=t.charCodeAt(i),a=t.charCodeAt(i+1);n[s++]=o|a<<8}return n}var Wo=Ko("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWlsN2E6ZHIAAOA12CjdciJlZW4AOGFjAHkARWRjAHkAXGRwAGYAAOA12FzdYwByAADgNdjA3IALQUJFSGFiY2RlZmdoamxtbm9wcnN0dXYAXhxtHHEcdRx5HN8cBx0dHTwd3B3tHfEdAR4EHh0eLB5FHrwewx7hHgkfPR9LH4ABYXJ0AGQcZxxpHHIA8gBvB/IAxQLhIWlsAKAbKeEhcnIAoA4pZ6BmIgCgiyphAHIAAKBiKWMJjRwAAJAcAACVHAAAAAAAAAAAAACZHJwcAACmHKgcrRwAANIc9SF0ZTph7SJwdHl2AKC0KXIAYQDuAFoG4iFkYbtjZwAAoegnZGyhHKMcAKCRKeUAiwYAoIUqdQBvADuAqwCrQHIAgKOQIWJmaGxwc3QAuhy/HMIcxBzHHMoczhxmoOQhcwAAoB8pcwAAoB0p6wCyGnAAAKCrIWwAAKA5KWkAbQAAoHMpbAAAoKIhAKGrKmFl1hzaHGkAbAAAoBkpc6CtKgDgrSoA/oABYWJyAOUc6RztHHIAcgAAoAwpcgBrAACgcicAAWFr8Rz4HGMAAAFla/Yc9xx7YFtgAAFlc/wc/hwAoIspbAAAAWR1Ax0FHQCgjykAoI0pAAJhZXV5Dh0RHRodHB3yIW9uPmEAAWRpFR0YHWkAbAA8YewAowbiAPccO2QAAmNxcnMkHScdLB05HWEAAKA2KXUAbwDyoBwgqhEAAWR1MB00HeghYXIAoGcpcyJoYXIAAKBLKWgAAKCyIQCiZCJmZ3FzRB1FB5Qdnh10AIACYWhscnQATh1WHWUdbB2NHXIicm93AHSgkCFhAOkAzxxhI3Jwb29uAAABZHVeHWId7yF3bgCgvSFwAACgvCHlJGZ0YXJyb3dzAKDHIWkiZ2h0AIABYWhzAHUdex2DHXIicm93APOglCGdBmEAcgBwAG8AbwBuAPMAzgtxAHUAaQBnAGEAcgByAG8A9wBlGugkcmVldGltZXMAoMsi8aFkIk0HAACaHWwAYQBuAPQAXgcAon0qY2Rnc6YdqR2xHbcdYwAAoKgqbwB0AG+gfypyoIEqAKCDKmXg2iIA/nMAAKCTKoACYWRlZ3MAwB3GHcod1h3ZHXAAcAByAG8A+ACmHG8AdAAAoNYicQAAAWdxzx3SHXQA8gBGB2cAdADyAHQcdADyAFMHaQDtAGMHgAFpbHIA4h3mHeod8yFodACgfClvAG8A8gDKBgDgNdgp3UWgdiIAoJEqYQH1Hf4dcgAAAWR1YB35HWygvCEAoGopbABrAACghCVjAHkAWWQAomoiYWNodAweDx4VHhkecgDyAGsdbwByAG4AZQDyAGAW4SFyZACgaylyAGkAAKD6JQABaW8hHiQe5CFvdEBh9SFzdGGgsCPjIWhlAKCwIwACRWFlczMeNR48HkEeAKBoInAAcKCJKvIhb3gAoIkqcaCHKvGghyo0HmkAbQAAoOYiAARhYm5vcHR3elIeXB5fHoUelh6mHqsetB4AAW5yVh5ZHmcAAKDsJ3IAAKD9IXIA6wCwBmcAgAFsbXIAZh52Hnse5SFmdAABYXKIB2weaQBnAGgAdABhAHIAcgBvAPcAkwfhInBzdG8AoPwnaQBnAGgAdABhAHIAcgBvAPcAmgdwI2Fycm93AAABbHKNHpEeZQBmAPQAxhxpImdodAAAoKwhgAFhZmwAnB6fHqIecgAAoIUpAOA12F3ddQBzAACgLSppIm1lcwAAoDQqYQGvHrMecwB0AACgFyLhAIoOZaHKJbkeRhLuIWdlAKDKJWEAcgBsoCgAdAAAoJMpgAJhY2htdADMHs8e1R7bHt0ecgDyAJ0GbwByAG4AZQDyANYWYQByAGSgyyEAoG0pAKAOIHIAaQAAoL8iAANhY2hpcXTrHu8e1QfzHv0eBh/xIXVvAKA5IHIAAOA12MHcbQDloXIi+h4AAPweAKCNKgCgjyoAAWJ19xwBH28AcqAYIACgGiDyIW9rQmEAhDwAO2NkaGlscXJCBhcfxh0gHyQfKB8sHzEfAAFjaRsfHR8AoKYqcgAAoHkqcgBlAOUAkx3tIWVzAKDJIuEhcnIAoHYpdSJlc3QAAKB7KgABUGk1HzkfYQByAACglillocMlAgdfEnIAAAFkdUIfRx9zImhhcgAAoEop6CFhcgCgZikAAWVuTx9WH3IjdG5lcXEAAOBoIgD+xQBUHwAHRGFjZGVmaGlsbm9wc3VuH3Ifoh+rH68ftx+7H74f5h/uH/MfBwj/HwsgxCFvdACgOiIAAmNscHJ5H30fiR+eH3IAO4CvAK9AAAFldIEfgx8AoEImZaAgJ3MAZQAAoCAnc6CmIXQAbwCAoaYhZGx1AJQfmB+cH28AdwDuAHkDZQBmAPQA6gbwAOkO6yFlcgCgriUAAW95ph+qH+0hbWEAoCkqPGThIXNoAKAUIOElc3VyZWRhbmdsZQCgISJyAADgNdgq3W8AAKAnIYABY2RuAMQfyR/bH3IAbwA7gLUAtUBhoiMi0B8AANMf1x9zAPQAKxFpAHIAAKDwKm8AdAA7gLcAt0B1AHMA4qESIh4TAADjH3WgOCIAoCoqYwHqH+0fcAAAoNsq8gB+GnAAbAB1APMACAgAAWRw9x/7H+UhbHMAoKciZgAA4DXYXt0AAWN0AyAHIHIAAOA12MLc8CFvcwCgPiJsobwDECAVIPQiaW1hcACguCJhAPAAEyAADEdMUlZhYmNkZWZnaGlqbG1vcHJzdHV2dzwgRyBmIG0geSCqILgg2iDeIBEhFSEyIUMhTSFQIZwhnyHSIQAiIyKLIrEivyIUIwABZ3RAIEMgAODZIjgD9uBrItIgBwmAAWVsdABNIF8gYiBmAHQAAAFhclMgWCByInJvdwAAoM0h6SRnaHRhcnJvdwCgziEA4NgiOAP24Goi0iBfCekkZ2h0YXJyb3cAoM8hAAFEZHEgdSDhIXNoAKCvIuEhc2gAoK4igAJiY25wdACCIIYgiSCNIKIgbABhAACgByL1IXRlRGFnAADgICLSIACiSSJFaW9wlSCYIJwgniAA4HAqOANkAADgSyI4A3MASWFyAG8A+AAyCnUAcgBhoG4mbADzoG4mmwjzAa8gAACzIHAAO4CgAKBAbQBwAOXgTiI4AyoJgAJhZW91eQDBIMogzSDWINkg8AHGIAAAyCAAoEMqbwBuAEhh5CFpbEZhbgBnAGSgRyJvAHQAAOBtKjgDcAAAoEIqPWThIXNoAKATIACjYCJBYWRxc3jpIO0g+SD+IAIhDCFyAHIAAKDXIXIAAAFocvIg9SBrAACgJClvoJch9wAGD28AdAAA4FAiOAN1AGkA9gC7CAABZWkGIQohYQByAACgKCntAN8I6SFzdPOgBCLlCHIAAOA12CvdAAJFZXN0/wgcISshLiHxoXEiIiEAABMJ8aFxIgAJAAAnIWwAYQBuAPQAEwlpAO0AGQlyoG8iAKBvIoABQWFwADghOyE/IXIA8gBeIHIAcgAAoK4hYQByAACg8ipzogsiSiEAAAAAxwtkoPwiAKD6ImMAeQBaZIADQUVhZGVzdABcIV8hYiFmIWkhkyGWIXIA8gBXIADgZiI4A3IAcgAAoJohcgAAoCUggKFwImZxcwBwIYQhjiF0AAABYXJ1IXohcgByAG8A9wBlIWkAZwBoAHQAYQByAHIAbwD3AD4h8aFwImAhAACKIWwAYQBuAPQAZwlz4H0qOAMAoG4iaQDtAG0JcqBuImkA5aDqIkUJaQDkADoKAAFwdKMhpyFmAADgNdhf3YCBrAA7aW4AriGvIcchrEBuAIChCSJFZHYAtyG6Ib8hAOD5IjgDbwB0AADg9SI4A+EB1gjEIcYhAKD3IgCg9iJpAHagDCLhAagJzyHRIQCg/iIAoP0igAFhb3IA2CHsIfEhcgCAoSYiYXN0AOAh5SHpIWwAbABlAOwAywhsAADg/SrlIADgAiI4A2wiaW50AACgFCrjoYAi9yEAAPohdQDlAJsJY+CvKjgDZaCAIvEAkwkAAkFhaXQHIgoiFyIeInIA8gBsIHIAcgAAoZshY3cRIhQiAOAzKTgDAOCdITgDZyRodGFycm93AACgmyFyAGkA5aDrIr4JgANjaGltcHF1AC8iPCJHIpwhTSJQIloigKGBImNlcgA2Iv0JOSJ1AOUABgoA4DXYw9zvIXJ0bQKdIQAAAABEImEAcgDhAOEhbQBloEEi8aBEIiYKYQDyAMsIcwB1AAABYnBWIlgi5QDUCeUA3wmAAWJjcABgInMieCKAoYQiRWVzAGci7glqIgDgxSo4A2UAdABl4IIi0iBxAPGgiCJoImMAZaCBIvEA/gmAoYUiRWVzAH8iFgqCIgDgxio4A2UAdABl4IMi0iBxAPGgiSKAIgACZ2lscpIilCKaIpwi7AAMCWwAZABlADuA8QDxQOcAWwlpI2FuZ2xlAAABbHKkIqoi5SFmdGWg6iLxAEUJaSJnaHQAZaDrIvEAvgltoL0DAKEjAGVzuCK8InIAbwAAoBYhcAAAoAcggARESGFkZ2lscnMAziLSItYi2iLeIugi7SICIw8j4SFzaACgrSLhIXJyAKAEKXAAAOBNItIg4SFzaACgrCIAAWV04iLlIgDgZSLSIADgPgDSIG4iZmluAACg3imAAUFldADzIvci+iJyAHIAAKACKQDgZCLSIHLgPADSIGkAZQAA4LQi0iAAAUF0BiMKI3IAcgAAoAMp8iFpZQDgtSLSIGkAbQAA4Dwi0iCAAUFhbgAaIx4jKiNyAHIAAKDWIXIAAAFociMjJiNrAACgIylvoJYh9wD/DuUhYXIAoCcpUxJqFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVCMAAF4jaSN/I4IjjSOeI8AUAAAAAKYjwCMAANoj3yMAAO8jHiQvJD8kRCQAAWNzVyNsFHUAdABlADuA8wDzQAABaXlhI2cjcgBjoJoiO4D0APRAPmSAAmFiaW9zAHEjdCN3I3EBeiNzAOgAdhTsIWFjUWF2AACgOCrvIWxkAKC8KewhaWdTYQABY3KFI4kjaQByAACgvykA4DXYLN1vA5QjAAAAAJYjAACcI24A22JhAHYAZQA7gPIA8kAAoMEpAAFibaEjjAphAHIAAKC1KQACYWNpdKwjryO6I70jcgDyAFkUAAFpcrMjtiNyAACgvinvIXNzAKC7KW4A5QDZCgCgwCmAAWFlaQDFI8gjyyNjAHIATWFnAGEAyWOAAWNkbgDRI9Qj1iPyIW9uv2MAoLYpdQDzAHgBcABmAADgNdhg3YABYWVsAOQj5yPrI3IAAKC3KXIAcAAAoLkpdQDzAHwBAKMoImFkaW9zdvkj/CMPJBMkFiQbJHIA8gBeFIChXSplZm0AAyQJJAwkcgBvoDQhZgAAoDQhO4CqAKpAO4C6ALpA5yFvZgCgtiJyAACgVipsIm9wZQAAoFcqAKBbKoABY2xvACMkJSQrJPIACCRhAHMAaAA7gPgA+EBsAACgmCJpAGwBMyQ4JGQAZQA7gPUA9UBlAHMAYaCXInMAAKA2Km0AbAA7gPYA9kDiIWFyAKA9I+EKXiQAAHokAAB8JJQkAACYJKkkAAAAALUkEQsAAPAkAAAAAAQleiUAAIMlcgCAoSUiYXN0AGUkbyQBCwCBtgA7bGokayS2QGwAZQDsABgDaQJ1JAAAAAB4JG0AAKDzKgCg/Sp5AD9kcgCAAmNpbXB0AIUkiCSLJJkSjyRuAHQAJWBvAGQALmBpAGwAAKAwIOUhbmsAoDEgcgAA4DXYLd2AAWltbwCdJKAkpCR2oMYD1WNtAGEA9AD+B24AZQAAoA4m9KHAA64kAAC0JGMjaGZvcmsAAKDUItZjAAFhdbgkxCRuAAABY2u9JMIkawBooA8hAKAOIfYAaRpzAACkKwBhYmNkZW1zdNMkIRPXJNsk4STjJOck6yTjIWlyAKAjKmkAcgAAoCIqAAFvdYsW3yQAoCUqAKByKm4AO4CxALFAaQBtAACgJip3AG8AAKAnKoABaXB1APUk+iT+JO4idGludACgFSpmAADgNdhh3W4AZAA7gKMAo0CApHoiRWFjZWlub3N1ABMlFSUYJRslTCVRJVklSSV1JQCgsypwAACgtyp1AOUAPwtjoK8qgKJ6ImFjZW5zACclLSU0JTYlSSVwAHAAcgBvAPgAFyV1AHIAbAB5AGUA8QA/C/EAOAuAAWFlcwA8JUElRSXwInByb3gAoLkqcQBxAACgtSppAG0AAKDoImkA7QBEC20AZQDzoDIgIguAAUVhcwBDJVclRSXwAEAlgAFkZnAATwtfJXElgAFhbHMAZSVpJW0l7CFhcgCgLiPpIW5lAKASI/UhcmYAoBMjdKAdIu8AWQvyIWVsAKCwIgABY2l9JYElcgAA4DXYxdzIY24iY3NwAACgCCAAA2Zpb3BzdZElKxuVJZolnyWkJXIAAOA12C7dcABmAADgNdhi3XIiaW1lAACgVyBjAHIAAOA12MbcgAFhZW8AqiW6JcAldAAAAWVpryW2JXIAbgBpAG8AbgDzABkFbgB0AACgFipzAHQAZaA/APEACRj0AG0LgApBQkhhYmNkZWZoaWxtbm9wcnN0dXgA4yXyJfYl+iVpJpAmpia9JtUm5ib4JlonaCdxJ3UnnietJ7EnyCfiJ+cngAFhcnQA6SXsJe4lcgDyAJkM8gD6AuEhaWwAoBwpYQByAPIA3BVhAHIAAKBkKYADY2RlbnFydAAGJhAmEyYYJiYmKyZaJgABZXUKJg0mAOA9IjEDdABlAFVhaQDjACAN7SJwdHl2AKCzKWcAgKHpJ2RlbAAgJiImJCYAoJIpAKClKeUA9wt1AG8AO4C7ALtAcgAApZIhYWJjZmhscHN0dz0mQCZFJkcmSiZMJk4mUSZVJlgmcAAAoHUpZqDlIXMAAKAgKQCgMylzAACgHinrALka8ACVHmwAAKBFKWkAbQAAoHQpbAAAoKMhAKCdIQABYWleJmImaQBsAACgGilvAG6gNiJhAGwA8wB2C4ABYWJyAG8mciZ2JnIA8gAvEnIAawAAoHMnAAFha3omgSZjAAABZWt/JoAmfWBdYAABZXOFJocmAKCMKWwAAAFkdYwmjiYAoI4pAKCQKQACYWV1eZcmmiajJqUm8iFvbllhAAFkaZ4moSZpAGwAV2HsAA8M4gCAJkBkAAJjbHFzrSawJrUmuiZhAACgNylkImhhcgAAoGkpdQBvAPKgHSCjAWgAAKCzIYABYWNnAMMm0iaUC2wAgKEcIWlwcwDLJs4migxuAOUAoAxhAHIA9ADaC3QAAKCtJYABaWxyANsm3ybjJvMhaHQAoH0pbwBvAPIANgwA4DXYL90AAWFv6ib1JnIAAAFkde8m8SYAoMEhbKDAIQCgbCl2oMED8WOAAWducwD+Jk4nUCdoAHQAAANhaGxyc3QKJxInISc1Jz0nRydyInJvdwB0oJIhYQDpAFYmYSNycG9vbgAAAWR1GiceJ28AdwDuAPAmcAAAoMAh5SFmdAABYWgnJy0ncgByAG8AdwDzAAkMYQByAHAAbwBvAG4A8wATBGklZ2h0YXJyb3dzAACgySFxAHUAaQBnAGEAcgByAG8A9wBZJugkcmVldGltZXMAoMwiZwDaYmkAbgBnAGQAbwB0AHMAZQDxABwYgAFhaG0AYCdjJ2YncgDyAAkMYQDyABMEAKAPIG8idXN0AGGgsSPjIWhlAKCxI+0haWQAoO4qAAJhYnB0fCeGJ4knmScAAW5ygCeDJ2cAAKDtJ3IAAKD+IXIA6wAcDIABYWZsAI8nkieVJ3IAAKCGKQDgNdhj3XUAcwAAoC4qaSJtZXMAAKA1KgABYXCiJ6gncgBnoCkAdAAAoJQp7yJsaW50AKASKmEAcgDyADwnAAJhY2hxuCe8J6EMwCfxIXVvAKA6IHIAAOA12MfcAAFidYAmxCdvAPKgGSCoAYABaGlyAM4n0ifWJ3IAZQDlAE0n7SFlcwCgyiJpAIChuSVlZmwAXAxjEt4n9CFyaQCgzinsInVoYXIAoGgpAKAeIWENBSgJKA0oSyhVKIYoAACLKLAoAAAAAOMo5ygAABApJCkxKW0pcSmHKaYpAACYKgAAAACxKmMidXRlAFthcQB1AO8ABR+ApHsiRWFjZWlucHN5ABwoHignKCooLygyKEEoRihJKACgtCrwASMoAAAlKACguCpvAG4AYWF1AOUAgw1koLAqaQBsAF9hcgBjAF1hgAFFYXMAOCg6KD0oAKC2KnAAAKC6KmkAbQAAoOki7yJsaW50AKATKmkA7QCIDUFkbwB0AGKixSKRFgAAAABTKACgZiqAA0FhY21zdHgAYChkKG8ocyh1KHkogihyAHIAAKDYIXIAAAFocmkoayjrAJAab6CYIfcAzAd0ADuApwCnQGkAO2D3IWFyAKApKW0AAAFpbn4ozQBuAHUA8wDOAHQAAKA2J3IA7+A12DDdIxkAAmFjb3mRKJUonSisKHIAcAAAoG8mAAFoeZkonChjAHkASWRIZHIAdABtAqUoAAAAAKgoaQDkAFsPYQByAGEA7ABsJDuArQCtQAABZ22zKLsobQBhAAChwwNmdroouijCY4CjPCJkZWdsbnByAMgozCjPKNMo1yjaKN4obwB0AACgairxoEMiCw5FoJ4qAKCgKkWgnSoAoJ8qZQAAoEYi7CF1cwCgJCrhIXJyAKByKWEAcgDyAPwMAAJhZWl07Sj8KAEpCCkAAWxz8Sj4KGwAcwBlAHQAbQDpAH8oaABwAACgMyrwImFyc2wAoOQpAAFkbFoPBSllAACgIyNloKoqc6CsKgDgrCoA/oABZmxwABUpGCkfKfQhY3lMZGKgLwBhoMQpcgAAoD8jZgAA4DXYZN1hAAABZHIoKRcDZQBzAHWgYCZpAHQAAKBgJoABY3N1ADYpRilhKQABYXU6KUApcABzoJMiAOCTIgD+cABzoJQiAOCUIgD+dQAAAWJwSylWKQChjyJlcz4NUCllAHQAZaCPIvEAPw0AoZAiZXNIDVspZQB0AGWgkCLxAEkNAKGhJWFmZilbBHIAZQFrKVwEAKChJWEAcgDyAAMNAAJjZW10dyl7KX8pgilyAADgNdjI3HQAbQDuAM4AaQDsAAYpYQByAOYAVw0AAWFyiimOKXIA5qAGJhESAAFhbpIpoylpImdodAAAAWVwmSmgKXAAcwBpAGwAbwDuANkXaADpAKAkcwCvYIACYmNtbnAArin8KY4NJSooKgCkgiJFZGVtbnByc7wpvinCKcgpzCnUKdgp3CkAoMUqbwB0AACgvSpkoIYibwB0AACgwyr1IWx0AKDBKgABRWXQKdIpAKDLKgCgiiLsIXVzAKC/KuEhcnIAoHkpgAFlaXUA4inxKfQpdAAAoYIiZW7oKewpcQDxoIYivSllAHEA8aCKItEpbQAAoMcqAAFicPgp+ikAoNUqAKDTKmMAgKJ7ImFjZW5zAAcqDSoUKhYqRihwAHAAcgBvAPgAIyh1AHIAbAB5AGUA8QCDDfEAfA2AAWFlcwAcKiIqPShwAHAAcgBvAPgAPChxAPEAOShnAACgaiYApoMiMTIzRWRlaGxtbnBzPCo/KkIqRSpHKlIqWCpjKmcqaypzKncqO4C5ALlAO4CyALJAO4CzALNAAKDGKgABb3NLKk4qdAAAoL4qdQBiAACg2CpkoIcibwB0AACgxCpzAAABb3VdKmAqbAAAoMknYgAAoNcq4SFycgCgeyn1IWx0AKDCKgABRWVvKnEqAKDMKgCgiyLsIXVzAKDAKoABZWl1AH0qjCqPKnQAAKGDImVugyqHKnEA8aCHIkYqZQBxAPGgiyJwKm0AAKDIKgABYnCTKpUqAKDUKgCg1iqAAUFhbgCdKqEqrCpyAHIAAKDZIXIAAAFocqYqqCrrAJUab6CZIfcAxQf3IWFyAKAqKWwAaQBnADuA3wDfQOELzyrZKtwq6SrsKvEqAAD1KjQrAAAAAAAAAAAAAEwrbCsAAHErvSsAAAAAAADRK3IC1CoAAAAA2CrnIWV0AKAWI8RjcgDrAOUKgAFhZXkA4SrkKucq8iFvbmVh5CFpbGNhQmRvAPQAIg5sInJlYwAAoBUjcgAA4DXYMd0AAmVpa2/7KhIrKCsuK/IBACsAAAkrZQAAATRm6g0EK28AcgDlAOsNYQBzorgDECsAAAAAEit5AG0A0WMAAWNuFislK2sAAAFhcxsrIStwAHAAcgBvAPgAFw5pAG0AAKA8InMA8AD9DQABYXMsKyEr8AAXDnIAbgA7gP4A/kDsATgrOyswG2QA5QBnAmUAcwCAgdcAO2JkAEMrRCtJK9dAYaCgInIAAKAxKgCgMCqAAWVwcwBRK1MraSvhAAkh4qKkIlsrXysAAAAAYytvAHQAAKA2I2kAcgAAoPEqb+A12GXdcgBrAACg2irhAHgociJpbWUAAKA0IIABYWlwAHYreSu3K2QA5QC+DYADYWRlbXBzdACFK6MrmiunK6wrsCuzK24iZ2xlAACitSVkbHFykCuUK5ornCvvIXduAKC/JeUhZnRloMMl8QACBwCgXCJpImdodABloLkl8QBdDG8AdAAAoOwlaSJudXMAAKA6KuwhdXMAoDkqYgAAoM0p6SFtZQCgOyrlInppdW0AoOIjgAFjaHQAwivKK80rAAFyecYrySsA4DXYydxGZGMAeQBbZPIhb2tnYQABaW/UK9creAD0ANERaCJlYWQAAAFsct4r5ytlAGYAdABhAHIAcgBvAPcAXQbpJGdodGFycm93AKCgIQAJQUhhYmNkZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");var $e;(function(e){e[e.VALUE_LENGTH=49152]="VALUE_LENGTH",e[e.FLAG13=8192]="FLAG13",e[e.BRANCH_LENGTH=8064]="BRANCH_LENGTH",e[e.JUMP_TABLE=127]="JUMP_TABLE"})($e||($e={}));var Ce;(function(e){e[e.NUM=35]="NUM",e[e.SEMI=59]="SEMI",e[e.EQUALS=61]="EQUALS",e[e.ZERO=48]="ZERO",e[e.NINE=57]="NINE",e[e.LOWER_A=97]="LOWER_A",e[e.LOWER_F=102]="LOWER_F",e[e.LOWER_X=120]="LOWER_X",e[e.LOWER_Z=122]="LOWER_Z",e[e.UPPER_A=65]="UPPER_A",e[e.UPPER_F=70]="UPPER_F",e[e.UPPER_Z=90]="UPPER_Z"})(Ce||(Ce={}));var Yo=32;function qi(e){return e>=Ce.ZERO&&e<=Ce.NINE}function Zu(e){return e>=Ce.UPPER_A&&e<=Ce.UPPER_F||e>=Ce.LOWER_A&&e<=Ce.LOWER_F}function Xu(e){return e>=Ce.UPPER_A&&e<=Ce.UPPER_Z||e>=Ce.LOWER_A&&e<=Ce.LOWER_Z||qi(e)}function Vu(e){return e===Ce.EQUALS||Xu(e)}var He;(function(e){e[e.EntityStart=0]="EntityStart",e[e.NumericStart=1]="NumericStart",e[e.NumericDecimal=2]="NumericDecimal",e[e.NumericHex=3]="NumericHex",e[e.NamedEntity=4]="NamedEntity"})(He||(He={}));var Dt;(function(e){e[e.Legacy=0]="Legacy",e[e.Strict=1]="Strict",e[e.Attribute=2]="Attribute"})(Dt||(Dt={}));class es{constructor(e,t,r){this.decodeTree=e,this.emitCodePoint=t,this.errors=r,this.state=He.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=Dt.Strict,this.runConsumed=0}startEntity(e){this.decodeMode=e,this.state=He.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(e,t){switch(this.state){case He.EntityStart:{if(e.charCodeAt(t)===Ce.NUM)return this.state=He.NumericStart,this.consumed+=1,this.stateNumericStart(e,t+1);return this.state=He.NamedEntity,this.stateNamedEntity(e,t)}case He.NumericStart:return this.stateNumericStart(e,t);case He.NumericDecimal:return this.stateNumericDecimal(e,t);case He.NumericHex:return this.stateNumericHex(e,t);case He.NamedEntity:return this.stateNamedEntity(e,t)}}stateNumericStart(e,t){if(t>=e.length)return-1;if((e.charCodeAt(t)|Yo)===Ce.LOWER_X)return this.state=He.NumericHex,this.consumed+=1,this.stateNumericHex(e,t+1);return this.state=He.NumericDecimal,this.stateNumericDecimal(e,t)}stateNumericHex(e,t){while(t<e.length){let r=e.charCodeAt(t);if(qi(r)||Zu(r)){let n=r<=Ce.NINE?r-Ce.ZERO:(r|Yo)-Ce.LOWER_A+10;this.result=this.result*16+n,this.consumed++,t++}else return this.emitNumericEntity(r,3)}return-1}stateNumericDecimal(e,t){while(t<e.length){let r=e.charCodeAt(t);if(qi(r))this.result=this.result*10+(r-Ce.ZERO),this.consumed++,t++;else return this.emitNumericEntity(r,2)}return-1}emitNumericEntity(e,t){var r;if(this.consumed<=t)return(r=this.errors)===null||r===void 0||r.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(e===Ce.SEMI)this.consumed+=1;else if(this.decodeMode===Dt.Strict)return 0;if(this.emitCodePoint(Ho(this.result),this.consumed),this.errors){if(e!==Ce.SEMI)this.errors.missingSemicolonAfterCharacterReference();this.errors.validateNumericCharacterReference(this.result)}return this.consumed}stateNamedEntity(e,t){let{decodeTree:r}=this,n=r[this.treeIndex],i=(n&$e.VALUE_LENGTH)>>14;while(t<e.length){if(i===0&&(n&$e.FLAG13)!==0){let o=(n&$e.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let a=n&$e.JUMP_TABLE;if(e.charCodeAt(t)!==a)return this.result===0?0:this.emitNotTerminatedNamedEntity();t++,this.excess++,this.runConsumed++}while(this.runConsumed<o){if(t>=e.length)return-1;let a=this.runConsumed-1,l=r[this.treeIndex+1+(a>>1)],c=a%2===0?l&255:l>>8&255;if(e.charCodeAt(t)!==c)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();t++,this.excess++,this.runConsumed++}this.runConsumed=0,this.treeIndex+=1+(o>>1),n=r[this.treeIndex],i=(n&$e.VALUE_LENGTH)>>14}if(t>=e.length)break;let s=e.charCodeAt(t);if(s===Ce.SEMI&&i!==0&&(n&$e.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);if(this.treeIndex=qu(r,n,this.treeIndex+Math.max(1,i),s),this.treeIndex<0)return this.result===0||this.decodeMode===Dt.Attribute&&(i===0||Vu(s))?0:this.emitNotTerminatedNamedEntity();if(n=r[this.treeIndex],i=(n&$e.VALUE_LENGTH)>>14,i!==0){if(s===Ce.SEMI)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);if(this.decodeMode!==Dt.Strict&&(n&$e.FLAG13)===0)this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0}t++,this.excess++}return-1}emitNotTerminatedNamedEntity(){var e;let{result:t,decodeTree:r}=this,n=(r[t]&$e.VALUE_LENGTH)>>14;return this.emitNamedEntityData(t,n,this.consumed),(e=this.errors)===null||e===void 0||e.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(e,t,r){let{decodeTree:n}=this;if(this.emitCodePoint(t===1?n[e]&~($e.VALUE_LENGTH|$e.FLAG13):n[e+1],r),t===3)this.emitCodePoint(n[e+2],r);return r}end(){var e;switch(this.state){case He.NamedEntity:return this.result!==0&&(this.decodeMode!==Dt.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case He.NumericDecimal:return this.emitNumericEntity(0,2);case He.NumericHex:return this.emitNumericEntity(0,3);case He.NumericStart:return(e=this.errors)===null||e===void 0||e.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case He.EntityStart:return 0}}}function zu(e){let t="",r=new es(e,(n)=>t+=jo(n));return function(i,s){let o=0,a=0;while((a=i.indexOf("&",a))>=0){t+=i.slice(o,a),r.startEntity(s);let c=r.write(i,a+1);if(c<0){o=a+r.end();break}o=a+c,a=c===0?o+1:o}let l=t+i.slice(o);return t="",l}}function qu(e,t,r,n){let i=(t&$e.BRANCH_LENGTH)>>7,s=t&$e.JUMP_TABLE;if(i===0)return s!==0&&n===s?r:-1;if(s){let c=n-s;return c<0||c>=i?-1:e[r+c]-1}let o=i+1>>1,a=0,l=i-1;while(a<=l){let c=a+l>>>1,u=c>>1,A=e[r+u]>>(c&1)*8&255;if(A<n)a=c+1;else if(A>n)l=c-1;else return e[r+o+c]}return-1}var ed=zu(Wo);function $r(e){return ed(e,Dt.Strict)}var Qo;(function(e){e[e.XML=0]="XML",e[e.HTML=1]="HTML"})(Qo||(Qo={}));var Jo;(function(e){e[e.UTF8=0]="UTF8",e[e.ASCII=1]="ASCII",e[e.Extensive=2]="Extensive",e[e.Attribute=3]="Attribute",e[e.Text=4]="Text"})(Jo||(Jo={}));import{BaseRenderable as Ld,isTextNodeRenderable as Md,TextNodeRenderable as Fd,TextRenderable as Gd,Yoga as la}from"@opentui/core";import{BoxRenderable as lp,RootRenderable as cp}from"@opentui/core";import{TimeToFirstDrawRenderable as jd}from"@opentui/core";import{createSlotRegistry as Ap}from"@opentui/core";class Xr extends bd{_ctx;constructor(e,t){super(t);this._ctx=e}}class Jn extends Xr{constructor(e,t){super(null,e);if(t==="b"||t==="strong")this.attributes=(this.attributes||0)|ts.BOLD;else if(t==="i"||t==="em")this.attributes=(this.attributes||0)|ts.ITALIC;else if(t==="u")this.attributes=(this.attributes||0)|ts.UNDERLINE}}class ss extends Jn{constructor(e){super(e,"b")}}class os extends Jn{constructor(e){super(e,"i")}}class ra extends Jn{constructor(e){super(e,"u")}}class na extends Xr{constructor(e,t){super(null,t);this.add()}add(){return super.add(`
7
+ `)}}class ia extends Xr{constructor(e,t){let r={...t,link:{url:t.href}};super(null,r)}}var wd={box:ad,text:yd,input:dd,select:gd,textarea:pd,ascii_font:od,tab_select:md,scrollbox:fd,code:ld,diff:cd,line_number:hd,markdown:Ad,image:ud,span:Xr,strong:ss,b:ss,em:os,i:os,u:ra,br:na,a:ia},sa={...wd};function Lt(e){Object.assign(sa,e)}function _d(){return sa}var ds=Po(),wt=()=>{let e=Qr(ds);if(!e)throw Error("No renderer found");return e},vd=(e)=>{let t=wt();Xt(()=>{t.on("resize",e)}),ze(()=>{t.off("resize",e)})},pr=()=>{let e=wt(),[t,r]=Z({width:e.width,height:e.height});return vd((i,s)=>{r({width:i,height:s})}),t},br=(e,t)=>{let n=wt().keyInput;Xt(()=>{if(n.on("keypress",e),t?.release)n.on("keyrelease",e)}),ze(()=>{if(n.off("keypress",e),t?.release)n.off("keyrelease",e)})};var Rd=(e)=>Y(()=>e());function Td({createElement:e,createTextNode:t,createDynamicTextNode:r,createSlotNode:n,isTextNode:i,replaceText:s,insertNode:o,removeNode:a,setProperty:l,getParentNode:c,getFirstChild:u,getNextSibling:d}){function A(_,b,w,C){if(w!==void 0&&!C)C=[];if(typeof b!=="function")return m(_,b,C,w);St((P)=>m(_,b(),P,w),C)}function m(_,b,w,C,P){while(typeof w==="function")w=w();if(b===w)return w;let M=typeof b,B=C!==void 0;if(M==="string"||M==="number"){if(M==="number")b=b.toString();if(B){let k=w[0];if(k&&i(k))s(k,b);else k=r(b);w=p(_,w,C,k)}else if(w!==""&&typeof w==="string")s(u(_),w=b);else p(_,w,C,r(b)),w=b}else if(b==null||M==="boolean")w=p(_,w,C);else if(M==="function")return St(()=>{let k=b();while(typeof k==="function")k=k();w=m(_,k,w,C)}),()=>w;else if(Array.isArray(b)){let k=[];if(g(k,b,P))return St(()=>w=m(_,k,w,C,!0)),()=>w;if(k.length===0){let j=p(_,w,C);if(B)return w=j}else if(Array.isArray(w))if(w.length===0)v(_,k,C);else f(_,w,k);else if(w==null||w==="")v(_,k);else f(_,B&&w||[u(_)],k);w=k}else{if(Array.isArray(w)){if(B)return w=p(_,w,C,b);p(_,w,null,b)}else if(w==null||w===""||!u(_))o(_,b);else y(_,b,u(_));w=b}return w}function g(_,b,w){let C=!1;for(let P=0,M=b.length;P<M;P++){let B=b[P],k;if(B==null||B===!0||B===!1);else if(Array.isArray(B))C=g(_,B)||C;else if((k=typeof B)==="string"||k==="number")_.push(r(B));else if(k==="function")if(w){while(typeof B==="function")B=B();C=g(_,Array.isArray(B)?B:[B])||C}else _.push(B),C=!0;else _.push(B)}return C}function f(_,b,w){let C=w.length,P=b.length,M=C,B=0,k=0,j=d(b[P-1]),X=null;while(B<P||k<M){if(b[B]===w[k]){B++,k++;continue}while(b[P-1]===w[M-1])P--,M--;if(P===B){let K=M<C?k?d(w[k-1]):w[M-k]:j;while(k<M)o(_,w[k++],K)}else if(M===k)while(B<P){if(!X||!X.has(b[B]))a(_,b[B]);B++}else if(b[B]===w[M-1]&&w[k]===b[P-1]){let K=d(b[--P]);o(_,w[k++],d(b[B++])),o(_,w[--M],K),b[P]=w[M]}else{if(!X){X=new Map;let ee=k;while(ee<M)X.set(w[ee],ee++)}let K=X.get(b[B]);if(K!=null)if(k<K&&K<M){let ee=B,Ae=1,z;while(++ee<P&&ee<M){if((z=X.get(b[ee]))==null||z!==K+Ae)break;Ae++}if(Ae>K-k){let ce=b[B];while(k<K)o(_,w[k++],ce)}else y(_,w[k++],b[B++])}else B++;else a(_,b[B++])}}}function p(_,b,w,C){if(w===void 0){let M;while(M=u(_))a(_,M);return C&&o(_,C),C??""}let P=C||n();if(b.length){let M=!1;for(let B=b.length-1;B>=0;B--){let k=b[B];if(P!==k){let j=c(k)===_;if(!M&&!B)j?y(_,P,k):o(_,P,w);else j&&a(_,k)}else M=!0}}else o(_,P,w);return[P]}function v(_,b,w){for(let C=0,P=b.length;C<P;C++)o(_,b[C],w)}function y(_,b,w){o(_,b,w),a(_,w)}function S(_,b,w={},C){if(b||(b={}),!C)St(()=>w.children=m(_,b.children,w.children));return St(()=>b.ref&&b.ref(_)),St(()=>{for(let P in b){if(P==="children"||P==="ref")continue;let M=b[P];if(M===w[P])continue;l(_,P,M,w[P]),w[P]=M}}),w}return{render(_,b){let w;return Zt((C)=>{w=C,A(b,_())}),w},insert:A,spread(_,b,w){if(typeof b==="function")St((C)=>S(_,b(),C,w));else S(_,b,void 0,w)},createElement:e,createTextNode:t,insertNode:o,setProp(_,b,w,C){return l(_,b,w,C),w},mergeProps:Yn,effect:St,memo:Rd,createComponent:Uo,use(_,b,w){return gt(()=>_(b,w))}}}function Bd(e){let t=Td(e);return t.mergeProps=Yn,t}var Qn=new Map;function hs(e){if(!Qn.has(e))Qn.set(e,0);let t=Qn.get(e)+1;return Qn.set(e,t),`${e}-${t}`}var Ke=(...e)=>{if(process.env.DEBUG)console.log("[Reconciler]",...e)};class gr extends kd{static fromString(e,t={}){let r=new gr(t);return r.add(e),r}}var Ge=(e)=>{if(!e)return;return e.id},ls=(e)=>{let t;if(e instanceof aa)t=e.getTextChildren();else t=e.getChildren();return t};function Od(e,t,r){if(Ke("Inserting node:",Ge(t),"into parent:",Ge(e),"with anchor:",Ge(r),t instanceof gr),t instanceof mr)t.parent=e,t=t.getSlotChild(e);if(r&&r instanceof mr)r=r.getSlotChild(e);if(as(t)){if(!(e instanceof aa)&&!as(e))throw Error(`Orphan text error: "${t.toChunks().map((s)=>s.text).join("")}" must have a <text> as a parent: ${e.id} above ${t.id}`)}if(!(e instanceof oa))throw console.error("[INSERT]","Tried to mount a non base renderable"),Error("Tried to mount a non base renderable");if(!r){e.add(t);return}let n=ls(e),i=n.indexOf(r);if(i===-1)Ke("[INSERT]","Could not find anchor",Ge(e),Ge(r),"[children]",...n.map((s)=>s.id));e.add(t,i)}function Pd(e,t){Ke("Removing node:",Ge(t),"from parent:",Ge(e));let r;if(t instanceof mr){r=t;let n=r.getSlotChildForRemoval(e);if(!n){if(r.parent===e)r.parent=null;return}t=n}e.remove(t),r?.didRemoveSlotChild(e,t),process.nextTick(()=>{if(t instanceof oa&&!t.parent){t.destroyRecursively();return}})}function qo(e,t){Ke("Creating text node:",e);let r=hs("text-node");if(typeof e==="number")e=e.toString();return gr.fromString(t?$r(e):e,{id:r})}function Nd(){let e=hs("slot-node");return Ke("Creating slot node",e),new mr(e)}function ea(e){Ke("Getting parent of node:",Ge(e));let t=e.parent??void 0;if(t instanceof Id)t=t.textParent??void 0;let r=t?.parent?.parent?.parent;if(r instanceof xd&&r.content===t)t=r;return t}var{render:Dd,effect:ge,memo:mt,createComponent:Q,createElement:I,createTextNode:_e,insertNode:R,insert:G,spread:np,setProp:h,mergeProps:ip,use:sp}=Bd({createElement(e){Ke("Creating element:",e);let t=hs(e),r=Qr(ds);if(!r)throw Error("No renderer found");let n=_d();if(!n[e])throw Error(`[Reconciler] Unknown component type: ${e}`);let i=new n[e](r,{id:t});if(i instanceof Zo)ze(()=>{i.source=void 0});return Ke("Element created with id:",t),i},createTextNode:(e)=>qo(e,!0),createDynamicTextNode:(e)=>qo(e,!1),createSlotNode:Nd,replaceText(e,t){if(Ke("Replacing text:",t,"in node:",Ge(e)),!(e instanceof gr))return;e.replace(t,0)},setProperty(e,t,r,n){if(t.startsWith("on:")){let i=t.slice(3);if(r)e.on(i,r);if(n)e.off(i,n);return}if(as(e)){if(t==="href"){e.link={url:r};return}if(t==="style"){e.attributes|=Cd(r),e.fg=r.fg?Xo(r.fg):e.fg,e.bg=r.bg?Xo(r.bg):e.bg;return}return}switch(t){case"id":Ke("Id mapped",e.id,"=",r),e[t]=r;break;case"focused":if(!(e instanceof Sd))return;if(r)e.focus();else e.blur();break;case"onChange":let i=void 0;if(e instanceof Vo)i=ns.SELECTION_CHANGED;else if(e instanceof zo)i=is.SELECTION_CHANGED;else if(e instanceof rs)i=Zr.CHANGE;if(!i)break;if(r)e.on(i,r);if(n)e.off(i,n);break;case"onInput":if(e instanceof rs){if(r)e.on(Zr.INPUT,r);if(n)e.off(Zr.INPUT,n)}break;case"onSubmit":if(e instanceof rs){if(r)e.on(Zr.ENTER,r);if(n)e.off(Zr.ENTER,n)}else e[t]=r;break;case"onSelect":if(e instanceof Vo){if(r)e.on(ns.ITEM_SELECTED,r);if(n)e.off(ns.ITEM_SELECTED,n)}else if(e instanceof zo){if(r)e.on(is.ITEM_SELECTED,r);if(n)e.off(is.ITEM_SELECTED,n)}break;case"style":let s=r??{},o=n??{};if(Ed(e)&&o.selectionOccupancy&&!s.selectionOccupancy)e.selectionOccupancy=void 0;if(e instanceof Zo)for(let a in o){if(Object.prototype.hasOwnProperty.call(s,a))continue;if(a!=="fit"&&a!=="protocol")continue;e[a]=void 0}for(let a in s){let l=s[a];if(l===o[a])continue;e[a]=l}break;case"text":case"content":{let a=typeof r==="string"?r:Array.isArray(r)?r.join(""):`${r}`;e[t]=a;break}default:e[t]=r}},isTextNode(e){return e instanceof gr},insertNode:Od,removeNode:Pd,getParentNode:ea,getFirstChild(e){Ke("Getting first child of node:",Ge(e));let t=ls(e)[0];if(!t){Ke("No first child found for node:",Ge(e));return}return Ke("First child found:",Ge(t),"for node:",Ge(e)),t},getNextSibling(e){Ke("Getting next sibling of node:",Ge(e));let t=ea(e);if(!t){Ke("No parent found for node:",Ge(e));return}if(e instanceof mr){let s=e.getSlotChildForRemoval(t);if(s)e=s}let r=ls(t),n=r.indexOf(e);if(n===-1||n===r.length-1){Ke("No next sibling found for node:",Ge(e));return}let i=r[n+1];if(!i){Ke("Next sibling is null for node:",Ge(e));return}return Ke("Next sibling found:",Ge(i),"for node:",Ge(e)),i}});function ta(e){return e?.getLayoutNode?.()?.constructor}function Ud(e){return e?.create?.()??la.default.Node.create()}class As extends Ld{constructor(e){super({id:e})}add(e,t){throw Error("Can't add children on an Slot renderable")}getChildren(){return[]}remove(e){}insertBefore(e,t){throw Error("Can't add children on an Slot renderable")}getRenderable(e){return}getChildrenCount(){return 0}requestRender(){}findDescendantById(e){return}}class cs extends Fd{slotParent;destroyed=!1;constructor(e,t){super({id:e});this._visible=!1,this.slotParent=t}detachFromSlot(){this.slotParent=void 0}disposeWithoutSlotCascade(){if(this.destroyed)return;this.destroyed=!0,this.detachFromSlot()}destroy(){if(this.destroyed)return;this.destroyed=!0;let e=this.slotParent;this.slotParent=void 0,e?.destroy(),super.destroy()}}class us extends As{yogaNode;slotParent;destroyed=!1;yogaNodeConstructor;yogaNodeFreed=!1;constructor(e,t,r){super(e);this._visible=!1,this.slotParent=t,this.yogaNodeConstructor=ta(r),this.yogaNode=Ud(this.yogaNodeConstructor),this.yogaNode.setDisplay(la.Display.None)}getLayoutNode(){return this.yogaNode}updateFromLayout(){}updateLayout(){}onRemove(){}isCompatibleWith(e){return this.yogaNodeConstructor===ta(e)}detachFromSlot(){this.slotParent=void 0}freeYogaNode(){if(this.yogaNodeFreed)return;this.yogaNodeFreed=!0;try{this.yogaNode.free()}catch{}}disposeWithoutSlotCascade(){if(this.destroyed)return;this.destroyed=!0,this.detachFromSlot(),this.freeYogaNode()}destroy(){if(this.destroyed)return;this.destroyed=!0;let e=this.slotParent;this.slotParent=void 0,this.freeYogaNode(),e?.destroy()}}class mr extends As{destroyed=!1;layoutNodesByParent=new Map;textNodesByParent=new Map;layoutNodeCount=0;textNodeCount=0;constructor(e){super(e);this._visible=!1}get layoutNode(){return this.getCurrentSlotChild(this.layoutNodesByParent)}get textNode(){return this.getCurrentSlotChild(this.textNodesByParent)}isTextSlotParent(e){return Md(e)||e instanceof Gd}getCurrentSlotChild(e){for(let t of e.values())if(t.parent)return t;return e.values().next().value}getTextNodeForParent(e){let t=this.textNodesByParent.get(e);if(t)return t;for(let[r,n]of this.textNodesByParent){if(n.parent!==e)continue;return this.textNodesByParent.delete(r),this.textNodesByParent.set(e,n),n}}getLayoutNodeForParent(e){let t=this.layoutNodesByParent.get(e);if(t)return t;for(let[r,n]of this.layoutNodesByParent){if(n.parent!==e)continue;return this.layoutNodesByParent.delete(r),this.layoutNodesByParent.set(e,n),n}}takeReusableTextNode(e){for(let[t,r]of this.textNodesByParent){if(r.parent)continue;return this.textNodesByParent.delete(t),this.textNodesByParent.set(e,r),r}}takeReusableLayoutNode(e){for(let[t,r]of this.layoutNodesByParent){if(r.parent)continue;if(!r.isCompatibleWith(e))continue;return this.layoutNodesByParent.delete(t),this.layoutNodesByParent.set(e,r),r}}disposeDetachedTextNodes(){for(let[e,t]of this.textNodesByParent){if(t.parent)continue;this.textNodesByParent.delete(e),t.disposeWithoutSlotCascade()}}disposeDetachedIncompatibleLayoutNodes(e){for(let[t,r]of this.layoutNodesByParent){if(r.parent||r.isCompatibleWith(e))continue;this.layoutNodesByParent.delete(t),r.disposeWithoutSlotCascade()}}getAttachedSlotParent(e){for(let t of this.textNodesByParent.values())if(t!==e&&t.parent)return t.parent;for(let t of this.layoutNodesByParent.values())if(t!==e&&t.parent)return t.parent;return null}hasOtherAttachedSlotChildren(e){return this.getAttachedSlotParent(e)!==null}getSlotChild(e){if(this.isTextSlotParent(e)){let i=this.getTextNodeForParent(e);if(i)return i;let s=this.takeReusableTextNode(e);if(s)return s;this.disposeDetachedIncompatibleLayoutNodes(e);let o=new cs(`slot-text-${this.id}-${++this.textNodeCount}`,this);return this.textNodesByParent.set(e,o),o}let t=this.getLayoutNodeForParent(e);if(t)return t;let r=this.takeReusableLayoutNode(e);if(r)return r;this.disposeDetachedTextNodes(),this.disposeDetachedIncompatibleLayoutNodes(e);let n=new us(`slot-layout-${this.id}-${++this.layoutNodeCount}`,this,e);return this.layoutNodesByParent.set(e,n),n}getSlotChildForRemoval(e){if(this.isTextSlotParent(e))return this.getTextNodeForParent(e);return this.getLayoutNodeForParent(e)}didRemoveSlotChild(e,t){let r=this.hasOtherAttachedSlotChildren(t);if(r&&t instanceof cs&&this.getTextNodeForParent(e)===t)this.textNodesByParent.delete(e),t.disposeWithoutSlotCascade();if(r&&t instanceof us&&this.getLayoutNodeForParent(e)===t)this.layoutNodesByParent.delete(e),t.disposeWithoutSlotCascade();if(this.parent===e)this.parent=this.getAttachedSlotParent(t)}destroy(){if(this.destroyed)return;this.destroyed=!0;let e=new Set(this.layoutNodesByParent.values());this.layoutNodesByParent.clear();for(let r of e)r.destroy();let t=new Set(this.textNodesByParent.values());this.textNodesByParent.clear();for(let r of t)r.destroy()}}Lt({time_to_first_draw:jd});var Hd=(e,t)=>{let r,n=!1,i=!1,s=!0,o=!1,a=e.destroy.bind(e),l=()=>{if(i)return;if(!r){n=!0;return}i=!0,r()};e.once("destroy",l),e.destroy=()=>{if(s){o=!0;return}a()};try{r=Dd(()=>Q(ds.Provider,{get value(){return e},get children(){return Q(t,{})}}),e.root)}finally{s=!1,e.destroy=a}if(n)l();if(o)a()},fs=async(e,t={})=>{let r=t instanceof nd?t:await id({...t,onDestroy:()=>{t.onDestroy?.()}});sd.attach(r),Hd(r,e)};var ca={tier0:32,tier1:64,tier2:64};var yr=1;function ut(e){if(typeof e!=="number"||!Number.isFinite(e))return 1;return Math.max(1,Math.min(8,Math.round(e)))}function gs(e,t){let r=ut(e);return{primary:r,mirrored:t?r-1:0}}var ms=64;var yp=ms*ms;var _p=new RegExp(["asshole","bastard","bitch","bullshit","cunt","dildo","faggot","fuck","goddamn","jackass","jerkoff","kike","nigga","nigger","penis","porn","prick","pussy","retard","scumbag","shit","slut","tits","twat","vagina","whore","wanker"].join("|"));var ps={version:1,linkedRoles:{leftLegFoot:"leftLeg",rightLegFoot:"rightLeg",leftArmFoot:"leftArm",rightArmFoot:"rightArm",leftSleeve:"leftArm",rightSleeve:"rightArm"},clips:{idle:{duration:2.4,loop:!0,model:{positionY:[[0,0.004],[0.25,0.008],[0.5,0.004],[0.75,0],[1,0.004]]},roles:{leftArm:{positionZ:[[0,0],[0.25,0.006],[0.5,0],[0.75,-0.006],[1,0]]},rightArm:{positionZ:[[0,0],[0.25,-0.006],[0.5,0],[0.75,0.006],[1,0]]}}},walk:{duration:0.9,loop:!0,model:{positionY:[[0,0.015],[0.25,0.06],[0.5,0.015],[0.75,0.06],[1,0.015]]},roles:{leftLeg:{positionZ:[[0,0],[0.25,0.055],[0.5,0],[0.75,-0.055],[1,0]]},rightLeg:{positionZ:[[0,0],[0.25,-0.055],[0.5,0],[0.75,0.055],[1,0]]},leftArm:{positionZ:[[0,0],[0.25,-0.055],[0.5,0],[0.75,0.055],[1,0]]},rightArm:{positionZ:[[0,0],[0.25,0.055],[0.5,0],[0.75,-0.055],[1,0]]}}},jump:{duration:0.78,loop:!1,model:{positionY:[[0,0],[0.76,0],[0.9,-0.055],[0.98,0],[1,0]],rotationX:[[0,0],[0.2,0.04],[0.58,0.14],[0.82,0.09],[1,0]]},roles:{leftLeg:{positionY:[[0,0],[0.18,-0.008],[0.48,0.035],[0.72,0.026],[0.88,-0.006],[1,0]]},rightLeg:{positionY:[[0,0],[0.18,-0.007],[0.48,0.032],[0.72,0.024],[0.88,-0.007],[1,0]]},leftArm:{positionZ:[[0,0],[0.25,-0.025],[0.58,0.05],[0.82,0.02],[1,0]],rotationX:[[0,0],[0.25,-0.3],[0.58,0.55],[0.82,0.25],[1,0]],rotationZ:[[0,0],[0.25,0.06],[0.58,0.09],[0.82,0.035],[1,0]]},rightArm:{positionZ:[[0,0],[0.25,0.03],[0.58,-0.045],[0.82,-0.018],[1,0]],rotationX:[[0,0],[0.25,0.35],[0.58,-0.5],[0.82,-0.22],[1,0]],rotationZ:[[0,0],[0.25,-0.07],[0.58,-0.08],[0.82,-0.035],[1,0]]}}},frontFlip:{duration:0.8,loop:!1,model:{rotationX:[[0,0],[0.08,0.25],[0.2,1.15],[0.35,2.35],[0.5,3.1416],[0.65,3.93],[0.8,5.13],[0.92,6.03],[1,6.2832]],positionY:[[0,0],[0.08,0.017],[0.2,0.326],[0.35,0.937],[0.5,1.1],[0.65,0.935],[0.8,0.327],[0.92,0.017],[1,0]],positionZ:[[0,0],[0.08,-0.136],[0.2,-0.502],[0.35,-0.391],[0.5,0],[0.65,0.393],[0.8,0.503],[0.92,0.138],[1,0]]},roles:{leftArm:{rotationX:[[0,0],[0.15,-1.25],[0.5,0.85],[0.85,0.25],[1,0]]},rightArm:{rotationX:[[0,0],[0.15,-1.15],[0.5,0.8],[0.85,0.22],[1,0]]},leftLeg:{positionY:[[0,0],[0.3,0.05],[0.55,0.075],[0.85,0.01],[1,0]]},rightLeg:{positionY:[[0,0],[0.3,0.048],[0.55,0.07],[0.85,0.012],[1,0]]}}},run:{duration:0.55,loop:!0,model:{positionY:[[0,0.02],[0.25,0.085],[0.5,0.02],[0.75,0.085],[1,0.02]]},roles:{leftLeg:{positionY:[[0,0],[0.25,0.035],[0.5,0],[0.75,0],[1,0]],positionZ:[[0,0],[0.25,0.085],[0.5,0],[0.75,-0.085],[1,0]],rotationX:[[0,0],[0.25,-0.34],[0.5,0],[0.75,0.34],[1,0]]},rightLeg:{positionY:[[0,0],[0.25,0],[0.5,0],[0.75,0.035],[1,0]],positionZ:[[0,0],[0.25,-0.085],[0.5,0],[0.75,0.085],[1,0]],rotationX:[[0,0],[0.25,0.34],[0.5,0],[0.75,-0.34],[1,0]]},leftArm:{positionY:[[0,0],[0.25,0],[0.5,0],[0.75,0.03],[1,0]],positionZ:[[0,0],[0.25,-0.072],[0.5,0],[0.75,0.072],[1,0]],rotationX:[[0,0],[0.25,0.3],[0.5,0],[0.75,-0.3],[1,0]]},rightArm:{positionY:[[0,0],[0.25,0.03],[0.5,0],[0.75,0],[1,0]],positionZ:[[0,0],[0.25,0.072],[0.5,0],[0.75,-0.072],[1,0]],rotationX:[[0,0],[0.25,-0.3],[0.5,0],[0.75,0.3],[1,0]]}}},swim:{duration:1.2,loop:!0,model:{positionY:[[0,0.018],[0.25,0.04],[0.5,0.018],[0.75,0],[1,0.018]],rotationX:[[0,0.1],[0.25,0.14],[0.5,0.1],[0.75,0.06],[1,0.1]]},roles:{leftArm:{positionY:[[0,0.045],[0.25,0.02],[0.5,0],[0.75,0.018],[1,0.045]],positionZ:[[0,0],[0.25,-0.055],[0.5,0],[0.75,0.04],[1,0]],rotationX:[[0,-0.9],[0.25,-0.15],[0.5,0.75],[0.75,0.15],[1,-0.9]],rotationZ:[[0,0.18],[0.25,0.34],[0.5,0.18],[0.75,0.08],[1,0.18]]},rightArm:{positionY:[[0,0],[0.25,0.018],[0.5,0.045],[0.75,0.02],[1,0]],positionZ:[[0,0],[0.25,0.04],[0.5,0],[0.75,-0.055],[1,0]],rotationX:[[0,0.75],[0.25,0.15],[0.5,-0.9],[0.75,-0.15],[1,0.75]],rotationZ:[[0,-0.18],[0.25,-0.08],[0.5,-0.18],[0.75,-0.34],[1,-0.18]]},leftLeg:{positionY:[[0,0.018],[0.25,0.035],[0.5,0],[0.75,0.012],[1,0.018]],positionZ:[[0,-0.045],[0.25,0],[0.5,0.045],[0.75,0],[1,-0.045]],rotationX:[[0,0.24],[0.25,0],[0.5,-0.24],[0.75,0],[1,0.24]]},rightLeg:{positionY:[[0,0],[0.25,0.012],[0.5,0.018],[0.75,0.035],[1,0]],positionZ:[[0,0.045],[0.25,0],[0.5,-0.045],[0.75,0],[1,0.045]],rotationX:[[0,-0.24],[0.25,0],[0.5,0.24],[0.75,0],[1,-0.24]]}}},horseWalk:{duration:0.9,loop:!0,model:{positionY:[[0,0.008],[0.125,0.016],[0.25,0.008],[0.375,0.016],[0.5,0.008],[0.625,0.016],[0.75,0.008],[0.875,0.016],[1,0.008]],rotationX:[[0,0],[0.125,0.012],[0.25,0],[0.375,-0.012],[0.5,0],[0.625,0.012],[0.75,0],[0.875,-0.012],[1,0]]},roles:{leftLeg:{positionY:[[0,0],[0.125,0],[0.25,0],[0.375,0],[0.5,0],[0.625,0.025],[0.75,0.055],[0.875,0.035],[1,0]],positionZ:[[0,0.025],[0.125,0.012],[0.25,-0.008],[0.375,-0.022],[0.5,-0.03],[0.625,-0.012],[0.75,0.012],[0.875,0.025],[1,0.025]],rotationX:[[0,-0.3],[0.125,-0.16],[0.25,0.03],[0.375,0.2],[0.5,0.28],[0.625,0.12],[0.75,-0.1],[0.875,-0.26],[1,-0.3]]},leftArm:{positionY:[[0,0.055],[0.125,0.035],[0.25,0],[0.375,0],[0.5,0],[0.625,0],[0.75,0],[0.875,0.025],[1,0.055]],positionZ:[[0,0.012],[0.125,0.025],[0.25,0.025],[0.375,0.012],[0.5,-0.008],[0.625,-0.022],[0.75,-0.03],[0.875,-0.012],[1,0.012]],rotationX:[[0,-0.1],[0.125,-0.26],[0.25,-0.3],[0.375,-0.16],[0.5,0.03],[0.625,0.2],[0.75,0.28],[0.875,0.12],[1,-0.1]]},rightLeg:{positionY:[[0,0],[0.125,0.025],[0.25,0.055],[0.375,0.035],[0.5,0],[0.625,0],[0.75,0],[0.875,0],[1,0]],positionZ:[[0,-0.03],[0.125,-0.012],[0.25,0.012],[0.375,0.025],[0.5,0.025],[0.625,0.012],[0.75,-0.008],[0.875,-0.022],[1,-0.03]],rotationX:[[0,0.28],[0.125,0.12],[0.25,-0.1],[0.375,-0.26],[0.5,-0.3],[0.625,-0.16],[0.75,0.03],[0.875,0.2],[1,0.28]]},rightArm:{positionY:[[0,0],[0.125,0],[0.25,0],[0.375,0.025],[0.5,0.055],[0.625,0.035],[0.75,0],[0.875,0],[1,0]],positionZ:[[0,-0.008],[0.125,-0.022],[0.25,-0.03],[0.375,-0.012],[0.5,0.012],[0.625,0.025],[0.75,0.025],[0.875,0.012],[1,-0.008]],rotationX:[[0,0.03],[0.125,0.2],[0.25,0.28],[0.375,0.12],[0.5,-0.1],[0.625,-0.26],[0.75,-0.3],[0.875,-0.16],[1,0.03]]}}},horseRun:{duration:0.55,loop:!0,model:{positionY:[[0,0.087361],[0.125,0.094508],[0.25,0.078511],[0.375,0.048743],[0.5,0.022639],[0.625,0.015492],[0.75,0.031489],[0.875,0.061257],[1,0.087361]],rotationX:[[0,0.013907],[0.125,-0.038677],[0.25,-0.068605],[0.375,-0.058344],[0.5,-0.013907],[0.625,0.038677],[0.75,0.068605],[0.875,0.058344],[1,0.013907]]},roles:{leftArm:{positionY:[[0,0],[0.125,0.060104],[0.25,0.085],[0.375,0.060104],[0.5,0],[0.625,0],[0.75,0],[0.875,0],[1,0]],positionZ:[[0,0],[0.125,0.120208],[0.25,0.17],[0.375,0.120208],[0.5,0],[0.625,-0.120208],[0.75,-0.17],[0.875,-0.120208],[1,0]],rotationX:[[0,0],[0.125,-0.240416],[0.25,-0.34],[0.375,-0.240416],[0.5,0],[0.625,0.240416],[0.75,0.34],[0.875,0.240416],[1,0]]},rightArm:{positionY:[[0,0],[0.125,0.027977],[0.25,0.076538],[0.375,0.080264],[0.5,0.036972],[0.625,0],[0.75,0],[0.875,0],[1,0]],positionZ:[[0,-0.073944],[0.125,0.055955],[0.25,0.153076],[0.375,0.160527],[0.5,0.073944],[0.625,-0.055955],[0.75,-0.153076],[0.875,-0.160527],[1,-0.073944]],rotationX:[[0,0.147888],[0.125,-0.111909],[0.25,-0.306152],[0.375,-0.321055],[0.5,-0.147888],[0.625,0.111909],[0.75,0.306152],[0.875,0.321055],[1,0.147888]]},leftLeg:{positionY:[[0,0.033275],[0.125,0],[0.25,0],[0.375,0],[0.5,0],[0.625,0.02518],[0.75,0.068884],[0.875,0.072237],[1,0.033275]],positionZ:[[0,0.077641],[0.125,-0.058752],[0.25,-0.16073],[0.375,-0.168554],[0.5,-0.077641],[0.625,0.058752],[0.75,0.16073],[0.875,0.168554],[1,0.077641]],rotationX:[[0,-0.125705],[0.125,0.095123],[0.25,0.260229],[0.375,0.272897],[0.5,0.125705],[0.625,-0.095123],[0.75,-0.260229],[0.875,-0.272897],[1,-0.125705]]},rightLeg:{positionY:[[0,0],[0.125,0],[0.25,0],[0.375,0],[0.5,0],[0.625,0.054094],[0.75,0.0765],[0.875,0.054094],[1,0]],positionZ:[[0,0],[0.125,-0.126219],[0.25,-0.1785],[0.375,-0.126219],[0.5,0],[0.625,0.126219],[0.75,0.1785],[0.875,0.126219],[1,0]],rotationX:[[0,0],[0.125,0.204354],[0.25,0.289],[0.375,0.204354],[0.5,0],[0.625,-0.204354],[0.75,-0.289],[0.875,-0.204354],[1,0]]}}},wave:{duration:2,loop:!1,model:{positionY:[[0,0],[1,0]]},roles:{leftArm:{positionY:[[0,0],[0.5,-0.08],[1,0]],rotationX:[[0,0],[0.5,-1.5],[1,0]]}}},look:{duration:4.9,loop:!1,model:{rotationY:[[0,0],[0.125,0.07],[0.25,0],[0.375,-0.16],[0.5,0],[0.625,0.16],[0.75,0],[0.875,-0.07],[1,0]]},roles:{leftArm:{positionZ:[[0,0],[0.125,0.012],[0.25,0],[0.375,-0.025],[0.5,0],[0.625,0.025],[0.75,0],[0.875,-0.012],[1,0]]},rightArm:{positionZ:[[0,0],[0.125,-0.012],[0.25,0],[0.375,0.025],[0.5,0],[0.625,-0.025],[0.75,0],[0.875,0.012],[1,0]]}}},sit:{duration:6.2,loop:!1,model:{positionY:[[0,0],[0.25,-0.042426],[0.5,-0.06],[0.75,-0.042426],[1,0]]},roles:{leftLeg:{positionY:[[0,0],[0.25,-0.024749],[0.5,-0.035],[0.75,-0.024749],[1,0]],positionZ:[[0,0],[0.25,0.070711],[0.5,0.1],[0.75,0.070711],[1,0]]},rightLeg:{positionY:[[0,0],[0.25,-0.024749],[0.5,-0.035],[0.75,-0.024749],[1,0]],positionZ:[[0,0],[0.25,0.070711],[0.5,0.1],[0.75,0.070711],[1,0]]},leftArm:{positionZ:[[0,0],[0.25,-0.021213],[0.5,-0.03],[0.75,-0.021213],[1,0]]},rightArm:{positionZ:[[0,0],[0.25,-0.021213],[0.5,-0.03],[0.75,-0.021213],[1,0]]}}}}};var Yd=["positionX","positionY","positionZ","rotationX","rotationY","rotationZ","scaleX","scaleY","scaleZ"];var Qd=new Set(Yd);function wr(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function ua(e,t){if(!wr(e))return[`${t} must be an object`];let r=[];for(let[n,i]of Object.entries(e)){if(!Qd.has(n)){r.push(`${t} uses unknown property ${n}`);continue}if(!Array.isArray(i)||i.length<2){r.push(`${t}.${n} must contain at least two keyframes`);continue}let s=-1;for(let[o,a]of i.entries()){if(!Array.isArray(a)||a.length!==2||!a.every((c)=>typeof c==="number"&&Number.isFinite(c))){r.push(`${t}.${n}[${o}] is invalid`);continue}let l=a[0];if(l<0||l>1||l<=s)r.push(`${t}.${n} keyframe times must increase from 0 to 1`);s=l}if(i[0]?.[0]!==0||i.at(-1)?.[0]!==1)r.push(`${t}.${n} must start at 0 and end at 1`)}return r}function ha(e){if(!wr(e))return["Animation catalog must be an object"];let t=[];if(e.version!==1)t.push("Animation catalog version must be 1");if(!wr(e.linkedRoles))t.push("Animation catalog linkedRoles must be an object");else if(Object.values(e.linkedRoles).some((r)=>typeof r!=="string"))t.push("Animation catalog linked roles must target role names");if(!wr(e.clips))return t.push("Animation catalog clips must be an object"),t;for(let[r,n]of Object.entries(e.clips)){let i=`Clip ${r}`;if(!wr(n)){t.push(`${i} must be an object`);continue}if(typeof n.duration!=="number"||!Number.isFinite(n.duration)||n.duration<=0)t.push(`${i} must have a positive duration`);if(typeof n.loop!=="boolean")t.push(`${i} must declare whether it loops`);if(n.model===void 0)t.push(`${i} must include a model animation track`);else t.push(...ua(n.model,`${i}.model`));if(n.roles!==void 0)if(!wr(n.roles))t.push(`${i}.roles must be an object`);else for(let[s,o]of Object.entries(n.roles))t.push(...ua(o,`${i}.roles.${s}`))}return t}var da=ha(ps);if(da.length>0)throw Error(`Invalid character animation catalog:
8
8
  ${da.join(`
9
- `)}`);var Jd=ps,$d=["jump","frontFlip","horseWalk","swim"],Zd=Object.keys(Jd.clips).filter((e)=>!$d.includes(e));var fa=["top","side","bottom"],ga=["left","right","bottom","top","back","front"],ma=["humanoid","female","pig","robot","dog","cat","horse","bird","octopus"],$n=["leftLeg","rightLeg","leftArm","rightArm","leftLegFoot","rightLegFoot","leftArmFoot","rightArmFoot","leftSleeve","rightSleeve"],pa=["leftWing","rightWing","carried","muzzle"];var Pp=new Set(ma),Np=new Set([...$n,...pa]),Dp=new Set(fa),Lp=new Set(ga),Mp=["cree","per"].join(""),Vr=["H","oof"].join(""),Fp=new Map([[`leftLeg${Vr}`,"leftLegFoot"],[`rightLeg${Vr}`,"rightLegFoot"],[`leftArm${Vr}`,"leftArmFoot"],[`rightArm${Vr}`,"rightArmFoot"]]),Gp=["horse",Vr].join("");var zd=Math.PI*2;var Kp=new Set($n);var ba={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],transparent:[0,0,0,0],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};function ya(e){let t=new Set;for(let r of e)for(let n of r)if(n.active&&n.color)t.add(n.color);return t}function bs(e,t){let r=ya(t);return e.filter((n)=>r.has(n))}var eh=/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,th=/^([+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?)(deg|grad|rad|turn)?$/i,Xn=(e,t,r)=>Math.max(t,Math.min(r,e));function Vn(e){let t=e.trim(),r=t.endsWith("%"),n=r?t.slice(0,-1):t;if(!eh.test(n))return null;let i=Number(n);return Number.isFinite(i)?{value:i,percentage:r}:null}function _a(e){if(e===null)return 1;let t=Vn(e);if(!t)return null;return Xn(t.percentage?t.value/100:t.value,0,1)}function va(e,t){let r=/^([a-z]+)\(\s*(.*?)\s*\)$/i.exec(e.trim());if(!r||!t.includes(r[1].toLowerCase()))return null;let n=r[2];if(n.includes(",")){let a=n.split("/");if(a.length>2)return null;let l=a[0].split(",").map((c)=>c.trim());if(l.some((c)=>!c))return null;if(a.length===2){let c=a[1].trim();return l.length===3&&c?{channels:l,alpha:c}:null}return l.length===3||l.length===4?{channels:l.slice(0,3),alpha:l[3]??null}:null}let i=n.split("/");if(i.length>2)return null;let s=i[0].trim().split(/\s+/),o=i.length===2?i[1].trim():null;return s.length===3&&(i.length===1||o)?{channels:s,alpha:o}:null}function rh(e){let t=th.exec(e.trim());if(!t)return null;let r=Number(t[1]);if(!Number.isFinite(r))return null;switch(t[2]?.toLowerCase()){case"grad":return r*0.9;case"rad":return r*180/Math.PI;case"turn":return r*360;default:return r}}function zr(e){let t=va(e,["hsl","hsla"]);if(!t)return null;let r=rh(t.channels[0]),n=Vn(t.channels[1]),i=Vn(t.channels[2]),s=_a(t.alpha);if(r===null||!n||!i||s===null)return null;return[r,Xn(n.value,0,100),Xn(i.value,0,100),s]}function Ca(e,t,r){let n=t/100,i=r/100,s=(1-Math.abs(2*i-1))*n,o=(e%360+360)%360/60,a=s*(1-Math.abs(o%2-1)),l=0,c=0,u=0;if(o<1)[l,c,u]=[s,a,0];else if(o<2)[l,c,u]=[a,s,0];else if(o<3)[l,c,u]=[0,s,a];else if(o<4)[l,c,u]=[0,a,s];else if(o<5)[l,c,u]=[a,0,s];else[l,c,u]=[s,0,a];let d=i-s/2;return{r:Math.round((l+d)*255),g:Math.round((c+d)*255),b:Math.round((u+d)*255)}}function Ea({r:e,g:t,b:r}){let n=e/255,i=t/255,s=r/255,o=Math.max(n,i,s),a=Math.min(n,i,s),l=o-a,c=(o+a)/2;if(l===0)return{h:0,s:0,l:c*100};let u;if(o===n)u=((i-s)/l+(i<s?6:0))*60;else if(o===i)u=((s-n)/l+2)*60;else u=((n-i)/l+4)*60;return{h:u,s:l/(1-Math.abs(2*c-1))*100,l:c*100}}function qr({r:e,g:t,b:r}){let n=(i)=>Math.round(Math.max(0,Math.min(255,i))).toString(16).padStart(2,"0");return`#${n(e)}${n(t)}${n(r)}`}var wa=(e,t)=>{let r=Math.max(-100,Math.min(100,t))/100;return r>=0?e+(100-e)*r:e*(1+r)};var Zn=(e)=>{let t=Math.round(e*1000)/1000;return String(Object.is(t,-0)?0:t)};function ys(e,t,r){if(t===0&&r===0)return e;let n=zr(e),i=n?null:zt(e);if(!n&&!i)return e;let s=n?{h:n[0],s:n[1],l:n[2]}:Ea(i),o=s.s===0?0:wa(s.s,t),a=wa(s.l,r),l=n?.[3]??i?.a??1;return`hsla(${Zn(s.h)}, ${Zn(o)}%, ${Zn(a)}%, ${Zn(l)})`}function nt(e){return typeof e==="number"&&Number.isInteger(e)&&e>=-100&&e<=100?e:0}function en(e,t,r){let n=nt(t),i=nt(r);if(n===0&&i===0)return e;return e.map((s)=>ys(s,n,i))}function Vt(e,t,r){if(t===0&&r===0)return e;let n=new Map,i=(s)=>{let o=n.get(s);if(o===void 0)o=ys(s,t,r),n.set(s,o);return o};return e.map((s)=>s.map((o)=>({...o,color:o.color===null?null:i(o.color)})))}function nh(e){let t=/^#([\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/i.exec(e.trim());if(!t)return null;let r=t[1],n=r.length<=4?[...r].map((i)=>i+i).join(""):r;return{r:Number.parseInt(n.slice(0,2),16),g:Number.parseInt(n.slice(2,4),16),b:Number.parseInt(n.slice(4,6),16),a:n.length===8?Number.parseInt(n.slice(6,8),16)/255:1}}function ih(e){let t=va(e,["rgb","rgba"]);if(!t)return null;let r=t.channels.map(Vn),n=_a(t.alpha);if(r.some((l)=>l===null)||n===null)return null;let[i,s,o]=r,a=(l)=>Xn(l.percentage?l.value/100*255:l.value,0,255);return{r:a(i),g:a(s),b:a(o),a:n}}function zt(e){let t=e.trim(),r=nh(t);if(r)return r;let n=zr(t);if(n)return{...Ca(n[0],n[1],n[2]),a:n[3]};let i=ih(t);if(i)return i;let s=ba[t.toLowerCase()];if(!s)return null;return{r:s[0],g:s[1],b:s[2],a:s[3]??1}}function ws(e){let t=zt(e);return t?{r:t.r,g:t.g,b:t.b}:null}var zn=1;var _s=30;function tn(e){return e.trim().slice(0,30)}var qn=0.16,vs=0.1;var rn=0.15,Cs=0.12;var nn=0.25;function _r(...e){let t=Math.max(0,Math.min(...e));return Math.max(0.22,t*0.5)}var Se=64,Es=Se*Se;var Ss=64,Ia=512,g0=Ia*Ia,ch=128,Ra=65535,uh=20,dh=/^#(?:[\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/i,hh=/^[a-z]+$/i,Ah=/^(?:rgb|rgba|hsl|hsla)\([\d\s.,%+\-/e]*(?:(?:deg|grad|rad|turn)[\d\s.,%+\-/e]*)?\)$/i;function Ta(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function vr(e,t,r){return Number.isInteger(e)&&Number(e)>=t&&Number(e)<=r}function pt(e){if(typeof e!=="string"||e.length===0||e.length>ch)return!1;return dh.test(e)||hh.test(e)||Ah.test(e)}function fh(e){return Ta(e)&&e.v===2}function xa(e,t){return e===void 0||Array.isArray(e)&&e.length<=t&&e.every((r)=>vr(r,0,t-1))}function ka(e,t,r){return e===void 0||Array.isArray(e)&&e.length===t&&e.every((n)=>vr(n,0,r))}function gh(e,t,r){let{w:n,h:i,palette:s,cells:o,activeNoColor:a,tiles:l,depths:c,mirrorZ:u}=e;if(!vr(n,0,t)||!vr(i,0,t))return!1;let d=n*i;return d<=r&&Array.isArray(s)&&s.length<=d&&s.every(pt)&&Array.isArray(o)&&o.length===d&&o.every((A)=>vr(A,0,s.length))&&xa(a,d)&&ka(l,d,Ra+1)&&ka(c,d,uh)&&xa(u,d)}function mh(e){if(!Ta(e)||typeof e.active!=="boolean")return!1;if(e.color!==null&&!pt(e.color))return!1;if(e.tileIndex!==void 0&&e.tileIndex!==null&&!vr(e.tileIndex,0,Ra))return!1;if(e.depth!==void 0&&e.depth!==null&&!Number.isFinite(e.depth))return!1;return e.mirrorZ===void 0||e.mirrorZ===null||typeof e.mirrorZ==="boolean"}function ph(e){if(e.length>Se)return null;let t=0,r=[];for(let n of e){if(!Array.isArray(n)||n.length>Se)return null;if(t+=n.length,t>Es||!n.every(mh))return null;r.push(n.map((i)=>({active:i.active,color:i.color,...i.tileIndex!=null?{tileIndex:i.tileIndex}:{},...ut(i.depth)>yr?{depth:ut(i.depth)}:{},...i.mirrorZ?{mirrorZ:!0}:{}})))}return r}function Cr(e){let t=e.length,r=t>0?e[0].length:0,n=[],i=new Map,s=Array(r*t).fill(0),o=[],a=null,l=null,c=[];for(let d=0;d<t;d++){let A=e[d];for(let m=0;m<r;m++){let g=A?.[m],f=d*r+m;if(!g)continue;if(g.color){let v=i.get(g.color);if(v===void 0)n.push(g.color),v=n.length,i.set(g.color,v);s[f]=v}else if(g.active)o.push(f);if(g.tileIndex!=null)a??=Array(r*t).fill(0),a[f]=g.tileIndex+1;let p=ut(g.depth);if(p>yr)l??=Array(r*t).fill(0),l[f]=p;if(g.mirrorZ)c.push(f)}}let u={v:2,w:r,h:t,palette:n,cells:s};if(o.length>0)u.activeNoColor=o;if(a)u.tiles=a;if(l)u.depths=l;if(c.length>0)u.mirrorZ=c;return u}function sn(e){if(fh(e))return gh(e,Se,Es)?bh(e):[];return Array.isArray(e)?ph(e)??[]:[]}function bh(e){let{w:t,h:r,palette:n,cells:i,activeNoColor:s,tiles:o,depths:a}=e,l=s?new Set(s):null,c=e.mirrorZ?new Set(e.mirrorZ):null,u=Array(r);for(let d=0;d<r;d++){let A=Array(t);for(let m=0;m<t;m++){let g=d*t+m,f=i[g];if(f>0)A[m]={active:!0,color:n[f-1]??null};else if(l?.has(g))A[m]={active:!0,color:null};else A[m]={active:!1,color:null};let p=o?.[g];if(p)A[m].tileIndex=p-1;let v=ut(a?.[g]);if(v>yr)A[m].depth=v;if(c?.has(g))A[m].mirrorZ=!0}u[d]=A}return u}var yh={top:0,side:1,bottom:2};var wh=/^data:image\/(?:png|gif|webp);base64,[a-z\d+/=]+$/i;var _h=/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}\/[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}\/[\da-f]{64}\.png$/i;function Is(e,t){return Number.isInteger(e)&&Number(e)>0&&Number(e)<=t}function vh(e){if(typeof e!=="string"||e.length===0||e.length>256)return!1;return![...e].some((t)=>{let r=t.charCodeAt(0);return r<32||r===127})}function Ch(e,t){return e===void 0||Array.isArray(e)&&e.length<=t&&e.every((r)=>r===null||typeof r==="string"&&r.length<=128&&/^[a-z0-9_-]+$/i.test(r))}function xs(e){if(!e||e.v!==2&&e.v!==3)return!1;if(!vh(e.name)||!Is(e.tileSize,64)||!Is(e.cols,256)||!Is(e.rows,256))return!1;if(e.faceLayout!==void 0&&e.faceLayout!=="top-side-bottom")return!1;if(!Ch(e.tileIds,e.cols*e.rows))return!1;let t=e.cols*e.tileSize*(e.faceLayout?3:1),r=e.rows*e.tileSize;return e.cols*e.tileSize<=4096&&r<=4096&&t*r<=16777216}function Eh(e,t){if(typeof e!=="string"||e.length===0||e.length>4096)return null;for(let r of e){let n=r.charCodeAt(0);if(n<=32||n===127||`<>"'\\`.includes(r))return null}if(typeof t!=="string"||!_h.test(t))return null;try{let r=new URL(e);return r.protocol==="https:"&&r.hostname==="ldxdyymfagplpxxsqmgs.supabase.co"&&r.port===""&&r.username===""&&r.password===""&&r.search===""&&r.hash===""&&r.pathname===`/storage/v1/object/public/tilesets/${t}`?e:null}catch{return null}}function ks(e){if(!xs(e))return null;if(e.v===2)return e.imageDataUrl.length<=16777216&&wh.test(e.imageDataUrl)?e.imageDataUrl:null;if(e.v===3)return Eh(e.url,e.path);return null}function on(e,t,r="top"){if(!xs(e))return null;if(!Number.isInteger(t)||t<0||t>=e.cols*e.rows)return null;let n=e.faceLayout?3:1,i=e.faceLayout?yh[r]:0,s=e.cols*e.tileSize;return{sx:i*s+t%e.cols*e.tileSize,sy:Math.floor(t/e.cols)*e.tileSize,tileSize:e.tileSize,sheetW:s*n,sheetH:e.rows*e.tileSize}}function Rs(e){if(!xs(e))return null;return{width:e.cols*e.tileSize*(e.faceLayout?3:1),height:e.rows*e.tileSize}}function Sh(e){let t=e.length;for(let r=0;r<e.length;r+=101)t=(t<<5)-t+e.charCodeAt(r)|0;return`iso-sheet-${(t>>>0).toString(36)}`}var qt={corners:[[0,0,1],[1,0,1],[1,1,1],[0,1,1]],shade:1},an={corners:[[0,1,1],[0,1,0],[1,1,0],[1,1,1]],shade:0.97},Er={corners:[[1,0,1],[1,0,0],[1,1,0],[1,1,1]],shade:0.94},er=0.5,Ih=0.75,xh="rgba(0, 0, 0, 0.16)",kh=0.92,Rh="#92929a";function Th(e){if(!Number.isFinite(e))return er;return Math.max(0,Math.min(1,e))}function Ba(e,t){if(t<er){let n=t/er,i=e*Ih;return i+(e-i)*n}let r=(t-er)/(1-er);return e+(1-e)*r}function le(e){return e.toFixed(2)}function It(e){return e.replaceAll("&","&amp;").replaceAll('"',"&quot;").replaceAll("'","&apos;").replaceAll("<","&lt;").replaceAll(">","&gt;")}function Oa(e){return`${le(e[0])},${le(e[1])}`}function Bh([e,t]){let r=Oa(e),n=Oa(t);return r<n?`${r} ${n}`:`${n} ${r}`}function Pa(e,t){return`<polygon points="${e.map(([n,i])=>`${le(n)},${le(i)}`).join(" ")}" fill="${It(t)}"/>`}function Na(e,t,r){let n=t[0]-e[0],i=t[1]-e[1],s=Math.hypot(n,i)||1,o=Math.min(r,s/2)/s;return[e[0]+n*o,e[1]+i*o]}function Oh(e,t){let r=e.length,n="";for(let i=0;i<r;i++){let s=e[i],o=e[(i-1+r)%r],a=e[(i+1)%r],l=Na(s,o,t),c=Na(s,a,t);n+=`${i===0?"M":"L"}${le(l[0])},${le(l[1])}`,n+=`Q${le(s[0])},${le(s[1])} ${le(c[0])},${le(c[1])}`}return`${n}Z`}function Da(e,t,r,n){return`<path d="${e}" fill="${It(t)}" stroke="${It(r)}" stroke-width="${le(n)}" stroke-linejoin="round"/>`}function Ph(e,t){if(e.length===0)return"";return`<path d="${e.map(([n,i])=>`M${le(n[0])},${le(n[1])}L${le(i[0])},${le(i[1])}`).join("")}" fill="none" stroke="${It(t)}" stroke-width="1" stroke-linejoin="round" vector-effect="non-scaling-stroke"/>`}function Ts(e){let{grid:t,numCols:r,numRows:n,scale:i=16,showGridLines:s=!1,sideLighting:o=er,cellGroups:a=!1,tileset:l=null,tilesetImageId:c,embedTilesetImage:u=!0,blockStyle:d="normal"}=e,A=Number.isFinite(i)&&i>0?Math.min(i,1024):16,m=s&&d!=="jelly"?xh:void 0,g=Th(o),f=ks(l),p=l&&f?l:null,v=Rs(p),y=v?.width??0,S=v?.height??0,_=f&&c&&/^[a-z_][\w:.-]{0,127}$/i.test(c)?c:null,b=f?_??Sh(f):"",w=u||!_,C=t.slice(0,Se),P=Math.min(Number.isInteger(n)&&n>0?n:0,C.length,Se),M=C.reduce((x,H)=>Math.max(x,Array.isArray(H)?H.length:0),0),B=Math.min(Number.isInteger(r)&&r>0?r:0,M,Se),k=A,j=A/Math.sqrt(3),X=A*2/Math.sqrt(3),W=d==="jelly"?k*qn:0,q=(x)=>x?.tileIndex!=null?on(p,x.tileIndex):null,Ae=(x)=>{if(pt(x?.color))return x.color;return q(x)?Rh:null},z=(x,H,fe)=>[(x-H)*k,(x+H)*j-fe*X],ce=(x,H)=>{let fe=t[H]?.[x];return fe?.active&&Ae(fe)?ut(fe.depth):0},Re=[];for(let x=0;x<P;x++)for(let H=0;H<B;H++){let fe=t[x]?.[H],qe=Ae(fe);if(fe?.active&&qe)Re.push({x:H,y:x,color:qe,tileIndex:fe.tileIndex??null,depth:ut(fe.depth),mirrorZ:!!fe.mirrorZ})}if(Re.length===0)return'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 0 0"/>';Re.sort((x,H)=>x.x+x.y-(H.x+H.y)||x.depth-H.depth);let V=[],J=1/0,Te=-1/0,pe=1/0,D=-1/0,ee=!1,ie=Ba(Er.shade,g),oe=Ba(an.shade,g),Xe=(x)=>x===qt?x.shade:x===Er?ie:oe,ue=(x,H)=>{if(x<J)J=x;if(x>Te)Te=x;if(H<pe)pe=H;if(H>D)D=H};for(let{x,y:H,color:fe,tileIndex:qe,depth:jt,mirrorZ:Oe}of Re){let at=zr(fe),T=[],O=[],{primary:L,mirrored:Pe}=gs(jt,Oe),ye=(de)=>at?`hsla(${at[0]}, ${at[1]}%, ${Math.max(0,Math.min(100,at[2]*de))}%, ${at[3]})`:fe,lt=(de,me=0,ke=L)=>de.corners.map(([ve,he,ne])=>z(x+ve,H+he,ne===0?me:ke)),We=(de,me=0,ke=L)=>{let ve=lt(de,me,ke);if(W>0){let he=Xe(de),ne=ye(he),se=Oh(ve,W),Be=de===qt?ye(Math.min(1.18,he+0.13)):ye(he*kh);T.push(Da(se,ne,ne,W),Da(se,"none",Be,W*0.3))}else T.push(Pa(ve,ye(Xe(de))));for(let[he,ne]of ve)ue(he,ne)},At=Oe?-Pe:ce(x+1,H),et=Oe?-Pe:ce(x,H+1),ct=a&&!Oe?0:At,Et=a&&!Oe?0:et,Gn=a||Oe||ct<L,Hr=a||Oe||Et<L;if(Gn)We(Er,ct,L);if(Hr)We(an,Et,L);if(We(qt,L,L),m){let de=new Set,me=(ne,se)=>{let Be=Bh([ne,se]);if(de.has(Be))return;de.add(Be),O.push([ne,se])},ke=(ne)=>{for(let se=0;se<ne.length;se++)me(ne[se],ne[(se+1)%ne.length])},ve=(ne,se)=>{let[Be,Ne]=ne.corners.filter(([,,De])=>De===0);for(let De=Math.floor(se)+1;De<L;De++)me(z(x+Be[0],H+Be[1],De),z(x+Ne[0],H+Ne[1],De))},he=lt(qt,L,L);if(me(he[0],he[1]),ce(x+1,H)!==L)me(he[1],he[2]);if(ce(x,H+1)!==L)me(he[2],he[3]);if(me(he[3],he[0]),Oe||At<L)ke(lt(Er,At,L)),ve(Er,At);if(Oe||et<L)ke(lt(an,et,L)),ve(an,et)}let te=qe==null?null:on(p,qe);if(te){ee=!0;let de=(ve,he,ne,se,Be,Ne,De,tt)=>{let rt=on(p,qe,ve);if(!rt)return;let Pt=1-tt;T.push(`<g transform="matrix(${he} ${ne} ${se} ${Be} ${le(Ne)} ${le(De)})"><svg x="0" y="0" width="1" height="1" viewBox="${rt.sx} ${rt.sy} ${rt.tileSize} ${rt.tileSize}" preserveAspectRatio="none"><use href="#${b}" xlink:href="#${b}"/></svg>`+(Pt>0?`<rect x="0" y="0" width="1" height="1" fill="#000" opacity="${Pt.toFixed(2)}"/>`:"")+"</g>")};if(Gn){let[ve,he]=z(x+1,H,L);de("side",-k,j,0,X*(L-ct),ve,he,Xe(Er))}if(Hr){let[ve,he]=z(x,H+1,L);de("side",k,j,0,X*(L-Et),ve,he,Xe(an))}let[me,ke]=z(x,H,L);de("top",k,j,-k,j,me,ke,qt.shade)}if(m)T.push(Ph(O,m));if(d!=="normal"&&!te){if(d==="lego"){let de=Math.SQRT2*rn*k,me=Math.SQRT2*rn*j,ke=ye(ie),ve=ye(qt.shade),he=[[-1,-1],[-1,1],[1,-1],[1,1]];for(let[ne,se]of he){let Be=x+0.5+ne*nn,Ne=H+0.5+se*nn,[De,tt]=z(Be,Ne,L),[,rt]=z(Be,Ne,L+Cs);ue(De-de,tt+me),ue(De+de,rt-me);let Pt='shape-rendering="geometricPrecision"';T.push(`<ellipse cx="${le(De)}" cy="${le(tt)}" rx="${le(de)}" ry="${le(me)}" fill="${It(ke)}" ${Pt}/>`,`<rect x="${le(De-de)}" y="${le(rt)}" width="${le(de*2)}" height="${le(tt-rt)}" fill="${It(ke)}" ${Pt}/>`,`<ellipse cx="${le(De)}" cy="${le(rt)}" rx="${le(de)}" ry="${le(me)}" fill="${It(ve)}" ${Pt}/>`)}}else if(d==="voxel"){let de=(ne,se,Be,Ne,De,tt)=>{let rt=(Pt,yu)=>{for(let[wu,_u]of Pt)ue(wu,_u);T.push(Pa(Pt,ye(yu)))};rt([z(se,Be,tt),z(se,Be,De),z(se,Ne,De),z(se,Ne,tt)],ie),rt([z(ne,Ne,tt),z(ne,Ne,De),z(se,Ne,De),z(se,Ne,tt)],oe),rt([z(ne,Be,tt),z(se,Be,tt),z(se,Ne,tt),z(ne,Ne,tt)],qt.shade)},me=vs,ke=_r(1,1),ve=Oe||At<L?At:null,he=Oe||et<L?et:null;if(de(x+0.5-ke/2,x+0.5+ke/2,H+0.5-ke/2,H+0.5+ke/2,L,L+me),ve!==null){let ne=_r(1,L-ve),se=(L+ve)/2;de(x+1,x+1+me,H+0.5-ne/2,H+0.5+ne/2,se-ne/2,se+ne/2)}if(he!==null){let ne=_r(1,L-he),se=(L+he)/2;de(x+0.5-ne/2,x+0.5+ne/2,H+1,H+1+me,se-ne/2,se+ne/2)}}}if(a)V.push(`<g data-color="${It(fe)}">${T.join("")}</g>`);else V.push(...T)}let Ee=2+W/2,ot=J-Ee,Ve=pe-Ee,Qe=Te-J+Ee*2,re=D-pe+Ee*2,ht=ee&&p&&f&&w?`<defs><image id="${b}" href="${It(f)}" xlink:href="${It(f)}" x="0" y="0" width="${y}" height="${S}" style="image-rendering:pixelated"/></defs>`:"";return[`<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="${le(ot)} ${le(Ve)} ${le(Qe)} ${le(re)}" shape-rendering="crispEdges">`,ht,...V,"</svg>"].join("")}var Nh="hsla(278, 100%, 70%, 1)",Dh=/hsla\(278, 100%, ([\d.]+)%, 1\)/g,ln=(e)=>Ts({grid:[[{active:!0,color:Nh}]],numCols:1,numRows:1,blockStyle:e,sideLighting:0.15}).replaceAll(Dh,"hsl(var(--block-style-icon-hs, 278 100%) $1% / 1)"),Lh=[{style:"normal",label:"Normal",icon:ln("normal")},{style:"voxel",label:"Voxel",icon:ln("voxel")},{style:"lego",label:"Lego",icon:ln("lego")},{style:"jelly",label:"Jelly",icon:ln("jelly")}];var it=[{name:"Classic",colors:["hsla(278, 100%, 50%, 1)","hsla(278, 100%, 16%, 1)","hsla(278, 100%, 80%, 1)","hsla(306, 100%, 50%, 1)","hsla(28, 100%, 60%, 1)","hsla(0, 80%, 60%, 1)","hsla(278, 60%, 35%, 1)","hsla(306, 100%, 80%, 1)","hsla(306, 80%, 30%, 1)","hsla(28, 100%, 80%, 1)"]},{name:"Super Mario",colors:["hsla(218, 100%, 68%, 1)","hsla(0, 85%, 55%, 1)","hsla(225, 85%, 45%, 1)","hsla(28, 100%, 80%, 1)","hsla(22, 60%, 32%, 1)","hsla(120, 70%, 40%, 1)","hsla(45, 100%, 55%, 1)","hsla(0, 0%, 100%, 1)","hsla(0, 0%, 8%, 1)","hsla(22, 45%, 22%, 1)"]},{name:"Pac-Man",colors:["hsla(60, 100%, 50%, 1)","hsla(240, 100%, 56%, 1)","hsla(0, 100%, 50%, 1)","hsla(300, 100%, 86%, 1)","hsla(180, 100%, 50%, 1)","hsla(32, 100%, 66%, 1)","hsla(0, 0%, 100%, 1)","hsla(0, 0%, 5%, 1)","hsla(240, 100%, 25%, 1)","hsla(60, 100%, 80%, 1)"]},{name:"Grayscale",colors:["hsla(0, 0%, 98%, 1)","hsla(0, 0%, 92%, 1)","hsla(0, 0%, 86%, 1)","hsla(0, 0%, 80%, 1)","hsla(0, 0%, 74%, 1)","hsla(0, 0%, 68%, 1)","hsla(0, 0%, 62%, 1)","hsla(0, 0%, 56%, 1)","hsla(0, 0%, 50%, 1)","hsla(0, 0%, 44%, 1)"]},{name:"Sunset",colors:["hsla(45, 100%, 70%, 1)","hsla(28, 100%, 60%, 1)","hsla(12, 90%, 55%, 1)","hsla(350, 80%, 55%, 1)","hsla(320, 60%, 45%, 1)","hsla(280, 45%, 25%, 1)","hsla(50, 100%, 88%, 1)","hsla(38, 100%, 78%, 1)","hsla(20, 100%, 68%, 1)","hsla(5, 85%, 45%, 1)"]},{name:"Ocean",colors:["hsla(180, 70%, 80%, 1)","hsla(190, 75%, 60%, 1)","hsla(205, 75%, 50%, 1)","hsla(215, 70%, 40%, 1)","hsla(225, 65%, 28%, 1)","hsla(235, 55%, 15%, 1)","hsla(175, 60%, 92%, 1)","hsla(185, 70%, 70%, 1)","hsla(195, 75%, 55%, 1)","hsla(200, 70%, 45%, 1)"]},{name:"Pastel",colors:["hsla(350, 100%, 88%, 1)","hsla(30, 100%, 85%, 1)","hsla(55, 85%, 82%, 1)","hsla(135, 60%, 82%, 1)","hsla(200, 75%, 85%, 1)","hsla(275, 70%, 85%, 1)","hsla(15, 100%, 86%, 1)","hsla(45, 100%, 85%, 1)","hsla(90, 55%, 82%, 1)","hsla(160, 55%, 82%, 1)"]},{name:"Gameboy",colors:["hsla(85, 60%, 85%, 1)","hsla(88, 58%, 78%, 1)","hsla(90, 56%, 72%, 1)","hsla(93, 55%, 66%, 1)","hsla(95, 55%, 60%, 1)","hsla(98, 53%, 54%, 1)","hsla(102, 52%, 48%, 1)","hsla(105, 51%, 42%, 1)","hsla(110, 50%, 35%, 1)","hsla(113, 52%, 30%, 1)"]},{name:"Neon",colors:["hsla(320, 100%, 60%, 1)","hsla(180, 100%, 55%, 1)","hsla(60, 100%, 60%, 1)","hsla(270, 100%, 65%, 1)","hsla(130, 100%, 55%, 1)","hsla(25, 100%, 55%, 1)","hsla(300, 100%, 50%, 1)","hsla(200, 100%, 60%, 1)","hsla(90, 100%, 55%, 1)","hsla(45, 100%, 55%, 1)"]},{name:"Forest",colors:["hsla(80, 35%, 75%, 1)","hsla(100, 40%, 50%, 1)","hsla(120, 45%, 30%, 1)","hsla(140, 35%, 18%, 1)","hsla(30, 40%, 35%, 1)","hsla(25, 50%, 22%, 1)","hsla(70, 40%, 88%, 1)","hsla(90, 45%, 62%, 1)","hsla(110, 45%, 40%, 1)","hsla(130, 40%, 24%, 1)"]},{name:"Candy",colors:["hsla(340, 100%, 80%, 1)","hsla(320, 90%, 65%, 1)","hsla(280, 85%, 65%, 1)","hsla(200, 90%, 70%, 1)","hsla(165, 75%, 65%, 1)","hsla(50, 100%, 70%, 1)","hsla(350, 100%, 90%, 1)","hsla(0, 90%, 70%, 1)","hsla(30, 100%, 72%, 1)","hsla(60, 90%, 75%, 1)"]},{name:"Cobalt",colors:["hsla(215, 85%, 94%, 1)","hsla(215, 85%, 86%, 1)","hsla(215, 85%, 78%, 1)","hsla(215, 85%, 70%, 1)","hsla(215, 85%, 62%, 1)","hsla(215, 85%, 54%, 1)","hsla(215, 85%, 46%, 1)","hsla(215, 85%, 40%, 1)","hsla(215, 85%, 34%, 1)","hsla(215, 85%, 28%, 1)"]},{name:"Terracotta",colors:["hsla(25, 55%, 78%, 1)","hsla(20, 65%, 55%, 1)","hsla(15, 60%, 40%, 1)","hsla(15, 50%, 25%, 1)","hsla(35, 40%, 60%, 1)","hsla(0, 25%, 12%, 1)","hsla(30, 60%, 88%, 1)","hsla(25, 60%, 68%, 1)","hsla(18, 65%, 48%, 1)","hsla(12, 55%, 32%, 1)"]},{name:"Vaporwave",colors:["hsla(330, 100%, 78%, 1)","hsla(290, 80%, 60%, 1)","hsla(200, 90%, 72%, 1)","hsla(170, 70%, 60%, 1)","hsla(40, 90%, 78%, 1)","hsla(260, 45%, 18%, 1)","hsla(320, 100%, 88%, 1)","hsla(310, 90%, 70%, 1)","hsla(280, 70%, 45%, 1)","hsla(250, 60%, 55%, 1)"]},{name:"Mint",colors:["hsla(160, 65%, 88%, 1)","hsla(165, 60%, 65%, 1)","hsla(170, 55%, 45%, 1)","hsla(175, 50%, 28%, 1)","hsla(180, 30%, 15%, 1)","hsla(55, 60%, 90%, 1)","hsla(155, 70%, 95%, 1)","hsla(160, 60%, 78%, 1)","hsla(165, 55%, 55%, 1)","hsla(170, 50%, 36%, 1)"]},{name:"Sakura",colors:["hsla(340, 100%, 93%, 1)","hsla(345, 85%, 80%, 1)","hsla(350, 70%, 65%, 1)","hsla(355, 60%, 48%, 1)","hsla(30, 40%, 32%, 1)","hsla(120, 30%, 42%, 1)","hsla(340, 100%, 97%, 1)","hsla(342, 90%, 87%, 1)","hsla(348, 80%, 72%, 1)","hsla(352, 65%, 56%, 1)"]},{name:"Desert",colors:["hsla(40, 55%, 82%, 1)","hsla(30, 50%, 65%, 1)","hsla(15, 45%, 48%, 1)","hsla(90, 30%, 45%, 1)","hsla(95, 25%, 22%, 1)","hsla(200, 40%, 72%, 1)","hsla(42, 60%, 92%, 1)","hsla(35, 55%, 74%, 1)","hsla(25, 50%, 56%, 1)","hsla(18, 45%, 38%, 1)"]},{name:"Galaxy",colors:["hsla(265, 70%, 82%, 1)","hsla(275, 75%, 55%, 1)","hsla(290, 85%, 35%, 1)","hsla(220, 70%, 40%, 1)","hsla(230, 60%, 12%, 1)","hsla(50, 90%, 82%, 1)","hsla(260, 80%, 92%, 1)","hsla(270, 75%, 68%, 1)","hsla(285, 80%, 45%, 1)","hsla(300, 85%, 28%, 1)"]},{name:"Ember",colors:["hsla(25, 100%, 95%, 1)","hsla(25, 100%, 88%, 1)","hsla(25, 100%, 80%, 1)","hsla(25, 100%, 72%, 1)","hsla(25, 100%, 65%, 1)","hsla(25, 100%, 58%, 1)","hsla(25, 100%, 50%, 1)","hsla(25, 100%, 44%, 1)","hsla(25, 100%, 38%, 1)","hsla(25, 100%, 32%, 1)"]},{name:"Watermelon",colors:["hsla(350, 85%, 80%, 1)","hsla(350, 75%, 62%, 1)","hsla(355, 65%, 45%, 1)","hsla(90, 45%, 62%, 1)","hsla(110, 50%, 30%, 1)","hsla(0, 0%, 8%, 1)","hsla(350, 90%, 90%, 1)","hsla(350, 80%, 70%, 1)","hsla(352, 70%, 55%, 1)","hsla(358, 60%, 38%, 1)"]}];var Fh=16777216,Gh=16;function Sr(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function Uh(e){if(!Array.isArray(e))return[...it[0].colors];let t=e.slice(0,Gh).flatMap((r)=>{if(typeof r==="string"&&pt(r))return[r];if(Sr(r)&&pt(r.color)&&typeof r.opacity==="number"&&Number.isFinite(r.opacity)&&r.opacity>=0&&r.opacity<=1)return[r.color];return[]});return t.length>0?t:[...it[0].colors]}function jh(e){if(!Array.isArray(e.artboards))return 0;return Number.isInteger(e.activeArtboard)&&Number(e.activeArtboard)>=0&&Number(e.activeArtboard)<e.artboards.length?Number(e.activeArtboard):0}function Hh(e){let t=Sr(e)?e:{};return{saturation:nt(t.saturation),lightness:nt(t.lightness)}}function cn(e){if(e.length>Fh)throw Error("Draft is too large");let t=JSON.parse(e);if(!Sr(t)||t.version!==1)throw Error("Not a Flatblox version-1 draft");let r=sn(t.grid),n=t.gridSize===void 0?r.length:t.gridSize;if(!Number.isInteger(n)||Number(n)<1||Number(n)>Se||r.length!==n||!r.every((o)=>o.length===n))throw Error("Draft contains an invalid grid");let i=Uh(t.palette),s=pt(t.activeColor)?t.activeColor:i[0];return{filename:typeof t.filename==="string"?tn(t.filename):"untitled",grid:r,palette:i,activeColor:s,paletteColorAdjustment:Hh(t.paletteColorAdjustment),draft:{data:t,activeArtboard:jh(t)}}}function Kh(e,t){let r=Array.isArray(t)?t:[];return e.map((n,i)=>{let s=r[i];if(!Sr(s))return{color:n,opacity:1};let o=typeof s.opacity==="number"&&Number.isFinite(s.opacity)&&s.opacity>=0&&s.opacity<=1?s.opacity:1;return{...s,color:n,opacity:o}})}function Wh(e,t){let r=e.draft?.data.artboards,n=Array.isArray(r)?[...r]:[],i=n.length>0?Math.min(e.draft?.activeArtboard??0,n.length-1):0;if(n.length===0)n.push(t);else{let s=n[i];n[i]=Sr(s)&&"grid"in s?{...s,grid:t}:t}return{artboards:n,activeArtboard:i}}function un(e){let t=e.draft?.data,r=Cr(e.grid),n=Kh(e.palette,t?.palette),{artboards:i,activeArtboard:s}=Wh(e,r),o=e.paletteColorAdjustment??{saturation:0,lightness:0},a=Sr(t?.paletteColorAdjustment)?t.paletteColorAdjustment:{};return JSON.stringify({...t,version:1,grid:r,gridSize:e.grid.length,palette:n,paletteColorAdjustment:{...a,saturation:nt(o.saturation),lightness:nt(o.lightness)},activeColor:e.activeColor,artboards:i,activeArtboard:s,filename:e.filename,savedAt:new Date().toISOString()},null,2)}function Ir(e){return e==="rectangle"||e==="circle"}function Yh(e,t){let r=Math.min(e.x,t.x),n=Math.max(e.x,t.x),i=Math.min(e.y,t.y),s=Math.max(e.y,t.y),o=[];for(let a=r;a<=n;a++)if(o.push({x:a,y:i}),s!==i)o.push({x:a,y:s});for(let a=i+1;a<s;a++)if(o.push({x:r,y:a}),n!==r)o.push({x:n,y:a});return o}function Qh(e,t){let r=[],n=(p,v)=>r.push({x:p,y:v}),i=Math.min(e.x,t.x),s=Math.max(e.x,t.x),o=Math.min(e.y,t.y),a=Math.max(e.y,t.y),l=s-i,c=a-o;if(l===0||c===0){for(let p=o;p<=a;p++)for(let v=i;v<=s;v++)n(v,p);return r}let u=c&1,d=4*(1-l)*c*c,A=4*(u+1)*l*l,m=d+A+u*l*l;o+=c+1>>1,a=o-u;let g=8*l*l,f=8*c*c;do{n(s,o),n(i,o),n(i,a),n(s,a);let p=2*m;if(p<=A)o++,a--,A+=g,m+=A;if(p>=d||2*m>A)i++,s--,d+=f,m+=d}while(i<=s);while(o-a<c)n(i-1,o),n(s+1,o),o++,n(i-1,a),n(s+1,a),a--;return r}function Bs(e,t,r){let n=e==="circle"?Qh(t,r):Yh(t,r),i=new Set;return n.filter((s)=>{let o=`${s.x}:${s.y}`;if(i.has(o))return!1;return i.add(o),!0})}var Ma=16,Jh=100;function La(e,t,r){return Math.max(t,Math.min(r,e))}function dn(e){return e.map((t)=>t.map((r)=>({...r})))}function $h(e){return Array.from({length:e},()=>Array.from({length:e},()=>({active:!1,color:null})))}function Fa(e){if(!Number.isInteger(e)||e<1||e>Se)throw Error(`Grid size must be between 1 and ${Se}`);return e}function hn(e=Ma){let t=[...it[0].colors];return{filename:"untitled",grid:$h(Fa(e)),palette:t,activeColor:t[0],paletteColorAdjustment:{saturation:0,lightness:0}}}function ei(e,t,r,n){let i=[t];if(r)i.push({x:e-1-t.x,y:t.y});if(n)i.push({x:t.x,y:e-1-t.y});if(r&&n)i.push({x:e-1-t.x,y:e-1-t.y});return[...new Map(i.map((s)=>[`${s.x}:${s.y}`,s])).values()]}class Mt{palette;paletteColorAdjustment;cursor={x:0,y:0};tool="draw";mirrorX=!1;mirrorY=!1;activeColorIndex;currentId=0;nextId=1;savedId=0;currentFilename;savedFilename;undoStack=[];redoStack=[];currentGrid;draft;constructor(e){let t=Fa(e.grid.length);if(!e.grid.every((n)=>n.length===t))throw Error("Grid must be square");if(e.palette.length===0)throw Error("Palette is empty");this.currentFilename=e.filename||"untitled",this.savedFilename=this.currentFilename,this.palette=[...e.palette],this.paletteColorAdjustment={saturation:nt(e.paletteColorAdjustment?.saturation),lightness:nt(e.paletteColorAdjustment?.lightness)},this.draft=e.draft,this.currentGrid=dn(e.grid);let r=this.palette.indexOf(e.activeColor);this.activeColorIndex=r>=0?r:0}get grid(){return this.currentGrid}get filename(){return this.currentFilename}get size(){return this.currentGrid.length}get activeColor(){return this.palette[this.activeColorIndex]}get selectedColorIndex(){return this.activeColorIndex}get canUndo(){return this.undoStack.length>0}get canRedo(){return this.redoStack.length>0}get dirty(){return this.currentId!==this.savedId||this.currentFilename!==this.savedFilename}get revision(){return{id:this.currentId,filename:this.currentFilename}}rename(e){let t=e.trim();if(!t||t===this.currentFilename)return!1;return this.currentFilename=t,!0}moveCursor(e,t){this.setCursor(this.cursor.x+e,this.cursor.y+t)}setCursor(e,t){this.cursor={x:La(Math.round(e),0,this.size-1),y:La(Math.round(t),0,this.size-1)}}setTool(e){this.tool=e}selectColor(e){let t=this.palette.length;this.activeColorIndex=(Math.round(e)%t+t)%t}selectNextColor(e){this.selectColor(this.activeColorIndex+e)}toggleMirrorX(){this.mirrorX=!this.mirrorX}toggleMirrorY(){this.mirrorY=!this.mirrorY}applyAtCursor(e=this.tool){return this.applyAt(this.cursor.x,this.cursor.y,e)}applyAt(e,t,r=this.tool){if(e<0||e>=this.size||t<0||t>=this.size)return!1;return this.commit(()=>r==="fill"?this.fill(e,t):this.paintMirrored(e,t,r==="erase"?null:this.activeColor))}applyShape(e,t,r){if(!Ir(e))return!1;let n=this.shapePreview(e,t,r);if(n.length===0)return!1;return this.commit(()=>{let i=!1;for(let s of n)if(this.paintMirrored(s.x,s.y,this.activeColor))i=!0;return i})}shapePreview(e,t,r){let n=(i)=>i.x>=0&&i.x<this.size&&i.y>=0&&i.y<this.size;return Bs(e,t,r).filter(n)}commit(e){let t=dn(this.currentGrid);if(!e())return!1;if(this.undoStack.push({grid:t,id:this.currentId}),this.undoStack.length>Jh)this.undoStack.shift();return this.redoStack=[],this.currentId=this.nextId++,!0}undo(){let e=this.undoStack.pop();if(!e)return!1;return this.redoStack.push({grid:dn(this.currentGrid),id:this.currentId}),this.currentGrid=e.grid,this.currentId=e.id,!0}redo(){let e=this.redoStack.pop();if(!e)return!1;return this.undoStack.push({grid:dn(this.currentGrid),id:this.currentId}),this.currentGrid=e.grid,this.currentId=e.id,!0}markSaved(e=this.revision){if(e.id!==this.currentId||e.filename!==this.currentFilename)return!1;return this.savedId=e.id,this.savedFilename=e.filename,!0}toDocument(){return{filename:this.currentFilename,grid:dn(this.currentGrid),palette:[...this.palette],activeColor:this.activeColor,paletteColorAdjustment:{...this.paletteColorAdjustment},...this.draft?{draft:{data:this.draft.data,activeArtboard:this.draft.activeArtboard}}:{}}}paintMirrored(e,t,r){let n=!1;for(let i of ei(this.size,{x:e,y:t},this.mirrorX,this.mirrorY)){let s=this.currentGrid[i.y][i.x],o=r!==null;if(s.active===o&&s.color===r&&s.tileIndex==null)continue;this.currentGrid[i.y][i.x]=o?{...s,active:o,color:r,tileIndex:null}:{active:o,color:r},n=!0}return n}fill(e,t){let r=this.currentGrid[t][e];if(r.active&&r.color===this.activeColor&&r.tileIndex==null)return!1;let{active:n,color:i}=r,s=r.tileIndex??null,o=[{x:e,y:t}],a=new Set,l=!1;while(o.length>0){let c=o.pop();if(c.x<0||c.x>=this.size||c.y<0||c.y>=this.size)continue;let u=c.y*this.size+c.x;if(a.has(u))continue;a.add(u);let d=this.currentGrid[c.y][c.x];if(d.active!==n||n&&(d.color!==i||(d.tileIndex??null)!==s))continue;this.currentGrid[c.y][c.x]={...d,active:!0,color:this.activeColor,tileIndex:null},l=!0,o.push({x:c.x+1,y:c.y},{x:c.x-1,y:c.y},{x:c.x,y:c.y+1},{x:c.x,y:c.y-1})}return l}}import{createConnection as Zh}from"net";var Xh="127.0.0.1",Vh=47642,zh=3000,qh=32,eA=1048576,tA=16384,Ga=[0.57,0.57,0.6,1],Ua=new Map;function rA(e){if(!e)return[...Ga];let t=Ua.get(e);if(!t){let r=zt(e);t=r?[r.r/255,r.g/255,r.b/255,r.a]:[...Ga],Ua.set(e,t)}return t}function nA(e){if(!e?.active)return{active:!1,color:null,depth:1,mirrorZ:!1};return{active:!0,color:rA(e.color),depth:ut(e.depth),mirrorZ:!!e.mirrorZ}}function Ha(e,t,r){return{x:t%r,y:Math.floor(t/r),...e}}function iA(e,t){let r=e.color===t.color||!!e.color&&!!t.color&&e.color.every((n,i)=>n===t.color?.[i]);return e.active===t.active&&r&&e.depth===t.depth&&e.mirrorZ===t.mirrorZ}function Ka(e){let{saturation:t,lightness:r}=e.paletteColorAdjustment??{saturation:0,lightness:0},n=Vt(e.grid,t,r),i=n.length,s=n[0]?.length??0;return Array.from({length:s*i},(o,a)=>nA(n[Math.floor(a/s)]?.[a%s]))}function sA(e){let t=e.grid.length,r=e.grid[0]?.length??0,n=Ka(e);return{message:{protocol:zn,type:"snapshot",columns:r,rows:t,cells:n.flatMap((i,s)=>i.active?[Ha(i,s,r)]:[])},state:n}}function oA(e,t,r){return t.flatMap((n,i)=>e[i]&&iA(e[i],n)?[]:[Ha(n,i,r)])}function ja(e){return(typeof e==="object"&&e!==null&&"code"in e&&typeof e.code==="string"?e.code:"")==="ECONNREFUSED"?"Blender add-on not found. Enable Flatblox Live in Blender.":"Could not connect to the Blender add-on."}class Os{document;connector;socket=null;status={state:"disconnected"};listeners=new Set;connectPromise=null;resolveConnect=null;connectTimer=null;patchTimer=null;handshakeBuffer="";previousGrid=null;previousColumns=0;previousRows=0;pendingCells=new Map;constructor(e,t=Zh){this.document=e,this.connector=t}getStatus(){return{...this.status}}onStatus(e){return this.listeners.add(e),()=>this.listeners.delete(e)}connect(){if(this.status.state==="connected")return Promise.resolve(this.getStatus());if(this.connectPromise)return this.connectPromise;this.disconnectSocket(),this.resetStream(),this.handshakeBuffer="",this.setStatus({state:"connecting"}),this.connectPromise=new Promise((t)=>{this.resolveConnect=t});let e;try{e=this.connector({host:Xh,port:Vh})}catch(t){let r={state:"error",message:ja(t)};return this.setStatus(r),this.finishConnect(r),Promise.resolve(r)}return this.socket=e,e.setNoDelay(!0),e.on("data",(t)=>this.handleHandshake(e,t)),e.on("error",(t)=>this.fail(e,ja(t))),e.on("close",()=>this.handleClose(e)),this.connectTimer=setTimeout(()=>{this.fail(e,"Timed out waiting for the Blender add-on.")},zh),this.connectPromise}disconnect(){this.disconnectSocket(),this.resetStream();let e={state:"disconnected"};return this.setStatus(e),this.finishConnect(e),e}sync(){if(this.status.state!=="connected"||!this.socket)return;if(!this.patchTimer)this.patchTimer=setTimeout(()=>this.flushPatch(),qh)}collectChanges(){let e=this.document(),t=e.grid.length,r=e.grid[0]?.length??0;if(!this.previousGrid||r!==this.previousColumns||t!==this.previousRows){this.sendSnapshot(e);return}let n=Ka(e);for(let i of oA(this.previousGrid,n,r))this.pendingCells.set(i.y*r+i.x,i);this.previousGrid=n}dispose(){this.disconnect(),this.listeners.clear()}handleHandshake(e,t){if(this.socket!==e||this.status.state!=="connecting")return;if(this.handshakeBuffer+=t.toString("utf8"),Buffer.byteLength(this.handshakeBuffer)>tA){this.fail(e,"Blender sent an invalid handshake.");return}let r=this.handshakeBuffer.indexOf(`
9
+ `)}`);var Jd=ps,$d=["jump","frontFlip","horseWalk","swim"],Zd=Object.keys(Jd.clips).filter((e)=>!$d.includes(e));var fa=["top","side","bottom"],ga=["left","right","bottom","top","back","front"],ma=["humanoid","female","pig","robot","dog","cat","horse","bird","octopus"],$n=["leftLeg","rightLeg","leftArm","rightArm","leftLegFoot","rightLegFoot","leftArmFoot","rightArmFoot","leftSleeve","rightSleeve"],pa=["leftWing","rightWing","carried","muzzle"];var Pp=new Set(ma),Np=new Set([...$n,...pa]),Dp=new Set(fa),Lp=new Set(ga),Mp=["cree","per"].join(""),Vr=["H","oof"].join(""),Fp=new Map([[`leftLeg${Vr}`,"leftLegFoot"],[`rightLeg${Vr}`,"rightLegFoot"],[`leftArm${Vr}`,"leftArmFoot"],[`rightArm${Vr}`,"rightArmFoot"]]),Gp=["horse",Vr].join("");var zd=Math.PI*2;var Kp=new Set($n);var ba={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],transparent:[0,0,0,0],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};function ya(e){let t=new Set;for(let r of e)for(let n of r)if(n.active&&n.color)t.add(n.color);return t}function bs(e,t){let r=ya(t);return e.filter((n)=>r.has(n))}var eh=/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,th=/^([+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?)(deg|grad|rad|turn)?$/i,Xn=(e,t,r)=>Math.max(t,Math.min(r,e));function Vn(e){let t=e.trim(),r=t.endsWith("%"),n=r?t.slice(0,-1):t;if(!eh.test(n))return null;let i=Number(n);return Number.isFinite(i)?{value:i,percentage:r}:null}function _a(e){if(e===null)return 1;let t=Vn(e);if(!t)return null;return Xn(t.percentage?t.value/100:t.value,0,1)}function va(e,t){let r=/^([a-z]+)\(\s*(.*?)\s*\)$/i.exec(e.trim());if(!r||!t.includes(r[1].toLowerCase()))return null;let n=r[2];if(n.includes(",")){let a=n.split("/");if(a.length>2)return null;let l=a[0].split(",").map((c)=>c.trim());if(l.some((c)=>!c))return null;if(a.length===2){let c=a[1].trim();return l.length===3&&c?{channels:l,alpha:c}:null}return l.length===3||l.length===4?{channels:l.slice(0,3),alpha:l[3]??null}:null}let i=n.split("/");if(i.length>2)return null;let s=i[0].trim().split(/\s+/),o=i.length===2?i[1].trim():null;return s.length===3&&(i.length===1||o)?{channels:s,alpha:o}:null}function rh(e){let t=th.exec(e.trim());if(!t)return null;let r=Number(t[1]);if(!Number.isFinite(r))return null;switch(t[2]?.toLowerCase()){case"grad":return r*0.9;case"rad":return r*180/Math.PI;case"turn":return r*360;default:return r}}function zr(e){let t=va(e,["hsl","hsla"]);if(!t)return null;let r=rh(t.channels[0]),n=Vn(t.channels[1]),i=Vn(t.channels[2]),s=_a(t.alpha);if(r===null||!n||!i||s===null)return null;return[r,Xn(n.value,0,100),Xn(i.value,0,100),s]}function Ca(e,t,r){let n=t/100,i=r/100,s=(1-Math.abs(2*i-1))*n,o=(e%360+360)%360/60,a=s*(1-Math.abs(o%2-1)),l=0,c=0,u=0;if(o<1)[l,c,u]=[s,a,0];else if(o<2)[l,c,u]=[a,s,0];else if(o<3)[l,c,u]=[0,s,a];else if(o<4)[l,c,u]=[0,a,s];else if(o<5)[l,c,u]=[a,0,s];else[l,c,u]=[s,0,a];let d=i-s/2;return{r:Math.round((l+d)*255),g:Math.round((c+d)*255),b:Math.round((u+d)*255)}}function Ea({r:e,g:t,b:r}){let n=e/255,i=t/255,s=r/255,o=Math.max(n,i,s),a=Math.min(n,i,s),l=o-a,c=(o+a)/2;if(l===0)return{h:0,s:0,l:c*100};let u;if(o===n)u=((i-s)/l+(i<s?6:0))*60;else if(o===i)u=((s-n)/l+2)*60;else u=((n-i)/l+4)*60;return{h:u,s:l/(1-Math.abs(2*c-1))*100,l:c*100}}function qr({r:e,g:t,b:r}){let n=(i)=>Math.round(Math.max(0,Math.min(255,i))).toString(16).padStart(2,"0");return`#${n(e)}${n(t)}${n(r)}`}var wa=(e,t)=>{let r=Math.max(-100,Math.min(100,t))/100;return r>=0?e+(100-e)*r:e*(1+r)};var Zn=(e)=>{let t=Math.round(e*1000)/1000;return String(Object.is(t,-0)?0:t)};function ys(e,t,r){if(t===0&&r===0)return e;let n=zr(e),i=n?null:zt(e);if(!n&&!i)return e;let s=n?{h:n[0],s:n[1],l:n[2]}:Ea(i),o=s.s===0?0:wa(s.s,t),a=wa(s.l,r),l=n?.[3]??i?.a??1;return`hsla(${Zn(s.h)}, ${Zn(o)}%, ${Zn(a)}%, ${Zn(l)})`}function nt(e){return typeof e==="number"&&Number.isInteger(e)&&e>=-100&&e<=100?e:0}function en(e,t,r){let n=nt(t),i=nt(r);if(n===0&&i===0)return e;return e.map((s)=>ys(s,n,i))}function Vt(e,t,r){if(t===0&&r===0)return e;let n=new Map,i=(s)=>{let o=n.get(s);if(o===void 0)o=ys(s,t,r),n.set(s,o);return o};return e.map((s)=>s.map((o)=>({...o,color:o.color===null?null:i(o.color)})))}function nh(e){let t=/^#([\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/i.exec(e.trim());if(!t)return null;let r=t[1],n=r.length<=4?[...r].map((i)=>i+i).join(""):r;return{r:Number.parseInt(n.slice(0,2),16),g:Number.parseInt(n.slice(2,4),16),b:Number.parseInt(n.slice(4,6),16),a:n.length===8?Number.parseInt(n.slice(6,8),16)/255:1}}function ih(e){let t=va(e,["rgb","rgba"]);if(!t)return null;let r=t.channels.map(Vn),n=_a(t.alpha);if(r.some((l)=>l===null)||n===null)return null;let[i,s,o]=r,a=(l)=>Xn(l.percentage?l.value/100*255:l.value,0,255);return{r:a(i),g:a(s),b:a(o),a:n}}function zt(e){let t=e.trim(),r=nh(t);if(r)return r;let n=zr(t);if(n)return{...Ca(n[0],n[1],n[2]),a:n[3]};let i=ih(t);if(i)return i;let s=ba[t.toLowerCase()];if(!s)return null;return{r:s[0],g:s[1],b:s[2],a:s[3]??1}}function ws(e){let t=zt(e);return t?{r:t.r,g:t.g,b:t.b}:null}var zn=1;var _s=30;function tn(e){return e.trim().slice(0,30)}var qn=0.16,vs=0.1;var rn=0.15,Cs=0.12;var nn=0.25;function _r(...e){let t=Math.max(0,Math.min(...e));return Math.max(0.22,t*0.5)}var Ie=64,Es=Ie*Ie;var Ss=64,Ia=512,g0=Ia*Ia,ch=128,Ra=65535,uh=20,dh=/^#(?:[\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/i,hh=/^[a-z]+$/i,Ah=/^(?:rgb|rgba|hsl|hsla)\([\d\s.,%+\-/e]*(?:(?:deg|grad|rad|turn)[\d\s.,%+\-/e]*)?\)$/i;function Ta(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function vr(e,t,r){return Number.isInteger(e)&&Number(e)>=t&&Number(e)<=r}function pt(e){if(typeof e!=="string"||e.length===0||e.length>ch)return!1;return dh.test(e)||hh.test(e)||Ah.test(e)}function fh(e){return Ta(e)&&e.v===2}function xa(e,t){return e===void 0||Array.isArray(e)&&e.length<=t&&e.every((r)=>vr(r,0,t-1))}function ka(e,t,r){return e===void 0||Array.isArray(e)&&e.length===t&&e.every((n)=>vr(n,0,r))}function gh(e,t,r){let{w:n,h:i,palette:s,cells:o,activeNoColor:a,tiles:l,depths:c,mirrorZ:u}=e;if(!vr(n,0,t)||!vr(i,0,t))return!1;let d=n*i;return d<=r&&Array.isArray(s)&&s.length<=d&&s.every(pt)&&Array.isArray(o)&&o.length===d&&o.every((A)=>vr(A,0,s.length))&&xa(a,d)&&ka(l,d,Ra+1)&&ka(c,d,uh)&&xa(u,d)}function mh(e){if(!Ta(e)||typeof e.active!=="boolean")return!1;if(e.color!==null&&!pt(e.color))return!1;if(e.tileIndex!==void 0&&e.tileIndex!==null&&!vr(e.tileIndex,0,Ra))return!1;if(e.depth!==void 0&&e.depth!==null&&!Number.isFinite(e.depth))return!1;return e.mirrorZ===void 0||e.mirrorZ===null||typeof e.mirrorZ==="boolean"}function ph(e){if(e.length>Ie)return null;let t=0,r=[];for(let n of e){if(!Array.isArray(n)||n.length>Ie)return null;if(t+=n.length,t>Es||!n.every(mh))return null;r.push(n.map((i)=>({active:i.active,color:i.color,...i.tileIndex!=null?{tileIndex:i.tileIndex}:{},...ut(i.depth)>yr?{depth:ut(i.depth)}:{},...i.mirrorZ?{mirrorZ:!0}:{}})))}return r}function Cr(e){let t=e.length,r=t>0?e[0].length:0,n=[],i=new Map,s=Array(r*t).fill(0),o=[],a=null,l=null,c=[];for(let d=0;d<t;d++){let A=e[d];for(let m=0;m<r;m++){let g=A?.[m],f=d*r+m;if(!g)continue;if(g.color){let v=i.get(g.color);if(v===void 0)n.push(g.color),v=n.length,i.set(g.color,v);s[f]=v}else if(g.active)o.push(f);if(g.tileIndex!=null)a??=Array(r*t).fill(0),a[f]=g.tileIndex+1;let p=ut(g.depth);if(p>yr)l??=Array(r*t).fill(0),l[f]=p;if(g.mirrorZ)c.push(f)}}let u={v:2,w:r,h:t,palette:n,cells:s};if(o.length>0)u.activeNoColor=o;if(a)u.tiles=a;if(l)u.depths=l;if(c.length>0)u.mirrorZ=c;return u}function sn(e){if(fh(e))return gh(e,Ie,Es)?bh(e):[];return Array.isArray(e)?ph(e)??[]:[]}function bh(e){let{w:t,h:r,palette:n,cells:i,activeNoColor:s,tiles:o,depths:a}=e,l=s?new Set(s):null,c=e.mirrorZ?new Set(e.mirrorZ):null,u=Array(r);for(let d=0;d<r;d++){let A=Array(t);for(let m=0;m<t;m++){let g=d*t+m,f=i[g];if(f>0)A[m]={active:!0,color:n[f-1]??null};else if(l?.has(g))A[m]={active:!0,color:null};else A[m]={active:!1,color:null};let p=o?.[g];if(p)A[m].tileIndex=p-1;let v=ut(a?.[g]);if(v>yr)A[m].depth=v;if(c?.has(g))A[m].mirrorZ=!0}u[d]=A}return u}var yh={top:0,side:1,bottom:2};var wh=/^data:image\/(?:png|gif|webp);base64,[a-z\d+/=]+$/i;var _h=/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}\/[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}\/[\da-f]{64}\.png$/i;function Is(e,t){return Number.isInteger(e)&&Number(e)>0&&Number(e)<=t}function vh(e){if(typeof e!=="string"||e.length===0||e.length>256)return!1;return![...e].some((t)=>{let r=t.charCodeAt(0);return r<32||r===127})}function Ch(e,t){return e===void 0||Array.isArray(e)&&e.length<=t&&e.every((r)=>r===null||typeof r==="string"&&r.length<=128&&/^[a-z0-9_-]+$/i.test(r))}function xs(e){if(!e||e.v!==2&&e.v!==3)return!1;if(!vh(e.name)||!Is(e.tileSize,64)||!Is(e.cols,256)||!Is(e.rows,256))return!1;if(e.faceLayout!==void 0&&e.faceLayout!=="top-side-bottom")return!1;if(!Ch(e.tileIds,e.cols*e.rows))return!1;let t=e.cols*e.tileSize*(e.faceLayout?3:1),r=e.rows*e.tileSize;return e.cols*e.tileSize<=4096&&r<=4096&&t*r<=16777216}function Eh(e,t){if(typeof e!=="string"||e.length===0||e.length>4096)return null;for(let r of e){let n=r.charCodeAt(0);if(n<=32||n===127||`<>"'\\`.includes(r))return null}if(typeof t!=="string"||!_h.test(t))return null;try{let r=new URL(e);return r.protocol==="https:"&&r.hostname==="ldxdyymfagplpxxsqmgs.supabase.co"&&r.port===""&&r.username===""&&r.password===""&&r.search===""&&r.hash===""&&r.pathname===`/storage/v1/object/public/tilesets/${t}`?e:null}catch{return null}}function ks(e){if(!xs(e))return null;if(e.v===2)return e.imageDataUrl.length<=16777216&&wh.test(e.imageDataUrl)?e.imageDataUrl:null;if(e.v===3)return Eh(e.url,e.path);return null}function on(e,t,r="top"){if(!xs(e))return null;if(!Number.isInteger(t)||t<0||t>=e.cols*e.rows)return null;let n=e.faceLayout?3:1,i=e.faceLayout?yh[r]:0,s=e.cols*e.tileSize;return{sx:i*s+t%e.cols*e.tileSize,sy:Math.floor(t/e.cols)*e.tileSize,tileSize:e.tileSize,sheetW:s*n,sheetH:e.rows*e.tileSize}}function Rs(e){if(!xs(e))return null;return{width:e.cols*e.tileSize*(e.faceLayout?3:1),height:e.rows*e.tileSize}}function Sh(e){let t=e.length;for(let r=0;r<e.length;r+=101)t=(t<<5)-t+e.charCodeAt(r)|0;return`iso-sheet-${(t>>>0).toString(36)}`}var qt={corners:[[0,0,1],[1,0,1],[1,1,1],[0,1,1]],shade:1},an={corners:[[0,1,1],[0,1,0],[1,1,0],[1,1,1]],shade:0.97},Er={corners:[[1,0,1],[1,0,0],[1,1,0],[1,1,1]],shade:0.94},er=0.5,Ih=0.75,xh="rgba(0, 0, 0, 0.16)",kh=0.92,Rh="#92929a";function Th(e){if(!Number.isFinite(e))return er;return Math.max(0,Math.min(1,e))}function Ba(e,t){if(t<er){let n=t/er,i=e*Ih;return i+(e-i)*n}let r=(t-er)/(1-er);return e+(1-e)*r}function le(e){return e.toFixed(2)}function It(e){return e.replaceAll("&","&amp;").replaceAll('"',"&quot;").replaceAll("'","&apos;").replaceAll("<","&lt;").replaceAll(">","&gt;")}function Oa(e){return`${le(e[0])},${le(e[1])}`}function Bh([e,t]){let r=Oa(e),n=Oa(t);return r<n?`${r} ${n}`:`${n} ${r}`}function Pa(e,t){return`<polygon points="${e.map(([n,i])=>`${le(n)},${le(i)}`).join(" ")}" fill="${It(t)}"/>`}function Na(e,t,r){let n=t[0]-e[0],i=t[1]-e[1],s=Math.hypot(n,i)||1,o=Math.min(r,s/2)/s;return[e[0]+n*o,e[1]+i*o]}function Oh(e,t){let r=e.length,n="";for(let i=0;i<r;i++){let s=e[i],o=e[(i-1+r)%r],a=e[(i+1)%r],l=Na(s,o,t),c=Na(s,a,t);n+=`${i===0?"M":"L"}${le(l[0])},${le(l[1])}`,n+=`Q${le(s[0])},${le(s[1])} ${le(c[0])},${le(c[1])}`}return`${n}Z`}function Da(e,t,r,n){return`<path d="${e}" fill="${It(t)}" stroke="${It(r)}" stroke-width="${le(n)}" stroke-linejoin="round"/>`}function Ph(e,t){if(e.length===0)return"";return`<path d="${e.map(([n,i])=>`M${le(n[0])},${le(n[1])}L${le(i[0])},${le(i[1])}`).join("")}" fill="none" stroke="${It(t)}" stroke-width="1" stroke-linejoin="round" vector-effect="non-scaling-stroke"/>`}function Ts(e){let{grid:t,numCols:r,numRows:n,scale:i=16,showGridLines:s=!1,sideLighting:o=er,cellGroups:a=!1,tileset:l=null,tilesetImageId:c,embedTilesetImage:u=!0,blockStyle:d="normal"}=e,A=Number.isFinite(i)&&i>0?Math.min(i,1024):16,m=s&&d!=="jelly"?xh:void 0,g=Th(o),f=ks(l),p=l&&f?l:null,v=Rs(p),y=v?.width??0,S=v?.height??0,_=f&&c&&/^[a-z_][\w:.-]{0,127}$/i.test(c)?c:null,b=f?_??Sh(f):"",w=u||!_,C=t.slice(0,Ie),P=Math.min(Number.isInteger(n)&&n>0?n:0,C.length,Ie),M=C.reduce((x,H)=>Math.max(x,Array.isArray(H)?H.length:0),0),B=Math.min(Number.isInteger(r)&&r>0?r:0,M,Ie),k=A,j=A/Math.sqrt(3),X=A*2/Math.sqrt(3),K=d==="jelly"?k*qn:0,ee=(x)=>x?.tileIndex!=null?on(p,x.tileIndex):null,Ae=(x)=>{if(pt(x?.color))return x.color;return ee(x)?Rh:null},z=(x,H,fe)=>[(x-H)*k,(x+H)*j-fe*X],ce=(x,H)=>{let fe=t[H]?.[x];return fe?.active&&Ae(fe)?ut(fe.depth):0},Te=[];for(let x=0;x<P;x++)for(let H=0;H<B;H++){let fe=t[x]?.[H],qe=Ae(fe);if(fe?.active&&qe)Te.push({x:H,y:x,color:qe,tileIndex:fe.tileIndex??null,depth:ut(fe.depth),mirrorZ:!!fe.mirrorZ})}if(Te.length===0)return'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 0 0"/>';Te.sort((x,H)=>x.x+x.y-(H.x+H.y)||x.depth-H.depth);let V=[],J=1/0,Be=-1/0,pe=1/0,D=-1/0,te=!1,ie=Ba(Er.shade,g),oe=Ba(an.shade,g),Xe=(x)=>x===qt?x.shade:x===Er?ie:oe,ue=(x,H)=>{if(x<J)J=x;if(x>Be)Be=x;if(H<pe)pe=H;if(H>D)D=H};for(let{x,y:H,color:fe,tileIndex:qe,depth:jt,mirrorZ:Pe}of Te){let at=zr(fe),T=[],O=[],{primary:L,mirrored:Ne}=gs(jt,Pe),ye=(de)=>at?`hsla(${at[0]}, ${at[1]}%, ${Math.max(0,Math.min(100,at[2]*de))}%, ${at[3]})`:fe,lt=(de,me=0,Re=L)=>de.corners.map(([ve,he,ne])=>z(x+ve,H+he,ne===0?me:Re)),De=(de,me=0,Re=L)=>{let ve=lt(de,me,Re);if(K>0){let he=Xe(de),ne=ye(he),se=Oh(ve,K),Oe=de===qt?ye(Math.min(1.18,he+0.13)):ye(he*kh);T.push(Da(se,ne,ne,K),Da(se,"none",Oe,K*0.3))}else T.push(Pa(ve,ye(Xe(de))));for(let[he,ne]of ve)ue(he,ne)},At=Pe?-Ne:ce(x+1,H),et=Pe?-Ne:ce(x,H+1),ct=a&&!Pe?0:At,Et=a&&!Pe?0:et,Gn=a||Pe||ct<L,Hr=a||Pe||Et<L;if(Gn)De(Er,ct,L);if(Hr)De(an,Et,L);if(De(qt,L,L),m){let de=new Set,me=(ne,se)=>{let Oe=Bh([ne,se]);if(de.has(Oe))return;de.add(Oe),O.push([ne,se])},Re=(ne)=>{for(let se=0;se<ne.length;se++)me(ne[se],ne[(se+1)%ne.length])},ve=(ne,se)=>{let[Oe,Le]=ne.corners.filter(([,,Se])=>Se===0);for(let Se=Math.floor(se)+1;Se<L;Se++)me(z(x+Oe[0],H+Oe[1],Se),z(x+Le[0],H+Le[1],Se))},he=lt(qt,L,L);if(me(he[0],he[1]),ce(x+1,H)!==L)me(he[1],he[2]);if(ce(x,H+1)!==L)me(he[2],he[3]);if(me(he[3],he[0]),Pe||At<L)Re(lt(Er,At,L)),ve(Er,At);if(Pe||et<L)Re(lt(an,et,L)),ve(an,et)}let q=qe==null?null:on(p,qe);if(q){te=!0;let de=(ve,he,ne,se,Oe,Le,Se,tt)=>{let rt=on(p,qe,ve);if(!rt)return;let Pt=1-tt;T.push(`<g transform="matrix(${he} ${ne} ${se} ${Oe} ${le(Le)} ${le(Se)})"><svg x="0" y="0" width="1" height="1" viewBox="${rt.sx} ${rt.sy} ${rt.tileSize} ${rt.tileSize}" preserveAspectRatio="none"><use href="#${b}" xlink:href="#${b}"/></svg>`+(Pt>0?`<rect x="0" y="0" width="1" height="1" fill="#000" opacity="${Pt.toFixed(2)}"/>`:"")+"</g>")};if(Gn){let[ve,he]=z(x+1,H,L);de("side",-k,j,0,X*(L-ct),ve,he,Xe(Er))}if(Hr){let[ve,he]=z(x,H+1,L);de("side",k,j,0,X*(L-Et),ve,he,Xe(an))}let[me,Re]=z(x,H,L);de("top",k,j,-k,j,me,Re,qt.shade)}if(m)T.push(Ph(O,m));if(d!=="normal"&&!q){if(d==="lego"){let de=Math.SQRT2*rn*k,me=Math.SQRT2*rn*j,Re=ye(ie),ve=ye(qt.shade),he=[[-1,-1],[-1,1],[1,-1],[1,1]];for(let[ne,se]of he){let Oe=x+0.5+ne*nn,Le=H+0.5+se*nn,[Se,tt]=z(Oe,Le,L),[,rt]=z(Oe,Le,L+Cs);ue(Se-de,tt+me),ue(Se+de,rt-me);let Pt='shape-rendering="geometricPrecision"';T.push(`<ellipse cx="${le(Se)}" cy="${le(tt)}" rx="${le(de)}" ry="${le(me)}" fill="${It(Re)}" ${Pt}/>`,`<rect x="${le(Se-de)}" y="${le(rt)}" width="${le(de*2)}" height="${le(tt-rt)}" fill="${It(Re)}" ${Pt}/>`,`<ellipse cx="${le(Se)}" cy="${le(rt)}" rx="${le(de)}" ry="${le(me)}" fill="${It(ve)}" ${Pt}/>`)}}else if(d==="voxel"){let de=(ne,se,Oe,Le,Se,tt)=>{let rt=(Pt,yu)=>{for(let[wu,_u]of Pt)ue(wu,_u);T.push(Pa(Pt,ye(yu)))};rt([z(se,Oe,tt),z(se,Oe,Se),z(se,Le,Se),z(se,Le,tt)],ie),rt([z(ne,Le,tt),z(ne,Le,Se),z(se,Le,Se),z(se,Le,tt)],oe),rt([z(ne,Oe,tt),z(se,Oe,tt),z(se,Le,tt),z(ne,Le,tt)],qt.shade)},me=vs,Re=_r(1,1),ve=Pe||At<L?At:null,he=Pe||et<L?et:null;if(de(x+0.5-Re/2,x+0.5+Re/2,H+0.5-Re/2,H+0.5+Re/2,L,L+me),ve!==null){let ne=_r(1,L-ve),se=(L+ve)/2;de(x+1,x+1+me,H+0.5-ne/2,H+0.5+ne/2,se-ne/2,se+ne/2)}if(he!==null){let ne=_r(1,L-he),se=(L+he)/2;de(x+0.5-ne/2,x+0.5+ne/2,H+1,H+1+me,se-ne/2,se+ne/2)}}}if(a)V.push(`<g data-color="${It(fe)}">${T.join("")}</g>`);else V.push(...T)}let Ee=2+K/2,ot=J-Ee,Ve=pe-Ee,Qe=Be-J+Ee*2,re=D-pe+Ee*2,ht=te&&p&&f&&w?`<defs><image id="${b}" href="${It(f)}" xlink:href="${It(f)}" x="0" y="0" width="${y}" height="${S}" style="image-rendering:pixelated"/></defs>`:"";return[`<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="${le(ot)} ${le(Ve)} ${le(Qe)} ${le(re)}" shape-rendering="crispEdges">`,ht,...V,"</svg>"].join("")}var Nh="hsla(278, 100%, 70%, 1)",Dh=/hsla\(278, 100%, ([\d.]+)%, 1\)/g,ln=(e)=>Ts({grid:[[{active:!0,color:Nh}]],numCols:1,numRows:1,blockStyle:e,sideLighting:0.15}).replaceAll(Dh,"hsl(var(--block-style-icon-hs, 278 100%) $1% / 1)"),Lh=[{style:"normal",label:"Normal",icon:ln("normal")},{style:"voxel",label:"Voxel",icon:ln("voxel")},{style:"lego",label:"Lego",icon:ln("lego")},{style:"jelly",label:"Jelly",icon:ln("jelly")}];var it=[{name:"Classic",colors:["hsla(278, 100%, 50%, 1)","hsla(278, 100%, 16%, 1)","hsla(278, 100%, 80%, 1)","hsla(306, 100%, 50%, 1)","hsla(28, 100%, 60%, 1)","hsla(0, 80%, 60%, 1)","hsla(278, 60%, 35%, 1)","hsla(306, 100%, 80%, 1)","hsla(306, 80%, 30%, 1)","hsla(28, 100%, 80%, 1)"]},{name:"Super Mario",colors:["hsla(218, 100%, 68%, 1)","hsla(0, 85%, 55%, 1)","hsla(225, 85%, 45%, 1)","hsla(28, 100%, 80%, 1)","hsla(22, 60%, 32%, 1)","hsla(120, 70%, 40%, 1)","hsla(45, 100%, 55%, 1)","hsla(0, 0%, 100%, 1)","hsla(0, 0%, 8%, 1)","hsla(22, 45%, 22%, 1)"]},{name:"Pac-Man",colors:["hsla(60, 100%, 50%, 1)","hsla(240, 100%, 56%, 1)","hsla(0, 100%, 50%, 1)","hsla(300, 100%, 86%, 1)","hsla(180, 100%, 50%, 1)","hsla(32, 100%, 66%, 1)","hsla(0, 0%, 100%, 1)","hsla(0, 0%, 5%, 1)","hsla(240, 100%, 25%, 1)","hsla(60, 100%, 80%, 1)"]},{name:"Grayscale",colors:["hsla(0, 0%, 98%, 1)","hsla(0, 0%, 92%, 1)","hsla(0, 0%, 86%, 1)","hsla(0, 0%, 80%, 1)","hsla(0, 0%, 74%, 1)","hsla(0, 0%, 68%, 1)","hsla(0, 0%, 62%, 1)","hsla(0, 0%, 56%, 1)","hsla(0, 0%, 50%, 1)","hsla(0, 0%, 44%, 1)"]},{name:"Sunset",colors:["hsla(45, 100%, 70%, 1)","hsla(28, 100%, 60%, 1)","hsla(12, 90%, 55%, 1)","hsla(350, 80%, 55%, 1)","hsla(320, 60%, 45%, 1)","hsla(280, 45%, 25%, 1)","hsla(50, 100%, 88%, 1)","hsla(38, 100%, 78%, 1)","hsla(20, 100%, 68%, 1)","hsla(5, 85%, 45%, 1)"]},{name:"Ocean",colors:["hsla(180, 70%, 80%, 1)","hsla(190, 75%, 60%, 1)","hsla(205, 75%, 50%, 1)","hsla(215, 70%, 40%, 1)","hsla(225, 65%, 28%, 1)","hsla(235, 55%, 15%, 1)","hsla(175, 60%, 92%, 1)","hsla(185, 70%, 70%, 1)","hsla(195, 75%, 55%, 1)","hsla(200, 70%, 45%, 1)"]},{name:"Pastel",colors:["hsla(350, 100%, 88%, 1)","hsla(30, 100%, 85%, 1)","hsla(55, 85%, 82%, 1)","hsla(135, 60%, 82%, 1)","hsla(200, 75%, 85%, 1)","hsla(275, 70%, 85%, 1)","hsla(15, 100%, 86%, 1)","hsla(45, 100%, 85%, 1)","hsla(90, 55%, 82%, 1)","hsla(160, 55%, 82%, 1)"]},{name:"Gameboy",colors:["hsla(85, 60%, 85%, 1)","hsla(88, 58%, 78%, 1)","hsla(90, 56%, 72%, 1)","hsla(93, 55%, 66%, 1)","hsla(95, 55%, 60%, 1)","hsla(98, 53%, 54%, 1)","hsla(102, 52%, 48%, 1)","hsla(105, 51%, 42%, 1)","hsla(110, 50%, 35%, 1)","hsla(113, 52%, 30%, 1)"]},{name:"Neon",colors:["hsla(320, 100%, 60%, 1)","hsla(180, 100%, 55%, 1)","hsla(60, 100%, 60%, 1)","hsla(270, 100%, 65%, 1)","hsla(130, 100%, 55%, 1)","hsla(25, 100%, 55%, 1)","hsla(300, 100%, 50%, 1)","hsla(200, 100%, 60%, 1)","hsla(90, 100%, 55%, 1)","hsla(45, 100%, 55%, 1)"]},{name:"Forest",colors:["hsla(80, 35%, 75%, 1)","hsla(100, 40%, 50%, 1)","hsla(120, 45%, 30%, 1)","hsla(140, 35%, 18%, 1)","hsla(30, 40%, 35%, 1)","hsla(25, 50%, 22%, 1)","hsla(70, 40%, 88%, 1)","hsla(90, 45%, 62%, 1)","hsla(110, 45%, 40%, 1)","hsla(130, 40%, 24%, 1)"]},{name:"Candy",colors:["hsla(340, 100%, 80%, 1)","hsla(320, 90%, 65%, 1)","hsla(280, 85%, 65%, 1)","hsla(200, 90%, 70%, 1)","hsla(165, 75%, 65%, 1)","hsla(50, 100%, 70%, 1)","hsla(350, 100%, 90%, 1)","hsla(0, 90%, 70%, 1)","hsla(30, 100%, 72%, 1)","hsla(60, 90%, 75%, 1)"]},{name:"Cobalt",colors:["hsla(215, 85%, 94%, 1)","hsla(215, 85%, 86%, 1)","hsla(215, 85%, 78%, 1)","hsla(215, 85%, 70%, 1)","hsla(215, 85%, 62%, 1)","hsla(215, 85%, 54%, 1)","hsla(215, 85%, 46%, 1)","hsla(215, 85%, 40%, 1)","hsla(215, 85%, 34%, 1)","hsla(215, 85%, 28%, 1)"]},{name:"Terracotta",colors:["hsla(25, 55%, 78%, 1)","hsla(20, 65%, 55%, 1)","hsla(15, 60%, 40%, 1)","hsla(15, 50%, 25%, 1)","hsla(35, 40%, 60%, 1)","hsla(0, 25%, 12%, 1)","hsla(30, 60%, 88%, 1)","hsla(25, 60%, 68%, 1)","hsla(18, 65%, 48%, 1)","hsla(12, 55%, 32%, 1)"]},{name:"Vaporwave",colors:["hsla(330, 100%, 78%, 1)","hsla(290, 80%, 60%, 1)","hsla(200, 90%, 72%, 1)","hsla(170, 70%, 60%, 1)","hsla(40, 90%, 78%, 1)","hsla(260, 45%, 18%, 1)","hsla(320, 100%, 88%, 1)","hsla(310, 90%, 70%, 1)","hsla(280, 70%, 45%, 1)","hsla(250, 60%, 55%, 1)"]},{name:"Mint",colors:["hsla(160, 65%, 88%, 1)","hsla(165, 60%, 65%, 1)","hsla(170, 55%, 45%, 1)","hsla(175, 50%, 28%, 1)","hsla(180, 30%, 15%, 1)","hsla(55, 60%, 90%, 1)","hsla(155, 70%, 95%, 1)","hsla(160, 60%, 78%, 1)","hsla(165, 55%, 55%, 1)","hsla(170, 50%, 36%, 1)"]},{name:"Sakura",colors:["hsla(340, 100%, 93%, 1)","hsla(345, 85%, 80%, 1)","hsla(350, 70%, 65%, 1)","hsla(355, 60%, 48%, 1)","hsla(30, 40%, 32%, 1)","hsla(120, 30%, 42%, 1)","hsla(340, 100%, 97%, 1)","hsla(342, 90%, 87%, 1)","hsla(348, 80%, 72%, 1)","hsla(352, 65%, 56%, 1)"]},{name:"Desert",colors:["hsla(40, 55%, 82%, 1)","hsla(30, 50%, 65%, 1)","hsla(15, 45%, 48%, 1)","hsla(90, 30%, 45%, 1)","hsla(95, 25%, 22%, 1)","hsla(200, 40%, 72%, 1)","hsla(42, 60%, 92%, 1)","hsla(35, 55%, 74%, 1)","hsla(25, 50%, 56%, 1)","hsla(18, 45%, 38%, 1)"]},{name:"Galaxy",colors:["hsla(265, 70%, 82%, 1)","hsla(275, 75%, 55%, 1)","hsla(290, 85%, 35%, 1)","hsla(220, 70%, 40%, 1)","hsla(230, 60%, 12%, 1)","hsla(50, 90%, 82%, 1)","hsla(260, 80%, 92%, 1)","hsla(270, 75%, 68%, 1)","hsla(285, 80%, 45%, 1)","hsla(300, 85%, 28%, 1)"]},{name:"Ember",colors:["hsla(25, 100%, 95%, 1)","hsla(25, 100%, 88%, 1)","hsla(25, 100%, 80%, 1)","hsla(25, 100%, 72%, 1)","hsla(25, 100%, 65%, 1)","hsla(25, 100%, 58%, 1)","hsla(25, 100%, 50%, 1)","hsla(25, 100%, 44%, 1)","hsla(25, 100%, 38%, 1)","hsla(25, 100%, 32%, 1)"]},{name:"Watermelon",colors:["hsla(350, 85%, 80%, 1)","hsla(350, 75%, 62%, 1)","hsla(355, 65%, 45%, 1)","hsla(90, 45%, 62%, 1)","hsla(110, 50%, 30%, 1)","hsla(0, 0%, 8%, 1)","hsla(350, 90%, 90%, 1)","hsla(350, 80%, 70%, 1)","hsla(352, 70%, 55%, 1)","hsla(358, 60%, 38%, 1)"]}];var Fh=16777216,Gh=16;function Sr(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function Uh(e){if(!Array.isArray(e))return[...it[0].colors];let t=e.slice(0,Gh).flatMap((r)=>{if(typeof r==="string"&&pt(r))return[r];if(Sr(r)&&pt(r.color)&&typeof r.opacity==="number"&&Number.isFinite(r.opacity)&&r.opacity>=0&&r.opacity<=1)return[r.color];return[]});return t.length>0?t:[...it[0].colors]}function jh(e){if(!Array.isArray(e.artboards))return 0;return Number.isInteger(e.activeArtboard)&&Number(e.activeArtboard)>=0&&Number(e.activeArtboard)<e.artboards.length?Number(e.activeArtboard):0}function Hh(e){let t=Sr(e)?e:{};return{saturation:nt(t.saturation),lightness:nt(t.lightness)}}function cn(e){if(e.length>Fh)throw Error("Draft is too large");let t=JSON.parse(e);if(!Sr(t)||t.version!==1)throw Error("Not a Flatblox version-1 draft");let r=sn(t.grid),n=t.gridSize===void 0?r.length:t.gridSize;if(!Number.isInteger(n)||Number(n)<1||Number(n)>Ie||r.length!==n||!r.every((o)=>o.length===n))throw Error("Draft contains an invalid grid");let i=Uh(t.palette),s=pt(t.activeColor)?t.activeColor:i[0];return{filename:typeof t.filename==="string"?tn(t.filename):"untitled",grid:r,palette:i,activeColor:s,paletteColorAdjustment:Hh(t.paletteColorAdjustment),draft:{data:t,activeArtboard:jh(t)}}}function Kh(e,t){let r=Array.isArray(t)?t:[];return e.map((n,i)=>{let s=r[i];if(!Sr(s))return{color:n,opacity:1};let o=typeof s.opacity==="number"&&Number.isFinite(s.opacity)&&s.opacity>=0&&s.opacity<=1?s.opacity:1;return{...s,color:n,opacity:o}})}function Wh(e,t){let r=e.draft?.data.artboards,n=Array.isArray(r)?[...r]:[],i=n.length>0?Math.min(e.draft?.activeArtboard??0,n.length-1):0;if(n.length===0)n.push(t);else{let s=n[i];n[i]=Sr(s)&&"grid"in s?{...s,grid:t}:t}return{artboards:n,activeArtboard:i}}function un(e){let t=e.draft?.data,r=Cr(e.grid),n=Kh(e.palette,t?.palette),{artboards:i,activeArtboard:s}=Wh(e,r),o=e.paletteColorAdjustment??{saturation:0,lightness:0},a=Sr(t?.paletteColorAdjustment)?t.paletteColorAdjustment:{};return JSON.stringify({...t,version:1,grid:r,gridSize:e.grid.length,palette:n,paletteColorAdjustment:{...a,saturation:nt(o.saturation),lightness:nt(o.lightness)},activeColor:e.activeColor,artboards:i,activeArtboard:s,filename:e.filename,savedAt:new Date().toISOString()},null,2)}function Ir(e){return e==="rectangle"||e==="circle"}function Yh(e,t){let r=Math.min(e.x,t.x),n=Math.max(e.x,t.x),i=Math.min(e.y,t.y),s=Math.max(e.y,t.y),o=[];for(let a=r;a<=n;a++)if(o.push({x:a,y:i}),s!==i)o.push({x:a,y:s});for(let a=i+1;a<s;a++)if(o.push({x:r,y:a}),n!==r)o.push({x:n,y:a});return o}function Qh(e,t){let r=[],n=(p,v)=>r.push({x:p,y:v}),i=Math.min(e.x,t.x),s=Math.max(e.x,t.x),o=Math.min(e.y,t.y),a=Math.max(e.y,t.y),l=s-i,c=a-o;if(l===0||c===0){for(let p=o;p<=a;p++)for(let v=i;v<=s;v++)n(v,p);return r}let u=c&1,d=4*(1-l)*c*c,A=4*(u+1)*l*l,m=d+A+u*l*l;o+=c+1>>1,a=o-u;let g=8*l*l,f=8*c*c;do{n(s,o),n(i,o),n(i,a),n(s,a);let p=2*m;if(p<=A)o++,a--,A+=g,m+=A;if(p>=d||2*m>A)i++,s--,d+=f,m+=d}while(i<=s);while(o-a<c)n(i-1,o),n(s+1,o),o++,n(i-1,a),n(s+1,a),a--;return r}function Bs(e,t,r){let n=e==="circle"?Qh(t,r):Yh(t,r),i=new Set;return n.filter((s)=>{let o=`${s.x}:${s.y}`;if(i.has(o))return!1;return i.add(o),!0})}var Ma=16,Jh=100;function La(e,t,r){return Math.max(t,Math.min(r,e))}function dn(e){return e.map((t)=>t.map((r)=>({...r})))}function $h(e){return Array.from({length:e},()=>Array.from({length:e},()=>({active:!1,color:null})))}function Fa(e){if(!Number.isInteger(e)||e<1||e>Ie)throw Error(`Grid size must be between 1 and ${Ie}`);return e}function hn(e=Ma){let t=[...it[0].colors];return{filename:"untitled",grid:$h(Fa(e)),palette:t,activeColor:t[0],paletteColorAdjustment:{saturation:0,lightness:0}}}function ei(e,t,r,n){let i=[t];if(r)i.push({x:e-1-t.x,y:t.y});if(n)i.push({x:t.x,y:e-1-t.y});if(r&&n)i.push({x:e-1-t.x,y:e-1-t.y});return[...new Map(i.map((s)=>[`${s.x}:${s.y}`,s])).values()]}class Mt{palette;paletteColorAdjustment;cursor={x:0,y:0};tool="draw";mirrorX=!1;mirrorY=!1;activeColorIndex;currentId=0;nextId=1;savedId=0;currentFilename;savedFilename;undoStack=[];redoStack=[];currentGrid;draft;constructor(e){let t=Fa(e.grid.length);if(!e.grid.every((n)=>n.length===t))throw Error("Grid must be square");if(e.palette.length===0)throw Error("Palette is empty");this.currentFilename=e.filename||"untitled",this.savedFilename=this.currentFilename,this.palette=[...e.palette],this.paletteColorAdjustment={saturation:nt(e.paletteColorAdjustment?.saturation),lightness:nt(e.paletteColorAdjustment?.lightness)},this.draft=e.draft,this.currentGrid=dn(e.grid);let r=this.palette.indexOf(e.activeColor);this.activeColorIndex=r>=0?r:0}get grid(){return this.currentGrid}get filename(){return this.currentFilename}get size(){return this.currentGrid.length}get activeColor(){return this.palette[this.activeColorIndex]}get selectedColorIndex(){return this.activeColorIndex}get canUndo(){return this.undoStack.length>0}get canRedo(){return this.redoStack.length>0}get dirty(){return this.currentId!==this.savedId||this.currentFilename!==this.savedFilename}get revision(){return{id:this.currentId,filename:this.currentFilename}}rename(e){let t=e.trim();if(!t||t===this.currentFilename)return!1;return this.currentFilename=t,!0}moveCursor(e,t){this.setCursor(this.cursor.x+e,this.cursor.y+t)}setCursor(e,t){this.cursor={x:La(Math.round(e),0,this.size-1),y:La(Math.round(t),0,this.size-1)}}setTool(e){this.tool=e}selectColor(e){let t=this.palette.length;this.activeColorIndex=(Math.round(e)%t+t)%t}selectNextColor(e){this.selectColor(this.activeColorIndex+e)}toggleMirrorX(){this.mirrorX=!this.mirrorX}toggleMirrorY(){this.mirrorY=!this.mirrorY}applyAtCursor(e=this.tool){return this.applyAt(this.cursor.x,this.cursor.y,e)}applyAt(e,t,r=this.tool){if(e<0||e>=this.size||t<0||t>=this.size)return!1;return this.commit(()=>r==="fill"?this.fill(e,t):this.paintMirrored(e,t,r==="erase"?null:this.activeColor))}applyShape(e,t,r){if(!Ir(e))return!1;let n=this.shapePreview(e,t,r);if(n.length===0)return!1;return this.commit(()=>{let i=!1;for(let s of n)if(this.paintMirrored(s.x,s.y,this.activeColor))i=!0;return i})}shapePreview(e,t,r){let n=(i)=>i.x>=0&&i.x<this.size&&i.y>=0&&i.y<this.size;return Bs(e,t,r).filter(n)}commit(e){let t=dn(this.currentGrid);if(!e())return!1;if(this.undoStack.push({grid:t,id:this.currentId}),this.undoStack.length>Jh)this.undoStack.shift();return this.redoStack=[],this.currentId=this.nextId++,!0}undo(){let e=this.undoStack.pop();if(!e)return!1;return this.redoStack.push({grid:dn(this.currentGrid),id:this.currentId}),this.currentGrid=e.grid,this.currentId=e.id,!0}redo(){let e=this.redoStack.pop();if(!e)return!1;return this.undoStack.push({grid:dn(this.currentGrid),id:this.currentId}),this.currentGrid=e.grid,this.currentId=e.id,!0}markSaved(e=this.revision){if(e.id!==this.currentId||e.filename!==this.currentFilename)return!1;return this.savedId=e.id,this.savedFilename=e.filename,!0}toDocument(){return{filename:this.currentFilename,grid:dn(this.currentGrid),palette:[...this.palette],activeColor:this.activeColor,paletteColorAdjustment:{...this.paletteColorAdjustment},...this.draft?{draft:{data:this.draft.data,activeArtboard:this.draft.activeArtboard}}:{}}}paintMirrored(e,t,r){let n=!1;for(let i of ei(this.size,{x:e,y:t},this.mirrorX,this.mirrorY)){let s=this.currentGrid[i.y][i.x],o=r!==null;if(s.active===o&&s.color===r&&s.tileIndex==null)continue;this.currentGrid[i.y][i.x]=o?{...s,active:o,color:r,tileIndex:null}:{active:o,color:r},n=!0}return n}fill(e,t){let r=this.currentGrid[t][e];if(r.active&&r.color===this.activeColor&&r.tileIndex==null)return!1;let{active:n,color:i}=r,s=r.tileIndex??null,o=[{x:e,y:t}],a=new Set,l=!1;while(o.length>0){let c=o.pop();if(c.x<0||c.x>=this.size||c.y<0||c.y>=this.size)continue;let u=c.y*this.size+c.x;if(a.has(u))continue;a.add(u);let d=this.currentGrid[c.y][c.x];if(d.active!==n||n&&(d.color!==i||(d.tileIndex??null)!==s))continue;this.currentGrid[c.y][c.x]={...d,active:!0,color:this.activeColor,tileIndex:null},l=!0,o.push({x:c.x+1,y:c.y},{x:c.x-1,y:c.y},{x:c.x,y:c.y+1},{x:c.x,y:c.y-1})}return l}}import{createConnection as Zh}from"net";var Xh="127.0.0.1",Vh=47642,zh=3000,qh=32,eA=1048576,tA=16384,Ga=[0.57,0.57,0.6,1],Ua=new Map;function rA(e){if(!e)return[...Ga];let t=Ua.get(e);if(!t){let r=zt(e);t=r?[r.r/255,r.g/255,r.b/255,r.a]:[...Ga],Ua.set(e,t)}return t}function nA(e){if(!e?.active)return{active:!1,color:null,depth:1,mirrorZ:!1};return{active:!0,color:rA(e.color),depth:ut(e.depth),mirrorZ:!!e.mirrorZ}}function Ha(e,t,r){return{x:t%r,y:Math.floor(t/r),...e}}function iA(e,t){let r=e.color===t.color||!!e.color&&!!t.color&&e.color.every((n,i)=>n===t.color?.[i]);return e.active===t.active&&r&&e.depth===t.depth&&e.mirrorZ===t.mirrorZ}function Ka(e){let{saturation:t,lightness:r}=e.paletteColorAdjustment??{saturation:0,lightness:0},n=Vt(e.grid,t,r),i=n.length,s=n[0]?.length??0;return Array.from({length:s*i},(o,a)=>nA(n[Math.floor(a/s)]?.[a%s]))}function sA(e){let t=e.grid.length,r=e.grid[0]?.length??0,n=Ka(e);return{message:{protocol:zn,type:"snapshot",columns:r,rows:t,cells:n.flatMap((i,s)=>i.active?[Ha(i,s,r)]:[])},state:n}}function oA(e,t,r){return t.flatMap((n,i)=>e[i]&&iA(e[i],n)?[]:[Ha(n,i,r)])}function ja(e){return(typeof e==="object"&&e!==null&&"code"in e&&typeof e.code==="string"?e.code:"")==="ECONNREFUSED"?"Blender add-on not found. Enable Flatblox Live in Blender.":"Could not connect to the Blender add-on."}class Os{document;connector;socket=null;status={state:"disconnected"};listeners=new Set;connectPromise=null;resolveConnect=null;connectTimer=null;patchTimer=null;handshakeBuffer="";previousGrid=null;previousColumns=0;previousRows=0;pendingCells=new Map;constructor(e,t=Zh){this.document=e,this.connector=t}getStatus(){return{...this.status}}onStatus(e){return this.listeners.add(e),()=>this.listeners.delete(e)}connect(){if(this.status.state==="connected")return Promise.resolve(this.getStatus());if(this.connectPromise)return this.connectPromise;this.disconnectSocket(),this.resetStream(),this.handshakeBuffer="",this.setStatus({state:"connecting"}),this.connectPromise=new Promise((t)=>{this.resolveConnect=t});let e;try{e=this.connector({host:Xh,port:Vh})}catch(t){let r={state:"error",message:ja(t)};return this.setStatus(r),this.finishConnect(r),Promise.resolve(r)}return this.socket=e,e.setNoDelay(!0),e.on("data",(t)=>this.handleHandshake(e,t)),e.on("error",(t)=>this.fail(e,ja(t))),e.on("close",()=>this.handleClose(e)),this.connectTimer=setTimeout(()=>{this.fail(e,"Timed out waiting for the Blender add-on.")},zh),this.connectPromise}disconnect(){this.disconnectSocket(),this.resetStream();let e={state:"disconnected"};return this.setStatus(e),this.finishConnect(e),e}sync(){if(this.status.state!=="connected"||!this.socket)return;if(!this.patchTimer)this.patchTimer=setTimeout(()=>this.flushPatch(),qh)}collectChanges(){let e=this.document(),t=e.grid.length,r=e.grid[0]?.length??0;if(!this.previousGrid||r!==this.previousColumns||t!==this.previousRows){this.sendSnapshot(e);return}let n=Ka(e);for(let i of oA(this.previousGrid,n,r))this.pendingCells.set(i.y*r+i.x,i);this.previousGrid=n}dispose(){this.disconnect(),this.listeners.clear()}handleHandshake(e,t){if(this.socket!==e||this.status.state!=="connecting")return;if(this.handshakeBuffer+=t.toString("utf8"),Buffer.byteLength(this.handshakeBuffer)>tA){this.fail(e,"Blender sent an invalid handshake.");return}let r=this.handshakeBuffer.indexOf(`
10
10
  `);if(r<0)return;let n;try{n=JSON.parse(this.handshakeBuffer.slice(0,r))}catch{this.fail(e,"Blender sent an invalid handshake.");return}if(typeof n!=="object"||n===null||!("type"in n)||n.type!=="hello"||!("protocol"in n)||n.protocol!==zn){this.fail(e,"The Blender add-on uses an incompatible protocol.");return}this.clearConnectTimer(),this.handshakeBuffer="";let i={state:"connected",message:"Live in Blender"};this.setStatus(i),this.finishConnect(i),this.sendSnapshot(this.document())}handleClose(e){if(this.socket!==e)return;this.socket=null,this.clearConnectTimer(),this.resetStream();let t=this.status.state==="connecting"?{state:"error",message:"Blender closed the connection during setup."}:{state:"disconnected",message:"Blender disconnected."};this.setStatus(t),this.finishConnect(t)}sendSnapshot(e){if(this.patchTimer)clearTimeout(this.patchTimer);this.patchTimer=null,this.pendingCells.clear();let{message:t,state:r}=sA(e);if(this.previousGrid=r,this.previousColumns=t.columns,this.previousRows=t.rows,!this.send(t))this.previousGrid=null}flushPatch(){if(this.patchTimer=null,this.status.state==="connected"&&this.socket)this.collectChanges();if(this.status.state!=="connected"||this.pendingCells.size===0){this.pendingCells.clear();return}let e={protocol:zn,type:"patch",columns:this.previousColumns,rows:this.previousRows,cells:[...this.pendingCells.values()]};if(this.pendingCells.clear(),!this.send(e))this.previousGrid=null}send(e){if(!this.socket?.writable||this.status.state!=="connected")return!1;let t=Buffer.from(`${JSON.stringify(e)}
11
- `);if(t.length>eA)return!1;try{return this.socket.write(t),!0}catch{return!1}}fail(e,t){if(this.socket!==e)return;this.socket=null,this.clearConnectTimer(),this.resetStream(),e.destroy();let r={state:"error",message:t};this.setStatus(r),this.finishConnect(r)}disconnectSocket(){let e=this.socket;this.socket=null,this.clearConnectTimer(),e?.destroy()}resetStream(){if(this.patchTimer)clearTimeout(this.patchTimer);this.patchTimer=null,this.previousGrid=null,this.previousColumns=0,this.previousRows=0,this.pendingCells.clear()}clearConnectTimer(){if(this.connectTimer)clearTimeout(this.connectTimer);this.connectTimer=null}finishConnect(e){this.resolveConnect?.({...e}),this.resolveConnect=null,this.connectPromise=null}setStatus(e){this.status=e;for(let t of this.listeners)t({...e})}}import{NativeImage as Qa,parseColor as Ns}from"@opentui/core";import{parseColor as aA,Renderable as lA,RGBA as cA}from"@opentui/core";var Ps=new WeakMap;function Kt(e){let t=e.terminalWidth??e.width,r=e.terminalHeight??e.height,n=e.resolution;if(!n||t<=0||r<=0||n.width<=0||n.height<=0)return Ps.get(e)??null;let i=n.width/t,s=n.height/r,o=Ps.get(e);if(o&&o.width===i&&o.height===s)return o;let a=Number.isFinite(i)&&Number.isFinite(s)&&i>0&&s>0?{width:i,height:s}:null;if(a)Ps.set(e,a);return a??o??null}function ti(e){let t=Kt(e);if(!t)return 2;let r=t.height/t.width;return Number.isFinite(r)&&r>=0.5&&r<=4?r:2}function xr(e){if(!e||e.image_protocol==="blocks")return!1;if(e.image_protocol==="kitty"||e.image_protocol==="sixel")return!0;if(e.multiplexer==="tmux")return!1;return Boolean(e.kitty_graphics||e.sixel)}function ri(e){return Boolean(Kt(e)&&xr(e.capabilities))}var uA={width:8,height:16};function dA(e,t,r,n,i,s,o="center"){let a=Math.max(1,Math.round(e*i)),l=Math.max(1,Math.round(t*s)),c=Math.min(a/r,l/n),u=Math.max(1,Math.min(a,Math.round(r*c))),d=Math.max(1,Math.min(l,Math.round(n*c)));return{pixelWidth:a,pixelHeight:l,fittedWidth:u,fittedHeight:d,left:o==="center"?Math.floor((a-u)/2):0,top:Math.floor((l-d)/2)}}class An extends lA{_source=null;_background=cA.fromInts(0,0,0);_backgroundKey="";_kernel="default";_align="center";frame=null;frameCache=null;constructor(e,t){super(e,{...t,buffered:!0});if(this._source=t.source??null,t.background)this.background=t.background;if(t.kernel)this._kernel=t.kernel;if(t.align)this._align=t.align}set source(e){let t=e??null;if(t===this._source)return;this._source=t,this.releaseFrame(),this.requestRender()}get source(){return this._source}set background(e){if(!e||e===this._backgroundKey)return;this._backgroundKey=e,this._background=aA(e),this.releaseFrame(),this.requestRender()}set kernel(e){if(!e||e===this._kernel)return;this._kernel=e,this.releaseFrame(),this.requestRender()}set align(e){if(!e||e===this._align)return;this._align=e,this.releaseFrame(),this.requestRender()}renderSelf(e){e.clear(this._background);let t=this._source;if(!t||this.width<=0||this.height<=0||!xr(this._ctx.capabilities)){this.releaseFrame();return}let r=Kt(this._ctx)??uA,n=dA(this.width,this.height,t.width,t.height,r.width,r.height,this._align),i=this._backgroundKey,s=this.frameCache;if(!(this.frame&&s&&s.source===t&&s.pixelWidth===n.pixelWidth&&s.pixelHeight===n.pixelHeight&&s.background===i)){let a=t.resize({width:n.fittedWidth,height:n.fittedHeight,kernel:this._kernel}),l=a.extend({left:n.left,top:n.top,right:n.pixelWidth-n.fittedWidth-n.left,bottom:n.pixelHeight-n.fittedHeight-n.top,background:this._background.toInts()});if(l!==a)a.dispose();this.releaseFrame(),this.frame=l,this.frameCache={source:t,pixelWidth:n.pixelWidth,pixelHeight:n.pixelHeight,background:i}}if(!this.frame)return;e.drawImage(this.frame,0,0,this.width,this.height,n.pixelWidth,n.pixelHeight,0,0,n.pixelWidth,n.pixelHeight,"auto")}releaseFrame(){this.frame?.dispose(),this.frame=null,this.frameCache=null}destroySelf(){this.releaseFrame(),super.destroySelf()}}var Wa=new WeakMap;function ni(){let e=wt(),t=Wa.get(e);if(t)return t;let r=Zt(()=>{let[n,i]=Z(xr(e.capabilities));return e.on("capabilities",()=>i(xr(e.capabilities))),n});return Wa.set(e,r),r}Lt({fitted_image:An});var Ds=32;function hA(e){let[t,r,n]=Ns(e).toInts();return Qa.fromRgba(new Uint8Array([t,r,n,255]),1,1)}function AA(e,t,r=Ds){let n=Ns(e).toInts(),i=Ns(t).toInts(),s=new Uint8Array(r*r*4),o=r/2;for(let a=0;a<r;a++)for(let l=0;l<r;l++){let c=Math.hypot(l+0.5-o,a+0.5-o),u=Math.max(0,Math.min(1,o-c+0.5)),d=(a*r+l)*4;for(let A=0;A<3;A++)s[d+A]=Math.round(i[A]+(n[A]-i[A])*u);s[d+3]=255}return s}var Ya=new Map;function fA(e,t){let r=`${e}|${t}`,n=Ya.get(r);if(!n)n=AA(e,t),Ya.set(r,n);return Qa.fromRgba(n,Ds,Ds)}function fn(e){let t=ni(),r=()=>e.width??2,n=()=>e.shape??"square",i=Y(()=>{let s=n()==="circle"?fA(e.color,e.background):hA(e.color);return ze(()=>s.dispose()),s});return Q(Me,{get when(){return t()},get fallback(){return(()=>{var s=I("text");return G(s,(()=>{var o=mt(()=>n()==="circle");return()=>o()?"\u2B24":"\u2588".repeat(r())})()),ge((o)=>h(s,"fg",e.color,o)),s})()},get children(){var s=I("fitted_image");return h(s,"height",1),h(s,"align","start"),ge((o)=>{var a=r(),l=i(),c=e.background,u=n()==="circle"?"default":"nearest";return a!==o.e&&(o.e=h(s,"width",a,o.e)),l!==o.t&&(o.t=h(s,"source",l,o.t)),c!==o.a&&(o.a=h(s,"background",c,o.a)),u!==o.o&&(o.o=h(s,"kernel",u,o.o)),o},{e:void 0,t:void 0,a:void 0,o:void 0}),s}})}function tr(e){let t=e.name.toLowerCase();return t==="return"||t==="enter"||t==="space"||e.sequence===" "}function rr(e){switch(e){case"left":case"h":return{dx:-1,dy:0};case"right":case"l":return{dx:1,dy:0};case"up":case"k":return{dx:0,dy:-1};case"down":case"j":return{dx:0,dy:1};default:return}}import{MouseButton as Ls,NativeImage as $a,parseColor as EA,Renderable as SA,RGBA as gn,TextAttributes as Za}from"@opentui/core";import{RGBA as gA}from"@opentui/core";var mA={r:30,g:33,b:48,a:1},pA={r:42,g:46,b:64,a:1},Ja=new Map;function bA(e){let t=Ja.get(e);if(t!==void 0)return t;let r=zt(e);return Ja.set(e,r),r}function yA(e,t){return(e+t)%2===0?mA:pA}function wA(e,t){let r=Math.max(0,Math.min(1,e.a));return{r:Math.round(e.r*r+t.r*(1-r)),g:Math.round(e.g*r+t.g*(1-r)),b:Math.round(e.b*r+t.b*(1-r)),a:1}}function _A(e,t,r){let n=yA(t,r),i=e?.active&&e.color?bA(e.color):null;return i?wA(i,n):n}var vA=[new Map,new Map],CA=4096;function Wt(e,t,r){let n=vA[(t+r)%2],i=e?.active&&e.color?e.color:"",s=n.get(i);if(!s){if(n.size>=CA)n.clear();let o=_A(e,t,r);s=gA.fromInts(o.r,o.g,o.b),n.set(i,s)}return s}var ii=gn.fromInts(22,8,33),Xa=gn.fromInts(39,14,57),Ms=4,IA=gn.fromInts(255,255,255),xA=gn.fromInts(8,10,16),kA=0.25,si=512,Va=16384,RA=25000000;function za(e,t){if(!e||e.points.length===0)return null;let r=new Set;for(let n of e.points)r.add(n.y*t+n.x);return{cells:r,color:EA(e.color)}}function Fs(e){let[t,r,n]=e.toInts(),i=(0.2126*t+0.7152*r+0.0722*n)/255,[s,o,a]=i>0.55?xA.toInts():IA.toInts(),l=(c,u)=>Math.round(c+(u-c)*kA);return gn.fromInts(l(t,s),l(r,o),l(n,a))}function qa(e,t,r){return Math.max(0,Math.min(r-t,e-Math.floor(t/2)))}function TA(e,t){let r=Math.ceil(e/si)*si,n=Math.ceil(t/si)*si;if(r>Va||n>Va||r*n>RA)return null;return{width:r,height:n}}function BA(e,t,r,n,i){let o=Math.max(1,Math.floor(n)),a=Math.max(1,Math.round(o*2/i)),l=Math.min(r,Math.floor(e/o)),c=Math.min(r,Math.floor(t*2/a)),u=l*o,d=c*a;return{columns:l,pixelRows:c,columnZoom:o,subrowZoom:a,renderedColumns:u,renderedSubrows:d,terminalRows:Math.ceil(d/2)}}function OA(e,t,r,n,i,s){let o=Math.max(1,Math.floor(n)),a=Math.max(1,Math.round(o*i)),l=Math.min(r,Math.floor(e/o)),c=Math.min(r,Math.floor(t*s/a)),u=l*a,d=c*a,A=d*2/s;return{columns:l,pixelRows:c,columnZoom:o,subrowZoom:a*2/s,renderedColumns:l*o,renderedSubrows:A,terminalRows:Math.ceil(d/s),pixelWidth:u,pixelHeight:d}}class Gs extends SA{textFrame=null;artworkImage=null;artworkImageCache=null;worldImage=null;worldImageSide=0;worldImageWidth=0;worldImageHeight=0;currentModel={grid:[],cursor:{x:0,y:0},zoom:1};cellHandler;viewport={originX:0,originY:0,startX:0,startY:0,columns:0,pixelRows:0,columnZoom:1,subrowZoom:1,renderedSubrows:0};constructor(e,t){super(e,{...t,buffered:!0});if(t.model)this.currentModel=t.model;this.cellHandler=t.onCell,this.onMouseDown=(r)=>this.handleMouse(r)}set model(e){if(!e)return;this.currentModel=e,this.requestRender()}set onCell(e){this.cellHandler=e}sameTextFrame(e){let t=this.currentModel,r=this.textFrame;if(r&&r.grid===t.grid&&r.revision===t.revision&&r.preview===t.preview&&r.cursorX===t.cursor.x&&r.cursorY===t.cursor.y&&r.zoom===t.zoom&&r.width===this.width&&r.height===this.height&&r.cellAspect===e)return!0;return this.textFrame={grid:t.grid,revision:t.revision,preview:t.preview,cursorX:t.cursor.x,cursorY:t.cursor.y,zoom:t.zoom,width:this.width,height:this.height,cellAspect:e},!1}renderSelf(e){let t=this.currentModel.grid.length,r=ti(this._ctx),n=Kt(this._ctx),i=n!==null&&ri(this._ctx);if(i)this.textFrame=null;else if(this.sameTextFrame(r))return;if(e.clear(ii),t===0||this.width<=0||this.height<=0){this.viewport.columns=0,this.viewport.pixelRows=0;return}let s=n&&i?OA(this.width,this.height,t,this.currentModel.zoom,n.width,n.height):null,o=s??BA(this.width,this.height,t,this.currentModel.zoom,r),{columns:a,pixelRows:l}=o;if(a===0||l===0){this.viewport.columns=0,this.viewport.pixelRows=0,this.viewport.columnZoom=o.columnZoom,this.viewport.subrowZoom=o.subrowZoom,this.viewport.renderedSubrows=0;return}let{renderedColumns:c,renderedSubrows:u,terminalRows:d}=o,A=qa(this.currentModel.cursor.x,a,t),m=qa(this.currentModel.cursor.y,l,t),g=Math.floor((this.width-c)/2),f=Math.floor((this.height-d)/2);if(s&&n){if(!this.drawWorldGridImage(e,g,f,n.width,n.height))this.drawWorldGrid(e,g,f,r)}else this.releaseWorldImage(),this.drawWorldGrid(e,g,f,r);if(this.viewport={originX:g,originY:f,startX:A,startY:m,columns:a,pixelRows:l,columnZoom:o.columnZoom,subrowZoom:o.subrowZoom,renderedSubrows:u},s){this.drawArtworkImage(e,s,g,f,A,m);return}this.releaseArtworkImage();let{grid:p,cursor:v}=this.currentModel,y=za(this.currentModel.preview,t),{subrowZoom:S,columnZoom:_}=o;for(let b=0;b<d;b++){let w=b*2,C=w+1,P=m+Math.floor(w/S),M=m+Math.floor(C/S),B=p[P],k=p[M];for(let j=0;j<c;j++){let X=A+Math.floor(j/_),W=y?.cells.has(P*t+X)?y.color:Wt(B?.[X],X,P),q=C<u&&M<t?y?.cells.has(M*t+X)?y.color:Wt(k?.[X],X,M):ii,Ae=v.x===X&&v.y===P,z=v.x===X&&v.y===M;e.setCell(g+j,f+b,"\u2580",Ae?Fs(W):W,z?Fs(q):q)}}}drawArtworkImage(e,t,r,n,i,s){let o=this.currentModel.cursor,a=this.artworkImageCache;if(!(this.artworkImage&&a&&a.grid===this.currentModel.grid&&a.revision===this.currentModel.revision&&a.preview===this.currentModel.preview&&a.columns===t.columns&&a.pixelRows===t.pixelRows&&a.pixelWidth===t.pixelWidth&&a.pixelHeight===t.pixelHeight&&a.startX===i&&a.startY===s&&a.cursorX===o.x&&a.cursorY===o.y)){let c=this.currentModel.grid.length,u=za(this.currentModel.preview,c),d=new Uint8Array(t.columns*t.pixelRows*4);for(let g=0;g<t.pixelRows;g++){let f=s+g;for(let p=0;p<t.columns;p++){let v=i+p,y=u?.cells.has(f*c+v)?u.color:Wt(this.currentModel.grid[f]?.[v],v,f);if(o.x===v&&o.y===f)y=Fs(y);let[S,_,b]=y.toInts(),w=(g*t.columns+p)*4;d[w]=S,d[w+1]=_,d[w+2]=b,d[w+3]=255}}let A=$a.fromRgba(d,t.columns,t.pixelRows),m=A.resize({width:t.pixelWidth,height:t.pixelHeight,kernel:"nearest"});A.dispose(),this.releaseArtworkImage(),this.artworkImage=m,this.artworkImageCache={grid:this.currentModel.grid,revision:this.currentModel.revision,preview:this.currentModel.preview,columns:t.columns,pixelRows:t.pixelRows,pixelWidth:t.pixelWidth,pixelHeight:t.pixelHeight,startX:i,startY:s,cursorX:o.x,cursorY:o.y}}if(!this.artworkImage)return;e.drawImage(this.artworkImage,r,n,t.renderedColumns,t.terminalRows,t.pixelWidth,t.pixelHeight,0,0,t.pixelWidth,t.pixelHeight,"auto")}releaseArtworkImage(){this.artworkImage?.dispose(),this.artworkImage=null,this.artworkImageCache=null}drawWorldGridImage(e,t,r,n,i){let s=Math.max(1,Math.round(this.width*n)),o=Math.max(1,Math.round(this.height*i)),a=Math.max(1,Math.round(Ms*n)),l=Math.round(t*n),c=Math.round(r*i),u=s+a,d=o+a,A=TA(u,d);if(!A)return this.releaseWorldImage(),!1;if(!this.worldImage||a!==this.worldImageSide||u>this.worldImageWidth||d>this.worldImageHeight){let{width:f,height:p}=A,v=new Uint8Array(f*p*4),[y,S,_]=ii.toInts(),[b,w,C]=Xa.toInts(),P=f*4,M=new Uint8Array(P),B=new Uint8Array(P);for(let k=0;k<f;k++){let j=k*4,X=k%a===0;M[j]=X?b:y,M[j+1]=X?w:S,M[j+2]=X?C:_,M[j+3]=255,B[j]=b,B[j+1]=w,B[j+2]=C,B[j+3]=255}for(let k=0;k<p;k++)v.set(k%a===0?B:M,k*P);this.releaseWorldImage(),this.worldImage=$a.fromRgba(v,f,p),this.worldImageSide=a,this.worldImageWidth=f,this.worldImageHeight=p}if(!this.worldImage)return!1;let m=(-l%a+a)%a,g=(-c%a+a)%a;return e.drawImage(this.worldImage,0,0,this.width,this.height,s,o,m,g,s,o,"auto"),!0}releaseWorldImage(){this.worldImage?.dispose(),this.worldImage=null,this.worldImageSide=0,this.worldImageWidth=0,this.worldImageHeight=0}drawWorldGrid(e,t,r,n){let i=Math.max(1,Math.round(Ms/n));for(let s=0;s<this.height;s++){let o=s+1-r,a=Math.floor(o/i)!==Math.floor((o-1)/i);for(let l=0;l<this.width;l++){let c=l>0&&(l-t)%Ms===0;if(!a&&!c)continue;e.setCell(l,s,c?"\u258F":" ",Xa,ii,a?Za.UNDERLINE:Za.NONE)}}}destroySelf(){this.releaseArtworkImage(),this.releaseWorldImage(),super.destroySelf()}handleMouse(e){if(e.button!==Ls.LEFT&&e.button!==Ls.RIGHT)return;let t=e.x-this.screenX-this.viewport.originX,r=e.y-this.screenY-this.viewport.originY;if(t<0||t>=this.viewport.columns*this.viewport.columnZoom||r<0||r>=Math.ceil(this.viewport.renderedSubrows/2))return;let n=this.viewport.startX+Math.floor(t/this.viewport.columnZoom),i=e.modifiers.shift?1:0,s=r*2+i;if(s>=this.viewport.renderedSubrows)return;let o=this.viewport.startY+Math.floor(s/this.viewport.subrowZoom);if(o>=this.currentModel.grid.length)return;this.cellHandler?.({x:n,y:o,...e.button===Ls.RIGHT?{tool:"erase"}:{}})}}var el={name:"flatblox-tui",version:"0.2.2",description:"Flatblox pixel art editor for the terminal",homepage:"https://flatblox.com",license:"MIT",type:"module",bin:{"flatblox-tui":"dist/index.js"},files:["dist","README.md"],publishConfig:{access:"public"},scripts:{build:"bun --env-file=../web/.env scripts/build.ts",dev:"bun --env-file=../web/.env --watch src/index.tsx",prepack:"bun run build",start:"bun --env-file=../web/.env src/index.tsx",typecheck:"tsc --noEmit",test:"bun test --preload ./scripts/preload.ts"},dependencies:{"@opentui/core":"^0.5.9","@opentui/solid":"^0.5.9",bun:"^1.4.0","solid-js":"1.9.12"},devDependencies:{"@flatblox/editor-core":"workspace:*","@flatblox/shared":"workspace:*","@supabase/supabase-js":"^2.49.4","@types/bun":"latest",typescript:"~5.9.3"}};var oi=`v${el.version}`;import{NativeImage as tl,parseColor as NA}from"@opentui/core";Lt({fitted_image:An});var DA=new URL("./flatblox-logo.png",import.meta.url),LA=tl.load(DA),Us=new Map;function MA(e){let t=Us.get(e);if(!t)t=LA.then((r)=>{let[n,i,s]=NA(e).toInts(),o=new Uint8Array(r.width*r.height*4);for(let l=0;l<o.length;l+=4)o[l]=n,o[l+1]=i,o[l+2]=s,o[l+3]=255;let a=tl.fromRgba(o,r.width,r.height);try{return a.composite(r)}finally{a.dispose()}}),t.catch(()=>Us.delete(e)),Us.set(e,t);return t}function kr(e){let t=ni(),[r,n]=Z(),i=!1;return Xt(()=>{MA(e.backgroundColor).then((s)=>{if(!i)n(s)},()=>{})}),ze(()=>{i=!0}),Q(Me,{get when(){return mt(()=>!!t())()&&r()},get fallback(){return(()=>{var s=I("box");return h(s,"alignItems","center"),h(s,"justifyContent","center"),G(s,Q(Me,{get when(){return e.height>=2},get fallback(){return(()=>{var o=I("text"),a=I("b");return R(o,a),R(a,_e("FLATBLOX")),ge((l)=>h(o,"fg",e.foregroundColor,l)),o})()},get children(){var o=I("ascii_font");return h(o,"text","FLATBLOX"),h(o,"font","tiny"),ge((a)=>{var l=`${e.id}-ascii`,c=e.foregroundColor,u=e.backgroundColor;return l!==a.e&&(a.e=h(o,"id",l,a.e)),c!==a.t&&(a.t=h(o,"color",c,a.t)),u!==a.a&&(a.a=h(o,"backgroundColor",u,a.a)),a},{e:void 0,t:void 0,a:void 0}),o}})),ge((o)=>{var{id:a,width:l,height:c,backgroundColor:u}=e;return a!==o.e&&(o.e=h(s,"id",a,o.e)),l!==o.t&&(o.t=h(s,"width",l,o.t)),c!==o.a&&(o.a=h(s,"height",c,o.a)),u!==o.o&&(o.o=h(s,"backgroundColor",u,o.o)),o},{e:void 0,t:void 0,a:void 0,o:void 0}),s})()},get children(){var s=I("fitted_image");return ge((o)=>{var a=e.id,l=r(),c=e.width,u=e.height,d=e.backgroundColor;return a!==o.e&&(o.e=h(s,"id",a,o.e)),l!==o.t&&(o.t=h(s,"source",l,o.t)),c!==o.a&&(o.a=h(s,"width",c,o.a)),u!==o.o&&(o.o=h(s,"height",u,o.o)),d!==o.i&&(o.i=h(s,"background",d,o.i)),o},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),s}})}Lt({pixel_grid:Gs});var E={background:Ge("hsl(275 60% 9%)"),panel:Ge("hsl(275 60% 11%)"),panelActive:Ge("hsl(275 60% 14%)"),card:Ge("hsl(275 60% 16%)"),border:Ge("hsl(275 60% 28%)"),text:Ge("hsl(278 100% 80%)"),muted:Ge("hsl(278 41% 65%)"),accent:Ge("hsl(315 68% 71%)"),accentText:Ge("hsl(278 70% 80%)"),warning:Ge("hsl(37 100% 71%)"),textPink:Ge("hsl(308, 50%, 75%)"),orangeActive:Ge("hsl(28, 80%, 38%)")};function Ge(e){let t=ws(e);return t?qr(t):"#ffffff"}function Ft(e){return e[0].toUpperCase()+e.slice(1)}function FA(e){return(()=>{var t=I("box");return h(t,"flexDirection","column"),h(t,"gap",0),G(t,Q(yt,{get each(){return e.colors.slice(0,10)},children:(r,n)=>{let i=Y(()=>(e.refresh(),e.session.selectedColorIndex===n())),s=n()===9?"0":String(n()+1);return(()=>{var o=I("box"),a=I("text"),l=_e(" ");return R(o,a),h(o,"height",1),h(o,"flexDirection","row"),h(o,"paddingX",1),G(o,Q(fn,{get color(){return Ge(r)},get background(){return mt(()=>!!i())()?E.panelActive:E.panel}}),a),R(a,l),G(a,()=>i()?" \u203A ":" ",l),G(a,s,l),G(a,()=>Ge(r),null),ge((c)=>{var u=i()?E.panelActive:E.panel,d=i()?E.text:E.muted;return u!==c.e&&(c.e=h(o,"backgroundColor",u,c.e)),d!==c.t&&(c.t=h(a,"fg",d,c.t)),c},{e:void 0,t:void 0}),o})()}})),t})()}function GA(e){let t=Y(()=>(e.refresh(),{tool:Ft(e.session.tool),mirrorX:e.session.mirrorX?"on":"off",mirrorY:e.session.mirrorY?"on":"off",cursor:`${e.session.cursor.x+1}, ${e.session.cursor.y+1}`}));return(()=>{var r=I("box"),n=I("box"),i=I("box"),s=I("text"),o=_e("Tool: "),a=I("text"),l=_e("Cursor: "),c=I("box"),u=I("box"),d=I("box"),A=I("text"),m=_e("Mirror X: "),g=I("text"),f=_e("Mirror Y: ");return R(r,n),h(r,"id","sidebar"),h(r,"alignSelf","flex-start"),h(r,"flexDirection","column"),R(n,i),R(n,c),R(n,u),R(n,d),h(n,"width","100%"),h(n,"flexDirection","column"),h(n,"paddingX",1),R(i,s),R(i,a),h(i,"flexDirection","column"),R(s,o),G(s,()=>t().tool,null),R(a,l),G(a,()=>t().cursor,null),h(c,"height",1),G(n,Q(FA,{get session(){return e.session},get colors(){return e.colors},get refresh(){return e.refresh}}),u),h(u,"height",1),R(d,A),R(d,g),h(d,"flexDirection","column"),R(A,m),G(A,()=>t().mirrorX,null),R(g,f),G(g,()=>t().mirrorY,null),ge((p)=>{var v=e.visible?28:0,y=e.visible,S=E.textPink,_=E.textPink,b=E.muted,w=E.muted;return v!==p.e&&(p.e=h(r,"width",v,p.e)),y!==p.t&&(p.t=h(r,"visible",y,p.t)),S!==p.a&&(p.a=h(s,"fg",S,p.a)),_!==p.o&&(p.o=h(a,"fg",_,p.o)),b!==p.i&&(p.i=h(A,"fg",b,p.i)),w!==p.n&&(p.n=h(g,"fg",w,p.n)),p},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),r})()}function UA(e){let t=Y(()=>{e.refresh();let r=`${e.session.mirrorX?"X":"-"}${e.session.mirrorY?"Y":"-"}`;return{tool:Ft(e.session.tool),color:Ge(e.colors[e.session.selectedColorIndex]??e.session.activeColor),mirror:r}});return(()=>{var r=I("box"),n=I("text"),i=_e("Tool "),s=_e(" Color "),o=I("text"),a=_e(" "),l=_e(" Mirror ");return R(r,n),R(r,o),h(r,"border",!0),h(r,"borderStyle","rounded"),h(r,"paddingX",1),h(r,"flexDirection","row"),R(n,i),R(n,s),G(n,()=>t().tool,s),G(r,Q(fn,{get color(){return t().color},get background(){return E.panel}}),o),R(o,a),R(o,l),G(o,()=>t().color,l),G(o,()=>t().mirror,null),ge((c)=>{var u=e.visible?3:0,d=e.visible,A=E.border,m=E.panel,g=E.textPink,f=E.textPink;return u!==c.e&&(c.e=h(r,"height",u,c.e)),d!==c.t&&(c.t=h(r,"visible",d,c.t)),A!==c.a&&(c.a=h(r,"borderColor",A,c.a)),m!==c.o&&(c.o=h(r,"backgroundColor",m,c.o)),g!==c.i&&(c.i=h(n,"fg",g,c.i)),f!==c.n&&(c.n=h(o,"fg",f,c.n)),c},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),r})()}var jA=11;function HA(e){return[["Move","Arrow keys or H J K L"],["Paint","Space or Enter"],["Tools","D draw | E erase | F fill | R rectangle | O circle"],["Shapes","Space sets a corner, Space again draws, Esc cancels"],["Palette","1\u20130 direct | [ and ] cycle"],["Mirroring","X horizontal | Y vertical"],["Blender","B connect / disconnect"],["History","U undo | Ctrl+Z undo | Ctrl+Y redo"],["Zoom","- / +"],["Save","Ctrl+S"],["Help","?"],...e?[["Artworks","Escape"],["Quit","Q"]]:[["Quit","Q or Escape"]],["",""],["Mouse","Click to paint | right-click to erase"],["","Shift+click targets the lower half-cell"],["",""],["","Press ? or Escape to close help."]]}function KA(e){let t=Y(()=>Math.max(1,Math.min(70,e.width-2))),r=Y(()=>Math.max(1,Math.min(22,e.height-2)));return(()=>{var n=I("box");return h(n,"id","help-overlay"),h(n,"position","absolute"),h(n,"zIndex",20),h(n,"border",!0),h(n,"title"," Keyboard & mouse "),h(n,"padding",1),G(n,Q(yt,{get each(){return HA(e.canGoBack)},children:([i,s])=>(()=>{var o=I("box"),a=I("text"),l=I("text");return R(o,a),R(o,l),h(o,"flexDirection","row"),G(a,()=>i.padEnd(jA)),G(l,s),ge((c)=>{var{textPink:u,accentText:d}=E;return u!==c.e&&(c.e=h(a,"fg",u,c.e)),d!==c.t&&(c.t=h(l,"fg",d,c.t)),c},{e:void 0,t:void 0}),o})()})),ge((i)=>{var s=Math.max(0,Math.floor((e.width-t())/2)),o=Math.max(0,Math.floor((e.height-r())/2)),a=t(),l=r(),c=e.visible,u=E.border,d=E.panel,A=E.accent;return s!==i.e&&(i.e=h(n,"left",s,i.e)),o!==i.t&&(i.t=h(n,"top",o,i.t)),a!==i.a&&(i.a=h(n,"width",a,i.a)),l!==i.o&&(i.o=h(n,"height",l,i.o)),c!==i.i&&(i.i=h(n,"visible",c,i.i)),u!==i.n&&(i.n=h(n,"borderColor",u,i.n)),d!==i.s&&(i.s=h(n,"backgroundColor",d,i.s)),A!==i.h&&(i.h=h(n,"titleColor",A,i.h)),i},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),n})()}function WA(e){let t=Y(()=>Math.max(1,Math.min(48,e.width-4))),r=Y(()=>Math.max(1,Math.min(7,e.height-2))),n=Y(()=>r()>=7?1:0);return(()=>{var i=I("box"),s=I("box"),o=I("input"),a=I("box"),l=I("text");return R(i,s),h(i,"id","filename-modal"),h(i,"position","absolute"),h(i,"zIndex",30),h(i,"border",!0),h(i,"title"," Save artwork "),h(i,"flexDirection","column"),R(s,o),R(s,a),R(s,l),h(s,"flexGrow",1),h(s,"width","100%"),h(s,"padding",1),h(s,"flexDirection","column"),h(o,"id","artwork-name-input"),h(o,"width","100%"),h(o,"maxLength",_s),h(o,"focused",!0),h(o,"onKeyDown",(c)=>{if(c.eventType!=="release"&&c.name==="escape")c.preventDefault(),e.onCancel()}),G(l,()=>e.error||"Enter save \xB7 Esc cancel"),ge((c)=>{var u=Math.max(0,Math.floor((e.width-t())/2)),d=Math.max(0,Math.floor((e.height-r())/2)),A=t(),m=r(),g=E.border,f=E.panel,p=E.accent,v=E.panel,y=e.value,S=E.panelActive,_=E.panelActive,b=E.text,w=E.text,C=e.onInput,P=e.onSubmit,M=n(),B=e.error?E.warning:E.accentText;return u!==c.e&&(c.e=h(i,"left",u,c.e)),d!==c.t&&(c.t=h(i,"top",d,c.t)),A!==c.a&&(c.a=h(i,"width",A,c.a)),m!==c.o&&(c.o=h(i,"height",m,c.o)),g!==c.i&&(c.i=h(i,"borderColor",g,c.i)),f!==c.n&&(c.n=h(i,"backgroundColor",f,c.n)),p!==c.s&&(c.s=h(i,"titleColor",p,c.s)),v!==c.h&&(c.h=h(s,"backgroundColor",v,c.h)),y!==c.r&&(c.r=h(o,"value",y,c.r)),S!==c.d&&(c.d=h(o,"backgroundColor",S,c.d)),_!==c.l&&(c.l=h(o,"focusedBackgroundColor",_,c.l)),b!==c.u&&(c.u=h(o,"textColor",b,c.u)),w!==c.c&&(c.c=h(o,"focusedTextColor",w,c.c)),C!==c.w&&(c.w=h(o,"onInput",C,c.w)),P!==c.m&&(c.m=h(o,"on:enter",P,c.m)),M!==c.f&&(c.f=h(a,"height",M,c.f)),B!==c.y&&(c.y=h(l,"fg",B,c.y)),c},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0}),i})()}function Rr(e){let t=wt(),r=pr(),[n,i]=Z(0),[s,o]=Z("Ready"),[a,l]=Z(!1),[c,u]=Z(null),[d,A]=Z(null),[m,g]=Z(!1),[f,p]=Z(!1),[v,y]=Z(""),[S,_]=Z(""),[b,w]=Z(2),[C,P]=Z(null),M=!e.blenderLive,B=e.blenderLive??new Os(()=>e.session.toDocument()),[k,j]=Z(B.getStatus()),X=B.onStatus(j);ze(()=>{if(X(),M)B.dispose()});let W=Y(()=>r().width>=88&&r().height>=19),q=()=>n(),[Ae,z]=Z(0),ce=(T=!1)=>{if(i((O)=>O+1),T)z((O)=>O+1),B.sync()},Re=()=>(n(),e.session.dirty),V=Y(()=>(n(),en(e.session.palette,e.session.paletteColorAdjustment.saturation,e.session.paletteColorAdjustment.lightness))),J=Y(()=>(Ae(),Vt(e.session.grid,e.session.paletteColorAdjustment.saturation,e.session.paletteColorAdjustment.lightness))),Te=Y(()=>{n();let T=c(),O=e.session.tool;if(!T||!Ir(O))return;let L=e.session;return{points:L.shapePreview(O,T,L.cursor).flatMap((ye)=>ei(L.size,ye,L.mirrorX,L.mirrorY)),color:Ge(V()[L.selectedColorIndex]??L.activeColor)}}),pe=Y(()=>(n(),{grid:J(),revision:Ae(),cursor:e.session.cursor,zoom:b(),preview:Te()})),D=()=>{if(d())A(null)},ee=(T,O)=>{if(!Ir(T))return!1;let L=c();if(!L)return u({...O}),o(`${Ft(T)} from ${O.x+1}, ${O.y+1} \xB7 Space or click to finish \xB7 Esc cancels`),ce(),!0;let Pe=e.session.applyShape(T,L,O);return u(null),ce(Pe),o(Pe?`${Ft(T)} drawn`:"No change"),!0},ie=()=>{if(!c())return!1;return u(null),o(`${Ft(e.session.tool)} cancelled`),ce(),!0},oe=(T=e.session.tool)=>{if(D(),ee(T,e.session.cursor))return;let O=e.session.applyAtCursor(T);ce(O),o(O?`${Ft(T)} applied`:"No change")},Xe=(T,O)=>{D(),e.session.moveCursor(T,O);let L=C(),Pe=L?e.session.applyAtCursor(L):!1;ce(Pe),o(L&&Pe?`${Ft(L)} at ${e.session.cursor.x+1}, ${e.session.cursor.y+1}`:`Cell ${e.session.cursor.x+1}, ${e.session.cursor.y+1}`)},ue=(T)=>{let O=T==="undo"?e.session.undo():e.session.redo();o(O?T==="undo"?"Undo":"Redo":`Nothing to ${T}`),ce(O)},Ee=(T)=>{e.session.selectNextColor(T),D(),o(`Color ${e.session.selectedColorIndex+1}`),ce()},ot=async()=>{if(m())return;let T=e.session.revision,O=e.session.toDocument();g(!0),o("Saving\u2026");try{let L;if(e.saveDocument)L=await e.saveDocument(O);else{let ye=e.filePath??`${e.session.filename}.flatblox.json`,lt=un(O);if(e.writeFile)await e.writeFile(ye,lt);else await Bun.write(ye,lt);L=`Saved ${ye}`}let Pe=e.session.markSaved(T);A(null),o(Pe?L||"Saved":`${L||"Saved"}; newer edits remain unsaved`),ce()}catch(L){let Pe=L instanceof Error?L.message:String(L);o(`Save failed: ${Pe}`)}finally{g(!1)}},Ve=()=>{if(e.promptForFilenameOnSave){y(""),_(""),p(!0),o("Name artwork before saving");return}ot()},Qe=(T)=>{let O=tn(T);if(!O){_("Enter an artwork name");return}e.session.rename(O),_(""),p(!1),ce(),ot()},re=()=>{p(!1),_(""),o("Save cancelled")},ht=(T)=>{if(!Re()||d()===T){if(T==="back"&&e.onBack)e.onBack();else t.destroy();return}A(T),o(T==="back"?"Unsaved changes \u2014 press Escape again to return":"Unsaved changes \u2014 press Q again to quit")},x=(T)=>{e.session.setTool(T),u(null),D(),o(`${Ft(T)} tool`),ce()},H=(T)=>{let O=Math.max(1,Math.min(8,b()+T));w(O),o(`Zoom ${O}\xD7`)},fe=async()=>{let T=B.getStatus();if(T.state==="connected"||T.state==="connecting"){B.disconnect(),o("Blender Live disconnected");return}o("Connecting to Blender\u2026");let O=await B.connect();o(O.state==="connected"?"Drawing live in Blender":O.message??"Blender Live disconnected")},qe=(T)=>{e.session.setCursor(T.x,T.y);let O=T.tool??e.session.tool;if(D(),ee(O,{x:T.x,y:T.y}))return;let L=e.session.applyAt(T.x,T.y,O);o(L?`${Ft(O)} at ${T.x+1}, ${T.y+1}`:`Cell ${T.x+1}, ${T.y+1}`),ce(L)};br((T)=>{let O=T.name.toLowerCase(),L=T.sequence,Pe=tr(T),ye=rr(O);if(T.eventType==="release"){if(Pe)P(null);return}if(f())return;if(a()){if(O==="escape"||L==="?")l(!1);return}let lt=O==="q"||O==="escape"||T.ctrl&&O==="c";if(d()&&!lt)A(null);if(T.ctrl){if(O==="s")Ve();else if(O==="z"&&T.shift)ue("redo");else if(O==="z")ue("undo");else if(O==="y")ue("redo");else if(O==="c")ht("quit");return}if(L==="?"){l(!0);return}if(O==="escape"&&ie())return;if(O==="escape"&&e.onBack){ht("back");return}if(O==="q"||O==="escape"){ht("quit");return}if(ye)Xe(ye.dx,ye.dy);else if(Pe){let We=e.session.tool;P(T.source==="kitty"&&(We==="draw"||We==="erase")?We:null),oe(We)}else if(O==="b")fe();else if(O==="d")x("draw");else if(O==="e")x("erase");else if(O==="f")x("fill");else if(O==="r")x("rectangle");else if(O==="o")x("circle");else if(O==="x")e.session.toggleMirrorX(),o(`Mirror X ${e.session.mirrorX?"on":"off"}`),ce();else if(O==="y")e.session.toggleMirrorY(),o(`Mirror Y ${e.session.mirrorY?"on":"off"}`),ce();else if(O==="u")ue("undo");else if(L==="+"||O==="+"||O==="=")H(1);else if(L==="-"||O==="-")H(-1);else if(L==="[")Ee(-1);else if(L==="]")Ee(1);else if(/^[0-9]$/.test(O))e.session.selectColor(O==="0"?9:Number(O)-1),o(`Color ${e.session.selectedColorIndex+1}`),ce()},{release:!0});let Oe=()=>{n();let T=e.session.dirty?" \u25CF":"";return`${e.session.filename}${T} ${e.session.size}\xD7${e.session.size}`},at=()=>{switch(k().state){case"connecting":return"connecting";case"connected":return"live";case"error":return"error";default:return"off"}};return(()=>{var T=I("box"),O=I("box"),L=I("text"),Pe=I("b"),ye=I("box"),lt=I("text"),We=I("box"),At=I("box"),et=I("pixel_grid"),ct=I("box"),Et=I("text"),Gn=_e("Blender:"),Hr=_e(" | ");return R(T,O),R(T,We),R(T,ct),h(T,"width","100%"),h(T,"height","100%"),h(T,"flexDirection","column"),R(O,L),R(O,ye),R(O,lt),h(O,"height",3),h(O,"paddingX",1),h(O,"paddingY",1),h(O,"flexDirection","row"),h(O,"justifyContent","space-between"),R(L,Pe),G(Pe,oi),h(ye,"height",1),h(ye,"flexBasis",0),h(ye,"flexGrow",1),h(ye,"flexDirection","row"),h(ye,"justifyContent","center"),G(ye,Q(kr,{id:"dashboard-wordmark",width:14,height:1,get backgroundColor(){return E.panel},get foregroundColor(){return E.accent}})),G(lt,Oe),R(We,At),h(We,"flexGrow",1),h(We,"flexDirection","row"),h(We,"padding",1),h(We,"gap",1),R(At,et),h(At,"flexGrow",1),h(At,"overflow","hidden"),h(et,"id","pixel-grid"),h(et,"width","100%"),h(et,"height","100%"),h(et,"flexGrow",1),h(et,"onCell",qe),G(We,Q(Me,{get when(){return W()},get children(){return Q(GA,{get session(){return e.session},get colors(){return V()},refresh:q,visible:!0})}}),null),G(T,Q(Me,{get when(){return!W()},get children(){return Q(UA,{get session(){return e.session},get colors(){return V()},refresh:q,visible:!0})}}),ct),R(ct,Et),h(ct,"height",1),h(ct,"paddingX",1),h(ct,"flexDirection","row"),h(ct,"justifyContent","space-between"),R(Et,Gn),R(Et,Hr),G(Et,at,Hr),G(Et,s,null),G(ct,Q(Me,{get when(){return s().length<Math.max(8,r().width-58)},get children(){var te=I("text"),de=_e("-/+ zoom \xB7 ? help \xB7 Ctrl+S save \xB7 "),me=_e("Q quit");return R(te,de),R(te,me),G(te,()=>e.onBack?"Esc artworks \xB7 ":"",me),ge((ke)=>h(te,"fg",E.muted,ke)),te}}),null),G(T,Q(KA,{get width(){return r().width},get height(){return r().height},get visible(){return a()},get canGoBack(){return Boolean(e.onBack)}}),null),G(T,Q(Me,{get when(){return f()},get children(){return Q(WA,{get width(){return r().width},get height(){return r().height},get value(){return v()},get error(){return S()},onInput:(te)=>{if(y(te),S())_("")},onSubmit:Qe,onCancel:re})}}),null),ge((te)=>{var{background:de,panel:me}=E,ke=k().state==="error"?E.warning:E.accentText,ve=Re()?E.warning:E.muted,he=E.background,ne=E.background,se=pe(),Be=E.panelActive,Ne=s().startsWith("Save failed")||k().state==="error"?E.warning:E.textPink;return de!==te.e&&(te.e=h(T,"backgroundColor",de,te.e)),me!==te.t&&(te.t=h(O,"backgroundColor",me,te.t)),ke!==te.a&&(te.a=h(L,"fg",ke,te.a)),ve!==te.o&&(te.o=h(lt,"fg",ve,te.o)),he!==te.i&&(te.i=h(We,"backgroundColor",he,te.i)),ne!==te.n&&(te.n=h(At,"backgroundColor",ne,te.n)),se!==te.s&&(te.s=h(et,"model",se,te.s)),Be!==te.h&&(te.h=h(ct,"backgroundColor",Be,te.h)),Ne!==te.r&&(te.r=h(Et,"fg",Ne,te.r)),te},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),T})()}import{chmod as Mg,mkdir as Fg,readFile as Gg,rename as Ug,unlink as jg,writeFile as Hg}from"fs/promises";import{homedir as Kg}from"os";import{dirname as Wg,join as Qc}from"path";var Bl=Ru(Tl(),1),{__extends:f_,__assign:g_,__rest:nr,__decorate:m_,__param:p_,__esDecorate:b_,__runInitializers:y_,__propKey:w_,__setFunctionName:__,__metadata:v_,__awaiter:Ol,__generator:C_,__exportStar:E_,__createBinding:S_,__values:I_,__read:x_,__spread:k_,__spreadArrays:R_,__spreadArray:T_,__await:B_,__asyncGenerator:O_,__asyncDelegator:P_,__asyncValues:N_,__makeTemplateObject:D_,__importStar:L_,__importDefault:M_,__classPrivateFieldGet:F_,__classPrivateFieldSet:G_,__classPrivateFieldIn:U_,__addDisposableResource:j_,__disposeResources:H_,__rewriteRelativeImportExtension:K_}=Bl.default;var Pl=(e)=>{if(e)return(...t)=>e(...t);return(...t)=>fetch(...t)};class pn extends Error{constructor(e,t="FunctionsError",r){super(e);this.name=t,this.context=r}toJSON(){return{name:this.name,message:this.message,context:this.context}}}class ui extends pn{constructor(e){super("Failed to send a request to the Edge Function","FunctionsFetchError",e)}}class bn extends pn{constructor(e){super("Relay Error invoking the Edge Function","FunctionsRelayError",e)}}class yn extends pn{constructor(e){super("Edge Function returned a non-2xx status code","FunctionsHttpError",e)}}var mn;(function(e){e.Any="any",e.ApNortheast1="ap-northeast-1",e.ApNortheast2="ap-northeast-2",e.ApSouth1="ap-south-1",e.ApSoutheast1="ap-southeast-1",e.ApSoutheast2="ap-southeast-2",e.CaCentral1="ca-central-1",e.EuCentral1="eu-central-1",e.EuWest1="eu-west-1",e.EuWest2="eu-west-2",e.EuWest3="eu-west-3",e.SaEast1="sa-east-1",e.UsEast1="us-east-1",e.UsWest1="us-west-1",e.UsWest2="us-west-2"})(mn||(mn={}));class di{constructor(e,{headers:t={},customFetch:r,region:n=mn.Any}={}){this.url=e,this.headers=t,this.region=n,this.fetch=Pl(r)}setAuth(e){this.headers.Authorization=`Bearer ${e}`}invoke(e){return Ol(this,arguments,void 0,function*(t,r={}){var n;let i,s;try{let{headers:o,method:a,body:l,signal:c,timeout:u}=r,d={},{region:A}=r;if(!A)A=this.region;let m=new URL(`${this.url}/${t}`);if(A&&A!=="any")d["x-region"]=A,m.searchParams.set("forceFunctionRegion",A);let g;if(l&&(o&&!Object.prototype.hasOwnProperty.call(o,"Content-Type")||!o))if(typeof Blob<"u"&&l instanceof Blob||l instanceof ArrayBuffer)d["Content-Type"]="application/octet-stream",g=l;else if(typeof l==="string")d["Content-Type"]="text/plain",g=l;else if(typeof FormData<"u"&&l instanceof FormData)g=l;else d["Content-Type"]="application/json",g=JSON.stringify(l);else if(l&&typeof l!=="string"&&!(typeof Blob<"u"&&l instanceof Blob)&&!(l instanceof ArrayBuffer)&&!(typeof FormData<"u"&&l instanceof FormData))g=JSON.stringify(l);else g=l;let f=c;if(u)if(s=new AbortController,i=setTimeout(()=>s.abort(),u),c)f=s.signal,c.addEventListener("abort",()=>s.abort());else f=s.signal;let p=yield this.fetch(m.toString(),{method:a||"POST",headers:Object.assign(Object.assign(Object.assign({},d),this.headers),o),body:g,signal:f}).catch((_)=>{throw new ui(_)}),v=p.headers.get("x-relay-error");if(v&&v==="true")throw new bn(p);if(!p.ok)throw new yn(p);let y=((n=p.headers.get("Content-Type"))!==null&&n!==void 0?n:"text/plain").split(";")[0].trim(),S;if(y==="application/json")S=yield p.json();else if(y==="application/octet-stream"||y==="application/pdf")S=yield p.blob();else if(y==="text/event-stream")S=p;else if(y==="multipart/form-data")S=yield p.formData();else S=yield p.text();return{data:S,error:null,response:p}}catch(o){return{data:null,error:o,response:o instanceof yn||o instanceof bn?o.context:void 0}}finally{if(i)clearTimeout(i)}})}}var Nl=(e)=>Math.min(1000*2**e,30000),YA=[520,503],Fl=["GET","HEAD","OPTIONS"],Gl=class extends Error{constructor(e){super(e.message);this.name="PostgrestError",this.details=e.details,this.hint=e.hint,this.code=e.code}toJSON(){return{name:this.name,message:this.message,details:this.details,hint:this.hint,code:this.code}}};function Dl(e,t){return new Promise((r)=>{if(t===null||t===void 0?void 0:t.aborted){r();return}let n=setTimeout(()=>{t===null||t===void 0||t.removeEventListener("abort",i),r()},e);function i(){clearTimeout(n),r()}t===null||t===void 0||t.addEventListener("abort",i)})}function QA(e,t,r,n){if(!n||r>=3)return!1;if(!Fl.includes(e))return!1;if(!YA.includes(t))return!1;return!0}var JA=class{constructor(e){var t,r,n,i,s;if(this.shouldThrowOnError=!1,this.retryEnabled=!0,this.method=e.method,this.url=e.url,this.headers=new Headers(e.headers),this.schema=e.schema,this.body=e.body,this.shouldThrowOnError=(t=e.shouldThrowOnError)!==null&&t!==void 0?t:!1,this.signal=e.signal,this.isMaybeSingle=(r=e.isMaybeSingle)!==null&&r!==void 0?r:!1,this.shouldStripNulls=(n=e.shouldStripNulls)!==null&&n!==void 0?n:!1,this.urlLengthLimit=(i=e.urlLengthLimit)!==null&&i!==void 0?i:8000,this.retryEnabled=(s=e.retry)!==null&&s!==void 0?s:!0,e.fetch)this.fetch=e.fetch;else this.fetch=fetch}throwOnError(){return this.shouldThrowOnError=!0,this}stripNulls(){if(this.headers.get("Accept")==="text/csv")throw Error("stripNulls() cannot be used with csv()");return this.shouldStripNulls=!0,this}setHeader(e,t){return this.headers=new Headers(this.headers),this.headers.set(e,t),this}retry(e){return this.retryEnabled=e,this}then(e,t){var r=this;if(this.schema===void 0);else if(["GET","HEAD"].includes(this.method))this.headers.set("Accept-Profile",this.schema);else this.headers.set("Content-Profile",this.schema);if(this.method!=="GET"&&this.method!=="HEAD")this.headers.set("Content-Type","application/json");if(this.shouldStripNulls){let o=this.headers.get("Accept");if(o==="application/vnd.pgrst.object+json")this.headers.set("Accept","application/vnd.pgrst.object+json;nulls=stripped");else if(!o||o==="application/json")this.headers.set("Accept","application/vnd.pgrst.array+json;nulls=stripped")}let n=this.fetch,s=(async()=>{let o=0;while(!0){let c=new Headers(r.headers);if(o>0)c.set("X-Retry-Count",String(o));let u;try{u=await n(r.url.toString(),{method:r.method,headers:c,body:JSON.stringify(r.body),signal:r.signal})}catch(d){if((d===null||d===void 0?void 0:d.name)==="AbortError"||(d===null||d===void 0?void 0:d.code)==="ABORT_ERR")throw d;if(!Fl.includes(r.method))throw d;if(r.retryEnabled&&o<3){let A=Nl(o);o++,await Dl(A,r.signal);continue}throw d}if(QA(r.method,u.status,o,r.retryEnabled)){var a,l;let d=(a=(l=u.headers)===null||l===void 0?void 0:l.get("Retry-After"))!==null&&a!==void 0?a:null,A=d!==null?Math.max(0,parseInt(d,10)||0)*1000:Nl(o);await u.text(),o++,await Dl(A,r.signal);continue}return await r.processResponse(u)}})();if(!this.shouldThrowOnError)s=s.catch((o)=>{var a;let l="",c="",u="",d=o===null||o===void 0?void 0:o.cause;if(d){var A,m,g,f;let y=(A=d===null||d===void 0?void 0:d.message)!==null&&A!==void 0?A:"",S=(m=d===null||d===void 0?void 0:d.code)!==null&&m!==void 0?m:"";if(l=`${(g=o===null||o===void 0?void 0:o.name)!==null&&g!==void 0?g:"FetchError"}: ${o===null||o===void 0?void 0:o.message}`,l+=`
11
+ `);if(t.length>eA)return!1;try{return this.socket.write(t),!0}catch{return!1}}fail(e,t){if(this.socket!==e)return;this.socket=null,this.clearConnectTimer(),this.resetStream(),e.destroy();let r={state:"error",message:t};this.setStatus(r),this.finishConnect(r)}disconnectSocket(){let e=this.socket;this.socket=null,this.clearConnectTimer(),e?.destroy()}resetStream(){if(this.patchTimer)clearTimeout(this.patchTimer);this.patchTimer=null,this.previousGrid=null,this.previousColumns=0,this.previousRows=0,this.pendingCells.clear()}clearConnectTimer(){if(this.connectTimer)clearTimeout(this.connectTimer);this.connectTimer=null}finishConnect(e){this.resolveConnect?.({...e}),this.resolveConnect=null,this.connectPromise=null}setStatus(e){this.status=e;for(let t of this.listeners)t({...e})}}import{NativeImage as Qa,parseColor as Ns}from"@opentui/core";import{parseColor as aA,Renderable as lA,RGBA as cA}from"@opentui/core";var Ps=new WeakMap;function Kt(e){let t=e.terminalWidth??e.width,r=e.terminalHeight??e.height,n=e.resolution;if(!n||t<=0||r<=0||n.width<=0||n.height<=0)return Ps.get(e)??null;let i=n.width/t,s=n.height/r,o=Ps.get(e);if(o&&o.width===i&&o.height===s)return o;let a=Number.isFinite(i)&&Number.isFinite(s)&&i>0&&s>0?{width:i,height:s}:null;if(a)Ps.set(e,a);return a??o??null}function ti(e){let t=Kt(e);if(!t)return 2;let r=t.height/t.width;return Number.isFinite(r)&&r>=0.5&&r<=4?r:2}function xr(e){if(!e||e.image_protocol==="blocks")return!1;if(e.image_protocol==="kitty"||e.image_protocol==="sixel")return!0;if(e.multiplexer==="tmux")return!1;return Boolean(e.kitty_graphics||e.sixel)}function ri(e){return Boolean(Kt(e)&&xr(e.capabilities))}var uA={width:8,height:16};function dA(e,t,r,n,i,s,o="center"){let a=Math.max(1,Math.round(e*i)),l=Math.max(1,Math.round(t*s)),c=Math.min(a/r,l/n),u=Math.max(1,Math.min(a,Math.round(r*c))),d=Math.max(1,Math.min(l,Math.round(n*c)));return{pixelWidth:a,pixelHeight:l,fittedWidth:u,fittedHeight:d,left:o==="center"?Math.floor((a-u)/2):0,top:Math.floor((l-d)/2)}}class An extends lA{_source=null;_background=cA.fromInts(0,0,0);_backgroundKey="";_kernel="default";_align="center";frame=null;frameCache=null;constructor(e,t){super(e,{...t,buffered:!0});if(this._source=t.source??null,t.background)this.background=t.background;if(t.kernel)this._kernel=t.kernel;if(t.align)this._align=t.align}set source(e){let t=e??null;if(t===this._source)return;this._source=t,this.releaseFrame(),this.requestRender()}get source(){return this._source}set background(e){if(!e||e===this._backgroundKey)return;this._backgroundKey=e,this._background=aA(e),this.releaseFrame(),this.requestRender()}set kernel(e){if(!e||e===this._kernel)return;this._kernel=e,this.releaseFrame(),this.requestRender()}set align(e){if(!e||e===this._align)return;this._align=e,this.releaseFrame(),this.requestRender()}renderSelf(e){e.clear(this._background);let t=this._source;if(!t||this.width<=0||this.height<=0||!xr(this._ctx.capabilities)){this.releaseFrame();return}let r=Kt(this._ctx)??uA,n=dA(this.width,this.height,t.width,t.height,r.width,r.height,this._align),i=this._backgroundKey,s=this.frameCache;if(!(this.frame&&s&&s.source===t&&s.pixelWidth===n.pixelWidth&&s.pixelHeight===n.pixelHeight&&s.background===i)){let a=t.resize({width:n.fittedWidth,height:n.fittedHeight,kernel:this._kernel}),l=a.extend({left:n.left,top:n.top,right:n.pixelWidth-n.fittedWidth-n.left,bottom:n.pixelHeight-n.fittedHeight-n.top,background:this._background.toInts()});if(l!==a)a.dispose();this.releaseFrame(),this.frame=l,this.frameCache={source:t,pixelWidth:n.pixelWidth,pixelHeight:n.pixelHeight,background:i}}if(!this.frame)return;e.drawImage(this.frame,0,0,this.width,this.height,n.pixelWidth,n.pixelHeight,0,0,n.pixelWidth,n.pixelHeight,"auto")}releaseFrame(){this.frame?.dispose(),this.frame=null,this.frameCache=null}destroySelf(){this.releaseFrame(),super.destroySelf()}}var Wa=new WeakMap;function ni(){let e=wt(),t=Wa.get(e);if(t)return t;let r=Zt(()=>{let[n,i]=Z(xr(e.capabilities));return e.on("capabilities",()=>i(xr(e.capabilities))),n});return Wa.set(e,r),r}Lt({fitted_image:An});var Ds=32;function hA(e){let[t,r,n]=Ns(e).toInts();return Qa.fromRgba(new Uint8Array([t,r,n,255]),1,1)}function AA(e,t,r=Ds){let n=Ns(e).toInts(),i=Ns(t).toInts(),s=new Uint8Array(r*r*4),o=r/2;for(let a=0;a<r;a++)for(let l=0;l<r;l++){let c=Math.hypot(l+0.5-o,a+0.5-o),u=Math.max(0,Math.min(1,o-c+0.5)),d=(a*r+l)*4;for(let A=0;A<3;A++)s[d+A]=Math.round(i[A]+(n[A]-i[A])*u);s[d+3]=255}return s}var Ya=new Map;function fA(e,t){let r=`${e}|${t}`,n=Ya.get(r);if(!n)n=AA(e,t),Ya.set(r,n);return Qa.fromRgba(n,Ds,Ds)}function fn(e){let t=ni(),r=()=>e.width??2,n=()=>e.shape??"square",i=Y(()=>{let s=n()==="circle"?fA(e.color,e.background):hA(e.color);return ze(()=>s.dispose()),s});return Q(Fe,{get when(){return t()},get fallback(){return(()=>{var s=I("text");return G(s,(()=>{var o=mt(()=>n()==="circle");return()=>o()?"\u2B24":"\u2588".repeat(r())})()),ge((o)=>h(s,"fg",e.color,o)),s})()},get children(){var s=I("fitted_image");return h(s,"height",1),h(s,"align","start"),ge((o)=>{var a=r(),l=i(),c=e.background,u=n()==="circle"?"default":"nearest";return a!==o.e&&(o.e=h(s,"width",a,o.e)),l!==o.t&&(o.t=h(s,"source",l,o.t)),c!==o.a&&(o.a=h(s,"background",c,o.a)),u!==o.o&&(o.o=h(s,"kernel",u,o.o)),o},{e:void 0,t:void 0,a:void 0,o:void 0}),s}})}function tr(e){let t=e.name.toLowerCase();return t==="return"||t==="enter"||t==="space"||e.sequence===" "}function rr(e){switch(e){case"left":case"h":return{dx:-1,dy:0};case"right":case"l":return{dx:1,dy:0};case"up":case"k":return{dx:0,dy:-1};case"down":case"j":return{dx:0,dy:1};default:return}}import{MouseButton as Ls,NativeImage as $a,parseColor as EA,Renderable as SA,RGBA as gn,TextAttributes as Za}from"@opentui/core";import{RGBA as gA}from"@opentui/core";var mA={r:30,g:33,b:48,a:1},pA={r:42,g:46,b:64,a:1},Ja=new Map;function bA(e){let t=Ja.get(e);if(t!==void 0)return t;let r=zt(e);return Ja.set(e,r),r}function yA(e,t){return(e+t)%2===0?mA:pA}function wA(e,t){let r=Math.max(0,Math.min(1,e.a));return{r:Math.round(e.r*r+t.r*(1-r)),g:Math.round(e.g*r+t.g*(1-r)),b:Math.round(e.b*r+t.b*(1-r)),a:1}}function _A(e,t,r){let n=yA(t,r),i=e?.active&&e.color?bA(e.color):null;return i?wA(i,n):n}var vA=[new Map,new Map],CA=4096;function Wt(e,t,r){let n=vA[(t+r)%2],i=e?.active&&e.color?e.color:"",s=n.get(i);if(!s){if(n.size>=CA)n.clear();let o=_A(e,t,r);s=gA.fromInts(o.r,o.g,o.b),n.set(i,s)}return s}var ii=gn.fromInts(22,8,33),Xa=gn.fromInts(39,14,57),Ms=4,IA=gn.fromInts(255,255,255),xA=gn.fromInts(8,10,16),kA=0.25,si=512,Va=16384,RA=25000000;function za(e,t){if(!e||e.points.length===0)return null;let r=new Set;for(let n of e.points)r.add(n.y*t+n.x);return{cells:r,color:EA(e.color)}}function Fs(e){let[t,r,n]=e.toInts(),i=(0.2126*t+0.7152*r+0.0722*n)/255,[s,o,a]=i>0.55?xA.toInts():IA.toInts(),l=(c,u)=>Math.round(c+(u-c)*kA);return gn.fromInts(l(t,s),l(r,o),l(n,a))}function qa(e,t,r){return Math.max(0,Math.min(r-t,e-Math.floor(t/2)))}function TA(e,t){let r=Math.ceil(e/si)*si,n=Math.ceil(t/si)*si;if(r>Va||n>Va||r*n>RA)return null;return{width:r,height:n}}function BA(e,t,r,n,i){let o=Math.max(1,Math.floor(n)),a=Math.max(1,Math.round(o*2/i)),l=Math.min(r,Math.floor(e/o)),c=Math.min(r,Math.floor(t*2/a)),u=l*o,d=c*a;return{columns:l,pixelRows:c,columnZoom:o,subrowZoom:a,renderedColumns:u,renderedSubrows:d,terminalRows:Math.ceil(d/2)}}function OA(e,t,r,n,i,s){let o=Math.max(1,Math.floor(n)),a=Math.max(1,Math.round(o*i)),l=Math.min(r,Math.floor(e/o)),c=Math.min(r,Math.floor(t*s/a)),u=l*a,d=c*a,A=d*2/s;return{columns:l,pixelRows:c,columnZoom:o,subrowZoom:a*2/s,renderedColumns:l*o,renderedSubrows:A,terminalRows:Math.ceil(d/s),pixelWidth:u,pixelHeight:d}}class Gs extends SA{textFrame=null;artworkImage=null;artworkImageCache=null;worldImage=null;worldImageSide=0;worldImageWidth=0;worldImageHeight=0;currentModel={grid:[],cursor:{x:0,y:0},zoom:1};cellHandler;viewport={originX:0,originY:0,startX:0,startY:0,columns:0,pixelRows:0,columnZoom:1,subrowZoom:1,renderedSubrows:0};constructor(e,t){super(e,{...t,buffered:!0});if(t.model)this.currentModel=t.model;this.cellHandler=t.onCell,this.onMouseDown=(r)=>this.handleMouse(r)}set model(e){if(!e)return;this.currentModel=e,this.requestRender()}set onCell(e){this.cellHandler=e}sameTextFrame(e){let t=this.currentModel,r=this.textFrame;if(r&&r.grid===t.grid&&r.revision===t.revision&&r.preview===t.preview&&r.cursorX===t.cursor.x&&r.cursorY===t.cursor.y&&r.zoom===t.zoom&&r.width===this.width&&r.height===this.height&&r.cellAspect===e)return!0;return this.textFrame={grid:t.grid,revision:t.revision,preview:t.preview,cursorX:t.cursor.x,cursorY:t.cursor.y,zoom:t.zoom,width:this.width,height:this.height,cellAspect:e},!1}renderSelf(e){let t=this.currentModel.grid.length,r=ti(this._ctx),n=Kt(this._ctx),i=n!==null&&ri(this._ctx);if(i)this.textFrame=null;else if(this.sameTextFrame(r))return;if(e.clear(ii),t===0||this.width<=0||this.height<=0){this.viewport.columns=0,this.viewport.pixelRows=0;return}let s=n&&i?OA(this.width,this.height,t,this.currentModel.zoom,n.width,n.height):null,o=s??BA(this.width,this.height,t,this.currentModel.zoom,r),{columns:a,pixelRows:l}=o;if(a===0||l===0){this.viewport.columns=0,this.viewport.pixelRows=0,this.viewport.columnZoom=o.columnZoom,this.viewport.subrowZoom=o.subrowZoom,this.viewport.renderedSubrows=0;return}let{renderedColumns:c,renderedSubrows:u,terminalRows:d}=o,A=qa(this.currentModel.cursor.x,a,t),m=qa(this.currentModel.cursor.y,l,t),g=Math.floor((this.width-c)/2),f=Math.floor((this.height-d)/2);if(s&&n){if(!this.drawWorldGridImage(e,g,f,n.width,n.height))this.drawWorldGrid(e,g,f,r)}else this.releaseWorldImage(),this.drawWorldGrid(e,g,f,r);if(this.viewport={originX:g,originY:f,startX:A,startY:m,columns:a,pixelRows:l,columnZoom:o.columnZoom,subrowZoom:o.subrowZoom,renderedSubrows:u},s){this.drawArtworkImage(e,s,g,f,A,m);return}this.releaseArtworkImage();let{grid:p,cursor:v}=this.currentModel,y=za(this.currentModel.preview,t),{subrowZoom:S,columnZoom:_}=o;for(let b=0;b<d;b++){let w=b*2,C=w+1,P=m+Math.floor(w/S),M=m+Math.floor(C/S),B=p[P],k=p[M];for(let j=0;j<c;j++){let X=A+Math.floor(j/_),K=y?.cells.has(P*t+X)?y.color:Wt(B?.[X],X,P),ee=C<u&&M<t?y?.cells.has(M*t+X)?y.color:Wt(k?.[X],X,M):ii,Ae=v.x===X&&v.y===P,z=v.x===X&&v.y===M;e.setCell(g+j,f+b,"\u2580",Ae?Fs(K):K,z?Fs(ee):ee)}}}drawArtworkImage(e,t,r,n,i,s){let o=this.currentModel.cursor,a=this.artworkImageCache;if(!(this.artworkImage&&a&&a.grid===this.currentModel.grid&&a.revision===this.currentModel.revision&&a.preview===this.currentModel.preview&&a.columns===t.columns&&a.pixelRows===t.pixelRows&&a.pixelWidth===t.pixelWidth&&a.pixelHeight===t.pixelHeight&&a.startX===i&&a.startY===s&&a.cursorX===o.x&&a.cursorY===o.y)){let c=this.currentModel.grid.length,u=za(this.currentModel.preview,c),d=new Uint8Array(t.columns*t.pixelRows*4);for(let g=0;g<t.pixelRows;g++){let f=s+g;for(let p=0;p<t.columns;p++){let v=i+p,y=u?.cells.has(f*c+v)?u.color:Wt(this.currentModel.grid[f]?.[v],v,f);if(o.x===v&&o.y===f)y=Fs(y);let[S,_,b]=y.toInts(),w=(g*t.columns+p)*4;d[w]=S,d[w+1]=_,d[w+2]=b,d[w+3]=255}}let A=$a.fromRgba(d,t.columns,t.pixelRows),m=A.resize({width:t.pixelWidth,height:t.pixelHeight,kernel:"nearest"});A.dispose(),this.releaseArtworkImage(),this.artworkImage=m,this.artworkImageCache={grid:this.currentModel.grid,revision:this.currentModel.revision,preview:this.currentModel.preview,columns:t.columns,pixelRows:t.pixelRows,pixelWidth:t.pixelWidth,pixelHeight:t.pixelHeight,startX:i,startY:s,cursorX:o.x,cursorY:o.y}}if(!this.artworkImage)return;e.drawImage(this.artworkImage,r,n,t.renderedColumns,t.terminalRows,t.pixelWidth,t.pixelHeight,0,0,t.pixelWidth,t.pixelHeight,"auto")}releaseArtworkImage(){this.artworkImage?.dispose(),this.artworkImage=null,this.artworkImageCache=null}drawWorldGridImage(e,t,r,n,i){let s=Math.max(1,Math.round(this.width*n)),o=Math.max(1,Math.round(this.height*i)),a=Math.max(1,Math.round(Ms*n)),l=Math.round(t*n),c=Math.round(r*i),u=s+a,d=o+a,A=TA(u,d);if(!A)return this.releaseWorldImage(),!1;if(!this.worldImage||a!==this.worldImageSide||u>this.worldImageWidth||d>this.worldImageHeight){let{width:f,height:p}=A,v=new Uint8Array(f*p*4),[y,S,_]=ii.toInts(),[b,w,C]=Xa.toInts(),P=f*4,M=new Uint8Array(P),B=new Uint8Array(P);for(let k=0;k<f;k++){let j=k*4,X=k%a===0;M[j]=X?b:y,M[j+1]=X?w:S,M[j+2]=X?C:_,M[j+3]=255,B[j]=b,B[j+1]=w,B[j+2]=C,B[j+3]=255}for(let k=0;k<p;k++)v.set(k%a===0?B:M,k*P);this.releaseWorldImage(),this.worldImage=$a.fromRgba(v,f,p),this.worldImageSide=a,this.worldImageWidth=f,this.worldImageHeight=p}if(!this.worldImage)return!1;let m=(-l%a+a)%a,g=(-c%a+a)%a;return e.drawImage(this.worldImage,0,0,this.width,this.height,s,o,m,g,s,o,"auto"),!0}releaseWorldImage(){this.worldImage?.dispose(),this.worldImage=null,this.worldImageSide=0,this.worldImageWidth=0,this.worldImageHeight=0}drawWorldGrid(e,t,r,n){let i=Math.max(1,Math.round(Ms/n));for(let s=0;s<this.height;s++){let o=s+1-r,a=Math.floor(o/i)!==Math.floor((o-1)/i);for(let l=0;l<this.width;l++){let c=l>0&&(l-t)%Ms===0;if(!a&&!c)continue;e.setCell(l,s,c?"\u258F":" ",Xa,ii,a?Za.UNDERLINE:Za.NONE)}}}destroySelf(){this.releaseArtworkImage(),this.releaseWorldImage(),super.destroySelf()}handleMouse(e){if(e.button!==Ls.LEFT&&e.button!==Ls.RIGHT)return;let t=e.x-this.screenX-this.viewport.originX,r=e.y-this.screenY-this.viewport.originY;if(t<0||t>=this.viewport.columns*this.viewport.columnZoom||r<0||r>=Math.ceil(this.viewport.renderedSubrows/2))return;let n=this.viewport.startX+Math.floor(t/this.viewport.columnZoom),i=e.modifiers.shift?1:0,s=r*2+i;if(s>=this.viewport.renderedSubrows)return;let o=this.viewport.startY+Math.floor(s/this.viewport.subrowZoom);if(o>=this.currentModel.grid.length)return;this.cellHandler?.({x:n,y:o,...e.button===Ls.RIGHT?{tool:"erase"}:{}})}}var el={name:"flatblox-tui",version:"0.2.3",description:"Flatblox pixel art editor for the terminal",homepage:"https://flatblox.com",license:"MIT",type:"module",bin:{"flatblox-tui":"dist/index.js"},files:["dist","README.md"],publishConfig:{access:"public"},scripts:{build:"bun --env-file=../web/.env scripts/build.ts",dev:"bun --env-file=../web/.env --watch src/index.tsx",prepack:"bun run build",start:"bun --env-file=../web/.env src/index.tsx",typecheck:"tsc --noEmit",test:"bun test --preload ./scripts/preload.ts"},dependencies:{"@opentui/core":"^0.5.9","@opentui/solid":"^0.5.9",bun:"^1.4.0","solid-js":"1.9.12"},devDependencies:{"@flatblox/editor-core":"workspace:*","@flatblox/shared":"workspace:*","@supabase/supabase-js":"^2.49.4","@types/bun":"latest",typescript:"~5.9.3"}};var oi=`v${el.version}`;import{NativeImage as tl,parseColor as NA}from"@opentui/core";Lt({fitted_image:An});var DA=new URL("./flatblox-logo.png",import.meta.url),LA=tl.load(DA),Us=new Map;function MA(e){let t=Us.get(e);if(!t)t=LA.then((r)=>{let[n,i,s]=NA(e).toInts(),o=new Uint8Array(r.width*r.height*4);for(let l=0;l<o.length;l+=4)o[l]=n,o[l+1]=i,o[l+2]=s,o[l+3]=255;let a=tl.fromRgba(o,r.width,r.height);try{return a.composite(r)}finally{a.dispose()}}),t.catch(()=>Us.delete(e)),Us.set(e,t);return t}function kr(e){let t=ni(),[r,n]=Z(),i=!1;return Xt(()=>{MA(e.backgroundColor).then((s)=>{if(!i)n(s)},()=>{})}),ze(()=>{i=!0}),Q(Fe,{get when(){return mt(()=>!!t())()&&r()},get fallback(){return(()=>{var s=I("box");return h(s,"alignItems","center"),h(s,"justifyContent","center"),G(s,Q(Fe,{get when(){return e.height>=2},get fallback(){return(()=>{var o=I("text"),a=I("b");return R(o,a),R(a,_e("FLATBLOX")),ge((l)=>h(o,"fg",e.foregroundColor,l)),o})()},get children(){var o=I("ascii_font");return h(o,"text","FLATBLOX"),h(o,"font","tiny"),ge((a)=>{var l=`${e.id}-ascii`,c=e.foregroundColor,u=e.backgroundColor;return l!==a.e&&(a.e=h(o,"id",l,a.e)),c!==a.t&&(a.t=h(o,"color",c,a.t)),u!==a.a&&(a.a=h(o,"backgroundColor",u,a.a)),a},{e:void 0,t:void 0,a:void 0}),o}})),ge((o)=>{var{id:a,width:l,height:c,backgroundColor:u}=e;return a!==o.e&&(o.e=h(s,"id",a,o.e)),l!==o.t&&(o.t=h(s,"width",l,o.t)),c!==o.a&&(o.a=h(s,"height",c,o.a)),u!==o.o&&(o.o=h(s,"backgroundColor",u,o.o)),o},{e:void 0,t:void 0,a:void 0,o:void 0}),s})()},get children(){var s=I("fitted_image");return ge((o)=>{var a=e.id,l=r(),c=e.width,u=e.height,d=e.backgroundColor;return a!==o.e&&(o.e=h(s,"id",a,o.e)),l!==o.t&&(o.t=h(s,"source",l,o.t)),c!==o.a&&(o.a=h(s,"width",c,o.a)),u!==o.o&&(o.o=h(s,"height",u,o.o)),d!==o.i&&(o.i=h(s,"background",d,o.i)),o},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),s}})}Lt({pixel_grid:Gs});var E={background:Ue("hsl(275 60% 9%)"),panel:Ue("hsl(275 60% 11%)"),panelActive:Ue("hsl(275 60% 14%)"),card:Ue("hsl(275 60% 16%)"),border:Ue("hsl(275 60% 28%)"),text:Ue("hsl(278 100% 80%)"),muted:Ue("hsl(278 41% 65%)"),accent:Ue("hsl(315 68% 71%)"),accentText:Ue("hsl(278 70% 80%)"),warning:Ue("hsl(37 100% 71%)"),textPink:Ue("hsl(308, 50%, 75%)"),orangeActive:Ue("hsl(28, 80%, 38%)")};function Ue(e){let t=ws(e);return t?qr(t):"#ffffff"}function Ft(e){return e[0].toUpperCase()+e.slice(1)}function FA(e){return(()=>{var t=I("box");return h(t,"flexDirection","column"),h(t,"gap",0),G(t,Q(yt,{get each(){return e.colors.slice(0,10)},children:(r,n)=>{let i=Y(()=>(e.refresh(),e.session.selectedColorIndex===n())),s=n()===9?"0":String(n()+1);return(()=>{var o=I("box"),a=I("text"),l=_e(" ");return R(o,a),h(o,"height",1),h(o,"flexDirection","row"),h(o,"paddingX",1),G(o,Q(fn,{get color(){return Ue(r)},get background(){return mt(()=>!!i())()?E.panelActive:E.panel}}),a),R(a,l),G(a,()=>i()?" \u203A ":" ",l),G(a,s,l),G(a,()=>Ue(r),null),ge((c)=>{var u=i()?E.panelActive:E.panel,d=i()?E.text:E.muted;return u!==c.e&&(c.e=h(o,"backgroundColor",u,c.e)),d!==c.t&&(c.t=h(a,"fg",d,c.t)),c},{e:void 0,t:void 0}),o})()}})),t})()}function GA(e){let t=Y(()=>(e.refresh(),{tool:Ft(e.session.tool),mirrorX:e.session.mirrorX?"on":"off",mirrorY:e.session.mirrorY?"on":"off",cursor:`${e.session.cursor.x+1}, ${e.session.cursor.y+1}`}));return(()=>{var r=I("box"),n=I("box"),i=I("box"),s=I("text"),o=_e("Tool: "),a=I("text"),l=_e("Cursor: "),c=I("box"),u=I("box"),d=I("box"),A=I("text"),m=_e("Mirror X: "),g=I("text"),f=_e("Mirror Y: ");return R(r,n),h(r,"id","sidebar"),h(r,"flexDirection","column"),h(r,"paddingY",1),R(n,i),R(n,c),R(n,u),R(n,d),h(n,"width","100%"),h(n,"flexDirection","column"),h(n,"paddingX",1),R(i,s),R(i,a),h(i,"flexDirection","column"),R(s,o),G(s,()=>t().tool,null),R(a,l),G(a,()=>t().cursor,null),h(c,"height",1),G(n,Q(FA,{get session(){return e.session},get colors(){return e.colors},get refresh(){return e.refresh}}),u),h(u,"height",1),R(d,A),R(d,g),h(d,"flexDirection","column"),R(A,m),G(A,()=>t().mirrorX,null),R(g,f),G(g,()=>t().mirrorY,null),ge((p)=>{var v=e.visible?28:0,y=e.visible,S=E.panel,_=E.textPink,b=E.textPink,w=E.muted,C=E.muted;return v!==p.e&&(p.e=h(r,"width",v,p.e)),y!==p.t&&(p.t=h(r,"visible",y,p.t)),S!==p.a&&(p.a=h(r,"backgroundColor",S,p.a)),_!==p.o&&(p.o=h(s,"fg",_,p.o)),b!==p.i&&(p.i=h(a,"fg",b,p.i)),w!==p.n&&(p.n=h(A,"fg",w,p.n)),C!==p.s&&(p.s=h(g,"fg",C,p.s)),p},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),r})()}function UA(e){let t=Y(()=>{e.refresh();let r=`${e.session.mirrorX?"X":"-"}${e.session.mirrorY?"Y":"-"}`;return{tool:Ft(e.session.tool),color:Ue(e.colors[e.session.selectedColorIndex]??e.session.activeColor),mirror:r}});return(()=>{var r=I("box"),n=I("text"),i=_e("Tool "),s=_e(" Color "),o=I("text"),a=_e(" "),l=_e(" Mirror ");return R(r,n),R(r,o),h(r,"border",!0),h(r,"borderStyle","rounded"),h(r,"paddingX",1),h(r,"flexDirection","row"),R(n,i),R(n,s),G(n,()=>t().tool,s),G(r,Q(fn,{get color(){return t().color},get background(){return E.panel}}),o),R(o,a),R(o,l),G(o,()=>t().color,l),G(o,()=>t().mirror,null),ge((c)=>{var u=e.visible?3:0,d=e.visible,A=E.border,m=E.panel,g=E.textPink,f=E.textPink;return u!==c.e&&(c.e=h(r,"height",u,c.e)),d!==c.t&&(c.t=h(r,"visible",d,c.t)),A!==c.a&&(c.a=h(r,"borderColor",A,c.a)),m!==c.o&&(c.o=h(r,"backgroundColor",m,c.o)),g!==c.i&&(c.i=h(n,"fg",g,c.i)),f!==c.n&&(c.n=h(o,"fg",f,c.n)),c},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),r})()}var jA=11;function HA(e){return[["Move","Arrow keys or H J K L"],["Paint","Space or Enter"],["Tools","D draw | E erase | F fill | R rectangle | O circle"],["Shapes","Space sets a corner, Space again draws, Esc cancels"],["Palette","1\u20130 direct | [ and ] cycle"],["Mirroring","X horizontal | Y vertical"],["Blender","B connect / disconnect"],["History","U undo | Ctrl+Z undo | Ctrl+Y redo"],["Zoom","- / +"],["Save","Ctrl+S"],["Help","?"],...e?[["Artworks","Escape"],["Quit","Q"]]:[["Quit","Q or Escape"]],["",""],["Mouse","Click to paint | right-click to erase"],["","Shift+click targets the lower half-cell"],["",""],["","Press ? or Escape to close help."]]}function KA(e){let t=Y(()=>Math.max(1,Math.min(70,e.width-2))),r=Y(()=>Math.max(1,Math.min(22,e.height-2)));return(()=>{var n=I("box");return h(n,"id","help-overlay"),h(n,"position","absolute"),h(n,"zIndex",20),h(n,"border",!0),h(n,"title"," Keyboard & mouse "),h(n,"padding",1),G(n,Q(yt,{get each(){return HA(e.canGoBack)},children:([i,s])=>(()=>{var o=I("box"),a=I("text"),l=I("text");return R(o,a),R(o,l),h(o,"flexDirection","row"),G(a,()=>i.padEnd(jA)),G(l,s),ge((c)=>{var{textPink:u,accentText:d}=E;return u!==c.e&&(c.e=h(a,"fg",u,c.e)),d!==c.t&&(c.t=h(l,"fg",d,c.t)),c},{e:void 0,t:void 0}),o})()})),ge((i)=>{var s=Math.max(0,Math.floor((e.width-t())/2)),o=Math.max(0,Math.floor((e.height-r())/2)),a=t(),l=r(),c=e.visible,u=E.border,d=E.panel,A=E.accent;return s!==i.e&&(i.e=h(n,"left",s,i.e)),o!==i.t&&(i.t=h(n,"top",o,i.t)),a!==i.a&&(i.a=h(n,"width",a,i.a)),l!==i.o&&(i.o=h(n,"height",l,i.o)),c!==i.i&&(i.i=h(n,"visible",c,i.i)),u!==i.n&&(i.n=h(n,"borderColor",u,i.n)),d!==i.s&&(i.s=h(n,"backgroundColor",d,i.s)),A!==i.h&&(i.h=h(n,"titleColor",A,i.h)),i},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),n})()}function WA(e){let t=Y(()=>Math.max(1,Math.min(48,e.width-4))),r=Y(()=>Math.max(1,Math.min(7,e.height-2))),n=Y(()=>r()>=7?1:0);return(()=>{var i=I("box"),s=I("box"),o=I("input"),a=I("box"),l=I("text");return R(i,s),h(i,"id","filename-modal"),h(i,"position","absolute"),h(i,"zIndex",30),h(i,"border",!0),h(i,"title"," Save artwork "),h(i,"flexDirection","column"),R(s,o),R(s,a),R(s,l),h(s,"flexGrow",1),h(s,"width","100%"),h(s,"padding",1),h(s,"flexDirection","column"),h(o,"id","artwork-name-input"),h(o,"width","100%"),h(o,"maxLength",_s),h(o,"focused",!0),h(o,"onKeyDown",(c)=>{if(c.eventType!=="release"&&c.name==="escape")c.preventDefault(),e.onCancel()}),G(l,()=>e.error||"Enter save \xB7 Esc cancel"),ge((c)=>{var u=Math.max(0,Math.floor((e.width-t())/2)),d=Math.max(0,Math.floor((e.height-r())/2)),A=t(),m=r(),g=E.border,f=E.panel,p=E.accent,v=E.panel,y=e.value,S=E.panelActive,_=E.panelActive,b=E.text,w=E.text,C=e.onInput,P=e.onSubmit,M=n(),B=e.error?E.warning:E.accentText;return u!==c.e&&(c.e=h(i,"left",u,c.e)),d!==c.t&&(c.t=h(i,"top",d,c.t)),A!==c.a&&(c.a=h(i,"width",A,c.a)),m!==c.o&&(c.o=h(i,"height",m,c.o)),g!==c.i&&(c.i=h(i,"borderColor",g,c.i)),f!==c.n&&(c.n=h(i,"backgroundColor",f,c.n)),p!==c.s&&(c.s=h(i,"titleColor",p,c.s)),v!==c.h&&(c.h=h(s,"backgroundColor",v,c.h)),y!==c.r&&(c.r=h(o,"value",y,c.r)),S!==c.d&&(c.d=h(o,"backgroundColor",S,c.d)),_!==c.l&&(c.l=h(o,"focusedBackgroundColor",_,c.l)),b!==c.u&&(c.u=h(o,"textColor",b,c.u)),w!==c.c&&(c.c=h(o,"focusedTextColor",w,c.c)),C!==c.w&&(c.w=h(o,"onInput",C,c.w)),P!==c.m&&(c.m=h(o,"on:enter",P,c.m)),M!==c.f&&(c.f=h(a,"height",M,c.f)),B!==c.y&&(c.y=h(l,"fg",B,c.y)),c},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0}),i})()}function Rr(e){let t=wt(),r=pr(),[n,i]=Z(0),[s,o]=Z("Ready"),[a,l]=Z(!1),[c,u]=Z(null),[d,A]=Z(null),[m,g]=Z(!1),[f,p]=Z(!1),[v,y]=Z(""),[S,_]=Z(""),[b,w]=Z(2),[C,P]=Z(null),M=!e.blenderLive,B=e.blenderLive??new Os(()=>e.session.toDocument()),[k,j]=Z(B.getStatus()),X=B.onStatus(j);ze(()=>{if(X(),M)B.dispose()});let K=Y(()=>r().width>=88&&r().height>=19),ee=()=>n(),[Ae,z]=Z(0),ce=(T=!1)=>{if(i((O)=>O+1),T)z((O)=>O+1),B.sync()},Te=()=>(n(),e.session.dirty),V=Y(()=>(n(),en(e.session.palette,e.session.paletteColorAdjustment.saturation,e.session.paletteColorAdjustment.lightness))),J=Y(()=>(Ae(),Vt(e.session.grid,e.session.paletteColorAdjustment.saturation,e.session.paletteColorAdjustment.lightness))),Be=Y(()=>{n();let T=c(),O=e.session.tool;if(!T||!Ir(O))return;let L=e.session;return{points:L.shapePreview(O,T,L.cursor).flatMap((ye)=>ei(L.size,ye,L.mirrorX,L.mirrorY)),color:Ue(V()[L.selectedColorIndex]??L.activeColor)}}),pe=Y(()=>(n(),{grid:J(),revision:Ae(),cursor:e.session.cursor,zoom:b(),preview:Be()})),D=()=>{if(d())A(null)},te=(T,O)=>{if(!Ir(T))return!1;let L=c();if(!L)return u({...O}),o(`${Ft(T)} from ${O.x+1}, ${O.y+1} \xB7 Space or click to finish \xB7 Esc cancels`),ce(),!0;let Ne=e.session.applyShape(T,L,O);return u(null),ce(Ne),o(Ne?`${Ft(T)} drawn`:"No change"),!0},ie=()=>{if(!c())return!1;return u(null),o(`${Ft(e.session.tool)} cancelled`),ce(),!0},oe=(T=e.session.tool)=>{if(D(),te(T,e.session.cursor))return;let O=e.session.applyAtCursor(T);ce(O),o(O?`${Ft(T)} applied`:"No change")},Xe=(T,O)=>{D(),e.session.moveCursor(T,O);let L=C(),Ne=L?e.session.applyAtCursor(L):!1;ce(Ne),o(L&&Ne?`${Ft(L)} at ${e.session.cursor.x+1}, ${e.session.cursor.y+1}`:`Cell ${e.session.cursor.x+1}, ${e.session.cursor.y+1}`)},ue=(T)=>{let O=T==="undo"?e.session.undo():e.session.redo();o(O?T==="undo"?"Undo":"Redo":`Nothing to ${T}`),ce(O)},Ee=(T)=>{e.session.selectNextColor(T),D(),o(`Color ${e.session.selectedColorIndex+1}`),ce()},ot=async()=>{if(m())return;let T=e.session.revision,O=e.session.toDocument();g(!0),o("Saving\u2026");try{let L;if(e.saveDocument)L=await e.saveDocument(O);else{let ye=e.filePath??`${e.session.filename}.flatblox.json`,lt=un(O);if(e.writeFile)await e.writeFile(ye,lt);else await Bun.write(ye,lt);L=`Saved ${ye}`}let Ne=e.session.markSaved(T);A(null),o(Ne?L||"Saved":`${L||"Saved"}; newer edits remain unsaved`),ce()}catch(L){let Ne=L instanceof Error?L.message:String(L);o(`Save failed: ${Ne}`)}finally{g(!1)}},Ve=()=>{if(e.promptForFilenameOnSave){y(""),_(""),p(!0),o("Name artwork before saving");return}ot()},Qe=(T)=>{let O=tn(T);if(!O){_("Enter an artwork name");return}e.session.rename(O),_(""),p(!1),ce(),ot()},re=()=>{p(!1),_(""),o("Save cancelled")},ht=(T)=>{if(!Te()||d()===T){if(T==="back"&&e.onBack)e.onBack();else t.destroy();return}A(T),o(T==="back"?"Unsaved changes \u2014 press Escape again to return":"Unsaved changes \u2014 press Q again to quit")},x=(T)=>{e.session.setTool(T),u(null),D(),o(`${Ft(T)} tool`),ce()},H=(T)=>{let O=Math.max(1,Math.min(8,b()+T));w(O),o(`Zoom ${O}\xD7`)},fe=async()=>{let T=B.getStatus();if(T.state==="connected"||T.state==="connecting"){B.disconnect(),o("Blender Live disconnected");return}o("Connecting to Blender\u2026");let O=await B.connect();o(O.state==="connected"?"Drawing live in Blender":O.message??"Blender Live disconnected")},qe=(T)=>{e.session.setCursor(T.x,T.y);let O=T.tool??e.session.tool;if(D(),te(O,{x:T.x,y:T.y}))return;let L=e.session.applyAt(T.x,T.y,O);o(L?`${Ft(O)} at ${T.x+1}, ${T.y+1}`:`Cell ${T.x+1}, ${T.y+1}`),ce(L)};br((T)=>{let O=T.name.toLowerCase(),L=T.sequence,Ne=tr(T),ye=rr(O);if(T.eventType==="release"){if(Ne)P(null);return}if(f())return;if(a()){if(O==="escape"||L==="?")l(!1);return}let lt=O==="q"||O==="escape"||T.ctrl&&O==="c";if(d()&&!lt)A(null);if(T.ctrl){if(O==="s")Ve();else if(O==="z"&&T.shift)ue("redo");else if(O==="z")ue("undo");else if(O==="y")ue("redo");else if(O==="c")ht("quit");return}if(L==="?"){l(!0);return}if(O==="escape"&&ie())return;if(O==="escape"&&e.onBack){ht("back");return}if(O==="q"||O==="escape"){ht("quit");return}if(ye)Xe(ye.dx,ye.dy);else if(Ne){let De=e.session.tool;P(T.source==="kitty"&&(De==="draw"||De==="erase")?De:null),oe(De)}else if(O==="b")fe();else if(O==="d")x("draw");else if(O==="e")x("erase");else if(O==="f")x("fill");else if(O==="r")x("rectangle");else if(O==="o")x("circle");else if(O==="x")e.session.toggleMirrorX(),o(`Mirror X ${e.session.mirrorX?"on":"off"}`),ce();else if(O==="y")e.session.toggleMirrorY(),o(`Mirror Y ${e.session.mirrorY?"on":"off"}`),ce();else if(O==="u")ue("undo");else if(L==="+"||O==="+"||O==="=")H(1);else if(L==="-"||O==="-")H(-1);else if(L==="[")Ee(-1);else if(L==="]")Ee(1);else if(/^[0-9]$/.test(O))e.session.selectColor(O==="0"?9:Number(O)-1),o(`Color ${e.session.selectedColorIndex+1}`),ce()},{release:!0});let Pe=()=>{n();let T=e.session.dirty?" \u25CF":"";return`${e.session.filename}${T} ${e.session.size}\xD7${e.session.size}`},at=()=>{switch(k().state){case"connecting":return"connecting";case"connected":return"live";case"error":return"error";default:return"off"}};return(()=>{var T=I("box"),O=I("box"),L=I("text"),Ne=I("b"),ye=I("box"),lt=I("text"),De=I("box"),At=I("box"),et=I("pixel_grid"),ct=I("box"),Et=I("text"),Gn=_e("Blender:"),Hr=_e(" | ");return R(T,O),R(T,De),R(T,ct),h(T,"width","100%"),h(T,"height","100%"),h(T,"flexDirection","column"),R(O,L),R(O,ye),R(O,lt),h(O,"height",3),h(O,"paddingX",1),h(O,"paddingY",1),h(O,"flexDirection","row"),h(O,"justifyContent","space-between"),R(L,Ne),G(Ne,oi),h(ye,"height",1),h(ye,"flexBasis",0),h(ye,"flexGrow",1),h(ye,"flexDirection","row"),h(ye,"justifyContent","center"),G(ye,Q(kr,{id:"dashboard-wordmark",width:14,height:1,get backgroundColor(){return E.panel},get foregroundColor(){return E.accent}})),G(lt,Pe),R(De,At),h(De,"flexGrow",1),h(De,"flexDirection","row"),h(De,"paddingLeft",1),h(De,"paddingY",1),h(De,"gap",1),R(At,et),h(At,"flexGrow",1),h(At,"overflow","hidden"),h(et,"id","pixel-grid"),h(et,"width","100%"),h(et,"height","100%"),h(et,"flexGrow",1),h(et,"onCell",qe),G(De,Q(Fe,{get when(){return K()},get children(){return Q(GA,{get session(){return e.session},get colors(){return V()},refresh:ee,visible:!0})}}),null),G(T,Q(Fe,{get when(){return!K()},get children(){return Q(UA,{get session(){return e.session},get colors(){return V()},refresh:ee,visible:!0})}}),ct),R(ct,Et),h(ct,"height",1),h(ct,"paddingX",1),h(ct,"flexDirection","row"),h(ct,"justifyContent","space-between"),R(Et,Gn),R(Et,Hr),G(Et,at,Hr),G(Et,s,null),G(ct,Q(Fe,{get when(){return s().length<Math.max(8,r().width-58)},get children(){var q=I("text"),de=_e("-/+ zoom \xB7 ? help \xB7 Ctrl+S save \xB7 "),me=_e("Q quit");return R(q,de),R(q,me),G(q,()=>e.onBack?"Esc artworks \xB7 ":"",me),ge((Re)=>h(q,"fg",E.muted,Re)),q}}),null),G(T,Q(KA,{get width(){return r().width},get height(){return r().height},get visible(){return a()},get canGoBack(){return Boolean(e.onBack)}}),null),G(T,Q(Fe,{get when(){return f()},get children(){return Q(WA,{get width(){return r().width},get height(){return r().height},get value(){return v()},get error(){return S()},onInput:(q)=>{if(y(q),S())_("")},onSubmit:Qe,onCancel:re})}}),null),ge((q)=>{var{background:de,panel:me}=E,Re=k().state==="error"?E.warning:E.accentText,ve=Te()?E.warning:E.muted,he=K()?0:1,ne=E.background,se=E.background,Oe=pe(),Le=E.panelActive,Se=s().startsWith("Save failed")||k().state==="error"?E.warning:E.textPink;return de!==q.e&&(q.e=h(T,"backgroundColor",de,q.e)),me!==q.t&&(q.t=h(O,"backgroundColor",me,q.t)),Re!==q.a&&(q.a=h(L,"fg",Re,q.a)),ve!==q.o&&(q.o=h(lt,"fg",ve,q.o)),he!==q.i&&(q.i=h(De,"paddingRight",he,q.i)),ne!==q.n&&(q.n=h(De,"backgroundColor",ne,q.n)),se!==q.s&&(q.s=h(At,"backgroundColor",se,q.s)),Oe!==q.h&&(q.h=h(et,"model",Oe,q.h)),Le!==q.r&&(q.r=h(ct,"backgroundColor",Le,q.r)),Se!==q.d&&(q.d=h(Et,"fg",Se,q.d)),q},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0}),T})()}import{chmod as Mg,mkdir as Fg,readFile as Gg,rename as Ug,unlink as jg,writeFile as Hg}from"fs/promises";import{homedir as Kg}from"os";import{dirname as Wg,join as Qc}from"path";var Bl=Ru(Tl(),1),{__extends:f_,__assign:g_,__rest:nr,__decorate:m_,__param:p_,__esDecorate:b_,__runInitializers:y_,__propKey:w_,__setFunctionName:__,__metadata:v_,__awaiter:Ol,__generator:C_,__exportStar:E_,__createBinding:S_,__values:I_,__read:x_,__spread:k_,__spreadArrays:R_,__spreadArray:T_,__await:B_,__asyncGenerator:O_,__asyncDelegator:P_,__asyncValues:N_,__makeTemplateObject:D_,__importStar:L_,__importDefault:M_,__classPrivateFieldGet:F_,__classPrivateFieldSet:G_,__classPrivateFieldIn:U_,__addDisposableResource:j_,__disposeResources:H_,__rewriteRelativeImportExtension:K_}=Bl.default;var Pl=(e)=>{if(e)return(...t)=>e(...t);return(...t)=>fetch(...t)};class pn extends Error{constructor(e,t="FunctionsError",r){super(e);this.name=t,this.context=r}toJSON(){return{name:this.name,message:this.message,context:this.context}}}class ui extends pn{constructor(e){super("Failed to send a request to the Edge Function","FunctionsFetchError",e)}}class bn extends pn{constructor(e){super("Relay Error invoking the Edge Function","FunctionsRelayError",e)}}class yn extends pn{constructor(e){super("Edge Function returned a non-2xx status code","FunctionsHttpError",e)}}var mn;(function(e){e.Any="any",e.ApNortheast1="ap-northeast-1",e.ApNortheast2="ap-northeast-2",e.ApSouth1="ap-south-1",e.ApSoutheast1="ap-southeast-1",e.ApSoutheast2="ap-southeast-2",e.CaCentral1="ca-central-1",e.EuCentral1="eu-central-1",e.EuWest1="eu-west-1",e.EuWest2="eu-west-2",e.EuWest3="eu-west-3",e.SaEast1="sa-east-1",e.UsEast1="us-east-1",e.UsWest1="us-west-1",e.UsWest2="us-west-2"})(mn||(mn={}));class di{constructor(e,{headers:t={},customFetch:r,region:n=mn.Any}={}){this.url=e,this.headers=t,this.region=n,this.fetch=Pl(r)}setAuth(e){this.headers.Authorization=`Bearer ${e}`}invoke(e){return Ol(this,arguments,void 0,function*(t,r={}){var n;let i,s;try{let{headers:o,method:a,body:l,signal:c,timeout:u}=r,d={},{region:A}=r;if(!A)A=this.region;let m=new URL(`${this.url}/${t}`);if(A&&A!=="any")d["x-region"]=A,m.searchParams.set("forceFunctionRegion",A);let g;if(l&&(o&&!Object.prototype.hasOwnProperty.call(o,"Content-Type")||!o))if(typeof Blob<"u"&&l instanceof Blob||l instanceof ArrayBuffer)d["Content-Type"]="application/octet-stream",g=l;else if(typeof l==="string")d["Content-Type"]="text/plain",g=l;else if(typeof FormData<"u"&&l instanceof FormData)g=l;else d["Content-Type"]="application/json",g=JSON.stringify(l);else if(l&&typeof l!=="string"&&!(typeof Blob<"u"&&l instanceof Blob)&&!(l instanceof ArrayBuffer)&&!(typeof FormData<"u"&&l instanceof FormData))g=JSON.stringify(l);else g=l;let f=c;if(u)if(s=new AbortController,i=setTimeout(()=>s.abort(),u),c)f=s.signal,c.addEventListener("abort",()=>s.abort());else f=s.signal;let p=yield this.fetch(m.toString(),{method:a||"POST",headers:Object.assign(Object.assign(Object.assign({},d),this.headers),o),body:g,signal:f}).catch((_)=>{throw new ui(_)}),v=p.headers.get("x-relay-error");if(v&&v==="true")throw new bn(p);if(!p.ok)throw new yn(p);let y=((n=p.headers.get("Content-Type"))!==null&&n!==void 0?n:"text/plain").split(";")[0].trim(),S;if(y==="application/json")S=yield p.json();else if(y==="application/octet-stream"||y==="application/pdf")S=yield p.blob();else if(y==="text/event-stream")S=p;else if(y==="multipart/form-data")S=yield p.formData();else S=yield p.text();return{data:S,error:null,response:p}}catch(o){return{data:null,error:o,response:o instanceof yn||o instanceof bn?o.context:void 0}}finally{if(i)clearTimeout(i)}})}}var Nl=(e)=>Math.min(1000*2**e,30000),YA=[520,503],Fl=["GET","HEAD","OPTIONS"],Gl=class extends Error{constructor(e){super(e.message);this.name="PostgrestError",this.details=e.details,this.hint=e.hint,this.code=e.code}toJSON(){return{name:this.name,message:this.message,details:this.details,hint:this.hint,code:this.code}}};function Dl(e,t){return new Promise((r)=>{if(t===null||t===void 0?void 0:t.aborted){r();return}let n=setTimeout(()=>{t===null||t===void 0||t.removeEventListener("abort",i),r()},e);function i(){clearTimeout(n),r()}t===null||t===void 0||t.addEventListener("abort",i)})}function QA(e,t,r,n){if(!n||r>=3)return!1;if(!Fl.includes(e))return!1;if(!YA.includes(t))return!1;return!0}var JA=class{constructor(e){var t,r,n,i,s;if(this.shouldThrowOnError=!1,this.retryEnabled=!0,this.method=e.method,this.url=e.url,this.headers=new Headers(e.headers),this.schema=e.schema,this.body=e.body,this.shouldThrowOnError=(t=e.shouldThrowOnError)!==null&&t!==void 0?t:!1,this.signal=e.signal,this.isMaybeSingle=(r=e.isMaybeSingle)!==null&&r!==void 0?r:!1,this.shouldStripNulls=(n=e.shouldStripNulls)!==null&&n!==void 0?n:!1,this.urlLengthLimit=(i=e.urlLengthLimit)!==null&&i!==void 0?i:8000,this.retryEnabled=(s=e.retry)!==null&&s!==void 0?s:!0,e.fetch)this.fetch=e.fetch;else this.fetch=fetch}throwOnError(){return this.shouldThrowOnError=!0,this}stripNulls(){if(this.headers.get("Accept")==="text/csv")throw Error("stripNulls() cannot be used with csv()");return this.shouldStripNulls=!0,this}setHeader(e,t){return this.headers=new Headers(this.headers),this.headers.set(e,t),this}retry(e){return this.retryEnabled=e,this}then(e,t){var r=this;if(this.schema===void 0);else if(["GET","HEAD"].includes(this.method))this.headers.set("Accept-Profile",this.schema);else this.headers.set("Content-Profile",this.schema);if(this.method!=="GET"&&this.method!=="HEAD")this.headers.set("Content-Type","application/json");if(this.shouldStripNulls){let o=this.headers.get("Accept");if(o==="application/vnd.pgrst.object+json")this.headers.set("Accept","application/vnd.pgrst.object+json;nulls=stripped");else if(!o||o==="application/json")this.headers.set("Accept","application/vnd.pgrst.array+json;nulls=stripped")}let n=this.fetch,s=(async()=>{let o=0;while(!0){let c=new Headers(r.headers);if(o>0)c.set("X-Retry-Count",String(o));let u;try{u=await n(r.url.toString(),{method:r.method,headers:c,body:JSON.stringify(r.body),signal:r.signal})}catch(d){if((d===null||d===void 0?void 0:d.name)==="AbortError"||(d===null||d===void 0?void 0:d.code)==="ABORT_ERR")throw d;if(!Fl.includes(r.method))throw d;if(r.retryEnabled&&o<3){let A=Nl(o);o++,await Dl(A,r.signal);continue}throw d}if(QA(r.method,u.status,o,r.retryEnabled)){var a,l;let d=(a=(l=u.headers)===null||l===void 0?void 0:l.get("Retry-After"))!==null&&a!==void 0?a:null,A=d!==null?Math.max(0,parseInt(d,10)||0)*1000:Nl(o);await u.text(),o++,await Dl(A,r.signal);continue}return await r.processResponse(u)}})();if(!this.shouldThrowOnError)s=s.catch((o)=>{var a;let l="",c="",u="",d=o===null||o===void 0?void 0:o.cause;if(d){var A,m,g,f;let y=(A=d===null||d===void 0?void 0:d.message)!==null&&A!==void 0?A:"",S=(m=d===null||d===void 0?void 0:d.code)!==null&&m!==void 0?m:"";if(l=`${(g=o===null||o===void 0?void 0:o.name)!==null&&g!==void 0?g:"FetchError"}: ${o===null||o===void 0?void 0:o.message}`,l+=`
12
12
 
13
13
  Caused by: ${(f=d===null||d===void 0?void 0:d.name)!==null&&f!==void 0?f:"Error"}: ${y}`,S)l+=` (${S})`;if(d===null||d===void 0?void 0:d.stack)l+=`
14
14
  ${d.stack}`}else{var p;l=(p=o===null||o===void 0?void 0:o.stack)!==null&&p!==void 0?p:""}let v=this.url.toString().length;if((o===null||o===void 0?void 0:o.name)==="AbortError"||(o===null||o===void 0?void 0:o.code)==="ABORT_ERR"){if(u="",c="Request was aborted (timeout or manual cancellation)",v>this.urlLengthLimit)c+=`. Note: Your request URL is ${v} characters, which may exceed server limits. If selecting many fields, consider using views. If filtering with large arrays (e.g., .in('id', [many IDs])), consider using an RPC function to pass values server-side.`}else if((d===null||d===void 0?void 0:d.name)==="HeadersOverflowError"||(d===null||d===void 0?void 0:d.code)==="UND_ERR_HEADERS_OVERFLOW"){if(u="",c="HTTP headers exceeded server limits (typically 16KB)",v>this.urlLengthLimit)c+=`. Your request URL is ${v} characters. If selecting many fields, consider using views. If filtering with large arrays (e.g., .in('id', [200+ IDs])), consider using an RPC function instead.`}return{success:!1,error:{message:`${(a=o===null||o===void 0?void 0:o.name)!==null&&a!==void 0?a:"FetchError"}: ${o===null||o===void 0?void 0:o.message}`,details:l,hint:c,code:u},data:null,count:null,status:0,statusText:""}});return s.then(e,t)}async processResponse(e){var t=this;let r=null,n=null,i=null,s=e.status,o=e.statusText;if(e.ok){var a,l;if(t.method!=="HEAD"){var c;let A=await e.text();if(A==="");else if(t.headers.get("Accept")==="text/csv")n=A;else if(t.headers.get("Accept")&&((c=t.headers.get("Accept"))===null||c===void 0?void 0:c.includes("application/vnd.pgrst.plan+text")))n=A;else n=JSON.parse(A)}let u=(a=t.headers.get("Prefer"))===null||a===void 0?void 0:a.match(/count=(exact|planned|estimated)/),d=(l=e.headers.get("content-range"))===null||l===void 0?void 0:l.split("/");if(u&&d&&d.length>1)i=parseInt(d[1]);if(t.isMaybeSingle&&Array.isArray(n))if(n.length>1)r={code:"PGRST116",details:`Results contain ${n.length} rows, application/vnd.pgrst.object+json requires 1 row`,hint:null,message:"JSON object requested, multiple (or no) rows returned"},n=null,i=null,s=406,o="Not Acceptable";else if(n.length===1)n=n[0];else n=null}else{let u=await e.text();try{if(r=JSON.parse(u),Array.isArray(r)&&e.status===404)n=[],r=null,s=200,o="OK"}catch(d){if(e.status===404&&u==="")s=204,o="No Content";else r={message:u}}if(r&&t.shouldThrowOnError)throw new Gl(r)}return{success:r===null,error:r,data:n,count:i,status:s,statusText:o}}returns(){return this}overrideTypes(){return this}},$A=class extends JA{select(e){let t=!1,r=(e!==null&&e!==void 0?e:"*").split("").map((n)=>{if(/\s/.test(n)&&!t)return"";if(n==='"')t=!t;return n}).join("");return this.url.searchParams.set("select",r),this.headers.append("Prefer","return=representation"),this}order(e,{ascending:t=!0,nullsFirst:r,foreignTable:n,referencedTable:i=n}={}){let s=i?`${i}.order`:"order",o=this.url.searchParams.get(s);return this.url.searchParams.set(s,`${o?`${o},`:""}${e}.${t?"asc":"desc"}${r===void 0?"":r?".nullsfirst":".nullslast"}`),this}limit(e,{foreignTable:t,referencedTable:r=t}={}){let n=typeof r>"u"?"limit":`${r}.limit`;return this.url.searchParams.set(n,`${e}`),this}range(e,t,{foreignTable:r,referencedTable:n=r}={}){let i=typeof n>"u"?"offset":`${n}.offset`,s=typeof n>"u"?"limit":`${n}.limit`;return this.url.searchParams.set(i,`${e}`),this.url.searchParams.set(s,`${t-e+1}`),this}abortSignal(e){return this.signal=e,this}single(){return this.headers.set("Accept","application/vnd.pgrst.object+json"),this}maybeSingle(){return this.isMaybeSingle=!0,this}csv(){return this.headers.set("Accept","text/csv"),this}geojson(){return this.headers.set("Accept","application/geo+json"),this}explain({analyze:e=!1,verbose:t=!1,settings:r=!1,buffers:n=!1,wal:i=!1,format:s="text"}={}){var o;let a=[e?"analyze":null,t?"verbose":null,r?"settings":null,n?"buffers":null,i?"wal":null].filter(Boolean).join("|"),l=(o=this.headers.get("Accept"))!==null&&o!==void 0?o:"application/json";if(this.headers.set("Accept",`application/vnd.pgrst.plan+${s}; for="${l}"; options=${a};`),s==="json")return this;else return this}rollback(){return this.headers.append("Prefer","tx=rollback"),this}returns(){return this}maxAffected(e){return this.headers.append("Prefer","handling=strict"),this.headers.append("Prefer",`max-affected=${e}`),this}},Ll=new RegExp("[,()]"),Br=class extends $A{eq(e,t){return this.url.searchParams.append(e,`eq.${t}`),this}neq(e,t){return this.url.searchParams.append(e,`neq.${t}`),this}gt(e,t){return this.url.searchParams.append(e,`gt.${t}`),this}gte(e,t){return this.url.searchParams.append(e,`gte.${t}`),this}lt(e,t){return this.url.searchParams.append(e,`lt.${t}`),this}lte(e,t){return this.url.searchParams.append(e,`lte.${t}`),this}like(e,t){return this.url.searchParams.append(e,`like.${t}`),this}likeAllOf(e,t){return this.url.searchParams.append(e,`like(all).{${t.join(",")}}`),this}likeAnyOf(e,t){return this.url.searchParams.append(e,`like(any).{${t.join(",")}}`),this}ilike(e,t){return this.url.searchParams.append(e,`ilike.${t}`),this}ilikeAllOf(e,t){return this.url.searchParams.append(e,`ilike(all).{${t.join(",")}}`),this}ilikeAnyOf(e,t){return this.url.searchParams.append(e,`ilike(any).{${t.join(",")}}`),this}regexMatch(e,t){return this.url.searchParams.append(e,`match.${t}`),this}regexIMatch(e,t){return this.url.searchParams.append(e,`imatch.${t}`),this}is(e,t){return this.url.searchParams.append(e,`is.${t}`),this}isDistinct(e,t){return this.url.searchParams.append(e,`isdistinct.${t}`),this}in(e,t){let r=Array.from(new Set(t)).map((n)=>{if(typeof n==="string"&&Ll.test(n))return`"${n}"`;else return`${n}`}).join(",");return this.url.searchParams.append(e,`in.(${r})`),this}notIn(e,t){let r=Array.from(new Set(t)).map((n)=>{if(typeof n==="string"&&Ll.test(n))return`"${n}"`;else return`${n}`}).join(",");return this.url.searchParams.append(e,`not.in.(${r})`),this}contains(e,t){if(typeof t==="string")this.url.searchParams.append(e,`cs.${t}`);else if(Array.isArray(t))this.url.searchParams.append(e,`cs.{${t.join(",")}}`);else this.url.searchParams.append(e,`cs.${JSON.stringify(t)}`);return this}containedBy(e,t){if(typeof t==="string")this.url.searchParams.append(e,`cd.${t}`);else if(Array.isArray(t))this.url.searchParams.append(e,`cd.{${t.join(",")}}`);else this.url.searchParams.append(e,`cd.${JSON.stringify(t)}`);return this}rangeGt(e,t){return this.url.searchParams.append(e,`sr.${t}`),this}rangeGte(e,t){return this.url.searchParams.append(e,`nxl.${t}`),this}rangeLt(e,t){return this.url.searchParams.append(e,`sl.${t}`),this}rangeLte(e,t){return this.url.searchParams.append(e,`nxr.${t}`),this}rangeAdjacent(e,t){return this.url.searchParams.append(e,`adj.${t}`),this}overlaps(e,t){if(typeof t==="string")this.url.searchParams.append(e,`ov.${t}`);else this.url.searchParams.append(e,`ov.{${t.join(",")}}`);return this}textSearch(e,t,{config:r,type:n}={}){let i="";if(n==="plain")i="pl";else if(n==="phrase")i="ph";else if(n==="websearch")i="w";let s=r===void 0?"":`(${r})`;return this.url.searchParams.append(e,`${i}fts${s}.${t}`),this}match(e){return Object.entries(e).filter(([t,r])=>r!==void 0).forEach(([t,r])=>{this.url.searchParams.append(t,`eq.${r}`)}),this}not(e,t,r){return this.url.searchParams.append(e,`not.${t}.${r}`),this}or(e,{foreignTable:t,referencedTable:r=t}={}){let n=r?`${r}.or`:"or";return this.url.searchParams.append(n,`(${e})`),this}filter(e,t,r){return this.url.searchParams.append(e,`${t}.${r}`),this}},ZA=class{constructor(e,{headers:t={},schema:r,fetch:n,urlLengthLimit:i=8000,retry:s}){this.url=e,this.headers=new Headers(t),this.schema=r,this.fetch=n,this.urlLengthLimit=i,this.retry=s}cloneRequestState(){return{url:new URL(this.url.toString()),headers:new Headers(this.headers)}}select(e,t){let{head:r=!1,count:n}=t!==null&&t!==void 0?t:{},i=r?"HEAD":"GET",s=!1,o=(e!==null&&e!==void 0?e:"*").split("").map((c)=>{if(/\s/.test(c)&&!s)return"";if(c==='"')s=!s;return c}).join(""),{url:a,headers:l}=this.cloneRequestState();if(a.searchParams.set("select",o),n)l.append("Prefer",`count=${n}`);return new Br({method:i,url:a,headers:l,schema:this.schema,fetch:this.fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}insert(e,{count:t,defaultToNull:r=!0}={}){var n;let i="POST",{url:s,headers:o}=this.cloneRequestState();if(t)o.append("Prefer",`count=${t}`);if(!r)o.append("Prefer","missing=default");if(Array.isArray(e)){let a=e.reduce((l,c)=>l.concat(Object.keys(c)),[]);if(a.length>0){let l=[...new Set(a)].map((c)=>`"${c}"`);s.searchParams.set("columns",l.join(","))}}return new Br({method:"POST",url:s,headers:o,schema:this.schema,body:e,fetch:(n=this.fetch)!==null&&n!==void 0?n:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}upsert(e,{onConflict:t,ignoreDuplicates:r=!1,count:n,defaultToNull:i=!0}={}){var s;let o="POST",{url:a,headers:l}=this.cloneRequestState();if(l.append("Prefer",`resolution=${r?"ignore":"merge"}-duplicates`),t!==void 0)a.searchParams.set("on_conflict",t);if(n)l.append("Prefer",`count=${n}`);if(!i)l.append("Prefer","missing=default");if(Array.isArray(e)){let c=e.reduce((u,d)=>u.concat(Object.keys(d)),[]);if(c.length>0){let u=[...new Set(c)].map((d)=>`"${d}"`);a.searchParams.set("columns",u.join(","))}}return new Br({method:"POST",url:a,headers:l,schema:this.schema,body:e,fetch:(s=this.fetch)!==null&&s!==void 0?s:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}update(e,{count:t}={}){var r;let n="PATCH",{url:i,headers:s}=this.cloneRequestState();if(t)s.append("Prefer",`count=${t}`);return new Br({method:"PATCH",url:i,headers:s,schema:this.schema,body:e,fetch:(r=this.fetch)!==null&&r!==void 0?r:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}delete({count:e}={}){var t;let r="DELETE",{url:n,headers:i}=this.cloneRequestState();if(e)i.append("Prefer",`count=${e}`);return new Br({method:"DELETE",url:n,headers:i,schema:this.schema,fetch:(t=this.fetch)!==null&&t!==void 0?t:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}};function wn(e){return wn=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},wn(e)}function XA(e,t){if(wn(e)!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t||"default");if(wn(n)!="object")return n;throw TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function VA(e){var t=XA(e,"string");return wn(t)=="symbol"?t:t+""}function zA(e,t,r){return(t=VA(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Ml(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function hi(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?Ml(Object(r),!0).forEach(function(n){zA(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ml(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}var Ul=class e{constructor(t,{headers:r={},schema:n,fetch:i,timeout:s,urlLengthLimit:o=8000,retry:a}={}){this.url=t,this.headers=new Headers(r),this.schemaName=n,this.urlLengthLimit=o;let l=i!==null&&i!==void 0?i:globalThis.fetch;if(s!==void 0&&s>0)this.fetch=(c,u)=>{let d=new AbortController,A=setTimeout(()=>d.abort(),s),m=u===null||u===void 0?void 0:u.signal;if(m){if(m.aborted)return clearTimeout(A),l(c,u);let g=()=>{clearTimeout(A),d.abort()};return m.addEventListener("abort",g,{once:!0}),l(c,hi(hi({},u),{},{signal:d.signal})).finally(()=>{clearTimeout(A),m.removeEventListener("abort",g)})}return l(c,hi(hi({},u),{},{signal:d.signal})).finally(()=>clearTimeout(A))};else this.fetch=l;this.retry=a}from(t){if(!t||typeof t!=="string"||t.trim()==="")throw Error("Invalid relation name: relation must be a non-empty string.");return new ZA(new URL(`${this.url}/${t}`),{headers:new Headers(this.headers),schema:this.schemaName,fetch:this.fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}schema(t){return new e(this.url,{headers:this.headers,schema:t,fetch:this.fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}rpc(t,r={},{head:n=!1,get:i=!1,count:s}={}){var o;let a,l=new URL(`${this.url}/rpc/${t}`),c,u=(m)=>m!==null&&typeof m==="object"&&(!Array.isArray(m)||m.some(u)),d=n&&Object.values(r).some(u);if(d)a="POST",c=r;else if(n||i)a=n?"HEAD":"GET",Object.entries(r).filter(([m,g])=>g!==void 0).map(([m,g])=>[m,Array.isArray(g)?`{${g.join(",")}}`:`${g}`]).forEach(([m,g])=>{l.searchParams.append(m,g)});else a="POST",c=r;let A=new Headers(this.headers);if(d)A.set("Prefer",s?`count=${s},return=minimal`:"return=minimal");else if(s)A.set("Prefer",`count=${s}`);return new Br({method:a,url:l,headers:A,schema:this.schemaName,body:c,fetch:(o=this.fetch)!==null&&o!==void 0?o:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}};class jl{constructor(){}static detectEnvironment(){var e;if(typeof WebSocket<"u")return{type:"native",constructor:WebSocket};if(typeof globalThis<"u"&&typeof globalThis.WebSocket<"u")return{type:"native",constructor:globalThis.WebSocket};if(typeof global<"u"&&typeof global.WebSocket<"u")return{type:"native",constructor:global.WebSocket};if(typeof globalThis<"u"&&typeof globalThis.WebSocketPair<"u"&&typeof globalThis.WebSocket>"u")return{type:"cloudflare",error:"Cloudflare Workers detected. WebSocket clients are not supported in Cloudflare Workers.",workaround:"Use Cloudflare Workers WebSocket API for server-side WebSocket handling, or deploy to a different runtime."};if(typeof globalThis<"u"&&globalThis.EdgeRuntime||typeof navigator<"u"&&((e=navigator.userAgent)===null||e===void 0?void 0:e.includes("Vercel-Edge")))return{type:"unsupported",error:"Edge runtime detected (Vercel Edge/Netlify Edge). WebSockets are not supported in edge functions.",workaround:"Use serverless functions or a different deployment target for WebSocket functionality."};let t=globalThis.process;if(t){let r=t.versions;if(r&&r.node){let n=r.node,i=parseInt(n.replace(/^v/,"").split(".")[0]);if(i>=22){if(typeof globalThis.WebSocket<"u")return{type:"native",constructor:globalThis.WebSocket};return{type:"unsupported",error:`Node.js ${i} detected but native WebSocket not found.`,workaround:"Provide a WebSocket implementation via the transport option."}}return{type:"unsupported",error:`Node.js ${i} detected without native WebSocket support.`,workaround:`For Node.js < 22, install "ws" package and provide it via the transport option:
@@ -34,8 +34,8 @@ Option 2: Install and provide the "ws" package:
34
34
  const client = new RealtimeClient(url, {
35
35
  ...options,
36
36
  transport: ws
37
- })`);throw Error(`WebSocket not available: ${t}`)}this._handleNodeJsRaceCondition()}endpointURL(){return this.socketAdapter.endPointURL()}async disconnect(e,t){if(this.isDisconnecting())return"ok";return await this.socketAdapter.disconnect(()=>{clearInterval(this._workerHeartbeatTimer),this._terminateWorker()},e,t)}getChannels(){return this.channels}async removeChannel(e){let t=await e.unsubscribe();if(t==="ok")e.teardown();if(this.channels.length===0)this.disconnect();return t}async removeAllChannels(){let e=this.channels.map(async(r)=>{let n=await r.unsubscribe();return r.teardown(),n}),t=await Promise.all(e);return this.disconnect(),t}log(e,t,r){this.socketAdapter.log(e,t,r)}connectionState(){return this.socketAdapter.connectionState()||_n.closed}isConnected(){return this.socketAdapter.isConnected()}isConnecting(){return this.socketAdapter.isConnecting()}isDisconnecting(){return this.socketAdapter.isDisconnecting()}channel(e,t={config:{}}){let r=`realtime:${e}`,n=this.getChannels().find((i)=>i.topic===r);if(!n){let i=new Yt(`realtime:${e}`,t,this);return this.channels.push(i),i}else return n}push(e){this.socketAdapter.push(e)}async setAuth(e=null){this._authPromise=this._performAuth(e);try{await this._authPromise}finally{this._authPromise=null}}_isManualToken(){return this._manuallySetToken}async sendHeartbeat(){this.socketAdapter.sendHeartbeat()}onHeartbeat(e){this.socketAdapter.heartbeatCallback=this._wrapHeartbeatCallback(e)}_makeRef(){return this.socketAdapter.makeRef()}_remove(e){this.channels=this.channels.filter((t)=>t.topic!==e.topic)}async _performAuth(e=null){let t,r=!1;if(e)t=e,r=!0;else if(this.accessToken)try{t=await this.accessToken()}catch(n){this.log("error","Error fetching access token from callback",n),t=this.accessTokenValue}else t=this.accessTokenValue;if(r)this._manuallySetToken=!0;else if(this.accessToken)this._manuallySetToken=!1;if(this.accessTokenValue!=t)this.accessTokenValue=t,this.channels.forEach((n)=>{let i={access_token:t,version:Kl};if(t&&n.updateJoinPayload(i),n.joinedOnce&&n.channelAdapter.isJoined())n.channelAdapter.push(Ai.access_token,{access_token:t})})}async _waitForAuthIfNeeded(){if(this._authPromise)await this._authPromise}_setAuthSafely(e="general"){if(!this._isManualToken())this.setAuth().catch((t)=>{this.log("error",`Error setting auth in ${e}`,t)})}_setupConnectionHandlers(){this.socketAdapter.onOpen(()=>{if((this._authPromise||(this.accessToken&&!this.accessTokenValue?this.setAuth():Promise.resolve())).catch((t)=>{this.log("error","error waiting for auth on connect",t)}),this.worker&&!this.workerRef)this._startWorkerHeartbeat()}),this.socketAdapter.onClose(()=>{if(this.worker&&this.workerRef)this._terminateWorker()}),this.socketAdapter.onMessage((e)=>{if(e.ref&&e.ref===this._pendingWorkerHeartbeatRef)this._pendingWorkerHeartbeatRef=null})}_handleNodeJsRaceCondition(){if(this.socketAdapter.isConnected())this.socketAdapter.getSocket().onConnOpen()}_wrapHeartbeatCallback(e){return(t,r)=>{if(t=="sent")this._setAuthSafely();if(e)e(t,r)}}_startWorkerHeartbeat(){if(this.workerUrl)this.log("worker",`starting worker for from ${this.workerUrl}`);else this.log("worker","starting default worker");let e=this._workerObjectUrl(this.workerUrl);this.workerRef=new Worker(e),this.workerRef.onerror=(t)=>{this.log("worker","worker error",t.message),this._terminateWorker(),this.disconnect()},this.workerRef.onmessage=(t)=>{if(t.data.event==="keepAlive")this.sendHeartbeat()},this.workerRef.postMessage({event:"start",interval:this.heartbeatIntervalMs})}_terminateWorker(){if(this.workerRef)this.log("worker","terminating worker"),this.workerRef.terminate(),this.workerRef=void 0}_workerObjectUrl(e){let t;if(e)t=e;else{let r=new Blob([wf],{type:"application/javascript"});t=URL.createObjectURL(r)}return t}_initializeOptions(e){var t,r,n,i,s,o,a,l,c;this.worker=(t=e===null||e===void 0?void 0:e.worker)!==null&&t!==void 0?t:!1,this.accessToken=(r=e===null||e===void 0?void 0:e.accessToken)!==null&&r!==void 0?r:null;let u={};u.timeout=(n=e===null||e===void 0?void 0:e.timeout)!==null&&n!==void 0?n:Ql,u.heartbeatIntervalMs=(i=e===null||e===void 0?void 0:e.heartbeatIntervalMs)!==null&&i!==void 0?i:pf.HEARTBEAT_INTERVAL,u.transport=(s=e===null||e===void 0?void 0:e.transport)!==null&&s!==void 0?s:Hs.getWebSocketConstructor(),u.params=e===null||e===void 0?void 0:e.params,u.logger=e===null||e===void 0?void 0:e.logger,u.heartbeatCallback=this._wrapHeartbeatCallback(e===null||e===void 0?void 0:e.heartbeatCallback),u.reconnectAfterMs=(o=e===null||e===void 0?void 0:e.reconnectAfterMs)!==null&&o!==void 0?o:(g)=>bf[g-1]||yf;let d,A,m=(a=e===null||e===void 0?void 0:e.vsn)!==null&&a!==void 0?a:Yl;switch(m){case Wl:d=(g,f)=>f(JSON.stringify(g)),A=(g,f)=>f(JSON.parse(g));break;case Ks:d=this.serializer.encode.bind(this.serializer),A=this.serializer.decode.bind(this.serializer);break;default:throw Error(`Unsupported serializer version: ${u.vsn}`)}if(u.vsn=m,u.encode=(l=e===null||e===void 0?void 0:e.encode)!==null&&l!==void 0?l:d,u.decode=(c=e===null||e===void 0?void 0:e.decode)!==null&&c!==void 0?c:A,u.beforeReconnect=this._reconnectAuth.bind(this),(e===null||e===void 0?void 0:e.logLevel)||(e===null||e===void 0?void 0:e.log_level))this.logLevel=e.logLevel||e.log_level,u.params=Object.assign(Object.assign({},u.params),{log_level:this.logLevel});if(this.worker){if(typeof window<"u"&&!window.Worker)throw Error("Web Worker is not supported");this.workerUrl=e===null||e===void 0?void 0:e.workerUrl,u.autoSendHeartbeat=!this.worker}return u}async _reconnectAuth(){if(await this._waitForAuthIfNeeded(),!this.isConnected())this.connect()}}var Sn=class extends Error{constructor(e,t){super(e);this.name="IcebergError",this.status=t.status,this.icebergType=t.icebergType,this.icebergCode=t.icebergCode,this.details=t.details,this.isCommitStateUnknown=t.icebergType==="CommitStateUnknownException"||[500,502,504].includes(t.status)&&t.icebergType?.includes("CommitState")===!0}isNotFound(){return this.status===404}isConflict(){return this.status===409}isAuthenticationTimeout(){return this.status===419}};function _f(e,t,r){let n=new URL(t,e);if(r){for(let[i,s]of Object.entries(r))if(s!==void 0)n.searchParams.set(i,s)}return n.toString()}async function vf(e){if(!e||e.type==="none")return{};if(e.type==="bearer")return{Authorization:`Bearer ${e.token}`};if(e.type==="header")return{[e.name]:e.value};if(e.type==="custom")return await e.getHeaders();return{}}function Cf(e){let t=e.fetchImpl??globalThis.fetch;return{async request({method:r,path:n,query:i,body:s,headers:o}){let a=_f(e.baseUrl,n,i),l=await vf(e.auth),c=await t(a,{method:r,headers:{...s?{"Content-Type":"application/json"}:{},...l,...o},body:s?JSON.stringify(s):void 0}),u=await c.text(),d=(c.headers.get("content-type")||"").includes("application/json"),A=d&&u?JSON.parse(u):u;if(!c.ok){let m=d?A:void 0,g=m?.error;throw new Sn(g?.message??`Request failed with status ${c.status}`,{status:c.status,icebergType:g?.type,icebergCode:g?.code,details:m})}return{status:c.status,headers:c.headers,data:A}}}}function vi(e){return e.join("\x1F")}var Ef=class{constructor(e,t=""){this.client=e,this.prefix=t}async listNamespaces(e){let t=e?{parent:vi(e.namespace)}:void 0;return(await this.client.request({method:"GET",path:`${this.prefix}/namespaces`,query:t})).data.namespaces.map((n)=>({namespace:n}))}async createNamespace(e,t){let r={namespace:e.namespace,properties:t?.properties};return(await this.client.request({method:"POST",path:`${this.prefix}/namespaces`,body:r})).data}async dropNamespace(e){await this.client.request({method:"DELETE",path:`${this.prefix}/namespaces/${vi(e.namespace)}`})}async loadNamespaceMetadata(e){return{properties:(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${vi(e.namespace)}`})).data.properties}}async namespaceExists(e){try{return await this.client.request({method:"HEAD",path:`${this.prefix}/namespaces/${vi(e.namespace)}`}),!0}catch(t){if(t instanceof Sn&&t.status===404)return!1;throw t}}async createNamespaceIfNotExists(e,t){try{return await this.createNamespace(e,t)}catch(r){if(r instanceof Sn&&r.status===409)return;throw r}}};function Nr(e){return e.join("\x1F")}var Sf=class{constructor(e,t="",r){this.client=e,this.prefix=t,this.accessDelegation=r}async listTables(e){return(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${Nr(e.namespace)}/tables`})).data.identifiers}async createTable(e,t){let r={};if(this.accessDelegation)r["X-Iceberg-Access-Delegation"]=this.accessDelegation;return(await this.client.request({method:"POST",path:`${this.prefix}/namespaces/${Nr(e.namespace)}/tables`,body:t,headers:r})).data.metadata}async updateTable(e,t){let r=await this.client.request({method:"POST",path:`${this.prefix}/namespaces/${Nr(e.namespace)}/tables/${e.name}`,body:t});return{"metadata-location":r.data["metadata-location"],metadata:r.data.metadata}}async dropTable(e,t){await this.client.request({method:"DELETE",path:`${this.prefix}/namespaces/${Nr(e.namespace)}/tables/${e.name}`,query:{purgeRequested:String(t?.purge??!1)}})}async loadTable(e){let t={};if(this.accessDelegation)t["X-Iceberg-Access-Delegation"]=this.accessDelegation;return(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${Nr(e.namespace)}/tables/${e.name}`,headers:t})).data.metadata}async tableExists(e){let t={};if(this.accessDelegation)t["X-Iceberg-Access-Delegation"]=this.accessDelegation;try{return await this.client.request({method:"HEAD",path:`${this.prefix}/namespaces/${Nr(e.namespace)}/tables/${e.name}`,headers:t}),!0}catch(r){if(r instanceof Sn&&r.status===404)return!1;throw r}}async createTableIfNotExists(e,t){try{return await this.createTable(e,t)}catch(r){if(r instanceof Sn&&r.status===409)return await this.loadTable({namespace:e.namespace,name:t.name});throw r}}},ql=class{constructor(e){let t="v1";if(e.catalogName)t+=`/${e.catalogName}`;let r=e.baseUrl.endsWith("/")?e.baseUrl:`${e.baseUrl}/`;this.client=Cf({baseUrl:r,auth:e.auth,fetchImpl:e.fetch}),this.accessDelegation=e.accessDelegation?.join(","),this.namespaceOps=new Ef(this.client,t),this.tableOps=new Sf(this.client,t,this.accessDelegation)}async listNamespaces(e){return this.namespaceOps.listNamespaces(e)}async createNamespace(e,t){return this.namespaceOps.createNamespace(e,t)}async dropNamespace(e){await this.namespaceOps.dropNamespace(e)}async loadNamespaceMetadata(e){return this.namespaceOps.loadNamespaceMetadata(e)}async listTables(e){return this.tableOps.listTables(e)}async createTable(e,t){return this.tableOps.createTable(e,t)}async updateTable(e,t){return this.tableOps.updateTable(e,t)}async dropTable(e,t){await this.tableOps.dropTable(e,t)}async loadTable(e){return this.tableOps.loadTable(e)}async namespaceExists(e){return this.namespaceOps.namespaceExists(e)}async tableExists(e){return this.tableOps.tableExists(e)}async createNamespaceIfNotExists(e,t){return this.namespaceOps.createNamespaceIfNotExists(e,t)}async createTableIfNotExists(e,t){return this.tableOps.createTableIfNotExists(e,t)}};var Ei=class extends Error{constructor(e,t="storage",r,n){super(e);this.__isStorageError=!0,this.namespace=t,this.name=t==="vectors"?"StorageVectorsError":"StorageError",this.status=r,this.statusCode=n}};function Si(e){return typeof e==="object"&&e!==null&&"__isStorageError"in e}var Ci=class extends Ei{constructor(e,t,r,n="storage"){super(e,n,t,r);this.name=n==="vectors"?"StorageVectorsApiError":"StorageApiError",this.status=t,this.statusCode=r}toJSON(){return{name:this.name,message:this.message,status:this.status,statusCode:this.statusCode}}},nc=class extends Ei{constructor(e,t,r="storage"){super(e,r);this.name=r==="vectors"?"StorageVectorsUnknownError":"StorageUnknownError",this.originalError=t}};var If=(e)=>{if(e)return(...t)=>e(...t);return(...t)=>fetch(...t)},xf=(e)=>{if(typeof e!=="object"||e===null)return!1;let t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},Xs=(e)=>{if(Array.isArray(e))return e.map((r)=>Xs(r));else if(typeof e==="function"||e!==Object(e))return e;let t={};return Object.entries(e).forEach(([r,n])=>{let i=r.replace(/([-_][a-z])/gi,(s)=>s.toUpperCase().replace(/[-_]/g,""));t[i]=Xs(n)}),t},kf=(e)=>{if(!e||typeof e!=="string")return!1;if(e.length===0||e.length>100)return!1;if(e.trim()!==e)return!1;if(e.includes("/")||e.includes("\\"))return!1;return/^[\w!.\*'() &$@=;:+,?-]+$/.test(e)};function xn(e){return xn=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},xn(e)}function Rf(e,t){if(xn(e)!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t||"default");if(xn(n)!="object")return n;throw TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Tf(e){var t=Rf(e,"string");return xn(t)=="symbol"?t:t+""}function Bf(e,t,r){return(t=Tf(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function ec(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function K(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?ec(Object(r),!0).forEach(function(n){Bf(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ec(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}var tc=(e)=>{var t;return e.msg||e.message||e.error_description||(typeof e.error==="string"?e.error:(t=e.error)===null||t===void 0?void 0:t.message)||JSON.stringify(e)},Of=async(e,t,r,n)=>{if(e!==null&&typeof e==="object"&&typeof e.json==="function"){let i=e,s=parseInt(i.status,10);if(!Number.isFinite(s))s=500;i.json().then((o)=>{let a=(o===null||o===void 0?void 0:o.statusCode)||(o===null||o===void 0?void 0:o.code)||s+"";t(new Ci(tc(o),s,a,n))}).catch(()=>{let o=s+"";t(new Ci(i.statusText||`HTTP ${s} error`,s,o,n))})}else t(new nc(tc(e),e,n))},Pf=(e,t,r,n)=>{let i={method:e,headers:(t===null||t===void 0?void 0:t.headers)||{}};if(e==="GET"||e==="HEAD"||!n)return K(K({},i),r);if(xf(n)){var s;let o=(t===null||t===void 0?void 0:t.headers)||{},a;for(let[l,c]of Object.entries(o))if(l.toLowerCase()==="content-type")a=c;i.headers=Nf(o,"Content-Type",(s=a)!==null&&s!==void 0?s:"application/json"),i.body=JSON.stringify(n)}else i.body=n;if(t===null||t===void 0?void 0:t.duplex)i.duplex=t.duplex;return K(K({},i),r)};function Nf(e,t,r){let n=K({},e);for(let i of Object.keys(n))if(i.toLowerCase()===t.toLowerCase())delete n[i];return n[t]=r,n}async function In(e,t,r,n,i,s,o){return new Promise((a,l)=>{e(r,Pf(t,n,i,s)).then((c)=>{if(!c.ok)throw c;if(n===null||n===void 0?void 0:n.noResolveJson)return c;if(o==="vectors"){let u=c.headers.get("content-type");if(c.headers.get("content-length")==="0"||c.status===204)return{};if(!u||!u.includes("application/json"))return{}}return c.json()}).then((c)=>a(c)).catch((c)=>Of(c,l,n,o))})}function ic(e="storage"){return{get:async(t,r,n,i)=>In(t,"GET",r,n,i,void 0,e),post:async(t,r,n,i,s)=>In(t,"POST",r,i,s,n,e),put:async(t,r,n,i,s)=>In(t,"PUT",r,i,s,n,e),head:async(t,r,n,i)=>In(t,"HEAD",r,K(K({},n),{},{noResolveJson:!0}),i,void 0,e),remove:async(t,r,n,i,s)=>In(t,"DELETE",r,i,s,n,e)}}var Df=ic("storage"),{get:kn,post:_t,put:Vs,head:Lf,remove:zs}=Df,dt=ic("vectors"),Dr=class{constructor(e,t={},r,n="storage"){this.shouldThrowOnError=!1,this.url=e,this.headers=Object.fromEntries(Object.entries(t).map(([i,s])=>[i.toLowerCase(),s])),this.fetch=If(r),this.namespace=n}throwOnError(){return this.shouldThrowOnError=!0,this}setHeader(e,t){return this.headers=K(K({},this.headers),{},{[e.toLowerCase()]:t}),this}async handleOperation(e){var t=this;try{return{data:await e(),error:null}}catch(r){if(t.shouldThrowOnError)throw r;if(Si(r))return{data:null,error:r};throw r}}},Mf=class{constructor(e,t){this.downloadFn=e,this.shouldThrowOnError=t}then(e,t){return this.execute().then(e,t)}async execute(){var e=this;try{return{data:(await e.downloadFn()).body,error:null}}catch(t){if(e.shouldThrowOnError)throw t;if(Si(t))return{data:null,error:t};throw t}}},sc;sc=Symbol.toStringTag;var Ff=class{constructor(e,t){this.downloadFn=e,this.shouldThrowOnError=t,this[sc]="BlobDownloadBuilder",this.promise=null}asStream(){return new Mf(this.downloadFn,this.shouldThrowOnError)}then(e,t){return this.getPromise().then(e,t)}catch(e){return this.getPromise().catch(e)}finally(e){return this.getPromise().finally(e)}getPromise(){if(!this.promise)this.promise=this.execute();return this.promise}async execute(){var e=this;try{return{data:await(await e.downloadFn()).blob(),error:null}}catch(t){if(e.shouldThrowOnError)throw t;if(Si(t))return{data:null,error:t};throw t}}},Gf={limit:100,offset:0,sortBy:{column:"name",order:"asc"}},rc={cacheControl:"3600",contentType:"text/plain;charset=UTF-8",upsert:!1},Uf=class extends Dr{constructor(e,t={},r,n){super(e,t,n,"storage");this.bucketId=r}async uploadOrUpdate(e,t,r,n){var i=this;return i.handleOperation(async()=>{let s,o=K(K({},rc),n),a=K(K({},i.headers),e==="POST"&&{"x-upsert":String(o.upsert)}),l=o.metadata;if(typeof Blob<"u"&&r instanceof Blob){if(s=new FormData,s.append("cacheControl",o.cacheControl),l)s.append("metadata",i.encodeMetadata(l));s.append("",r)}else if(typeof FormData<"u"&&r instanceof FormData){if(s=r,!s.has("cacheControl"))s.append("cacheControl",o.cacheControl);if(l&&!s.has("metadata"))s.append("metadata",i.encodeMetadata(l))}else{if(s=r,a["cache-control"]=`max-age=${o.cacheControl}`,a["content-type"]=o.contentType,l)a["x-metadata"]=i.toBase64(i.encodeMetadata(l));if((typeof ReadableStream<"u"&&s instanceof ReadableStream||s&&typeof s==="object"&&("pipe"in s)&&typeof s.pipe==="function")&&!o.duplex)o.duplex="half"}if(n===null||n===void 0?void 0:n.headers)a=K(K({},a),n.headers);let c=i._removeEmptyFolders(t),u=i._getFinalPath(c),d=await(e=="PUT"?Vs:_t)(i.fetch,`${i.url}/object/${u}`,s,K({headers:a},(o===null||o===void 0?void 0:o.duplex)?{duplex:o.duplex}:{}));return{path:c,id:d.Id,fullPath:d.Key}})}async upload(e,t,r){return this.uploadOrUpdate("POST",e,t,r)}async uploadToSignedUrl(e,t,r,n){var i=this;let s=i._removeEmptyFolders(e),o=i._getFinalPath(s),a=new URL(i.url+`/object/upload/sign/${o}`);return a.searchParams.set("token",t),i.handleOperation(async()=>{let l,c=K(K({},rc),n),u=K(K({},i.headers),{"x-upsert":String(c.upsert)});if(typeof Blob<"u"&&r instanceof Blob)l=new FormData,l.append("cacheControl",c.cacheControl),l.append("",r);else if(typeof FormData<"u"&&r instanceof FormData)l=r,l.append("cacheControl",c.cacheControl);else l=r,u["cache-control"]=`max-age=${c.cacheControl}`,u["content-type"]=c.contentType;return{path:s,fullPath:(await Vs(i.fetch,a.toString(),l,{headers:u})).Key}})}async createSignedUploadUrl(e,t){var r=this;return r.handleOperation(async()=>{let n=r._getFinalPath(e),i=K({},r.headers);if(t===null||t===void 0?void 0:t.upsert)i["x-upsert"]="true";let s=await _t(r.fetch,`${r.url}/object/upload/sign/${n}`,{},{headers:i}),o=new URL(r.url+s.url),a=o.searchParams.get("token");if(!a)throw new Ei("No token returned by API");return{signedUrl:o.toString(),path:e,token:a}})}async update(e,t,r){return this.uploadOrUpdate("PUT",e,t,r)}async move(e,t,r){var n=this;return n.handleOperation(async()=>await _t(n.fetch,`${n.url}/object/move`,{bucketId:n.bucketId,sourceKey:e,destinationKey:t,destinationBucket:r===null||r===void 0?void 0:r.destinationBucket},{headers:n.headers}))}async copy(e,t,r){var n=this;return n.handleOperation(async()=>({path:(await _t(n.fetch,`${n.url}/object/copy`,{bucketId:n.bucketId,sourceKey:e,destinationKey:t,destinationBucket:r===null||r===void 0?void 0:r.destinationBucket},{headers:n.headers})).Key}))}async createSignedUrl(e,t,r){var n=this;return n.handleOperation(async()=>{let i=n._getFinalPath(e),s=typeof(r===null||r===void 0?void 0:r.transform)==="object"&&r.transform!==null&&Object.keys(r.transform).length>0,o=await _t(n.fetch,`${n.url}/object/sign/${i}`,K({expiresIn:t},s?{transform:r.transform}:{}),{headers:n.headers}),a=new URLSearchParams;if(r===null||r===void 0?void 0:r.download)a.set("download",r.download===!0?"":r.download);if((r===null||r===void 0?void 0:r.cacheNonce)!=null)a.set("cacheNonce",String(r.cacheNonce));let l=a.toString(),c=s&&o.signedURL.includes("/object/sign/")?o.signedURL.replace("/object/sign/","/render/image/sign/"):o.signedURL;return{signedUrl:encodeURI(`${n.url}${c}${l?`&${l}`:""}`)}})}async createSignedUrls(e,t,r){var n=this;return n.handleOperation(async()=>{let i=await _t(n.fetch,`${n.url}/object/sign/${n.bucketId}`,{expiresIn:t,paths:e},{headers:n.headers}),s=new URLSearchParams;if(r===null||r===void 0?void 0:r.download)s.set("download",r.download===!0?"":r.download);if((r===null||r===void 0?void 0:r.cacheNonce)!=null)s.set("cacheNonce",String(r.cacheNonce));let o=s.toString();return i.map((a)=>K(K({},a),{},{signedUrl:a.signedURL?encodeURI(`${n.url}${a.signedURL}${o?`&${o}`:""}`):null}))})}download(e,t,r){let n=typeof(t===null||t===void 0?void 0:t.transform)<"u"?"render/image/authenticated":"object",i=new URLSearchParams;if(t===null||t===void 0?void 0:t.transform)this.applyTransformOptsToQuery(i,t.transform);if((t===null||t===void 0?void 0:t.cacheNonce)!=null)i.set("cacheNonce",String(t.cacheNonce));let s=i.toString(),o=this._getFinalPath(e);return new Ff(()=>kn(this.fetch,`${this.url}/${n}/${o}${s?`?${s}`:""}`,{headers:this.headers,noResolveJson:!0},r),this.shouldThrowOnError)}async info(e){var t=this;let r=t._getFinalPath(e);return t.handleOperation(async()=>Xs(await kn(t.fetch,`${t.url}/object/info/${r}`,{headers:t.headers})))}async exists(e){var t=this;let r=t._getFinalPath(e);try{return await Lf(t.fetch,`${t.url}/object/${r}`,{headers:t.headers}),{data:!0,error:null}}catch(i){if(t.shouldThrowOnError)throw i;if(Si(i)){var n;let s=i instanceof Ci?i.status:i instanceof nc?(n=i.originalError)===null||n===void 0?void 0:n.status:void 0;if(s!==void 0&&[400,404].includes(s))return{data:!1,error:i}}throw i}}getPublicUrl(e,t){let r=this._getFinalPath(e),n=new URLSearchParams;if(t===null||t===void 0?void 0:t.download)n.set("download",t.download===!0?"":t.download);if(t===null||t===void 0?void 0:t.transform)this.applyTransformOptsToQuery(n,t.transform);if((t===null||t===void 0?void 0:t.cacheNonce)!=null)n.set("cacheNonce",String(t.cacheNonce));let i=n.toString(),s=typeof(t===null||t===void 0?void 0:t.transform)<"u"?"render/image":"object";return{data:{publicUrl:encodeURI(`${this.url}/${s}/public/${r}`)+(i?`?${i}`:"")}}}async remove(e){var t=this;return t.handleOperation(async()=>await zs(t.fetch,`${t.url}/object/${t.bucketId}`,{prefixes:e},{headers:t.headers}))}async list(e,t,r){var n=this;return n.handleOperation(async()=>{let i=K(K(K({},Gf),t),{},{prefix:e||""});return await _t(n.fetch,`${n.url}/object/list/${n.bucketId}`,i,{headers:n.headers},r)})}async listV2(e,t){var r=this;return r.handleOperation(async()=>{let n=K({},e);return await _t(r.fetch,`${r.url}/object/list-v2/${r.bucketId}`,n,{headers:r.headers},t)})}encodeMetadata(e){return JSON.stringify(e)}toBase64(e){if(typeof Buffer<"u")return Buffer.from(e).toString("base64");return btoa(e)}_getFinalPath(e){return`${this.bucketId}/${e.replace(/^\/+/,"")}`}_removeEmptyFolders(e){return e.replace(/^\/|\/$/g,"").replace(/\/+/g,"/")}applyTransformOptsToQuery(e,t){if(t.width)e.set("width",t.width.toString());if(t.height)e.set("height",t.height.toString());if(t.resize)e.set("resize",t.resize);if(t.format)e.set("format",t.format);if(t.quality)e.set("quality",t.quality.toString());return e}},jf="2.103.0",Rn={"X-Client-Info":`storage-js/${jf}`},Hf=class extends Dr{constructor(e,t={},r,n){let i=new URL(e);if(n===null||n===void 0?void 0:n.useNewHostname){if(/supabase\.(co|in|red)$/.test(i.hostname)&&!i.hostname.includes("storage.supabase."))i.hostname=i.hostname.replace("supabase.","storage.supabase.")}let s=i.href.replace(/\/$/,""),o=K(K({},Rn),t);super(s,o,r,"storage")}async listBuckets(e){var t=this;return t.handleOperation(async()=>{let r=t.listBucketOptionsToQueryString(e);return await kn(t.fetch,`${t.url}/bucket${r}`,{headers:t.headers})})}async getBucket(e){var t=this;return t.handleOperation(async()=>await kn(t.fetch,`${t.url}/bucket/${e}`,{headers:t.headers}))}async createBucket(e,t={public:!1}){var r=this;return r.handleOperation(async()=>await _t(r.fetch,`${r.url}/bucket`,{id:e,name:e,type:t.type,public:t.public,file_size_limit:t.fileSizeLimit,allowed_mime_types:t.allowedMimeTypes},{headers:r.headers}))}async updateBucket(e,t){var r=this;return r.handleOperation(async()=>await Vs(r.fetch,`${r.url}/bucket/${e}`,{id:e,name:e,public:t.public,file_size_limit:t.fileSizeLimit,allowed_mime_types:t.allowedMimeTypes},{headers:r.headers}))}async emptyBucket(e){var t=this;return t.handleOperation(async()=>await _t(t.fetch,`${t.url}/bucket/${e}/empty`,{},{headers:t.headers}))}async deleteBucket(e){var t=this;return t.handleOperation(async()=>await zs(t.fetch,`${t.url}/bucket/${e}`,{},{headers:t.headers}))}listBucketOptionsToQueryString(e){let t={};if(e){if("limit"in e)t.limit=String(e.limit);if("offset"in e)t.offset=String(e.offset);if(e.search)t.search=e.search;if(e.sortColumn)t.sortColumn=e.sortColumn;if(e.sortOrder)t.sortOrder=e.sortOrder}return Object.keys(t).length>0?"?"+new URLSearchParams(t).toString():""}},Kf=class extends Dr{constructor(e,t={},r){let n=e.replace(/\/$/,""),i=K(K({},Rn),t);super(n,i,r,"storage")}async createBucket(e){var t=this;return t.handleOperation(async()=>await _t(t.fetch,`${t.url}/bucket`,{name:e},{headers:t.headers}))}async listBuckets(e){var t=this;return t.handleOperation(async()=>{let r=new URLSearchParams;if((e===null||e===void 0?void 0:e.limit)!==void 0)r.set("limit",e.limit.toString());if((e===null||e===void 0?void 0:e.offset)!==void 0)r.set("offset",e.offset.toString());if(e===null||e===void 0?void 0:e.sortColumn)r.set("sortColumn",e.sortColumn);if(e===null||e===void 0?void 0:e.sortOrder)r.set("sortOrder",e.sortOrder);if(e===null||e===void 0?void 0:e.search)r.set("search",e.search);let n=r.toString(),i=n?`${t.url}/bucket?${n}`:`${t.url}/bucket`;return await kn(t.fetch,i,{headers:t.headers})})}async deleteBucket(e){var t=this;return t.handleOperation(async()=>await zs(t.fetch,`${t.url}/bucket/${e}`,{},{headers:t.headers}))}from(e){var t=this;if(!kf(e))throw new Ei("Invalid bucket name: File, folder, and bucket names must follow AWS object key naming guidelines and should avoid the use of any other characters.");let r=new ql({baseUrl:this.url,catalogName:e,auth:{type:"custom",getHeaders:async()=>t.headers},fetch:this.fetch}),n=this.shouldThrowOnError;return new Proxy(r,{get(i,s){let o=i[s];if(typeof o!=="function")return o;return async(...a)=>{try{return{data:await o.apply(i,a),error:null}}catch(l){if(n)throw l;return{data:null,error:l}}}}})}},Wf=class extends Dr{constructor(e,t={},r){let n=e.replace(/\/$/,""),i=K(K({},Rn),{},{"Content-Type":"application/json"},t);super(n,i,r,"vectors")}async createIndex(e){var t=this;return t.handleOperation(async()=>await dt.post(t.fetch,`${t.url}/CreateIndex`,e,{headers:t.headers})||{})}async getIndex(e,t){var r=this;return r.handleOperation(async()=>await dt.post(r.fetch,`${r.url}/GetIndex`,{vectorBucketName:e,indexName:t},{headers:r.headers}))}async listIndexes(e){var t=this;return t.handleOperation(async()=>await dt.post(t.fetch,`${t.url}/ListIndexes`,e,{headers:t.headers}))}async deleteIndex(e,t){var r=this;return r.handleOperation(async()=>await dt.post(r.fetch,`${r.url}/DeleteIndex`,{vectorBucketName:e,indexName:t},{headers:r.headers})||{})}},Yf=class extends Dr{constructor(e,t={},r){let n=e.replace(/\/$/,""),i=K(K({},Rn),{},{"Content-Type":"application/json"},t);super(n,i,r,"vectors")}async putVectors(e){var t=this;if(e.vectors.length<1||e.vectors.length>500)throw Error("Vector batch size must be between 1 and 500 items");return t.handleOperation(async()=>await dt.post(t.fetch,`${t.url}/PutVectors`,e,{headers:t.headers})||{})}async getVectors(e){var t=this;return t.handleOperation(async()=>await dt.post(t.fetch,`${t.url}/GetVectors`,e,{headers:t.headers}))}async listVectors(e){var t=this;if(e.segmentCount!==void 0){if(e.segmentCount<1||e.segmentCount>16)throw Error("segmentCount must be between 1 and 16");if(e.segmentIndex!==void 0){if(e.segmentIndex<0||e.segmentIndex>=e.segmentCount)throw Error(`segmentIndex must be between 0 and ${e.segmentCount-1}`)}}return t.handleOperation(async()=>await dt.post(t.fetch,`${t.url}/ListVectors`,e,{headers:t.headers}))}async queryVectors(e){var t=this;return t.handleOperation(async()=>await dt.post(t.fetch,`${t.url}/QueryVectors`,e,{headers:t.headers}))}async deleteVectors(e){var t=this;if(e.keys.length<1||e.keys.length>500)throw Error("Keys batch size must be between 1 and 500 items");return t.handleOperation(async()=>await dt.post(t.fetch,`${t.url}/DeleteVectors`,e,{headers:t.headers})||{})}},Qf=class extends Dr{constructor(e,t={},r){let n=e.replace(/\/$/,""),i=K(K({},Rn),{},{"Content-Type":"application/json"},t);super(n,i,r,"vectors")}async createBucket(e){var t=this;return t.handleOperation(async()=>await dt.post(t.fetch,`${t.url}/CreateVectorBucket`,{vectorBucketName:e},{headers:t.headers})||{})}async getBucket(e){var t=this;return t.handleOperation(async()=>await dt.post(t.fetch,`${t.url}/GetVectorBucket`,{vectorBucketName:e},{headers:t.headers}))}async listBuckets(e={}){var t=this;return t.handleOperation(async()=>await dt.post(t.fetch,`${t.url}/ListVectorBuckets`,e,{headers:t.headers}))}async deleteBucket(e){var t=this;return t.handleOperation(async()=>await dt.post(t.fetch,`${t.url}/DeleteVectorBucket`,{vectorBucketName:e},{headers:t.headers})||{})}},Jf=class extends Qf{constructor(e,t={}){super(e,t.headers||{},t.fetch)}from(e){return new $f(this.url,this.headers,e,this.fetch)}async createBucket(e){var t=()=>super.createBucket,r=this;return t().call(r,e)}async getBucket(e){var t=()=>super.getBucket,r=this;return t().call(r,e)}async listBuckets(e={}){var t=()=>super.listBuckets,r=this;return t().call(r,e)}async deleteBucket(e){var t=()=>super.deleteBucket,r=this;return t().call(r,e)}},$f=class extends Wf{constructor(e,t,r,n){super(e,t,n);this.vectorBucketName=r}async createIndex(e){var t=()=>super.createIndex,r=this;return t().call(r,K(K({},e),{},{vectorBucketName:r.vectorBucketName}))}async listIndexes(e={}){var t=()=>super.listIndexes,r=this;return t().call(r,K(K({},e),{},{vectorBucketName:r.vectorBucketName}))}async getIndex(e){var t=()=>super.getIndex,r=this;return t().call(r,r.vectorBucketName,e)}async deleteIndex(e){var t=()=>super.deleteIndex,r=this;return t().call(r,r.vectorBucketName,e)}index(e){return new Zf(this.url,this.headers,this.vectorBucketName,e,this.fetch)}},Zf=class extends Yf{constructor(e,t,r,n,i){super(e,t,i);this.vectorBucketName=r,this.indexName=n}async putVectors(e){var t=()=>super.putVectors,r=this;return t().call(r,K(K({},e),{},{vectorBucketName:r.vectorBucketName,indexName:r.indexName}))}async getVectors(e){var t=()=>super.getVectors,r=this;return t().call(r,K(K({},e),{},{vectorBucketName:r.vectorBucketName,indexName:r.indexName}))}async listVectors(e={}){var t=()=>super.listVectors,r=this;return t().call(r,K(K({},e),{},{vectorBucketName:r.vectorBucketName,indexName:r.indexName}))}async queryVectors(e){var t=()=>super.queryVectors,r=this;return t().call(r,K(K({},e),{},{vectorBucketName:r.vectorBucketName,indexName:r.indexName}))}async deleteVectors(e){var t=()=>super.deleteVectors,r=this;return t().call(r,K(K({},e),{},{vectorBucketName:r.vectorBucketName,indexName:r.indexName}))}},oc=class extends Hf{constructor(e,t={},r,n){super(e,t,r,n)}from(e){return new Uf(this.url,this.headers,e,this.fetch)}get vectors(){return new Jf(this.url+"/vector",{headers:this.headers,fetch:this.fetch})}get analytics(){return new Kf(this.url+"/iceberg",this.headers,this.fetch)}};var Ii="2.103.0";var or=30000,xi=3,ki=xi*or,ac="http://localhost:9999",lc="supabase.auth.token";var cc={"X-Client-Info":`gotrue-js/${Ii}`};var Tn="X-Supabase-Api-Version",qs={"2024-01-01":{timestamp:Date.parse("2024-01-01T00:00:00.0Z"),name:"2024-01-01"}},uc=/^([a-z0-9_-]{4})*($|[a-z0-9_-]{3}$|[a-z0-9_-]{2}$)$/i,dc=600000;class ar extends Error{constructor(e,t,r){super(e);this.__isAuthError=!0,this.name="AuthError",this.status=t,this.code=r}}function F(e){return typeof e==="object"&&e!==null&&"__isAuthError"in e}class eo extends ar{constructor(e,t,r){super(e,t,r);this.name="AuthApiError",this.status=t,this.code=r}}function hc(e){return F(e)&&e.name==="AuthApiError"}class vt extends ar{constructor(e,t){super(e);this.name="AuthUnknownError",this.originalError=t}}class Bt extends ar{constructor(e,t,r,n){super(e,r,n);this.name=t,this.status=r}}class Ze extends Bt{constructor(){super("Auth session missing!","AuthSessionMissingError",400,void 0)}}function Bn(e){return F(e)&&e.name==="AuthSessionMissingError"}class Qt extends Bt{constructor(){super("Auth session or user missing","AuthInvalidTokenResponseError",500,void 0)}}class Lr extends Bt{constructor(e){super(e,"AuthInvalidCredentialsError",400,void 0)}}class Mr extends Bt{constructor(e,t=null){super(e,"AuthImplicitGrantRedirectError",500,void 0);this.details=null,this.details=t}toJSON(){return{name:this.name,message:this.message,status:this.status,details:this.details}}}function Ac(e){return F(e)&&e.name==="AuthImplicitGrantRedirectError"}class Ri extends Bt{constructor(e,t=null){super(e,"AuthPKCEGrantCodeExchangeError",500,void 0);this.details=null,this.details=t}toJSON(){return{name:this.name,message:this.message,status:this.status,details:this.details}}}class to extends Bt{constructor(){super("PKCE code verifier not found in storage. This can happen if the auth flow was initiated in a different browser or device, or if the storage was cleared. For SSR frameworks (Next.js, SvelteKit, etc.), use @supabase/ssr on both the server and client to store the code verifier in cookies.","AuthPKCECodeVerifierMissingError",400,"pkce_code_verifier_not_found")}}class On extends Bt{constructor(e,t){super(e,"AuthRetryableFetchError",t,void 0)}}function Ti(e){return F(e)&&e.name==="AuthRetryableFetchError"}class Bi extends Bt{constructor(e,t,r){super(e,"AuthWeakPasswordError",t,"weak_password");this.reasons=r}}class Fr extends Bt{constructor(e){super(e,"AuthInvalidJwtError",400,"invalid_jwt")}}var Oi="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".split(""),fc=`
38
- \r=`.split(""),Xf=(()=>{let e=Array(128);for(let t=0;t<e.length;t+=1)e[t]=-1;for(let t=0;t<fc.length;t+=1)e[fc[t].charCodeAt(0)]=-2;for(let t=0;t<Oi.length;t+=1)e[Oi[t].charCodeAt(0)]=t;return e})();function gc(e,t,r){if(e!==null){t.queue=t.queue<<8|e,t.queuedBits+=8;while(t.queuedBits>=6){let n=t.queue>>t.queuedBits-6&63;r(Oi[n]),t.queuedBits-=6}}else if(t.queuedBits>0){t.queue=t.queue<<6-t.queuedBits,t.queuedBits=6;while(t.queuedBits>=6){let n=t.queue>>t.queuedBits-6&63;r(Oi[n]),t.queuedBits-=6}}}function mc(e,t,r){let n=Xf[e];if(n>-1){t.queue=t.queue<<6|n,t.queuedBits+=6;while(t.queuedBits>=8)r(t.queue>>t.queuedBits-8&255),t.queuedBits-=8}else if(n===-2)return;else throw Error(`Invalid Base64-URL character "${String.fromCharCode(e)}"`)}function ro(e){let t=[],r=(o)=>{t.push(String.fromCodePoint(o))},n={utf8seq:0,codepoint:0},i={queue:0,queuedBits:0},s=(o)=>{qf(o,n,r)};for(let o=0;o<e.length;o+=1)mc(e.charCodeAt(o),i,s);return t.join("")}function Vf(e,t){if(e<=127){t(e);return}else if(e<=2047){t(192|e>>6),t(128|e&63);return}else if(e<=65535){t(224|e>>12),t(128|e>>6&63),t(128|e&63);return}else if(e<=1114111){t(240|e>>18),t(128|e>>12&63),t(128|e>>6&63),t(128|e&63);return}throw Error(`Unrecognized Unicode codepoint: ${e.toString(16)}`)}function zf(e,t){for(let r=0;r<e.length;r+=1){let n=e.charCodeAt(r);if(n>55295&&n<=56319){let i=(n-55296)*1024&65535;n=(e.charCodeAt(r+1)-56320&65535|i)+65536,r+=1}Vf(n,t)}}function qf(e,t,r){if(t.utf8seq===0){if(e<=127){r(e);return}for(let n=1;n<6;n+=1)if((e>>7-n&1)===0){t.utf8seq=n;break}if(t.utf8seq===2)t.codepoint=e&31;else if(t.utf8seq===3)t.codepoint=e&15;else if(t.utf8seq===4)t.codepoint=e&7;else throw Error("Invalid UTF-8 sequence");t.utf8seq-=1}else if(t.utf8seq>0){if(e<=127)throw Error("Invalid UTF-8 sequence");if(t.codepoint=t.codepoint<<6|e&63,t.utf8seq-=1,t.utf8seq===0)r(t.codepoint)}}function Jt(e){let t=[],r={queue:0,queuedBits:0},n=(i)=>{t.push(i)};for(let i=0;i<e.length;i+=1)mc(e.charCodeAt(i),r,n);return new Uint8Array(t)}function pc(e){let t=[];return zf(e,(r)=>t.push(r)),new Uint8Array(t)}function Ut(e){let t=[],r={queue:0,queuedBits:0},n=(i)=>{t.push(i)};return e.forEach((i)=>gc(i,r,n)),gc(null,r,n),t.join("")}function bc(e){return Math.round(Date.now()/1000)+e}function yc(){return Symbol("auth-callback")}var Ue=()=>typeof window<"u"&&typeof document<"u",lr={tested:!1,writable:!1},Pi=()=>{if(!Ue())return!1;try{if(typeof globalThis.localStorage!=="object")return!1}catch(t){return!1}if(lr.tested)return lr.writable;let e=`lswt-${Math.random()}${Math.random()}`;try{globalThis.localStorage.setItem(e,e),globalThis.localStorage.removeItem(e),lr.tested=!0,lr.writable=!0}catch(t){lr.tested=!0,lr.writable=!1}return lr.writable};function wc(e){let t={},r=new URL(e);if(r.hash&&r.hash[0]==="#")try{new URLSearchParams(r.hash.substring(1)).forEach((i,s)=>{t[s]=i})}catch(n){}return r.searchParams.forEach((n,i)=>{t[i]=n}),t}var Ni=(e)=>{if(e)return(...t)=>e(...t);return(...t)=>fetch(...t)},_c=(e)=>typeof e==="object"&&e!==null&&("status"in e)&&("ok"in e)&&("json"in e)&&typeof e.json==="function",cr=async(e,t,r)=>{await e.setItem(t,JSON.stringify(r))},$t=async(e,t)=>{let r=await e.getItem(t);if(!r)return null;try{return JSON.parse(r)}catch(n){return r}},Ke=async(e,t)=>{await e.removeItem(t)};class Pn{constructor(){this.promise=new Pn.promiseConstructor((e,t)=>{this.resolve=e,this.reject=t})}}Pn.promiseConstructor=Promise;function Nn(e){let t=e.split(".");if(t.length!==3)throw new Fr("Invalid JWT structure");for(let n=0;n<t.length;n++)if(!uc.test(t[n]))throw new Fr("JWT not in base64url format");return{header:JSON.parse(ro(t[0])),payload:JSON.parse(ro(t[1])),signature:Jt(t[2]),raw:{header:t[0],payload:t[1]}}}async function vc(e){return await new Promise((t)=>{setTimeout(()=>t(null),e)})}function Cc(e,t){return new Promise((n,i)=>{(async()=>{for(let s=0;s<1/0;s++)try{let o=await e(s);if(!t(s,null,o)){n(o);return}}catch(o){if(!t(s,o)){i(o);return}}})()})}function eg(e){return("0"+e.toString(16)).substr(-2)}function tg(){let t=new Uint32Array(56);if(typeof crypto>"u"){let i="";for(let s=0;s<56;s++)i+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~".charAt(Math.floor(Math.random()*66));return i}return crypto.getRandomValues(t),Array.from(t,eg).join("")}async function rg(e){let r=new TextEncoder().encode(e),n=await crypto.subtle.digest("SHA-256",r),i=new Uint8Array(n);return Array.from(i).map((s)=>String.fromCharCode(s)).join("")}async function ng(e){if(!(typeof crypto<"u"&&typeof crypto.subtle<"u"&&typeof TextEncoder<"u"))return console.warn("WebCrypto API is not supported. Code challenge method will default to use plain instead of sha256."),e;let r=await rg(e);return btoa(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function ur(e,t,r=!1){let n=tg(),i=n;if(r)i+="/PASSWORD_RECOVERY";await cr(e,`${t}-code-verifier`,i);let s=await ng(n);return[s,n===s?"plain":"s256"]}var ig=/^2[0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$/i;function Ec(e){let t=e.headers.get(Tn);if(!t)return null;if(!t.match(ig))return null;try{return new Date(`${t}T00:00:00.0Z`)}catch(r){return null}}function Sc(e){if(!e)throw Error("Missing exp claim");let t=Math.floor(Date.now()/1000);if(e<=t)throw Error("JWT has expired")}function Ic(e){switch(e){case"RS256":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}};case"ES256":return{name:"ECDSA",namedCurve:"P-256",hash:{name:"SHA-256"}};default:throw Error("Invalid alg claim")}}var sg=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;function dr(e){if(!sg.test(e))throw Error("@supabase/auth-js: Expected parameter to be UUID but is not")}function Di(){return new Proxy({},{get:(t,r)=>{if(r==="__isUserNotAvailableProxy")return!0;if(typeof r==="symbol"){let n=r.toString();if(n==="Symbol(Symbol.toPrimitive)"||n==="Symbol(Symbol.toStringTag)"||n==="Symbol(util.inspect.custom)")return}throw Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Accessing the "${r}" property of the session object is not supported. Please use getUser() instead.`)},set:(t,r)=>{throw Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Setting the "${r}" property of the session object is not supported. Please use getUser() to fetch a user object you can manipulate.`)},deleteProperty:(t,r)=>{throw Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Deleting the "${r}" property of the session object is not supported. Please use getUser() to fetch a user object you can manipulate.`)}})}function xc(e,t){return new Proxy(e,{get:(r,n,i)=>{if(n==="__isInsecureUserWarningProxy")return!0;if(typeof n==="symbol"){let s=n.toString();if(s==="Symbol(Symbol.toPrimitive)"||s==="Symbol(Symbol.toStringTag)"||s==="Symbol(util.inspect.custom)"||s==="Symbol(nodejs.util.inspect.custom)")return Reflect.get(r,n,i)}if(!t.value&&typeof n==="string")console.warn("Using the user object as returned from supabase.auth.getSession() or from some supabase.auth.onAuthStateChange() events could be insecure! This value comes directly from the storage medium (usually cookies on the server) and may not be authentic. Use supabase.auth.getUser() instead which authenticates the data by contacting the Supabase Auth server."),t.value=!0;return Reflect.get(r,n,i)}})}function no(e){return JSON.parse(JSON.stringify(e))}var hr=(e)=>e.msg||e.message||e.error_description||e.error||JSON.stringify(e),og=[502,503,504];async function kc(e){var t;if(!_c(e))throw new On(hr(e),0);if(og.includes(e.status))throw new On(hr(e),e.status);let r;try{r=await e.json()}catch(s){throw new vt(hr(s),s)}let n=void 0,i=Ec(e);if(i&&i.getTime()>=qs["2024-01-01"].timestamp&&typeof r==="object"&&r&&typeof r.code==="string")n=r.code;else if(typeof r==="object"&&r&&typeof r.error_code==="string")n=r.error_code;if(!n){if(typeof r==="object"&&r&&typeof r.weak_password==="object"&&r.weak_password&&Array.isArray(r.weak_password.reasons)&&r.weak_password.reasons.length&&r.weak_password.reasons.reduce((s,o)=>s&&typeof o==="string",!0))throw new Bi(hr(r),e.status,r.weak_password.reasons)}else if(n==="weak_password")throw new Bi(hr(r),e.status,((t=r.weak_password)===null||t===void 0?void 0:t.reasons)||[]);else if(n==="session_not_found")throw new Ze;throw new eo(hr(r),e.status||500,n)}var ag=(e,t,r,n)=>{let i={method:e,headers:(t===null||t===void 0?void 0:t.headers)||{}};if(e==="GET")return i;return i.headers=Object.assign({"Content-Type":"application/json;charset=UTF-8"},t===null||t===void 0?void 0:t.headers),i.body=JSON.stringify(n),Object.assign(Object.assign({},i),r)};async function U(e,t,r,n){var i;let s=Object.assign({},n===null||n===void 0?void 0:n.headers);if(!s[Tn])s[Tn]=qs["2024-01-01"].name;if(n===null||n===void 0?void 0:n.jwt)s.Authorization=`Bearer ${n.jwt}`;let o=(i=n===null||n===void 0?void 0:n.query)!==null&&i!==void 0?i:{};if(n===null||n===void 0?void 0:n.redirectTo)o.redirect_to=n.redirectTo;let a=Object.keys(o).length?"?"+new URLSearchParams(o).toString():"",l=await lg(e,t,r+a,{headers:s,noResolveJson:n===null||n===void 0?void 0:n.noResolveJson},{},n===null||n===void 0?void 0:n.body);return(n===null||n===void 0?void 0:n.xform)?n===null||n===void 0?void 0:n.xform(l):{data:Object.assign({},l),error:null}}async function lg(e,t,r,n,i,s){let o=ag(t,n,i,s),a;try{a=await e(r,Object.assign({},o))}catch(l){throw console.error(l),new On(hr(l),0)}if(!a.ok)await kc(a);if(n===null||n===void 0?void 0:n.noResolveJson)return a;try{return await a.json()}catch(l){await kc(l)}}function bt(e){var t;let r=null;if(cg(e)){if(r=Object.assign({},e),!e.expires_at)r.expires_at=bc(e.expires_in)}let n=(t=e.user)!==null&&t!==void 0?t:e;return{data:{session:r,user:n},error:null}}function io(e){let t=bt(e);if(!t.error&&e.weak_password&&typeof e.weak_password==="object"&&Array.isArray(e.weak_password.reasons)&&e.weak_password.reasons.length&&e.weak_password.message&&typeof e.weak_password.message==="string"&&e.weak_password.reasons.reduce((r,n)=>r&&typeof n==="string",!0))t.data.weak_password=e.weak_password;return t}function Ot(e){var t;return{data:{user:(t=e.user)!==null&&t!==void 0?t:e},error:null}}function Rc(e){return{data:e,error:null}}function Tc(e){let{action_link:t,email_otp:r,hashed_token:n,redirect_to:i,verification_type:s}=e,o=nr(e,["action_link","email_otp","hashed_token","redirect_to","verification_type"]),a={action_link:t,email_otp:r,hashed_token:n,redirect_to:i,verification_type:s},l=Object.assign({},o);return{data:{properties:a,user:l},error:null}}function so(e){return e}function cg(e){return e.access_token&&e.refresh_token&&e.expires_in}var Li=["global","local","others"];class Gr{constructor({url:e="",headers:t={},fetch:r}){this.url=e,this.headers=t,this.fetch=Ni(r),this.mfa={listFactors:this._listFactors.bind(this),deleteFactor:this._deleteFactor.bind(this)},this.oauth={listClients:this._listOAuthClients.bind(this),createClient:this._createOAuthClient.bind(this),getClient:this._getOAuthClient.bind(this),updateClient:this._updateOAuthClient.bind(this),deleteClient:this._deleteOAuthClient.bind(this),regenerateClientSecret:this._regenerateOAuthClientSecret.bind(this)},this.customProviders={listProviders:this._listCustomProviders.bind(this),createProvider:this._createCustomProvider.bind(this),getProvider:this._getCustomProvider.bind(this),updateProvider:this._updateCustomProvider.bind(this),deleteProvider:this._deleteCustomProvider.bind(this)}}async signOut(e,t=Li[0]){if(Li.indexOf(t)<0)throw Error(`@supabase/auth-js: Parameter scope must be one of ${Li.join(", ")}`);try{return await U(this.fetch,"POST",`${this.url}/logout?scope=${t}`,{headers:this.headers,jwt:e,noResolveJson:!0}),{data:null,error:null}}catch(r){if(F(r))return{data:null,error:r};throw r}}async inviteUserByEmail(e,t={}){try{return await U(this.fetch,"POST",`${this.url}/invite`,{body:{email:e,data:t.data},headers:this.headers,redirectTo:t.redirectTo,xform:Ot})}catch(r){if(F(r))return{data:{user:null},error:r};throw r}}async generateLink(e){try{let{options:t}=e,r=nr(e,["options"]),n=Object.assign(Object.assign({},r),t);if("newEmail"in r)n.new_email=r===null||r===void 0?void 0:r.newEmail,delete n.newEmail;return await U(this.fetch,"POST",`${this.url}/admin/generate_link`,{body:n,headers:this.headers,xform:Tc,redirectTo:t===null||t===void 0?void 0:t.redirectTo})}catch(t){if(F(t))return{data:{properties:null,user:null},error:t};throw t}}async createUser(e){try{return await U(this.fetch,"POST",`${this.url}/admin/users`,{body:e,headers:this.headers,xform:Ot})}catch(t){if(F(t))return{data:{user:null},error:t};throw t}}async listUsers(e){var t,r,n,i,s,o,a;try{let l={nextPage:null,lastPage:0,total:0},c=await U(this.fetch,"GET",`${this.url}/admin/users`,{headers:this.headers,noResolveJson:!0,query:{page:(r=(t=e===null||e===void 0?void 0:e.page)===null||t===void 0?void 0:t.toString())!==null&&r!==void 0?r:"",per_page:(i=(n=e===null||e===void 0?void 0:e.perPage)===null||n===void 0?void 0:n.toString())!==null&&i!==void 0?i:""},xform:so});if(c.error)throw c.error;let u=await c.json(),d=(s=c.headers.get("x-total-count"))!==null&&s!==void 0?s:0,A=(a=(o=c.headers.get("link"))===null||o===void 0?void 0:o.split(","))!==null&&a!==void 0?a:[];if(A.length>0)A.forEach((m)=>{let g=parseInt(m.split(";")[0].split("=")[1].substring(0,1)),f=JSON.parse(m.split(";")[1].split("=")[1]);l[`${f}Page`]=g}),l.total=parseInt(d);return{data:Object.assign(Object.assign({},u),l),error:null}}catch(l){if(F(l))return{data:{users:[]},error:l};throw l}}async getUserById(e){dr(e);try{return await U(this.fetch,"GET",`${this.url}/admin/users/${e}`,{headers:this.headers,xform:Ot})}catch(t){if(F(t))return{data:{user:null},error:t};throw t}}async updateUserById(e,t){dr(e);try{return await U(this.fetch,"PUT",`${this.url}/admin/users/${e}`,{body:t,headers:this.headers,xform:Ot})}catch(r){if(F(r))return{data:{user:null},error:r};throw r}}async deleteUser(e,t=!1){dr(e);try{return await U(this.fetch,"DELETE",`${this.url}/admin/users/${e}`,{headers:this.headers,body:{should_soft_delete:t},xform:Ot})}catch(r){if(F(r))return{data:{user:null},error:r};throw r}}async _listFactors(e){dr(e.userId);try{let{data:t,error:r}=await U(this.fetch,"GET",`${this.url}/admin/users/${e.userId}/factors`,{headers:this.headers,xform:(n)=>({data:{factors:n},error:null})});return{data:t,error:r}}catch(t){if(F(t))return{data:null,error:t};throw t}}async _deleteFactor(e){dr(e.userId),dr(e.id);try{return{data:await U(this.fetch,"DELETE",`${this.url}/admin/users/${e.userId}/factors/${e.id}`,{headers:this.headers}),error:null}}catch(t){if(F(t))return{data:null,error:t};throw t}}async _listOAuthClients(e){var t,r,n,i,s,o,a;try{let l={nextPage:null,lastPage:0,total:0},c=await U(this.fetch,"GET",`${this.url}/admin/oauth/clients`,{headers:this.headers,noResolveJson:!0,query:{page:(r=(t=e===null||e===void 0?void 0:e.page)===null||t===void 0?void 0:t.toString())!==null&&r!==void 0?r:"",per_page:(i=(n=e===null||e===void 0?void 0:e.perPage)===null||n===void 0?void 0:n.toString())!==null&&i!==void 0?i:""},xform:so});if(c.error)throw c.error;let u=await c.json(),d=(s=c.headers.get("x-total-count"))!==null&&s!==void 0?s:0,A=(a=(o=c.headers.get("link"))===null||o===void 0?void 0:o.split(","))!==null&&a!==void 0?a:[];if(A.length>0)A.forEach((m)=>{let g=parseInt(m.split(";")[0].split("=")[1].substring(0,1)),f=JSON.parse(m.split(";")[1].split("=")[1]);l[`${f}Page`]=g}),l.total=parseInt(d);return{data:Object.assign(Object.assign({},u),l),error:null}}catch(l){if(F(l))return{data:{clients:[]},error:l};throw l}}async _createOAuthClient(e){try{return await U(this.fetch,"POST",`${this.url}/admin/oauth/clients`,{body:e,headers:this.headers,xform:(t)=>({data:t,error:null})})}catch(t){if(F(t))return{data:null,error:t};throw t}}async _getOAuthClient(e){try{return await U(this.fetch,"GET",`${this.url}/admin/oauth/clients/${e}`,{headers:this.headers,xform:(t)=>({data:t,error:null})})}catch(t){if(F(t))return{data:null,error:t};throw t}}async _updateOAuthClient(e,t){try{return await U(this.fetch,"PUT",`${this.url}/admin/oauth/clients/${e}`,{body:t,headers:this.headers,xform:(r)=>({data:r,error:null})})}catch(r){if(F(r))return{data:null,error:r};throw r}}async _deleteOAuthClient(e){try{return await U(this.fetch,"DELETE",`${this.url}/admin/oauth/clients/${e}`,{headers:this.headers,noResolveJson:!0}),{data:null,error:null}}catch(t){if(F(t))return{data:null,error:t};throw t}}async _regenerateOAuthClientSecret(e){try{return await U(this.fetch,"POST",`${this.url}/admin/oauth/clients/${e}/regenerate_secret`,{headers:this.headers,xform:(t)=>({data:t,error:null})})}catch(t){if(F(t))return{data:null,error:t};throw t}}async _listCustomProviders(e){try{let t={};if(e===null||e===void 0?void 0:e.type)t.type=e.type;return await U(this.fetch,"GET",`${this.url}/admin/custom-providers`,{headers:this.headers,query:t,xform:(r)=>{var n;return{data:{providers:(n=r===null||r===void 0?void 0:r.providers)!==null&&n!==void 0?n:[]},error:null}}})}catch(t){if(F(t))return{data:{providers:[]},error:t};throw t}}async _createCustomProvider(e){try{return await U(this.fetch,"POST",`${this.url}/admin/custom-providers`,{body:e,headers:this.headers,xform:(t)=>({data:t,error:null})})}catch(t){if(F(t))return{data:null,error:t};throw t}}async _getCustomProvider(e){try{return await U(this.fetch,"GET",`${this.url}/admin/custom-providers/${e}`,{headers:this.headers,xform:(t)=>({data:t,error:null})})}catch(t){if(F(t))return{data:null,error:t};throw t}}async _updateCustomProvider(e,t){try{return await U(this.fetch,"PUT",`${this.url}/admin/custom-providers/${e}`,{body:t,headers:this.headers,xform:(r)=>({data:r,error:null})})}catch(r){if(F(r))return{data:null,error:r};throw r}}async _deleteCustomProvider(e){try{return await U(this.fetch,"DELETE",`${this.url}/admin/custom-providers/${e}`,{headers:this.headers,noResolveJson:!0}),{data:null,error:null}}catch(t){if(F(t))return{data:null,error:t};throw t}}}function oo(e={}){return{getItem:(t)=>e[t]||null,setItem:(t,r)=>{e[t]=r},removeItem:(t)=>{delete e[t]}}}var Ct={debug:!!(globalThis&&Pi()&&globalThis.localStorage&&globalThis.localStorage.getItem("supabase.gotrue-js.locks.debug")==="true")};class Fi extends Error{constructor(e){super(e);this.isAcquireTimeout=!0}}class Mi extends Fi{}async function ao(e,t,r){if(Ct.debug)console.log("@supabase/gotrue-js: navigatorLock: acquire lock",e,t);let n=new globalThis.AbortController,i;if(t>0)i=setTimeout(()=>{if(n.abort(),Ct.debug)console.log("@supabase/gotrue-js: navigatorLock acquire timed out",e)},t);await Promise.resolve();try{return await globalThis.navigator.locks.request(e,t===0?{mode:"exclusive",ifAvailable:!0}:{mode:"exclusive",signal:n.signal},async(s)=>{if(s){if(clearTimeout(i),Ct.debug)console.log("@supabase/gotrue-js: navigatorLock: acquired",e,s.name);try{return await r()}finally{if(Ct.debug)console.log("@supabase/gotrue-js: navigatorLock: released",e,s.name)}}else if(t===0){if(Ct.debug)console.log("@supabase/gotrue-js: navigatorLock: not immediately available",e);throw new Mi(`Acquiring an exclusive Navigator LockManager lock "${e}" immediately failed`)}else{if(Ct.debug)try{let o=await globalThis.navigator.locks.query();console.log("@supabase/gotrue-js: Navigator LockManager state",JSON.stringify(o,null," "))}catch(o){console.warn("@supabase/gotrue-js: Error when querying Navigator LockManager state",o)}return console.warn("@supabase/gotrue-js: Navigator LockManager returned a null lock when using #request without ifAvailable set to true, it appears this browser is not following the LockManager spec https://developer.mozilla.org/en-US/docs/Web/API/LockManager/request"),clearTimeout(i),await r()}})}catch(s){if(t>0)clearTimeout(i);if((s===null||s===void 0?void 0:s.name)==="AbortError"&&t>0)if(n.signal.aborted){if(Ct.debug)console.log("@supabase/gotrue-js: navigatorLock: acquire timeout, recovering by stealing lock",e);return console.warn(`@supabase/gotrue-js: Lock "${e}" was not released within ${t}ms. This may indicate an orphaned lock from a component unmount (e.g., React Strict Mode). Forcefully acquiring the lock to recover.`),await Promise.resolve().then(()=>globalThis.navigator.locks.request(e,{mode:"exclusive",steal:!0},async(o)=>{if(o){if(Ct.debug)console.log("@supabase/gotrue-js: navigatorLock: recovered (stolen)",e,o.name);try{return await r()}finally{if(Ct.debug)console.log("@supabase/gotrue-js: navigatorLock: released (stolen)",e,o.name)}}else return console.warn("@supabase/gotrue-js: Navigator LockManager returned null lock even with steal: true"),await r()}))}else{if(Ct.debug)console.log("@supabase/gotrue-js: navigatorLock: lock was stolen by another request",e);throw new Mi(`Lock "${e}" was released because another request stole it`)}throw s}}function Bc(){if(typeof globalThis==="object")return;try{Object.defineProperty(Object.prototype,"__magic__",{get:function(){return this},configurable:!0}),__magic__.globalThis=__magic__,delete Object.prototype.__magic__}catch(e){if(typeof self<"u")self.globalThis=self}}function lo(e){if(!/^0x[a-fA-F0-9]{40}$/.test(e))throw Error(`@supabase/auth-js: Address "${e}" is invalid.`);return e.toLowerCase()}function Oc(e){return parseInt(e,16)}function Pc(e){let t=new TextEncoder().encode(e);return"0x"+Array.from(t,(n)=>n.toString(16).padStart(2,"0")).join("")}function Nc(e){var t;let{chainId:r,domain:n,expirationTime:i,issuedAt:s=new Date,nonce:o,notBefore:a,requestId:l,resources:c,scheme:u,uri:d,version:A}=e;{if(!Number.isInteger(r))throw Error(`@supabase/auth-js: Invalid SIWE message field "chainId". Chain ID must be a EIP-155 chain ID. Provided value: ${r}`);if(!n)throw Error('@supabase/auth-js: Invalid SIWE message field "domain". Domain must be provided.');if(o&&o.length<8)throw Error(`@supabase/auth-js: Invalid SIWE message field "nonce". Nonce must be at least 8 characters. Provided value: ${o}`);if(!d)throw Error('@supabase/auth-js: Invalid SIWE message field "uri". URI must be provided.');if(A!=="1")throw Error(`@supabase/auth-js: Invalid SIWE message field "version". Version must be '1'. Provided value: ${A}`);if((t=e.statement)===null||t===void 0?void 0:t.includes(`
37
+ })`);throw Error(`WebSocket not available: ${t}`)}this._handleNodeJsRaceCondition()}endpointURL(){return this.socketAdapter.endPointURL()}async disconnect(e,t){if(this.isDisconnecting())return"ok";return await this.socketAdapter.disconnect(()=>{clearInterval(this._workerHeartbeatTimer),this._terminateWorker()},e,t)}getChannels(){return this.channels}async removeChannel(e){let t=await e.unsubscribe();if(t==="ok")e.teardown();if(this.channels.length===0)this.disconnect();return t}async removeAllChannels(){let e=this.channels.map(async(r)=>{let n=await r.unsubscribe();return r.teardown(),n}),t=await Promise.all(e);return this.disconnect(),t}log(e,t,r){this.socketAdapter.log(e,t,r)}connectionState(){return this.socketAdapter.connectionState()||_n.closed}isConnected(){return this.socketAdapter.isConnected()}isConnecting(){return this.socketAdapter.isConnecting()}isDisconnecting(){return this.socketAdapter.isDisconnecting()}channel(e,t={config:{}}){let r=`realtime:${e}`,n=this.getChannels().find((i)=>i.topic===r);if(!n){let i=new Yt(`realtime:${e}`,t,this);return this.channels.push(i),i}else return n}push(e){this.socketAdapter.push(e)}async setAuth(e=null){this._authPromise=this._performAuth(e);try{await this._authPromise}finally{this._authPromise=null}}_isManualToken(){return this._manuallySetToken}async sendHeartbeat(){this.socketAdapter.sendHeartbeat()}onHeartbeat(e){this.socketAdapter.heartbeatCallback=this._wrapHeartbeatCallback(e)}_makeRef(){return this.socketAdapter.makeRef()}_remove(e){this.channels=this.channels.filter((t)=>t.topic!==e.topic)}async _performAuth(e=null){let t,r=!1;if(e)t=e,r=!0;else if(this.accessToken)try{t=await this.accessToken()}catch(n){this.log("error","Error fetching access token from callback",n),t=this.accessTokenValue}else t=this.accessTokenValue;if(r)this._manuallySetToken=!0;else if(this.accessToken)this._manuallySetToken=!1;if(this.accessTokenValue!=t)this.accessTokenValue=t,this.channels.forEach((n)=>{let i={access_token:t,version:Kl};if(t&&n.updateJoinPayload(i),n.joinedOnce&&n.channelAdapter.isJoined())n.channelAdapter.push(Ai.access_token,{access_token:t})})}async _waitForAuthIfNeeded(){if(this._authPromise)await this._authPromise}_setAuthSafely(e="general"){if(!this._isManualToken())this.setAuth().catch((t)=>{this.log("error",`Error setting auth in ${e}`,t)})}_setupConnectionHandlers(){this.socketAdapter.onOpen(()=>{if((this._authPromise||(this.accessToken&&!this.accessTokenValue?this.setAuth():Promise.resolve())).catch((t)=>{this.log("error","error waiting for auth on connect",t)}),this.worker&&!this.workerRef)this._startWorkerHeartbeat()}),this.socketAdapter.onClose(()=>{if(this.worker&&this.workerRef)this._terminateWorker()}),this.socketAdapter.onMessage((e)=>{if(e.ref&&e.ref===this._pendingWorkerHeartbeatRef)this._pendingWorkerHeartbeatRef=null})}_handleNodeJsRaceCondition(){if(this.socketAdapter.isConnected())this.socketAdapter.getSocket().onConnOpen()}_wrapHeartbeatCallback(e){return(t,r)=>{if(t=="sent")this._setAuthSafely();if(e)e(t,r)}}_startWorkerHeartbeat(){if(this.workerUrl)this.log("worker",`starting worker for from ${this.workerUrl}`);else this.log("worker","starting default worker");let e=this._workerObjectUrl(this.workerUrl);this.workerRef=new Worker(e),this.workerRef.onerror=(t)=>{this.log("worker","worker error",t.message),this._terminateWorker(),this.disconnect()},this.workerRef.onmessage=(t)=>{if(t.data.event==="keepAlive")this.sendHeartbeat()},this.workerRef.postMessage({event:"start",interval:this.heartbeatIntervalMs})}_terminateWorker(){if(this.workerRef)this.log("worker","terminating worker"),this.workerRef.terminate(),this.workerRef=void 0}_workerObjectUrl(e){let t;if(e)t=e;else{let r=new Blob([wf],{type:"application/javascript"});t=URL.createObjectURL(r)}return t}_initializeOptions(e){var t,r,n,i,s,o,a,l,c;this.worker=(t=e===null||e===void 0?void 0:e.worker)!==null&&t!==void 0?t:!1,this.accessToken=(r=e===null||e===void 0?void 0:e.accessToken)!==null&&r!==void 0?r:null;let u={};u.timeout=(n=e===null||e===void 0?void 0:e.timeout)!==null&&n!==void 0?n:Ql,u.heartbeatIntervalMs=(i=e===null||e===void 0?void 0:e.heartbeatIntervalMs)!==null&&i!==void 0?i:pf.HEARTBEAT_INTERVAL,u.transport=(s=e===null||e===void 0?void 0:e.transport)!==null&&s!==void 0?s:Hs.getWebSocketConstructor(),u.params=e===null||e===void 0?void 0:e.params,u.logger=e===null||e===void 0?void 0:e.logger,u.heartbeatCallback=this._wrapHeartbeatCallback(e===null||e===void 0?void 0:e.heartbeatCallback),u.reconnectAfterMs=(o=e===null||e===void 0?void 0:e.reconnectAfterMs)!==null&&o!==void 0?o:(g)=>bf[g-1]||yf;let d,A,m=(a=e===null||e===void 0?void 0:e.vsn)!==null&&a!==void 0?a:Yl;switch(m){case Wl:d=(g,f)=>f(JSON.stringify(g)),A=(g,f)=>f(JSON.parse(g));break;case Ks:d=this.serializer.encode.bind(this.serializer),A=this.serializer.decode.bind(this.serializer);break;default:throw Error(`Unsupported serializer version: ${u.vsn}`)}if(u.vsn=m,u.encode=(l=e===null||e===void 0?void 0:e.encode)!==null&&l!==void 0?l:d,u.decode=(c=e===null||e===void 0?void 0:e.decode)!==null&&c!==void 0?c:A,u.beforeReconnect=this._reconnectAuth.bind(this),(e===null||e===void 0?void 0:e.logLevel)||(e===null||e===void 0?void 0:e.log_level))this.logLevel=e.logLevel||e.log_level,u.params=Object.assign(Object.assign({},u.params),{log_level:this.logLevel});if(this.worker){if(typeof window<"u"&&!window.Worker)throw Error("Web Worker is not supported");this.workerUrl=e===null||e===void 0?void 0:e.workerUrl,u.autoSendHeartbeat=!this.worker}return u}async _reconnectAuth(){if(await this._waitForAuthIfNeeded(),!this.isConnected())this.connect()}}var Sn=class extends Error{constructor(e,t){super(e);this.name="IcebergError",this.status=t.status,this.icebergType=t.icebergType,this.icebergCode=t.icebergCode,this.details=t.details,this.isCommitStateUnknown=t.icebergType==="CommitStateUnknownException"||[500,502,504].includes(t.status)&&t.icebergType?.includes("CommitState")===!0}isNotFound(){return this.status===404}isConflict(){return this.status===409}isAuthenticationTimeout(){return this.status===419}};function _f(e,t,r){let n=new URL(t,e);if(r){for(let[i,s]of Object.entries(r))if(s!==void 0)n.searchParams.set(i,s)}return n.toString()}async function vf(e){if(!e||e.type==="none")return{};if(e.type==="bearer")return{Authorization:`Bearer ${e.token}`};if(e.type==="header")return{[e.name]:e.value};if(e.type==="custom")return await e.getHeaders();return{}}function Cf(e){let t=e.fetchImpl??globalThis.fetch;return{async request({method:r,path:n,query:i,body:s,headers:o}){let a=_f(e.baseUrl,n,i),l=await vf(e.auth),c=await t(a,{method:r,headers:{...s?{"Content-Type":"application/json"}:{},...l,...o},body:s?JSON.stringify(s):void 0}),u=await c.text(),d=(c.headers.get("content-type")||"").includes("application/json"),A=d&&u?JSON.parse(u):u;if(!c.ok){let m=d?A:void 0,g=m?.error;throw new Sn(g?.message??`Request failed with status ${c.status}`,{status:c.status,icebergType:g?.type,icebergCode:g?.code,details:m})}return{status:c.status,headers:c.headers,data:A}}}}function vi(e){return e.join("\x1F")}var Ef=class{constructor(e,t=""){this.client=e,this.prefix=t}async listNamespaces(e){let t=e?{parent:vi(e.namespace)}:void 0;return(await this.client.request({method:"GET",path:`${this.prefix}/namespaces`,query:t})).data.namespaces.map((n)=>({namespace:n}))}async createNamespace(e,t){let r={namespace:e.namespace,properties:t?.properties};return(await this.client.request({method:"POST",path:`${this.prefix}/namespaces`,body:r})).data}async dropNamespace(e){await this.client.request({method:"DELETE",path:`${this.prefix}/namespaces/${vi(e.namespace)}`})}async loadNamespaceMetadata(e){return{properties:(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${vi(e.namespace)}`})).data.properties}}async namespaceExists(e){try{return await this.client.request({method:"HEAD",path:`${this.prefix}/namespaces/${vi(e.namespace)}`}),!0}catch(t){if(t instanceof Sn&&t.status===404)return!1;throw t}}async createNamespaceIfNotExists(e,t){try{return await this.createNamespace(e,t)}catch(r){if(r instanceof Sn&&r.status===409)return;throw r}}};function Nr(e){return e.join("\x1F")}var Sf=class{constructor(e,t="",r){this.client=e,this.prefix=t,this.accessDelegation=r}async listTables(e){return(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${Nr(e.namespace)}/tables`})).data.identifiers}async createTable(e,t){let r={};if(this.accessDelegation)r["X-Iceberg-Access-Delegation"]=this.accessDelegation;return(await this.client.request({method:"POST",path:`${this.prefix}/namespaces/${Nr(e.namespace)}/tables`,body:t,headers:r})).data.metadata}async updateTable(e,t){let r=await this.client.request({method:"POST",path:`${this.prefix}/namespaces/${Nr(e.namespace)}/tables/${e.name}`,body:t});return{"metadata-location":r.data["metadata-location"],metadata:r.data.metadata}}async dropTable(e,t){await this.client.request({method:"DELETE",path:`${this.prefix}/namespaces/${Nr(e.namespace)}/tables/${e.name}`,query:{purgeRequested:String(t?.purge??!1)}})}async loadTable(e){let t={};if(this.accessDelegation)t["X-Iceberg-Access-Delegation"]=this.accessDelegation;return(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${Nr(e.namespace)}/tables/${e.name}`,headers:t})).data.metadata}async tableExists(e){let t={};if(this.accessDelegation)t["X-Iceberg-Access-Delegation"]=this.accessDelegation;try{return await this.client.request({method:"HEAD",path:`${this.prefix}/namespaces/${Nr(e.namespace)}/tables/${e.name}`,headers:t}),!0}catch(r){if(r instanceof Sn&&r.status===404)return!1;throw r}}async createTableIfNotExists(e,t){try{return await this.createTable(e,t)}catch(r){if(r instanceof Sn&&r.status===409)return await this.loadTable({namespace:e.namespace,name:t.name});throw r}}},ql=class{constructor(e){let t="v1";if(e.catalogName)t+=`/${e.catalogName}`;let r=e.baseUrl.endsWith("/")?e.baseUrl:`${e.baseUrl}/`;this.client=Cf({baseUrl:r,auth:e.auth,fetchImpl:e.fetch}),this.accessDelegation=e.accessDelegation?.join(","),this.namespaceOps=new Ef(this.client,t),this.tableOps=new Sf(this.client,t,this.accessDelegation)}async listNamespaces(e){return this.namespaceOps.listNamespaces(e)}async createNamespace(e,t){return this.namespaceOps.createNamespace(e,t)}async dropNamespace(e){await this.namespaceOps.dropNamespace(e)}async loadNamespaceMetadata(e){return this.namespaceOps.loadNamespaceMetadata(e)}async listTables(e){return this.tableOps.listTables(e)}async createTable(e,t){return this.tableOps.createTable(e,t)}async updateTable(e,t){return this.tableOps.updateTable(e,t)}async dropTable(e,t){await this.tableOps.dropTable(e,t)}async loadTable(e){return this.tableOps.loadTable(e)}async namespaceExists(e){return this.namespaceOps.namespaceExists(e)}async tableExists(e){return this.tableOps.tableExists(e)}async createNamespaceIfNotExists(e,t){return this.namespaceOps.createNamespaceIfNotExists(e,t)}async createTableIfNotExists(e,t){return this.tableOps.createTableIfNotExists(e,t)}};var Ei=class extends Error{constructor(e,t="storage",r,n){super(e);this.__isStorageError=!0,this.namespace=t,this.name=t==="vectors"?"StorageVectorsError":"StorageError",this.status=r,this.statusCode=n}};function Si(e){return typeof e==="object"&&e!==null&&"__isStorageError"in e}var Ci=class extends Ei{constructor(e,t,r,n="storage"){super(e,n,t,r);this.name=n==="vectors"?"StorageVectorsApiError":"StorageApiError",this.status=t,this.statusCode=r}toJSON(){return{name:this.name,message:this.message,status:this.status,statusCode:this.statusCode}}},nc=class extends Ei{constructor(e,t,r="storage"){super(e,r);this.name=r==="vectors"?"StorageVectorsUnknownError":"StorageUnknownError",this.originalError=t}};var If=(e)=>{if(e)return(...t)=>e(...t);return(...t)=>fetch(...t)},xf=(e)=>{if(typeof e!=="object"||e===null)return!1;let t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},Xs=(e)=>{if(Array.isArray(e))return e.map((r)=>Xs(r));else if(typeof e==="function"||e!==Object(e))return e;let t={};return Object.entries(e).forEach(([r,n])=>{let i=r.replace(/([-_][a-z])/gi,(s)=>s.toUpperCase().replace(/[-_]/g,""));t[i]=Xs(n)}),t},kf=(e)=>{if(!e||typeof e!=="string")return!1;if(e.length===0||e.length>100)return!1;if(e.trim()!==e)return!1;if(e.includes("/")||e.includes("\\"))return!1;return/^[\w!.\*'() &$@=;:+,?-]+$/.test(e)};function xn(e){return xn=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},xn(e)}function Rf(e,t){if(xn(e)!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t||"default");if(xn(n)!="object")return n;throw TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Tf(e){var t=Rf(e,"string");return xn(t)=="symbol"?t:t+""}function Bf(e,t,r){return(t=Tf(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function ec(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function W(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?ec(Object(r),!0).forEach(function(n){Bf(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ec(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}var tc=(e)=>{var t;return e.msg||e.message||e.error_description||(typeof e.error==="string"?e.error:(t=e.error)===null||t===void 0?void 0:t.message)||JSON.stringify(e)},Of=async(e,t,r,n)=>{if(e!==null&&typeof e==="object"&&typeof e.json==="function"){let i=e,s=parseInt(i.status,10);if(!Number.isFinite(s))s=500;i.json().then((o)=>{let a=(o===null||o===void 0?void 0:o.statusCode)||(o===null||o===void 0?void 0:o.code)||s+"";t(new Ci(tc(o),s,a,n))}).catch(()=>{let o=s+"";t(new Ci(i.statusText||`HTTP ${s} error`,s,o,n))})}else t(new nc(tc(e),e,n))},Pf=(e,t,r,n)=>{let i={method:e,headers:(t===null||t===void 0?void 0:t.headers)||{}};if(e==="GET"||e==="HEAD"||!n)return W(W({},i),r);if(xf(n)){var s;let o=(t===null||t===void 0?void 0:t.headers)||{},a;for(let[l,c]of Object.entries(o))if(l.toLowerCase()==="content-type")a=c;i.headers=Nf(o,"Content-Type",(s=a)!==null&&s!==void 0?s:"application/json"),i.body=JSON.stringify(n)}else i.body=n;if(t===null||t===void 0?void 0:t.duplex)i.duplex=t.duplex;return W(W({},i),r)};function Nf(e,t,r){let n=W({},e);for(let i of Object.keys(n))if(i.toLowerCase()===t.toLowerCase())delete n[i];return n[t]=r,n}async function In(e,t,r,n,i,s,o){return new Promise((a,l)=>{e(r,Pf(t,n,i,s)).then((c)=>{if(!c.ok)throw c;if(n===null||n===void 0?void 0:n.noResolveJson)return c;if(o==="vectors"){let u=c.headers.get("content-type");if(c.headers.get("content-length")==="0"||c.status===204)return{};if(!u||!u.includes("application/json"))return{}}return c.json()}).then((c)=>a(c)).catch((c)=>Of(c,l,n,o))})}function ic(e="storage"){return{get:async(t,r,n,i)=>In(t,"GET",r,n,i,void 0,e),post:async(t,r,n,i,s)=>In(t,"POST",r,i,s,n,e),put:async(t,r,n,i,s)=>In(t,"PUT",r,i,s,n,e),head:async(t,r,n,i)=>In(t,"HEAD",r,W(W({},n),{},{noResolveJson:!0}),i,void 0,e),remove:async(t,r,n,i,s)=>In(t,"DELETE",r,i,s,n,e)}}var Df=ic("storage"),{get:kn,post:_t,put:Vs,head:Lf,remove:zs}=Df,dt=ic("vectors"),Dr=class{constructor(e,t={},r,n="storage"){this.shouldThrowOnError=!1,this.url=e,this.headers=Object.fromEntries(Object.entries(t).map(([i,s])=>[i.toLowerCase(),s])),this.fetch=If(r),this.namespace=n}throwOnError(){return this.shouldThrowOnError=!0,this}setHeader(e,t){return this.headers=W(W({},this.headers),{},{[e.toLowerCase()]:t}),this}async handleOperation(e){var t=this;try{return{data:await e(),error:null}}catch(r){if(t.shouldThrowOnError)throw r;if(Si(r))return{data:null,error:r};throw r}}},Mf=class{constructor(e,t){this.downloadFn=e,this.shouldThrowOnError=t}then(e,t){return this.execute().then(e,t)}async execute(){var e=this;try{return{data:(await e.downloadFn()).body,error:null}}catch(t){if(e.shouldThrowOnError)throw t;if(Si(t))return{data:null,error:t};throw t}}},sc;sc=Symbol.toStringTag;var Ff=class{constructor(e,t){this.downloadFn=e,this.shouldThrowOnError=t,this[sc]="BlobDownloadBuilder",this.promise=null}asStream(){return new Mf(this.downloadFn,this.shouldThrowOnError)}then(e,t){return this.getPromise().then(e,t)}catch(e){return this.getPromise().catch(e)}finally(e){return this.getPromise().finally(e)}getPromise(){if(!this.promise)this.promise=this.execute();return this.promise}async execute(){var e=this;try{return{data:await(await e.downloadFn()).blob(),error:null}}catch(t){if(e.shouldThrowOnError)throw t;if(Si(t))return{data:null,error:t};throw t}}},Gf={limit:100,offset:0,sortBy:{column:"name",order:"asc"}},rc={cacheControl:"3600",contentType:"text/plain;charset=UTF-8",upsert:!1},Uf=class extends Dr{constructor(e,t={},r,n){super(e,t,n,"storage");this.bucketId=r}async uploadOrUpdate(e,t,r,n){var i=this;return i.handleOperation(async()=>{let s,o=W(W({},rc),n),a=W(W({},i.headers),e==="POST"&&{"x-upsert":String(o.upsert)}),l=o.metadata;if(typeof Blob<"u"&&r instanceof Blob){if(s=new FormData,s.append("cacheControl",o.cacheControl),l)s.append("metadata",i.encodeMetadata(l));s.append("",r)}else if(typeof FormData<"u"&&r instanceof FormData){if(s=r,!s.has("cacheControl"))s.append("cacheControl",o.cacheControl);if(l&&!s.has("metadata"))s.append("metadata",i.encodeMetadata(l))}else{if(s=r,a["cache-control"]=`max-age=${o.cacheControl}`,a["content-type"]=o.contentType,l)a["x-metadata"]=i.toBase64(i.encodeMetadata(l));if((typeof ReadableStream<"u"&&s instanceof ReadableStream||s&&typeof s==="object"&&("pipe"in s)&&typeof s.pipe==="function")&&!o.duplex)o.duplex="half"}if(n===null||n===void 0?void 0:n.headers)a=W(W({},a),n.headers);let c=i._removeEmptyFolders(t),u=i._getFinalPath(c),d=await(e=="PUT"?Vs:_t)(i.fetch,`${i.url}/object/${u}`,s,W({headers:a},(o===null||o===void 0?void 0:o.duplex)?{duplex:o.duplex}:{}));return{path:c,id:d.Id,fullPath:d.Key}})}async upload(e,t,r){return this.uploadOrUpdate("POST",e,t,r)}async uploadToSignedUrl(e,t,r,n){var i=this;let s=i._removeEmptyFolders(e),o=i._getFinalPath(s),a=new URL(i.url+`/object/upload/sign/${o}`);return a.searchParams.set("token",t),i.handleOperation(async()=>{let l,c=W(W({},rc),n),u=W(W({},i.headers),{"x-upsert":String(c.upsert)});if(typeof Blob<"u"&&r instanceof Blob)l=new FormData,l.append("cacheControl",c.cacheControl),l.append("",r);else if(typeof FormData<"u"&&r instanceof FormData)l=r,l.append("cacheControl",c.cacheControl);else l=r,u["cache-control"]=`max-age=${c.cacheControl}`,u["content-type"]=c.contentType;return{path:s,fullPath:(await Vs(i.fetch,a.toString(),l,{headers:u})).Key}})}async createSignedUploadUrl(e,t){var r=this;return r.handleOperation(async()=>{let n=r._getFinalPath(e),i=W({},r.headers);if(t===null||t===void 0?void 0:t.upsert)i["x-upsert"]="true";let s=await _t(r.fetch,`${r.url}/object/upload/sign/${n}`,{},{headers:i}),o=new URL(r.url+s.url),a=o.searchParams.get("token");if(!a)throw new Ei("No token returned by API");return{signedUrl:o.toString(),path:e,token:a}})}async update(e,t,r){return this.uploadOrUpdate("PUT",e,t,r)}async move(e,t,r){var n=this;return n.handleOperation(async()=>await _t(n.fetch,`${n.url}/object/move`,{bucketId:n.bucketId,sourceKey:e,destinationKey:t,destinationBucket:r===null||r===void 0?void 0:r.destinationBucket},{headers:n.headers}))}async copy(e,t,r){var n=this;return n.handleOperation(async()=>({path:(await _t(n.fetch,`${n.url}/object/copy`,{bucketId:n.bucketId,sourceKey:e,destinationKey:t,destinationBucket:r===null||r===void 0?void 0:r.destinationBucket},{headers:n.headers})).Key}))}async createSignedUrl(e,t,r){var n=this;return n.handleOperation(async()=>{let i=n._getFinalPath(e),s=typeof(r===null||r===void 0?void 0:r.transform)==="object"&&r.transform!==null&&Object.keys(r.transform).length>0,o=await _t(n.fetch,`${n.url}/object/sign/${i}`,W({expiresIn:t},s?{transform:r.transform}:{}),{headers:n.headers}),a=new URLSearchParams;if(r===null||r===void 0?void 0:r.download)a.set("download",r.download===!0?"":r.download);if((r===null||r===void 0?void 0:r.cacheNonce)!=null)a.set("cacheNonce",String(r.cacheNonce));let l=a.toString(),c=s&&o.signedURL.includes("/object/sign/")?o.signedURL.replace("/object/sign/","/render/image/sign/"):o.signedURL;return{signedUrl:encodeURI(`${n.url}${c}${l?`&${l}`:""}`)}})}async createSignedUrls(e,t,r){var n=this;return n.handleOperation(async()=>{let i=await _t(n.fetch,`${n.url}/object/sign/${n.bucketId}`,{expiresIn:t,paths:e},{headers:n.headers}),s=new URLSearchParams;if(r===null||r===void 0?void 0:r.download)s.set("download",r.download===!0?"":r.download);if((r===null||r===void 0?void 0:r.cacheNonce)!=null)s.set("cacheNonce",String(r.cacheNonce));let o=s.toString();return i.map((a)=>W(W({},a),{},{signedUrl:a.signedURL?encodeURI(`${n.url}${a.signedURL}${o?`&${o}`:""}`):null}))})}download(e,t,r){let n=typeof(t===null||t===void 0?void 0:t.transform)<"u"?"render/image/authenticated":"object",i=new URLSearchParams;if(t===null||t===void 0?void 0:t.transform)this.applyTransformOptsToQuery(i,t.transform);if((t===null||t===void 0?void 0:t.cacheNonce)!=null)i.set("cacheNonce",String(t.cacheNonce));let s=i.toString(),o=this._getFinalPath(e);return new Ff(()=>kn(this.fetch,`${this.url}/${n}/${o}${s?`?${s}`:""}`,{headers:this.headers,noResolveJson:!0},r),this.shouldThrowOnError)}async info(e){var t=this;let r=t._getFinalPath(e);return t.handleOperation(async()=>Xs(await kn(t.fetch,`${t.url}/object/info/${r}`,{headers:t.headers})))}async exists(e){var t=this;let r=t._getFinalPath(e);try{return await Lf(t.fetch,`${t.url}/object/${r}`,{headers:t.headers}),{data:!0,error:null}}catch(i){if(t.shouldThrowOnError)throw i;if(Si(i)){var n;let s=i instanceof Ci?i.status:i instanceof nc?(n=i.originalError)===null||n===void 0?void 0:n.status:void 0;if(s!==void 0&&[400,404].includes(s))return{data:!1,error:i}}throw i}}getPublicUrl(e,t){let r=this._getFinalPath(e),n=new URLSearchParams;if(t===null||t===void 0?void 0:t.download)n.set("download",t.download===!0?"":t.download);if(t===null||t===void 0?void 0:t.transform)this.applyTransformOptsToQuery(n,t.transform);if((t===null||t===void 0?void 0:t.cacheNonce)!=null)n.set("cacheNonce",String(t.cacheNonce));let i=n.toString(),s=typeof(t===null||t===void 0?void 0:t.transform)<"u"?"render/image":"object";return{data:{publicUrl:encodeURI(`${this.url}/${s}/public/${r}`)+(i?`?${i}`:"")}}}async remove(e){var t=this;return t.handleOperation(async()=>await zs(t.fetch,`${t.url}/object/${t.bucketId}`,{prefixes:e},{headers:t.headers}))}async list(e,t,r){var n=this;return n.handleOperation(async()=>{let i=W(W(W({},Gf),t),{},{prefix:e||""});return await _t(n.fetch,`${n.url}/object/list/${n.bucketId}`,i,{headers:n.headers},r)})}async listV2(e,t){var r=this;return r.handleOperation(async()=>{let n=W({},e);return await _t(r.fetch,`${r.url}/object/list-v2/${r.bucketId}`,n,{headers:r.headers},t)})}encodeMetadata(e){return JSON.stringify(e)}toBase64(e){if(typeof Buffer<"u")return Buffer.from(e).toString("base64");return btoa(e)}_getFinalPath(e){return`${this.bucketId}/${e.replace(/^\/+/,"")}`}_removeEmptyFolders(e){return e.replace(/^\/|\/$/g,"").replace(/\/+/g,"/")}applyTransformOptsToQuery(e,t){if(t.width)e.set("width",t.width.toString());if(t.height)e.set("height",t.height.toString());if(t.resize)e.set("resize",t.resize);if(t.format)e.set("format",t.format);if(t.quality)e.set("quality",t.quality.toString());return e}},jf="2.103.0",Rn={"X-Client-Info":`storage-js/${jf}`},Hf=class extends Dr{constructor(e,t={},r,n){let i=new URL(e);if(n===null||n===void 0?void 0:n.useNewHostname){if(/supabase\.(co|in|red)$/.test(i.hostname)&&!i.hostname.includes("storage.supabase."))i.hostname=i.hostname.replace("supabase.","storage.supabase.")}let s=i.href.replace(/\/$/,""),o=W(W({},Rn),t);super(s,o,r,"storage")}async listBuckets(e){var t=this;return t.handleOperation(async()=>{let r=t.listBucketOptionsToQueryString(e);return await kn(t.fetch,`${t.url}/bucket${r}`,{headers:t.headers})})}async getBucket(e){var t=this;return t.handleOperation(async()=>await kn(t.fetch,`${t.url}/bucket/${e}`,{headers:t.headers}))}async createBucket(e,t={public:!1}){var r=this;return r.handleOperation(async()=>await _t(r.fetch,`${r.url}/bucket`,{id:e,name:e,type:t.type,public:t.public,file_size_limit:t.fileSizeLimit,allowed_mime_types:t.allowedMimeTypes},{headers:r.headers}))}async updateBucket(e,t){var r=this;return r.handleOperation(async()=>await Vs(r.fetch,`${r.url}/bucket/${e}`,{id:e,name:e,public:t.public,file_size_limit:t.fileSizeLimit,allowed_mime_types:t.allowedMimeTypes},{headers:r.headers}))}async emptyBucket(e){var t=this;return t.handleOperation(async()=>await _t(t.fetch,`${t.url}/bucket/${e}/empty`,{},{headers:t.headers}))}async deleteBucket(e){var t=this;return t.handleOperation(async()=>await zs(t.fetch,`${t.url}/bucket/${e}`,{},{headers:t.headers}))}listBucketOptionsToQueryString(e){let t={};if(e){if("limit"in e)t.limit=String(e.limit);if("offset"in e)t.offset=String(e.offset);if(e.search)t.search=e.search;if(e.sortColumn)t.sortColumn=e.sortColumn;if(e.sortOrder)t.sortOrder=e.sortOrder}return Object.keys(t).length>0?"?"+new URLSearchParams(t).toString():""}},Kf=class extends Dr{constructor(e,t={},r){let n=e.replace(/\/$/,""),i=W(W({},Rn),t);super(n,i,r,"storage")}async createBucket(e){var t=this;return t.handleOperation(async()=>await _t(t.fetch,`${t.url}/bucket`,{name:e},{headers:t.headers}))}async listBuckets(e){var t=this;return t.handleOperation(async()=>{let r=new URLSearchParams;if((e===null||e===void 0?void 0:e.limit)!==void 0)r.set("limit",e.limit.toString());if((e===null||e===void 0?void 0:e.offset)!==void 0)r.set("offset",e.offset.toString());if(e===null||e===void 0?void 0:e.sortColumn)r.set("sortColumn",e.sortColumn);if(e===null||e===void 0?void 0:e.sortOrder)r.set("sortOrder",e.sortOrder);if(e===null||e===void 0?void 0:e.search)r.set("search",e.search);let n=r.toString(),i=n?`${t.url}/bucket?${n}`:`${t.url}/bucket`;return await kn(t.fetch,i,{headers:t.headers})})}async deleteBucket(e){var t=this;return t.handleOperation(async()=>await zs(t.fetch,`${t.url}/bucket/${e}`,{},{headers:t.headers}))}from(e){var t=this;if(!kf(e))throw new Ei("Invalid bucket name: File, folder, and bucket names must follow AWS object key naming guidelines and should avoid the use of any other characters.");let r=new ql({baseUrl:this.url,catalogName:e,auth:{type:"custom",getHeaders:async()=>t.headers},fetch:this.fetch}),n=this.shouldThrowOnError;return new Proxy(r,{get(i,s){let o=i[s];if(typeof o!=="function")return o;return async(...a)=>{try{return{data:await o.apply(i,a),error:null}}catch(l){if(n)throw l;return{data:null,error:l}}}}})}},Wf=class extends Dr{constructor(e,t={},r){let n=e.replace(/\/$/,""),i=W(W({},Rn),{},{"Content-Type":"application/json"},t);super(n,i,r,"vectors")}async createIndex(e){var t=this;return t.handleOperation(async()=>await dt.post(t.fetch,`${t.url}/CreateIndex`,e,{headers:t.headers})||{})}async getIndex(e,t){var r=this;return r.handleOperation(async()=>await dt.post(r.fetch,`${r.url}/GetIndex`,{vectorBucketName:e,indexName:t},{headers:r.headers}))}async listIndexes(e){var t=this;return t.handleOperation(async()=>await dt.post(t.fetch,`${t.url}/ListIndexes`,e,{headers:t.headers}))}async deleteIndex(e,t){var r=this;return r.handleOperation(async()=>await dt.post(r.fetch,`${r.url}/DeleteIndex`,{vectorBucketName:e,indexName:t},{headers:r.headers})||{})}},Yf=class extends Dr{constructor(e,t={},r){let n=e.replace(/\/$/,""),i=W(W({},Rn),{},{"Content-Type":"application/json"},t);super(n,i,r,"vectors")}async putVectors(e){var t=this;if(e.vectors.length<1||e.vectors.length>500)throw Error("Vector batch size must be between 1 and 500 items");return t.handleOperation(async()=>await dt.post(t.fetch,`${t.url}/PutVectors`,e,{headers:t.headers})||{})}async getVectors(e){var t=this;return t.handleOperation(async()=>await dt.post(t.fetch,`${t.url}/GetVectors`,e,{headers:t.headers}))}async listVectors(e){var t=this;if(e.segmentCount!==void 0){if(e.segmentCount<1||e.segmentCount>16)throw Error("segmentCount must be between 1 and 16");if(e.segmentIndex!==void 0){if(e.segmentIndex<0||e.segmentIndex>=e.segmentCount)throw Error(`segmentIndex must be between 0 and ${e.segmentCount-1}`)}}return t.handleOperation(async()=>await dt.post(t.fetch,`${t.url}/ListVectors`,e,{headers:t.headers}))}async queryVectors(e){var t=this;return t.handleOperation(async()=>await dt.post(t.fetch,`${t.url}/QueryVectors`,e,{headers:t.headers}))}async deleteVectors(e){var t=this;if(e.keys.length<1||e.keys.length>500)throw Error("Keys batch size must be between 1 and 500 items");return t.handleOperation(async()=>await dt.post(t.fetch,`${t.url}/DeleteVectors`,e,{headers:t.headers})||{})}},Qf=class extends Dr{constructor(e,t={},r){let n=e.replace(/\/$/,""),i=W(W({},Rn),{},{"Content-Type":"application/json"},t);super(n,i,r,"vectors")}async createBucket(e){var t=this;return t.handleOperation(async()=>await dt.post(t.fetch,`${t.url}/CreateVectorBucket`,{vectorBucketName:e},{headers:t.headers})||{})}async getBucket(e){var t=this;return t.handleOperation(async()=>await dt.post(t.fetch,`${t.url}/GetVectorBucket`,{vectorBucketName:e},{headers:t.headers}))}async listBuckets(e={}){var t=this;return t.handleOperation(async()=>await dt.post(t.fetch,`${t.url}/ListVectorBuckets`,e,{headers:t.headers}))}async deleteBucket(e){var t=this;return t.handleOperation(async()=>await dt.post(t.fetch,`${t.url}/DeleteVectorBucket`,{vectorBucketName:e},{headers:t.headers})||{})}},Jf=class extends Qf{constructor(e,t={}){super(e,t.headers||{},t.fetch)}from(e){return new $f(this.url,this.headers,e,this.fetch)}async createBucket(e){var t=()=>super.createBucket,r=this;return t().call(r,e)}async getBucket(e){var t=()=>super.getBucket,r=this;return t().call(r,e)}async listBuckets(e={}){var t=()=>super.listBuckets,r=this;return t().call(r,e)}async deleteBucket(e){var t=()=>super.deleteBucket,r=this;return t().call(r,e)}},$f=class extends Wf{constructor(e,t,r,n){super(e,t,n);this.vectorBucketName=r}async createIndex(e){var t=()=>super.createIndex,r=this;return t().call(r,W(W({},e),{},{vectorBucketName:r.vectorBucketName}))}async listIndexes(e={}){var t=()=>super.listIndexes,r=this;return t().call(r,W(W({},e),{},{vectorBucketName:r.vectorBucketName}))}async getIndex(e){var t=()=>super.getIndex,r=this;return t().call(r,r.vectorBucketName,e)}async deleteIndex(e){var t=()=>super.deleteIndex,r=this;return t().call(r,r.vectorBucketName,e)}index(e){return new Zf(this.url,this.headers,this.vectorBucketName,e,this.fetch)}},Zf=class extends Yf{constructor(e,t,r,n,i){super(e,t,i);this.vectorBucketName=r,this.indexName=n}async putVectors(e){var t=()=>super.putVectors,r=this;return t().call(r,W(W({},e),{},{vectorBucketName:r.vectorBucketName,indexName:r.indexName}))}async getVectors(e){var t=()=>super.getVectors,r=this;return t().call(r,W(W({},e),{},{vectorBucketName:r.vectorBucketName,indexName:r.indexName}))}async listVectors(e={}){var t=()=>super.listVectors,r=this;return t().call(r,W(W({},e),{},{vectorBucketName:r.vectorBucketName,indexName:r.indexName}))}async queryVectors(e){var t=()=>super.queryVectors,r=this;return t().call(r,W(W({},e),{},{vectorBucketName:r.vectorBucketName,indexName:r.indexName}))}async deleteVectors(e){var t=()=>super.deleteVectors,r=this;return t().call(r,W(W({},e),{},{vectorBucketName:r.vectorBucketName,indexName:r.indexName}))}},oc=class extends Hf{constructor(e,t={},r,n){super(e,t,r,n)}from(e){return new Uf(this.url,this.headers,e,this.fetch)}get vectors(){return new Jf(this.url+"/vector",{headers:this.headers,fetch:this.fetch})}get analytics(){return new Kf(this.url+"/iceberg",this.headers,this.fetch)}};var Ii="2.103.0";var or=30000,xi=3,ki=xi*or,ac="http://localhost:9999",lc="supabase.auth.token";var cc={"X-Client-Info":`gotrue-js/${Ii}`};var Tn="X-Supabase-Api-Version",qs={"2024-01-01":{timestamp:Date.parse("2024-01-01T00:00:00.0Z"),name:"2024-01-01"}},uc=/^([a-z0-9_-]{4})*($|[a-z0-9_-]{3}$|[a-z0-9_-]{2}$)$/i,dc=600000;class ar extends Error{constructor(e,t,r){super(e);this.__isAuthError=!0,this.name="AuthError",this.status=t,this.code=r}}function F(e){return typeof e==="object"&&e!==null&&"__isAuthError"in e}class eo extends ar{constructor(e,t,r){super(e,t,r);this.name="AuthApiError",this.status=t,this.code=r}}function hc(e){return F(e)&&e.name==="AuthApiError"}class vt extends ar{constructor(e,t){super(e);this.name="AuthUnknownError",this.originalError=t}}class Bt extends ar{constructor(e,t,r,n){super(e,r,n);this.name=t,this.status=r}}class Ze extends Bt{constructor(){super("Auth session missing!","AuthSessionMissingError",400,void 0)}}function Bn(e){return F(e)&&e.name==="AuthSessionMissingError"}class Qt extends Bt{constructor(){super("Auth session or user missing","AuthInvalidTokenResponseError",500,void 0)}}class Lr extends Bt{constructor(e){super(e,"AuthInvalidCredentialsError",400,void 0)}}class Mr extends Bt{constructor(e,t=null){super(e,"AuthImplicitGrantRedirectError",500,void 0);this.details=null,this.details=t}toJSON(){return{name:this.name,message:this.message,status:this.status,details:this.details}}}function Ac(e){return F(e)&&e.name==="AuthImplicitGrantRedirectError"}class Ri extends Bt{constructor(e,t=null){super(e,"AuthPKCEGrantCodeExchangeError",500,void 0);this.details=null,this.details=t}toJSON(){return{name:this.name,message:this.message,status:this.status,details:this.details}}}class to extends Bt{constructor(){super("PKCE code verifier not found in storage. This can happen if the auth flow was initiated in a different browser or device, or if the storage was cleared. For SSR frameworks (Next.js, SvelteKit, etc.), use @supabase/ssr on both the server and client to store the code verifier in cookies.","AuthPKCECodeVerifierMissingError",400,"pkce_code_verifier_not_found")}}class On extends Bt{constructor(e,t){super(e,"AuthRetryableFetchError",t,void 0)}}function Ti(e){return F(e)&&e.name==="AuthRetryableFetchError"}class Bi extends Bt{constructor(e,t,r){super(e,"AuthWeakPasswordError",t,"weak_password");this.reasons=r}}class Fr extends Bt{constructor(e){super(e,"AuthInvalidJwtError",400,"invalid_jwt")}}var Oi="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".split(""),fc=`
38
+ \r=`.split(""),Xf=(()=>{let e=Array(128);for(let t=0;t<e.length;t+=1)e[t]=-1;for(let t=0;t<fc.length;t+=1)e[fc[t].charCodeAt(0)]=-2;for(let t=0;t<Oi.length;t+=1)e[Oi[t].charCodeAt(0)]=t;return e})();function gc(e,t,r){if(e!==null){t.queue=t.queue<<8|e,t.queuedBits+=8;while(t.queuedBits>=6){let n=t.queue>>t.queuedBits-6&63;r(Oi[n]),t.queuedBits-=6}}else if(t.queuedBits>0){t.queue=t.queue<<6-t.queuedBits,t.queuedBits=6;while(t.queuedBits>=6){let n=t.queue>>t.queuedBits-6&63;r(Oi[n]),t.queuedBits-=6}}}function mc(e,t,r){let n=Xf[e];if(n>-1){t.queue=t.queue<<6|n,t.queuedBits+=6;while(t.queuedBits>=8)r(t.queue>>t.queuedBits-8&255),t.queuedBits-=8}else if(n===-2)return;else throw Error(`Invalid Base64-URL character "${String.fromCharCode(e)}"`)}function ro(e){let t=[],r=(o)=>{t.push(String.fromCodePoint(o))},n={utf8seq:0,codepoint:0},i={queue:0,queuedBits:0},s=(o)=>{qf(o,n,r)};for(let o=0;o<e.length;o+=1)mc(e.charCodeAt(o),i,s);return t.join("")}function Vf(e,t){if(e<=127){t(e);return}else if(e<=2047){t(192|e>>6),t(128|e&63);return}else if(e<=65535){t(224|e>>12),t(128|e>>6&63),t(128|e&63);return}else if(e<=1114111){t(240|e>>18),t(128|e>>12&63),t(128|e>>6&63),t(128|e&63);return}throw Error(`Unrecognized Unicode codepoint: ${e.toString(16)}`)}function zf(e,t){for(let r=0;r<e.length;r+=1){let n=e.charCodeAt(r);if(n>55295&&n<=56319){let i=(n-55296)*1024&65535;n=(e.charCodeAt(r+1)-56320&65535|i)+65536,r+=1}Vf(n,t)}}function qf(e,t,r){if(t.utf8seq===0){if(e<=127){r(e);return}for(let n=1;n<6;n+=1)if((e>>7-n&1)===0){t.utf8seq=n;break}if(t.utf8seq===2)t.codepoint=e&31;else if(t.utf8seq===3)t.codepoint=e&15;else if(t.utf8seq===4)t.codepoint=e&7;else throw Error("Invalid UTF-8 sequence");t.utf8seq-=1}else if(t.utf8seq>0){if(e<=127)throw Error("Invalid UTF-8 sequence");if(t.codepoint=t.codepoint<<6|e&63,t.utf8seq-=1,t.utf8seq===0)r(t.codepoint)}}function Jt(e){let t=[],r={queue:0,queuedBits:0},n=(i)=>{t.push(i)};for(let i=0;i<e.length;i+=1)mc(e.charCodeAt(i),r,n);return new Uint8Array(t)}function pc(e){let t=[];return zf(e,(r)=>t.push(r)),new Uint8Array(t)}function Ut(e){let t=[],r={queue:0,queuedBits:0},n=(i)=>{t.push(i)};return e.forEach((i)=>gc(i,r,n)),gc(null,r,n),t.join("")}function bc(e){return Math.round(Date.now()/1000)+e}function yc(){return Symbol("auth-callback")}var je=()=>typeof window<"u"&&typeof document<"u",lr={tested:!1,writable:!1},Pi=()=>{if(!je())return!1;try{if(typeof globalThis.localStorage!=="object")return!1}catch(t){return!1}if(lr.tested)return lr.writable;let e=`lswt-${Math.random()}${Math.random()}`;try{globalThis.localStorage.setItem(e,e),globalThis.localStorage.removeItem(e),lr.tested=!0,lr.writable=!0}catch(t){lr.tested=!0,lr.writable=!1}return lr.writable};function wc(e){let t={},r=new URL(e);if(r.hash&&r.hash[0]==="#")try{new URLSearchParams(r.hash.substring(1)).forEach((i,s)=>{t[s]=i})}catch(n){}return r.searchParams.forEach((n,i)=>{t[i]=n}),t}var Ni=(e)=>{if(e)return(...t)=>e(...t);return(...t)=>fetch(...t)},_c=(e)=>typeof e==="object"&&e!==null&&("status"in e)&&("ok"in e)&&("json"in e)&&typeof e.json==="function",cr=async(e,t,r)=>{await e.setItem(t,JSON.stringify(r))},$t=async(e,t)=>{let r=await e.getItem(t);if(!r)return null;try{return JSON.parse(r)}catch(n){return r}},We=async(e,t)=>{await e.removeItem(t)};class Pn{constructor(){this.promise=new Pn.promiseConstructor((e,t)=>{this.resolve=e,this.reject=t})}}Pn.promiseConstructor=Promise;function Nn(e){let t=e.split(".");if(t.length!==3)throw new Fr("Invalid JWT structure");for(let n=0;n<t.length;n++)if(!uc.test(t[n]))throw new Fr("JWT not in base64url format");return{header:JSON.parse(ro(t[0])),payload:JSON.parse(ro(t[1])),signature:Jt(t[2]),raw:{header:t[0],payload:t[1]}}}async function vc(e){return await new Promise((t)=>{setTimeout(()=>t(null),e)})}function Cc(e,t){return new Promise((n,i)=>{(async()=>{for(let s=0;s<1/0;s++)try{let o=await e(s);if(!t(s,null,o)){n(o);return}}catch(o){if(!t(s,o)){i(o);return}}})()})}function eg(e){return("0"+e.toString(16)).substr(-2)}function tg(){let t=new Uint32Array(56);if(typeof crypto>"u"){let i="";for(let s=0;s<56;s++)i+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~".charAt(Math.floor(Math.random()*66));return i}return crypto.getRandomValues(t),Array.from(t,eg).join("")}async function rg(e){let r=new TextEncoder().encode(e),n=await crypto.subtle.digest("SHA-256",r),i=new Uint8Array(n);return Array.from(i).map((s)=>String.fromCharCode(s)).join("")}async function ng(e){if(!(typeof crypto<"u"&&typeof crypto.subtle<"u"&&typeof TextEncoder<"u"))return console.warn("WebCrypto API is not supported. Code challenge method will default to use plain instead of sha256."),e;let r=await rg(e);return btoa(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function ur(e,t,r=!1){let n=tg(),i=n;if(r)i+="/PASSWORD_RECOVERY";await cr(e,`${t}-code-verifier`,i);let s=await ng(n);return[s,n===s?"plain":"s256"]}var ig=/^2[0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$/i;function Ec(e){let t=e.headers.get(Tn);if(!t)return null;if(!t.match(ig))return null;try{return new Date(`${t}T00:00:00.0Z`)}catch(r){return null}}function Sc(e){if(!e)throw Error("Missing exp claim");let t=Math.floor(Date.now()/1000);if(e<=t)throw Error("JWT has expired")}function Ic(e){switch(e){case"RS256":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}};case"ES256":return{name:"ECDSA",namedCurve:"P-256",hash:{name:"SHA-256"}};default:throw Error("Invalid alg claim")}}var sg=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;function dr(e){if(!sg.test(e))throw Error("@supabase/auth-js: Expected parameter to be UUID but is not")}function Di(){return new Proxy({},{get:(t,r)=>{if(r==="__isUserNotAvailableProxy")return!0;if(typeof r==="symbol"){let n=r.toString();if(n==="Symbol(Symbol.toPrimitive)"||n==="Symbol(Symbol.toStringTag)"||n==="Symbol(util.inspect.custom)")return}throw Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Accessing the "${r}" property of the session object is not supported. Please use getUser() instead.`)},set:(t,r)=>{throw Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Setting the "${r}" property of the session object is not supported. Please use getUser() to fetch a user object you can manipulate.`)},deleteProperty:(t,r)=>{throw Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Deleting the "${r}" property of the session object is not supported. Please use getUser() to fetch a user object you can manipulate.`)}})}function xc(e,t){return new Proxy(e,{get:(r,n,i)=>{if(n==="__isInsecureUserWarningProxy")return!0;if(typeof n==="symbol"){let s=n.toString();if(s==="Symbol(Symbol.toPrimitive)"||s==="Symbol(Symbol.toStringTag)"||s==="Symbol(util.inspect.custom)"||s==="Symbol(nodejs.util.inspect.custom)")return Reflect.get(r,n,i)}if(!t.value&&typeof n==="string")console.warn("Using the user object as returned from supabase.auth.getSession() or from some supabase.auth.onAuthStateChange() events could be insecure! This value comes directly from the storage medium (usually cookies on the server) and may not be authentic. Use supabase.auth.getUser() instead which authenticates the data by contacting the Supabase Auth server."),t.value=!0;return Reflect.get(r,n,i)}})}function no(e){return JSON.parse(JSON.stringify(e))}var hr=(e)=>e.msg||e.message||e.error_description||e.error||JSON.stringify(e),og=[502,503,504];async function kc(e){var t;if(!_c(e))throw new On(hr(e),0);if(og.includes(e.status))throw new On(hr(e),e.status);let r;try{r=await e.json()}catch(s){throw new vt(hr(s),s)}let n=void 0,i=Ec(e);if(i&&i.getTime()>=qs["2024-01-01"].timestamp&&typeof r==="object"&&r&&typeof r.code==="string")n=r.code;else if(typeof r==="object"&&r&&typeof r.error_code==="string")n=r.error_code;if(!n){if(typeof r==="object"&&r&&typeof r.weak_password==="object"&&r.weak_password&&Array.isArray(r.weak_password.reasons)&&r.weak_password.reasons.length&&r.weak_password.reasons.reduce((s,o)=>s&&typeof o==="string",!0))throw new Bi(hr(r),e.status,r.weak_password.reasons)}else if(n==="weak_password")throw new Bi(hr(r),e.status,((t=r.weak_password)===null||t===void 0?void 0:t.reasons)||[]);else if(n==="session_not_found")throw new Ze;throw new eo(hr(r),e.status||500,n)}var ag=(e,t,r,n)=>{let i={method:e,headers:(t===null||t===void 0?void 0:t.headers)||{}};if(e==="GET")return i;return i.headers=Object.assign({"Content-Type":"application/json;charset=UTF-8"},t===null||t===void 0?void 0:t.headers),i.body=JSON.stringify(n),Object.assign(Object.assign({},i),r)};async function U(e,t,r,n){var i;let s=Object.assign({},n===null||n===void 0?void 0:n.headers);if(!s[Tn])s[Tn]=qs["2024-01-01"].name;if(n===null||n===void 0?void 0:n.jwt)s.Authorization=`Bearer ${n.jwt}`;let o=(i=n===null||n===void 0?void 0:n.query)!==null&&i!==void 0?i:{};if(n===null||n===void 0?void 0:n.redirectTo)o.redirect_to=n.redirectTo;let a=Object.keys(o).length?"?"+new URLSearchParams(o).toString():"",l=await lg(e,t,r+a,{headers:s,noResolveJson:n===null||n===void 0?void 0:n.noResolveJson},{},n===null||n===void 0?void 0:n.body);return(n===null||n===void 0?void 0:n.xform)?n===null||n===void 0?void 0:n.xform(l):{data:Object.assign({},l),error:null}}async function lg(e,t,r,n,i,s){let o=ag(t,n,i,s),a;try{a=await e(r,Object.assign({},o))}catch(l){throw console.error(l),new On(hr(l),0)}if(!a.ok)await kc(a);if(n===null||n===void 0?void 0:n.noResolveJson)return a;try{return await a.json()}catch(l){await kc(l)}}function bt(e){var t;let r=null;if(cg(e)){if(r=Object.assign({},e),!e.expires_at)r.expires_at=bc(e.expires_in)}let n=(t=e.user)!==null&&t!==void 0?t:e;return{data:{session:r,user:n},error:null}}function io(e){let t=bt(e);if(!t.error&&e.weak_password&&typeof e.weak_password==="object"&&Array.isArray(e.weak_password.reasons)&&e.weak_password.reasons.length&&e.weak_password.message&&typeof e.weak_password.message==="string"&&e.weak_password.reasons.reduce((r,n)=>r&&typeof n==="string",!0))t.data.weak_password=e.weak_password;return t}function Ot(e){var t;return{data:{user:(t=e.user)!==null&&t!==void 0?t:e},error:null}}function Rc(e){return{data:e,error:null}}function Tc(e){let{action_link:t,email_otp:r,hashed_token:n,redirect_to:i,verification_type:s}=e,o=nr(e,["action_link","email_otp","hashed_token","redirect_to","verification_type"]),a={action_link:t,email_otp:r,hashed_token:n,redirect_to:i,verification_type:s},l=Object.assign({},o);return{data:{properties:a,user:l},error:null}}function so(e){return e}function cg(e){return e.access_token&&e.refresh_token&&e.expires_in}var Li=["global","local","others"];class Gr{constructor({url:e="",headers:t={},fetch:r}){this.url=e,this.headers=t,this.fetch=Ni(r),this.mfa={listFactors:this._listFactors.bind(this),deleteFactor:this._deleteFactor.bind(this)},this.oauth={listClients:this._listOAuthClients.bind(this),createClient:this._createOAuthClient.bind(this),getClient:this._getOAuthClient.bind(this),updateClient:this._updateOAuthClient.bind(this),deleteClient:this._deleteOAuthClient.bind(this),regenerateClientSecret:this._regenerateOAuthClientSecret.bind(this)},this.customProviders={listProviders:this._listCustomProviders.bind(this),createProvider:this._createCustomProvider.bind(this),getProvider:this._getCustomProvider.bind(this),updateProvider:this._updateCustomProvider.bind(this),deleteProvider:this._deleteCustomProvider.bind(this)}}async signOut(e,t=Li[0]){if(Li.indexOf(t)<0)throw Error(`@supabase/auth-js: Parameter scope must be one of ${Li.join(", ")}`);try{return await U(this.fetch,"POST",`${this.url}/logout?scope=${t}`,{headers:this.headers,jwt:e,noResolveJson:!0}),{data:null,error:null}}catch(r){if(F(r))return{data:null,error:r};throw r}}async inviteUserByEmail(e,t={}){try{return await U(this.fetch,"POST",`${this.url}/invite`,{body:{email:e,data:t.data},headers:this.headers,redirectTo:t.redirectTo,xform:Ot})}catch(r){if(F(r))return{data:{user:null},error:r};throw r}}async generateLink(e){try{let{options:t}=e,r=nr(e,["options"]),n=Object.assign(Object.assign({},r),t);if("newEmail"in r)n.new_email=r===null||r===void 0?void 0:r.newEmail,delete n.newEmail;return await U(this.fetch,"POST",`${this.url}/admin/generate_link`,{body:n,headers:this.headers,xform:Tc,redirectTo:t===null||t===void 0?void 0:t.redirectTo})}catch(t){if(F(t))return{data:{properties:null,user:null},error:t};throw t}}async createUser(e){try{return await U(this.fetch,"POST",`${this.url}/admin/users`,{body:e,headers:this.headers,xform:Ot})}catch(t){if(F(t))return{data:{user:null},error:t};throw t}}async listUsers(e){var t,r,n,i,s,o,a;try{let l={nextPage:null,lastPage:0,total:0},c=await U(this.fetch,"GET",`${this.url}/admin/users`,{headers:this.headers,noResolveJson:!0,query:{page:(r=(t=e===null||e===void 0?void 0:e.page)===null||t===void 0?void 0:t.toString())!==null&&r!==void 0?r:"",per_page:(i=(n=e===null||e===void 0?void 0:e.perPage)===null||n===void 0?void 0:n.toString())!==null&&i!==void 0?i:""},xform:so});if(c.error)throw c.error;let u=await c.json(),d=(s=c.headers.get("x-total-count"))!==null&&s!==void 0?s:0,A=(a=(o=c.headers.get("link"))===null||o===void 0?void 0:o.split(","))!==null&&a!==void 0?a:[];if(A.length>0)A.forEach((m)=>{let g=parseInt(m.split(";")[0].split("=")[1].substring(0,1)),f=JSON.parse(m.split(";")[1].split("=")[1]);l[`${f}Page`]=g}),l.total=parseInt(d);return{data:Object.assign(Object.assign({},u),l),error:null}}catch(l){if(F(l))return{data:{users:[]},error:l};throw l}}async getUserById(e){dr(e);try{return await U(this.fetch,"GET",`${this.url}/admin/users/${e}`,{headers:this.headers,xform:Ot})}catch(t){if(F(t))return{data:{user:null},error:t};throw t}}async updateUserById(e,t){dr(e);try{return await U(this.fetch,"PUT",`${this.url}/admin/users/${e}`,{body:t,headers:this.headers,xform:Ot})}catch(r){if(F(r))return{data:{user:null},error:r};throw r}}async deleteUser(e,t=!1){dr(e);try{return await U(this.fetch,"DELETE",`${this.url}/admin/users/${e}`,{headers:this.headers,body:{should_soft_delete:t},xform:Ot})}catch(r){if(F(r))return{data:{user:null},error:r};throw r}}async _listFactors(e){dr(e.userId);try{let{data:t,error:r}=await U(this.fetch,"GET",`${this.url}/admin/users/${e.userId}/factors`,{headers:this.headers,xform:(n)=>({data:{factors:n},error:null})});return{data:t,error:r}}catch(t){if(F(t))return{data:null,error:t};throw t}}async _deleteFactor(e){dr(e.userId),dr(e.id);try{return{data:await U(this.fetch,"DELETE",`${this.url}/admin/users/${e.userId}/factors/${e.id}`,{headers:this.headers}),error:null}}catch(t){if(F(t))return{data:null,error:t};throw t}}async _listOAuthClients(e){var t,r,n,i,s,o,a;try{let l={nextPage:null,lastPage:0,total:0},c=await U(this.fetch,"GET",`${this.url}/admin/oauth/clients`,{headers:this.headers,noResolveJson:!0,query:{page:(r=(t=e===null||e===void 0?void 0:e.page)===null||t===void 0?void 0:t.toString())!==null&&r!==void 0?r:"",per_page:(i=(n=e===null||e===void 0?void 0:e.perPage)===null||n===void 0?void 0:n.toString())!==null&&i!==void 0?i:""},xform:so});if(c.error)throw c.error;let u=await c.json(),d=(s=c.headers.get("x-total-count"))!==null&&s!==void 0?s:0,A=(a=(o=c.headers.get("link"))===null||o===void 0?void 0:o.split(","))!==null&&a!==void 0?a:[];if(A.length>0)A.forEach((m)=>{let g=parseInt(m.split(";")[0].split("=")[1].substring(0,1)),f=JSON.parse(m.split(";")[1].split("=")[1]);l[`${f}Page`]=g}),l.total=parseInt(d);return{data:Object.assign(Object.assign({},u),l),error:null}}catch(l){if(F(l))return{data:{clients:[]},error:l};throw l}}async _createOAuthClient(e){try{return await U(this.fetch,"POST",`${this.url}/admin/oauth/clients`,{body:e,headers:this.headers,xform:(t)=>({data:t,error:null})})}catch(t){if(F(t))return{data:null,error:t};throw t}}async _getOAuthClient(e){try{return await U(this.fetch,"GET",`${this.url}/admin/oauth/clients/${e}`,{headers:this.headers,xform:(t)=>({data:t,error:null})})}catch(t){if(F(t))return{data:null,error:t};throw t}}async _updateOAuthClient(e,t){try{return await U(this.fetch,"PUT",`${this.url}/admin/oauth/clients/${e}`,{body:t,headers:this.headers,xform:(r)=>({data:r,error:null})})}catch(r){if(F(r))return{data:null,error:r};throw r}}async _deleteOAuthClient(e){try{return await U(this.fetch,"DELETE",`${this.url}/admin/oauth/clients/${e}`,{headers:this.headers,noResolveJson:!0}),{data:null,error:null}}catch(t){if(F(t))return{data:null,error:t};throw t}}async _regenerateOAuthClientSecret(e){try{return await U(this.fetch,"POST",`${this.url}/admin/oauth/clients/${e}/regenerate_secret`,{headers:this.headers,xform:(t)=>({data:t,error:null})})}catch(t){if(F(t))return{data:null,error:t};throw t}}async _listCustomProviders(e){try{let t={};if(e===null||e===void 0?void 0:e.type)t.type=e.type;return await U(this.fetch,"GET",`${this.url}/admin/custom-providers`,{headers:this.headers,query:t,xform:(r)=>{var n;return{data:{providers:(n=r===null||r===void 0?void 0:r.providers)!==null&&n!==void 0?n:[]},error:null}}})}catch(t){if(F(t))return{data:{providers:[]},error:t};throw t}}async _createCustomProvider(e){try{return await U(this.fetch,"POST",`${this.url}/admin/custom-providers`,{body:e,headers:this.headers,xform:(t)=>({data:t,error:null})})}catch(t){if(F(t))return{data:null,error:t};throw t}}async _getCustomProvider(e){try{return await U(this.fetch,"GET",`${this.url}/admin/custom-providers/${e}`,{headers:this.headers,xform:(t)=>({data:t,error:null})})}catch(t){if(F(t))return{data:null,error:t};throw t}}async _updateCustomProvider(e,t){try{return await U(this.fetch,"PUT",`${this.url}/admin/custom-providers/${e}`,{body:t,headers:this.headers,xform:(r)=>({data:r,error:null})})}catch(r){if(F(r))return{data:null,error:r};throw r}}async _deleteCustomProvider(e){try{return await U(this.fetch,"DELETE",`${this.url}/admin/custom-providers/${e}`,{headers:this.headers,noResolveJson:!0}),{data:null,error:null}}catch(t){if(F(t))return{data:null,error:t};throw t}}}function oo(e={}){return{getItem:(t)=>e[t]||null,setItem:(t,r)=>{e[t]=r},removeItem:(t)=>{delete e[t]}}}var Ct={debug:!!(globalThis&&Pi()&&globalThis.localStorage&&globalThis.localStorage.getItem("supabase.gotrue-js.locks.debug")==="true")};class Fi extends Error{constructor(e){super(e);this.isAcquireTimeout=!0}}class Mi extends Fi{}async function ao(e,t,r){if(Ct.debug)console.log("@supabase/gotrue-js: navigatorLock: acquire lock",e,t);let n=new globalThis.AbortController,i;if(t>0)i=setTimeout(()=>{if(n.abort(),Ct.debug)console.log("@supabase/gotrue-js: navigatorLock acquire timed out",e)},t);await Promise.resolve();try{return await globalThis.navigator.locks.request(e,t===0?{mode:"exclusive",ifAvailable:!0}:{mode:"exclusive",signal:n.signal},async(s)=>{if(s){if(clearTimeout(i),Ct.debug)console.log("@supabase/gotrue-js: navigatorLock: acquired",e,s.name);try{return await r()}finally{if(Ct.debug)console.log("@supabase/gotrue-js: navigatorLock: released",e,s.name)}}else if(t===0){if(Ct.debug)console.log("@supabase/gotrue-js: navigatorLock: not immediately available",e);throw new Mi(`Acquiring an exclusive Navigator LockManager lock "${e}" immediately failed`)}else{if(Ct.debug)try{let o=await globalThis.navigator.locks.query();console.log("@supabase/gotrue-js: Navigator LockManager state",JSON.stringify(o,null," "))}catch(o){console.warn("@supabase/gotrue-js: Error when querying Navigator LockManager state",o)}return console.warn("@supabase/gotrue-js: Navigator LockManager returned a null lock when using #request without ifAvailable set to true, it appears this browser is not following the LockManager spec https://developer.mozilla.org/en-US/docs/Web/API/LockManager/request"),clearTimeout(i),await r()}})}catch(s){if(t>0)clearTimeout(i);if((s===null||s===void 0?void 0:s.name)==="AbortError"&&t>0)if(n.signal.aborted){if(Ct.debug)console.log("@supabase/gotrue-js: navigatorLock: acquire timeout, recovering by stealing lock",e);return console.warn(`@supabase/gotrue-js: Lock "${e}" was not released within ${t}ms. This may indicate an orphaned lock from a component unmount (e.g., React Strict Mode). Forcefully acquiring the lock to recover.`),await Promise.resolve().then(()=>globalThis.navigator.locks.request(e,{mode:"exclusive",steal:!0},async(o)=>{if(o){if(Ct.debug)console.log("@supabase/gotrue-js: navigatorLock: recovered (stolen)",e,o.name);try{return await r()}finally{if(Ct.debug)console.log("@supabase/gotrue-js: navigatorLock: released (stolen)",e,o.name)}}else return console.warn("@supabase/gotrue-js: Navigator LockManager returned null lock even with steal: true"),await r()}))}else{if(Ct.debug)console.log("@supabase/gotrue-js: navigatorLock: lock was stolen by another request",e);throw new Mi(`Lock "${e}" was released because another request stole it`)}throw s}}function Bc(){if(typeof globalThis==="object")return;try{Object.defineProperty(Object.prototype,"__magic__",{get:function(){return this},configurable:!0}),__magic__.globalThis=__magic__,delete Object.prototype.__magic__}catch(e){if(typeof self<"u")self.globalThis=self}}function lo(e){if(!/^0x[a-fA-F0-9]{40}$/.test(e))throw Error(`@supabase/auth-js: Address "${e}" is invalid.`);return e.toLowerCase()}function Oc(e){return parseInt(e,16)}function Pc(e){let t=new TextEncoder().encode(e);return"0x"+Array.from(t,(n)=>n.toString(16).padStart(2,"0")).join("")}function Nc(e){var t;let{chainId:r,domain:n,expirationTime:i,issuedAt:s=new Date,nonce:o,notBefore:a,requestId:l,resources:c,scheme:u,uri:d,version:A}=e;{if(!Number.isInteger(r))throw Error(`@supabase/auth-js: Invalid SIWE message field "chainId". Chain ID must be a EIP-155 chain ID. Provided value: ${r}`);if(!n)throw Error('@supabase/auth-js: Invalid SIWE message field "domain". Domain must be provided.');if(o&&o.length<8)throw Error(`@supabase/auth-js: Invalid SIWE message field "nonce". Nonce must be at least 8 characters. Provided value: ${o}`);if(!d)throw Error('@supabase/auth-js: Invalid SIWE message field "uri". URI must be provided.');if(A!=="1")throw Error(`@supabase/auth-js: Invalid SIWE message field "version". Version must be '1'. Provided value: ${A}`);if((t=e.statement)===null||t===void 0?void 0:t.includes(`
39
39
  `))throw Error(`@supabase/auth-js: Invalid SIWE message field "statement". Statement must not include '\\n'. Provided value: ${e.statement}`)}let m=lo(e.address),g=u?`${u}://${n}`:n,f=e.statement?`${e.statement}
40
40
  `:"",p=`${g} wants you to sign in with your Ethereum account:
41
41
  ${m}
@@ -50,8 +50,8 @@ Not Before: ${a.toISOString()}`;if(l)v+=`
50
50
  Request ID: ${l}`;if(c){let y=`
51
51
  Resources:`;for(let S of c){if(!S||typeof S!=="string")throw Error(`@supabase/auth-js: Invalid SIWE message field "resources". Every resource must be a valid string. Provided value: ${S}`);y+=`
52
52
  - ${S}`}v+=y}return`${p}
53
- ${v}`}class Ie extends Error{constructor({message:e,code:t,cause:r,name:n}){var i;super(e,{cause:r});this.__isWebAuthnError=!0,this.name=(i=n!==null&&n!==void 0?n:r instanceof Error?r.name:void 0)!==null&&i!==void 0?i:"Unknown Error",this.code=t}}class Ur extends Ie{constructor(e,t){super({code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t,message:e});this.name="WebAuthnUnknownError",this.originalError=t}}function Dc({error:e,options:t}){var r,n,i;let{publicKey:s}=t;if(!s)throw Error("options was missing required publicKey property");if(e.name==="AbortError"){if(t.signal instanceof AbortSignal)return new Ie({message:"Registration ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else if(e.name==="ConstraintError"){if(((r=s.authenticatorSelection)===null||r===void 0?void 0:r.requireResidentKey)===!0)return new Ie({message:"Discoverable credentials were required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT",cause:e});else if(t.mediation==="conditional"&&((n=s.authenticatorSelection)===null||n===void 0?void 0:n.userVerification)==="required")return new Ie({message:"User verification was required during automatic registration but it could not be performed",code:"ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE",cause:e});else if(((i=s.authenticatorSelection)===null||i===void 0?void 0:i.userVerification)==="required")return new Ie({message:"User verification was required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT",cause:e})}else if(e.name==="InvalidStateError")return new Ie({message:"The authenticator was previously registered",code:"ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",cause:e});else if(e.name==="NotAllowedError")return new Ie({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});else if(e.name==="NotSupportedError"){if(s.pubKeyCredParams.filter((a)=>a.type==="public-key").length===0)return new Ie({message:'No entry in pubKeyCredParams was of type "public-key"',code:"ERROR_MALFORMED_PUBKEYCREDPARAMS",cause:e});return new Ie({message:"No available authenticator supported any of the specified pubKeyCredParams algorithms",code:"ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG",cause:e})}else if(e.name==="SecurityError"){let o=window.location.hostname;if(!co(o))return new Ie({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e});else if(s.rp.id!==o)return new Ie({message:`The RP ID "${s.rp.id}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else if(e.name==="TypeError"){if(s.user.id.byteLength<1||s.user.id.byteLength>64)return new Ie({message:"User ID was not between 1 and 64 characters",code:"ERROR_INVALID_USER_ID_LENGTH",cause:e})}else if(e.name==="UnknownError")return new Ie({message:"The authenticator was unable to process the specified options, or could not create a new credential",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:e});return new Ie({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e})}function Lc({error:e,options:t}){let{publicKey:r}=t;if(!r)throw Error("options was missing required publicKey property");if(e.name==="AbortError"){if(t.signal instanceof AbortSignal)return new Ie({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else if(e.name==="NotAllowedError")return new Ie({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});else if(e.name==="SecurityError"){let n=window.location.hostname;if(!co(n))return new Ie({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e});else if(r.rpId!==n)return new Ie({message:`The RP ID "${r.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else if(e.name==="UnknownError")return new Ie({message:"The authenticator was unable to process the specified options, or could not create a new assertion signature",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:e});return new Ie({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e})}class Fc{createNewAbortSignal(){if(this.controller){let t=Error("Cancelling existing WebAuthn API call for new one");t.name="AbortError",this.controller.abort(t)}let e=new AbortController;return this.controller=e,e.signal}cancelCeremony(){if(this.controller){let e=Error("Manually cancelling existing WebAuthn API call");e.name="AbortError",this.controller.abort(e),this.controller=void 0}}}var ug=new Fc;function Gc(e){if(!e)throw Error("Credential creation options are required");if(typeof PublicKeyCredential<"u"&&"parseCreationOptionsFromJSON"in PublicKeyCredential&&typeof PublicKeyCredential.parseCreationOptionsFromJSON==="function")return PublicKeyCredential.parseCreationOptionsFromJSON(e);let{challenge:t,user:r,excludeCredentials:n}=e,i=nr(e,["challenge","user","excludeCredentials"]),s=Jt(t).buffer,o=Object.assign(Object.assign({},r),{id:Jt(r.id).buffer}),a=Object.assign(Object.assign({},i),{challenge:s,user:o});if(n&&n.length>0){a.excludeCredentials=Array(n.length);for(let l=0;l<n.length;l++){let c=n[l];a.excludeCredentials[l]=Object.assign(Object.assign({},c),{id:Jt(c.id).buffer,type:c.type||"public-key",transports:c.transports})}}return a}function Uc(e){if(!e)throw Error("Credential request options are required");if(typeof PublicKeyCredential<"u"&&"parseRequestOptionsFromJSON"in PublicKeyCredential&&typeof PublicKeyCredential.parseRequestOptionsFromJSON==="function")return PublicKeyCredential.parseRequestOptionsFromJSON(e);let{challenge:t,allowCredentials:r}=e,n=nr(e,["challenge","allowCredentials"]),i=Jt(t).buffer,s=Object.assign(Object.assign({},n),{challenge:i});if(r&&r.length>0){s.allowCredentials=Array(r.length);for(let o=0;o<r.length;o++){let a=r[o];s.allowCredentials[o]=Object.assign(Object.assign({},a),{id:Jt(a.id).buffer,type:a.type||"public-key",transports:a.transports})}}return s}function jc(e){var t;if("toJSON"in e&&typeof e.toJSON==="function")return e.toJSON();let r=e;return{id:e.id,rawId:e.id,response:{attestationObject:Ut(new Uint8Array(e.response.attestationObject)),clientDataJSON:Ut(new Uint8Array(e.response.clientDataJSON))},type:"public-key",clientExtensionResults:e.getClientExtensionResults(),authenticatorAttachment:(t=r.authenticatorAttachment)!==null&&t!==void 0?t:void 0}}function Hc(e){var t;if("toJSON"in e&&typeof e.toJSON==="function")return e.toJSON();let r=e,n=e.getClientExtensionResults(),i=e.response;return{id:e.id,rawId:e.id,response:{authenticatorData:Ut(new Uint8Array(i.authenticatorData)),clientDataJSON:Ut(new Uint8Array(i.clientDataJSON)),signature:Ut(new Uint8Array(i.signature)),userHandle:i.userHandle?Ut(new Uint8Array(i.userHandle)):void 0},type:"public-key",clientExtensionResults:n,authenticatorAttachment:(t=r.authenticatorAttachment)!==null&&t!==void 0?t:void 0}}function co(e){return e==="localhost"||/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(e)}function Mc(){var e,t;return!!(Ue()&&("PublicKeyCredential"in window)&&window.PublicKeyCredential&&("credentials"in navigator)&&typeof((e=navigator===null||navigator===void 0?void 0:navigator.credentials)===null||e===void 0?void 0:e.create)==="function"&&typeof((t=navigator===null||navigator===void 0?void 0:navigator.credentials)===null||t===void 0?void 0:t.get)==="function")}async function dg(e){try{let t=await navigator.credentials.create(e);if(!t)return{data:null,error:new Ur("Empty credential response",t)};if(!(t instanceof PublicKeyCredential))return{data:null,error:new Ur("Browser returned unexpected credential type",t)};return{data:t,error:null}}catch(t){return{data:null,error:Dc({error:t,options:e})}}}async function hg(e){try{let t=await navigator.credentials.get(e);if(!t)return{data:null,error:new Ur("Empty credential response",t)};if(!(t instanceof PublicKeyCredential))return{data:null,error:new Ur("Browser returned unexpected credential type",t)};return{data:t,error:null}}catch(t){return{data:null,error:Lc({error:t,options:e})}}}var Ag={hints:["security-key"],authenticatorSelection:{authenticatorAttachment:"cross-platform",requireResidentKey:!1,userVerification:"preferred",residentKey:"discouraged"},attestation:"direct"},fg={userVerification:"preferred",hints:["security-key"],attestation:"direct"};function Gi(...e){let t=(i)=>i!==null&&typeof i==="object"&&!Array.isArray(i),r=(i)=>i instanceof ArrayBuffer||ArrayBuffer.isView(i),n={};for(let i of e){if(!i)continue;for(let s in i){let o=i[s];if(o===void 0)continue;if(Array.isArray(o))n[s]=o;else if(r(o))n[s]=o;else if(t(o)){let a=n[s];if(t(a))n[s]=Gi(a,o);else n[s]=Gi(o)}else n[s]=o}}return n}function gg(e,t){return Gi(Ag,e,t||{})}function mg(e,t){return Gi(fg,e,t||{})}class uo{constructor(e){this.client=e,this.enroll=this._enroll.bind(this),this.challenge=this._challenge.bind(this),this.verify=this._verify.bind(this),this.authenticate=this._authenticate.bind(this),this.register=this._register.bind(this)}async _enroll(e){return this.client.mfa.enroll(Object.assign(Object.assign({},e),{factorType:"webauthn"}))}async _challenge({factorId:e,webauthn:t,friendlyName:r,signal:n},i){var s;try{let{data:o,error:a}=await this.client.mfa.challenge({factorId:e,webauthn:t});if(!o)return{data:null,error:a};let l=n!==null&&n!==void 0?n:ug.createNewAbortSignal();if(o.webauthn.type==="create"){let{user:c}=o.webauthn.credential_options.publicKey;if(!c.name){let u=r;if(!u){let A=(await this.client.getUser()).data.user,m=((s=A===null||A===void 0?void 0:A.user_metadata)===null||s===void 0?void 0:s.name)||(A===null||A===void 0?void 0:A.email)||(A===null||A===void 0?void 0:A.id)||"User";c.name=`${c.id}:${m}`}else c.name=`${c.id}:${u}`}if(!c.displayName)c.displayName=c.name}switch(o.webauthn.type){case"create":{let c=gg(o.webauthn.credential_options.publicKey,i===null||i===void 0?void 0:i.create),{data:u,error:d}=await dg({publicKey:c,signal:l});if(u)return{data:{factorId:e,challengeId:o.id,webauthn:{type:o.webauthn.type,credential_response:u}},error:null};return{data:null,error:d}}case"request":{let c=mg(o.webauthn.credential_options.publicKey,i===null||i===void 0?void 0:i.request),{data:u,error:d}=await hg(Object.assign(Object.assign({},o.webauthn.credential_options),{publicKey:c,signal:l}));if(u)return{data:{factorId:e,challengeId:o.id,webauthn:{type:o.webauthn.type,credential_response:u}},error:null};return{data:null,error:d}}}}catch(o){if(F(o))return{data:null,error:o};return{data:null,error:new vt("Unexpected error in challenge",o)}}}async _verify({challengeId:e,factorId:t,webauthn:r}){return this.client.mfa.verify({factorId:t,challengeId:e,webauthn:r})}async _authenticate({factorId:e,webauthn:{rpId:t=typeof window<"u"?window.location.hostname:void 0,rpOrigins:r=typeof window<"u"?[window.location.origin]:void 0,signal:n}={}},i){if(!t)return{data:null,error:new ar("rpId is required for WebAuthn authentication")};try{if(!Mc())return{data:null,error:new vt("Browser does not support WebAuthn",null)};let{data:s,error:o}=await this.challenge({factorId:e,webauthn:{rpId:t,rpOrigins:r},signal:n},{request:i});if(!s)return{data:null,error:o};let{webauthn:a}=s;return this._verify({factorId:e,challengeId:s.challengeId,webauthn:{type:a.type,rpId:t,rpOrigins:r,credential_response:a.credential_response}})}catch(s){if(F(s))return{data:null,error:s};return{data:null,error:new vt("Unexpected error in authenticate",s)}}}async _register({friendlyName:e,webauthn:{rpId:t=typeof window<"u"?window.location.hostname:void 0,rpOrigins:r=typeof window<"u"?[window.location.origin]:void 0,signal:n}={}},i){if(!t)return{data:null,error:new ar("rpId is required for WebAuthn registration")};try{if(!Mc())return{data:null,error:new vt("Browser does not support WebAuthn",null)};let{data:s,error:o}=await this._enroll({friendlyName:e});if(!s)return await this.client.mfa.listFactors().then((c)=>{var u;return(u=c.data)===null||u===void 0?void 0:u.all.find((d)=>d.factor_type==="webauthn"&&d.friendly_name===e&&d.status!=="unverified")}).then((c)=>c?this.client.mfa.unenroll({factorId:c===null||c===void 0?void 0:c.id}):void 0),{data:null,error:o};let{data:a,error:l}=await this._challenge({factorId:s.id,friendlyName:s.friendly_name,webauthn:{rpId:t,rpOrigins:r},signal:n},{create:i});if(!a)return{data:null,error:l};return this._verify({factorId:s.id,challengeId:a.challengeId,webauthn:{rpId:t,rpOrigins:r,type:a.webauthn.type,credential_response:a.webauthn.credential_response}})}catch(s){if(F(s))return{data:null,error:s};return{data:null,error:new vt("Unexpected error in register",s)}}}}Bc();var pg={url:ac,storageKey:lc,autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,headers:cc,flowType:"implicit",debug:!1,hasCustomAuthorizationHeader:!1,throwOnError:!1,lockAcquireTimeout:5000,skipAutoInitialize:!1};async function Kc(e,t,r){return await r()}var jr={};class Dn{get jwks(){var e,t;return(t=(e=jr[this.storageKey])===null||e===void 0?void 0:e.jwks)!==null&&t!==void 0?t:{keys:[]}}set jwks(e){jr[this.storageKey]=Object.assign(Object.assign({},jr[this.storageKey]),{jwks:e})}get jwks_cached_at(){var e,t;return(t=(e=jr[this.storageKey])===null||e===void 0?void 0:e.cachedAt)!==null&&t!==void 0?t:Number.MIN_SAFE_INTEGER}set jwks_cached_at(e){jr[this.storageKey]=Object.assign(Object.assign({},jr[this.storageKey]),{cachedAt:e})}constructor(e){var t,r,n;this.userStorage=null,this.memoryStorage=null,this.stateChangeEmitters=new Map,this.autoRefreshTicker=null,this.autoRefreshTickTimeout=null,this.visibilityChangedCallback=null,this.refreshingDeferred=null,this.initializePromise=null,this.detectSessionInUrl=!0,this.hasCustomAuthorizationHeader=!1,this.suppressGetSessionWarning=!1,this.lockAcquired=!1,this.pendingInLock=[],this.broadcastChannel=null,this.logger=console.log;let i=Object.assign(Object.assign({},pg),e);if(this.storageKey=i.storageKey,this.instanceID=(t=Dn.nextInstanceID[this.storageKey])!==null&&t!==void 0?t:0,Dn.nextInstanceID[this.storageKey]=this.instanceID+1,this.logDebugMessages=!!i.debug,typeof i.debug==="function")this.logger=i.debug;if(this.instanceID>0&&Ue()){let s=`${this._logPrefix()} Multiple GoTrueClient instances detected in the same browser context. It is not an error, but this should be avoided as it may produce undefined behavior when used concurrently under the same storage key.`;if(console.warn(s),this.logDebugMessages)console.trace(s)}if(this.persistSession=i.persistSession,this.autoRefreshToken=i.autoRefreshToken,this.admin=new Gr({url:i.url,headers:i.headers,fetch:i.fetch}),this.url=i.url,this.headers=i.headers,this.fetch=Ni(i.fetch),this.lock=i.lock||Kc,this.detectSessionInUrl=i.detectSessionInUrl,this.flowType=i.flowType,this.hasCustomAuthorizationHeader=i.hasCustomAuthorizationHeader,this.throwOnError=i.throwOnError,this.lockAcquireTimeout=i.lockAcquireTimeout,i.lock)this.lock=i.lock;else if(this.persistSession&&Ue()&&((r=globalThis===null||globalThis===void 0?void 0:globalThis.navigator)===null||r===void 0?void 0:r.locks))this.lock=ao;else this.lock=Kc;if(!this.jwks)this.jwks={keys:[]},this.jwks_cached_at=Number.MIN_SAFE_INTEGER;if(this.mfa={verify:this._verify.bind(this),enroll:this._enroll.bind(this),unenroll:this._unenroll.bind(this),challenge:this._challenge.bind(this),listFactors:this._listFactors.bind(this),challengeAndVerify:this._challengeAndVerify.bind(this),getAuthenticatorAssuranceLevel:this._getAuthenticatorAssuranceLevel.bind(this),webauthn:new uo(this)},this.oauth={getAuthorizationDetails:this._getAuthorizationDetails.bind(this),approveAuthorization:this._approveAuthorization.bind(this),denyAuthorization:this._denyAuthorization.bind(this),listGrants:this._listOAuthGrants.bind(this),revokeGrant:this._revokeOAuthGrant.bind(this)},this.persistSession){if(i.storage)this.storage=i.storage;else if(Pi())this.storage=globalThis.localStorage;else this.memoryStorage={},this.storage=oo(this.memoryStorage);if(i.userStorage)this.userStorage=i.userStorage}else this.memoryStorage={},this.storage=oo(this.memoryStorage);if(Ue()&&globalThis.BroadcastChannel&&this.persistSession&&this.storageKey){try{this.broadcastChannel=new globalThis.BroadcastChannel(this.storageKey)}catch(s){console.error("Failed to create a new BroadcastChannel, multi-tab state changes will not be available",s)}(n=this.broadcastChannel)===null||n===void 0||n.addEventListener("message",async(s)=>{this._debug("received broadcast notification from other tab or client",s);try{await this._notifyAllSubscribers(s.data.event,s.data.session,!1)}catch(o){this._debug("#broadcastChannel","error",o)}})}if(!i.skipAutoInitialize)this.initialize().catch((s)=>{this._debug("#initialize()","error",s)})}isThrowOnErrorEnabled(){return this.throwOnError}_returnResult(e){if(this.throwOnError&&e&&e.error)throw e.error;return e}_logPrefix(){return`GoTrueClient@${this.storageKey}:${this.instanceID} (${Ii}) ${new Date().toISOString()}`}_debug(...e){if(this.logDebugMessages)this.logger(this._logPrefix(),...e);return this}async initialize(){if(this.initializePromise)return await this.initializePromise;return this.initializePromise=(async()=>await this._acquireLock(this.lockAcquireTimeout,async()=>await this._initialize()))(),await this.initializePromise}async _initialize(){var e;try{let t={},r="none";if(Ue()){if(t=wc(window.location.href),this._isImplicitGrantCallback(t))r="implicit";else if(await this._isPKCECallback(t))r="pkce"}if(Ue()&&this.detectSessionInUrl&&r!=="none"){let{data:n,error:i}=await this._getSessionFromURL(t,r);if(i){if(this._debug("#_initialize()","error detecting session from URL",i),Ac(i)){let a=(e=i.details)===null||e===void 0?void 0:e.code;if(a==="identity_already_exists"||a==="identity_not_found"||a==="single_identity_not_deletable")return{error:i}}return{error:i}}let{session:s,redirectType:o}=n;return this._debug("#_initialize()","detected session in URL",s,"redirect type",o),await this._saveSession(s),setTimeout(async()=>{if(o==="recovery")await this._notifyAllSubscribers("PASSWORD_RECOVERY",s);else await this._notifyAllSubscribers("SIGNED_IN",s)},0),{error:null}}return await this._recoverAndRefresh(),{error:null}}catch(t){if(F(t))return this._returnResult({error:t});return this._returnResult({error:new vt("Unexpected error during initialization",t)})}finally{await this._handleVisibilityChange(),this._debug("#_initialize()","end")}}async signInAnonymously(e){var t,r,n;try{let i=await U(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,body:{data:(r=(t=e===null||e===void 0?void 0:e.options)===null||t===void 0?void 0:t.data)!==null&&r!==void 0?r:{},gotrue_meta_security:{captcha_token:(n=e===null||e===void 0?void 0:e.options)===null||n===void 0?void 0:n.captchaToken}},xform:bt}),{data:s,error:o}=i;if(o||!s)return this._returnResult({data:{user:null,session:null},error:o});let{session:a,user:l}=s;if(s.session)await this._saveSession(s.session),await this._notifyAllSubscribers("SIGNED_IN",a);return this._returnResult({data:{user:l,session:a},error:null})}catch(i){if(F(i))return this._returnResult({data:{user:null,session:null},error:i});throw i}}async signUp(e){var t,r,n;try{let i;if("email"in e){let{email:c,password:u,options:d}=e,A=null,m=null;if(this.flowType==="pkce")[A,m]=await ur(this.storage,this.storageKey);i=await U(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,redirectTo:d===null||d===void 0?void 0:d.emailRedirectTo,body:{email:c,password:u,data:(t=d===null||d===void 0?void 0:d.data)!==null&&t!==void 0?t:{},gotrue_meta_security:{captcha_token:d===null||d===void 0?void 0:d.captchaToken},code_challenge:A,code_challenge_method:m},xform:bt})}else if("phone"in e){let{phone:c,password:u,options:d}=e;i=await U(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,body:{phone:c,password:u,data:(r=d===null||d===void 0?void 0:d.data)!==null&&r!==void 0?r:{},channel:(n=d===null||d===void 0?void 0:d.channel)!==null&&n!==void 0?n:"sms",gotrue_meta_security:{captcha_token:d===null||d===void 0?void 0:d.captchaToken}},xform:bt})}else throw new Lr("You must provide either an email or phone number and a password");let{data:s,error:o}=i;if(o||!s)return await Ke(this.storage,`${this.storageKey}-code-verifier`),this._returnResult({data:{user:null,session:null},error:o});let{session:a,user:l}=s;if(s.session)await this._saveSession(s.session),await this._notifyAllSubscribers("SIGNED_IN",a);return this._returnResult({data:{user:l,session:a},error:null})}catch(i){if(await Ke(this.storage,`${this.storageKey}-code-verifier`),F(i))return this._returnResult({data:{user:null,session:null},error:i});throw i}}async signInWithPassword(e){try{let t;if("email"in e){let{email:i,password:s,options:o}=e;t=await U(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{email:i,password:s,gotrue_meta_security:{captcha_token:o===null||o===void 0?void 0:o.captchaToken}},xform:io})}else if("phone"in e){let{phone:i,password:s,options:o}=e;t=await U(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{phone:i,password:s,gotrue_meta_security:{captcha_token:o===null||o===void 0?void 0:o.captchaToken}},xform:io})}else throw new Lr("You must provide either an email or phone number and a password");let{data:r,error:n}=t;if(n)return this._returnResult({data:{user:null,session:null},error:n});else if(!r||!r.session||!r.user){let i=new Qt;return this._returnResult({data:{user:null,session:null},error:i})}if(r.session)await this._saveSession(r.session),await this._notifyAllSubscribers("SIGNED_IN",r.session);return this._returnResult({data:Object.assign({user:r.user,session:r.session},r.weak_password?{weakPassword:r.weak_password}:null),error:n})}catch(t){if(F(t))return this._returnResult({data:{user:null,session:null},error:t});throw t}}async signInWithOAuth(e){var t,r,n,i;return await this._handleProviderSignIn(e.provider,{redirectTo:(t=e.options)===null||t===void 0?void 0:t.redirectTo,scopes:(r=e.options)===null||r===void 0?void 0:r.scopes,queryParams:(n=e.options)===null||n===void 0?void 0:n.queryParams,skipBrowserRedirect:(i=e.options)===null||i===void 0?void 0:i.skipBrowserRedirect})}async exchangeCodeForSession(e){return await this.initializePromise,this._acquireLock(this.lockAcquireTimeout,async()=>this._exchangeCodeForSession(e))}async signInWithWeb3(e){let{chain:t}=e;switch(t){case"ethereum":return await this.signInWithEthereum(e);case"solana":return await this.signInWithSolana(e);default:throw Error(`@supabase/auth-js: Unsupported chain "${t}"`)}}async signInWithEthereum(e){var t,r,n,i,s,o,a,l,c,u,d;let A,m;if("message"in e)A=e.message,m=e.signature;else{let{chain:g,wallet:f,statement:p,options:v}=e,y;if(!Ue()){if(typeof f!=="object"||!(v===null||v===void 0?void 0:v.url))throw Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");y=f}else if(typeof f==="object")y=f;else{let P=window;if("ethereum"in P&&typeof P.ethereum==="object"&&"request"in P.ethereum&&typeof P.ethereum.request==="function")y=P.ethereum;else throw Error("@supabase/auth-js: No compatible Ethereum wallet interface on the window object (window.ethereum) detected. Make sure the user already has a wallet installed and connected for this app. Prefer passing the wallet interface object directly to signInWithWeb3({ chain: 'ethereum', wallet: resolvedUserWallet }) instead.")}let S=new URL((t=v===null||v===void 0?void 0:v.url)!==null&&t!==void 0?t:window.location.href),_=await y.request({method:"eth_requestAccounts"}).then((P)=>P).catch(()=>{throw Error("@supabase/auth-js: Wallet method eth_requestAccounts is missing or invalid")});if(!_||_.length===0)throw Error("@supabase/auth-js: No accounts available. Please ensure the wallet is connected.");let b=lo(_[0]),w=(r=v===null||v===void 0?void 0:v.signInWithEthereum)===null||r===void 0?void 0:r.chainId;if(!w){let P=await y.request({method:"eth_chainId"});w=Oc(P)}let C={domain:S.host,address:b,statement:p,uri:S.href,version:"1",chainId:w,nonce:(n=v===null||v===void 0?void 0:v.signInWithEthereum)===null||n===void 0?void 0:n.nonce,issuedAt:(s=(i=v===null||v===void 0?void 0:v.signInWithEthereum)===null||i===void 0?void 0:i.issuedAt)!==null&&s!==void 0?s:new Date,expirationTime:(o=v===null||v===void 0?void 0:v.signInWithEthereum)===null||o===void 0?void 0:o.expirationTime,notBefore:(a=v===null||v===void 0?void 0:v.signInWithEthereum)===null||a===void 0?void 0:a.notBefore,requestId:(l=v===null||v===void 0?void 0:v.signInWithEthereum)===null||l===void 0?void 0:l.requestId,resources:(c=v===null||v===void 0?void 0:v.signInWithEthereum)===null||c===void 0?void 0:c.resources};A=Nc(C),m=await y.request({method:"personal_sign",params:[Pc(A),b]})}try{let{data:g,error:f}=await U(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"ethereum",message:A,signature:m},((u=e.options)===null||u===void 0?void 0:u.captchaToken)?{gotrue_meta_security:{captcha_token:(d=e.options)===null||d===void 0?void 0:d.captchaToken}}:null),xform:bt});if(f)throw f;if(!g||!g.session||!g.user){let p=new Qt;return this._returnResult({data:{user:null,session:null},error:p})}if(g.session)await this._saveSession(g.session),await this._notifyAllSubscribers("SIGNED_IN",g.session);return this._returnResult({data:Object.assign({},g),error:f})}catch(g){if(F(g))return this._returnResult({data:{user:null,session:null},error:g});throw g}}async signInWithSolana(e){var t,r,n,i,s,o,a,l,c,u,d,A;let m,g;if("message"in e)m=e.message,g=e.signature;else{let{chain:f,wallet:p,statement:v,options:y}=e,S;if(!Ue()){if(typeof p!=="object"||!(y===null||y===void 0?void 0:y.url))throw Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");S=p}else if(typeof p==="object")S=p;else{let b=window;if("solana"in b&&typeof b.solana==="object"&&(("signIn"in b.solana)&&typeof b.solana.signIn==="function"||("signMessage"in b.solana)&&typeof b.solana.signMessage==="function"))S=b.solana;else throw Error("@supabase/auth-js: No compatible Solana wallet interface on the window object (window.solana) detected. Make sure the user already has a wallet installed and connected for this app. Prefer passing the wallet interface object directly to signInWithWeb3({ chain: 'solana', wallet: resolvedUserWallet }) instead.")}let _=new URL((t=y===null||y===void 0?void 0:y.url)!==null&&t!==void 0?t:window.location.href);if("signIn"in S&&S.signIn){let b=await S.signIn(Object.assign(Object.assign(Object.assign({issuedAt:new Date().toISOString()},y===null||y===void 0?void 0:y.signInWithSolana),{version:"1",domain:_.host,uri:_.href}),v?{statement:v}:null)),w;if(Array.isArray(b)&&b[0]&&typeof b[0]==="object")w=b[0];else if(b&&typeof b==="object"&&"signedMessage"in b&&"signature"in b)w=b;else throw Error("@supabase/auth-js: Wallet method signIn() returned unrecognized value");if("signedMessage"in w&&"signature"in w&&(typeof w.signedMessage==="string"||w.signedMessage instanceof Uint8Array)&&w.signature instanceof Uint8Array)m=typeof w.signedMessage==="string"?w.signedMessage:new TextDecoder().decode(w.signedMessage),g=w.signature;else throw Error("@supabase/auth-js: Wallet method signIn() API returned object without signedMessage and signature fields")}else{if(!("signMessage"in S)||typeof S.signMessage!=="function"||!("publicKey"in S)||typeof S!=="object"||!S.publicKey||!("toBase58"in S.publicKey)||typeof S.publicKey.toBase58!=="function")throw Error("@supabase/auth-js: Wallet does not have a compatible signMessage() and publicKey.toBase58() API");m=[`${_.host} wants you to sign in with your Solana account:`,S.publicKey.toBase58(),...v?["",v,""]:[""],"Version: 1",`URI: ${_.href}`,`Issued At: ${(n=(r=y===null||y===void 0?void 0:y.signInWithSolana)===null||r===void 0?void 0:r.issuedAt)!==null&&n!==void 0?n:new Date().toISOString()}`,...((i=y===null||y===void 0?void 0:y.signInWithSolana)===null||i===void 0?void 0:i.notBefore)?[`Not Before: ${y.signInWithSolana.notBefore}`]:[],...((s=y===null||y===void 0?void 0:y.signInWithSolana)===null||s===void 0?void 0:s.expirationTime)?[`Expiration Time: ${y.signInWithSolana.expirationTime}`]:[],...((o=y===null||y===void 0?void 0:y.signInWithSolana)===null||o===void 0?void 0:o.chainId)?[`Chain ID: ${y.signInWithSolana.chainId}`]:[],...((a=y===null||y===void 0?void 0:y.signInWithSolana)===null||a===void 0?void 0:a.nonce)?[`Nonce: ${y.signInWithSolana.nonce}`]:[],...((l=y===null||y===void 0?void 0:y.signInWithSolana)===null||l===void 0?void 0:l.requestId)?[`Request ID: ${y.signInWithSolana.requestId}`]:[],...((u=(c=y===null||y===void 0?void 0:y.signInWithSolana)===null||c===void 0?void 0:c.resources)===null||u===void 0?void 0:u.length)?["Resources",...y.signInWithSolana.resources.map((w)=>`- ${w}`)]:[]].join(`
54
- `);let b=await S.signMessage(new TextEncoder().encode(m),"utf8");if(!b||!(b instanceof Uint8Array))throw Error("@supabase/auth-js: Wallet signMessage() API returned an recognized value");g=b}}try{let{data:f,error:p}=await U(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"solana",message:m,signature:Ut(g)},((d=e.options)===null||d===void 0?void 0:d.captchaToken)?{gotrue_meta_security:{captcha_token:(A=e.options)===null||A===void 0?void 0:A.captchaToken}}:null),xform:bt});if(p)throw p;if(!f||!f.session||!f.user){let v=new Qt;return this._returnResult({data:{user:null,session:null},error:v})}if(f.session)await this._saveSession(f.session),await this._notifyAllSubscribers("SIGNED_IN",f.session);return this._returnResult({data:Object.assign({},f),error:p})}catch(f){if(F(f))return this._returnResult({data:{user:null,session:null},error:f});throw f}}async _exchangeCodeForSession(e){let t=await $t(this.storage,`${this.storageKey}-code-verifier`),[r,n]=(t!==null&&t!==void 0?t:"").split("/");try{if(!r&&this.flowType==="pkce")throw new to;let{data:i,error:s}=await U(this.fetch,"POST",`${this.url}/token?grant_type=pkce`,{headers:this.headers,body:{auth_code:e,code_verifier:r},xform:bt});if(await Ke(this.storage,`${this.storageKey}-code-verifier`),s)throw s;if(!i||!i.session||!i.user){let o=new Qt;return this._returnResult({data:{user:null,session:null,redirectType:null},error:o})}if(i.session)await this._saveSession(i.session),await this._notifyAllSubscribers("SIGNED_IN",i.session);return this._returnResult({data:Object.assign(Object.assign({},i),{redirectType:n!==null&&n!==void 0?n:null}),error:s})}catch(i){if(await Ke(this.storage,`${this.storageKey}-code-verifier`),F(i))return this._returnResult({data:{user:null,session:null,redirectType:null},error:i});throw i}}async signInWithIdToken(e){try{let{options:t,provider:r,token:n,access_token:i,nonce:s}=e,o=await U(this.fetch,"POST",`${this.url}/token?grant_type=id_token`,{headers:this.headers,body:{provider:r,id_token:n,access_token:i,nonce:s,gotrue_meta_security:{captcha_token:t===null||t===void 0?void 0:t.captchaToken}},xform:bt}),{data:a,error:l}=o;if(l)return this._returnResult({data:{user:null,session:null},error:l});else if(!a||!a.session||!a.user){let c=new Qt;return this._returnResult({data:{user:null,session:null},error:c})}if(a.session)await this._saveSession(a.session),await this._notifyAllSubscribers("SIGNED_IN",a.session);return this._returnResult({data:a,error:l})}catch(t){if(F(t))return this._returnResult({data:{user:null,session:null},error:t});throw t}}async signInWithOtp(e){var t,r,n,i,s;try{if("email"in e){let{email:o,options:a}=e,l=null,c=null;if(this.flowType==="pkce")[l,c]=await ur(this.storage,this.storageKey);let{error:u}=await U(this.fetch,"POST",`${this.url}/otp`,{headers:this.headers,body:{email:o,data:(t=a===null||a===void 0?void 0:a.data)!==null&&t!==void 0?t:{},create_user:(r=a===null||a===void 0?void 0:a.shouldCreateUser)!==null&&r!==void 0?r:!0,gotrue_meta_security:{captcha_token:a===null||a===void 0?void 0:a.captchaToken},code_challenge:l,code_challenge_method:c},redirectTo:a===null||a===void 0?void 0:a.emailRedirectTo});return this._returnResult({data:{user:null,session:null},error:u})}if("phone"in e){let{phone:o,options:a}=e,{data:l,error:c}=await U(this.fetch,"POST",`${this.url}/otp`,{headers:this.headers,body:{phone:o,data:(n=a===null||a===void 0?void 0:a.data)!==null&&n!==void 0?n:{},create_user:(i=a===null||a===void 0?void 0:a.shouldCreateUser)!==null&&i!==void 0?i:!0,gotrue_meta_security:{captcha_token:a===null||a===void 0?void 0:a.captchaToken},channel:(s=a===null||a===void 0?void 0:a.channel)!==null&&s!==void 0?s:"sms"}});return this._returnResult({data:{user:null,session:null,messageId:l===null||l===void 0?void 0:l.message_id},error:c})}throw new Lr("You must provide either an email or phone number.")}catch(o){if(await Ke(this.storage,`${this.storageKey}-code-verifier`),F(o))return this._returnResult({data:{user:null,session:null},error:o});throw o}}async verifyOtp(e){var t,r;try{let n=void 0,i=void 0;if("options"in e)n=(t=e.options)===null||t===void 0?void 0:t.redirectTo,i=(r=e.options)===null||r===void 0?void 0:r.captchaToken;let{data:s,error:o}=await U(this.fetch,"POST",`${this.url}/verify`,{headers:this.headers,body:Object.assign(Object.assign({},e),{gotrue_meta_security:{captcha_token:i}}),redirectTo:n,xform:bt});if(o)throw o;if(!s)throw Error("An error occurred on token verification.");let{session:a,user:l}=s;if(a===null||a===void 0?void 0:a.access_token)await this._saveSession(a),await this._notifyAllSubscribers(e.type=="recovery"?"PASSWORD_RECOVERY":"SIGNED_IN",a);return this._returnResult({data:{user:l,session:a},error:null})}catch(n){if(F(n))return this._returnResult({data:{user:null,session:null},error:n});throw n}}async signInWithSSO(e){var t,r,n,i,s;try{let o=null,a=null;if(this.flowType==="pkce")[o,a]=await ur(this.storage,this.storageKey);let l=await U(this.fetch,"POST",`${this.url}/sso`,{body:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},"providerId"in e?{provider_id:e.providerId}:null),"domain"in e?{domain:e.domain}:null),{redirect_to:(r=(t=e.options)===null||t===void 0?void 0:t.redirectTo)!==null&&r!==void 0?r:void 0}),((n=e===null||e===void 0?void 0:e.options)===null||n===void 0?void 0:n.captchaToken)?{gotrue_meta_security:{captcha_token:e.options.captchaToken}}:null),{skip_http_redirect:!0,code_challenge:o,code_challenge_method:a}),headers:this.headers,xform:Rc});if(((i=l.data)===null||i===void 0?void 0:i.url)&&Ue()&&!((s=e.options)===null||s===void 0?void 0:s.skipBrowserRedirect))window.location.assign(l.data.url);return this._returnResult(l)}catch(o){if(await Ke(this.storage,`${this.storageKey}-code-verifier`),F(o))return this._returnResult({data:null,error:o});throw o}}async reauthenticate(){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>await this._reauthenticate())}async _reauthenticate(){try{return await this._useSession(async(e)=>{let{data:{session:t},error:r}=e;if(r)throw r;if(!t)throw new Ze;let{error:n}=await U(this.fetch,"GET",`${this.url}/reauthenticate`,{headers:this.headers,jwt:t.access_token});return this._returnResult({data:{user:null,session:null},error:n})})}catch(e){if(F(e))return this._returnResult({data:{user:null,session:null},error:e});throw e}}async resend(e){try{let t=`${this.url}/resend`;if("email"in e){let{email:r,type:n,options:i}=e,{error:s}=await U(this.fetch,"POST",t,{headers:this.headers,body:{email:r,type:n,gotrue_meta_security:{captcha_token:i===null||i===void 0?void 0:i.captchaToken}},redirectTo:i===null||i===void 0?void 0:i.emailRedirectTo});return this._returnResult({data:{user:null,session:null},error:s})}else if("phone"in e){let{phone:r,type:n,options:i}=e,{data:s,error:o}=await U(this.fetch,"POST",t,{headers:this.headers,body:{phone:r,type:n,gotrue_meta_security:{captcha_token:i===null||i===void 0?void 0:i.captchaToken}}});return this._returnResult({data:{user:null,session:null,messageId:s===null||s===void 0?void 0:s.message_id},error:o})}throw new Lr("You must provide either an email or phone number and a type")}catch(t){if(F(t))return this._returnResult({data:{user:null,session:null},error:t});throw t}}async getSession(){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>this._useSession(async(t)=>t))}async _acquireLock(e,t){this._debug("#_acquireLock","begin",e);try{if(this.lockAcquired){let r=this.pendingInLock.length?this.pendingInLock[this.pendingInLock.length-1]:Promise.resolve(),n=(async()=>(await r,await t()))();return this.pendingInLock.push((async()=>{try{await n}catch(i){}})()),n}return await this.lock(`lock:${this.storageKey}`,e,async()=>{this._debug("#_acquireLock","lock acquired for storage key",this.storageKey);try{this.lockAcquired=!0;let r=t();this.pendingInLock.push((async()=>{try{await r}catch(n){}})()),await r;while(this.pendingInLock.length){let n=[...this.pendingInLock];await Promise.all(n),this.pendingInLock.splice(0,n.length)}return await r}finally{this._debug("#_acquireLock","lock released for storage key",this.storageKey),this.lockAcquired=!1}})}finally{this._debug("#_acquireLock","end")}}async _useSession(e){this._debug("#_useSession","begin");try{let t=await this.__loadSession();return await e(t)}finally{this._debug("#_useSession","end")}}async __loadSession(){if(this._debug("#__loadSession()","begin"),!this.lockAcquired)this._debug("#__loadSession()","used outside of an acquired lock!",Error().stack);try{let e=null,t=await $t(this.storage,this.storageKey);if(this._debug("#getSession()","session from storage",t),t!==null)if(this._isValidSession(t))e=t;else this._debug("#getSession()","session from storage is not valid"),await this._removeSession();if(!e)return{data:{session:null},error:null};let r=e.expires_at?e.expires_at*1000-Date.now()<ki:!1;if(this._debug("#__loadSession()",`session has${r?"":" not"} expired`,"expires_at",e.expires_at),!r){if(this.userStorage){let s=await $t(this.userStorage,this.storageKey+"-user");if(s===null||s===void 0?void 0:s.user)e.user=s.user;else e.user=Di()}if(this.storage.isServer&&e.user&&!e.user.__isUserNotAvailableProxy){let s={value:this.suppressGetSessionWarning};if(e.user=xc(e.user,s),s.value)this.suppressGetSessionWarning=!0}return{data:{session:e},error:null}}let{data:n,error:i}=await this._callRefreshToken(e.refresh_token);if(i)return this._returnResult({data:{session:null},error:i});return this._returnResult({data:{session:n},error:null})}finally{this._debug("#__loadSession()","end")}}async getUser(e){if(e)return await this._getUser(e);await this.initializePromise;let t=await this._acquireLock(this.lockAcquireTimeout,async()=>await this._getUser());if(t.data.user)this.suppressGetSessionWarning=!0;return t}async _getUser(e){try{if(e)return await U(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:e,xform:Ot});return await this._useSession(async(t)=>{var r,n,i;let{data:s,error:o}=t;if(o)throw o;if(!((r=s.session)===null||r===void 0?void 0:r.access_token)&&!this.hasCustomAuthorizationHeader)return{data:{user:null},error:new Ze};return await U(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:(i=(n=s.session)===null||n===void 0?void 0:n.access_token)!==null&&i!==void 0?i:void 0,xform:Ot})})}catch(t){if(F(t)){if(Bn(t))await this._removeSession(),await Ke(this.storage,`${this.storageKey}-code-verifier`);return this._returnResult({data:{user:null},error:t})}throw t}}async updateUser(e,t={}){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>await this._updateUser(e,t))}async _updateUser(e,t={}){try{return await this._useSession(async(r)=>{let{data:n,error:i}=r;if(i)throw i;if(!n.session)throw new Ze;let s=n.session,o=null,a=null;if(this.flowType==="pkce"&&e.email!=null)[o,a]=await ur(this.storage,this.storageKey);let{data:l,error:c}=await U(this.fetch,"PUT",`${this.url}/user`,{headers:this.headers,redirectTo:t===null||t===void 0?void 0:t.emailRedirectTo,body:Object.assign(Object.assign({},e),{code_challenge:o,code_challenge_method:a}),jwt:s.access_token,xform:Ot});if(c)throw c;return s.user=l.user,await this._saveSession(s),await this._notifyAllSubscribers("USER_UPDATED",s),this._returnResult({data:{user:s.user},error:null})})}catch(r){if(await Ke(this.storage,`${this.storageKey}-code-verifier`),F(r))return this._returnResult({data:{user:null},error:r});throw r}}async setSession(e){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>await this._setSession(e))}async _setSession(e){try{if(!e.access_token||!e.refresh_token)throw new Ze;let t=Date.now()/1000,r=t,n=!0,i=null,{payload:s}=Nn(e.access_token);if(s.exp)r=s.exp,n=r<=t;if(n){let{data:o,error:a}=await this._callRefreshToken(e.refresh_token);if(a)return this._returnResult({data:{user:null,session:null},error:a});if(!o)return{data:{user:null,session:null},error:null};i=o}else{let{data:o,error:a}=await this._getUser(e.access_token);if(a)return this._returnResult({data:{user:null,session:null},error:a});i={access_token:e.access_token,refresh_token:e.refresh_token,user:o.user,token_type:"bearer",expires_in:r-t,expires_at:r},await this._saveSession(i),await this._notifyAllSubscribers("SIGNED_IN",i)}return this._returnResult({data:{user:i.user,session:i},error:null})}catch(t){if(F(t))return this._returnResult({data:{session:null,user:null},error:t});throw t}}async refreshSession(e){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>await this._refreshSession(e))}async _refreshSession(e){try{return await this._useSession(async(t)=>{var r;if(!e){let{data:s,error:o}=t;if(o)throw o;e=(r=s.session)!==null&&r!==void 0?r:void 0}if(!(e===null||e===void 0?void 0:e.refresh_token))throw new Ze;let{data:n,error:i}=await this._callRefreshToken(e.refresh_token);if(i)return this._returnResult({data:{user:null,session:null},error:i});if(!n)return this._returnResult({data:{user:null,session:null},error:null});return this._returnResult({data:{user:n.user,session:n},error:null})})}catch(t){if(F(t))return this._returnResult({data:{user:null,session:null},error:t});throw t}}async _getSessionFromURL(e,t){try{if(!Ue())throw new Mr("No browser detected.");if(e.error||e.error_description||e.error_code)throw new Mr(e.error_description||"Error in URL with unspecified error_description",{error:e.error||"unspecified_error",code:e.error_code||"unspecified_code"});switch(t){case"implicit":if(this.flowType==="pkce")throw new Ri("Not a valid PKCE flow url.");break;case"pkce":if(this.flowType==="implicit")throw new Mr("Not a valid implicit grant flow url.");break;default:}if(t==="pkce"){if(this._debug("#_initialize()","begin","is PKCE flow",!0),!e.code)throw new Ri("No code detected.");let{data:v,error:y}=await this._exchangeCodeForSession(e.code);if(y)throw y;let S=new URL(window.location.href);return S.searchParams.delete("code"),window.history.replaceState(window.history.state,"",S.toString()),{data:{session:v.session,redirectType:null},error:null}}let{provider_token:r,provider_refresh_token:n,access_token:i,refresh_token:s,expires_in:o,expires_at:a,token_type:l}=e;if(!i||!o||!s||!l)throw new Mr("No session defined in URL");let c=Math.round(Date.now()/1000),u=parseInt(o),d=c+u;if(a)d=parseInt(a);let A=d-c;if(A*1000<=or)console.warn(`@supabase/gotrue-js: Session as retrieved from URL expires in ${A}s, should have been closer to ${u}s`);let m=d-u;if(c-m>=120)console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued over 120s ago, URL could be stale",m,d,c);else if(c-m<0)console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued in the future? Check the device clock for skew",m,d,c);let{data:g,error:f}=await this._getUser(i);if(f)throw f;let p={provider_token:r,provider_refresh_token:n,access_token:i,expires_in:u,expires_at:d,refresh_token:s,token_type:l,user:g.user};return window.location.hash="",this._debug("#_getSessionFromURL()","clearing window.location.hash"),this._returnResult({data:{session:p,redirectType:e.type},error:null})}catch(r){if(F(r))return this._returnResult({data:{session:null,redirectType:null},error:r});throw r}}_isImplicitGrantCallback(e){if(typeof this.detectSessionInUrl==="function")return this.detectSessionInUrl(new URL(window.location.href),e);return Boolean(e.access_token||e.error_description)}async _isPKCECallback(e){let t=await $t(this.storage,`${this.storageKey}-code-verifier`);return!!(e.code&&t)}async signOut(e={scope:"global"}){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>await this._signOut(e))}async _signOut({scope:e}={scope:"global"}){return await this._useSession(async(t)=>{var r;let{data:n,error:i}=t;if(i&&!Bn(i))return this._returnResult({error:i});let s=(r=n.session)===null||r===void 0?void 0:r.access_token;if(s){let{error:o}=await this.admin.signOut(s,e);if(o){if(!(hc(o)&&(o.status===404||o.status===401||o.status===403)||Bn(o)))return this._returnResult({error:o})}}if(e!=="others")await this._removeSession(),await Ke(this.storage,`${this.storageKey}-code-verifier`);return this._returnResult({error:null})})}onAuthStateChange(e){let t=yc(),r={id:t,callback:e,unsubscribe:()=>{this._debug("#unsubscribe()","state change callback with id removed",t),this.stateChangeEmitters.delete(t)}};return this._debug("#onAuthStateChange()","registered callback with id",t),this.stateChangeEmitters.set(t,r),(async()=>{await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>{this._emitInitialSession(t)})})(),{data:{subscription:r}}}async _emitInitialSession(e){return await this._useSession(async(t)=>{var r,n;try{let{data:{session:i},error:s}=t;if(s)throw s;await((r=this.stateChangeEmitters.get(e))===null||r===void 0?void 0:r.callback("INITIAL_SESSION",i)),this._debug("INITIAL_SESSION","callback id",e,"session",i)}catch(i){if(await((n=this.stateChangeEmitters.get(e))===null||n===void 0?void 0:n.callback("INITIAL_SESSION",null)),this._debug("INITIAL_SESSION","callback id",e,"error",i),Bn(i))console.warn(i);else console.error(i)}})}async resetPasswordForEmail(e,t={}){let r=null,n=null;if(this.flowType==="pkce")[r,n]=await ur(this.storage,this.storageKey,!0);try{return await U(this.fetch,"POST",`${this.url}/recover`,{body:{email:e,code_challenge:r,code_challenge_method:n,gotrue_meta_security:{captcha_token:t.captchaToken}},headers:this.headers,redirectTo:t.redirectTo})}catch(i){if(await Ke(this.storage,`${this.storageKey}-code-verifier`),F(i))return this._returnResult({data:null,error:i});throw i}}async getUserIdentities(){var e;try{let{data:t,error:r}=await this.getUser();if(r)throw r;return this._returnResult({data:{identities:(e=t.user.identities)!==null&&e!==void 0?e:[]},error:null})}catch(t){if(F(t))return this._returnResult({data:null,error:t});throw t}}async linkIdentity(e){if("token"in e)return this.linkIdentityIdToken(e);return this.linkIdentityOAuth(e)}async linkIdentityOAuth(e){var t;try{let{data:r,error:n}=await this._useSession(async(i)=>{var s,o,a,l,c;let{data:u,error:d}=i;if(d)throw d;let A=await this._getUrlForProvider(`${this.url}/user/identities/authorize`,e.provider,{redirectTo:(s=e.options)===null||s===void 0?void 0:s.redirectTo,scopes:(o=e.options)===null||o===void 0?void 0:o.scopes,queryParams:(a=e.options)===null||a===void 0?void 0:a.queryParams,skipBrowserRedirect:!0});return await U(this.fetch,"GET",A,{headers:this.headers,jwt:(c=(l=u.session)===null||l===void 0?void 0:l.access_token)!==null&&c!==void 0?c:void 0})});if(n)throw n;if(Ue()&&!((t=e.options)===null||t===void 0?void 0:t.skipBrowserRedirect))window.location.assign(r===null||r===void 0?void 0:r.url);return this._returnResult({data:{provider:e.provider,url:r===null||r===void 0?void 0:r.url},error:null})}catch(r){if(F(r))return this._returnResult({data:{provider:e.provider,url:null},error:r});throw r}}async linkIdentityIdToken(e){return await this._useSession(async(t)=>{var r;try{let{error:n,data:{session:i}}=t;if(n)throw n;let{options:s,provider:o,token:a,access_token:l,nonce:c}=e,u=await U(this.fetch,"POST",`${this.url}/token?grant_type=id_token`,{headers:this.headers,jwt:(r=i===null||i===void 0?void 0:i.access_token)!==null&&r!==void 0?r:void 0,body:{provider:o,id_token:a,access_token:l,nonce:c,link_identity:!0,gotrue_meta_security:{captcha_token:s===null||s===void 0?void 0:s.captchaToken}},xform:bt}),{data:d,error:A}=u;if(A)return this._returnResult({data:{user:null,session:null},error:A});else if(!d||!d.session||!d.user)return this._returnResult({data:{user:null,session:null},error:new Qt});if(d.session)await this._saveSession(d.session),await this._notifyAllSubscribers("USER_UPDATED",d.session);return this._returnResult({data:d,error:A})}catch(n){if(await Ke(this.storage,`${this.storageKey}-code-verifier`),F(n))return this._returnResult({data:{user:null,session:null},error:n});throw n}})}async unlinkIdentity(e){try{return await this._useSession(async(t)=>{var r,n;let{data:i,error:s}=t;if(s)throw s;return await U(this.fetch,"DELETE",`${this.url}/user/identities/${e.identity_id}`,{headers:this.headers,jwt:(n=(r=i.session)===null||r===void 0?void 0:r.access_token)!==null&&n!==void 0?n:void 0})})}catch(t){if(F(t))return this._returnResult({data:null,error:t});throw t}}async _refreshAccessToken(e){let t=`#_refreshAccessToken(${e.substring(0,5)}...)`;this._debug(t,"begin");try{let r=Date.now();return await Cc(async(n)=>{if(n>0)await vc(200*Math.pow(2,n-1));return this._debug(t,"refreshing attempt",n),await U(this.fetch,"POST",`${this.url}/token?grant_type=refresh_token`,{body:{refresh_token:e},headers:this.headers,xform:bt})},(n,i)=>{let s=200*Math.pow(2,n);return i&&Ti(i)&&Date.now()+s-r<or})}catch(r){if(this._debug(t,"error",r),F(r))return this._returnResult({data:{session:null,user:null},error:r});throw r}finally{this._debug(t,"end")}}_isValidSession(e){return typeof e==="object"&&e!==null&&"access_token"in e&&"refresh_token"in e&&"expires_at"in e}async _handleProviderSignIn(e,t){let r=await this._getUrlForProvider(`${this.url}/authorize`,e,{redirectTo:t.redirectTo,scopes:t.scopes,queryParams:t.queryParams});if(this._debug("#_handleProviderSignIn()","provider",e,"options",t,"url",r),Ue()&&!t.skipBrowserRedirect)window.location.assign(r);return{data:{provider:e,url:r},error:null}}async _recoverAndRefresh(){var e,t;let r="#_recoverAndRefresh()";this._debug("#_recoverAndRefresh()","begin");try{let n=await $t(this.storage,this.storageKey);if(n&&this.userStorage){let s=await $t(this.userStorage,this.storageKey+"-user");if(!this.storage.isServer&&Object.is(this.storage,this.userStorage)&&!s)s={user:n.user},await cr(this.userStorage,this.storageKey+"-user",s);n.user=(e=s===null||s===void 0?void 0:s.user)!==null&&e!==void 0?e:Di()}else if(n&&!n.user){if(!n.user){let s=await $t(this.storage,this.storageKey+"-user");if(s&&(s===null||s===void 0?void 0:s.user))n.user=s.user,await Ke(this.storage,this.storageKey+"-user"),await cr(this.storage,this.storageKey,n);else n.user=Di()}}if(this._debug("#_recoverAndRefresh()","session from storage",n),!this._isValidSession(n)){if(this._debug("#_recoverAndRefresh()","session is not valid"),n!==null)await this._removeSession();return}let i=((t=n.expires_at)!==null&&t!==void 0?t:1/0)*1000-Date.now()<ki;if(this._debug("#_recoverAndRefresh()",`session has${i?"":" not"} expired with margin of ${ki}s`),i){if(this.autoRefreshToken&&n.refresh_token){let{error:s}=await this._callRefreshToken(n.refresh_token);if(s){if(console.error(s),!Ti(s))this._debug("#_recoverAndRefresh()","refresh failed with a non-retryable error, removing the session",s),await this._removeSession()}}}else if(n.user&&n.user.__isUserNotAvailableProxy===!0)try{let{data:s,error:o}=await this._getUser(n.access_token);if(!o&&(s===null||s===void 0?void 0:s.user))n.user=s.user,await this._saveSession(n),await this._notifyAllSubscribers("SIGNED_IN",n);else this._debug("#_recoverAndRefresh()","could not get user data, skipping SIGNED_IN notification")}catch(s){console.error("Error getting user data:",s),this._debug("#_recoverAndRefresh()","error getting user data, skipping SIGNED_IN notification",s)}else await this._notifyAllSubscribers("SIGNED_IN",n)}catch(n){this._debug("#_recoverAndRefresh()","error",n),console.error(n);return}finally{this._debug("#_recoverAndRefresh()","end")}}async _callRefreshToken(e){var t,r;if(!e)throw new Ze;if(this.refreshingDeferred)return this.refreshingDeferred.promise;let n=`#_callRefreshToken(${e.substring(0,5)}...)`;this._debug(n,"begin");try{this.refreshingDeferred=new Pn;let{data:i,error:s}=await this._refreshAccessToken(e);if(s)throw s;if(!i.session)throw new Ze;await this._saveSession(i.session),await this._notifyAllSubscribers("TOKEN_REFRESHED",i.session);let o={data:i.session,error:null};return this.refreshingDeferred.resolve(o),o}catch(i){if(this._debug(n,"error",i),F(i)){let s={data:null,error:i};if(!Ti(i))await this._removeSession();return(t=this.refreshingDeferred)===null||t===void 0||t.resolve(s),s}throw(r=this.refreshingDeferred)===null||r===void 0||r.reject(i),i}finally{this.refreshingDeferred=null,this._debug(n,"end")}}async _notifyAllSubscribers(e,t,r=!0){let n=`#_notifyAllSubscribers(${e})`;this._debug(n,"begin",t,`broadcast = ${r}`);try{if(this.broadcastChannel&&r)this.broadcastChannel.postMessage({event:e,session:t});let i=[],s=Array.from(this.stateChangeEmitters.values()).map(async(o)=>{try{await o.callback(e,t)}catch(a){i.push(a)}});if(await Promise.all(s),i.length>0){for(let o=0;o<i.length;o+=1)console.error(i[o]);throw i[0]}}finally{this._debug(n,"end")}}async _saveSession(e){this._debug("#_saveSession()",e),this.suppressGetSessionWarning=!0,await Ke(this.storage,`${this.storageKey}-code-verifier`);let t=Object.assign({},e),r=t.user&&t.user.__isUserNotAvailableProxy===!0;if(this.userStorage){if(!r&&t.user)await cr(this.userStorage,this.storageKey+"-user",{user:t.user});let n=Object.assign({},t);delete n.user;let i=no(n);await cr(this.storage,this.storageKey,i)}else{let n=no(t);await cr(this.storage,this.storageKey,n)}}async _removeSession(){if(this._debug("#_removeSession()"),this.suppressGetSessionWarning=!1,await Ke(this.storage,this.storageKey),await Ke(this.storage,this.storageKey+"-code-verifier"),await Ke(this.storage,this.storageKey+"-user"),this.userStorage)await Ke(this.userStorage,this.storageKey+"-user");await this._notifyAllSubscribers("SIGNED_OUT",null)}_removeVisibilityChangedCallback(){this._debug("#_removeVisibilityChangedCallback()");let e=this.visibilityChangedCallback;this.visibilityChangedCallback=null;try{if(e&&Ue()&&(window===null||window===void 0?void 0:window.removeEventListener))window.removeEventListener("visibilitychange",e)}catch(t){console.error("removing visibilitychange callback failed",t)}}async _startAutoRefresh(){await this._stopAutoRefresh(),this._debug("#_startAutoRefresh()");let e=setInterval(()=>this._autoRefreshTokenTick(),or);if(this.autoRefreshTicker=e,e&&typeof e==="object"&&typeof e.unref==="function")e.unref();else if(typeof Deno<"u"&&typeof Deno.unrefTimer==="function")Deno.unrefTimer(e);let t=setTimeout(async()=>{await this.initializePromise,await this._autoRefreshTokenTick()},0);if(this.autoRefreshTickTimeout=t,t&&typeof t==="object"&&typeof t.unref==="function")t.unref();else if(typeof Deno<"u"&&typeof Deno.unrefTimer==="function")Deno.unrefTimer(t)}async _stopAutoRefresh(){this._debug("#_stopAutoRefresh()");let e=this.autoRefreshTicker;if(this.autoRefreshTicker=null,e)clearInterval(e);let t=this.autoRefreshTickTimeout;if(this.autoRefreshTickTimeout=null,t)clearTimeout(t)}async startAutoRefresh(){this._removeVisibilityChangedCallback(),await this._startAutoRefresh()}async stopAutoRefresh(){this._removeVisibilityChangedCallback(),await this._stopAutoRefresh()}async _autoRefreshTokenTick(){this._debug("#_autoRefreshTokenTick()","begin");try{await this._acquireLock(0,async()=>{try{let e=Date.now();try{return await this._useSession(async(t)=>{let{data:{session:r}}=t;if(!r||!r.refresh_token||!r.expires_at){this._debug("#_autoRefreshTokenTick()","no session");return}let n=Math.floor((r.expires_at*1000-e)/or);if(this._debug("#_autoRefreshTokenTick()",`access token expires in ${n} ticks, a tick lasts ${or}ms, refresh threshold is ${xi} ticks`),n<=xi)await this._callRefreshToken(r.refresh_token)})}catch(t){console.error("Auto refresh tick failed with error. This is likely a transient error.",t)}}finally{this._debug("#_autoRefreshTokenTick()","end")}})}catch(e){if(e.isAcquireTimeout||e instanceof Fi)this._debug("auto refresh token tick lock not available");else throw e}}async _handleVisibilityChange(){if(this._debug("#_handleVisibilityChange()"),!Ue()||!(window===null||window===void 0?void 0:window.addEventListener)){if(this.autoRefreshToken)this.startAutoRefresh();return!1}try{this.visibilityChangedCallback=async()=>{try{await this._onVisibilityChanged(!1)}catch(e){this._debug("#visibilityChangedCallback","error",e)}},window===null||window===void 0||window.addEventListener("visibilitychange",this.visibilityChangedCallback),await this._onVisibilityChanged(!0)}catch(e){console.error("_handleVisibilityChange",e)}}async _onVisibilityChanged(e){let t=`#_onVisibilityChanged(${e})`;if(this._debug(t,"visibilityState",document.visibilityState),document.visibilityState==="visible"){if(this.autoRefreshToken)this._startAutoRefresh();if(!e)await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>{if(document.visibilityState!=="visible"){this._debug(t,"acquired the lock to recover the session, but the browser visibilityState is no longer visible, aborting");return}await this._recoverAndRefresh()})}else if(document.visibilityState==="hidden"){if(this.autoRefreshToken)this._stopAutoRefresh()}}async _getUrlForProvider(e,t,r){let n=[`provider=${encodeURIComponent(t)}`];if(r===null||r===void 0?void 0:r.redirectTo)n.push(`redirect_to=${encodeURIComponent(r.redirectTo)}`);if(r===null||r===void 0?void 0:r.scopes)n.push(`scopes=${encodeURIComponent(r.scopes)}`);if(this.flowType==="pkce"){let[i,s]=await ur(this.storage,this.storageKey),o=new URLSearchParams({code_challenge:`${encodeURIComponent(i)}`,code_challenge_method:`${encodeURIComponent(s)}`});n.push(o.toString())}if(r===null||r===void 0?void 0:r.queryParams){let i=new URLSearchParams(r.queryParams);n.push(i.toString())}if(r===null||r===void 0?void 0:r.skipBrowserRedirect)n.push(`skip_http_redirect=${r.skipBrowserRedirect}`);return`${e}?${n.join("&")}`}async _unenroll(e){try{return await this._useSession(async(t)=>{var r;let{data:n,error:i}=t;if(i)return this._returnResult({data:null,error:i});return await U(this.fetch,"DELETE",`${this.url}/factors/${e.factorId}`,{headers:this.headers,jwt:(r=n===null||n===void 0?void 0:n.session)===null||r===void 0?void 0:r.access_token})})}catch(t){if(F(t))return this._returnResult({data:null,error:t});throw t}}async _enroll(e){try{return await this._useSession(async(t)=>{var r,n;let{data:i,error:s}=t;if(s)return this._returnResult({data:null,error:s});let o=Object.assign({friendly_name:e.friendlyName,factor_type:e.factorType},e.factorType==="phone"?{phone:e.phone}:e.factorType==="totp"?{issuer:e.issuer}:{}),{data:a,error:l}=await U(this.fetch,"POST",`${this.url}/factors`,{body:o,headers:this.headers,jwt:(r=i===null||i===void 0?void 0:i.session)===null||r===void 0?void 0:r.access_token});if(l)return this._returnResult({data:null,error:l});if(e.factorType==="totp"&&a.type==="totp"&&((n=a===null||a===void 0?void 0:a.totp)===null||n===void 0?void 0:n.qr_code))a.totp.qr_code=`data:image/svg+xml;utf-8,${a.totp.qr_code}`;return this._returnResult({data:a,error:null})})}catch(t){if(F(t))return this._returnResult({data:null,error:t});throw t}}async _verify(e){return this._acquireLock(this.lockAcquireTimeout,async()=>{try{return await this._useSession(async(t)=>{var r;let{data:n,error:i}=t;if(i)return this._returnResult({data:null,error:i});let s=Object.assign({challenge_id:e.challengeId},"webauthn"in e?{webauthn:Object.assign(Object.assign({},e.webauthn),{credential_response:e.webauthn.type==="create"?jc(e.webauthn.credential_response):Hc(e.webauthn.credential_response)})}:{code:e.code}),{data:o,error:a}=await U(this.fetch,"POST",`${this.url}/factors/${e.factorId}/verify`,{body:s,headers:this.headers,jwt:(r=n===null||n===void 0?void 0:n.session)===null||r===void 0?void 0:r.access_token});if(a)return this._returnResult({data:null,error:a});return await this._saveSession(Object.assign({expires_at:Math.round(Date.now()/1000)+o.expires_in},o)),await this._notifyAllSubscribers("MFA_CHALLENGE_VERIFIED",o),this._returnResult({data:o,error:a})})}catch(t){if(F(t))return this._returnResult({data:null,error:t});throw t}})}async _challenge(e){return this._acquireLock(this.lockAcquireTimeout,async()=>{try{return await this._useSession(async(t)=>{var r;let{data:n,error:i}=t;if(i)return this._returnResult({data:null,error:i});let s=await U(this.fetch,"POST",`${this.url}/factors/${e.factorId}/challenge`,{body:e,headers:this.headers,jwt:(r=n===null||n===void 0?void 0:n.session)===null||r===void 0?void 0:r.access_token});if(s.error)return s;let{data:o}=s;if(o.type!=="webauthn")return{data:o,error:null};switch(o.webauthn.type){case"create":return{data:Object.assign(Object.assign({},o),{webauthn:Object.assign(Object.assign({},o.webauthn),{credential_options:Object.assign(Object.assign({},o.webauthn.credential_options),{publicKey:Gc(o.webauthn.credential_options.publicKey)})})}),error:null};case"request":return{data:Object.assign(Object.assign({},o),{webauthn:Object.assign(Object.assign({},o.webauthn),{credential_options:Object.assign(Object.assign({},o.webauthn.credential_options),{publicKey:Uc(o.webauthn.credential_options.publicKey)})})}),error:null}}})}catch(t){if(F(t))return this._returnResult({data:null,error:t});throw t}})}async _challengeAndVerify(e){let{data:t,error:r}=await this._challenge({factorId:e.factorId});if(r)return this._returnResult({data:null,error:r});return await this._verify({factorId:e.factorId,challengeId:t.id,code:e.code})}async _listFactors(){var e;let{data:{user:t},error:r}=await this.getUser();if(r)return{data:null,error:r};let n={all:[],phone:[],totp:[],webauthn:[]};for(let i of(e=t===null||t===void 0?void 0:t.factors)!==null&&e!==void 0?e:[])if(n.all.push(i),i.status==="verified")n[i.factor_type].push(i);return{data:n,error:null}}async _getAuthenticatorAssuranceLevel(e){var t,r,n,i;if(e)try{let{payload:A}=Nn(e),m=null;if(A.aal)m=A.aal;let g=m,{data:{user:f},error:p}=await this.getUser(e);if(p)return this._returnResult({data:null,error:p});if(((r=(t=f===null||f===void 0?void 0:f.factors)===null||t===void 0?void 0:t.filter((S)=>S.status==="verified"))!==null&&r!==void 0?r:[]).length>0)g="aal2";let y=A.amr||[];return{data:{currentLevel:m,nextLevel:g,currentAuthenticationMethods:y},error:null}}catch(A){if(F(A))return this._returnResult({data:null,error:A});throw A}let{data:{session:s},error:o}=await this.getSession();if(o)return this._returnResult({data:null,error:o});if(!s)return{data:{currentLevel:null,nextLevel:null,currentAuthenticationMethods:[]},error:null};let{payload:a}=Nn(s.access_token),l=null;if(a.aal)l=a.aal;let c=l;if(((i=(n=s.user.factors)===null||n===void 0?void 0:n.filter((A)=>A.status==="verified"))!==null&&i!==void 0?i:[]).length>0)c="aal2";let d=a.amr||[];return{data:{currentLevel:l,nextLevel:c,currentAuthenticationMethods:d},error:null}}async _getAuthorizationDetails(e){try{return await this._useSession(async(t)=>{let{data:{session:r},error:n}=t;if(n)return this._returnResult({data:null,error:n});if(!r)return this._returnResult({data:null,error:new Ze});return await U(this.fetch,"GET",`${this.url}/oauth/authorizations/${e}`,{headers:this.headers,jwt:r.access_token,xform:(i)=>({data:i,error:null})})})}catch(t){if(F(t))return this._returnResult({data:null,error:t});throw t}}async _approveAuthorization(e,t){try{return await this._useSession(async(r)=>{let{data:{session:n},error:i}=r;if(i)return this._returnResult({data:null,error:i});if(!n)return this._returnResult({data:null,error:new Ze});let s=await U(this.fetch,"POST",`${this.url}/oauth/authorizations/${e}/consent`,{headers:this.headers,jwt:n.access_token,body:{action:"approve"},xform:(o)=>({data:o,error:null})});if(s.data&&s.data.redirect_url){if(Ue()&&!(t===null||t===void 0?void 0:t.skipBrowserRedirect))window.location.assign(s.data.redirect_url)}return s})}catch(r){if(F(r))return this._returnResult({data:null,error:r});throw r}}async _denyAuthorization(e,t){try{return await this._useSession(async(r)=>{let{data:{session:n},error:i}=r;if(i)return this._returnResult({data:null,error:i});if(!n)return this._returnResult({data:null,error:new Ze});let s=await U(this.fetch,"POST",`${this.url}/oauth/authorizations/${e}/consent`,{headers:this.headers,jwt:n.access_token,body:{action:"deny"},xform:(o)=>({data:o,error:null})});if(s.data&&s.data.redirect_url){if(Ue()&&!(t===null||t===void 0?void 0:t.skipBrowserRedirect))window.location.assign(s.data.redirect_url)}return s})}catch(r){if(F(r))return this._returnResult({data:null,error:r});throw r}}async _listOAuthGrants(){try{return await this._useSession(async(e)=>{let{data:{session:t},error:r}=e;if(r)return this._returnResult({data:null,error:r});if(!t)return this._returnResult({data:null,error:new Ze});return await U(this.fetch,"GET",`${this.url}/user/oauth/grants`,{headers:this.headers,jwt:t.access_token,xform:(n)=>({data:n,error:null})})})}catch(e){if(F(e))return this._returnResult({data:null,error:e});throw e}}async _revokeOAuthGrant(e){try{return await this._useSession(async(t)=>{let{data:{session:r},error:n}=t;if(n)return this._returnResult({data:null,error:n});if(!r)return this._returnResult({data:null,error:new Ze});return await U(this.fetch,"DELETE",`${this.url}/user/oauth/grants`,{headers:this.headers,jwt:r.access_token,query:{client_id:e.clientId},noResolveJson:!0}),{data:{},error:null}})}catch(t){if(F(t))return this._returnResult({data:null,error:t});throw t}}async fetchJwk(e,t={keys:[]}){let r=t.keys.find((o)=>o.kid===e);if(r)return r;let n=Date.now();if(r=this.jwks.keys.find((o)=>o.kid===e),r&&this.jwks_cached_at+dc>n)return r;let{data:i,error:s}=await U(this.fetch,"GET",`${this.url}/.well-known/jwks.json`,{headers:this.headers});if(s)throw s;if(!i.keys||i.keys.length===0)return null;if(this.jwks=i,this.jwks_cached_at=n,r=i.keys.find((o)=>o.kid===e),!r)return null;return r}async getClaims(e,t={}){try{let r=e;if(!r){let{data:A,error:m}=await this.getSession();if(m||!A.session)return this._returnResult({data:null,error:m});r=A.session.access_token}let{header:n,payload:i,signature:s,raw:{header:o,payload:a}}=Nn(r);if(!(t===null||t===void 0?void 0:t.allowExpired))Sc(i.exp);let l=!n.alg||n.alg.startsWith("HS")||!n.kid||!(("crypto"in globalThis)&&("subtle"in globalThis.crypto))?null:await this.fetchJwk(n.kid,(t===null||t===void 0?void 0:t.keys)?{keys:t.keys}:t===null||t===void 0?void 0:t.jwks);if(!l){let{error:A}=await this.getUser(r);if(A)throw A;return{data:{claims:i,header:n,signature:s},error:null}}let c=Ic(n.alg),u=await crypto.subtle.importKey("jwk",l,c,!0,["verify"]);if(!await crypto.subtle.verify(c,u,s,pc(`${o}.${a}`)))throw new Fr("Invalid JWT signature");return{data:{claims:i,header:n,signature:s},error:null}}catch(r){if(F(r))return this._returnResult({data:null,error:r});throw r}}}Dn.nextInstanceID={};var ho=Dn;var bg=ho,Ao=bg;var yg="2.103.0",Ln="";if(typeof Deno<"u")Ln="deno";else if(typeof document<"u")Ln="web";else if(typeof navigator<"u"&&navigator.product==="ReactNative")Ln="react-native";else Ln="node";var wg={"X-Client-Info":`supabase-js-${Ln}/${yg}`},_g={headers:wg},vg={schema:"public"},Cg={autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,flowType:"implicit"},Eg={};function Mn(e){return Mn=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Mn(e)}function Sg(e,t){if(Mn(e)!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t||"default");if(Mn(n)!="object")return n;throw TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Ig(e){var t=Sg(e,"string");return Mn(t)=="symbol"?t:t+""}function xg(e,t,r){return(t=Ig(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Wc(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function xe(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?Wc(Object(r),!0).forEach(function(n){xg(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Wc(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}var kg=(e)=>{if(e)return(...t)=>e(...t);return(...t)=>fetch(...t)},Rg=()=>Headers,Tg=(e,t,r)=>{let n=kg(r),i=Rg();return async(s,o)=>{var a;let l=(a=await t())!==null&&a!==void 0?a:e,c=new i(o===null||o===void 0?void 0:o.headers);if(!c.has("apikey"))c.set("apikey",e);if(!c.has("Authorization"))c.set("Authorization",`Bearer ${l}`);return n(s,xe(xe({},o),{},{headers:c}))}};function Bg(e){return e.endsWith("/")?e:e+"/"}function Og(e,t){var r,n;let{db:i,auth:s,realtime:o,global:a}=e,{db:l,auth:c,realtime:u,global:d}=t,A={db:xe(xe({},l),i),auth:xe(xe({},c),s),realtime:xe(xe({},u),o),storage:{},global:xe(xe(xe({},d),a),{},{headers:xe(xe({},(r=d===null||d===void 0?void 0:d.headers)!==null&&r!==void 0?r:{}),(n=a===null||a===void 0?void 0:a.headers)!==null&&n!==void 0?n:{})}),accessToken:async()=>""};if(e.accessToken)A.accessToken=e.accessToken;else delete A.accessToken;return A}function Pg(e){let t=e===null||e===void 0?void 0:e.trim();if(!t)throw Error("supabaseUrl is required.");if(!t.match(/^https?:\/\//i))throw Error("Invalid supabaseUrl: Must be a valid HTTP or HTTPS URL.");try{return new URL(Bg(t))}catch(r){throw Error("Invalid supabaseUrl: Provided URL is malformed.")}}var Ng=class extends Ao{constructor(e){super(e)}},Dg=class{constructor(e,t,r){var n,i;this.supabaseUrl=e,this.supabaseKey=t;let s=Pg(e);if(!t)throw Error("supabaseKey is required.");this.realtimeUrl=new URL("realtime/v1",s),this.realtimeUrl.protocol=this.realtimeUrl.protocol.replace("http","ws"),this.authUrl=new URL("auth/v1",s),this.storageUrl=new URL("storage/v1",s),this.functionsUrl=new URL("functions/v1",s);let o=`sb-${s.hostname.split(".")[0]}-auth-token`,a={db:vg,realtime:Eg,auth:xe(xe({},Cg),{},{storageKey:o}),global:_g},l=Og(r!==null&&r!==void 0?r:{},a);if(this.storageKey=(n=l.auth.storageKey)!==null&&n!==void 0?n:"",this.headers=(i=l.global.headers)!==null&&i!==void 0?i:{},!l.accessToken){var c;this.auth=this._initSupabaseAuthClient((c=l.auth)!==null&&c!==void 0?c:{},this.headers,l.global.fetch)}else this.accessToken=l.accessToken,this.auth=new Proxy({},{get:(u,d)=>{throw Error(`@supabase/supabase-js: Supabase Client is configured with the accessToken option, accessing supabase.auth.${String(d)} is not possible`)}});if(this.fetch=Tg(t,this._getAccessToken.bind(this),l.global.fetch),this.realtime=this._initRealtimeClient(xe({headers:this.headers,accessToken:this._getAccessToken.bind(this)},l.realtime)),this.accessToken)Promise.resolve(this.accessToken()).then((u)=>this.realtime.setAuth(u)).catch((u)=>console.warn("Failed to set initial Realtime auth token:",u));if(this.rest=new Ul(new URL("rest/v1",s).href,{headers:this.headers,schema:l.db.schema,fetch:this.fetch,timeout:l.db.timeout,urlLengthLimit:l.db.urlLengthLimit}),this.storage=new oc(this.storageUrl.href,this.headers,this.fetch,r===null||r===void 0?void 0:r.storage),!l.accessToken)this._listenForAuthEvents()}get functions(){return new di(this.functionsUrl.href,{headers:this.headers,customFetch:this.fetch})}from(e){return this.rest.from(e)}schema(e){return this.rest.schema(e)}rpc(e,t={},r={head:!1,get:!1,count:void 0}){return this.rest.rpc(e,t,r)}channel(e,t={config:{}}){return this.realtime.channel(e,t)}getChannels(){return this.realtime.getChannels()}removeChannel(e){return this.realtime.removeChannel(e)}removeAllChannels(){return this.realtime.removeAllChannels()}async _getAccessToken(){var e=this,t,r;if(e.accessToken)return await e.accessToken();let{data:n}=await e.auth.getSession();return(t=(r=n.session)===null||r===void 0?void 0:r.access_token)!==null&&t!==void 0?t:e.supabaseKey}_initSupabaseAuthClient({autoRefreshToken:e,persistSession:t,detectSessionInUrl:r,storage:n,userStorage:i,storageKey:s,flowType:o,lock:a,debug:l,throwOnError:c},u,d){let A={Authorization:`Bearer ${this.supabaseKey}`,apikey:`${this.supabaseKey}`};return new Ng({url:this.authUrl.href,headers:xe(xe({},A),u),storageKey:s,autoRefreshToken:e,persistSession:t,detectSessionInUrl:r,storage:n,userStorage:i,flowType:o,lock:a,debug:l,throwOnError:c,fetch:d,hasCustomAuthorizationHeader:Object.keys(this.headers).some((m)=>m.toLowerCase()==="authorization")})}_initRealtimeClient(e){return new En(this.realtimeUrl.href,xe(xe({},e),{},{params:xe(xe({},{apikey:this.supabaseKey}),e===null||e===void 0?void 0:e.params)}))}_listenForAuthEvents(){return this.auth.onAuthStateChange((e,t)=>{this._handleTokenChanged(e,"CLIENT",t===null||t===void 0?void 0:t.access_token)})}_handleTokenChanged(e,t,r){if((e==="TOKEN_REFRESHED"||e==="SIGNED_IN")&&this.changedAccessToken!==r)this.changedAccessToken=r,this.realtime.setAuth(r);else if(e==="SIGNED_OUT"){if(this.realtime.setAuth(),t=="STORAGE")this.auth.signOut();this.changedAccessToken=void 0}}},Yc=(e,t,r)=>new Dg(e,t,r);function Lg(){if(typeof window<"u")return!1;let e=globalThis.process;if(!e)return!1;let t=e.version;if(t===void 0||t===null)return!1;let r=t.match(/^v(\d+)\./);if(!r)return!1;return parseInt(r[1],10)<=18}if(Lg())console.warn("\u26A0\uFE0F Node.js 18 and below are deprecated and will no longer be supported in future versions of @supabase/supabase-js. Please upgrade to Node.js 20 or later. For more information, visit: https://github.com/orgs/supabase/discussions/37217");var Yg=300000,Jc=16384,$c=4096;function Zc(e,t){if(!e)throw Error(`${t} is not configured`);let r;try{r=new URL(e)}catch{throw Error(`${t} is not a valid URL`)}if(r.protocol!=="https:"&&r.protocol!=="http:")throw Error(`${t} must use http or https`);return r.toString()}function Xc(e=process.env){let t=Zc(e.FLATBLOX_SUPABASE_URL??e.VITE_SUPABASE_URL,"VITE_SUPABASE_URL"),r=e.FLATBLOX_SUPABASE_PUBLISHABLE_KEY??e.VITE_SUPABASE_PUBLISHABLE_KEY;if(!r)throw Error("VITE_SUPABASE_PUBLISHABLE_KEY is not configured");let n=Zc(e.FLATBLOX_DASHBOARD_URL??e.VITE_SITE_URL,e.FLATBLOX_DASHBOARD_URL?"FLATBLOX_DASHBOARD_URL":"VITE_SITE_URL"),i=e.FLATBLOX_DASHBOARD_URL?n:new URL("/dashboard/",n).toString(),s=e.XDG_CONFIG_HOME||Qc(Kg(),".config");return{supabaseUrl:t,publishableKey:r,dashboardUrl:i,authFile:e.FLATBLOX_TUI_AUTH_FILE??Qc(s,"flatblox","tui-auth.json")}}function Qg(e){if(typeof e!=="object"||e===null)return!1;let t=e;return typeof t.accessToken==="string"&&t.accessToken.length>0&&t.accessToken.length<=Jc&&typeof t.refreshToken==="string"&&t.refreshToken.length>0&&t.refreshToken.length<=Jc}async function Jg(e){try{let t=JSON.parse(await Gg(e,"utf8"));if(!Qg(t))return null;return{accessToken:t.accessToken,refreshToken:t.refreshToken}}catch(t){if(t.code==="ENOENT"||t instanceof SyntaxError)return null;throw t}}async function Ui(e,t){await Fg(Wg(e),{recursive:!0,mode:448});let r=`${e}.${process.pid}.tmp`;await Hg(r,`${JSON.stringify({accessToken:t.access_token,refreshToken:t.refresh_token})}
53
+ ${v}`}class xe extends Error{constructor({message:e,code:t,cause:r,name:n}){var i;super(e,{cause:r});this.__isWebAuthnError=!0,this.name=(i=n!==null&&n!==void 0?n:r instanceof Error?r.name:void 0)!==null&&i!==void 0?i:"Unknown Error",this.code=t}}class Ur extends xe{constructor(e,t){super({code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t,message:e});this.name="WebAuthnUnknownError",this.originalError=t}}function Dc({error:e,options:t}){var r,n,i;let{publicKey:s}=t;if(!s)throw Error("options was missing required publicKey property");if(e.name==="AbortError"){if(t.signal instanceof AbortSignal)return new xe({message:"Registration ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else if(e.name==="ConstraintError"){if(((r=s.authenticatorSelection)===null||r===void 0?void 0:r.requireResidentKey)===!0)return new xe({message:"Discoverable credentials were required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT",cause:e});else if(t.mediation==="conditional"&&((n=s.authenticatorSelection)===null||n===void 0?void 0:n.userVerification)==="required")return new xe({message:"User verification was required during automatic registration but it could not be performed",code:"ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE",cause:e});else if(((i=s.authenticatorSelection)===null||i===void 0?void 0:i.userVerification)==="required")return new xe({message:"User verification was required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT",cause:e})}else if(e.name==="InvalidStateError")return new xe({message:"The authenticator was previously registered",code:"ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",cause:e});else if(e.name==="NotAllowedError")return new xe({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});else if(e.name==="NotSupportedError"){if(s.pubKeyCredParams.filter((a)=>a.type==="public-key").length===0)return new xe({message:'No entry in pubKeyCredParams was of type "public-key"',code:"ERROR_MALFORMED_PUBKEYCREDPARAMS",cause:e});return new xe({message:"No available authenticator supported any of the specified pubKeyCredParams algorithms",code:"ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG",cause:e})}else if(e.name==="SecurityError"){let o=window.location.hostname;if(!co(o))return new xe({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e});else if(s.rp.id!==o)return new xe({message:`The RP ID "${s.rp.id}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else if(e.name==="TypeError"){if(s.user.id.byteLength<1||s.user.id.byteLength>64)return new xe({message:"User ID was not between 1 and 64 characters",code:"ERROR_INVALID_USER_ID_LENGTH",cause:e})}else if(e.name==="UnknownError")return new xe({message:"The authenticator was unable to process the specified options, or could not create a new credential",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:e});return new xe({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e})}function Lc({error:e,options:t}){let{publicKey:r}=t;if(!r)throw Error("options was missing required publicKey property");if(e.name==="AbortError"){if(t.signal instanceof AbortSignal)return new xe({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else if(e.name==="NotAllowedError")return new xe({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});else if(e.name==="SecurityError"){let n=window.location.hostname;if(!co(n))return new xe({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e});else if(r.rpId!==n)return new xe({message:`The RP ID "${r.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else if(e.name==="UnknownError")return new xe({message:"The authenticator was unable to process the specified options, or could not create a new assertion signature",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:e});return new xe({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e})}class Fc{createNewAbortSignal(){if(this.controller){let t=Error("Cancelling existing WebAuthn API call for new one");t.name="AbortError",this.controller.abort(t)}let e=new AbortController;return this.controller=e,e.signal}cancelCeremony(){if(this.controller){let e=Error("Manually cancelling existing WebAuthn API call");e.name="AbortError",this.controller.abort(e),this.controller=void 0}}}var ug=new Fc;function Gc(e){if(!e)throw Error("Credential creation options are required");if(typeof PublicKeyCredential<"u"&&"parseCreationOptionsFromJSON"in PublicKeyCredential&&typeof PublicKeyCredential.parseCreationOptionsFromJSON==="function")return PublicKeyCredential.parseCreationOptionsFromJSON(e);let{challenge:t,user:r,excludeCredentials:n}=e,i=nr(e,["challenge","user","excludeCredentials"]),s=Jt(t).buffer,o=Object.assign(Object.assign({},r),{id:Jt(r.id).buffer}),a=Object.assign(Object.assign({},i),{challenge:s,user:o});if(n&&n.length>0){a.excludeCredentials=Array(n.length);for(let l=0;l<n.length;l++){let c=n[l];a.excludeCredentials[l]=Object.assign(Object.assign({},c),{id:Jt(c.id).buffer,type:c.type||"public-key",transports:c.transports})}}return a}function Uc(e){if(!e)throw Error("Credential request options are required");if(typeof PublicKeyCredential<"u"&&"parseRequestOptionsFromJSON"in PublicKeyCredential&&typeof PublicKeyCredential.parseRequestOptionsFromJSON==="function")return PublicKeyCredential.parseRequestOptionsFromJSON(e);let{challenge:t,allowCredentials:r}=e,n=nr(e,["challenge","allowCredentials"]),i=Jt(t).buffer,s=Object.assign(Object.assign({},n),{challenge:i});if(r&&r.length>0){s.allowCredentials=Array(r.length);for(let o=0;o<r.length;o++){let a=r[o];s.allowCredentials[o]=Object.assign(Object.assign({},a),{id:Jt(a.id).buffer,type:a.type||"public-key",transports:a.transports})}}return s}function jc(e){var t;if("toJSON"in e&&typeof e.toJSON==="function")return e.toJSON();let r=e;return{id:e.id,rawId:e.id,response:{attestationObject:Ut(new Uint8Array(e.response.attestationObject)),clientDataJSON:Ut(new Uint8Array(e.response.clientDataJSON))},type:"public-key",clientExtensionResults:e.getClientExtensionResults(),authenticatorAttachment:(t=r.authenticatorAttachment)!==null&&t!==void 0?t:void 0}}function Hc(e){var t;if("toJSON"in e&&typeof e.toJSON==="function")return e.toJSON();let r=e,n=e.getClientExtensionResults(),i=e.response;return{id:e.id,rawId:e.id,response:{authenticatorData:Ut(new Uint8Array(i.authenticatorData)),clientDataJSON:Ut(new Uint8Array(i.clientDataJSON)),signature:Ut(new Uint8Array(i.signature)),userHandle:i.userHandle?Ut(new Uint8Array(i.userHandle)):void 0},type:"public-key",clientExtensionResults:n,authenticatorAttachment:(t=r.authenticatorAttachment)!==null&&t!==void 0?t:void 0}}function co(e){return e==="localhost"||/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(e)}function Mc(){var e,t;return!!(je()&&("PublicKeyCredential"in window)&&window.PublicKeyCredential&&("credentials"in navigator)&&typeof((e=navigator===null||navigator===void 0?void 0:navigator.credentials)===null||e===void 0?void 0:e.create)==="function"&&typeof((t=navigator===null||navigator===void 0?void 0:navigator.credentials)===null||t===void 0?void 0:t.get)==="function")}async function dg(e){try{let t=await navigator.credentials.create(e);if(!t)return{data:null,error:new Ur("Empty credential response",t)};if(!(t instanceof PublicKeyCredential))return{data:null,error:new Ur("Browser returned unexpected credential type",t)};return{data:t,error:null}}catch(t){return{data:null,error:Dc({error:t,options:e})}}}async function hg(e){try{let t=await navigator.credentials.get(e);if(!t)return{data:null,error:new Ur("Empty credential response",t)};if(!(t instanceof PublicKeyCredential))return{data:null,error:new Ur("Browser returned unexpected credential type",t)};return{data:t,error:null}}catch(t){return{data:null,error:Lc({error:t,options:e})}}}var Ag={hints:["security-key"],authenticatorSelection:{authenticatorAttachment:"cross-platform",requireResidentKey:!1,userVerification:"preferred",residentKey:"discouraged"},attestation:"direct"},fg={userVerification:"preferred",hints:["security-key"],attestation:"direct"};function Gi(...e){let t=(i)=>i!==null&&typeof i==="object"&&!Array.isArray(i),r=(i)=>i instanceof ArrayBuffer||ArrayBuffer.isView(i),n={};for(let i of e){if(!i)continue;for(let s in i){let o=i[s];if(o===void 0)continue;if(Array.isArray(o))n[s]=o;else if(r(o))n[s]=o;else if(t(o)){let a=n[s];if(t(a))n[s]=Gi(a,o);else n[s]=Gi(o)}else n[s]=o}}return n}function gg(e,t){return Gi(Ag,e,t||{})}function mg(e,t){return Gi(fg,e,t||{})}class uo{constructor(e){this.client=e,this.enroll=this._enroll.bind(this),this.challenge=this._challenge.bind(this),this.verify=this._verify.bind(this),this.authenticate=this._authenticate.bind(this),this.register=this._register.bind(this)}async _enroll(e){return this.client.mfa.enroll(Object.assign(Object.assign({},e),{factorType:"webauthn"}))}async _challenge({factorId:e,webauthn:t,friendlyName:r,signal:n},i){var s;try{let{data:o,error:a}=await this.client.mfa.challenge({factorId:e,webauthn:t});if(!o)return{data:null,error:a};let l=n!==null&&n!==void 0?n:ug.createNewAbortSignal();if(o.webauthn.type==="create"){let{user:c}=o.webauthn.credential_options.publicKey;if(!c.name){let u=r;if(!u){let A=(await this.client.getUser()).data.user,m=((s=A===null||A===void 0?void 0:A.user_metadata)===null||s===void 0?void 0:s.name)||(A===null||A===void 0?void 0:A.email)||(A===null||A===void 0?void 0:A.id)||"User";c.name=`${c.id}:${m}`}else c.name=`${c.id}:${u}`}if(!c.displayName)c.displayName=c.name}switch(o.webauthn.type){case"create":{let c=gg(o.webauthn.credential_options.publicKey,i===null||i===void 0?void 0:i.create),{data:u,error:d}=await dg({publicKey:c,signal:l});if(u)return{data:{factorId:e,challengeId:o.id,webauthn:{type:o.webauthn.type,credential_response:u}},error:null};return{data:null,error:d}}case"request":{let c=mg(o.webauthn.credential_options.publicKey,i===null||i===void 0?void 0:i.request),{data:u,error:d}=await hg(Object.assign(Object.assign({},o.webauthn.credential_options),{publicKey:c,signal:l}));if(u)return{data:{factorId:e,challengeId:o.id,webauthn:{type:o.webauthn.type,credential_response:u}},error:null};return{data:null,error:d}}}}catch(o){if(F(o))return{data:null,error:o};return{data:null,error:new vt("Unexpected error in challenge",o)}}}async _verify({challengeId:e,factorId:t,webauthn:r}){return this.client.mfa.verify({factorId:t,challengeId:e,webauthn:r})}async _authenticate({factorId:e,webauthn:{rpId:t=typeof window<"u"?window.location.hostname:void 0,rpOrigins:r=typeof window<"u"?[window.location.origin]:void 0,signal:n}={}},i){if(!t)return{data:null,error:new ar("rpId is required for WebAuthn authentication")};try{if(!Mc())return{data:null,error:new vt("Browser does not support WebAuthn",null)};let{data:s,error:o}=await this.challenge({factorId:e,webauthn:{rpId:t,rpOrigins:r},signal:n},{request:i});if(!s)return{data:null,error:o};let{webauthn:a}=s;return this._verify({factorId:e,challengeId:s.challengeId,webauthn:{type:a.type,rpId:t,rpOrigins:r,credential_response:a.credential_response}})}catch(s){if(F(s))return{data:null,error:s};return{data:null,error:new vt("Unexpected error in authenticate",s)}}}async _register({friendlyName:e,webauthn:{rpId:t=typeof window<"u"?window.location.hostname:void 0,rpOrigins:r=typeof window<"u"?[window.location.origin]:void 0,signal:n}={}},i){if(!t)return{data:null,error:new ar("rpId is required for WebAuthn registration")};try{if(!Mc())return{data:null,error:new vt("Browser does not support WebAuthn",null)};let{data:s,error:o}=await this._enroll({friendlyName:e});if(!s)return await this.client.mfa.listFactors().then((c)=>{var u;return(u=c.data)===null||u===void 0?void 0:u.all.find((d)=>d.factor_type==="webauthn"&&d.friendly_name===e&&d.status!=="unverified")}).then((c)=>c?this.client.mfa.unenroll({factorId:c===null||c===void 0?void 0:c.id}):void 0),{data:null,error:o};let{data:a,error:l}=await this._challenge({factorId:s.id,friendlyName:s.friendly_name,webauthn:{rpId:t,rpOrigins:r},signal:n},{create:i});if(!a)return{data:null,error:l};return this._verify({factorId:s.id,challengeId:a.challengeId,webauthn:{rpId:t,rpOrigins:r,type:a.webauthn.type,credential_response:a.webauthn.credential_response}})}catch(s){if(F(s))return{data:null,error:s};return{data:null,error:new vt("Unexpected error in register",s)}}}}Bc();var pg={url:ac,storageKey:lc,autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,headers:cc,flowType:"implicit",debug:!1,hasCustomAuthorizationHeader:!1,throwOnError:!1,lockAcquireTimeout:5000,skipAutoInitialize:!1};async function Kc(e,t,r){return await r()}var jr={};class Dn{get jwks(){var e,t;return(t=(e=jr[this.storageKey])===null||e===void 0?void 0:e.jwks)!==null&&t!==void 0?t:{keys:[]}}set jwks(e){jr[this.storageKey]=Object.assign(Object.assign({},jr[this.storageKey]),{jwks:e})}get jwks_cached_at(){var e,t;return(t=(e=jr[this.storageKey])===null||e===void 0?void 0:e.cachedAt)!==null&&t!==void 0?t:Number.MIN_SAFE_INTEGER}set jwks_cached_at(e){jr[this.storageKey]=Object.assign(Object.assign({},jr[this.storageKey]),{cachedAt:e})}constructor(e){var t,r,n;this.userStorage=null,this.memoryStorage=null,this.stateChangeEmitters=new Map,this.autoRefreshTicker=null,this.autoRefreshTickTimeout=null,this.visibilityChangedCallback=null,this.refreshingDeferred=null,this.initializePromise=null,this.detectSessionInUrl=!0,this.hasCustomAuthorizationHeader=!1,this.suppressGetSessionWarning=!1,this.lockAcquired=!1,this.pendingInLock=[],this.broadcastChannel=null,this.logger=console.log;let i=Object.assign(Object.assign({},pg),e);if(this.storageKey=i.storageKey,this.instanceID=(t=Dn.nextInstanceID[this.storageKey])!==null&&t!==void 0?t:0,Dn.nextInstanceID[this.storageKey]=this.instanceID+1,this.logDebugMessages=!!i.debug,typeof i.debug==="function")this.logger=i.debug;if(this.instanceID>0&&je()){let s=`${this._logPrefix()} Multiple GoTrueClient instances detected in the same browser context. It is not an error, but this should be avoided as it may produce undefined behavior when used concurrently under the same storage key.`;if(console.warn(s),this.logDebugMessages)console.trace(s)}if(this.persistSession=i.persistSession,this.autoRefreshToken=i.autoRefreshToken,this.admin=new Gr({url:i.url,headers:i.headers,fetch:i.fetch}),this.url=i.url,this.headers=i.headers,this.fetch=Ni(i.fetch),this.lock=i.lock||Kc,this.detectSessionInUrl=i.detectSessionInUrl,this.flowType=i.flowType,this.hasCustomAuthorizationHeader=i.hasCustomAuthorizationHeader,this.throwOnError=i.throwOnError,this.lockAcquireTimeout=i.lockAcquireTimeout,i.lock)this.lock=i.lock;else if(this.persistSession&&je()&&((r=globalThis===null||globalThis===void 0?void 0:globalThis.navigator)===null||r===void 0?void 0:r.locks))this.lock=ao;else this.lock=Kc;if(!this.jwks)this.jwks={keys:[]},this.jwks_cached_at=Number.MIN_SAFE_INTEGER;if(this.mfa={verify:this._verify.bind(this),enroll:this._enroll.bind(this),unenroll:this._unenroll.bind(this),challenge:this._challenge.bind(this),listFactors:this._listFactors.bind(this),challengeAndVerify:this._challengeAndVerify.bind(this),getAuthenticatorAssuranceLevel:this._getAuthenticatorAssuranceLevel.bind(this),webauthn:new uo(this)},this.oauth={getAuthorizationDetails:this._getAuthorizationDetails.bind(this),approveAuthorization:this._approveAuthorization.bind(this),denyAuthorization:this._denyAuthorization.bind(this),listGrants:this._listOAuthGrants.bind(this),revokeGrant:this._revokeOAuthGrant.bind(this)},this.persistSession){if(i.storage)this.storage=i.storage;else if(Pi())this.storage=globalThis.localStorage;else this.memoryStorage={},this.storage=oo(this.memoryStorage);if(i.userStorage)this.userStorage=i.userStorage}else this.memoryStorage={},this.storage=oo(this.memoryStorage);if(je()&&globalThis.BroadcastChannel&&this.persistSession&&this.storageKey){try{this.broadcastChannel=new globalThis.BroadcastChannel(this.storageKey)}catch(s){console.error("Failed to create a new BroadcastChannel, multi-tab state changes will not be available",s)}(n=this.broadcastChannel)===null||n===void 0||n.addEventListener("message",async(s)=>{this._debug("received broadcast notification from other tab or client",s);try{await this._notifyAllSubscribers(s.data.event,s.data.session,!1)}catch(o){this._debug("#broadcastChannel","error",o)}})}if(!i.skipAutoInitialize)this.initialize().catch((s)=>{this._debug("#initialize()","error",s)})}isThrowOnErrorEnabled(){return this.throwOnError}_returnResult(e){if(this.throwOnError&&e&&e.error)throw e.error;return e}_logPrefix(){return`GoTrueClient@${this.storageKey}:${this.instanceID} (${Ii}) ${new Date().toISOString()}`}_debug(...e){if(this.logDebugMessages)this.logger(this._logPrefix(),...e);return this}async initialize(){if(this.initializePromise)return await this.initializePromise;return this.initializePromise=(async()=>await this._acquireLock(this.lockAcquireTimeout,async()=>await this._initialize()))(),await this.initializePromise}async _initialize(){var e;try{let t={},r="none";if(je()){if(t=wc(window.location.href),this._isImplicitGrantCallback(t))r="implicit";else if(await this._isPKCECallback(t))r="pkce"}if(je()&&this.detectSessionInUrl&&r!=="none"){let{data:n,error:i}=await this._getSessionFromURL(t,r);if(i){if(this._debug("#_initialize()","error detecting session from URL",i),Ac(i)){let a=(e=i.details)===null||e===void 0?void 0:e.code;if(a==="identity_already_exists"||a==="identity_not_found"||a==="single_identity_not_deletable")return{error:i}}return{error:i}}let{session:s,redirectType:o}=n;return this._debug("#_initialize()","detected session in URL",s,"redirect type",o),await this._saveSession(s),setTimeout(async()=>{if(o==="recovery")await this._notifyAllSubscribers("PASSWORD_RECOVERY",s);else await this._notifyAllSubscribers("SIGNED_IN",s)},0),{error:null}}return await this._recoverAndRefresh(),{error:null}}catch(t){if(F(t))return this._returnResult({error:t});return this._returnResult({error:new vt("Unexpected error during initialization",t)})}finally{await this._handleVisibilityChange(),this._debug("#_initialize()","end")}}async signInAnonymously(e){var t,r,n;try{let i=await U(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,body:{data:(r=(t=e===null||e===void 0?void 0:e.options)===null||t===void 0?void 0:t.data)!==null&&r!==void 0?r:{},gotrue_meta_security:{captcha_token:(n=e===null||e===void 0?void 0:e.options)===null||n===void 0?void 0:n.captchaToken}},xform:bt}),{data:s,error:o}=i;if(o||!s)return this._returnResult({data:{user:null,session:null},error:o});let{session:a,user:l}=s;if(s.session)await this._saveSession(s.session),await this._notifyAllSubscribers("SIGNED_IN",a);return this._returnResult({data:{user:l,session:a},error:null})}catch(i){if(F(i))return this._returnResult({data:{user:null,session:null},error:i});throw i}}async signUp(e){var t,r,n;try{let i;if("email"in e){let{email:c,password:u,options:d}=e,A=null,m=null;if(this.flowType==="pkce")[A,m]=await ur(this.storage,this.storageKey);i=await U(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,redirectTo:d===null||d===void 0?void 0:d.emailRedirectTo,body:{email:c,password:u,data:(t=d===null||d===void 0?void 0:d.data)!==null&&t!==void 0?t:{},gotrue_meta_security:{captcha_token:d===null||d===void 0?void 0:d.captchaToken},code_challenge:A,code_challenge_method:m},xform:bt})}else if("phone"in e){let{phone:c,password:u,options:d}=e;i=await U(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,body:{phone:c,password:u,data:(r=d===null||d===void 0?void 0:d.data)!==null&&r!==void 0?r:{},channel:(n=d===null||d===void 0?void 0:d.channel)!==null&&n!==void 0?n:"sms",gotrue_meta_security:{captcha_token:d===null||d===void 0?void 0:d.captchaToken}},xform:bt})}else throw new Lr("You must provide either an email or phone number and a password");let{data:s,error:o}=i;if(o||!s)return await We(this.storage,`${this.storageKey}-code-verifier`),this._returnResult({data:{user:null,session:null},error:o});let{session:a,user:l}=s;if(s.session)await this._saveSession(s.session),await this._notifyAllSubscribers("SIGNED_IN",a);return this._returnResult({data:{user:l,session:a},error:null})}catch(i){if(await We(this.storage,`${this.storageKey}-code-verifier`),F(i))return this._returnResult({data:{user:null,session:null},error:i});throw i}}async signInWithPassword(e){try{let t;if("email"in e){let{email:i,password:s,options:o}=e;t=await U(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{email:i,password:s,gotrue_meta_security:{captcha_token:o===null||o===void 0?void 0:o.captchaToken}},xform:io})}else if("phone"in e){let{phone:i,password:s,options:o}=e;t=await U(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{phone:i,password:s,gotrue_meta_security:{captcha_token:o===null||o===void 0?void 0:o.captchaToken}},xform:io})}else throw new Lr("You must provide either an email or phone number and a password");let{data:r,error:n}=t;if(n)return this._returnResult({data:{user:null,session:null},error:n});else if(!r||!r.session||!r.user){let i=new Qt;return this._returnResult({data:{user:null,session:null},error:i})}if(r.session)await this._saveSession(r.session),await this._notifyAllSubscribers("SIGNED_IN",r.session);return this._returnResult({data:Object.assign({user:r.user,session:r.session},r.weak_password?{weakPassword:r.weak_password}:null),error:n})}catch(t){if(F(t))return this._returnResult({data:{user:null,session:null},error:t});throw t}}async signInWithOAuth(e){var t,r,n,i;return await this._handleProviderSignIn(e.provider,{redirectTo:(t=e.options)===null||t===void 0?void 0:t.redirectTo,scopes:(r=e.options)===null||r===void 0?void 0:r.scopes,queryParams:(n=e.options)===null||n===void 0?void 0:n.queryParams,skipBrowserRedirect:(i=e.options)===null||i===void 0?void 0:i.skipBrowserRedirect})}async exchangeCodeForSession(e){return await this.initializePromise,this._acquireLock(this.lockAcquireTimeout,async()=>this._exchangeCodeForSession(e))}async signInWithWeb3(e){let{chain:t}=e;switch(t){case"ethereum":return await this.signInWithEthereum(e);case"solana":return await this.signInWithSolana(e);default:throw Error(`@supabase/auth-js: Unsupported chain "${t}"`)}}async signInWithEthereum(e){var t,r,n,i,s,o,a,l,c,u,d;let A,m;if("message"in e)A=e.message,m=e.signature;else{let{chain:g,wallet:f,statement:p,options:v}=e,y;if(!je()){if(typeof f!=="object"||!(v===null||v===void 0?void 0:v.url))throw Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");y=f}else if(typeof f==="object")y=f;else{let P=window;if("ethereum"in P&&typeof P.ethereum==="object"&&"request"in P.ethereum&&typeof P.ethereum.request==="function")y=P.ethereum;else throw Error("@supabase/auth-js: No compatible Ethereum wallet interface on the window object (window.ethereum) detected. Make sure the user already has a wallet installed and connected for this app. Prefer passing the wallet interface object directly to signInWithWeb3({ chain: 'ethereum', wallet: resolvedUserWallet }) instead.")}let S=new URL((t=v===null||v===void 0?void 0:v.url)!==null&&t!==void 0?t:window.location.href),_=await y.request({method:"eth_requestAccounts"}).then((P)=>P).catch(()=>{throw Error("@supabase/auth-js: Wallet method eth_requestAccounts is missing or invalid")});if(!_||_.length===0)throw Error("@supabase/auth-js: No accounts available. Please ensure the wallet is connected.");let b=lo(_[0]),w=(r=v===null||v===void 0?void 0:v.signInWithEthereum)===null||r===void 0?void 0:r.chainId;if(!w){let P=await y.request({method:"eth_chainId"});w=Oc(P)}let C={domain:S.host,address:b,statement:p,uri:S.href,version:"1",chainId:w,nonce:(n=v===null||v===void 0?void 0:v.signInWithEthereum)===null||n===void 0?void 0:n.nonce,issuedAt:(s=(i=v===null||v===void 0?void 0:v.signInWithEthereum)===null||i===void 0?void 0:i.issuedAt)!==null&&s!==void 0?s:new Date,expirationTime:(o=v===null||v===void 0?void 0:v.signInWithEthereum)===null||o===void 0?void 0:o.expirationTime,notBefore:(a=v===null||v===void 0?void 0:v.signInWithEthereum)===null||a===void 0?void 0:a.notBefore,requestId:(l=v===null||v===void 0?void 0:v.signInWithEthereum)===null||l===void 0?void 0:l.requestId,resources:(c=v===null||v===void 0?void 0:v.signInWithEthereum)===null||c===void 0?void 0:c.resources};A=Nc(C),m=await y.request({method:"personal_sign",params:[Pc(A),b]})}try{let{data:g,error:f}=await U(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"ethereum",message:A,signature:m},((u=e.options)===null||u===void 0?void 0:u.captchaToken)?{gotrue_meta_security:{captcha_token:(d=e.options)===null||d===void 0?void 0:d.captchaToken}}:null),xform:bt});if(f)throw f;if(!g||!g.session||!g.user){let p=new Qt;return this._returnResult({data:{user:null,session:null},error:p})}if(g.session)await this._saveSession(g.session),await this._notifyAllSubscribers("SIGNED_IN",g.session);return this._returnResult({data:Object.assign({},g),error:f})}catch(g){if(F(g))return this._returnResult({data:{user:null,session:null},error:g});throw g}}async signInWithSolana(e){var t,r,n,i,s,o,a,l,c,u,d,A;let m,g;if("message"in e)m=e.message,g=e.signature;else{let{chain:f,wallet:p,statement:v,options:y}=e,S;if(!je()){if(typeof p!=="object"||!(y===null||y===void 0?void 0:y.url))throw Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");S=p}else if(typeof p==="object")S=p;else{let b=window;if("solana"in b&&typeof b.solana==="object"&&(("signIn"in b.solana)&&typeof b.solana.signIn==="function"||("signMessage"in b.solana)&&typeof b.solana.signMessage==="function"))S=b.solana;else throw Error("@supabase/auth-js: No compatible Solana wallet interface on the window object (window.solana) detected. Make sure the user already has a wallet installed and connected for this app. Prefer passing the wallet interface object directly to signInWithWeb3({ chain: 'solana', wallet: resolvedUserWallet }) instead.")}let _=new URL((t=y===null||y===void 0?void 0:y.url)!==null&&t!==void 0?t:window.location.href);if("signIn"in S&&S.signIn){let b=await S.signIn(Object.assign(Object.assign(Object.assign({issuedAt:new Date().toISOString()},y===null||y===void 0?void 0:y.signInWithSolana),{version:"1",domain:_.host,uri:_.href}),v?{statement:v}:null)),w;if(Array.isArray(b)&&b[0]&&typeof b[0]==="object")w=b[0];else if(b&&typeof b==="object"&&"signedMessage"in b&&"signature"in b)w=b;else throw Error("@supabase/auth-js: Wallet method signIn() returned unrecognized value");if("signedMessage"in w&&"signature"in w&&(typeof w.signedMessage==="string"||w.signedMessage instanceof Uint8Array)&&w.signature instanceof Uint8Array)m=typeof w.signedMessage==="string"?w.signedMessage:new TextDecoder().decode(w.signedMessage),g=w.signature;else throw Error("@supabase/auth-js: Wallet method signIn() API returned object without signedMessage and signature fields")}else{if(!("signMessage"in S)||typeof S.signMessage!=="function"||!("publicKey"in S)||typeof S!=="object"||!S.publicKey||!("toBase58"in S.publicKey)||typeof S.publicKey.toBase58!=="function")throw Error("@supabase/auth-js: Wallet does not have a compatible signMessage() and publicKey.toBase58() API");m=[`${_.host} wants you to sign in with your Solana account:`,S.publicKey.toBase58(),...v?["",v,""]:[""],"Version: 1",`URI: ${_.href}`,`Issued At: ${(n=(r=y===null||y===void 0?void 0:y.signInWithSolana)===null||r===void 0?void 0:r.issuedAt)!==null&&n!==void 0?n:new Date().toISOString()}`,...((i=y===null||y===void 0?void 0:y.signInWithSolana)===null||i===void 0?void 0:i.notBefore)?[`Not Before: ${y.signInWithSolana.notBefore}`]:[],...((s=y===null||y===void 0?void 0:y.signInWithSolana)===null||s===void 0?void 0:s.expirationTime)?[`Expiration Time: ${y.signInWithSolana.expirationTime}`]:[],...((o=y===null||y===void 0?void 0:y.signInWithSolana)===null||o===void 0?void 0:o.chainId)?[`Chain ID: ${y.signInWithSolana.chainId}`]:[],...((a=y===null||y===void 0?void 0:y.signInWithSolana)===null||a===void 0?void 0:a.nonce)?[`Nonce: ${y.signInWithSolana.nonce}`]:[],...((l=y===null||y===void 0?void 0:y.signInWithSolana)===null||l===void 0?void 0:l.requestId)?[`Request ID: ${y.signInWithSolana.requestId}`]:[],...((u=(c=y===null||y===void 0?void 0:y.signInWithSolana)===null||c===void 0?void 0:c.resources)===null||u===void 0?void 0:u.length)?["Resources",...y.signInWithSolana.resources.map((w)=>`- ${w}`)]:[]].join(`
54
+ `);let b=await S.signMessage(new TextEncoder().encode(m),"utf8");if(!b||!(b instanceof Uint8Array))throw Error("@supabase/auth-js: Wallet signMessage() API returned an recognized value");g=b}}try{let{data:f,error:p}=await U(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"solana",message:m,signature:Ut(g)},((d=e.options)===null||d===void 0?void 0:d.captchaToken)?{gotrue_meta_security:{captcha_token:(A=e.options)===null||A===void 0?void 0:A.captchaToken}}:null),xform:bt});if(p)throw p;if(!f||!f.session||!f.user){let v=new Qt;return this._returnResult({data:{user:null,session:null},error:v})}if(f.session)await this._saveSession(f.session),await this._notifyAllSubscribers("SIGNED_IN",f.session);return this._returnResult({data:Object.assign({},f),error:p})}catch(f){if(F(f))return this._returnResult({data:{user:null,session:null},error:f});throw f}}async _exchangeCodeForSession(e){let t=await $t(this.storage,`${this.storageKey}-code-verifier`),[r,n]=(t!==null&&t!==void 0?t:"").split("/");try{if(!r&&this.flowType==="pkce")throw new to;let{data:i,error:s}=await U(this.fetch,"POST",`${this.url}/token?grant_type=pkce`,{headers:this.headers,body:{auth_code:e,code_verifier:r},xform:bt});if(await We(this.storage,`${this.storageKey}-code-verifier`),s)throw s;if(!i||!i.session||!i.user){let o=new Qt;return this._returnResult({data:{user:null,session:null,redirectType:null},error:o})}if(i.session)await this._saveSession(i.session),await this._notifyAllSubscribers("SIGNED_IN",i.session);return this._returnResult({data:Object.assign(Object.assign({},i),{redirectType:n!==null&&n!==void 0?n:null}),error:s})}catch(i){if(await We(this.storage,`${this.storageKey}-code-verifier`),F(i))return this._returnResult({data:{user:null,session:null,redirectType:null},error:i});throw i}}async signInWithIdToken(e){try{let{options:t,provider:r,token:n,access_token:i,nonce:s}=e,o=await U(this.fetch,"POST",`${this.url}/token?grant_type=id_token`,{headers:this.headers,body:{provider:r,id_token:n,access_token:i,nonce:s,gotrue_meta_security:{captcha_token:t===null||t===void 0?void 0:t.captchaToken}},xform:bt}),{data:a,error:l}=o;if(l)return this._returnResult({data:{user:null,session:null},error:l});else if(!a||!a.session||!a.user){let c=new Qt;return this._returnResult({data:{user:null,session:null},error:c})}if(a.session)await this._saveSession(a.session),await this._notifyAllSubscribers("SIGNED_IN",a.session);return this._returnResult({data:a,error:l})}catch(t){if(F(t))return this._returnResult({data:{user:null,session:null},error:t});throw t}}async signInWithOtp(e){var t,r,n,i,s;try{if("email"in e){let{email:o,options:a}=e,l=null,c=null;if(this.flowType==="pkce")[l,c]=await ur(this.storage,this.storageKey);let{error:u}=await U(this.fetch,"POST",`${this.url}/otp`,{headers:this.headers,body:{email:o,data:(t=a===null||a===void 0?void 0:a.data)!==null&&t!==void 0?t:{},create_user:(r=a===null||a===void 0?void 0:a.shouldCreateUser)!==null&&r!==void 0?r:!0,gotrue_meta_security:{captcha_token:a===null||a===void 0?void 0:a.captchaToken},code_challenge:l,code_challenge_method:c},redirectTo:a===null||a===void 0?void 0:a.emailRedirectTo});return this._returnResult({data:{user:null,session:null},error:u})}if("phone"in e){let{phone:o,options:a}=e,{data:l,error:c}=await U(this.fetch,"POST",`${this.url}/otp`,{headers:this.headers,body:{phone:o,data:(n=a===null||a===void 0?void 0:a.data)!==null&&n!==void 0?n:{},create_user:(i=a===null||a===void 0?void 0:a.shouldCreateUser)!==null&&i!==void 0?i:!0,gotrue_meta_security:{captcha_token:a===null||a===void 0?void 0:a.captchaToken},channel:(s=a===null||a===void 0?void 0:a.channel)!==null&&s!==void 0?s:"sms"}});return this._returnResult({data:{user:null,session:null,messageId:l===null||l===void 0?void 0:l.message_id},error:c})}throw new Lr("You must provide either an email or phone number.")}catch(o){if(await We(this.storage,`${this.storageKey}-code-verifier`),F(o))return this._returnResult({data:{user:null,session:null},error:o});throw o}}async verifyOtp(e){var t,r;try{let n=void 0,i=void 0;if("options"in e)n=(t=e.options)===null||t===void 0?void 0:t.redirectTo,i=(r=e.options)===null||r===void 0?void 0:r.captchaToken;let{data:s,error:o}=await U(this.fetch,"POST",`${this.url}/verify`,{headers:this.headers,body:Object.assign(Object.assign({},e),{gotrue_meta_security:{captcha_token:i}}),redirectTo:n,xform:bt});if(o)throw o;if(!s)throw Error("An error occurred on token verification.");let{session:a,user:l}=s;if(a===null||a===void 0?void 0:a.access_token)await this._saveSession(a),await this._notifyAllSubscribers(e.type=="recovery"?"PASSWORD_RECOVERY":"SIGNED_IN",a);return this._returnResult({data:{user:l,session:a},error:null})}catch(n){if(F(n))return this._returnResult({data:{user:null,session:null},error:n});throw n}}async signInWithSSO(e){var t,r,n,i,s;try{let o=null,a=null;if(this.flowType==="pkce")[o,a]=await ur(this.storage,this.storageKey);let l=await U(this.fetch,"POST",`${this.url}/sso`,{body:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},"providerId"in e?{provider_id:e.providerId}:null),"domain"in e?{domain:e.domain}:null),{redirect_to:(r=(t=e.options)===null||t===void 0?void 0:t.redirectTo)!==null&&r!==void 0?r:void 0}),((n=e===null||e===void 0?void 0:e.options)===null||n===void 0?void 0:n.captchaToken)?{gotrue_meta_security:{captcha_token:e.options.captchaToken}}:null),{skip_http_redirect:!0,code_challenge:o,code_challenge_method:a}),headers:this.headers,xform:Rc});if(((i=l.data)===null||i===void 0?void 0:i.url)&&je()&&!((s=e.options)===null||s===void 0?void 0:s.skipBrowserRedirect))window.location.assign(l.data.url);return this._returnResult(l)}catch(o){if(await We(this.storage,`${this.storageKey}-code-verifier`),F(o))return this._returnResult({data:null,error:o});throw o}}async reauthenticate(){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>await this._reauthenticate())}async _reauthenticate(){try{return await this._useSession(async(e)=>{let{data:{session:t},error:r}=e;if(r)throw r;if(!t)throw new Ze;let{error:n}=await U(this.fetch,"GET",`${this.url}/reauthenticate`,{headers:this.headers,jwt:t.access_token});return this._returnResult({data:{user:null,session:null},error:n})})}catch(e){if(F(e))return this._returnResult({data:{user:null,session:null},error:e});throw e}}async resend(e){try{let t=`${this.url}/resend`;if("email"in e){let{email:r,type:n,options:i}=e,{error:s}=await U(this.fetch,"POST",t,{headers:this.headers,body:{email:r,type:n,gotrue_meta_security:{captcha_token:i===null||i===void 0?void 0:i.captchaToken}},redirectTo:i===null||i===void 0?void 0:i.emailRedirectTo});return this._returnResult({data:{user:null,session:null},error:s})}else if("phone"in e){let{phone:r,type:n,options:i}=e,{data:s,error:o}=await U(this.fetch,"POST",t,{headers:this.headers,body:{phone:r,type:n,gotrue_meta_security:{captcha_token:i===null||i===void 0?void 0:i.captchaToken}}});return this._returnResult({data:{user:null,session:null,messageId:s===null||s===void 0?void 0:s.message_id},error:o})}throw new Lr("You must provide either an email or phone number and a type")}catch(t){if(F(t))return this._returnResult({data:{user:null,session:null},error:t});throw t}}async getSession(){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>this._useSession(async(t)=>t))}async _acquireLock(e,t){this._debug("#_acquireLock","begin",e);try{if(this.lockAcquired){let r=this.pendingInLock.length?this.pendingInLock[this.pendingInLock.length-1]:Promise.resolve(),n=(async()=>(await r,await t()))();return this.pendingInLock.push((async()=>{try{await n}catch(i){}})()),n}return await this.lock(`lock:${this.storageKey}`,e,async()=>{this._debug("#_acquireLock","lock acquired for storage key",this.storageKey);try{this.lockAcquired=!0;let r=t();this.pendingInLock.push((async()=>{try{await r}catch(n){}})()),await r;while(this.pendingInLock.length){let n=[...this.pendingInLock];await Promise.all(n),this.pendingInLock.splice(0,n.length)}return await r}finally{this._debug("#_acquireLock","lock released for storage key",this.storageKey),this.lockAcquired=!1}})}finally{this._debug("#_acquireLock","end")}}async _useSession(e){this._debug("#_useSession","begin");try{let t=await this.__loadSession();return await e(t)}finally{this._debug("#_useSession","end")}}async __loadSession(){if(this._debug("#__loadSession()","begin"),!this.lockAcquired)this._debug("#__loadSession()","used outside of an acquired lock!",Error().stack);try{let e=null,t=await $t(this.storage,this.storageKey);if(this._debug("#getSession()","session from storage",t),t!==null)if(this._isValidSession(t))e=t;else this._debug("#getSession()","session from storage is not valid"),await this._removeSession();if(!e)return{data:{session:null},error:null};let r=e.expires_at?e.expires_at*1000-Date.now()<ki:!1;if(this._debug("#__loadSession()",`session has${r?"":" not"} expired`,"expires_at",e.expires_at),!r){if(this.userStorage){let s=await $t(this.userStorage,this.storageKey+"-user");if(s===null||s===void 0?void 0:s.user)e.user=s.user;else e.user=Di()}if(this.storage.isServer&&e.user&&!e.user.__isUserNotAvailableProxy){let s={value:this.suppressGetSessionWarning};if(e.user=xc(e.user,s),s.value)this.suppressGetSessionWarning=!0}return{data:{session:e},error:null}}let{data:n,error:i}=await this._callRefreshToken(e.refresh_token);if(i)return this._returnResult({data:{session:null},error:i});return this._returnResult({data:{session:n},error:null})}finally{this._debug("#__loadSession()","end")}}async getUser(e){if(e)return await this._getUser(e);await this.initializePromise;let t=await this._acquireLock(this.lockAcquireTimeout,async()=>await this._getUser());if(t.data.user)this.suppressGetSessionWarning=!0;return t}async _getUser(e){try{if(e)return await U(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:e,xform:Ot});return await this._useSession(async(t)=>{var r,n,i;let{data:s,error:o}=t;if(o)throw o;if(!((r=s.session)===null||r===void 0?void 0:r.access_token)&&!this.hasCustomAuthorizationHeader)return{data:{user:null},error:new Ze};return await U(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:(i=(n=s.session)===null||n===void 0?void 0:n.access_token)!==null&&i!==void 0?i:void 0,xform:Ot})})}catch(t){if(F(t)){if(Bn(t))await this._removeSession(),await We(this.storage,`${this.storageKey}-code-verifier`);return this._returnResult({data:{user:null},error:t})}throw t}}async updateUser(e,t={}){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>await this._updateUser(e,t))}async _updateUser(e,t={}){try{return await this._useSession(async(r)=>{let{data:n,error:i}=r;if(i)throw i;if(!n.session)throw new Ze;let s=n.session,o=null,a=null;if(this.flowType==="pkce"&&e.email!=null)[o,a]=await ur(this.storage,this.storageKey);let{data:l,error:c}=await U(this.fetch,"PUT",`${this.url}/user`,{headers:this.headers,redirectTo:t===null||t===void 0?void 0:t.emailRedirectTo,body:Object.assign(Object.assign({},e),{code_challenge:o,code_challenge_method:a}),jwt:s.access_token,xform:Ot});if(c)throw c;return s.user=l.user,await this._saveSession(s),await this._notifyAllSubscribers("USER_UPDATED",s),this._returnResult({data:{user:s.user},error:null})})}catch(r){if(await We(this.storage,`${this.storageKey}-code-verifier`),F(r))return this._returnResult({data:{user:null},error:r});throw r}}async setSession(e){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>await this._setSession(e))}async _setSession(e){try{if(!e.access_token||!e.refresh_token)throw new Ze;let t=Date.now()/1000,r=t,n=!0,i=null,{payload:s}=Nn(e.access_token);if(s.exp)r=s.exp,n=r<=t;if(n){let{data:o,error:a}=await this._callRefreshToken(e.refresh_token);if(a)return this._returnResult({data:{user:null,session:null},error:a});if(!o)return{data:{user:null,session:null},error:null};i=o}else{let{data:o,error:a}=await this._getUser(e.access_token);if(a)return this._returnResult({data:{user:null,session:null},error:a});i={access_token:e.access_token,refresh_token:e.refresh_token,user:o.user,token_type:"bearer",expires_in:r-t,expires_at:r},await this._saveSession(i),await this._notifyAllSubscribers("SIGNED_IN",i)}return this._returnResult({data:{user:i.user,session:i},error:null})}catch(t){if(F(t))return this._returnResult({data:{session:null,user:null},error:t});throw t}}async refreshSession(e){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>await this._refreshSession(e))}async _refreshSession(e){try{return await this._useSession(async(t)=>{var r;if(!e){let{data:s,error:o}=t;if(o)throw o;e=(r=s.session)!==null&&r!==void 0?r:void 0}if(!(e===null||e===void 0?void 0:e.refresh_token))throw new Ze;let{data:n,error:i}=await this._callRefreshToken(e.refresh_token);if(i)return this._returnResult({data:{user:null,session:null},error:i});if(!n)return this._returnResult({data:{user:null,session:null},error:null});return this._returnResult({data:{user:n.user,session:n},error:null})})}catch(t){if(F(t))return this._returnResult({data:{user:null,session:null},error:t});throw t}}async _getSessionFromURL(e,t){try{if(!je())throw new Mr("No browser detected.");if(e.error||e.error_description||e.error_code)throw new Mr(e.error_description||"Error in URL with unspecified error_description",{error:e.error||"unspecified_error",code:e.error_code||"unspecified_code"});switch(t){case"implicit":if(this.flowType==="pkce")throw new Ri("Not a valid PKCE flow url.");break;case"pkce":if(this.flowType==="implicit")throw new Mr("Not a valid implicit grant flow url.");break;default:}if(t==="pkce"){if(this._debug("#_initialize()","begin","is PKCE flow",!0),!e.code)throw new Ri("No code detected.");let{data:v,error:y}=await this._exchangeCodeForSession(e.code);if(y)throw y;let S=new URL(window.location.href);return S.searchParams.delete("code"),window.history.replaceState(window.history.state,"",S.toString()),{data:{session:v.session,redirectType:null},error:null}}let{provider_token:r,provider_refresh_token:n,access_token:i,refresh_token:s,expires_in:o,expires_at:a,token_type:l}=e;if(!i||!o||!s||!l)throw new Mr("No session defined in URL");let c=Math.round(Date.now()/1000),u=parseInt(o),d=c+u;if(a)d=parseInt(a);let A=d-c;if(A*1000<=or)console.warn(`@supabase/gotrue-js: Session as retrieved from URL expires in ${A}s, should have been closer to ${u}s`);let m=d-u;if(c-m>=120)console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued over 120s ago, URL could be stale",m,d,c);else if(c-m<0)console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued in the future? Check the device clock for skew",m,d,c);let{data:g,error:f}=await this._getUser(i);if(f)throw f;let p={provider_token:r,provider_refresh_token:n,access_token:i,expires_in:u,expires_at:d,refresh_token:s,token_type:l,user:g.user};return window.location.hash="",this._debug("#_getSessionFromURL()","clearing window.location.hash"),this._returnResult({data:{session:p,redirectType:e.type},error:null})}catch(r){if(F(r))return this._returnResult({data:{session:null,redirectType:null},error:r});throw r}}_isImplicitGrantCallback(e){if(typeof this.detectSessionInUrl==="function")return this.detectSessionInUrl(new URL(window.location.href),e);return Boolean(e.access_token||e.error_description)}async _isPKCECallback(e){let t=await $t(this.storage,`${this.storageKey}-code-verifier`);return!!(e.code&&t)}async signOut(e={scope:"global"}){return await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>await this._signOut(e))}async _signOut({scope:e}={scope:"global"}){return await this._useSession(async(t)=>{var r;let{data:n,error:i}=t;if(i&&!Bn(i))return this._returnResult({error:i});let s=(r=n.session)===null||r===void 0?void 0:r.access_token;if(s){let{error:o}=await this.admin.signOut(s,e);if(o){if(!(hc(o)&&(o.status===404||o.status===401||o.status===403)||Bn(o)))return this._returnResult({error:o})}}if(e!=="others")await this._removeSession(),await We(this.storage,`${this.storageKey}-code-verifier`);return this._returnResult({error:null})})}onAuthStateChange(e){let t=yc(),r={id:t,callback:e,unsubscribe:()=>{this._debug("#unsubscribe()","state change callback with id removed",t),this.stateChangeEmitters.delete(t)}};return this._debug("#onAuthStateChange()","registered callback with id",t),this.stateChangeEmitters.set(t,r),(async()=>{await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>{this._emitInitialSession(t)})})(),{data:{subscription:r}}}async _emitInitialSession(e){return await this._useSession(async(t)=>{var r,n;try{let{data:{session:i},error:s}=t;if(s)throw s;await((r=this.stateChangeEmitters.get(e))===null||r===void 0?void 0:r.callback("INITIAL_SESSION",i)),this._debug("INITIAL_SESSION","callback id",e,"session",i)}catch(i){if(await((n=this.stateChangeEmitters.get(e))===null||n===void 0?void 0:n.callback("INITIAL_SESSION",null)),this._debug("INITIAL_SESSION","callback id",e,"error",i),Bn(i))console.warn(i);else console.error(i)}})}async resetPasswordForEmail(e,t={}){let r=null,n=null;if(this.flowType==="pkce")[r,n]=await ur(this.storage,this.storageKey,!0);try{return await U(this.fetch,"POST",`${this.url}/recover`,{body:{email:e,code_challenge:r,code_challenge_method:n,gotrue_meta_security:{captcha_token:t.captchaToken}},headers:this.headers,redirectTo:t.redirectTo})}catch(i){if(await We(this.storage,`${this.storageKey}-code-verifier`),F(i))return this._returnResult({data:null,error:i});throw i}}async getUserIdentities(){var e;try{let{data:t,error:r}=await this.getUser();if(r)throw r;return this._returnResult({data:{identities:(e=t.user.identities)!==null&&e!==void 0?e:[]},error:null})}catch(t){if(F(t))return this._returnResult({data:null,error:t});throw t}}async linkIdentity(e){if("token"in e)return this.linkIdentityIdToken(e);return this.linkIdentityOAuth(e)}async linkIdentityOAuth(e){var t;try{let{data:r,error:n}=await this._useSession(async(i)=>{var s,o,a,l,c;let{data:u,error:d}=i;if(d)throw d;let A=await this._getUrlForProvider(`${this.url}/user/identities/authorize`,e.provider,{redirectTo:(s=e.options)===null||s===void 0?void 0:s.redirectTo,scopes:(o=e.options)===null||o===void 0?void 0:o.scopes,queryParams:(a=e.options)===null||a===void 0?void 0:a.queryParams,skipBrowserRedirect:!0});return await U(this.fetch,"GET",A,{headers:this.headers,jwt:(c=(l=u.session)===null||l===void 0?void 0:l.access_token)!==null&&c!==void 0?c:void 0})});if(n)throw n;if(je()&&!((t=e.options)===null||t===void 0?void 0:t.skipBrowserRedirect))window.location.assign(r===null||r===void 0?void 0:r.url);return this._returnResult({data:{provider:e.provider,url:r===null||r===void 0?void 0:r.url},error:null})}catch(r){if(F(r))return this._returnResult({data:{provider:e.provider,url:null},error:r});throw r}}async linkIdentityIdToken(e){return await this._useSession(async(t)=>{var r;try{let{error:n,data:{session:i}}=t;if(n)throw n;let{options:s,provider:o,token:a,access_token:l,nonce:c}=e,u=await U(this.fetch,"POST",`${this.url}/token?grant_type=id_token`,{headers:this.headers,jwt:(r=i===null||i===void 0?void 0:i.access_token)!==null&&r!==void 0?r:void 0,body:{provider:o,id_token:a,access_token:l,nonce:c,link_identity:!0,gotrue_meta_security:{captcha_token:s===null||s===void 0?void 0:s.captchaToken}},xform:bt}),{data:d,error:A}=u;if(A)return this._returnResult({data:{user:null,session:null},error:A});else if(!d||!d.session||!d.user)return this._returnResult({data:{user:null,session:null},error:new Qt});if(d.session)await this._saveSession(d.session),await this._notifyAllSubscribers("USER_UPDATED",d.session);return this._returnResult({data:d,error:A})}catch(n){if(await We(this.storage,`${this.storageKey}-code-verifier`),F(n))return this._returnResult({data:{user:null,session:null},error:n});throw n}})}async unlinkIdentity(e){try{return await this._useSession(async(t)=>{var r,n;let{data:i,error:s}=t;if(s)throw s;return await U(this.fetch,"DELETE",`${this.url}/user/identities/${e.identity_id}`,{headers:this.headers,jwt:(n=(r=i.session)===null||r===void 0?void 0:r.access_token)!==null&&n!==void 0?n:void 0})})}catch(t){if(F(t))return this._returnResult({data:null,error:t});throw t}}async _refreshAccessToken(e){let t=`#_refreshAccessToken(${e.substring(0,5)}...)`;this._debug(t,"begin");try{let r=Date.now();return await Cc(async(n)=>{if(n>0)await vc(200*Math.pow(2,n-1));return this._debug(t,"refreshing attempt",n),await U(this.fetch,"POST",`${this.url}/token?grant_type=refresh_token`,{body:{refresh_token:e},headers:this.headers,xform:bt})},(n,i)=>{let s=200*Math.pow(2,n);return i&&Ti(i)&&Date.now()+s-r<or})}catch(r){if(this._debug(t,"error",r),F(r))return this._returnResult({data:{session:null,user:null},error:r});throw r}finally{this._debug(t,"end")}}_isValidSession(e){return typeof e==="object"&&e!==null&&"access_token"in e&&"refresh_token"in e&&"expires_at"in e}async _handleProviderSignIn(e,t){let r=await this._getUrlForProvider(`${this.url}/authorize`,e,{redirectTo:t.redirectTo,scopes:t.scopes,queryParams:t.queryParams});if(this._debug("#_handleProviderSignIn()","provider",e,"options",t,"url",r),je()&&!t.skipBrowserRedirect)window.location.assign(r);return{data:{provider:e,url:r},error:null}}async _recoverAndRefresh(){var e,t;let r="#_recoverAndRefresh()";this._debug("#_recoverAndRefresh()","begin");try{let n=await $t(this.storage,this.storageKey);if(n&&this.userStorage){let s=await $t(this.userStorage,this.storageKey+"-user");if(!this.storage.isServer&&Object.is(this.storage,this.userStorage)&&!s)s={user:n.user},await cr(this.userStorage,this.storageKey+"-user",s);n.user=(e=s===null||s===void 0?void 0:s.user)!==null&&e!==void 0?e:Di()}else if(n&&!n.user){if(!n.user){let s=await $t(this.storage,this.storageKey+"-user");if(s&&(s===null||s===void 0?void 0:s.user))n.user=s.user,await We(this.storage,this.storageKey+"-user"),await cr(this.storage,this.storageKey,n);else n.user=Di()}}if(this._debug("#_recoverAndRefresh()","session from storage",n),!this._isValidSession(n)){if(this._debug("#_recoverAndRefresh()","session is not valid"),n!==null)await this._removeSession();return}let i=((t=n.expires_at)!==null&&t!==void 0?t:1/0)*1000-Date.now()<ki;if(this._debug("#_recoverAndRefresh()",`session has${i?"":" not"} expired with margin of ${ki}s`),i){if(this.autoRefreshToken&&n.refresh_token){let{error:s}=await this._callRefreshToken(n.refresh_token);if(s){if(console.error(s),!Ti(s))this._debug("#_recoverAndRefresh()","refresh failed with a non-retryable error, removing the session",s),await this._removeSession()}}}else if(n.user&&n.user.__isUserNotAvailableProxy===!0)try{let{data:s,error:o}=await this._getUser(n.access_token);if(!o&&(s===null||s===void 0?void 0:s.user))n.user=s.user,await this._saveSession(n),await this._notifyAllSubscribers("SIGNED_IN",n);else this._debug("#_recoverAndRefresh()","could not get user data, skipping SIGNED_IN notification")}catch(s){console.error("Error getting user data:",s),this._debug("#_recoverAndRefresh()","error getting user data, skipping SIGNED_IN notification",s)}else await this._notifyAllSubscribers("SIGNED_IN",n)}catch(n){this._debug("#_recoverAndRefresh()","error",n),console.error(n);return}finally{this._debug("#_recoverAndRefresh()","end")}}async _callRefreshToken(e){var t,r;if(!e)throw new Ze;if(this.refreshingDeferred)return this.refreshingDeferred.promise;let n=`#_callRefreshToken(${e.substring(0,5)}...)`;this._debug(n,"begin");try{this.refreshingDeferred=new Pn;let{data:i,error:s}=await this._refreshAccessToken(e);if(s)throw s;if(!i.session)throw new Ze;await this._saveSession(i.session),await this._notifyAllSubscribers("TOKEN_REFRESHED",i.session);let o={data:i.session,error:null};return this.refreshingDeferred.resolve(o),o}catch(i){if(this._debug(n,"error",i),F(i)){let s={data:null,error:i};if(!Ti(i))await this._removeSession();return(t=this.refreshingDeferred)===null||t===void 0||t.resolve(s),s}throw(r=this.refreshingDeferred)===null||r===void 0||r.reject(i),i}finally{this.refreshingDeferred=null,this._debug(n,"end")}}async _notifyAllSubscribers(e,t,r=!0){let n=`#_notifyAllSubscribers(${e})`;this._debug(n,"begin",t,`broadcast = ${r}`);try{if(this.broadcastChannel&&r)this.broadcastChannel.postMessage({event:e,session:t});let i=[],s=Array.from(this.stateChangeEmitters.values()).map(async(o)=>{try{await o.callback(e,t)}catch(a){i.push(a)}});if(await Promise.all(s),i.length>0){for(let o=0;o<i.length;o+=1)console.error(i[o]);throw i[0]}}finally{this._debug(n,"end")}}async _saveSession(e){this._debug("#_saveSession()",e),this.suppressGetSessionWarning=!0,await We(this.storage,`${this.storageKey}-code-verifier`);let t=Object.assign({},e),r=t.user&&t.user.__isUserNotAvailableProxy===!0;if(this.userStorage){if(!r&&t.user)await cr(this.userStorage,this.storageKey+"-user",{user:t.user});let n=Object.assign({},t);delete n.user;let i=no(n);await cr(this.storage,this.storageKey,i)}else{let n=no(t);await cr(this.storage,this.storageKey,n)}}async _removeSession(){if(this._debug("#_removeSession()"),this.suppressGetSessionWarning=!1,await We(this.storage,this.storageKey),await We(this.storage,this.storageKey+"-code-verifier"),await We(this.storage,this.storageKey+"-user"),this.userStorage)await We(this.userStorage,this.storageKey+"-user");await this._notifyAllSubscribers("SIGNED_OUT",null)}_removeVisibilityChangedCallback(){this._debug("#_removeVisibilityChangedCallback()");let e=this.visibilityChangedCallback;this.visibilityChangedCallback=null;try{if(e&&je()&&(window===null||window===void 0?void 0:window.removeEventListener))window.removeEventListener("visibilitychange",e)}catch(t){console.error("removing visibilitychange callback failed",t)}}async _startAutoRefresh(){await this._stopAutoRefresh(),this._debug("#_startAutoRefresh()");let e=setInterval(()=>this._autoRefreshTokenTick(),or);if(this.autoRefreshTicker=e,e&&typeof e==="object"&&typeof e.unref==="function")e.unref();else if(typeof Deno<"u"&&typeof Deno.unrefTimer==="function")Deno.unrefTimer(e);let t=setTimeout(async()=>{await this.initializePromise,await this._autoRefreshTokenTick()},0);if(this.autoRefreshTickTimeout=t,t&&typeof t==="object"&&typeof t.unref==="function")t.unref();else if(typeof Deno<"u"&&typeof Deno.unrefTimer==="function")Deno.unrefTimer(t)}async _stopAutoRefresh(){this._debug("#_stopAutoRefresh()");let e=this.autoRefreshTicker;if(this.autoRefreshTicker=null,e)clearInterval(e);let t=this.autoRefreshTickTimeout;if(this.autoRefreshTickTimeout=null,t)clearTimeout(t)}async startAutoRefresh(){this._removeVisibilityChangedCallback(),await this._startAutoRefresh()}async stopAutoRefresh(){this._removeVisibilityChangedCallback(),await this._stopAutoRefresh()}async _autoRefreshTokenTick(){this._debug("#_autoRefreshTokenTick()","begin");try{await this._acquireLock(0,async()=>{try{let e=Date.now();try{return await this._useSession(async(t)=>{let{data:{session:r}}=t;if(!r||!r.refresh_token||!r.expires_at){this._debug("#_autoRefreshTokenTick()","no session");return}let n=Math.floor((r.expires_at*1000-e)/or);if(this._debug("#_autoRefreshTokenTick()",`access token expires in ${n} ticks, a tick lasts ${or}ms, refresh threshold is ${xi} ticks`),n<=xi)await this._callRefreshToken(r.refresh_token)})}catch(t){console.error("Auto refresh tick failed with error. This is likely a transient error.",t)}}finally{this._debug("#_autoRefreshTokenTick()","end")}})}catch(e){if(e.isAcquireTimeout||e instanceof Fi)this._debug("auto refresh token tick lock not available");else throw e}}async _handleVisibilityChange(){if(this._debug("#_handleVisibilityChange()"),!je()||!(window===null||window===void 0?void 0:window.addEventListener)){if(this.autoRefreshToken)this.startAutoRefresh();return!1}try{this.visibilityChangedCallback=async()=>{try{await this._onVisibilityChanged(!1)}catch(e){this._debug("#visibilityChangedCallback","error",e)}},window===null||window===void 0||window.addEventListener("visibilitychange",this.visibilityChangedCallback),await this._onVisibilityChanged(!0)}catch(e){console.error("_handleVisibilityChange",e)}}async _onVisibilityChanged(e){let t=`#_onVisibilityChanged(${e})`;if(this._debug(t,"visibilityState",document.visibilityState),document.visibilityState==="visible"){if(this.autoRefreshToken)this._startAutoRefresh();if(!e)await this.initializePromise,await this._acquireLock(this.lockAcquireTimeout,async()=>{if(document.visibilityState!=="visible"){this._debug(t,"acquired the lock to recover the session, but the browser visibilityState is no longer visible, aborting");return}await this._recoverAndRefresh()})}else if(document.visibilityState==="hidden"){if(this.autoRefreshToken)this._stopAutoRefresh()}}async _getUrlForProvider(e,t,r){let n=[`provider=${encodeURIComponent(t)}`];if(r===null||r===void 0?void 0:r.redirectTo)n.push(`redirect_to=${encodeURIComponent(r.redirectTo)}`);if(r===null||r===void 0?void 0:r.scopes)n.push(`scopes=${encodeURIComponent(r.scopes)}`);if(this.flowType==="pkce"){let[i,s]=await ur(this.storage,this.storageKey),o=new URLSearchParams({code_challenge:`${encodeURIComponent(i)}`,code_challenge_method:`${encodeURIComponent(s)}`});n.push(o.toString())}if(r===null||r===void 0?void 0:r.queryParams){let i=new URLSearchParams(r.queryParams);n.push(i.toString())}if(r===null||r===void 0?void 0:r.skipBrowserRedirect)n.push(`skip_http_redirect=${r.skipBrowserRedirect}`);return`${e}?${n.join("&")}`}async _unenroll(e){try{return await this._useSession(async(t)=>{var r;let{data:n,error:i}=t;if(i)return this._returnResult({data:null,error:i});return await U(this.fetch,"DELETE",`${this.url}/factors/${e.factorId}`,{headers:this.headers,jwt:(r=n===null||n===void 0?void 0:n.session)===null||r===void 0?void 0:r.access_token})})}catch(t){if(F(t))return this._returnResult({data:null,error:t});throw t}}async _enroll(e){try{return await this._useSession(async(t)=>{var r,n;let{data:i,error:s}=t;if(s)return this._returnResult({data:null,error:s});let o=Object.assign({friendly_name:e.friendlyName,factor_type:e.factorType},e.factorType==="phone"?{phone:e.phone}:e.factorType==="totp"?{issuer:e.issuer}:{}),{data:a,error:l}=await U(this.fetch,"POST",`${this.url}/factors`,{body:o,headers:this.headers,jwt:(r=i===null||i===void 0?void 0:i.session)===null||r===void 0?void 0:r.access_token});if(l)return this._returnResult({data:null,error:l});if(e.factorType==="totp"&&a.type==="totp"&&((n=a===null||a===void 0?void 0:a.totp)===null||n===void 0?void 0:n.qr_code))a.totp.qr_code=`data:image/svg+xml;utf-8,${a.totp.qr_code}`;return this._returnResult({data:a,error:null})})}catch(t){if(F(t))return this._returnResult({data:null,error:t});throw t}}async _verify(e){return this._acquireLock(this.lockAcquireTimeout,async()=>{try{return await this._useSession(async(t)=>{var r;let{data:n,error:i}=t;if(i)return this._returnResult({data:null,error:i});let s=Object.assign({challenge_id:e.challengeId},"webauthn"in e?{webauthn:Object.assign(Object.assign({},e.webauthn),{credential_response:e.webauthn.type==="create"?jc(e.webauthn.credential_response):Hc(e.webauthn.credential_response)})}:{code:e.code}),{data:o,error:a}=await U(this.fetch,"POST",`${this.url}/factors/${e.factorId}/verify`,{body:s,headers:this.headers,jwt:(r=n===null||n===void 0?void 0:n.session)===null||r===void 0?void 0:r.access_token});if(a)return this._returnResult({data:null,error:a});return await this._saveSession(Object.assign({expires_at:Math.round(Date.now()/1000)+o.expires_in},o)),await this._notifyAllSubscribers("MFA_CHALLENGE_VERIFIED",o),this._returnResult({data:o,error:a})})}catch(t){if(F(t))return this._returnResult({data:null,error:t});throw t}})}async _challenge(e){return this._acquireLock(this.lockAcquireTimeout,async()=>{try{return await this._useSession(async(t)=>{var r;let{data:n,error:i}=t;if(i)return this._returnResult({data:null,error:i});let s=await U(this.fetch,"POST",`${this.url}/factors/${e.factorId}/challenge`,{body:e,headers:this.headers,jwt:(r=n===null||n===void 0?void 0:n.session)===null||r===void 0?void 0:r.access_token});if(s.error)return s;let{data:o}=s;if(o.type!=="webauthn")return{data:o,error:null};switch(o.webauthn.type){case"create":return{data:Object.assign(Object.assign({},o),{webauthn:Object.assign(Object.assign({},o.webauthn),{credential_options:Object.assign(Object.assign({},o.webauthn.credential_options),{publicKey:Gc(o.webauthn.credential_options.publicKey)})})}),error:null};case"request":return{data:Object.assign(Object.assign({},o),{webauthn:Object.assign(Object.assign({},o.webauthn),{credential_options:Object.assign(Object.assign({},o.webauthn.credential_options),{publicKey:Uc(o.webauthn.credential_options.publicKey)})})}),error:null}}})}catch(t){if(F(t))return this._returnResult({data:null,error:t});throw t}})}async _challengeAndVerify(e){let{data:t,error:r}=await this._challenge({factorId:e.factorId});if(r)return this._returnResult({data:null,error:r});return await this._verify({factorId:e.factorId,challengeId:t.id,code:e.code})}async _listFactors(){var e;let{data:{user:t},error:r}=await this.getUser();if(r)return{data:null,error:r};let n={all:[],phone:[],totp:[],webauthn:[]};for(let i of(e=t===null||t===void 0?void 0:t.factors)!==null&&e!==void 0?e:[])if(n.all.push(i),i.status==="verified")n[i.factor_type].push(i);return{data:n,error:null}}async _getAuthenticatorAssuranceLevel(e){var t,r,n,i;if(e)try{let{payload:A}=Nn(e),m=null;if(A.aal)m=A.aal;let g=m,{data:{user:f},error:p}=await this.getUser(e);if(p)return this._returnResult({data:null,error:p});if(((r=(t=f===null||f===void 0?void 0:f.factors)===null||t===void 0?void 0:t.filter((S)=>S.status==="verified"))!==null&&r!==void 0?r:[]).length>0)g="aal2";let y=A.amr||[];return{data:{currentLevel:m,nextLevel:g,currentAuthenticationMethods:y},error:null}}catch(A){if(F(A))return this._returnResult({data:null,error:A});throw A}let{data:{session:s},error:o}=await this.getSession();if(o)return this._returnResult({data:null,error:o});if(!s)return{data:{currentLevel:null,nextLevel:null,currentAuthenticationMethods:[]},error:null};let{payload:a}=Nn(s.access_token),l=null;if(a.aal)l=a.aal;let c=l;if(((i=(n=s.user.factors)===null||n===void 0?void 0:n.filter((A)=>A.status==="verified"))!==null&&i!==void 0?i:[]).length>0)c="aal2";let d=a.amr||[];return{data:{currentLevel:l,nextLevel:c,currentAuthenticationMethods:d},error:null}}async _getAuthorizationDetails(e){try{return await this._useSession(async(t)=>{let{data:{session:r},error:n}=t;if(n)return this._returnResult({data:null,error:n});if(!r)return this._returnResult({data:null,error:new Ze});return await U(this.fetch,"GET",`${this.url}/oauth/authorizations/${e}`,{headers:this.headers,jwt:r.access_token,xform:(i)=>({data:i,error:null})})})}catch(t){if(F(t))return this._returnResult({data:null,error:t});throw t}}async _approveAuthorization(e,t){try{return await this._useSession(async(r)=>{let{data:{session:n},error:i}=r;if(i)return this._returnResult({data:null,error:i});if(!n)return this._returnResult({data:null,error:new Ze});let s=await U(this.fetch,"POST",`${this.url}/oauth/authorizations/${e}/consent`,{headers:this.headers,jwt:n.access_token,body:{action:"approve"},xform:(o)=>({data:o,error:null})});if(s.data&&s.data.redirect_url){if(je()&&!(t===null||t===void 0?void 0:t.skipBrowserRedirect))window.location.assign(s.data.redirect_url)}return s})}catch(r){if(F(r))return this._returnResult({data:null,error:r});throw r}}async _denyAuthorization(e,t){try{return await this._useSession(async(r)=>{let{data:{session:n},error:i}=r;if(i)return this._returnResult({data:null,error:i});if(!n)return this._returnResult({data:null,error:new Ze});let s=await U(this.fetch,"POST",`${this.url}/oauth/authorizations/${e}/consent`,{headers:this.headers,jwt:n.access_token,body:{action:"deny"},xform:(o)=>({data:o,error:null})});if(s.data&&s.data.redirect_url){if(je()&&!(t===null||t===void 0?void 0:t.skipBrowserRedirect))window.location.assign(s.data.redirect_url)}return s})}catch(r){if(F(r))return this._returnResult({data:null,error:r});throw r}}async _listOAuthGrants(){try{return await this._useSession(async(e)=>{let{data:{session:t},error:r}=e;if(r)return this._returnResult({data:null,error:r});if(!t)return this._returnResult({data:null,error:new Ze});return await U(this.fetch,"GET",`${this.url}/user/oauth/grants`,{headers:this.headers,jwt:t.access_token,xform:(n)=>({data:n,error:null})})})}catch(e){if(F(e))return this._returnResult({data:null,error:e});throw e}}async _revokeOAuthGrant(e){try{return await this._useSession(async(t)=>{let{data:{session:r},error:n}=t;if(n)return this._returnResult({data:null,error:n});if(!r)return this._returnResult({data:null,error:new Ze});return await U(this.fetch,"DELETE",`${this.url}/user/oauth/grants`,{headers:this.headers,jwt:r.access_token,query:{client_id:e.clientId},noResolveJson:!0}),{data:{},error:null}})}catch(t){if(F(t))return this._returnResult({data:null,error:t});throw t}}async fetchJwk(e,t={keys:[]}){let r=t.keys.find((o)=>o.kid===e);if(r)return r;let n=Date.now();if(r=this.jwks.keys.find((o)=>o.kid===e),r&&this.jwks_cached_at+dc>n)return r;let{data:i,error:s}=await U(this.fetch,"GET",`${this.url}/.well-known/jwks.json`,{headers:this.headers});if(s)throw s;if(!i.keys||i.keys.length===0)return null;if(this.jwks=i,this.jwks_cached_at=n,r=i.keys.find((o)=>o.kid===e),!r)return null;return r}async getClaims(e,t={}){try{let r=e;if(!r){let{data:A,error:m}=await this.getSession();if(m||!A.session)return this._returnResult({data:null,error:m});r=A.session.access_token}let{header:n,payload:i,signature:s,raw:{header:o,payload:a}}=Nn(r);if(!(t===null||t===void 0?void 0:t.allowExpired))Sc(i.exp);let l=!n.alg||n.alg.startsWith("HS")||!n.kid||!(("crypto"in globalThis)&&("subtle"in globalThis.crypto))?null:await this.fetchJwk(n.kid,(t===null||t===void 0?void 0:t.keys)?{keys:t.keys}:t===null||t===void 0?void 0:t.jwks);if(!l){let{error:A}=await this.getUser(r);if(A)throw A;return{data:{claims:i,header:n,signature:s},error:null}}let c=Ic(n.alg),u=await crypto.subtle.importKey("jwk",l,c,!0,["verify"]);if(!await crypto.subtle.verify(c,u,s,pc(`${o}.${a}`)))throw new Fr("Invalid JWT signature");return{data:{claims:i,header:n,signature:s},error:null}}catch(r){if(F(r))return this._returnResult({data:null,error:r});throw r}}}Dn.nextInstanceID={};var ho=Dn;var bg=ho,Ao=bg;var yg="2.103.0",Ln="";if(typeof Deno<"u")Ln="deno";else if(typeof document<"u")Ln="web";else if(typeof navigator<"u"&&navigator.product==="ReactNative")Ln="react-native";else Ln="node";var wg={"X-Client-Info":`supabase-js-${Ln}/${yg}`},_g={headers:wg},vg={schema:"public"},Cg={autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,flowType:"implicit"},Eg={};function Mn(e){return Mn=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Mn(e)}function Sg(e,t){if(Mn(e)!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t||"default");if(Mn(n)!="object")return n;throw TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Ig(e){var t=Sg(e,"string");return Mn(t)=="symbol"?t:t+""}function xg(e,t,r){return(t=Ig(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Wc(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function ke(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?Wc(Object(r),!0).forEach(function(n){xg(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Wc(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}var kg=(e)=>{if(e)return(...t)=>e(...t);return(...t)=>fetch(...t)},Rg=()=>Headers,Tg=(e,t,r)=>{let n=kg(r),i=Rg();return async(s,o)=>{var a;let l=(a=await t())!==null&&a!==void 0?a:e,c=new i(o===null||o===void 0?void 0:o.headers);if(!c.has("apikey"))c.set("apikey",e);if(!c.has("Authorization"))c.set("Authorization",`Bearer ${l}`);return n(s,ke(ke({},o),{},{headers:c}))}};function Bg(e){return e.endsWith("/")?e:e+"/"}function Og(e,t){var r,n;let{db:i,auth:s,realtime:o,global:a}=e,{db:l,auth:c,realtime:u,global:d}=t,A={db:ke(ke({},l),i),auth:ke(ke({},c),s),realtime:ke(ke({},u),o),storage:{},global:ke(ke(ke({},d),a),{},{headers:ke(ke({},(r=d===null||d===void 0?void 0:d.headers)!==null&&r!==void 0?r:{}),(n=a===null||a===void 0?void 0:a.headers)!==null&&n!==void 0?n:{})}),accessToken:async()=>""};if(e.accessToken)A.accessToken=e.accessToken;else delete A.accessToken;return A}function Pg(e){let t=e===null||e===void 0?void 0:e.trim();if(!t)throw Error("supabaseUrl is required.");if(!t.match(/^https?:\/\//i))throw Error("Invalid supabaseUrl: Must be a valid HTTP or HTTPS URL.");try{return new URL(Bg(t))}catch(r){throw Error("Invalid supabaseUrl: Provided URL is malformed.")}}var Ng=class extends Ao{constructor(e){super(e)}},Dg=class{constructor(e,t,r){var n,i;this.supabaseUrl=e,this.supabaseKey=t;let s=Pg(e);if(!t)throw Error("supabaseKey is required.");this.realtimeUrl=new URL("realtime/v1",s),this.realtimeUrl.protocol=this.realtimeUrl.protocol.replace("http","ws"),this.authUrl=new URL("auth/v1",s),this.storageUrl=new URL("storage/v1",s),this.functionsUrl=new URL("functions/v1",s);let o=`sb-${s.hostname.split(".")[0]}-auth-token`,a={db:vg,realtime:Eg,auth:ke(ke({},Cg),{},{storageKey:o}),global:_g},l=Og(r!==null&&r!==void 0?r:{},a);if(this.storageKey=(n=l.auth.storageKey)!==null&&n!==void 0?n:"",this.headers=(i=l.global.headers)!==null&&i!==void 0?i:{},!l.accessToken){var c;this.auth=this._initSupabaseAuthClient((c=l.auth)!==null&&c!==void 0?c:{},this.headers,l.global.fetch)}else this.accessToken=l.accessToken,this.auth=new Proxy({},{get:(u,d)=>{throw Error(`@supabase/supabase-js: Supabase Client is configured with the accessToken option, accessing supabase.auth.${String(d)} is not possible`)}});if(this.fetch=Tg(t,this._getAccessToken.bind(this),l.global.fetch),this.realtime=this._initRealtimeClient(ke({headers:this.headers,accessToken:this._getAccessToken.bind(this)},l.realtime)),this.accessToken)Promise.resolve(this.accessToken()).then((u)=>this.realtime.setAuth(u)).catch((u)=>console.warn("Failed to set initial Realtime auth token:",u));if(this.rest=new Ul(new URL("rest/v1",s).href,{headers:this.headers,schema:l.db.schema,fetch:this.fetch,timeout:l.db.timeout,urlLengthLimit:l.db.urlLengthLimit}),this.storage=new oc(this.storageUrl.href,this.headers,this.fetch,r===null||r===void 0?void 0:r.storage),!l.accessToken)this._listenForAuthEvents()}get functions(){return new di(this.functionsUrl.href,{headers:this.headers,customFetch:this.fetch})}from(e){return this.rest.from(e)}schema(e){return this.rest.schema(e)}rpc(e,t={},r={head:!1,get:!1,count:void 0}){return this.rest.rpc(e,t,r)}channel(e,t={config:{}}){return this.realtime.channel(e,t)}getChannels(){return this.realtime.getChannels()}removeChannel(e){return this.realtime.removeChannel(e)}removeAllChannels(){return this.realtime.removeAllChannels()}async _getAccessToken(){var e=this,t,r;if(e.accessToken)return await e.accessToken();let{data:n}=await e.auth.getSession();return(t=(r=n.session)===null||r===void 0?void 0:r.access_token)!==null&&t!==void 0?t:e.supabaseKey}_initSupabaseAuthClient({autoRefreshToken:e,persistSession:t,detectSessionInUrl:r,storage:n,userStorage:i,storageKey:s,flowType:o,lock:a,debug:l,throwOnError:c},u,d){let A={Authorization:`Bearer ${this.supabaseKey}`,apikey:`${this.supabaseKey}`};return new Ng({url:this.authUrl.href,headers:ke(ke({},A),u),storageKey:s,autoRefreshToken:e,persistSession:t,detectSessionInUrl:r,storage:n,userStorage:i,flowType:o,lock:a,debug:l,throwOnError:c,fetch:d,hasCustomAuthorizationHeader:Object.keys(this.headers).some((m)=>m.toLowerCase()==="authorization")})}_initRealtimeClient(e){return new En(this.realtimeUrl.href,ke(ke({},e),{},{params:ke(ke({},{apikey:this.supabaseKey}),e===null||e===void 0?void 0:e.params)}))}_listenForAuthEvents(){return this.auth.onAuthStateChange((e,t)=>{this._handleTokenChanged(e,"CLIENT",t===null||t===void 0?void 0:t.access_token)})}_handleTokenChanged(e,t,r){if((e==="TOKEN_REFRESHED"||e==="SIGNED_IN")&&this.changedAccessToken!==r)this.changedAccessToken=r,this.realtime.setAuth(r);else if(e==="SIGNED_OUT"){if(this.realtime.setAuth(),t=="STORAGE")this.auth.signOut();this.changedAccessToken=void 0}}},Yc=(e,t,r)=>new Dg(e,t,r);function Lg(){if(typeof window<"u")return!1;let e=globalThis.process;if(!e)return!1;let t=e.version;if(t===void 0||t===null)return!1;let r=t.match(/^v(\d+)\./);if(!r)return!1;return parseInt(r[1],10)<=18}if(Lg())console.warn("\u26A0\uFE0F Node.js 18 and below are deprecated and will no longer be supported in future versions of @supabase/supabase-js. Please upgrade to Node.js 20 or later. For more information, visit: https://github.com/orgs/supabase/discussions/37217");var Yg=300000,Jc=16384,$c=4096;function Zc(e,t){if(!e)throw Error(`${t} is not configured`);let r;try{r=new URL(e)}catch{throw Error(`${t} is not a valid URL`)}if(r.protocol!=="https:"&&r.protocol!=="http:")throw Error(`${t} must use http or https`);return r.toString()}function Xc(e=process.env){let t=Zc(e.FLATBLOX_SUPABASE_URL??e.VITE_SUPABASE_URL,"VITE_SUPABASE_URL"),r=e.FLATBLOX_SUPABASE_PUBLISHABLE_KEY??e.VITE_SUPABASE_PUBLISHABLE_KEY;if(!r)throw Error("VITE_SUPABASE_PUBLISHABLE_KEY is not configured");let n=Zc(e.FLATBLOX_DASHBOARD_URL??e.VITE_SITE_URL,e.FLATBLOX_DASHBOARD_URL?"FLATBLOX_DASHBOARD_URL":"VITE_SITE_URL"),i=e.FLATBLOX_DASHBOARD_URL?n:new URL("/dashboard/",n).toString(),s=e.XDG_CONFIG_HOME||Qc(Kg(),".config");return{supabaseUrl:t,publishableKey:r,dashboardUrl:i,authFile:e.FLATBLOX_TUI_AUTH_FILE??Qc(s,"flatblox","tui-auth.json")}}function Qg(e){if(typeof e!=="object"||e===null)return!1;let t=e;return typeof t.accessToken==="string"&&t.accessToken.length>0&&t.accessToken.length<=Jc&&typeof t.refreshToken==="string"&&t.refreshToken.length>0&&t.refreshToken.length<=Jc}async function Jg(e){try{let t=JSON.parse(await Gg(e,"utf8"));if(!Qg(t))return null;return{accessToken:t.accessToken,refreshToken:t.refreshToken}}catch(t){if(t.code==="ENOENT"||t instanceof SyntaxError)return null;throw t}}async function Ui(e,t){await Fg(Wg(e),{recursive:!0,mode:448});let r=`${e}.${process.pid}.tmp`;await Hg(r,`${JSON.stringify({accessToken:t.access_token,refreshToken:t.refresh_token})}
55
55
  `,{mode:384}),await Ug(r,e),await Mg(e,384)}async function Ar(e){try{await jg(e)}catch(t){if(t.code!=="ENOENT")throw t}}function Vc(e){return Yc(e.supabaseUrl,e.publishableKey,{auth:{autoRefreshToken:!0,detectSessionInUrl:!1,persistSession:!1}})}async function zc(e,t){let r=await Jg(t);if(!r)return null;let{data:n,error:i}=await e.auth.setSession({access_token:r.accessToken,refresh_token:r.refreshToken});if(i||!n.session)return await Ar(t),null;return await Ui(t,n.session),n.session}function $g(e,t=process.platform){if(t==="darwin")return["open",e];if(t==="win32")return["rundll32.exe","url.dll,FileProtocolHandler",e];return["xdg-open",e]}function Zg(e){try{return Bun.spawn($g(e),{stdout:"ignore",stderr:"ignore"}).unref(),!0}catch{return!1}}function Xg(e){let r=`<!doctype html>
56
56
  <meta charset="utf-8">
57
57
  <title>Flatblox TUI connected</title>
@@ -72,9 +72,9 @@ Options:
72
72
  --cloud Open saved artworks from Flatblox (default)
73
73
  --local Create a new local artwork
74
74
  --logout Sign out of the cloud dashboard
75
- -s, --size <1-${Se}> Grid size for a new artwork (default: 16)
75
+ -s, --size <1-${Ie}> Grid size for a new artwork (default: 16)
76
76
  -o, --output <file> Save path for a new or opened artwork
77
- -h, --help Show this help`;function ru(e,t,r){let n=e[t+1];if(!n||n.startsWith("-"))throw Error(`${r} needs a value`);return n}function nu(e){let t,r,n=16,i=!1,s=!1,o=!1,a=!1,l=!1;for(let c=0;c<e.length;c++){let u=e[c];if(u==="-h"||u==="--help")i=!0;else if(u==="--cloud")s=!0;else if(u==="--local")o=!0;else if(u==="--logout")s=!0,a=!0;else if(u==="-s"||u==="--size")n=Number(ru(e,c,u)),l=!0,c++;else if(u==="-o"||u==="--output")r=ru(e,c,u),l=!0,c++;else if(u.startsWith("-"))throw Error(`Unknown option: ${u}`);else if(t)throw Error("Only one draft file can be opened");else t=u,l=!0}if(!Number.isInteger(n)||n<1||n>Se)throw Error(`Grid size must be between 1 and ${Se}`);if(s&&(o||l))throw Error("Cloud mode cannot be combined with local file options");return{mode:s||!o&&!l?"cloud":"local",filePath:t,outputPath:r,size:n,help:i,logout:a}}function zg(e){return Vg(e).replace(/\.flatblox\.json$/i,"").replace(/\.json$/i,"")}async function iu(e){let t=e.filePath?tu(e.filePath):void 0,r=t?Bun.file(t):void 0,n=r&&await r.exists()?cn(await r.text()):{...hn(e.size),filename:t?zg(t):"untitled"},i=tu(e.outputPath??t??`${n.filename}.flatblox.json`);return{session:new Mt(n),filePath:i}}var ji="id, filename, num_cols, num_rows, grid, palette, palette_saturation, palette_lightness, artboards, created_at, updated_at",ou=16;function au(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function su(e,t){let r=sn(e);return r.length===t&&r.every((n)=>n.length===t)?r:null}function lu(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++){if(e[r].length!==t[r].length)return!1;for(let n=0;n<e[r].length;n++){let i=e[r][n],s=t[r][n];if(i.active!==s.active||i.color!==s.color||(i.tileIndex??null)!==(s.tileIndex??null)||(i.depth??null)!==(s.depth??null)||(i.mirrorZ??!1)!==(s.mirrorZ??!1))return!1}}return!0}function qg(e){if(!Array.isArray(e))return[];return e.slice(0,Ss).flatMap((t,r)=>{if(!au(t)||!("grid"in t))return[];return[{...t,id:Number.isInteger(t.id)?Number(t.id):r,name:typeof t.name==="string"?t.name:`Frame ${r+1}`,grid:t.grid}]})}function em(e){if(!Array.isArray(e))return[...it[0].colors];let t=e.filter(pt).slice(0,ou);return t.length>0?t:[...it[0].colors]}function Hi(e){if(!au(e))return null;let t=Number(e.num_cols);if(!Number.isInteger(t)||t<1||t>Se||e.num_rows!==t||typeof e.id!=="string"||typeof e.filename!=="string"||typeof e.created_at!=="string"||typeof e.updated_at!=="string")return null;let r=su(e.grid,t);if(!r)return null;let n=qg(e.artboards),i=JSON.stringify(e.grid),s=n.findIndex((o)=>JSON.stringify(o.grid)===i);if(s<0)s=n.findIndex((o)=>{let a=su(o.grid,t);return a?lu(a,r):!1});return{id:e.id,filename:e.filename||"Untitled",size:t,grid:r,palette:em(e.palette),paletteSaturation:nt(e.palette_saturation),paletteLightness:nt(e.palette_lightness),artboards:n,activeArtboard:s<0?0:s,createdAt:e.created_at,updatedAt:e.updated_at}}function cu(e){return Vt(e.grid,e.paletteSaturation,e.paletteLightness)}function uu(e){return{filename:e.filename,grid:e.grid.map((t)=>t.map((r)=>({...r}))),palette:[...e.palette],activeColor:e.activeColor??e.palette[0],paletteColorAdjustment:{saturation:e.paletteSaturation,lightness:e.paletteLightness},draft:e.draft?structuredClone(e.draft):void 0}}function tm(e,t,r=new Date().toISOString()){if(t.grid.length!==e.size||!t.grid.every((s)=>s.length===e.size))throw Error("Artwork dimensions changed");let n=Cr(t.grid),i=e.artboards.map((s)=>({...s}));if(i.length===0)i.push({id:0,name:"Frame 1",grid:n});else{let s=Math.min(e.activeArtboard,i.length-1);i[s]={...i[s],grid:n}}return{grid:n,artboards:i,updated_at:r}}function rm(e,t,r=new Date().toISOString()){let n=e.grid.length;if(n<1||n>Se||!e.grid.every((o)=>o.length===n))throw Error("Artwork grid is invalid");let i=e.palette.filter(pt).slice(0,ou);if(i.length===0)throw Error("Artwork palette is invalid");let s=Cr(e.grid);return{user_id:t,filename:e.filename||"untitled",num_cols:n,num_rows:n,grid:s,palette:i,artboards:[{id:0,name:"Frame 1",grid:s}],updated_at:r}}class go{client;userId;afterSignOut;username;maxCanvasSize;constructor(e,t,r,n=32,i){this.client=e,this.userId=t,this.username=r,this.maxCanvasSize=n,this.afterSignOut=i}async listArtworks(){let{data:e,error:t}=await this.client.from("pixel_art").select(ji).eq("user_id",this.userId).order("created_at",{ascending:!1});if(t)throw Error(t.message);return(e??[]).flatMap((r)=>{let n=Hi(r);return n?[n]:[]})}async createArtwork(e){let t=rm(e,this.userId),{data:r,error:n}=await this.client.from("pixel_art").insert(t).select(ji).single();if(n)throw Error(n.message);let i=Hi(r);if(!i)throw Error("Supabase returned an invalid artwork");return i}async saveArtwork(e,t){let r=await this.trySaveArtwork(e,t);if(r)return r;let n=await this.fetchArtwork(e.id);if(!n||!lu(e.grid,n.grid))throw Error("This artwork changed in the web app. Return and refresh before saving.");let i=await this.trySaveArtwork(n,t);if(i)return i;throw Error("This artwork changed again while saving. Return and refresh before trying again.")}async trySaveArtwork(e,t){let r=tm(e,t),{data:n,error:i}=await this.client.from("pixel_art").update(r).eq("id",e.id).eq("user_id",this.userId).eq("updated_at",e.updatedAt).select(ji).maybeSingle();if(i)throw Error(i.message);if(!n)return null;let s=Hi(n);if(!s)throw Error("Supabase returned an invalid artwork");return s}async fetchArtwork(e){let{data:t,error:r}=await this.client.from("pixel_art").select(ji).eq("id",e).eq("user_id",this.userId).maybeSingle();if(r)throw Error(r.message);return t?Hi(t):null}async signOut(){let{error:e}=await this.client.auth.signOut();if(e)throw Error(e.message);await this.afterSignOut?.()}}import{NativeImage as nm,Renderable as im,RGBA as sm}from"@opentui/core";var Fn=sm.fromInts(14,16,24),Ki=new Map,om=256;function am(e,t,r,n){let i=`${e}|${t}|${r}|${n}`,s=Ki.get(i);if(s)return s;if(Ki.size>=om)Ki.clear();let o=lm(e,t,r,n);return Ki.set(i,o),o}function lm(e,t,r,n){let i=t*2,s=Math.max(1,Math.min(r,e,i)),o=Math.max(1,Math.floor(e/s)),a=Math.max(1,Math.floor(i/s)),l=1,c=1,u=0,d=Number.POSITIVE_INFINITY;for(let A=1;A<=o;A++)for(let m=1;m<=a;m++){let g=m*n/2,f=Math.min(A,g),p=Math.abs(Math.log(g/A));if(f>u||f===u&&p<d)l=A,c=m,u=f,d=p}return{sampleCount:s,columnScale:l,subrowScale:c,columns:s*l,subrows:s*c}}function cm(e,t,r,n,i){let s=Math.max(1,Math.round(Math.min(e*n,t*i))),o=Math.max(1,Math.min(r,s)),a=Math.min(e,Math.ceil(s/n));return{sampleCount:o,side:s,columns:a,rows:Math.min(t,Math.ceil(s/i)),pixelWidth:Math.max(s,Math.round(a*n))}}class mo extends im{currentGrid=[];textFrame=null;artworkImage=null;artworkImageCache=null;constructor(e,t){super(e,{...t,buffered:!0});if(t.grid)this.currentGrid=t.grid}set grid(e){let t=e??[];if(t===this.currentGrid)return;this.currentGrid=t,this.requestRender()}renderSelf(e){let t=this.currentGrid.length,r=Kt(this._ctx);if(r&&ri(this._ctx)){if(this.textFrame=null,e.clear(Fn),t===0||this.width<=0||this.height<=0)return;this.drawArtworkImage(e,t,r.width,r.height);return}let n=ti(this._ctx),i=this.textFrame;if(i&&i.grid===this.currentGrid&&i.width===this.width&&i.height===this.height&&i.cellAspect===n)return;if(this.textFrame={grid:this.currentGrid,width:this.width,height:this.height,cellAspect:n},e.clear(Fn),t===0||this.width<=0||this.height<=0)return;this.releaseArtworkImage();let s=this.height*2,o=am(this.width,this.height,t,n),{columns:a,subrows:l}=o,c=Math.floor((this.width-a)/2),u=Math.floor((s-l)/2),d=this.currentGrid,{columnScale:A,subrowScale:m,sampleCount:g}=o,f=(p)=>{let v=p-u;if(v<0||v>=l)return-1;let y=Math.floor(v/m);return Math.min(t-1,Math.floor(y*t/g))};for(let p=0;p<this.height;p++){let v=f(p*2),y=f(p*2+1);for(let S=0;S<a;S++){let _=Math.floor(S/A),b=Math.min(t-1,Math.floor(_*t/g)),w=v<0?Fn:Wt(d[v]?.[b],b,v),C=y<0?Fn:Wt(d[y]?.[b],b,y);e.setCell(c+S,p,"\u2580",w,C)}}}drawArtworkImage(e,t,r,n){let i=cm(this.width,this.height,t,r,n),s=this.artworkImageCache;if(!(this.artworkImage&&s&&s.grid===this.currentGrid&&s.sampleCount===i.sampleCount&&s.side===i.side&&s.pixelWidth===i.pixelWidth)){let a=new Uint8Array(i.sampleCount**2*4);for(let A=0;A<i.sampleCount;A++){let m=Math.min(t-1,Math.floor(A*t/i.sampleCount));for(let g=0;g<i.sampleCount;g++){let f=Math.min(t-1,Math.floor(g*t/i.sampleCount)),[p,v,y]=Wt(this.currentGrid[m]?.[f],f,m).toInts(),S=(A*i.sampleCount+g)*4;a[S]=p,a[S+1]=v,a[S+2]=y,a[S+3]=255}}let l=nm.fromRgba(a,i.sampleCount,i.sampleCount),c=l.resize({width:i.side,height:i.side,kernel:"nearest"});l.dispose();let u=i.pixelWidth-i.side,d=u>0?c.extend({left:u,background:Fn.toInts()}):c;if(d!==c)c.dispose();this.releaseArtworkImage(),this.artworkImage=d,this.artworkImageCache={grid:this.currentGrid,sampleCount:i.sampleCount,side:i.side,pixelWidth:i.pixelWidth}}if(!this.artworkImage)return;e.drawImage(this.artworkImage,Math.floor((this.width-i.columns)/2),Math.floor((this.height-i.rows)/2),i.columns,i.rows,i.pixelWidth,i.side,0,0,i.pixelWidth,i.side,"auto")}releaseArtworkImage(){this.artworkImage?.dispose(),this.artworkImage=null,this.artworkImageCache=null}destroySelf(){this.releaseArtworkImage(),super.destroySelf()}}Lt({artwork_preview:mo});var po=[16,32,64],hu=74,du=2;function bo(e,t){let r=hn(e),n=it[t];return r.palette=[...n.colors],r.activeColor=r.palette[0],r}function yo(e,t){let r=e.name.toLowerCase(),n=Number(r)-1;if(r==="escape")return{kind:"cancel"};if(Number.isInteger(n)&&po[n])return{kind:"size",size:po[n]};let i=rr(r);if(i)return{kind:"palette",delta:i.dx+i.dy*t};if(tr(e))return{kind:"create"}}function um(e,t){let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}function Au(e,t){if(e.length<=t)return e;return`${e.slice(0,Math.max(1,t-1))}\u2026`}function dm(e){return en(bs(e.palette,e.grid),e.paletteSaturation,e.paletteLightness)}function wo(e,t){return Math.max(0,Math.min(it.length-1,e+t))}function Wi(e){return Math.max(1,Math.min(hu,e-4))>=64?2:1}function _o(e){let t=Y(()=>Math.max(1,Math.min(hu,e.width-4))),r=Y(()=>Math.max(1,Math.min(19,e.height-2))),n=Y(()=>Wi(e.width)),i=Y(()=>r()>=12?1:0),s=Y(()=>Math.max(1,r()-7-i()*2)),o=Y(()=>s()*n()),a=Y(()=>Math.floor(e.selectedPalette/o())*o()),l=Y(()=>{let m=a();return it.slice(m,m+o()).map((g,f)=>({palette:g,index:m+f}))}),c=Y(()=>um(l(),n())),u=Y(()=>Math.max(1,Math.floor((t()-4-(n()-1))/n()))),d=Y(()=>Math.max(3,Math.min(10,u()-8))),A=Y(()=>Math.max(1,u()-d()-4));return(()=>{var m=I("box"),g=I("box"),f=I("box"),p=I("text"),v=I("box"),y=I("text"),S=_e("Choose a palette | "),_=I("box"),b=I("box"),w=I("text");return R(m,g),h(m,"id","new-artwork-modal"),h(m,"position","absolute"),h(m,"zIndex",30),h(m,"border",!0),h(m,"title"," New artwork "),h(m,"flexDirection","column"),R(g,f),R(g,v),R(g,y),R(g,_),R(g,b),R(g,w),h(g,"flexGrow",1),h(g,"width","100%"),h(g,"padding",1),h(g,"flexDirection","column"),R(f,p),h(f,"height",1),h(f,"flexDirection","row"),h(f,"gap",1),R(p,_e("Grid size")),G(f,Q(yt,{each:po,children:(C,P)=>{let M=()=>C<=e.maxSize,B=()=>C===e.selectedSize;return(()=>{var k=I("box"),j=I("text"),X=_e(" "),W=_e("\xD7");return R(k,j),h(k,"height",1),h(k,"paddingX",1),h(k,"onMouseDown",()=>e.onSelectSize(C)),R(j,X),R(j,W),G(j,()=>P()+1,X),G(j,C,W),G(j,C,null),ge((q)=>{var Ae=B()?E.panelActive:E.panel,z=M()?B()?E.accentText:E.muted:E.border;return Ae!==q.e&&(q.e=h(k,"backgroundColor",Ae,q.e)),z!==q.t&&(q.t=h(j,"fg",z,q.t)),q},{e:void 0,t:void 0}),k})()}}),null),R(y,S),G(y,()=>it[e.selectedPalette].name,null),G(g,Q(yt,{get each(){return c()},children:(C)=>(()=>{var P=I("box");return h(P,"height",1),h(P,"flexDirection","row"),h(P,"gap",1),G(P,Q(yt,{each:C,children:(M)=>{let B=()=>M.index===e.selectedPalette;return(()=>{var k=I("box"),j=I("text"),X=I("box");return R(k,j),R(k,X),h(k,"height",1),h(k,"paddingX",1),h(k,"flexDirection","row"),h(k,"justifyContent","space-between"),h(k,"onMouseDown",()=>e.onSelectPalette(M.index)),G(j,()=>Au(M.palette.name,A())),h(X,"height",1),h(X,"flexDirection","row"),G(X,Q(yt,{get each(){return M.palette.colors.slice(0,d())},children:(W)=>(()=>{var q=I("text");return R(q,_e("\u25A0")),ge((Ae)=>h(q,"fg",Ge(W),Ae)),q})()})),ge((W)=>{var q=u(),Ae=B()?E.panelActive:E.panel,z=B()?E.text:E.muted;return q!==W.e&&(W.e=h(k,"width",q,W.e)),Ae!==W.t&&(W.t=h(k,"backgroundColor",Ae,W.t)),z!==W.a&&(W.a=h(j,"fg",z,W.a)),W},{e:void 0,t:void 0,a:void 0}),k})()}})),P})()}),_),h(b,"flexGrow",1),G(w,()=>e.message||"1\u20133 size \xB7 arrows palette \xB7 Enter create \xB7 Esc cancel"),ge((C)=>{var P=Math.max(0,Math.floor((e.width-t())/2)),M=Math.max(0,Math.floor((e.height-r())/2)),B=t(),k=r(),j=E.border,X=E.accent,W=E.panel,q=E.textPink,Ae=i(),z=E.textPink,ce=i(),Re=e.message?E.warning:E.textPink;return P!==C.e&&(C.e=h(m,"left",P,C.e)),M!==C.t&&(C.t=h(m,"top",M,C.t)),B!==C.a&&(C.a=h(m,"width",B,C.a)),k!==C.o&&(C.o=h(m,"height",k,C.o)),j!==C.i&&(C.i=h(m,"borderColor",j,C.i)),X!==C.n&&(C.n=h(m,"titleColor",X,C.n)),W!==C.s&&(C.s=h(g,"backgroundColor",W,C.s)),q!==C.h&&(C.h=h(p,"fg",q,C.h)),Ae!==C.r&&(C.r=h(v,"height",Ae,C.r)),z!==C.d&&(C.d=h(y,"fg",z,C.d)),ce!==C.l&&(C.l=h(_,"height",ce,C.l)),Re!==C.u&&(C.u=h(w,"fg",Re,C.u)),C},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0}),m})()}function hm(e){let t=Y(()=>cu(e.artwork)),r=Y(()=>dm(e.artwork)),n=()=>e.selected()===e.index,i=()=>e.cardWidth-2;return(()=>{var s=I("box"),o=I("box"),a=I("box"),l=I("artwork_preview"),c=I("box"),u=I("text"),d=I("text"),A=I("text"),m=I("box"),g=I("box");return R(s,o),R(s,d),R(s,A),R(s,m),R(s,g),h(s,"flexDirection","column"),R(o,a),h(o,"width","100%"),h(o,"height","100%"),h(o,"border",!0),h(o,"borderColor","transparent"),h(o,"flexDirection","column"),R(a,l),R(a,c),R(a,u),h(a,"flexGrow",1),h(a,"width","100%"),h(a,"flexDirection","column"),h(a,"paddingX",1),h(l,"flexGrow",1),h(l,"width","100%"),h(c,"height",1),h(c,"width","100%"),h(c,"flexDirection","row"),h(c,"gap",1),h(c,"overflow","hidden"),G(c,Q(yt,{get each(){return r()},children:(f)=>Q(fn,{get color(){return Ge(f)},get background(){return E.panel},width:1,shape:"circle"})})),G(u,()=>Au(e.artwork.filename,e.cardWidth-3)),h(d,"position","absolute"),h(d,"left",1),h(d,"top",0),h(d,"height",1),h(d,"zIndex",1),G(d,()=>"\u2580".repeat(i())),h(A,"position","absolute"),h(A,"left",1),h(A,"height",1),h(A,"zIndex",1),G(A,()=>"\u2584".repeat(i())),h(m,"position","absolute"),h(m,"left",0),h(m,"top",0),h(m,"width",1),h(m,"height","100%"),h(m,"zIndex",2),h(g,"position","absolute"),h(g,"top",0),h(g,"width",1),h(g,"height","100%"),h(g,"zIndex",2),ge((f)=>{var p=`artwork-card-${e.artwork.id}`,v=e.cardWidth,y=e.cardHeight,S=E.card,_=e.onSelect,b=E.card,w=E.panel,C=`artwork-preview-${e.artwork.id}`,P=t(),M=E.textPink,B=`artwork-card-selection-top-${e.artwork.id}`,k=i(),j=n()?E.orangeActive:E.card,X=E.panel,W=`artwork-card-selection-bottom-${e.artwork.id}`,q=e.cardHeight-1,Ae=i(),z=n()?E.orangeActive:E.card,ce=E.panel,Re=`artwork-card-selection-side-${e.artwork.id}`,V=n()?E.orangeActive:E.card,J=e.cardWidth-1,Te=n()?E.orangeActive:E.card;return p!==f.e&&(f.e=h(s,"id",p,f.e)),v!==f.t&&(f.t=h(s,"width",v,f.t)),y!==f.a&&(f.a=h(s,"height",y,f.a)),S!==f.o&&(f.o=h(s,"backgroundColor",S,f.o)),_!==f.i&&(f.i=h(s,"onMouseDown",_,f.i)),b!==f.n&&(f.n=h(o,"backgroundColor",b,f.n)),w!==f.s&&(f.s=h(a,"backgroundColor",w,f.s)),C!==f.h&&(f.h=h(l,"id",C,f.h)),P!==f.r&&(f.r=h(l,"grid",P,f.r)),M!==f.d&&(f.d=h(u,"fg",M,f.d)),B!==f.l&&(f.l=h(d,"id",B,f.l)),k!==f.u&&(f.u=h(d,"width",k,f.u)),j!==f.c&&(f.c=h(d,"fg",j,f.c)),X!==f.w&&(f.w=h(d,"bg",X,f.w)),W!==f.m&&(f.m=h(A,"id",W,f.m)),q!==f.f&&(f.f=h(A,"top",q,f.f)),Ae!==f.y&&(f.y=h(A,"width",Ae,f.y)),z!==f.g&&(f.g=h(A,"fg",z,f.g)),ce!==f.p&&(f.p=h(A,"bg",ce,f.p)),Re!==f.b&&(f.b=h(m,"id",Re,f.b)),V!==f.T&&(f.T=h(m,"backgroundColor",V,f.T)),J!==f.A&&(f.A=h(g,"left",J,f.A)),Te!==f.O&&(f.O=h(g,"backgroundColor",Te,f.O)),f},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0,A:void 0,O:void 0}),s})()}function vo(e){let t=wt(),r=pr(),[n,i]=Z([]),[s,o]=Z(0),[a,l]=Z(!0),[c,u]=Z("Loading saved artworks\u2026"),[d,A]=Z(null),[m,g]=Z(!1),[f,p]=Z(16),[v,y]=Z(0),[S,_]=Z(""),b=Y(()=>{let D=Math.max(8,r().width-2);return Math.min(28,D,Math.max(12,Math.floor(D/3)))}),w=Y(()=>{let D=r().height<18?7:r().height<25?9:12;return Math.max(4,Math.min(D,r().height-6))}),C=Y(()=>Math.max(1,Math.floor((r().width-2)/(b()+du)))),P=Y(()=>C()*b()+Math.max(0,C()-1)*du),M=Y(()=>Math.max(1,Math.floor((r().height-5)/(w()+1)))),B=Y(()=>C()*M()),k=Y(()=>Math.floor(s()/B())),j=Y(()=>k()*B()),X=Y(()=>{let D=j();return n().slice(D,D+B())});Wn(()=>{let D=Math.max(0,n().length-1);if(s()>D)o(D)});let W=async()=>{l(!0),u("Loading saved artworks\u2026");try{let D=await e.repository.listArtworks();i(D),u(D.length===0?"No saved artworks yet":`${D.length} saved artwork${D.length===1?"":"s"}`)}catch(D){u(`Load failed: ${D instanceof Error?D.message:String(D)}`)}finally{l(!1)}};Xt(()=>void W());let q=(D,ee)=>{let ie=n().length;if(ie===0)return;let oe=Math.max(0,Math.min(ie-1,s()+D+ee*C()));o(oe),u(n()[oe].filename)},Ae=()=>{let D=n()[s()];if(!D)return;A({artwork:D,session:new Mt(uu(D))})},z=()=>{p(16),y(0),_(""),g(!0),u("Choose a size and palette")},ce=()=>{g(!1),_(""),u("New artwork cancelled")},Re=(D)=>{if(D>e.repository.maxCanvasSize){_(`${D}\xD7${D} is unavailable on this plan`);return}p(D),_("")},V=(D)=>{y((ee)=>wo(ee,D)),_("")},J=()=>{g(!1),A({artwork:null,session:new Mt(bo(f(),v()))})},Te=async(D)=>{let ee=d();if(!ee)throw Error("No artwork is open");let ie=ee.artwork?await e.repository.saveArtwork(ee.artwork,D):await e.repository.createArtwork(D);if(i((oe)=>oe.some((ue)=>ue.id===ie.id)?oe.map((ue)=>ue.id===ie.id?ie:ue):[ie,...oe]),!ee.artwork)o(0);return A((oe)=>oe===ee?{...oe,artwork:ie}:oe),e.variant==="local"?"Saved locally":"Saved to Flatblox cloud"},pe=async()=>{u("Signing out\u2026");try{await e.repository.signOut(),t.destroy()}catch(D){u(`Sign out failed: ${D instanceof Error?D.message:String(D)}`)}};return br((D)=>{if(D.eventType==="release"||d())return;let ee=D.name.toLowerCase();if(m()){let oe=yo(D,Wi(r().width));if(oe?.kind==="cancel")ce();else if(oe?.kind==="size")Re(oe.size);else if(oe?.kind==="palette")V(oe.delta);else if(oe?.kind==="create")J();return}let ie=rr(ee);if(D.ctrl&&ee==="c")t.destroy();else if(ee==="escape"&&e.onBack)e.onBack();else if(ee==="q"||ee==="escape")t.destroy();else if(ie)q(ie.dx,ie.dy);else if(ee==="n")z();else if(tr(D))Ae();else if(ee==="r")W();else if(ee==="o"&&e.variant!=="local")pe()}),Q(Me,{get when(){return d()},get fallback(){return(()=>{var D=I("box"),ee=I("box"),ie=I("box"),oe=I("text"),Xe=I("b"),ue=I("box"),Ee=I("box"),ot=I("text"),Ve=I("box"),Qe=I("box"),re=I("text"),ht=I("text");return R(D,ee),R(D,Ve),R(D,Qe),h(D,"width","100%"),h(D,"height","100%"),h(D,"flexDirection","column"),R(ee,ie),R(ee,ue),R(ee,Ee),h(ee,"height",3),h(ee,"paddingY",1),h(ee,"paddingX",1),h(ee,"flexDirection","row"),R(ie,oe),h(ie,"height",1),h(ie,"flexBasis",0),h(ie,"flexGrow",1),h(ie,"flexDirection","row"),R(oe,Xe),G(Xe,oi),h(ue,"height",1),h(ue,"flexBasis",0),h(ue,"flexGrow",1),h(ue,"flexDirection","row"),h(ue,"justifyContent","center"),G(ue,Q(kr,{id:"dashboard-wordmark",width:14,height:1,get backgroundColor(){return E.panel},get foregroundColor(){return E.accent}})),R(Ee,ot),h(Ee,"height",1),h(Ee,"flexBasis",0),h(Ee,"flexGrow",1),h(Ee,"flexDirection","row"),h(Ee,"justifyContent","flex-end"),G(ot,()=>e.repository.username),h(Ve,"id","dashboard-content"),h(Ve,"flexGrow",1),h(Ve,"flexDirection","column"),h(Ve,"justifyContent","center"),h(Ve,"padding",1),G(Ve,Q(Me,{get when(){return mt(()=>!a())()&&n().length>0},get fallback(){return(()=>{var x=I("box"),H=I("text");return R(x,H),h(x,"flexGrow",1),h(x,"alignItems","center"),h(x,"justifyContent","center"),G(H,c),ge((fe)=>h(H,"fg",E.muted,fe)),x})()},get children(){var x=I("box");return h(x,"id","artwork-grid"),h(x,"alignSelf","center"),h(x,"flexDirection","row"),h(x,"flexWrap","wrap"),h(x,"rowGap",1),h(x,"columnGap",2),G(x,Q(yt,{get each(){return X()},children:(H,fe)=>Q(hm,{artwork:H,get index(){return j()+fe()},selected:s,get cardWidth(){return b()},get cardHeight(){return w()},onSelect:()=>o(j()+fe())})})),ge((H)=>h(x,"width",P(),H)),x}})),R(Qe,re),R(Qe,ht),h(Qe,"height",1),h(Qe,"paddingX",1),h(Qe,"flexDirection","row"),h(Qe,"justifyContent","space-between"),G(re,c),G(ht,()=>e.variant==="local"?"N new | arrows move | Enter edit | R refresh | Esc back | Q quit":"N new | arrows move | Enter edit | R refresh | O sign out | Q quit"),G(D,Q(Me,{get when(){return m()},get children(){return Q(_o,{get width(){return r().width},get height(){return r().height},get selectedPalette(){return v()},get selectedSize(){return f()},get maxSize(){return e.repository.maxCanvasSize},get message(){return S()},onSelectPalette:(x)=>{y(x),_("")},onSelectSize:Re})}}),null),ge((x)=>{var H=E.background,fe=E.panel,qe=E.accentText,jt=E.muted,Oe=E.panel,at=E.panelActive,T=c().startsWith("Load failed")?E.warning:E.textPink,O=E.muted;return H!==x.e&&(x.e=h(D,"backgroundColor",H,x.e)),fe!==x.t&&(x.t=h(ee,"backgroundColor",fe,x.t)),qe!==x.a&&(x.a=h(oe,"fg",qe,x.a)),jt!==x.o&&(x.o=h(ot,"fg",jt,x.o)),Oe!==x.i&&(x.i=h(Ve,"backgroundColor",Oe,x.i)),at!==x.n&&(x.n=h(Qe,"backgroundColor",at,x.n)),T!==x.s&&(x.s=h(re,"fg",T,x.s)),O!==x.h&&(x.h=h(ht,"fg",O,x.h)),x},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),D})()},children:(D)=>Q(Rr,{get session(){return D().session},saveDocument:Te,get promptForFilenameOnSave(){return!D().artwork},onBack:()=>{A(null),u("Returned from editor")}})})}import{readdir as Am,readFile as fm,stat as fu,writeFile as gm}from"fs/promises";import{basename as mm,join as gu,resolve as pm}from"path";function mu(e,t,r,n){return{id:e,filename:t.filename,size:t.grid.length,grid:t.grid,palette:t.palette,paletteSaturation:t.paletteColorAdjustment?.saturation??0,paletteLightness:t.paletteColorAdjustment?.lightness??0,artboards:[],activeArtboard:t.draft?.activeArtboard??0,createdAt:r.toISOString(),updatedAt:n.toISOString(),activeColor:t.activeColor,draft:t.draft}}function bm(e){return e.replace(/[\\/]/g,"-").replace(/^\.+$/,"")||"untitled"}function ym(e){return typeof e==="object"&&e!==null&&"code"in e&&typeof e.code==="string"&&e.code!=="ENOENT"}function wm(e=process.env,t=process.cwd()){return e.INIT_CWD||e.PWD||t}class Co{username;maxCanvasSize=64;directory;constructor(e=wm()){this.directory=pm(e),this.username=mm(this.directory)||"Local"}async listArtworks(){let e=await Am(this.directory,{withFileTypes:!0});return(await Promise.all(e.map(async(r)=>{if(!r.isFile()||!r.name.endsWith(".flatblox.json"))return null;let n=gu(this.directory,r.name);try{let i=cn(await fm(n,"utf8")),s=await fu(n),o=s.birthtimeMs>0?s.birthtime:s.mtime;return mu(n,i,o,s.mtime)}catch(i){if(ym(i))throw i;return null}}))).filter((r)=>r!==null).sort((r,n)=>n.createdAt.localeCompare(r.createdAt))}async createArtwork(e){let t=gu(this.directory,`${bm(e.filename)}.flatblox.json`);if(await Bun.file(t).exists())throw Error(`A local artwork named ${e.filename} already exists`);return this.writeArtwork(t,e)}async saveArtwork(e,t){return this.writeArtwork(e.id,t)}async signOut(){}async writeArtwork(e,t){await gm(e,un(t));let r=await fu(e),n=r.birthtimeMs>0?r.birthtime:r.mtime;return mu(e,t,n,r.mtime)}}function pu(e){let t=wt(),r=pr(),[n,i]=Z(0),[s,o]=Z(!1),[a,l]=Z(16),[c,u]=Z(0),[d,A]=Z(null),[m,g]=Z(null),[f,p]=Z(!1),v=e.cloudRepository,[y,S]=Z(v instanceof Promise?null:v??null);if(v instanceof Promise)v.then(S,(V)=>M(V instanceof Error?V.message:String(V)));let[_,b]=Z(!1),[w,C]=Z(!1),[P,M]=Z(""),[B,k]=Z(""),j=null,X=e.localRepository??new Co,W=()=>{l(16),u(0),o(!0)},q=()=>{o(!1),g(null),A(new Mt(bo(a(),c())))},Ae=(V)=>{u((J)=>wo(J,V))},z=async()=>{if(w())return;let V=new AbortController;j=V,C(!0),M(""),k("");try{let J=await e.onSignIn(V.signal,k);if(!V.signal.aborted)S(J),b(!0)}catch(J){if(!V.signal.aborted)M(J instanceof Error?J.message:String(J))}finally{if(j===V)j=null;C(!1)}},ce=(V)=>{i((J)=>Math.max(0,Math.min(2,J+V)))},Re=()=>{if(y())b(!0);else z()};return br((V)=>{if(V.eventType==="release"||d()||f()||_())return;let J=V.name.toLowerCase();if(w()){if(J==="escape"||J==="q"||V.ctrl&&J==="c")j?.abort();return}if(s()){let pe=yo(V,Wi(r().width));if(pe?.kind==="cancel")o(!1);else if(pe?.kind==="size")l(pe.size);else if(pe?.kind==="palette")Ae(pe.delta);else if(pe?.kind==="create")q();return}let Te=rr(J);if(V.ctrl&&J==="c")t.destroy();else if(J==="q"||J==="escape")t.destroy();else if(Te?.dy)ce(Te.dy);else if(J==="n")W();else if(J==="l")p(!0);else if(J==="s"||J==="d")Re();else if(tr(V))if(n()===0)W();else if(n()===1)p(!0);else Re()}),Q(Me,{get when(){return mt(()=>!!_())()?y():null},get fallback(){return Q(Me,{get when(){return d()},get fallback(){return Q(Me,{get when(){return f()},get fallback(){return(()=>{var V=I("box"),J=I("box"),Te=I("box"),pe=I("box"),D=I("box"),ee=I("text"),ie=I("box"),oe=I("box"),Xe=I("text"),ue=I("box"),Ee=I("box"),ot=I("text"),Ve=I("box"),Qe=I("text");return R(V,J),h(V,"width","100%"),h(V,"height","100%"),h(V,"alignItems","center"),h(V,"justifyContent","center"),R(J,Te),R(J,pe),R(J,ie),R(J,ue),R(J,Ve),R(J,Qe),h(J,"flexDirection","column"),h(J,"alignItems","center"),G(J,Q(kr,{id:"welcome-wordmark",width:32,height:2,get backgroundColor(){return E.background},get foregroundColor(){return E.accent}}),Te),h(Te,"height",3),R(pe,D),h(pe,"id","welcome-new-artwork"),h(pe,"width",36),h(pe,"height",3),h(pe,"border",!0),h(pe,"onMouseDown",()=>{i(0),W()}),R(D,ee),h(D,"width","100%"),h(D,"height","100%"),h(D,"alignItems","center"),h(D,"justifyContent","center"),R(ee,_e("New artwork")),h(ee,"id","welcome-new-artwork-label"),R(ie,oe),h(ie,"id","welcome-load-artwork"),h(ie,"width",36),h(ie,"height",3),h(ie,"border",!0),h(ie,"onMouseDown",()=>{i(1),p(!0)}),R(oe,Xe),h(oe,"width","100%"),h(oe,"height","100%"),h(oe,"alignItems","center"),h(oe,"justifyContent","center"),R(Xe,_e("Load artwork")),h(Xe,"id","welcome-load-artwork-label"),R(ue,Ee),h(ue,"id","welcome-sign-in"),h(ue,"width",36),h(ue,"height",3),h(ue,"border",!0),h(ue,"onMouseDown",()=>{i(2),Re()}),R(Ee,ot),h(Ee,"width","100%"),h(Ee,"height","100%"),h(Ee,"alignItems","center"),h(Ee,"justifyContent","center"),h(ot,"id","welcome-sign-in-label"),G(ot,()=>y()?"Dashboard":"Sign in"),h(Ve,"height",2),G(Qe,(()=>{var re=mt(()=>!!w());return()=>re()?mt(()=>!!B())()?`Open this URL: ${B()} \xB7 Esc cancel`:"Complete sign-in in your browser \xB7 Esc cancel":P()||"\u2191/\u2193 select \xB7 Enter open \xB7 Q quit"})()),G(V,Q(Me,{get when(){return s()},get children(){return Q(_o,{get width(){return r().width},get height(){return r().height},get selectedPalette(){return c()},get selectedSize(){return a()},maxSize:64,message:"",onSelectPalette:u,onSelectSize:l})}}),null),ge((re)=>{var ht=E.background,x=B()?Math.max(36,r().width-4):36,H=n()===0?E.accent:E.border,fe=n()===0?E.textPink:E.text,qe=n()===1?E.accent:E.border,jt=n()===1?E.textPink:E.text,Oe=n()===2?E.accent:E.border,at=n()===2?E.textPink:E.text,T=P()?E.warning:E.muted;return ht!==re.e&&(re.e=h(V,"backgroundColor",ht,re.e)),x!==re.t&&(re.t=h(J,"width",x,re.t)),H!==re.a&&(re.a=h(pe,"borderColor",H,re.a)),fe!==re.o&&(re.o=h(ee,"fg",fe,re.o)),qe!==re.i&&(re.i=h(ie,"borderColor",qe,re.i)),jt!==re.n&&(re.n=h(Xe,"fg",jt,re.n)),Oe!==re.s&&(re.s=h(ue,"borderColor",Oe,re.s)),at!==re.h&&(re.h=h(ot,"fg",at,re.h)),T!==re.r&&(re.r=h(Qe,"fg",T,re.r)),re},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),V})()},get children(){return Q(vo,{repository:X,variant:"local",onBack:()=>p(!1)})}})},children:(V)=>Q(Rr,{get session(){return V()},saveDocument:async(J)=>{let Te=m(),pe=Te?await X.saveArtwork(Te,J):await X.createArtwork(J);return g(pe),"Saved locally"},get promptForFilenameOnSave(){return!m()},onBack:()=>{g(null),A(null)}})})},children:(V)=>Q(vo,{get repository(){return V()}})})}var bu={backgroundColor:E.background,debounceDelay:1,exitOnCtrlC:!1,targetFps:60,useKittyKeyboard:{events:!0,allKeysAsEscapes:!0}};async function _m(e){let t=Xc(),r=Vc(t),n=await zc(r,t.authFile);if(e){if(n)await r.auth.signOut();await Ar(t.authFile),process.stdout.write(`Signed out of Flatblox TUI.
77
+ -h, --help Show this help`;function ru(e,t,r){let n=e[t+1];if(!n||n.startsWith("-"))throw Error(`${r} needs a value`);return n}function nu(e){let t,r,n=16,i=!1,s=!1,o=!1,a=!1,l=!1;for(let c=0;c<e.length;c++){let u=e[c];if(u==="-h"||u==="--help")i=!0;else if(u==="--cloud")s=!0;else if(u==="--local")o=!0;else if(u==="--logout")s=!0,a=!0;else if(u==="-s"||u==="--size")n=Number(ru(e,c,u)),l=!0,c++;else if(u==="-o"||u==="--output")r=ru(e,c,u),l=!0,c++;else if(u.startsWith("-"))throw Error(`Unknown option: ${u}`);else if(t)throw Error("Only one draft file can be opened");else t=u,l=!0}if(!Number.isInteger(n)||n<1||n>Ie)throw Error(`Grid size must be between 1 and ${Ie}`);if(s&&(o||l))throw Error("Cloud mode cannot be combined with local file options");return{mode:s||!o&&!l?"cloud":"local",filePath:t,outputPath:r,size:n,help:i,logout:a}}function zg(e){return Vg(e).replace(/\.flatblox\.json$/i,"").replace(/\.json$/i,"")}async function iu(e){let t=e.filePath?tu(e.filePath):void 0,r=t?Bun.file(t):void 0,n=r&&await r.exists()?cn(await r.text()):{...hn(e.size),filename:t?zg(t):"untitled"},i=tu(e.outputPath??t??`${n.filename}.flatblox.json`);return{session:new Mt(n),filePath:i}}var ji="id, filename, num_cols, num_rows, grid, palette, palette_saturation, palette_lightness, artboards, created_at, updated_at",ou=16;function au(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function su(e,t){let r=sn(e);return r.length===t&&r.every((n)=>n.length===t)?r:null}function lu(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++){if(e[r].length!==t[r].length)return!1;for(let n=0;n<e[r].length;n++){let i=e[r][n],s=t[r][n];if(i.active!==s.active||i.color!==s.color||(i.tileIndex??null)!==(s.tileIndex??null)||(i.depth??null)!==(s.depth??null)||(i.mirrorZ??!1)!==(s.mirrorZ??!1))return!1}}return!0}function qg(e){if(!Array.isArray(e))return[];return e.slice(0,Ss).flatMap((t,r)=>{if(!au(t)||!("grid"in t))return[];return[{...t,id:Number.isInteger(t.id)?Number(t.id):r,name:typeof t.name==="string"?t.name:`Frame ${r+1}`,grid:t.grid}]})}function em(e){if(!Array.isArray(e))return[...it[0].colors];let t=e.filter(pt).slice(0,ou);return t.length>0?t:[...it[0].colors]}function Hi(e){if(!au(e))return null;let t=Number(e.num_cols);if(!Number.isInteger(t)||t<1||t>Ie||e.num_rows!==t||typeof e.id!=="string"||typeof e.filename!=="string"||typeof e.created_at!=="string"||typeof e.updated_at!=="string")return null;let r=su(e.grid,t);if(!r)return null;let n=qg(e.artboards),i=JSON.stringify(e.grid),s=n.findIndex((o)=>JSON.stringify(o.grid)===i);if(s<0)s=n.findIndex((o)=>{let a=su(o.grid,t);return a?lu(a,r):!1});return{id:e.id,filename:e.filename||"Untitled",size:t,grid:r,palette:em(e.palette),paletteSaturation:nt(e.palette_saturation),paletteLightness:nt(e.palette_lightness),artboards:n,activeArtboard:s<0?0:s,createdAt:e.created_at,updatedAt:e.updated_at}}function cu(e){return Vt(e.grid,e.paletteSaturation,e.paletteLightness)}function uu(e){return{filename:e.filename,grid:e.grid.map((t)=>t.map((r)=>({...r}))),palette:[...e.palette],activeColor:e.activeColor??e.palette[0],paletteColorAdjustment:{saturation:e.paletteSaturation,lightness:e.paletteLightness},draft:e.draft?structuredClone(e.draft):void 0}}function tm(e,t,r=new Date().toISOString()){if(t.grid.length!==e.size||!t.grid.every((s)=>s.length===e.size))throw Error("Artwork dimensions changed");let n=Cr(t.grid),i=e.artboards.map((s)=>({...s}));if(i.length===0)i.push({id:0,name:"Frame 1",grid:n});else{let s=Math.min(e.activeArtboard,i.length-1);i[s]={...i[s],grid:n}}return{grid:n,artboards:i,updated_at:r}}function rm(e,t,r=new Date().toISOString()){let n=e.grid.length;if(n<1||n>Ie||!e.grid.every((o)=>o.length===n))throw Error("Artwork grid is invalid");let i=e.palette.filter(pt).slice(0,ou);if(i.length===0)throw Error("Artwork palette is invalid");let s=Cr(e.grid);return{user_id:t,filename:e.filename||"untitled",num_cols:n,num_rows:n,grid:s,palette:i,artboards:[{id:0,name:"Frame 1",grid:s}],updated_at:r}}class go{client;userId;afterSignOut;username;maxCanvasSize;constructor(e,t,r,n=32,i){this.client=e,this.userId=t,this.username=r,this.maxCanvasSize=n,this.afterSignOut=i}async listArtworks(){let{data:e,error:t}=await this.client.from("pixel_art").select(ji).eq("user_id",this.userId).order("created_at",{ascending:!1});if(t)throw Error(t.message);return(e??[]).flatMap((r)=>{let n=Hi(r);return n?[n]:[]})}async createArtwork(e){let t=rm(e,this.userId),{data:r,error:n}=await this.client.from("pixel_art").insert(t).select(ji).single();if(n)throw Error(n.message);let i=Hi(r);if(!i)throw Error("Supabase returned an invalid artwork");return i}async saveArtwork(e,t){let r=await this.trySaveArtwork(e,t);if(r)return r;let n=await this.fetchArtwork(e.id);if(!n||!lu(e.grid,n.grid))throw Error("This artwork changed in the web app. Return and refresh before saving.");let i=await this.trySaveArtwork(n,t);if(i)return i;throw Error("This artwork changed again while saving. Return and refresh before trying again.")}async trySaveArtwork(e,t){let r=tm(e,t),{data:n,error:i}=await this.client.from("pixel_art").update(r).eq("id",e.id).eq("user_id",this.userId).eq("updated_at",e.updatedAt).select(ji).maybeSingle();if(i)throw Error(i.message);if(!n)return null;let s=Hi(n);if(!s)throw Error("Supabase returned an invalid artwork");return s}async fetchArtwork(e){let{data:t,error:r}=await this.client.from("pixel_art").select(ji).eq("id",e).eq("user_id",this.userId).maybeSingle();if(r)throw Error(r.message);return t?Hi(t):null}async signOut(){let{error:e}=await this.client.auth.signOut();if(e)throw Error(e.message);await this.afterSignOut?.()}}import{NativeImage as nm,Renderable as im,RGBA as sm}from"@opentui/core";var Fn=sm.fromInts(14,16,24),Ki=new Map,om=256;function am(e,t,r,n){let i=`${e}|${t}|${r}|${n}`,s=Ki.get(i);if(s)return s;if(Ki.size>=om)Ki.clear();let o=lm(e,t,r,n);return Ki.set(i,o),o}function lm(e,t,r,n){let i=t*2,s=Math.max(1,Math.min(r,e,i)),o=Math.max(1,Math.floor(e/s)),a=Math.max(1,Math.floor(i/s)),l=1,c=1,u=0,d=Number.POSITIVE_INFINITY;for(let A=1;A<=o;A++)for(let m=1;m<=a;m++){let g=m*n/2,f=Math.min(A,g),p=Math.abs(Math.log(g/A));if(f>u||f===u&&p<d)l=A,c=m,u=f,d=p}return{sampleCount:s,columnScale:l,subrowScale:c,columns:s*l,subrows:s*c}}function cm(e,t,r,n,i){let s=Math.max(1,Math.round(Math.min(e*n,t*i))),o=Math.max(1,Math.min(r,s)),a=Math.min(e,Math.ceil(s/n));return{sampleCount:o,side:s,columns:a,rows:Math.min(t,Math.ceil(s/i)),pixelWidth:Math.max(s,Math.round(a*n))}}class mo extends im{currentGrid=[];textFrame=null;artworkImage=null;artworkImageCache=null;constructor(e,t){super(e,{...t,buffered:!0});if(t.grid)this.currentGrid=t.grid}set grid(e){let t=e??[];if(t===this.currentGrid)return;this.currentGrid=t,this.requestRender()}renderSelf(e){let t=this.currentGrid.length,r=Kt(this._ctx);if(r&&ri(this._ctx)){if(this.textFrame=null,e.clear(Fn),t===0||this.width<=0||this.height<=0)return;this.drawArtworkImage(e,t,r.width,r.height);return}let n=ti(this._ctx),i=this.textFrame;if(i&&i.grid===this.currentGrid&&i.width===this.width&&i.height===this.height&&i.cellAspect===n)return;if(this.textFrame={grid:this.currentGrid,width:this.width,height:this.height,cellAspect:n},e.clear(Fn),t===0||this.width<=0||this.height<=0)return;this.releaseArtworkImage();let s=this.height*2,o=am(this.width,this.height,t,n),{columns:a,subrows:l}=o,c=Math.floor((this.width-a)/2),u=Math.floor((s-l)/2),d=this.currentGrid,{columnScale:A,subrowScale:m,sampleCount:g}=o,f=(p)=>{let v=p-u;if(v<0||v>=l)return-1;let y=Math.floor(v/m);return Math.min(t-1,Math.floor(y*t/g))};for(let p=0;p<this.height;p++){let v=f(p*2),y=f(p*2+1);for(let S=0;S<a;S++){let _=Math.floor(S/A),b=Math.min(t-1,Math.floor(_*t/g)),w=v<0?Fn:Wt(d[v]?.[b],b,v),C=y<0?Fn:Wt(d[y]?.[b],b,y);e.setCell(c+S,p,"\u2580",w,C)}}}drawArtworkImage(e,t,r,n){let i=cm(this.width,this.height,t,r,n),s=this.artworkImageCache;if(!(this.artworkImage&&s&&s.grid===this.currentGrid&&s.sampleCount===i.sampleCount&&s.side===i.side&&s.pixelWidth===i.pixelWidth)){let a=new Uint8Array(i.sampleCount**2*4);for(let A=0;A<i.sampleCount;A++){let m=Math.min(t-1,Math.floor(A*t/i.sampleCount));for(let g=0;g<i.sampleCount;g++){let f=Math.min(t-1,Math.floor(g*t/i.sampleCount)),[p,v,y]=Wt(this.currentGrid[m]?.[f],f,m).toInts(),S=(A*i.sampleCount+g)*4;a[S]=p,a[S+1]=v,a[S+2]=y,a[S+3]=255}}let l=nm.fromRgba(a,i.sampleCount,i.sampleCount),c=l.resize({width:i.side,height:i.side,kernel:"nearest"});l.dispose();let u=i.pixelWidth-i.side,d=u>0?c.extend({left:u,background:Fn.toInts()}):c;if(d!==c)c.dispose();this.releaseArtworkImage(),this.artworkImage=d,this.artworkImageCache={grid:this.currentGrid,sampleCount:i.sampleCount,side:i.side,pixelWidth:i.pixelWidth}}if(!this.artworkImage)return;e.drawImage(this.artworkImage,Math.floor((this.width-i.columns)/2),Math.floor((this.height-i.rows)/2),i.columns,i.rows,i.pixelWidth,i.side,0,0,i.pixelWidth,i.side,"auto")}releaseArtworkImage(){this.artworkImage?.dispose(),this.artworkImage=null,this.artworkImageCache=null}destroySelf(){this.releaseArtworkImage(),super.destroySelf()}}Lt({artwork_preview:mo});var po=[16,32,64],hu=74,du=2;function bo(e,t){let r=hn(e),n=it[t];return r.palette=[...n.colors],r.activeColor=r.palette[0],r}function yo(e,t){let r=e.name.toLowerCase(),n=Number(r)-1;if(r==="escape")return{kind:"cancel"};if(Number.isInteger(n)&&po[n])return{kind:"size",size:po[n]};let i=rr(r);if(i)return{kind:"palette",delta:i.dx+i.dy*t};if(tr(e))return{kind:"create"}}function um(e,t){let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}function Au(e,t){if(e.length<=t)return e;return`${e.slice(0,Math.max(1,t-1))}\u2026`}function dm(e){return en(bs(e.palette,e.grid),e.paletteSaturation,e.paletteLightness)}function wo(e,t){return Math.max(0,Math.min(it.length-1,e+t))}function Wi(e){return Math.max(1,Math.min(hu,e-4))>=64?2:1}function _o(e){let t=Y(()=>Math.max(1,Math.min(hu,e.width-4))),r=Y(()=>Math.max(1,Math.min(19,e.height-2))),n=Y(()=>Wi(e.width)),i=Y(()=>r()>=12?1:0),s=Y(()=>Math.max(1,r()-7-i()*2)),o=Y(()=>s()*n()),a=Y(()=>Math.floor(e.selectedPalette/o())*o()),l=Y(()=>{let m=a();return it.slice(m,m+o()).map((g,f)=>({palette:g,index:m+f}))}),c=Y(()=>um(l(),n())),u=Y(()=>Math.max(1,Math.floor((t()-4-(n()-1))/n()))),d=Y(()=>Math.max(3,Math.min(10,u()-8))),A=Y(()=>Math.max(1,u()-d()-4));return(()=>{var m=I("box"),g=I("box"),f=I("box"),p=I("text"),v=I("box"),y=I("text"),S=_e("Choose a palette | "),_=I("box"),b=I("box"),w=I("text");return R(m,g),h(m,"id","new-artwork-modal"),h(m,"position","absolute"),h(m,"zIndex",30),h(m,"border",!0),h(m,"title"," New artwork "),h(m,"flexDirection","column"),R(g,f),R(g,v),R(g,y),R(g,_),R(g,b),R(g,w),h(g,"flexGrow",1),h(g,"width","100%"),h(g,"padding",1),h(g,"flexDirection","column"),R(f,p),h(f,"height",1),h(f,"flexDirection","row"),h(f,"gap",1),R(p,_e("Grid size")),G(f,Q(yt,{each:po,children:(C,P)=>{let M=()=>C<=e.maxSize,B=()=>C===e.selectedSize;return(()=>{var k=I("box"),j=I("text"),X=_e(" "),K=_e("\xD7");return R(k,j),h(k,"height",1),h(k,"paddingX",1),h(k,"onMouseDown",()=>e.onSelectSize(C)),R(j,X),R(j,K),G(j,()=>P()+1,X),G(j,C,K),G(j,C,null),ge((ee)=>{var Ae=B()?E.panelActive:E.panel,z=M()?B()?E.accentText:E.muted:E.border;return Ae!==ee.e&&(ee.e=h(k,"backgroundColor",Ae,ee.e)),z!==ee.t&&(ee.t=h(j,"fg",z,ee.t)),ee},{e:void 0,t:void 0}),k})()}}),null),R(y,S),G(y,()=>it[e.selectedPalette].name,null),G(g,Q(yt,{get each(){return c()},children:(C)=>(()=>{var P=I("box");return h(P,"height",1),h(P,"flexDirection","row"),h(P,"gap",1),G(P,Q(yt,{each:C,children:(M)=>{let B=()=>M.index===e.selectedPalette;return(()=>{var k=I("box"),j=I("text"),X=I("box");return R(k,j),R(k,X),h(k,"height",1),h(k,"paddingX",1),h(k,"flexDirection","row"),h(k,"justifyContent","space-between"),h(k,"onMouseDown",()=>e.onSelectPalette(M.index)),G(j,()=>Au(M.palette.name,A())),h(X,"height",1),h(X,"flexDirection","row"),G(X,Q(yt,{get each(){return M.palette.colors.slice(0,d())},children:(K)=>(()=>{var ee=I("text");return R(ee,_e("\u25A0")),ge((Ae)=>h(ee,"fg",Ue(K),Ae)),ee})()})),ge((K)=>{var ee=u(),Ae=B()?E.panelActive:E.panel,z=B()?E.text:E.muted;return ee!==K.e&&(K.e=h(k,"width",ee,K.e)),Ae!==K.t&&(K.t=h(k,"backgroundColor",Ae,K.t)),z!==K.a&&(K.a=h(j,"fg",z,K.a)),K},{e:void 0,t:void 0,a:void 0}),k})()}})),P})()}),_),h(b,"flexGrow",1),G(w,()=>e.message||"1\u20133 size \xB7 arrows palette \xB7 Enter create \xB7 Esc cancel"),ge((C)=>{var P=Math.max(0,Math.floor((e.width-t())/2)),M=Math.max(0,Math.floor((e.height-r())/2)),B=t(),k=r(),j=E.border,X=E.accent,K=E.panel,ee=E.textPink,Ae=i(),z=E.textPink,ce=i(),Te=e.message?E.warning:E.textPink;return P!==C.e&&(C.e=h(m,"left",P,C.e)),M!==C.t&&(C.t=h(m,"top",M,C.t)),B!==C.a&&(C.a=h(m,"width",B,C.a)),k!==C.o&&(C.o=h(m,"height",k,C.o)),j!==C.i&&(C.i=h(m,"borderColor",j,C.i)),X!==C.n&&(C.n=h(m,"titleColor",X,C.n)),K!==C.s&&(C.s=h(g,"backgroundColor",K,C.s)),ee!==C.h&&(C.h=h(p,"fg",ee,C.h)),Ae!==C.r&&(C.r=h(v,"height",Ae,C.r)),z!==C.d&&(C.d=h(y,"fg",z,C.d)),ce!==C.l&&(C.l=h(_,"height",ce,C.l)),Te!==C.u&&(C.u=h(w,"fg",Te,C.u)),C},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0}),m})()}function hm(e){let t=Y(()=>cu(e.artwork)),r=Y(()=>dm(e.artwork)),n=()=>e.selected()===e.index,i=()=>e.cardWidth-2;return(()=>{var s=I("box"),o=I("box"),a=I("box"),l=I("artwork_preview"),c=I("box"),u=I("text"),d=I("text"),A=I("text"),m=I("box"),g=I("box");return R(s,o),R(s,d),R(s,A),R(s,m),R(s,g),h(s,"flexDirection","column"),R(o,a),h(o,"width","100%"),h(o,"height","100%"),h(o,"border",!0),h(o,"borderColor","transparent"),h(o,"flexDirection","column"),R(a,l),R(a,c),R(a,u),h(a,"flexGrow",1),h(a,"width","100%"),h(a,"flexDirection","column"),h(a,"paddingX",1),h(l,"flexGrow",1),h(l,"width","100%"),h(c,"height",1),h(c,"width","100%"),h(c,"flexDirection","row"),h(c,"gap",1),h(c,"overflow","hidden"),G(c,Q(yt,{get each(){return r()},children:(f)=>Q(fn,{get color(){return Ue(f)},get background(){return E.panel},width:1,shape:"circle"})})),G(u,()=>Au(e.artwork.filename,e.cardWidth-3)),h(d,"position","absolute"),h(d,"left",1),h(d,"top",0),h(d,"height",1),h(d,"zIndex",1),G(d,()=>"\u2580".repeat(i())),h(A,"position","absolute"),h(A,"left",1),h(A,"height",1),h(A,"zIndex",1),G(A,()=>"\u2584".repeat(i())),h(m,"position","absolute"),h(m,"left",0),h(m,"top",0),h(m,"width",1),h(m,"height","100%"),h(m,"zIndex",2),h(g,"position","absolute"),h(g,"top",0),h(g,"width",1),h(g,"height","100%"),h(g,"zIndex",2),ge((f)=>{var p=`artwork-card-${e.artwork.id}`,v=e.cardWidth,y=e.cardHeight,S=E.card,_=e.onSelect,b=E.card,w=E.panel,C=`artwork-preview-${e.artwork.id}`,P=t(),M=E.textPink,B=`artwork-card-selection-top-${e.artwork.id}`,k=i(),j=n()?E.orangeActive:E.card,X=E.panel,K=`artwork-card-selection-bottom-${e.artwork.id}`,ee=e.cardHeight-1,Ae=i(),z=n()?E.orangeActive:E.card,ce=E.panel,Te=`artwork-card-selection-side-${e.artwork.id}`,V=n()?E.orangeActive:E.card,J=e.cardWidth-1,Be=n()?E.orangeActive:E.card;return p!==f.e&&(f.e=h(s,"id",p,f.e)),v!==f.t&&(f.t=h(s,"width",v,f.t)),y!==f.a&&(f.a=h(s,"height",y,f.a)),S!==f.o&&(f.o=h(s,"backgroundColor",S,f.o)),_!==f.i&&(f.i=h(s,"onMouseDown",_,f.i)),b!==f.n&&(f.n=h(o,"backgroundColor",b,f.n)),w!==f.s&&(f.s=h(a,"backgroundColor",w,f.s)),C!==f.h&&(f.h=h(l,"id",C,f.h)),P!==f.r&&(f.r=h(l,"grid",P,f.r)),M!==f.d&&(f.d=h(u,"fg",M,f.d)),B!==f.l&&(f.l=h(d,"id",B,f.l)),k!==f.u&&(f.u=h(d,"width",k,f.u)),j!==f.c&&(f.c=h(d,"fg",j,f.c)),X!==f.w&&(f.w=h(d,"bg",X,f.w)),K!==f.m&&(f.m=h(A,"id",K,f.m)),ee!==f.f&&(f.f=h(A,"top",ee,f.f)),Ae!==f.y&&(f.y=h(A,"width",Ae,f.y)),z!==f.g&&(f.g=h(A,"fg",z,f.g)),ce!==f.p&&(f.p=h(A,"bg",ce,f.p)),Te!==f.b&&(f.b=h(m,"id",Te,f.b)),V!==f.T&&(f.T=h(m,"backgroundColor",V,f.T)),J!==f.A&&(f.A=h(g,"left",J,f.A)),Be!==f.O&&(f.O=h(g,"backgroundColor",Be,f.O)),f},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0,A:void 0,O:void 0}),s})()}function vo(e){let t=wt(),r=pr(),[n,i]=Z([]),[s,o]=Z(0),[a,l]=Z(!0),[c,u]=Z("Loading saved artworks\u2026"),[d,A]=Z(null),[m,g]=Z(!1),[f,p]=Z(16),[v,y]=Z(0),[S,_]=Z(""),b=Y(()=>{let D=Math.max(8,r().width-2);return Math.min(28,D,Math.max(12,Math.floor(D/3)))}),w=Y(()=>{let D=r().height<18?7:r().height<25?9:12;return Math.max(4,Math.min(D,r().height-6))}),C=Y(()=>Math.max(1,Math.floor((r().width-2)/(b()+du)))),P=Y(()=>C()*b()+Math.max(0,C()-1)*du),M=Y(()=>Math.max(1,Math.floor((r().height-5)/(w()+1)))),B=Y(()=>C()*M()),k=Y(()=>Math.floor(s()/B())),j=Y(()=>k()*B()),X=Y(()=>{let D=j();return n().slice(D,D+B())});Wn(()=>{let D=Math.max(0,n().length-1);if(s()>D)o(D)});let K=async()=>{l(!0),u("Loading saved artworks\u2026");try{let D=await e.repository.listArtworks();i(D),u(D.length===0?"No saved artworks yet":`${D.length} saved artwork${D.length===1?"":"s"}`)}catch(D){u(`Load failed: ${D instanceof Error?D.message:String(D)}`)}finally{l(!1)}};Xt(()=>void K());let ee=(D,te)=>{let ie=n().length;if(ie===0)return;let oe=Math.max(0,Math.min(ie-1,s()+D+te*C()));o(oe),u(n()[oe].filename)},Ae=()=>{let D=n()[s()];if(!D)return;A({artwork:D,session:new Mt(uu(D))})},z=()=>{p(16),y(0),_(""),g(!0),u("Choose a size and palette")},ce=()=>{g(!1),_(""),u("New artwork cancelled")},Te=(D)=>{if(D>e.repository.maxCanvasSize){_(`${D}\xD7${D} is unavailable on this plan`);return}p(D),_("")},V=(D)=>{y((te)=>wo(te,D)),_("")},J=()=>{g(!1),A({artwork:null,session:new Mt(bo(f(),v()))})},Be=async(D)=>{let te=d();if(!te)throw Error("No artwork is open");let ie=te.artwork?await e.repository.saveArtwork(te.artwork,D):await e.repository.createArtwork(D);if(i((oe)=>oe.some((ue)=>ue.id===ie.id)?oe.map((ue)=>ue.id===ie.id?ie:ue):[ie,...oe]),!te.artwork)o(0);return A((oe)=>oe===te?{...oe,artwork:ie}:oe),e.variant==="local"?"Saved locally":"Saved to Flatblox cloud"},pe=async()=>{u("Signing out\u2026");try{await e.repository.signOut(),t.destroy()}catch(D){u(`Sign out failed: ${D instanceof Error?D.message:String(D)}`)}};return br((D)=>{if(D.eventType==="release"||d())return;let te=D.name.toLowerCase();if(m()){let oe=yo(D,Wi(r().width));if(oe?.kind==="cancel")ce();else if(oe?.kind==="size")Te(oe.size);else if(oe?.kind==="palette")V(oe.delta);else if(oe?.kind==="create")J();return}let ie=rr(te);if(D.ctrl&&te==="c")t.destroy();else if(te==="escape"&&e.onBack)e.onBack();else if(te==="q"||te==="escape")t.destroy();else if(ie)ee(ie.dx,ie.dy);else if(te==="n")z();else if(tr(D))Ae();else if(te==="r")K();else if(te==="o"&&e.variant!=="local")pe()}),Q(Fe,{get when(){return d()},get fallback(){return(()=>{var D=I("box"),te=I("box"),ie=I("box"),oe=I("text"),Xe=I("b"),ue=I("box"),Ee=I("box"),ot=I("text"),Ve=I("box"),Qe=I("box"),re=I("text"),ht=I("text");return R(D,te),R(D,Ve),R(D,Qe),h(D,"width","100%"),h(D,"height","100%"),h(D,"flexDirection","column"),R(te,ie),R(te,ue),R(te,Ee),h(te,"height",3),h(te,"paddingY",1),h(te,"paddingX",1),h(te,"flexDirection","row"),R(ie,oe),h(ie,"height",1),h(ie,"flexBasis",0),h(ie,"flexGrow",1),h(ie,"flexDirection","row"),R(oe,Xe),G(Xe,oi),h(ue,"height",1),h(ue,"flexBasis",0),h(ue,"flexGrow",1),h(ue,"flexDirection","row"),h(ue,"justifyContent","center"),G(ue,Q(kr,{id:"dashboard-wordmark",width:14,height:1,get backgroundColor(){return E.panel},get foregroundColor(){return E.accent}})),R(Ee,ot),h(Ee,"height",1),h(Ee,"flexBasis",0),h(Ee,"flexGrow",1),h(Ee,"flexDirection","row"),h(Ee,"justifyContent","flex-end"),G(ot,()=>e.repository.username),h(Ve,"id","dashboard-content"),h(Ve,"flexGrow",1),h(Ve,"flexDirection","column"),h(Ve,"justifyContent","center"),h(Ve,"padding",1),G(Ve,Q(Fe,{get when(){return mt(()=>!a())()&&n().length>0},get fallback(){return(()=>{var x=I("box"),H=I("text");return R(x,H),h(x,"flexGrow",1),h(x,"alignItems","center"),h(x,"justifyContent","center"),G(H,c),ge((fe)=>h(H,"fg",E.muted,fe)),x})()},get children(){var x=I("box");return h(x,"id","artwork-grid"),h(x,"alignSelf","center"),h(x,"flexDirection","row"),h(x,"flexWrap","wrap"),h(x,"rowGap",1),h(x,"columnGap",2),G(x,Q(yt,{get each(){return X()},children:(H,fe)=>Q(hm,{artwork:H,get index(){return j()+fe()},selected:s,get cardWidth(){return b()},get cardHeight(){return w()},onSelect:()=>o(j()+fe())})})),ge((H)=>h(x,"width",P(),H)),x}})),R(Qe,re),R(Qe,ht),h(Qe,"height",1),h(Qe,"paddingX",1),h(Qe,"flexDirection","row"),h(Qe,"justifyContent","space-between"),G(re,c),G(ht,()=>e.variant==="local"?"N new | arrows move | Enter edit | R refresh | Esc back | Q quit":"N new | arrows move | Enter edit | R refresh | O sign out | Q quit"),G(D,Q(Fe,{get when(){return m()},get children(){return Q(_o,{get width(){return r().width},get height(){return r().height},get selectedPalette(){return v()},get selectedSize(){return f()},get maxSize(){return e.repository.maxCanvasSize},get message(){return S()},onSelectPalette:(x)=>{y(x),_("")},onSelectSize:Te})}}),null),ge((x)=>{var H=E.background,fe=E.panel,qe=E.accentText,jt=E.muted,Pe=E.panel,at=E.panelActive,T=c().startsWith("Load failed")?E.warning:E.textPink,O=E.muted;return H!==x.e&&(x.e=h(D,"backgroundColor",H,x.e)),fe!==x.t&&(x.t=h(te,"backgroundColor",fe,x.t)),qe!==x.a&&(x.a=h(oe,"fg",qe,x.a)),jt!==x.o&&(x.o=h(ot,"fg",jt,x.o)),Pe!==x.i&&(x.i=h(Ve,"backgroundColor",Pe,x.i)),at!==x.n&&(x.n=h(Qe,"backgroundColor",at,x.n)),T!==x.s&&(x.s=h(re,"fg",T,x.s)),O!==x.h&&(x.h=h(ht,"fg",O,x.h)),x},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),D})()},children:(D)=>Q(Rr,{get session(){return D().session},saveDocument:Be,get promptForFilenameOnSave(){return!D().artwork},onBack:()=>{A(null),u("Returned from editor")}})})}import{readdir as Am,readFile as fm,stat as fu,writeFile as gm}from"fs/promises";import{basename as mm,join as gu,resolve as pm}from"path";function mu(e,t,r,n){return{id:e,filename:t.filename,size:t.grid.length,grid:t.grid,palette:t.palette,paletteSaturation:t.paletteColorAdjustment?.saturation??0,paletteLightness:t.paletteColorAdjustment?.lightness??0,artboards:[],activeArtboard:t.draft?.activeArtboard??0,createdAt:r.toISOString(),updatedAt:n.toISOString(),activeColor:t.activeColor,draft:t.draft}}function bm(e){return e.replace(/[\\/]/g,"-").replace(/^\.+$/,"")||"untitled"}function ym(e){return typeof e==="object"&&e!==null&&"code"in e&&typeof e.code==="string"&&e.code!=="ENOENT"}function wm(e=process.env,t=process.cwd()){return e.INIT_CWD||e.PWD||t}class Co{username;maxCanvasSize=64;directory;constructor(e=wm()){this.directory=pm(e),this.username=mm(this.directory)||"Local"}async listArtworks(){let e=await Am(this.directory,{withFileTypes:!0});return(await Promise.all(e.map(async(r)=>{if(!r.isFile()||!r.name.endsWith(".flatblox.json"))return null;let n=gu(this.directory,r.name);try{let i=cn(await fm(n,"utf8")),s=await fu(n),o=s.birthtimeMs>0?s.birthtime:s.mtime;return mu(n,i,o,s.mtime)}catch(i){if(ym(i))throw i;return null}}))).filter((r)=>r!==null).sort((r,n)=>n.createdAt.localeCompare(r.createdAt))}async createArtwork(e){let t=gu(this.directory,`${bm(e.filename)}.flatblox.json`);if(await Bun.file(t).exists())throw Error(`A local artwork named ${e.filename} already exists`);return this.writeArtwork(t,e)}async saveArtwork(e,t){return this.writeArtwork(e.id,t)}async signOut(){}async writeArtwork(e,t){await gm(e,un(t));let r=await fu(e),n=r.birthtimeMs>0?r.birthtime:r.mtime;return mu(e,t,n,r.mtime)}}function pu(e){let t=wt(),r=pr(),[n,i]=Z(0),[s,o]=Z(!1),[a,l]=Z(16),[c,u]=Z(0),[d,A]=Z(null),[m,g]=Z(null),[f,p]=Z(!1),v=e.cloudRepository,[y,S]=Z(v instanceof Promise?null:v??null);if(v instanceof Promise)v.then(S,(V)=>M(V instanceof Error?V.message:String(V)));let[_,b]=Z(!1),[w,C]=Z(!1),[P,M]=Z(""),[B,k]=Z(""),j=null,X=e.localRepository??new Co,K=()=>{l(16),u(0),o(!0)},ee=()=>{o(!1),g(null),A(new Mt(bo(a(),c())))},Ae=(V)=>{u((J)=>wo(J,V))},z=async()=>{if(w())return;let V=new AbortController;j=V,C(!0),M(""),k("");try{let J=await e.onSignIn(V.signal,k);if(!V.signal.aborted)S(J),b(!0)}catch(J){if(!V.signal.aborted)M(J instanceof Error?J.message:String(J))}finally{if(j===V)j=null;C(!1)}},ce=(V)=>{i((J)=>Math.max(0,Math.min(2,J+V)))},Te=()=>{if(y())b(!0);else z()};return br((V)=>{if(V.eventType==="release"||d()||f()||_())return;let J=V.name.toLowerCase();if(w()){if(J==="escape"||J==="q"||V.ctrl&&J==="c")j?.abort();return}if(s()){let pe=yo(V,Wi(r().width));if(pe?.kind==="cancel")o(!1);else if(pe?.kind==="size")l(pe.size);else if(pe?.kind==="palette")Ae(pe.delta);else if(pe?.kind==="create")ee();return}let Be=rr(J);if(V.ctrl&&J==="c")t.destroy();else if(J==="q"||J==="escape")t.destroy();else if(Be?.dy)ce(Be.dy);else if(J==="n")K();else if(J==="l")p(!0);else if(J==="s"||J==="d")Te();else if(tr(V))if(n()===0)K();else if(n()===1)p(!0);else Te()}),Q(Fe,{get when(){return mt(()=>!!_())()?y():null},get fallback(){return Q(Fe,{get when(){return d()},get fallback(){return Q(Fe,{get when(){return f()},get fallback(){return(()=>{var V=I("box"),J=I("box"),Be=I("box"),pe=I("box"),D=I("box"),te=I("text"),ie=I("box"),oe=I("box"),Xe=I("text"),ue=I("box"),Ee=I("box"),ot=I("text"),Ve=I("box"),Qe=I("text");return R(V,J),h(V,"width","100%"),h(V,"height","100%"),h(V,"alignItems","center"),h(V,"justifyContent","center"),R(J,Be),R(J,pe),R(J,ie),R(J,ue),R(J,Ve),R(J,Qe),h(J,"flexDirection","column"),h(J,"alignItems","center"),G(J,Q(kr,{id:"welcome-wordmark",width:32,height:2,get backgroundColor(){return E.background},get foregroundColor(){return E.accent}}),Be),h(Be,"height",3),R(pe,D),h(pe,"id","welcome-new-artwork"),h(pe,"width",36),h(pe,"height",3),h(pe,"border",!0),h(pe,"onMouseDown",()=>{i(0),K()}),R(D,te),h(D,"width","100%"),h(D,"height","100%"),h(D,"alignItems","center"),h(D,"justifyContent","center"),R(te,_e("New artwork")),h(te,"id","welcome-new-artwork-label"),R(ie,oe),h(ie,"id","welcome-load-artwork"),h(ie,"width",36),h(ie,"height",3),h(ie,"border",!0),h(ie,"onMouseDown",()=>{i(1),p(!0)}),R(oe,Xe),h(oe,"width","100%"),h(oe,"height","100%"),h(oe,"alignItems","center"),h(oe,"justifyContent","center"),R(Xe,_e("Load artwork")),h(Xe,"id","welcome-load-artwork-label"),R(ue,Ee),h(ue,"id","welcome-sign-in"),h(ue,"width",36),h(ue,"height",3),h(ue,"border",!0),h(ue,"onMouseDown",()=>{i(2),Te()}),R(Ee,ot),h(Ee,"width","100%"),h(Ee,"height","100%"),h(Ee,"alignItems","center"),h(Ee,"justifyContent","center"),h(ot,"id","welcome-sign-in-label"),G(ot,()=>y()?"Dashboard":"Sign in"),h(Ve,"height",2),G(Qe,(()=>{var re=mt(()=>!!w());return()=>re()?mt(()=>!!B())()?`Open this URL: ${B()} \xB7 Esc cancel`:"Complete sign-in in your browser \xB7 Esc cancel":P()||"\u2191/\u2193 select \xB7 Enter open \xB7 Q quit"})()),G(V,Q(Fe,{get when(){return s()},get children(){return Q(_o,{get width(){return r().width},get height(){return r().height},get selectedPalette(){return c()},get selectedSize(){return a()},maxSize:64,message:"",onSelectPalette:u,onSelectSize:l})}}),null),ge((re)=>{var ht=E.background,x=B()?Math.max(36,r().width-4):36,H=n()===0?E.accent:E.border,fe=n()===0?E.textPink:E.text,qe=n()===1?E.accent:E.border,jt=n()===1?E.textPink:E.text,Pe=n()===2?E.accent:E.border,at=n()===2?E.textPink:E.text,T=P()?E.warning:E.muted;return ht!==re.e&&(re.e=h(V,"backgroundColor",ht,re.e)),x!==re.t&&(re.t=h(J,"width",x,re.t)),H!==re.a&&(re.a=h(pe,"borderColor",H,re.a)),fe!==re.o&&(re.o=h(te,"fg",fe,re.o)),qe!==re.i&&(re.i=h(ie,"borderColor",qe,re.i)),jt!==re.n&&(re.n=h(Xe,"fg",jt,re.n)),Pe!==re.s&&(re.s=h(ue,"borderColor",Pe,re.s)),at!==re.h&&(re.h=h(ot,"fg",at,re.h)),T!==re.r&&(re.r=h(Qe,"fg",T,re.r)),re},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),V})()},get children(){return Q(vo,{repository:X,variant:"local",onBack:()=>p(!1)})}})},children:(V)=>Q(Rr,{get session(){return V()},saveDocument:async(J)=>{let Be=m(),pe=Be?await X.saveArtwork(Be,J):await X.createArtwork(J);return g(pe),"Saved locally"},get promptForFilenameOnSave(){return!m()},onBack:()=>{g(null),A(null)}})})},children:(V)=>Q(vo,{get repository(){return V()}})})}var bu={backgroundColor:E.background,debounceDelay:1,exitOnCtrlC:!1,targetFps:60,useKittyKeyboard:{events:!0,allKeysAsEscapes:!0}};async function _m(e){let t=Xc(),r=Vc(t),n=await zc(r,t.authFile);if(e){if(n)await r.auth.signOut();await Ar(t.authFile),process.stdout.write(`Signed out of Flatblox TUI.
78
78
  `);return}let i,s=async(o)=>{if(!i){let{data:d}=r.auth.onAuthStateChange((A,m)=>{if(m)Ui(t.authFile,m);else Ar(t.authFile)});i=()=>d.subscription.unsubscribe(),r.auth.startAutoRefresh()}let{data:a,error:l}=await r.auth.getUser(o);if(l||!a.user)throw await Ar(t.authFile),Error(l?.message??"Could not verify the Supabase session");let{data:c,error:u}=await r.from("profiles").select("username, tier").eq("id",a.user.id).maybeSingle();if(u)throw await Ar(t.authFile),Error(u.message);return new go(r,a.user.id,c?.username?.trim()||"Flatblox account",ca[c?.tier??"tier0"],()=>Ar(t.authFile))};try{let o=n?s(n.access_token):void 0;await fs(()=>Q(pu,{cloudRepository:o,onSignIn:async(a,l)=>{let c=await qc({dashboardUrl:t.dashboardUrl,announce:l,signal:a}),u=await eu(r,c);return await Ui(t.authFile,u),s(u.access_token)}}),bu)}finally{if(i)i(),await r.auth.stopAutoRefresh()}}async function vm(e){let t=await iu(e);await fs(()=>Q(Rr,{get session(){return t.session},get filePath(){return t.filePath}}),bu)}async function Cm(){try{let e=nu(Bun.argv.slice(2));if(e.help){process.stdout.write(`${fo}
79
79
  `);return}if(e.mode==="cloud")await _m(e.logout);else await vm(e)}catch(e){let t=e instanceof Error?e.message:String(e);process.stderr.write(`flatblox-tui: ${t}
80
80