flatblox-tui 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/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 ru=Object.create;var{getPrototypeOf:nu,defineProperty:Ao,getOwnPropertyNames:su}=Object;var iu=Object.prototype.hasOwnProperty;function ou(e){return this[e]}var au,lu,cu=(e,t,r)=>{var n=e!=null&&typeof e==="object";if(n){var i=t?au??=new WeakMap:lu??=new WeakMap,s=i.get(e);if(s)return s}r=e!=null?ru(nu(e)):{};let o=t||!e||!e.__esModule?Ao(r,"default",{value:e,enumerable:!0}):r;if(e&&typeof e==="object"||typeof e==="function"){for(let a of su(e))if(!iu.call(o,a))Ao(o,a,{get:ou.bind(e,a),enumerable:!0})}if(n)i.set(e,o);return o};var uu=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var vl=uu(function(zy,os){var $a,Za,Xa,Va,za,qa,el,tl,rl,nl,sl,il,ol,ss,Li,al,ll,cl,xr,ul,dl,hl,Al,fl,gl,ml,pl,bl,is,yl,wl,_l;(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 os==="object"&&typeof zy==="object")e(r(t,r(zy)));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]};$a=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)},Za=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},Xa=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},Va=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},za=function(s,o){return function(a,l){o(a,l,s)}},qa=function(s,o,a,l,c,u){function d(m){if(m!==void 0&&typeof m!=="function")throw TypeError("Function expected");return m}var A=l.kind,g=A==="getter"?"get":A==="setter"?"set":"value",f=!o&&s?l.static?s:s.prototype:null,b=o||(f?Object.getOwnPropertyDescriptor(f,l.name):{}),p,C=!1;for(var w=a.length-1;w>=0;w--){var I={};for(var _ in l)I[_]=_==="access"?{}:l[_];for(var _ in l.access)I.access[_]=l.access[_];I.addInitializer=function(m){if(C)throw TypeError("Cannot add initializers after decoration has completed");u.push(d(m||null))};var y=(0,a[w])(A==="accessor"?{get:b.get,set:b.set}:b[g],I);if(A==="accessor"){if(y===void 0)continue;if(y===null||typeof y!=="object")throw TypeError("Object expected");if(p=d(y.get))b.get=p;if(p=d(y.set))b.set=p;if(p=d(y.init))c.unshift(p)}else if(p=d(y))if(A==="field")c.unshift(p);else b[g]=p}if(f)Object.defineProperty(f,l.name,b);C=!0},el=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},tl=function(s){return typeof s==="symbol"?s:"".concat(s)},rl=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})},nl=function(s,o){if(typeof Reflect==="object"&&typeof Reflect.metadata==="function")return Reflect.metadata(s,o)},sl=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(b){try{f(l.next(b))}catch(p){d(p)}}function g(b){try{f(l.throw(b))}catch(p){d(p)}}function f(b){b.done?u(b.value):c(b.value).then(A,g)}f((l=l.apply(s,o||[])).next())})},il=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(f){return function(b){return g([f,b])}}function g(f){if(l)throw TypeError("Generator is already executing.");while(d&&(d=0,f[0]&&(a=0)),a)try{if(l=1,c&&(u=f[0]&2?c.return:f[0]?c.throw||((u=c.return)&&u.call(c),0):c.next)&&!(u=u.call(c,f[1])).done)return u;if(c=0,u)f=[f[0]&2,u.value];switch(f[0]){case 0:case 1:u=f;break;case 4:return a.label++,{value:f[1],done:!1};case 5:a.label++,c=f[1],f=[0];continue;case 7:f=a.ops.pop(),a.trys.pop();continue;default:if((u=a.trys,!(u=u.length>0&&u[u.length-1]))&&(f[0]===6||f[0]===2)){a=0;continue}if(f[0]===3&&(!u||f[1]>u[0]&&f[1]<u[3])){a.label=f[1];break}if(f[0]===6&&a.label<u[1]){a.label=u[1],u=f;break}if(u&&a.label<u[2]){a.label=u[2],a.ops.push(f);break}if(u[2])a.ops.pop();a.trys.pop();continue}f=o.call(s,a)}catch(b){f=[6,b],c=0}finally{l=u=0}if(f[0]&5)throw f[1];return{value:f[0]?f[1]:void 0,done:!0}}},ol=function(s,o){for(var a in s)if(a!=="default"&&!Object.prototype.hasOwnProperty.call(o,a))is(o,s,a)},is=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]},ss=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.")},Li=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},al=function(){for(var s=[],o=0;o<arguments.length;o++)s=s.concat(Li(arguments[o]));return s},ll=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},cl=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))},xr=function(s){return this instanceof xr?(this.v=s,this):new xr(s)},ul=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(w){return function(I){return Promise.resolve(I).then(w,p)}}function A(w,I){if(l[w]){if(c[w]=function(_){return new Promise(function(y,m){u.push([w,_,y,m])>1||g(w,_)})},I)c[w]=I(c[w])}}function g(w,I){try{f(l[w](I))}catch(_){C(u[0][3],_)}}function f(w){w.value instanceof xr?Promise.resolve(w.value.v).then(b,p):C(u[0][2],w)}function b(w){g("next",w)}function p(w){g("throw",w)}function C(w,I){if(w(I),u.shift(),u.length)g(u[0][0],u[0][1])}},dl=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:xr(s[c](d)),done:!1}:u?u(d):d}:u}},hl=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 ss==="function"?ss(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,g){d=s[u](d),c(A,g,d.done,d.value)})}}function c(u,d,A,g){Promise.resolve(g).then(function(f){u({value:f,done:A})},d)}},Al=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)};fl=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")is(o,s,a[l])}return r(o,s),o},gl=function(s){return s&&s.__esModule?s:{default:s}},ml=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)},pl=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},bl=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)},yl=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};wl=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()},_l=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",$a),e("__assign",Za),e("__rest",Xa),e("__decorate",Va),e("__param",za),e("__esDecorate",qa),e("__runInitializers",el),e("__propKey",tl),e("__setFunctionName",rl),e("__metadata",nl),e("__awaiter",sl),e("__generator",il),e("__exportStar",ol),e("__createBinding",is),e("__values",ss),e("__read",Li),e("__spread",al),e("__spreadArrays",ll),e("__spreadArray",cl),e("__await",xr),e("__asyncGenerator",ul),e("__asyncDelegator",dl),e("__asyncValues",hl),e("__makeTemplateObject",Al),e("__importStar",fl),e("__importDefault",gl),e("__classPrivateFieldGet",ml),e("__classPrivateFieldSet",pl),e("__classPrivateFieldIn",bl),e("__addDisposableResource",yl),e("__disposeResources",wl),e("__rewriteRelativeImportExtension",_l)})});import{CliRenderer as Mu,createCliRenderer as Fu,engine as Gu}from"@opentui/core";import{createTestRenderer as em}from"@opentui/core/testing";import{ASCIIFontRenderable as Uu,BoxRenderable as ju,CodeRenderable as Hu,DiffRenderable as Ku,ImageRenderable as Wu,InputRenderable as Yu,LineNumberRenderable as Qu,MarkdownRenderable as Ju,ScrollBoxRenderable as $u,SelectRenderable as Zu,TabSelectRenderable as Xu,TextareaRenderable as Vu,TextAttributes as $s,TextNodeRenderable as zu,TextRenderable as qu}from"@opentui/core";import{engine as nm,Timeline as sm}from"@opentui/core";var Ve={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return fo(this.context.count)},getNextContextId(){return fo(this.context.count++)}};function fo(e){let t=String(e),r=t.length-1;return Ve.context.id+(r?String.fromCharCode(96+r):"")+t}function Gs(e){Ve.context=e}function du(){return{...Ve.context,id:Ve.getNextContextId(),count:0}}var hu=!1,Au=(e,t)=>e===t,Us=Symbol("solid-proxy"),fu=typeof Proxy==="function",gu=Symbol("solid-track"),Pg=Symbol("solid-dev-component"),Gn={equals:Au},go=null,wo=Io,At=1,jr=2,_o={owned:null,cleanups:null,context:null,owner:null};var ce=null,D=null,Kr=null,cr=null,ve=null,Fe=null,tt=null,jn=0;function Ur(e,t){let r=ve,n=ce,i=e.length===0,s=t===void 0?n:t,o=i?_o:{owned:null,cleanups:null,context:s?s.context:null,owner:s},a=i?e:()=>e(()=>ft(()=>Ht(o)));ce=o,ve=null;try{return Nt(a,!0)}finally{ve=r,ce=n}}function X(e,t){t=t?Object.assign({},Gn,t):Gn;let r={value:e,observers:null,observerSlots:null,comparator:t.equals||void 0},n=(i)=>{if(typeof i==="function")if(D&&D.running&&D.sources.has(r))i=i(r.tValue);else i=i(r.value);return So(r,i)};return[Eo.bind(r),n]}function Ct(e,t,r){let n=Ks(e,t,!1,At);if(Kr&&D&&D.running)Fe.push(n);else Qr(n)}function Hn(e,t,r){wo=yu;let n=Ks(e,t,!1,At),i=js&&Yr(js);if(i)n.suspense=i;if(!r||!r.render)n.user=!0;tt?tt.push(n):Qr(n)}function z(e,t,r){r=r?Object.assign({},Gn,r):Gn;let n=Ks(e,t,!0,0);if(n.observers=null,n.observerSlots=null,n.comparator=r.equals||void 0,Kr&&D&&D.running)n.tState=At,Fe.push(n);else Qr(n);return Eo.bind(n)}function ft(e){if(!cr&&ve===null)return e();let t=ve;ve=null;try{if(cr)return cr.untrack(e);return e()}finally{ve=t}}function Wr(e){Hn(()=>ft(e))}function bt(e){if(ce===null);else if(ce.cleanups===null)ce.cleanups=[e];else ce.cleanups.push(e);return e}function mu(e){if(D&&D.running)return e(),D.done;let t=ve,r=ce;return Promise.resolve().then(()=>{ve=t,ce=r;let n;if(Kr||js)n=D||(D={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),ve=ce=null,n?n.done:void 0})}var[Dg,mo]=X(!1);function vo(e,t){let r=Symbol("context");return{id:r,Provider:_u(r),defaultValue:e}}function Yr(e){let t;return ce&&ce.context&&(t=ce.context[e.id])!==void 0?t:e.defaultValue}function Co(e){let t=z(e),r=z(()=>Hs(t()));return r.toArray=()=>{let n=r();return Array.isArray(n)?n:n!=null?[n]:[]},r}var js;function Eo(){let e=D&&D.running;if(this.sources&&(e?this.tState:this.state))if((e?this.tState:this.state)===At)Qr(this);else{let t=Fe;Fe=null,Nt(()=>Un(this),!1),Fe=t}if(ve){let t=this.observers?this.observers.length:0;if(!ve.sources)ve.sources=[this],ve.sourceSlots=[t];else ve.sources.push(this),ve.sourceSlots.push(t);if(!this.observers)this.observers=[ve],this.observerSlots=[ve.sources.length-1];else this.observers.push(ve),this.observerSlots.push(ve.sources.length-1)}if(e&&D.sources.has(this))return this.tValue;return this.value}function So(e,t,r){let n=D&&D.running&&D.sources.has(e)?e.tValue:e.value;if(!e.comparator||!e.comparator(n,t)){if(D){let i=D.running;if(i||!r&&D.sources.has(e))D.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=D&&D.running;if(o&&D.disposed.has(s))continue;if(o?!s.tState:!s.state){if(s.pure)Fe.push(s);else tt.push(s);if(s.observers)xo(s)}if(!o)s.state=At;else s.tState=At}if(Fe.length>1e6)throw Fe=[],Error()},!1)}return t}function Qr(e){if(!e.fn)return;Ht(e);let t=jn;if(po(e,D&&D.running&&D.sources.has(e)?e.tValue:e.value,t),D&&!D.running&&D.sources.has(e))queueMicrotask(()=>{Nt(()=>{D&&(D.running=!0),ve=ce=e,po(e,e.tValue,t),ve=ce=null},!1)})}function po(e,t,r){let n,i=ce,s=ve;ve=ce=e;try{n=e.fn(t)}catch(o){if(e.pure)if(D&&D.running)e.tState=At,e.tOwned&&e.tOwned.forEach(Ht),e.tOwned=void 0;else e.state=At,e.owned&&e.owned.forEach(Ht),e.owned=null;return e.updatedAt=r+1,Ws(o)}finally{ve=s,ce=i}if(!e.updatedAt||e.updatedAt<=r){if(e.updatedAt!=null&&"observers"in e)So(e,n,!0);else if(D&&D.running&&e.pure){if(!D.sources.has(e))e.value=n;D.sources.add(e),e.tValue=n}else e.value=n;e.updatedAt=r}}function Ks(e,t,r,n=At,i){let s={fn:e,state:n,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:ce,context:ce?ce.context:null,pure:r};if(D&&D.running)s.state=0,s.tState=n;if(ce===null);else if(ce!==_o)if(D&&D.running&&ce.pure)if(!ce.tOwned)ce.tOwned=[s];else ce.tOwned.push(s);else if(!ce.owned)ce.owned=[s];else ce.owned.push(s);if(cr&&s.fn){let o=s.fn,[a,l]=X(void 0,{equals:!1}),c=cr.factory(o,l);bt(()=>c.dispose());let u,d=()=>mu(l).then(()=>{if(u)u.dispose(),u=void 0});s.fn=(A)=>{if(a(),D&&D.running){if(!u)u=cr.factory(o,d);return u.track(A)}return c.track(A)}}return s}function Hr(e){let t=D&&D.running;if((t?e.tState:e.state)===0)return;if((t?e.tState:e.state)===jr)return Un(e);if(e.suspense&&ft(e.suspense.inFallback))return e.suspense.effects.push(e);let r=[e];while((e=e.owner)&&(!e.updatedAt||e.updatedAt<jn)){if(t&&D.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(D.disposed.has(i))return}if((t?e.tState:e.state)===At)Qr(e);else if((t?e.tState:e.state)===jr){let i=Fe;Fe=null,Nt(()=>Un(e,r[0]),!1),Fe=i}}}function Nt(e,t){if(Fe)return e();let r=!1;if(!t)Fe=[];if(tt)r=!0;else tt=[];jn++;try{let n=e();return pu(r),n}catch(n){if(!r)tt=null;Fe=null,Ws(n)}}function pu(e){if(Fe){if(Kr&&D&&D.running)bu(Fe);else Io(Fe);Fe=null}if(e)return;let t;if(D){if(!D.promises.size&&!D.queue.size){let{sources:n,disposed:i}=D;tt.push.apply(tt,D.effects),t=D.resolve;for(let s of tt)"tState"in s&&(s.state=s.tState),delete s.tState;D=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}mo(!1)},!1)}else if(D.running){D.running=!1,D.effects.push.apply(D.effects,tt),tt=null,mo(!0);return}}let r=tt;if(tt=null,r.length)Nt(()=>wo(r),!1);if(t)t()}function Io(e){for(let t=0;t<e.length;t++)Hr(e[t])}function bu(e){for(let t=0;t<e.length;t++){let r=e[t],n=D.queue;if(!n.has(r))n.add(r),Kr(()=>{n.delete(r),Nt(()=>{D.running=!0,Hr(r)},!1),D&&(D.running=!1)})}}function yu(e){let t,r=0;for(t=0;t<e.length;t++){let n=e[t];if(!n.user)Hr(n);else e[r++]=n}if(Ve.context){if(Ve.count){Ve.effects||(Ve.effects=[]),Ve.effects.push(...e.slice(0,r));return}Gs()}if(Ve.effects&&(Ve.done||!Ve.count))e=[...Ve.effects,...e],r+=Ve.effects.length,delete Ve.effects;for(t=0;t<r;t++)Hr(e[t])}function Un(e,t){let r=D&&D.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===At){if(i!==t&&(!i.updatedAt||i.updatedAt<jn))Hr(i)}else if(s===jr)Un(i,t)}}}function xo(e){let t=D&&D.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=jr;else n.state=jr;if(n.pure)Fe.push(n);else tt.push(n);n.observers&&xo(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(D&&D.running&&e.pure)ko(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(D&&D.running)e.tState=0;else e.state=0}function ko(e,t){if(!t)e.tState=0,D.disposed.add(e);if(e.owned)for(let r=0;r<e.owned.length;r++)ko(e.owned[r])}function wu(e){if(e instanceof Error)return e;return Error(typeof e==="string"?e:"Unknown error",{cause:e})}function bo(e,t,r){try{for(let n of t)n(e)}catch(n){Ws(n,r&&r.owner||null)}}function Ws(e,t=ce){let r=go&&t&&t.context&&t.context[go],n=wu(e);if(!r)throw n;if(tt)tt.push({fn(){bo(n,r,t)},state:At});else bo(n,r,t)}function Hs(e){if(typeof e==="function"&&!e.length)return Hs(e());if(Array.isArray(e)){let t=[];for(let r=0;r<e.length;r++){let n=Hs(e[r]);Array.isArray(n)?t.push.apply(t,n):t.push(n)}return t}return e}function _u(e,t){return function(n){let i;return Ct(()=>i=ft(()=>(ce.context={...ce.context,[e]:n.value},Co(()=>n.children))),void 0),i}}var vu=Symbol("fallback");function yo(e){for(let t=0;t<e.length;t++)e[t]()}function Cu(e,t,r={}){let n=[],i=[],s=[],o=0,a=t.length>1?[]:null;return bt(()=>yo(s)),()=>{let l=e()||[],c=l.length,u,d;return l[gu],ft(()=>{let g,f,b,p,C,w,I,_,y;if(c===0){if(o!==0)yo(s),s=[],n=[],i=[],o=0,a&&(a=[]);if(r.fallback)n=[vu],i[0]=Ur((m)=>(s[0]=m,r.fallback())),o=1}else if(o===0){i=Array(c);for(d=0;d<c;d++)n[d]=l[d],i[d]=Ur(A);o=c}else{b=Array(c),p=Array(c),a&&(C=Array(c));for(w=0,I=Math.min(o,c);w<I&&n[w]===l[w];w++);for(I=o-1,_=c-1;I>=w&&_>=w&&n[I]===l[_];I--,_--)b[_]=i[I],p[_]=s[I],a&&(C[_]=a[I]);g=new Map,f=Array(_+1);for(d=_;d>=w;d--)y=l[d],u=g.get(y),f[d]=u===void 0?-1:u,g.set(y,d);for(u=w;u<=I;u++)if(y=n[u],d=g.get(y),d!==void 0&&d!==-1)b[d]=i[u],p[d]=s[u],a&&(C[d]=a[u]),d=f[d],g.set(y,d);else s[u]();for(d=w;d<c;d++)if(d in b){if(i[d]=b[d],s[d]=p[d],a)a[d]=C[d],a[d](d)}else i[d]=Ur(A);i=i.slice(0,o=c),n=l.slice(0)}return i});function A(g){if(s[d]=g,a){let[f,b]=X(d);return a[d]=b,t(l[d],f)}return t(l[d])}}}var Eu=!1;function Ro(e,t){if(Eu){if(Ve.context){let r=Ve.context;Gs(du());let n=ft(()=>e(t||{}));return Gs(r),n}}return ft(()=>e(t||{}))}function Fn(){return!0}var Su={get(e,t,r){if(t===Us)return r;return e.get(t)},has(e,t){if(t===Us)return!0;return e.has(t)},set:Fn,deleteProperty:Fn,getOwnPropertyDescriptor(e,t){return{configurable:!0,enumerable:!0,get(){return e.get(t)},set:Fn,deleteProperty:Fn}},ownKeys(e){return e.keys()}};function Fs(e){return!(e=typeof e==="function"?e():e)?{}:e}function Iu(){for(let e=0,t=this.length;e<t;++e){let r=this[e]();if(r!==void 0)return r}}function Kn(...e){let t=!1;for(let o=0;o<e.length;o++){let a=e[o];t=t||!!a&&Us in a,e[o]=typeof a==="function"?(t=!0,z(a)):a}if(fu&&t)return new Proxy({get(o){for(let a=e.length-1;a>=0;a--){let l=Fs(e[a])[o];if(l!==void 0)return l}},has(o){for(let a=e.length-1;a>=0;a--)if(o in Fs(e[a]))return!0;return!1},keys(){let o=[];for(let a=0;a<e.length;a++)o.push(...Object.keys(Fs(e[a])));return[...new Set(o)]}},Su);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:Iu.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 xu=(e)=>`Stale read from <${e}>.`;function Et(e){let t="fallback"in e&&{fallback:()=>e.fallback};return z(Cu(()=>e.each,e.children,t||void 0))}function gt(e){let t=e.keyed,r=z(()=>e.when,void 0,void 0),n=t?r:z(r,void 0,{equals:(i,s)=>!i===!s});return z(()=>{let i=n();if(i){let s=e.children;return typeof s==="function"&&s.length>0?ft(()=>s(t?i:()=>{if(!ft(n))throw xu("Show");return r()})):s}return e.fallback},void 0,void 0)}import{BaseRenderable as Zo,createTextAttributes as nd,ImageRenderable as Fo,InputRenderable as Zs,InputRenderableEvents as $r,isTextNodeRenderable as ei,isEditBufferRenderable as sd,parseColor as Go,Renderable as id,RootTextNodeRenderable as od,ScrollBoxRenderable as ad,SelectRenderable as Uo,SelectRenderableEvents as Xs,TabSelectRenderable as jo,TabSelectRenderableEvents as Vs,TextNodeRenderable as ld,TextRenderable as Xo}from"@opentui/core";var Ys,ku=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]]),To=(Ys=String.fromCodePoint)!==null&&Ys!==void 0?Ys:(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 Bo(e){var t;if(e>=55296&&e<=57343||e>1114111)return 65533;return(t=ku.get(e))!==null&&t!==void 0?t:e}function Oo(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 No=Oo("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 rt;(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"})(rt||(rt={}));var Se;(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"})(Se||(Se={}));var Po=32;function Qs(e){return e>=Se.ZERO&&e<=Se.NINE}function Ru(e){return e>=Se.UPPER_A&&e<=Se.UPPER_F||e>=Se.LOWER_A&&e<=Se.LOWER_F}function Tu(e){return e>=Se.UPPER_A&&e<=Se.UPPER_Z||e>=Se.LOWER_A&&e<=Se.LOWER_Z||Qs(e)}function Bu(e){return e===Se.EQUALS||Tu(e)}var Ke;(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"})(Ke||(Ke={}));var Pt;(function(e){e[e.Legacy=0]="Legacy",e[e.Strict=1]="Strict",e[e.Attribute=2]="Attribute"})(Pt||(Pt={}));class Js{constructor(e,t,r){this.decodeTree=e,this.emitCodePoint=t,this.errors=r,this.state=Ke.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=Pt.Strict,this.runConsumed=0}startEntity(e){this.decodeMode=e,this.state=Ke.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(e,t){switch(this.state){case Ke.EntityStart:{if(e.charCodeAt(t)===Se.NUM)return this.state=Ke.NumericStart,this.consumed+=1,this.stateNumericStart(e,t+1);return this.state=Ke.NamedEntity,this.stateNamedEntity(e,t)}case Ke.NumericStart:return this.stateNumericStart(e,t);case Ke.NumericDecimal:return this.stateNumericDecimal(e,t);case Ke.NumericHex:return this.stateNumericHex(e,t);case Ke.NamedEntity:return this.stateNamedEntity(e,t)}}stateNumericStart(e,t){if(t>=e.length)return-1;if((e.charCodeAt(t)|Po)===Se.LOWER_X)return this.state=Ke.NumericHex,this.consumed+=1,this.stateNumericHex(e,t+1);return this.state=Ke.NumericDecimal,this.stateNumericDecimal(e,t)}stateNumericHex(e,t){while(t<e.length){let r=e.charCodeAt(t);if(Qs(r)||Ru(r)){let n=r<=Se.NINE?r-Se.ZERO:(r|Po)-Se.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(Qs(r))this.result=this.result*10+(r-Se.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===Se.SEMI)this.consumed+=1;else if(this.decodeMode===Pt.Strict)return 0;if(this.emitCodePoint(Bo(this.result),this.consumed),this.errors){if(e!==Se.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&rt.VALUE_LENGTH)>>14;while(t<e.length){if(i===0&&(n&rt.FLAG13)!==0){let o=(n&rt.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let a=n&rt.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&rt.VALUE_LENGTH)>>14}if(t>=e.length)break;let s=e.charCodeAt(t);if(s===Se.SEMI&&i!==0&&(n&rt.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);if(this.treeIndex=Nu(r,n,this.treeIndex+Math.max(1,i),s),this.treeIndex<0)return this.result===0||this.decodeMode===Pt.Attribute&&(i===0||Bu(s))?0:this.emitNotTerminatedNamedEntity();if(n=r[this.treeIndex],i=(n&rt.VALUE_LENGTH)>>14,i!==0){if(s===Se.SEMI)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);if(this.decodeMode!==Pt.Strict&&(n&rt.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]&rt.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]&~(rt.VALUE_LENGTH|rt.FLAG13):n[e+1],r),t===3)this.emitCodePoint(n[e+2],r);return r}end(){var e;switch(this.state){case Ke.NamedEntity:return this.result!==0&&(this.decodeMode!==Pt.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case Ke.NumericDecimal:return this.emitNumericEntity(0,2);case Ke.NumericHex:return this.emitNumericEntity(0,3);case Ke.NumericStart:return(e=this.errors)===null||e===void 0||e.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case Ke.EntityStart:return 0}}}function Ou(e){let t="",r=new Js(e,(n)=>t+=To(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 Nu(e,t,r,n){let i=(t&rt.BRANCH_LENGTH)>>7,s=t&rt.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 Pu=Ou(No);function Jr(e){return Pu(e,Pt.Strict)}var Do;(function(e){e[e.XML=0]="XML",e[e.HTML=1]="HTML"})(Do||(Do={}));var Lo;(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"})(Lo||(Lo={}));import{BaseRenderable as md,isTextNodeRenderable as pd,TextNodeRenderable as bd,TextRenderable as yd,Yoga as Vo}from"@opentui/core";import{BoxRenderable as pm,RootRenderable as bm}from"@opentui/core";import{TimeToFirstDrawRenderable as _d}from"@opentui/core";import{createSlotRegistry as vm}from"@opentui/core";class Zr extends zu{_ctx;constructor(e,t){super(t);this._ctx=e}}class Yn extends Zr{constructor(e,t){super(null,e);if(t==="b"||t==="strong")this.attributes=(this.attributes||0)|$s.BOLD;else if(t==="i"||t==="em")this.attributes=(this.attributes||0)|$s.ITALIC;else if(t==="u")this.attributes=(this.attributes||0)|$s.UNDERLINE}}class zs extends Yn{constructor(e){super(e,"b")}}class qs extends Yn{constructor(e){super(e,"i")}}class Yo extends Yn{constructor(e){super(e,"u")}}class Qo extends Zr{constructor(e,t){super(null,t);this.add()}add(){return super.add(`
7
- `)}}class Jo extends Zr{constructor(e,t){let r={...t,link:{url:t.href}};super(null,r)}}var ed={box:ju,text:qu,input:Yu,select:Zu,textarea:Vu,ascii_font:Uu,tab_select:Xu,scrollbox:$u,code:Hu,diff:Ku,line_number:Qu,markdown:Ju,image:Wu,span:Zr,strong:zs,b:zs,em:qs,i:qs,u:Yo,br:Qo,a:Jo},$o={...ed};function Xr(e){Object.assign($o,e)}function td(){return $o}var si=vo(),Dt=()=>{let e=Yr(si);if(!e)throw Error("No renderer found");return e},rd=(e)=>{let t=Dt();Wr(()=>{t.on("resize",e)}),bt(()=>{t.off("resize",e)})},hr=()=>{let e=Dt(),[t,r]=X({width:e.width,height:e.height});return rd((i,s)=>{r({width:i,height:s})}),t},Ar=(e,t)=>{let n=Dt().keyInput;Wr(()=>{if(n.on("keypress",e),t?.release)n.on("keyrelease",e)}),bt(()=>{if(n.off("keypress",e),t?.release)n.off("keyrelease",e)})};var cd=(e)=>z(()=>e());function ud({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(_,y,m,O){if(m!==void 0&&!O)O=[];if(typeof y!=="function")return g(_,y,O,m);Ct((B)=>g(_,y(),B,m),O)}function g(_,y,m,O,B){while(typeof m==="function")m=m();if(y===m)return m;let U=typeof y,R=O!==void 0;if(U==="string"||U==="number"){if(U==="number")y=y.toString();if(R){let T=m[0];if(T&&i(T))s(T,y);else T=r(y);m=p(_,m,O,T)}else if(m!==""&&typeof m==="string")s(u(_),m=y);else p(_,m,O,r(y)),m=y}else if(y==null||U==="boolean")m=p(_,m,O);else if(U==="function")return Ct(()=>{let T=y();while(typeof T==="function")T=T();m=g(_,T,m,O)}),()=>m;else if(Array.isArray(y)){let T=[];if(f(T,y,B))return Ct(()=>m=g(_,T,m,O,!0)),()=>m;if(T.length===0){let q=p(_,m,O);if(R)return m=q}else if(Array.isArray(m))if(m.length===0)C(_,T,O);else b(_,m,T);else if(m==null||m==="")C(_,T);else b(_,R&&m||[u(_)],T);m=T}else{if(Array.isArray(m)){if(R)return m=p(_,m,O,y);p(_,m,null,y)}else if(m==null||m===""||!u(_))o(_,y);else w(_,y,u(_));m=y}return m}function f(_,y,m){let O=!1;for(let B=0,U=y.length;B<U;B++){let R=y[B],T;if(R==null||R===!0||R===!1);else if(Array.isArray(R))O=f(_,R)||O;else if((T=typeof R)==="string"||T==="number")_.push(r(R));else if(T==="function")if(m){while(typeof R==="function")R=R();O=f(_,Array.isArray(R)?R:[R])||O}else _.push(R),O=!0;else _.push(R)}return O}function b(_,y,m){let O=m.length,B=y.length,U=O,R=0,T=0,q=d(y[B-1]),ee=null;while(R<B||T<U){if(y[R]===m[T]){R++,T++;continue}while(y[B-1]===m[U-1])B--,U--;if(B===R){let V=U<O?T?d(m[T-1]):m[U-T]:q;while(T<U)o(_,m[T++],V)}else if(U===T)while(R<B){if(!ee||!ee.has(y[R]))a(_,y[R]);R++}else if(y[R]===m[U-1]&&m[T]===y[B-1]){let V=d(y[--B]);o(_,m[T++],d(y[R++])),o(_,m[--U],V),y[B]=m[U]}else{if(!ee){ee=new Map;let ae=T;while(ae<U)ee.set(m[ae],ae++)}let V=ee.get(y[R]);if(V!=null)if(T<V&&V<U){let ae=R,re=1,se;while(++ae<B&&ae<U){if((se=ee.get(y[ae]))==null||se!==V+re)break;re++}if(re>V-T){let je=y[R];while(T<V)o(_,m[T++],je)}else w(_,m[T++],y[R++])}else R++;else a(_,y[R++])}}}function p(_,y,m,O){if(m===void 0){let U;while(U=u(_))a(_,U);return O&&o(_,O),O??""}let B=O||n();if(y.length){let U=!1;for(let R=y.length-1;R>=0;R--){let T=y[R];if(B!==T){let q=c(T)===_;if(!U&&!R)q?w(_,B,T):o(_,B,m);else q&&a(_,T)}else U=!0}}else o(_,B,m);return[B]}function C(_,y,m){for(let O=0,B=y.length;O<B;O++)o(_,y[O],m)}function w(_,y,m){o(_,y,m),a(_,m)}function I(_,y,m={},O){if(y||(y={}),!O)Ct(()=>m.children=g(_,y.children,m.children));return Ct(()=>y.ref&&y.ref(_)),Ct(()=>{for(let B in y){if(B==="children"||B==="ref")continue;let U=y[B];if(U===m[B])continue;l(_,B,U,m[B]),m[B]=U}}),m}return{render(_,y){let m;return Ur((O)=>{m=O,A(y,_())}),m},insert:A,spread(_,y,m){if(typeof y==="function")Ct((O)=>I(_,y(),O,m));else I(_,y,void 0,m)},createElement:e,createTextNode:t,insertNode:o,setProp(_,y,m,O){return l(_,y,m,O),m},mergeProps:Kn,effect:Ct,memo:cd,createComponent:Ro,use(_,y,m){return ft(()=>_(y,m))}}}function dd(e){let t=ud(e);return t.mergeProps=Kn,t}var Wn=new Map;function ii(e){if(!Wn.has(e))Wn.set(e,0);let t=Wn.get(e)+1;return Wn.set(e,t),`${e}-${t}`}var We=(...e)=>{if(process.env.DEBUG)console.log("[Reconciler]",...e)};class ur extends ld{static fromString(e,t={}){let r=new ur(t);return r.add(e),r}}var Ge=(e)=>{if(!e)return;return e.id},ti=(e)=>{let t;if(e instanceof Xo)t=e.getTextChildren();else t=e.getChildren();return t};function hd(e,t,r){if(We("Inserting node:",Ge(t),"into parent:",Ge(e),"with anchor:",Ge(r),t instanceof ur),t instanceof dr)t.parent=e,t=t.getSlotChild(e);if(r&&r instanceof dr)r=r.getSlotChild(e);if(ei(t)){if(!(e instanceof Xo)&&!ei(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 Zo))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=ti(e),i=n.indexOf(r);if(i===-1)We("[INSERT]","Could not find anchor",Ge(e),Ge(r),"[children]",...n.map((s)=>s.id));e.add(t,i)}function Ad(e,t){We("Removing node:",Ge(t),"from parent:",Ge(e));let r;if(t instanceof dr){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 Zo&&!t.parent){t.destroyRecursively();return}})}function Ho(e,t){We("Creating text node:",e);let r=ii("text-node");if(typeof e==="number")e=e.toString();return ur.fromString(t?Jr(e):e,{id:r})}function fd(){let e=ii("slot-node");return We("Creating slot node",e),new dr(e)}function Ko(e){We("Getting parent of node:",Ge(e));let t=e.parent??void 0;if(t instanceof od)t=t.textParent??void 0;let r=t?.parent?.parent?.parent;if(r instanceof ad&&r.content===t)t=r;return t}var{render:gd,effect:Pe,memo:Jt,createComponent:ne,createElement:x,createTextNode:be,insertNode:S,insert:Y,spread:hm,setProp:h,mergeProps:Am,use:fm}=dd({createElement(e){We("Creating element:",e);let t=ii(e),r=Yr(si);if(!r)throw Error("No renderer found");let n=td();if(!n[e])throw Error(`[Reconciler] Unknown component type: ${e}`);let i=new n[e](r,{id:t});if(i instanceof Fo)bt(()=>{i.source=void 0});return We("Element created with id:",t),i},createTextNode:(e)=>Ho(e,!0),createDynamicTextNode:(e)=>Ho(e,!1),createSlotNode:fd,replaceText(e,t){if(We("Replacing text:",t,"in node:",Ge(e)),!(e instanceof ur))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(ei(e)){if(t==="href"){e.link={url:r};return}if(t==="style"){e.attributes|=nd(r),e.fg=r.fg?Go(r.fg):e.fg,e.bg=r.bg?Go(r.bg):e.bg;return}return}switch(t){case"id":We("Id mapped",e.id,"=",r),e[t]=r;break;case"focused":if(!(e instanceof id))return;if(r)e.focus();else e.blur();break;case"onChange":let i=void 0;if(e instanceof Uo)i=Xs.SELECTION_CHANGED;else if(e instanceof jo)i=Vs.SELECTION_CHANGED;else if(e instanceof Zs)i=$r.CHANGE;if(!i)break;if(r)e.on(i,r);if(n)e.off(i,n);break;case"onInput":if(e instanceof Zs){if(r)e.on($r.INPUT,r);if(n)e.off($r.INPUT,n)}break;case"onSubmit":if(e instanceof Zs){if(r)e.on($r.ENTER,r);if(n)e.off($r.ENTER,n)}else e[t]=r;break;case"onSelect":if(e instanceof Uo){if(r)e.on(Xs.ITEM_SELECTED,r);if(n)e.off(Xs.ITEM_SELECTED,n)}else if(e instanceof jo){if(r)e.on(Vs.ITEM_SELECTED,r);if(n)e.off(Vs.ITEM_SELECTED,n)}break;case"style":let s=r??{},o=n??{};if(sd(e)&&o.selectionOccupancy&&!s.selectionOccupancy)e.selectionOccupancy=void 0;if(e instanceof Fo)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 ur},insertNode:hd,removeNode:Ad,getParentNode:Ko,getFirstChild(e){We("Getting first child of node:",Ge(e));let t=ti(e)[0];if(!t){We("No first child found for node:",Ge(e));return}return We("First child found:",Ge(t),"for node:",Ge(e)),t},getNextSibling(e){We("Getting next sibling of node:",Ge(e));let t=Ko(e);if(!t){We("No parent found for node:",Ge(e));return}if(e instanceof dr){let s=e.getSlotChildForRemoval(t);if(s)e=s}let r=ti(t),n=r.indexOf(e);if(n===-1||n===r.length-1){We("No next sibling found for node:",Ge(e));return}let i=r[n+1];if(!i){We("Next sibling is null for node:",Ge(e));return}return We("Next sibling found:",Ge(i),"for node:",Ge(e)),i}});function Wo(e){return e?.getLayoutNode?.()?.constructor}function wd(e){return e?.create?.()??Vo.default.Node.create()}class oi extends md{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 ri extends bd{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 ni extends oi{yogaNode;slotParent;destroyed=!1;yogaNodeConstructor;yogaNodeFreed=!1;constructor(e,t,r){super(e);this._visible=!1,this.slotParent=t,this.yogaNodeConstructor=Wo(r),this.yogaNode=wd(this.yogaNodeConstructor),this.yogaNode.setDisplay(Vo.Display.None)}getLayoutNode(){return this.yogaNode}updateFromLayout(){}updateLayout(){}onRemove(){}isCompatibleWith(e){return this.yogaNodeConstructor===Wo(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 dr extends oi{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 pd(e)||e instanceof yd}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 ri(`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 ni(`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 ri&&this.getTextNodeForParent(e)===t)this.textNodesByParent.delete(e),t.disposeWithoutSlotCascade();if(r&&t instanceof ni&&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()}}Xr({time_to_first_draw:_d});var vd=(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=gd(()=>ne(si.Provider,{get value(){return e},get children(){return ne(t,{})}}),e.root)}finally{s=!1,e.destroy=a}if(n)l();if(o)a()},ai=async(e,t={})=>{let r=t instanceof Mu?t:await Fu({...t,onDestroy:()=>{t.onDestroy?.()}});Gu.attach(r),vd(r,e)};var zo={tier0:32,tier1:64,tier2:64};var fr=1;function ut(e){if(typeof e!=="number"||!Number.isFinite(e))return 1;return Math.max(1,Math.min(8,Math.round(e)))}function li(e,t){let r=ut(e);return{primary:r,mirrored:t?r-1:0}}var ci=64;var km=ci*ci;var Tm=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 ui={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 Sd=["positionX","positionY","positionZ","rotationX","rotationY","rotationZ","scaleX","scaleY","scaleZ"];var Id=new Set(Sd);function gr(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function qo(e,t){if(!gr(e))return[`${t} must be an object`];let r=[];for(let[n,i]of Object.entries(e)){if(!Id.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 ta(e){if(!gr(e))return["Animation catalog must be an object"];let t=[];if(e.version!==1)t.push("Animation catalog version must be 1");if(!gr(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(!gr(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(!gr(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(...qo(n.model,`${i}.model`));if(n.roles!==void 0)if(!gr(n.roles))t.push(`${i}.roles must be an object`);else for(let[s,o]of Object.entries(n.roles))t.push(...qo(o,`${i}.roles.${s}`))}return t}var ea=ta(ui);if(ea.length>0)throw Error(`Invalid character animation catalog:
8
- ${ea.join(`
9
- `)}`);var xd=ui,kd=["jump","frontFlip","horseWalk","swim"],Rd=Object.keys(xd.clips).filter((e)=>!kd.includes(e));var na=["top","side","bottom"],sa=["left","right","bottom","top","back","front"],ia=["humanoid","female","pig","robot","dog","cat","horse","bird","octopus"],Qn=["leftLeg","rightLeg","leftArm","rightArm","leftLegFoot","rightLegFoot","leftArmFoot","rightArmFoot","leftSleeve","rightSleeve"],oa=["leftWing","rightWing","carried","muzzle"];var Hm=new Set(ia),Km=new Set([...Qn,...oa]),Wm=new Set(na),Ym=new Set(sa),Qm=["cree","per"].join(""),Vr=["H","oof"].join(""),Jm=new Map([[`leftLeg${Vr}`,"leftLegFoot"],[`rightLeg${Vr}`,"rightLegFoot"],[`leftArm${Vr}`,"leftArmFoot"],[`rightArm${Vr}`,"rightArmFoot"]]),$m=["horse",Vr].join("");var Od=Math.PI*2;var zm=new Set(Qn);var aa={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 la(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 di(e,t){let r=la(t);return e.filter((n)=>r.has(n))}var Pd=/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,Dd=/^([+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?)(deg|grad|rad|turn)?$/i,$n=(e,t,r)=>Math.max(t,Math.min(r,e));function Zn(e){let t=e.trim(),r=t.endsWith("%"),n=r?t.slice(0,-1):t;if(!Pd.test(n))return null;let i=Number(n);return Number.isFinite(i)?{value:i,percentage:r}:null}function ua(e){if(e===null)return 1;let t=Zn(e);if(!t)return null;return $n(t.percentage?t.value/100:t.value,0,1)}function da(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 Ld(e){let t=Dd.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=da(e,["hsl","hsla"]);if(!t)return null;let r=Ld(t.channels[0]),n=Zn(t.channels[1]),i=Zn(t.channels[2]),s=ua(t.alpha);if(r===null||!n||!i||s===null)return null;return[r,$n(n.value,0,100),$n(i.value,0,100),s]}function ha(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 Aa({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 $t({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 ca=(e,t)=>{let r=Math.max(-100,Math.min(100,t))/100;return r>=0?e+(100-e)*r:e*(1+r)};var Jn=(e)=>{let t=Math.round(e*1000)/1000;return String(Object.is(t,-0)?0:t)};function hi(e,t,r){if(t===0&&r===0)return e;let n=zr(e),i=n?null:Lt(e);if(!n&&!i)return e;let s=n?{h:n[0],s:n[1],l:n[2]}:Aa(i),o=s.s===0?0:ca(s.s,t),a=ca(s.l,r),l=n?.[3]??i?.a??1;return`hsla(${Jn(s.h)}, ${Jn(o)}%, ${Jn(a)}%, ${Jn(l)})`}function ot(e){return typeof e==="number"&&Number.isInteger(e)&&e>=-100&&e<=100?e:0}function qr(e,t,r){let n=ot(t),i=ot(r);if(n===0&&i===0)return e;return e.map((s)=>hi(s,n,i))}function Zt(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=hi(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 Md(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 Fd(e){let t=da(e,["rgb","rgba"]);if(!t)return null;let r=t.channels.map(Zn),n=ua(t.alpha);if(r.some((l)=>l===null)||n===null)return null;let[i,s,o]=r,a=(l)=>$n(l.percentage?l.value/100*255:l.value,0,255);return{r:a(i),g:a(s),b:a(o),a:n}}function Lt(e){let t=e.trim(),r=Md(t);if(r)return r;let n=zr(t);if(n)return{...ha(n[0],n[1],n[2]),a:n[3]};let i=Fd(t);if(i)return i;let s=aa[t.toLowerCase()];if(!s)return null;return{r:s[0],g:s[1],b:s[2],a:s[3]??1}}function en(e){let t=Lt(e);return t?{r:t.r,g:t.g,b:t.b}:null}var Xn=1;var Ai=30;function tn(e){return e.trim().slice(0,30)}var Vn=0.16,fi=0.1;var rn=0.15,gi=0.12;var nn=0.25;function mr(...e){let t=Math.max(0,Math.min(...e));return Math.max(0.22,t*0.5)}var Ye=64,mi=Ye*Ye;var pi=64,ga=512,Ep=ga*ga,Kd=128,ba=65535,Wd=20,Yd=/^#(?:[\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/i,Qd=/^[a-z]+$/i,Jd=/^(?:rgb|rgba|hsl|hsla)\([\d\s.,%+\-/e]*(?:(?:deg|grad|rad|turn)[\d\s.,%+\-/e]*)?\)$/i;function ya(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function pr(e,t,r){return Number.isInteger(e)&&Number(e)>=t&&Number(e)<=r}function mt(e){if(typeof e!=="string"||e.length===0||e.length>Kd)return!1;return Yd.test(e)||Qd.test(e)||Jd.test(e)}function $d(e){return ya(e)&&e.v===2}function ma(e,t){return e===void 0||Array.isArray(e)&&e.length<=t&&e.every((r)=>pr(r,0,t-1))}function pa(e,t,r){return e===void 0||Array.isArray(e)&&e.length===t&&e.every((n)=>pr(n,0,r))}function Zd(e,t,r){let{w:n,h:i,palette:s,cells:o,activeNoColor:a,tiles:l,depths:c,mirrorZ:u}=e;if(!pr(n,0,t)||!pr(i,0,t))return!1;let d=n*i;return d<=r&&Array.isArray(s)&&s.length<=d&&s.every(mt)&&Array.isArray(o)&&o.length===d&&o.every((A)=>pr(A,0,s.length))&&ma(a,d)&&pa(l,d,ba+1)&&pa(c,d,Wd)&&ma(u,d)}function Xd(e){if(!ya(e)||typeof e.active!=="boolean")return!1;if(e.color!==null&&!mt(e.color))return!1;if(e.tileIndex!==void 0&&e.tileIndex!==null&&!pr(e.tileIndex,0,ba))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 Vd(e){if(e.length>Ye)return null;let t=0,r=[];for(let n of e){if(!Array.isArray(n)||n.length>Ye)return null;if(t+=n.length,t>mi||!n.every(Xd))return null;r.push(n.map((i)=>({active:i.active,color:i.color,...i.tileIndex!=null?{tileIndex:i.tileIndex}:{},...ut(i.depth)>fr?{depth:ut(i.depth)}:{},...i.mirrorZ?{mirrorZ:!0}:{}})))}return r}function br(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 g=0;g<r;g++){let f=A?.[g],b=d*r+g;if(!f)continue;if(f.color){let C=i.get(f.color);if(C===void 0)n.push(f.color),C=n.length,i.set(f.color,C);s[b]=C}else if(f.active)o.push(b);if(f.tileIndex!=null)a??=Array(r*t).fill(0),a[b]=f.tileIndex+1;let p=ut(f.depth);if(p>fr)l??=Array(r*t).fill(0),l[b]=p;if(f.mirrorZ)c.push(b)}}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($d(e))return Zd(e,Ye,mi)?zd(e):[];return Array.isArray(e)?Vd(e)??[]:[]}function zd(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 g=0;g<t;g++){let f=d*t+g,b=i[f];if(b>0)A[g]={active:!0,color:n[b-1]??null};else if(l?.has(f))A[g]={active:!0,color:null};else A[g]={active:!1,color:null};let p=o?.[f];if(p)A[g].tileIndex=p-1;let C=ut(a?.[f]);if(C>fr)A[g].depth=C;if(c?.has(f))A[g].mirrorZ=!0}u[d]=A}return u}var qd={top:0,side:1,bottom:2};var eh=/^data:image\/(?:png|gif|webp);base64,[a-z\d+/=]+$/i;var th=/^[\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 bi(e,t){return Number.isInteger(e)&&Number(e)>0&&Number(e)<=t}function rh(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 nh(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 yi(e){if(!e||e.v!==2&&e.v!==3)return!1;if(!rh(e.name)||!bi(e.tileSize,64)||!bi(e.cols,256)||!bi(e.rows,256))return!1;if(e.faceLayout!==void 0&&e.faceLayout!=="top-side-bottom")return!1;if(!nh(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 sh(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"||!th.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 wi(e){if(!yi(e))return null;if(e.v===2)return e.imageDataUrl.length<=16777216&&eh.test(e.imageDataUrl)?e.imageDataUrl:null;if(e.v===3)return sh(e.url,e.path);return null}function on(e,t,r="top"){if(!yi(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?qd[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 _i(e){if(!yi(e))return null;return{width:e.cols*e.tileSize*(e.faceLayout?3:1),height:e.rows*e.tileSize}}function ih(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 Xt={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},yr={corners:[[1,0,1],[1,0,0],[1,1,0],[1,1,1]],shade:0.94},Vt=0.5,oh=0.75,ah="rgba(0, 0, 0, 0.16)",lh=0.92,ch="#92929a";function uh(e){if(!Number.isFinite(e))return Vt;return Math.max(0,Math.min(1,e))}function wa(e,t){if(t<Vt){let n=t/Vt,i=e*oh;return i+(e-i)*n}let r=(t-Vt)/(1-Vt);return e+(1-e)*r}function ue(e){return e.toFixed(2)}function St(e){return e.replaceAll("&","&amp;").replaceAll('"',"&quot;").replaceAll("'","&apos;").replaceAll("<","&lt;").replaceAll(">","&gt;")}function _a(e){return`${ue(e[0])},${ue(e[1])}`}function dh([e,t]){let r=_a(e),n=_a(t);return r<n?`${r} ${n}`:`${n} ${r}`}function va(e,t){return`<polygon points="${e.map(([n,i])=>`${ue(n)},${ue(i)}`).join(" ")}" fill="${St(t)}"/>`}function Ca(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 hh(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=Ca(s,o,t),c=Ca(s,a,t);n+=`${i===0?"M":"L"}${ue(l[0])},${ue(l[1])}`,n+=`Q${ue(s[0])},${ue(s[1])} ${ue(c[0])},${ue(c[1])}`}return`${n}Z`}function Ea(e,t,r,n){return`<path d="${e}" fill="${St(t)}" stroke="${St(r)}" stroke-width="${ue(n)}" stroke-linejoin="round"/>`}function Ah(e,t){if(e.length===0)return"";return`<path d="${e.map(([n,i])=>`M${ue(n[0])},${ue(n[1])}L${ue(i[0])},${ue(i[1])}`).join("")}" fill="none" stroke="${St(t)}" stroke-width="1" stroke-linejoin="round" vector-effect="non-scaling-stroke"/>`}function vi(e){let{grid:t,numCols:r,numRows:n,scale:i=16,showGridLines:s=!1,sideLighting:o=Vt,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,g=s&&d!=="jelly"?ah:void 0,f=uh(o),b=wi(l),p=l&&b?l:null,C=_i(p),w=C?.width??0,I=C?.height??0,_=b&&c&&/^[a-z_][\w:.-]{0,127}$/i.test(c)?c:null,y=b?_??ih(b):"",m=u||!_,O=t.slice(0,Ye),B=Math.min(Number.isInteger(n)&&n>0?n:0,O.length,Ye),U=O.reduce((v,E)=>Math.max(v,Array.isArray(E)?E.length:0),0),R=Math.min(Number.isInteger(r)&&r>0?r:0,U,Ye),T=A,q=A/Math.sqrt(3),ee=A*2/Math.sqrt(3),V=d==="jelly"?T*Vn:0,ae=(v)=>v?.tileIndex!=null?on(p,v.tileIndex):null,re=(v)=>{if(mt(v?.color))return v.color;return ae(v)?ch:null},se=(v,E,Q)=>[(v-E)*T,(v+E)*q-Q*ee],je=(v,E)=>{let Q=t[E]?.[v];return Q?.active&&re(Q)?ut(Q.depth):0},J=[];for(let v=0;v<B;v++)for(let E=0;E<R;E++){let Q=t[v]?.[E],Ae=re(Q);if(Q?.active&&Ae)J.push({x:E,y:v,color:Ae,tileIndex:Q.tileIndex??null,depth:ut(Q.depth),mirrorZ:!!Q.mirrorZ})}if(J.length===0)return'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 0 0"/>';J.sort((v,E)=>v.x+v.y-(E.x+E.y)||v.depth-E.depth);let L=[],Ie=1/0,it=-1/0,He=1/0,P=-1/0,G=!1,ie=wa(yr.shade,f),me=wa(an.shade,f),Je=(v)=>v===Xt?v.shade:v===yr?ie:me,fe=(v,E)=>{if(v<Ie)Ie=v;if(v>it)it=v;if(E<He)He=E;if(E>P)P=E};for(let{x:v,y:E,color:Q,tileIndex:Ae,depth:_e,mirrorZ:ye}of J){let le=zr(Q),ge=[],Ce=[],{primary:W,mirrored:$e}=li(_e,ye),lt=(de)=>le?`hsla(${le[0]}, ${le[1]}%, ${Math.max(0,Math.min(100,le[2]*de))}%, ${le[3]})`:Q,De=(de,pe=0,Le=W)=>de.corners.map(([Ee,he,te])=>se(v+Ee,E+he,te===0?pe:Le)),H=(de,pe=0,Le=W)=>{let Ee=De(de,pe,Le);if(V>0){let he=Je(de),te=lt(he),oe=hh(Ee,V),Ne=de===Xt?lt(Math.min(1.18,he+0.13)):lt(he*lh);ge.push(Ea(oe,te,te,V),Ea(oe,"none",Ne,V*0.3))}else ge.push(va(Ee,lt(Je(de))));for(let[he,te]of Ee)fe(he,te)},Te=ye?-$e:je(v+1,E),Be=ye?-$e:je(v,E+1),N=a&&!ye?0:Te,ct=a&&!ye?0:Be,vt=a||ye||N<W,Ut=a||ye||ct<W;if(vt)H(yr,N,W);if(Ut)H(an,ct,W);if(H(Xt,W,W),g){let de=new Set,pe=(te,oe)=>{let Ne=dh([te,oe]);if(de.has(Ne))return;de.add(Ne),Ce.push([te,oe])},Le=(te)=>{for(let oe=0;oe<te.length;oe++)pe(te[oe],te[(oe+1)%te.length])},Ee=(te,oe)=>{let[Ne,Me]=te.corners.filter(([,,xe])=>xe===0);for(let xe=Math.floor(oe)+1;xe<W;xe++)pe(se(v+Ne[0],E+Ne[1],xe),se(v+Me[0],E+Me[1],xe))},he=De(Xt,W,W);if(pe(he[0],he[1]),je(v+1,E)!==W)pe(he[1],he[2]);if(je(v,E+1)!==W)pe(he[2],he[3]);if(pe(he[3],he[0]),ye||Te<W)Le(De(yr,Te,W)),Ee(yr,Te);if(ye||Be<W)Le(De(an,Be,W)),Ee(an,Be)}let jt=Ae==null?null:on(p,Ae);if(jt){G=!0;let de=(Ee,he,te,oe,Ne,Me,xe,Ze)=>{let Xe=on(p,Ae,Ee);if(!Xe)return;let ht=1-Ze;ge.push(`<g transform="matrix(${he} ${te} ${oe} ${Ne} ${ue(Me)} ${ue(xe)})"><svg x="0" y="0" width="1" height="1" viewBox="${Xe.sx} ${Xe.sy} ${Xe.tileSize} ${Xe.tileSize}" preserveAspectRatio="none"><use href="#${y}" xlink:href="#${y}"/></svg>`+(ht>0?`<rect x="0" y="0" width="1" height="1" fill="#000" opacity="${ht.toFixed(2)}"/>`:"")+"</g>")};if(vt){let[Ee,he]=se(v+1,E,W);de("side",-T,q,0,ee*(W-N),Ee,he,Je(yr))}if(Ut){let[Ee,he]=se(v,E+1,W);de("side",T,q,0,ee*(W-ct),Ee,he,Je(an))}let[pe,Le]=se(v,E,W);de("top",T,q,-T,q,pe,Le,Xt.shade)}if(g)ge.push(Ah(Ce,g));if(d!=="normal"&&!jt){if(d==="lego"){let de=Math.SQRT2*rn*T,pe=Math.SQRT2*rn*q,Le=lt(ie),Ee=lt(Xt.shade),he=[[-1,-1],[-1,1],[1,-1],[1,1]];for(let[te,oe]of he){let Ne=v+0.5+te*nn,Me=E+0.5+oe*nn,[xe,Ze]=se(Ne,Me,W),[,Xe]=se(Ne,Me,W+gi);fe(xe-de,Ze+pe),fe(xe+de,Xe-pe);let ht='shape-rendering="geometricPrecision"';ge.push(`<ellipse cx="${ue(xe)}" cy="${ue(Ze)}" rx="${ue(de)}" ry="${ue(pe)}" fill="${St(Le)}" ${ht}/>`,`<rect x="${ue(xe-de)}" y="${ue(Xe)}" width="${ue(de*2)}" height="${ue(Ze-Xe)}" fill="${St(Le)}" ${ht}/>`,`<ellipse cx="${ue(xe)}" cy="${ue(Xe)}" rx="${ue(de)}" ry="${ue(pe)}" fill="${St(Ee)}" ${ht}/>`)}}else if(d==="voxel"){let de=(te,oe,Ne,Me,xe,Ze)=>{let Xe=(ht,Dn)=>{for(let[Ln,Mn]of ht)fe(Ln,Mn);ge.push(va(ht,lt(Dn)))};Xe([se(oe,Ne,Ze),se(oe,Ne,xe),se(oe,Me,xe),se(oe,Me,Ze)],ie),Xe([se(te,Me,Ze),se(te,Me,xe),se(oe,Me,xe),se(oe,Me,Ze)],me),Xe([se(te,Ne,Ze),se(oe,Ne,Ze),se(oe,Me,Ze),se(te,Me,Ze)],Xt.shade)},pe=fi,Le=mr(1,1),Ee=ye||Te<W?Te:null,he=ye||Be<W?Be:null;if(de(v+0.5-Le/2,v+0.5+Le/2,E+0.5-Le/2,E+0.5+Le/2,W,W+pe),Ee!==null){let te=mr(1,W-Ee),oe=(W+Ee)/2;de(v+1,v+1+pe,E+0.5-te/2,E+0.5+te/2,oe-te/2,oe+te/2)}if(he!==null){let te=mr(1,W-he),oe=(W+he)/2;de(v+0.5-te/2,v+0.5+te/2,E+1,E+1+pe,oe-te/2,oe+te/2)}}}if(a)L.push(`<g data-color="${St(Q)}">${ge.join("")}</g>`);else L.push(...ge)}let Oe=2+V/2,qe=Ie-Oe,Ot=He-Oe,et=it-Ie+Oe*2,Z=P-He+Oe*2,F=G&&p&&b&&m?`<defs><image id="${y}" href="${St(b)}" xlink:href="${St(b)}" x="0" y="0" width="${w}" height="${I}" style="image-rendering:pixelated"/></defs>`:"";return[`<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="${ue(qe)} ${ue(Ot)} ${ue(et)} ${ue(Z)}" shape-rendering="crispEdges">`,F,...L,"</svg>"].join("")}var fh="hsla(278, 100%, 70%, 1)",gh=/hsla\(278, 100%, ([\d.]+)%, 1\)/g,ln=(e)=>vi({grid:[[{active:!0,color:fh}]],numCols:1,numRows:1,blockStyle:e,sideLighting:0.15}).replaceAll(gh,"hsl(var(--block-style-icon-hs, 278 100%) $1% / 1)"),mh=[{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 ze=[{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 bh=16777216,yh=16;function wr(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function wh(e){if(!Array.isArray(e))return[...ze[0].colors];let t=e.slice(0,yh).flatMap((r)=>{if(typeof r==="string"&&mt(r))return[r];if(wr(r)&&mt(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:[...ze[0].colors]}function _h(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 vh(e){let t=wr(e)?e:{};return{saturation:ot(t.saturation),lightness:ot(t.lightness)}}function cn(e){if(e.length>bh)throw Error("Draft is too large");let t=JSON.parse(e);if(!wr(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)>Ye||r.length!==n||!r.every((o)=>o.length===n))throw Error("Draft contains an invalid grid");let i=wh(t.palette),s=mt(t.activeColor)?t.activeColor:i[0];return{filename:typeof t.filename==="string"?tn(t.filename):"untitled",grid:r,palette:i,activeColor:s,paletteColorAdjustment:vh(t.paletteColorAdjustment),draft:{data:t,activeArtboard:_h(t)}}}function Ch(e,t){let r=Array.isArray(t)?t:[];return e.map((n,i)=>{let s=r[i];if(!wr(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 Eh(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]=wr(s)&&"grid"in s?{...s,grid:t}:t}return{artboards:n,activeArtboard:i}}function un(e){let t=e.draft?.data,r=br(e.grid),n=Ch(e.palette,t?.palette),{artboards:i,activeArtboard:s}=Eh(e,r),o=e.paletteColorAdjustment??{saturation:0,lightness:0},a=wr(t?.paletteColorAdjustment)?t.paletteColorAdjustment:{};return JSON.stringify({...t,version:1,grid:r,gridSize:e.grid.length,palette:n,paletteColorAdjustment:{...a,saturation:ot(o.saturation),lightness:ot(o.lightness)},activeColor:e.activeColor,artboards:i,activeArtboard:s,filename:e.filename,savedAt:new Date().toISOString()},null,2)}var Ia=16,Sh=100;function Sa(e,t,r){return Math.max(t,Math.min(r,e))}function dn(e){return e.map((t)=>t.map((r)=>({...r})))}function Ih(e){return Array.from({length:e},()=>Array.from({length:e},()=>({active:!1,color:null})))}function xa(e){if(!Number.isInteger(e)||e<1||e>Ye)throw Error(`Grid size must be between 1 and ${Ye}`);return e}function zt(e=Ia){let t=[...ze[0].colors];return{filename:"untitled",grid:Ih(xa(e)),palette:t,activeColor:t[0],paletteColorAdjustment:{saturation:0,lightness:0}}}function xh(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=xa(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:ot(e.paletteColorAdjustment?.saturation),lightness:ot(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:Sa(Math.round(e),0,this.size-1),y:Sa(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;let n=dn(this.currentGrid);if(!(r==="fill"?this.fill(e,t):this.paintMirrored(e,t,r==="draw"?this.activeColor:null)))return!1;if(this.undoStack.push({grid:n,id:this.currentId}),this.undoStack.length>Sh)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 xh(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 kh}from"net";var Rh="127.0.0.1",Th=47642,Bh=3000,Oh=32,Nh=1048576,Ph=16384,ka=[0.57,0.57,0.6,1];function Dh(e){if(!e)return[...ka];let t=Lt(e);return t?[t.r/255,t.g/255,t.b/255,t.a]:[...ka]}function Lh(e){if(!e?.active)return{active:!1,color:null,depth:1,mirrorZ:!1};return{active:!0,color:Dh(e.color),depth:ut(e.depth),mirrorZ:!!e.mirrorZ}}function Ta(e,t,r){return{x:t%r,y:Math.floor(t/r),...e}}function Mh(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 Ba(e){let{saturation:t,lightness:r}=e.paletteColorAdjustment??{saturation:0,lightness:0},n=Zt(e.grid,t,r),i=n.length,s=n[0]?.length??0;return Array.from({length:s*i},(o,a)=>Lh(n[Math.floor(a/s)]?.[a%s]))}function Fh(e){let t=e.grid.length,r=e.grid[0]?.length??0,n=Ba(e);return{message:{protocol:Xn,type:"snapshot",columns:r,rows:t,cells:n.flatMap((i,s)=>i.active?[Ta(i,s,r)]:[])},state:n}}function Gh(e,t,r){return t.flatMap((n,i)=>e[i]&&Mh(e[i],n)?[]:[Ta(n,i,r)])}function Ra(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 Ci{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=kh){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:Rh,port:Th})}catch(t){let r={state:"error",message:Ra(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,Ra(t))),e.on("close",()=>this.handleClose(e)),this.connectTimer=setTimeout(()=>{this.fail(e,"Timed out waiting for the Blender add-on.")},Bh),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;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=Ba(e);for(let i of Gh(this.previousGrid,n,r))this.pendingCells.set(i.y*r+i.x,i);if(this.previousGrid=n,this.pendingCells.size>0&&!this.patchTimer)this.patchTimer=setTimeout(()=>this.flushPatch(),Oh)}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)>Ph){this.fail(e,"Blender sent an invalid handshake.");return}let r=this.handshakeBuffer.indexOf(`
6
+ var ru=Object.create;var{getPrototypeOf:nu,defineProperty:ho,getOwnPropertyNames:su}=Object;var iu=Object.prototype.hasOwnProperty;function ou(e){return this[e]}var au,lu,cu=(e,t,r)=>{var n=e!=null&&typeof e==="object";if(n){var i=t?au??=new WeakMap:lu??=new WeakMap,s=i.get(e);if(s)return s}r=e!=null?ru(nu(e)):{};let o=t||!e||!e.__esModule?ho(r,"default",{value:e,enumerable:!0}):r;if(e&&typeof e==="object"||typeof e==="function"){for(let a of su(e))if(!iu.call(o,a))ho(o,a,{get:ou.bind(e,a),enumerable:!0})}if(n)i.set(e,o);return o};var uu=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var dl=uu(function(Gy,ss){var Ma,Fa,Ga,Ua,ja,Ha,Ka,Wa,Ya,Qa,Ja,Za,$a,rs,Ti,Xa,Va,za,xr,qa,el,tl,rl,nl,sl,il,ol,al,ns,ll,cl,ul;(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 ss==="object"&&typeof Gy==="object")e(r(t,r(Gy)));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]};Ma=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)},Fa=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},Ga=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},Ua=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},ja=function(s,o){return function(a,l){o(a,l,s)}},Ha=function(s,o,a,l,c,u){function d(m){if(m!==void 0&&typeof m!=="function")throw TypeError("Function expected");return m}var A=l.kind,g=A==="getter"?"get":A==="setter"?"set":"value",f=!o&&s?l.static?s:s.prototype:null,y=o||(f?Object.getOwnPropertyDescriptor(f,l.name):{}),b,C=!1;for(var _=a.length-1;_>=0;_--){var S={};for(var v in l)S[v]=v==="access"?{}:l[v];for(var v in l.access)S.access[v]=l.access[v];S.addInitializer=function(m){if(C)throw TypeError("Cannot add initializers after decoration has completed");u.push(d(m||null))};var w=(0,a[_])(A==="accessor"?{get:y.get,set:y.set}:y[g],S);if(A==="accessor"){if(w===void 0)continue;if(w===null||typeof w!=="object")throw TypeError("Object expected");if(b=d(w.get))y.get=b;if(b=d(w.set))y.set=b;if(b=d(w.init))c.unshift(b)}else if(b=d(w))if(A==="field")c.unshift(b);else y[g]=b}if(f)Object.defineProperty(f,l.name,y);C=!0},Ka=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},Wa=function(s){return typeof s==="symbol"?s:"".concat(s)},Ya=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})},Qa=function(s,o){if(typeof Reflect==="object"&&typeof Reflect.metadata==="function")return Reflect.metadata(s,o)},Ja=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(y){try{f(l.next(y))}catch(b){d(b)}}function g(y){try{f(l.throw(y))}catch(b){d(b)}}function f(y){y.done?u(y.value):c(y.value).then(A,g)}f((l=l.apply(s,o||[])).next())})},Za=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(f){return function(y){return g([f,y])}}function g(f){if(l)throw TypeError("Generator is already executing.");while(d&&(d=0,f[0]&&(a=0)),a)try{if(l=1,c&&(u=f[0]&2?c.return:f[0]?c.throw||((u=c.return)&&u.call(c),0):c.next)&&!(u=u.call(c,f[1])).done)return u;if(c=0,u)f=[f[0]&2,u.value];switch(f[0]){case 0:case 1:u=f;break;case 4:return a.label++,{value:f[1],done:!1};case 5:a.label++,c=f[1],f=[0];continue;case 7:f=a.ops.pop(),a.trys.pop();continue;default:if((u=a.trys,!(u=u.length>0&&u[u.length-1]))&&(f[0]===6||f[0]===2)){a=0;continue}if(f[0]===3&&(!u||f[1]>u[0]&&f[1]<u[3])){a.label=f[1];break}if(f[0]===6&&a.label<u[1]){a.label=u[1],u=f;break}if(u&&a.label<u[2]){a.label=u[2],a.ops.push(f);break}if(u[2])a.ops.pop();a.trys.pop();continue}f=o.call(s,a)}catch(y){f=[6,y],c=0}finally{l=u=0}if(f[0]&5)throw f[1];return{value:f[0]?f[1]:void 0,done:!0}}},$a=function(s,o){for(var a in s)if(a!=="default"&&!Object.prototype.hasOwnProperty.call(o,a))ns(o,s,a)},ns=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]},rs=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.")},Ti=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},Xa=function(){for(var s=[],o=0;o<arguments.length;o++)s=s.concat(Ti(arguments[o]));return s},Va=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},za=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))},xr=function(s){return this instanceof xr?(this.v=s,this):new xr(s)},qa=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(_){return function(S){return Promise.resolve(S).then(_,b)}}function A(_,S){if(l[_]){if(c[_]=function(v){return new Promise(function(w,m){u.push([_,v,w,m])>1||g(_,v)})},S)c[_]=S(c[_])}}function g(_,S){try{f(l[_](S))}catch(v){C(u[0][3],v)}}function f(_){_.value instanceof xr?Promise.resolve(_.value.v).then(y,b):C(u[0][2],_)}function y(_){g("next",_)}function b(_){g("throw",_)}function C(_,S){if(_(S),u.shift(),u.length)g(u[0][0],u[0][1])}},el=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:xr(s[c](d)),done:!1}:u?u(d):d}:u}},tl=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 rs==="function"?rs(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,g){d=s[u](d),c(A,g,d.done,d.value)})}}function c(u,d,A,g){Promise.resolve(g).then(function(f){u({value:f,done:A})},d)}},rl=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)};nl=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")ns(o,s,a[l])}return r(o,s),o},sl=function(s){return s&&s.__esModule?s:{default:s}},il=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)},ol=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},al=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)},ll=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};cl=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()},ul=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",Ma),e("__assign",Fa),e("__rest",Ga),e("__decorate",Ua),e("__param",ja),e("__esDecorate",Ha),e("__runInitializers",Ka),e("__propKey",Wa),e("__setFunctionName",Ya),e("__metadata",Qa),e("__awaiter",Ja),e("__generator",Za),e("__exportStar",$a),e("__createBinding",ns),e("__values",rs),e("__read",Ti),e("__spread",Xa),e("__spreadArrays",Va),e("__spreadArray",za),e("__await",xr),e("__asyncGenerator",qa),e("__asyncDelegator",el),e("__asyncValues",tl),e("__makeTemplateObject",rl),e("__importStar",nl),e("__importDefault",sl),e("__classPrivateFieldGet",il),e("__classPrivateFieldSet",ol),e("__classPrivateFieldIn",al),e("__addDisposableResource",ll),e("__disposeResources",cl),e("__rewriteRelativeImportExtension",ul)})});import{CliRenderer as Mu,createCliRenderer as Fu,engine as Gu}from"@opentui/core";import{createTestRenderer as nm}from"@opentui/core/testing";import{ASCIIFontRenderable as Uu,BoxRenderable as ju,CodeRenderable as Hu,DiffRenderable as Ku,ImageRenderable as Wu,InputRenderable as Yu,LineNumberRenderable as Qu,MarkdownRenderable as Ju,ScrollBoxRenderable as Zu,SelectRenderable as $u,TabSelectRenderable as Xu,TextareaRenderable as Vu,TextAttributes as Zs,TextNodeRenderable as zu,TextRenderable as qu}from"@opentui/core";import{engine as om,Timeline as am}from"@opentui/core";var Xe={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return Ao(this.context.count)},getNextContextId(){return Ao(this.context.count++)}};function Ao(e){let t=String(e),r=t.length-1;return Xe.context.id+(r?String.fromCharCode(96+r):"")+t}function Gs(e){Xe.context=e}function du(){return{...Xe.context,id:Xe.getNextContextId(),count:0}}var hu=!1,Au=(e,t)=>e===t,Us=Symbol("solid-proxy"),fu=typeof Proxy==="function",gu=Symbol("solid-track"),Mg=Symbol("solid-dev-component"),Gn={equals:Au},fo=null,yo=So,dt=1,Kr=2,wo={owned:null,cleanups:null,context:null,owner:null};var le=null,N=null,Yr=null,ur=null,we=null,Ge=null,qe=null,jn=0;function Hr(e,t){let r=we,n=le,i=e.length===0,s=t===void 0?n:t,o=i?wo:{owned:null,cleanups:null,context:s?s.context:null,owner:s},a=i?e:()=>e(()=>ht(()=>Ht(o)));le=o,we=null;try{return Bt(a,!0)}finally{we=r,le=n}}function Q(e,t){t=t?Object.assign({},Gn,t):Gn;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 Eo(r,i)};return[Co.bind(r),n]}function vt(e,t,r){let n=Ks(e,t,!1,dt);if(Yr&&N&&N.running)Ge.push(n);else Jr(n)}function Hn(e,t,r){yo=yu;let n=Ks(e,t,!1,dt),i=js&&Qr(js);if(i)n.suspense=i;if(!r||!r.render)n.user=!0;qe?qe.push(n):Jr(n)}function V(e,t,r){r=r?Object.assign({},Gn,r):Gn;let n=Ks(e,t,!0,0);if(n.observers=null,n.observerSlots=null,n.comparator=r.equals||void 0,Yr&&N&&N.running)n.tState=dt,Ge.push(n);else Jr(n);return Co.bind(n)}function ht(e){if(!ur&&we===null)return e();let t=we;we=null;try{if(ur)return ur.untrack(e);return e()}finally{we=t}}function Jt(e){Hn(()=>ht(e))}function at(e){if(le===null);else if(le.cleanups===null)le.cleanups=[e];else le.cleanups.push(e);return e}function mu(e){if(N&&N.running)return e(),N.done;let t=we,r=le;return Promise.resolve().then(()=>{we=t,le=r;let n;if(Yr||js)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 Bt(e,!1),we=le=null,n?n.done:void 0})}var[Fg,go]=Q(!1);function _o(e,t){let r=Symbol("context");return{id:r,Provider:_u(r),defaultValue:e}}function Qr(e){let t;return le&&le.context&&(t=le.context[e.id])!==void 0?t:e.defaultValue}function vo(e){let t=V(e),r=V(()=>Hs(t()));return r.toArray=()=>{let n=r();return Array.isArray(n)?n:n!=null?[n]:[]},r}var js;function Co(){let e=N&&N.running;if(this.sources&&(e?this.tState:this.state))if((e?this.tState:this.state)===dt)Jr(this);else{let t=Ge;Ge=null,Bt(()=>Un(this),!1),Ge=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 Eo(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)Bt(()=>{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)Ge.push(s);else qe.push(s);if(s.observers)Io(s)}if(!o)s.state=dt;else s.tState=dt}if(Ge.length>1e6)throw Ge=[],Error()},!1)}return t}function Jr(e){if(!e.fn)return;Ht(e);let t=jn;if(mo(e,N&&N.running&&N.sources.has(e)?e.tValue:e.value,t),N&&!N.running&&N.sources.has(e))queueMicrotask(()=>{Bt(()=>{N&&(N.running=!0),we=le=e,mo(e,e.tValue,t),we=le=null},!1)})}function mo(e,t,r){let n,i=le,s=we;we=le=e;try{n=e.fn(t)}catch(o){if(e.pure)if(N&&N.running)e.tState=dt,e.tOwned&&e.tOwned.forEach(Ht),e.tOwned=void 0;else e.state=dt,e.owned&&e.owned.forEach(Ht),e.owned=null;return e.updatedAt=r+1,Ws(o)}finally{we=s,le=i}if(!e.updatedAt||e.updatedAt<=r){if(e.updatedAt!=null&&"observers"in e)Eo(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 Ks(e,t,r,n=dt,i){let s={fn:e,state:n,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:le,context:le?le.context:null,pure:r};if(N&&N.running)s.state=0,s.tState=n;if(le===null);else if(le!==wo)if(N&&N.running&&le.pure)if(!le.tOwned)le.tOwned=[s];else le.tOwned.push(s);else if(!le.owned)le.owned=[s];else le.owned.push(s);if(ur&&s.fn){let o=s.fn,[a,l]=Q(void 0,{equals:!1}),c=ur.factory(o,l);at(()=>c.dispose());let u,d=()=>mu(l).then(()=>{if(u)u.dispose(),u=void 0});s.fn=(A)=>{if(a(),N&&N.running){if(!u)u=ur.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 Un(e);if(e.suspense&&ht(e.suspense.inFallback))return e.suspense.effects.push(e);let r=[e];while((e=e.owner)&&(!e.updatedAt||e.updatedAt<jn)){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)===dt)Jr(e);else if((t?e.tState:e.state)===Kr){let i=Ge;Ge=null,Bt(()=>Un(e,r[0]),!1),Ge=i}}}function Bt(e,t){if(Ge)return e();let r=!1;if(!t)Ge=[];if(qe)r=!0;else qe=[];jn++;try{let n=e();return pu(r),n}catch(n){if(!r)qe=null;Ge=null,Ws(n)}}function pu(e){if(Ge){if(Yr&&N&&N.running)bu(Ge);else So(Ge);Ge=null}if(e)return;let t;if(N){if(!N.promises.size&&!N.queue.size){let{sources:n,disposed:i}=N;qe.push.apply(qe,N.effects),t=N.resolve;for(let s of qe)"tState"in s&&(s.state=s.tState),delete s.tState;N=null,Bt(()=>{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}go(!1)},!1)}else if(N.running){N.running=!1,N.effects.push.apply(N.effects,qe),qe=null,go(!0);return}}let r=qe;if(qe=null,r.length)Bt(()=>yo(r),!1);if(t)t()}function So(e){for(let t=0;t<e.length;t++)Wr(e[t])}function bu(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),Bt(()=>{N.running=!0,Wr(r)},!1),N&&(N.running=!1)})}}function yu(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(Xe.context){if(Xe.count){Xe.effects||(Xe.effects=[]),Xe.effects.push(...e.slice(0,r));return}Gs()}if(Xe.effects&&(Xe.done||!Xe.count))e=[...Xe.effects,...e],r+=Xe.effects.length,delete Xe.effects;for(t=0;t<r;t++)Wr(e[t])}function Un(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===dt){if(i!==t&&(!i.updatedAt||i.updatedAt<jn))Wr(i)}else if(s===Kr)Un(i,t)}}}function Io(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)Ge.push(n);else qe.push(n);n.observers&&Io(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)xo(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 xo(e,t){if(!t)e.tState=0,N.disposed.add(e);if(e.owned)for(let r=0;r<e.owned.length;r++)xo(e.owned[r])}function wu(e){if(e instanceof Error)return e;return Error(typeof e==="string"?e:"Unknown error",{cause:e})}function po(e,t,r){try{for(let n of t)n(e)}catch(n){Ws(n,r&&r.owner||null)}}function Ws(e,t=le){let r=fo&&t&&t.context&&t.context[fo],n=wu(e);if(!r)throw n;if(qe)qe.push({fn(){po(n,r,t)},state:dt});else po(n,r,t)}function Hs(e){if(typeof e==="function"&&!e.length)return Hs(e());if(Array.isArray(e)){let t=[];for(let r=0;r<e.length;r++){let n=Hs(e[r]);Array.isArray(n)?t.push.apply(t,n):t.push(n)}return t}return e}function _u(e,t){return function(n){let i;return vt(()=>i=ht(()=>(le.context={...le.context,[e]:n.value},vo(()=>n.children))),void 0),i}}var vu=Symbol("fallback");function bo(e){for(let t=0;t<e.length;t++)e[t]()}function Cu(e,t,r={}){let n=[],i=[],s=[],o=0,a=t.length>1?[]:null;return at(()=>bo(s)),()=>{let l=e()||[],c=l.length,u,d;return l[gu],ht(()=>{let g,f,y,b,C,_,S,v,w;if(c===0){if(o!==0)bo(s),s=[],n=[],i=[],o=0,a&&(a=[]);if(r.fallback)n=[vu],i[0]=Hr((m)=>(s[0]=m,r.fallback())),o=1}else if(o===0){i=Array(c);for(d=0;d<c;d++)n[d]=l[d],i[d]=Hr(A);o=c}else{y=Array(c),b=Array(c),a&&(C=Array(c));for(_=0,S=Math.min(o,c);_<S&&n[_]===l[_];_++);for(S=o-1,v=c-1;S>=_&&v>=_&&n[S]===l[v];S--,v--)y[v]=i[S],b[v]=s[S],a&&(C[v]=a[S]);g=new Map,f=Array(v+1);for(d=v;d>=_;d--)w=l[d],u=g.get(w),f[d]=u===void 0?-1:u,g.set(w,d);for(u=_;u<=S;u++)if(w=n[u],d=g.get(w),d!==void 0&&d!==-1)y[d]=i[u],b[d]=s[u],a&&(C[d]=a[u]),d=f[d],g.set(w,d);else s[u]();for(d=_;d<c;d++)if(d in y){if(i[d]=y[d],s[d]=b[d],a)a[d]=C[d],a[d](d)}else i[d]=Hr(A);i=i.slice(0,o=c),n=l.slice(0)}return i});function A(g){if(s[d]=g,a){let[f,y]=Q(d);return a[d]=y,t(l[d],f)}return t(l[d])}}}var Eu=!1;function ko(e,t){if(Eu){if(Xe.context){let r=Xe.context;Gs(du());let n=ht(()=>e(t||{}));return Gs(r),n}}return ht(()=>e(t||{}))}function Fn(){return!0}var Su={get(e,t,r){if(t===Us)return r;return e.get(t)},has(e,t){if(t===Us)return!0;return e.has(t)},set:Fn,deleteProperty:Fn,getOwnPropertyDescriptor(e,t){return{configurable:!0,enumerable:!0,get(){return e.get(t)},set:Fn,deleteProperty:Fn}},ownKeys(e){return e.keys()}};function Fs(e){return!(e=typeof e==="function"?e():e)?{}:e}function Iu(){for(let e=0,t=this.length;e<t;++e){let r=this[e]();if(r!==void 0)return r}}function Kn(...e){let t=!1;for(let o=0;o<e.length;o++){let a=e[o];t=t||!!a&&Us in a,e[o]=typeof a==="function"?(t=!0,V(a)):a}if(fu&&t)return new Proxy({get(o){for(let a=e.length-1;a>=0;a--){let l=Fs(e[a])[o];if(l!==void 0)return l}},has(o){for(let a=e.length-1;a>=0;a--)if(o in Fs(e[a]))return!0;return!1},keys(){let o=[];for(let a=0;a<e.length;a++)o.push(...Object.keys(Fs(e[a])));return[...new Set(o)]}},Su);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:Iu.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 xu=(e)=>`Stale read from <${e}>.`;function Ct(e){let t="fallback"in e&&{fallback:()=>e.fallback};return V(Cu(()=>e.each,e.children,t||void 0))}function At(e){let t=e.keyed,r=V(()=>e.when,void 0,void 0),n=t?r:V(r,void 0,{equals:(i,s)=>!i===!s});return V(()=>{let i=n();if(i){let s=e.children;return typeof s==="function"&&s.length>0?ht(()=>s(t?i:()=>{if(!ht(n))throw xu("Show");return r()})):s}return e.fallback},void 0,void 0)}import{BaseRenderable as Zo,createTextAttributes as nd,ImageRenderable as Mo,InputRenderable as $s,InputRenderableEvents as $r,isTextNodeRenderable as ei,isEditBufferRenderable as sd,parseColor as Fo,Renderable as id,RootTextNodeRenderable as od,ScrollBoxRenderable as ad,SelectRenderable as Go,SelectRenderableEvents as Xs,TabSelectRenderable as Uo,TabSelectRenderableEvents as Vs,TextNodeRenderable as ld,TextRenderable as $o}from"@opentui/core";var Ys,ku=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]]),Ro=(Ys=String.fromCodePoint)!==null&&Ys!==void 0?Ys:(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 To(e){var t;if(e>=55296&&e<=57343||e>1114111)return 65533;return(t=ku.get(e))!==null&&t!==void 0?t:e}function Bo(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 Oo=Bo("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 et;(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"})(et||(et={}));var Ee;(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"})(Ee||(Ee={}));var Po=32;function Qs(e){return e>=Ee.ZERO&&e<=Ee.NINE}function Ru(e){return e>=Ee.UPPER_A&&e<=Ee.UPPER_F||e>=Ee.LOWER_A&&e<=Ee.LOWER_F}function Tu(e){return e>=Ee.UPPER_A&&e<=Ee.UPPER_Z||e>=Ee.LOWER_A&&e<=Ee.LOWER_Z||Qs(e)}function Bu(e){return e===Ee.EQUALS||Tu(e)}var We;(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"})(We||(We={}));var Ot;(function(e){e[e.Legacy=0]="Legacy",e[e.Strict=1]="Strict",e[e.Attribute=2]="Attribute"})(Ot||(Ot={}));class Js{constructor(e,t,r){this.decodeTree=e,this.emitCodePoint=t,this.errors=r,this.state=We.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=Ot.Strict,this.runConsumed=0}startEntity(e){this.decodeMode=e,this.state=We.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(e,t){switch(this.state){case We.EntityStart:{if(e.charCodeAt(t)===Ee.NUM)return this.state=We.NumericStart,this.consumed+=1,this.stateNumericStart(e,t+1);return this.state=We.NamedEntity,this.stateNamedEntity(e,t)}case We.NumericStart:return this.stateNumericStart(e,t);case We.NumericDecimal:return this.stateNumericDecimal(e,t);case We.NumericHex:return this.stateNumericHex(e,t);case We.NamedEntity:return this.stateNamedEntity(e,t)}}stateNumericStart(e,t){if(t>=e.length)return-1;if((e.charCodeAt(t)|Po)===Ee.LOWER_X)return this.state=We.NumericHex,this.consumed+=1,this.stateNumericHex(e,t+1);return this.state=We.NumericDecimal,this.stateNumericDecimal(e,t)}stateNumericHex(e,t){while(t<e.length){let r=e.charCodeAt(t);if(Qs(r)||Ru(r)){let n=r<=Ee.NINE?r-Ee.ZERO:(r|Po)-Ee.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(Qs(r))this.result=this.result*10+(r-Ee.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===Ee.SEMI)this.consumed+=1;else if(this.decodeMode===Ot.Strict)return 0;if(this.emitCodePoint(To(this.result),this.consumed),this.errors){if(e!==Ee.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&et.VALUE_LENGTH)>>14;while(t<e.length){if(i===0&&(n&et.FLAG13)!==0){let o=(n&et.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let a=n&et.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&et.VALUE_LENGTH)>>14}if(t>=e.length)break;let s=e.charCodeAt(t);if(s===Ee.SEMI&&i!==0&&(n&et.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);if(this.treeIndex=Pu(r,n,this.treeIndex+Math.max(1,i),s),this.treeIndex<0)return this.result===0||this.decodeMode===Ot.Attribute&&(i===0||Bu(s))?0:this.emitNotTerminatedNamedEntity();if(n=r[this.treeIndex],i=(n&et.VALUE_LENGTH)>>14,i!==0){if(s===Ee.SEMI)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);if(this.decodeMode!==Ot.Strict&&(n&et.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]&et.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]&~(et.VALUE_LENGTH|et.FLAG13):n[e+1],r),t===3)this.emitCodePoint(n[e+2],r);return r}end(){var e;switch(this.state){case We.NamedEntity:return this.result!==0&&(this.decodeMode!==Ot.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case We.NumericDecimal:return this.emitNumericEntity(0,2);case We.NumericHex:return this.emitNumericEntity(0,3);case We.NumericStart:return(e=this.errors)===null||e===void 0||e.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case We.EntityStart:return 0}}}function Ou(e){let t="",r=new Js(e,(n)=>t+=Ro(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 Pu(e,t,r,n){let i=(t&et.BRANCH_LENGTH)>>7,s=t&et.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 Nu=Ou(Oo);function Zr(e){return Nu(e,Ot.Strict)}var No;(function(e){e[e.XML=0]="XML",e[e.HTML=1]="HTML"})(No||(No={}));var Do;(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"})(Do||(Do={}));import{BaseRenderable as md,isTextNodeRenderable as pd,TextNodeRenderable as bd,TextRenderable as yd,Yoga as Xo}from"@opentui/core";import{BoxRenderable as wm,RootRenderable as _m}from"@opentui/core";import{TimeToFirstDrawRenderable as _d}from"@opentui/core";import{createSlotRegistry as Sm}from"@opentui/core";class Xr extends zu{_ctx;constructor(e,t){super(t);this._ctx=e}}class Yn extends Xr{constructor(e,t){super(null,e);if(t==="b"||t==="strong")this.attributes=(this.attributes||0)|Zs.BOLD;else if(t==="i"||t==="em")this.attributes=(this.attributes||0)|Zs.ITALIC;else if(t==="u")this.attributes=(this.attributes||0)|Zs.UNDERLINE}}class zs extends Yn{constructor(e){super(e,"b")}}class qs extends Yn{constructor(e){super(e,"i")}}class Wo extends Yn{constructor(e){super(e,"u")}}class Yo extends Xr{constructor(e,t){super(null,t);this.add()}add(){return super.add(`
7
+ `)}}class Qo extends Xr{constructor(e,t){let r={...t,link:{url:t.href}};super(null,r)}}var ed={box:ju,text:qu,input:Yu,select:$u,textarea:Vu,ascii_font:Uu,tab_select:Xu,scrollbox:Zu,code:Hu,diff:Ku,line_number:Qu,markdown:Ju,image:Wu,span:Xr,strong:zs,b:zs,em:qs,i:qs,u:Wo,br:Yo,a:Qo},Jo={...ed};function Vr(e){Object.assign(Jo,e)}function td(){return Jo}var si=_o(),Pt=()=>{let e=Qr(si);if(!e)throw Error("No renderer found");return e},rd=(e)=>{let t=Pt();Jt(()=>{t.on("resize",e)}),at(()=>{t.off("resize",e)})},Ar=()=>{let e=Pt(),[t,r]=Q({width:e.width,height:e.height});return rd((i,s)=>{r({width:i,height:s})}),t},fr=(e,t)=>{let n=Pt().keyInput;Jt(()=>{if(n.on("keypress",e),t?.release)n.on("keyrelease",e)}),at(()=>{if(n.off("keypress",e),t?.release)n.off("keyrelease",e)})};var cd=(e)=>V(()=>e());function ud({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(v,w,m,P){if(m!==void 0&&!P)P=[];if(typeof w!=="function")return g(v,w,P,m);vt((O)=>g(v,w(),O,m),P)}function g(v,w,m,P,O){while(typeof m==="function")m=m();if(w===m)return m;let U=typeof w,k=P!==void 0;if(U==="string"||U==="number"){if(U==="number")w=w.toString();if(k){let T=m[0];if(T&&i(T))s(T,w);else T=r(w);m=b(v,m,P,T)}else if(m!==""&&typeof m==="string")s(u(v),m=w);else b(v,m,P,r(w)),m=w}else if(w==null||U==="boolean")m=b(v,m,P);else if(U==="function")return vt(()=>{let T=w();while(typeof T==="function")T=T();m=g(v,T,m,P)}),()=>m;else if(Array.isArray(w)){let T=[];if(f(T,w,O))return vt(()=>m=g(v,T,m,P,!0)),()=>m;if(T.length===0){let q=b(v,m,P);if(k)return m=q}else if(Array.isArray(m))if(m.length===0)C(v,T,P);else y(v,m,T);else if(m==null||m==="")C(v,T);else y(v,k&&m||[u(v)],T);m=T}else{if(Array.isArray(m)){if(k)return m=b(v,m,P,w);b(v,m,null,w)}else if(m==null||m===""||!u(v))o(v,w);else _(v,w,u(v));m=w}return m}function f(v,w,m){let P=!1;for(let O=0,U=w.length;O<U;O++){let k=w[O],T;if(k==null||k===!0||k===!1);else if(Array.isArray(k))P=f(v,k)||P;else if((T=typeof k)==="string"||T==="number")v.push(r(k));else if(T==="function")if(m){while(typeof k==="function")k=k();P=f(v,Array.isArray(k)?k:[k])||P}else v.push(k),P=!0;else v.push(k)}return P}function y(v,w,m){let P=m.length,O=w.length,U=P,k=0,T=0,q=d(w[O-1]),ee=null;while(k<O||T<U){if(w[k]===m[T]){k++,T++;continue}while(w[O-1]===m[U-1])O--,U--;if(O===k){let X=U<P?T?d(m[T-1]):m[U-T]:q;while(T<U)o(v,m[T++],X)}else if(U===T)while(k<O){if(!ee||!ee.has(w[k]))a(v,w[k]);k++}else if(w[k]===m[U-1]&&m[T]===w[O-1]){let X=d(w[--O]);o(v,m[T++],d(w[k++])),o(v,m[--U],X),w[O]=m[U]}else{if(!ee){ee=new Map;let ae=T;while(ae<U)ee.set(m[ae],ae++)}let X=ee.get(w[k]);if(X!=null)if(T<X&&X<U){let ae=k,se=1,ie;while(++ae<O&&ae<U){if((ie=ee.get(w[ae]))==null||ie!==X+se)break;se++}if(se>X-T){let He=w[k];while(T<X)o(v,m[T++],He)}else _(v,m[T++],w[k++])}else k++;else a(v,w[k++])}}}function b(v,w,m,P){if(m===void 0){let U;while(U=u(v))a(v,U);return P&&o(v,P),P??""}let O=P||n();if(w.length){let U=!1;for(let k=w.length-1;k>=0;k--){let T=w[k];if(O!==T){let q=c(T)===v;if(!U&&!k)q?_(v,O,T):o(v,O,m);else q&&a(v,T)}else U=!0}}else o(v,O,m);return[O]}function C(v,w,m){for(let P=0,O=w.length;P<O;P++)o(v,w[P],m)}function _(v,w,m){o(v,w,m),a(v,m)}function S(v,w,m={},P){if(w||(w={}),!P)vt(()=>m.children=g(v,w.children,m.children));return vt(()=>w.ref&&w.ref(v)),vt(()=>{for(let O in w){if(O==="children"||O==="ref")continue;let U=w[O];if(U===m[O])continue;l(v,O,U,m[O]),m[O]=U}}),m}return{render(v,w){let m;return Hr((P)=>{m=P,A(w,v())}),m},insert:A,spread(v,w,m){if(typeof w==="function")vt((P)=>S(v,w(),P,m));else S(v,w,void 0,m)},createElement:e,createTextNode:t,insertNode:o,setProp(v,w,m,P){return l(v,w,m,P),m},mergeProps:Kn,effect:vt,memo:cd,createComponent:ko,use(v,w,m){return ht(()=>v(w,m))}}}function dd(e){let t=ud(e);return t.mergeProps=Kn,t}var Wn=new Map;function ii(e){if(!Wn.has(e))Wn.set(e,0);let t=Wn.get(e)+1;return Wn.set(e,t),`${e}-${t}`}var Ye=(...e)=>{if(process.env.DEBUG)console.log("[Reconciler]",...e)};class dr extends ld{static fromString(e,t={}){let r=new dr(t);return r.add(e),r}}var Ue=(e)=>{if(!e)return;return e.id},ti=(e)=>{let t;if(e instanceof $o)t=e.getTextChildren();else t=e.getChildren();return t};function hd(e,t,r){if(Ye("Inserting node:",Ue(t),"into parent:",Ue(e),"with anchor:",Ue(r),t instanceof dr),t instanceof hr)t.parent=e,t=t.getSlotChild(e);if(r&&r instanceof hr)r=r.getSlotChild(e);if(ei(t)){if(!(e instanceof $o)&&!ei(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 Zo))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=ti(e),i=n.indexOf(r);if(i===-1)Ye("[INSERT]","Could not find anchor",Ue(e),Ue(r),"[children]",...n.map((s)=>s.id));e.add(t,i)}function Ad(e,t){Ye("Removing node:",Ue(t),"from parent:",Ue(e));let r;if(t instanceof hr){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 Zo&&!t.parent){t.destroyRecursively();return}})}function jo(e,t){Ye("Creating text node:",e);let r=ii("text-node");if(typeof e==="number")e=e.toString();return dr.fromString(t?Zr(e):e,{id:r})}function fd(){let e=ii("slot-node");return Ye("Creating slot node",e),new hr(e)}function Ho(e){Ye("Getting parent of node:",Ue(e));let t=e.parent??void 0;if(t instanceof od)t=t.textParent??void 0;let r=t?.parent?.parent?.parent;if(r instanceof ad&&r.content===t)t=r;return t}var{render:gd,effect:xe,memo:Zt,createComponent:re,createElement:x,createTextNode:me,insertNode:I,insert:H,spread:gm,setProp:h,mergeProps:mm,use:pm}=dd({createElement(e){Ye("Creating element:",e);let t=ii(e),r=Qr(si);if(!r)throw Error("No renderer found");let n=td();if(!n[e])throw Error(`[Reconciler] Unknown component type: ${e}`);let i=new n[e](r,{id:t});if(i instanceof Mo)at(()=>{i.source=void 0});return Ye("Element created with id:",t),i},createTextNode:(e)=>jo(e,!0),createDynamicTextNode:(e)=>jo(e,!1),createSlotNode:fd,replaceText(e,t){if(Ye("Replacing text:",t,"in node:",Ue(e)),!(e instanceof dr))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(ei(e)){if(t==="href"){e.link={url:r};return}if(t==="style"){e.attributes|=nd(r),e.fg=r.fg?Fo(r.fg):e.fg,e.bg=r.bg?Fo(r.bg):e.bg;return}return}switch(t){case"id":Ye("Id mapped",e.id,"=",r),e[t]=r;break;case"focused":if(!(e instanceof id))return;if(r)e.focus();else e.blur();break;case"onChange":let i=void 0;if(e instanceof Go)i=Xs.SELECTION_CHANGED;else if(e instanceof Uo)i=Vs.SELECTION_CHANGED;else if(e instanceof $s)i=$r.CHANGE;if(!i)break;if(r)e.on(i,r);if(n)e.off(i,n);break;case"onInput":if(e instanceof $s){if(r)e.on($r.INPUT,r);if(n)e.off($r.INPUT,n)}break;case"onSubmit":if(e instanceof $s){if(r)e.on($r.ENTER,r);if(n)e.off($r.ENTER,n)}else e[t]=r;break;case"onSelect":if(e instanceof Go){if(r)e.on(Xs.ITEM_SELECTED,r);if(n)e.off(Xs.ITEM_SELECTED,n)}else if(e instanceof Uo){if(r)e.on(Vs.ITEM_SELECTED,r);if(n)e.off(Vs.ITEM_SELECTED,n)}break;case"style":let s=r??{},o=n??{};if(sd(e)&&o.selectionOccupancy&&!s.selectionOccupancy)e.selectionOccupancy=void 0;if(e instanceof Mo)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 dr},insertNode:hd,removeNode:Ad,getParentNode:Ho,getFirstChild(e){Ye("Getting first child of node:",Ue(e));let t=ti(e)[0];if(!t){Ye("No first child found for node:",Ue(e));return}return Ye("First child found:",Ue(t),"for node:",Ue(e)),t},getNextSibling(e){Ye("Getting next sibling of node:",Ue(e));let t=Ho(e);if(!t){Ye("No parent found for node:",Ue(e));return}if(e instanceof hr){let s=e.getSlotChildForRemoval(t);if(s)e=s}let r=ti(t),n=r.indexOf(e);if(n===-1||n===r.length-1){Ye("No next sibling found for node:",Ue(e));return}let i=r[n+1];if(!i){Ye("Next sibling is null for node:",Ue(e));return}return Ye("Next sibling found:",Ue(i),"for node:",Ue(e)),i}});function Ko(e){return e?.getLayoutNode?.()?.constructor}function wd(e){return e?.create?.()??Xo.default.Node.create()}class oi extends md{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 ri extends bd{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 ni extends oi{yogaNode;slotParent;destroyed=!1;yogaNodeConstructor;yogaNodeFreed=!1;constructor(e,t,r){super(e);this._visible=!1,this.slotParent=t,this.yogaNodeConstructor=Ko(r),this.yogaNode=wd(this.yogaNodeConstructor),this.yogaNode.setDisplay(Xo.Display.None)}getLayoutNode(){return this.yogaNode}updateFromLayout(){}updateLayout(){}onRemove(){}isCompatibleWith(e){return this.yogaNodeConstructor===Ko(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 hr extends oi{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 pd(e)||e instanceof yd}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 ri(`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 ni(`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 ri&&this.getTextNodeForParent(e)===t)this.textNodesByParent.delete(e),t.disposeWithoutSlotCascade();if(r&&t instanceof ni&&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()}}Vr({time_to_first_draw:_d});var vd=(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=gd(()=>re(si.Provider,{get value(){return e},get children(){return re(t,{})}}),e.root)}finally{s=!1,e.destroy=a}if(n)l();if(o)a()},ai=async(e,t={})=>{let r=t instanceof Mu?t:await Fu({...t,onDestroy:()=>{t.onDestroy?.()}});Gu.attach(r),vd(r,e)};var Vo={tier0:32,tier1:64,tier2:64};var gr=1;function lt(e){if(typeof e!=="number"||!Number.isFinite(e))return 1;return Math.max(1,Math.min(8,Math.round(e)))}function li(e,t){let r=lt(e);return{primary:r,mirrored:t?r-1:0}}var ci=64;var Bm=ci*ci;var Pm=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 ui={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 Sd=["positionX","positionY","positionZ","rotationX","rotationY","rotationZ","scaleX","scaleY","scaleZ"];var Id=new Set(Sd);function mr(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function zo(e,t){if(!mr(e))return[`${t} must be an object`];let r=[];for(let[n,i]of Object.entries(e)){if(!Id.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 ea(e){if(!mr(e))return["Animation catalog must be an object"];let t=[];if(e.version!==1)t.push("Animation catalog version must be 1");if(!mr(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(!mr(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(!mr(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(...zo(n.model,`${i}.model`));if(n.roles!==void 0)if(!mr(n.roles))t.push(`${i}.roles must be an object`);else for(let[s,o]of Object.entries(n.roles))t.push(...zo(o,`${i}.roles.${s}`))}return t}var qo=ea(ui);if(qo.length>0)throw Error(`Invalid character animation catalog:
8
+ ${qo.join(`
9
+ `)}`);var xd=ui,kd=["jump","frontFlip","horseWalk","swim"],Rd=Object.keys(xd.clips).filter((e)=>!kd.includes(e));var ra=["top","side","bottom"],na=["left","right","bottom","top","back","front"],sa=["humanoid","female","pig","robot","dog","cat","horse","bird","octopus"],Qn=["leftLeg","rightLeg","leftArm","rightArm","leftLegFoot","rightLegFoot","leftArmFoot","rightArmFoot","leftSleeve","rightSleeve"],ia=["leftWing","rightWing","carried","muzzle"];var Ym=new Set(sa),Qm=new Set([...Qn,...ia]),Jm=new Set(ra),Zm=new Set(na),$m=["cree","per"].join(""),zr=["H","oof"].join(""),Xm=new Map([[`leftLeg${zr}`,"leftLegFoot"],[`rightLeg${zr}`,"rightLegFoot"],[`leftArm${zr}`,"leftArmFoot"],[`rightArm${zr}`,"rightArmFoot"]]),Vm=["horse",zr].join("");var Od=Math.PI*2;var tp=new Set(Qn);var oa={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 aa(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 di(e,t){let r=aa(t);return e.filter((n)=>r.has(n))}var Nd=/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,Dd=/^([+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?)(deg|grad|rad|turn)?$/i,Zn=(e,t,r)=>Math.max(t,Math.min(r,e));function $n(e){let t=e.trim(),r=t.endsWith("%"),n=r?t.slice(0,-1):t;if(!Nd.test(n))return null;let i=Number(n);return Number.isFinite(i)?{value:i,percentage:r}:null}function ca(e){if(e===null)return 1;let t=$n(e);if(!t)return null;return Zn(t.percentage?t.value/100:t.value,0,1)}function ua(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 Ld(e){let t=Dd.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 qr(e){let t=ua(e,["hsl","hsla"]);if(!t)return null;let r=Ld(t.channels[0]),n=$n(t.channels[1]),i=$n(t.channels[2]),s=ca(t.alpha);if(r===null||!n||!i||s===null)return null;return[r,Zn(n.value,0,100),Zn(i.value,0,100),s]}function da(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 ha({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 $t({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 la=(e,t)=>{let r=Math.max(-100,Math.min(100,t))/100;return r>=0?e+(100-e)*r:e*(1+r)};var Jn=(e)=>{let t=Math.round(e*1000)/1000;return String(Object.is(t,-0)?0:t)};function hi(e,t,r){if(t===0&&r===0)return e;let n=qr(e),i=n?null:Nt(e);if(!n&&!i)return e;let s=n?{h:n[0],s:n[1],l:n[2]}:ha(i),o=s.s===0?0:la(s.s,t),a=la(s.l,r),l=n?.[3]??i?.a??1;return`hsla(${Jn(s.h)}, ${Jn(o)}%, ${Jn(a)}%, ${Jn(l)})`}function st(e){return typeof e==="number"&&Number.isInteger(e)&&e>=-100&&e<=100?e:0}function en(e,t,r){let n=st(t),i=st(r);if(n===0&&i===0)return e;return e.map((s)=>hi(s,n,i))}function Xt(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=hi(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 Md(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 Fd(e){let t=ua(e,["rgb","rgba"]);if(!t)return null;let r=t.channels.map($n),n=ca(t.alpha);if(r.some((l)=>l===null)||n===null)return null;let[i,s,o]=r,a=(l)=>Zn(l.percentage?l.value/100*255:l.value,0,255);return{r:a(i),g:a(s),b:a(o),a:n}}function Nt(e){let t=e.trim(),r=Md(t);if(r)return r;let n=qr(t);if(n)return{...da(n[0],n[1],n[2]),a:n[3]};let i=Fd(t);if(i)return i;let s=oa[t.toLowerCase()];if(!s)return null;return{r:s[0],g:s[1],b:s[2],a:s[3]??1}}function tn(e){let t=Nt(e);return t?{r:t.r,g:t.g,b:t.b}:null}var Xn=1;var Ai=30;function rn(e){return e.trim().slice(0,30)}var Vn=0.16,fi=0.1;var nn=0.15,gi=0.12;var sn=0.25;function pr(...e){let t=Math.max(0,Math.min(...e));return Math.max(0.22,t*0.5)}var Qe=64,mi=Qe*Qe;var pi=64,fa=512,xp=fa*fa,Kd=128,pa=65535,Wd=20,Yd=/^#(?:[\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/i,Qd=/^[a-z]+$/i,Jd=/^(?:rgb|rgba|hsl|hsla)\([\d\s.,%+\-/e]*(?:(?:deg|grad|rad|turn)[\d\s.,%+\-/e]*)?\)$/i;function ba(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function br(e,t,r){return Number.isInteger(e)&&Number(e)>=t&&Number(e)<=r}function ft(e){if(typeof e!=="string"||e.length===0||e.length>Kd)return!1;return Yd.test(e)||Qd.test(e)||Jd.test(e)}function Zd(e){return ba(e)&&e.v===2}function ga(e,t){return e===void 0||Array.isArray(e)&&e.length<=t&&e.every((r)=>br(r,0,t-1))}function ma(e,t,r){return e===void 0||Array.isArray(e)&&e.length===t&&e.every((n)=>br(n,0,r))}function $d(e,t,r){let{w:n,h:i,palette:s,cells:o,activeNoColor:a,tiles:l,depths:c,mirrorZ:u}=e;if(!br(n,0,t)||!br(i,0,t))return!1;let d=n*i;return d<=r&&Array.isArray(s)&&s.length<=d&&s.every(ft)&&Array.isArray(o)&&o.length===d&&o.every((A)=>br(A,0,s.length))&&ga(a,d)&&ma(l,d,pa+1)&&ma(c,d,Wd)&&ga(u,d)}function Xd(e){if(!ba(e)||typeof e.active!=="boolean")return!1;if(e.color!==null&&!ft(e.color))return!1;if(e.tileIndex!==void 0&&e.tileIndex!==null&&!br(e.tileIndex,0,pa))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 Vd(e){if(e.length>Qe)return null;let t=0,r=[];for(let n of e){if(!Array.isArray(n)||n.length>Qe)return null;if(t+=n.length,t>mi||!n.every(Xd))return null;r.push(n.map((i)=>({active:i.active,color:i.color,...i.tileIndex!=null?{tileIndex:i.tileIndex}:{},...lt(i.depth)>gr?{depth:lt(i.depth)}:{},...i.mirrorZ?{mirrorZ:!0}:{}})))}return r}function yr(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 g=0;g<r;g++){let f=A?.[g],y=d*r+g;if(!f)continue;if(f.color){let C=i.get(f.color);if(C===void 0)n.push(f.color),C=n.length,i.set(f.color,C);s[y]=C}else if(f.active)o.push(y);if(f.tileIndex!=null)a??=Array(r*t).fill(0),a[y]=f.tileIndex+1;let b=lt(f.depth);if(b>gr)l??=Array(r*t).fill(0),l[y]=b;if(f.mirrorZ)c.push(y)}}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 on(e){if(Zd(e))return $d(e,Qe,mi)?zd(e):[];return Array.isArray(e)?Vd(e)??[]:[]}function zd(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 g=0;g<t;g++){let f=d*t+g,y=i[f];if(y>0)A[g]={active:!0,color:n[y-1]??null};else if(l?.has(f))A[g]={active:!0,color:null};else A[g]={active:!1,color:null};let b=o?.[f];if(b)A[g].tileIndex=b-1;let C=lt(a?.[f]);if(C>gr)A[g].depth=C;if(c?.has(f))A[g].mirrorZ=!0}u[d]=A}return u}var qd={top:0,side:1,bottom:2};var eh=/^data:image\/(?:png|gif|webp);base64,[a-z\d+/=]+$/i;var th=/^[\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 bi(e,t){return Number.isInteger(e)&&Number(e)>0&&Number(e)<=t}function rh(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 nh(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 yi(e){if(!e||e.v!==2&&e.v!==3)return!1;if(!rh(e.name)||!bi(e.tileSize,64)||!bi(e.cols,256)||!bi(e.rows,256))return!1;if(e.faceLayout!==void 0&&e.faceLayout!=="top-side-bottom")return!1;if(!nh(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 sh(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"||!th.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 wi(e){if(!yi(e))return null;if(e.v===2)return e.imageDataUrl.length<=16777216&&eh.test(e.imageDataUrl)?e.imageDataUrl:null;if(e.v===3)return sh(e.url,e.path);return null}function an(e,t,r="top"){if(!yi(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?qd[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 _i(e){if(!yi(e))return null;return{width:e.cols*e.tileSize*(e.faceLayout?3:1),height:e.rows*e.tileSize}}function ih(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 Vt={corners:[[0,0,1],[1,0,1],[1,1,1],[0,1,1]],shade:1},ln={corners:[[0,1,1],[0,1,0],[1,1,0],[1,1,1]],shade:0.97},wr={corners:[[1,0,1],[1,0,0],[1,1,0],[1,1,1]],shade:0.94},zt=0.5,oh=0.75,ah="rgba(0, 0, 0, 0.16)",lh=0.92,ch="#92929a";function uh(e){if(!Number.isFinite(e))return zt;return Math.max(0,Math.min(1,e))}function ya(e,t){if(t<zt){let n=t/zt,i=e*oh;return i+(e-i)*n}let r=(t-zt)/(1-zt);return e+(1-e)*r}function ce(e){return e.toFixed(2)}function Et(e){return e.replaceAll("&","&amp;").replaceAll('"',"&quot;").replaceAll("'","&apos;").replaceAll("<","&lt;").replaceAll(">","&gt;")}function wa(e){return`${ce(e[0])},${ce(e[1])}`}function dh([e,t]){let r=wa(e),n=wa(t);return r<n?`${r} ${n}`:`${n} ${r}`}function _a(e,t){return`<polygon points="${e.map(([n,i])=>`${ce(n)},${ce(i)}`).join(" ")}" fill="${Et(t)}"/>`}function va(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 hh(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=va(s,o,t),c=va(s,a,t);n+=`${i===0?"M":"L"}${ce(l[0])},${ce(l[1])}`,n+=`Q${ce(s[0])},${ce(s[1])} ${ce(c[0])},${ce(c[1])}`}return`${n}Z`}function Ca(e,t,r,n){return`<path d="${e}" fill="${Et(t)}" stroke="${Et(r)}" stroke-width="${ce(n)}" stroke-linejoin="round"/>`}function Ah(e,t){if(e.length===0)return"";return`<path d="${e.map(([n,i])=>`M${ce(n[0])},${ce(n[1])}L${ce(i[0])},${ce(i[1])}`).join("")}" fill="none" stroke="${Et(t)}" stroke-width="1" stroke-linejoin="round" vector-effect="non-scaling-stroke"/>`}function vi(e){let{grid:t,numCols:r,numRows:n,scale:i=16,showGridLines:s=!1,sideLighting:o=zt,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,g=s&&d!=="jelly"?ah:void 0,f=uh(o),y=wi(l),b=l&&y?l:null,C=_i(b),_=C?.width??0,S=C?.height??0,v=y&&c&&/^[a-z_][\w:.-]{0,127}$/i.test(c)?c:null,w=y?v??ih(y):"",m=u||!v,P=t.slice(0,Qe),O=Math.min(Number.isInteger(n)&&n>0?n:0,P.length,Qe),U=P.reduce((p,R)=>Math.max(p,Array.isArray(R)?R.length:0),0),k=Math.min(Number.isInteger(r)&&r>0?r:0,U,Qe),T=A,q=A/Math.sqrt(3),ee=A*2/Math.sqrt(3),X=d==="jelly"?T*Vn:0,ae=(p)=>p?.tileIndex!=null?an(b,p.tileIndex):null,se=(p)=>{if(ft(p?.color))return p.color;return ae(p)?ch:null},ie=(p,R,ne)=>[(p-R)*T,(p+R)*q-ne*ee],He=(p,R)=>{let ne=t[R]?.[p];return ne?.active&&se(ne)?lt(ne.depth):0},J=[];for(let p=0;p<O;p++)for(let R=0;R<k;R++){let ne=t[p]?.[R],Ae=se(ne);if(ne?.active&&Ae)J.push({x:R,y:p,color:Ae,tileIndex:ne.tileIndex??null,depth:lt(ne.depth),mirrorZ:!!ne.mirrorZ})}if(J.length===0)return'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 0 0"/>';J.sort((p,R)=>p.x+p.y-(R.x+R.y)||p.depth-R.depth);let L=[],De=1/0,Te=-1/0,ze=1/0,D=-1/0,M=!1,ue=ya(wr.shade,f),pe=ya(ln.shade,f),Be=(p)=>p===Vt?p.shade:p===wr?ue:pe,ge=(p,R)=>{if(p<De)De=p;if(p>Te)Te=p;if(R<ze)ze=R;if(R>D)D=R};for(let{x:p,y:R,color:ne,tileIndex:Ae,depth:_e,mirrorZ:z}of J){let be=qr(ne),fe=[],Oe=[],{primary:Y,mirrored:Ft}=li(_e,z),Se=(de)=>be?`hsla(${be[0]}, ${be[1]}%, ${Math.max(0,Math.min(100,be[2]*de))}%, ${be[3]})`:ne,K=(de,ve=0,Me=Y)=>de.corners.map(([Ce,he,te])=>ie(p+Ce,R+he,te===0?ve:Me)),Ke=(de,ve=0,Me=Y)=>{let Ce=K(de,ve,Me);if(X>0){let he=Be(de),te=Se(he),oe=hh(Ce,X),Ne=de===Vt?Se(Math.min(1.18,he+0.13)):Se(he*lh);fe.push(Ca(oe,te,te,X),Ca(oe,"none",Ne,X*0.3))}else fe.push(_a(Ce,Se(Be(de))));for(let[he,te]of Ce)ge(he,te)},Pe=z?-Ft:He(p+1,R),B=z?-Ft:He(p,R+1),ot=a&&!z?0:Pe,mt=a&&!z?0:B,Gt=a||z||ot<Y,Ut=a||z||mt<Y;if(Gt)Ke(wr,ot,Y);if(Ut)Ke(ln,mt,Y);if(Ke(Vt,Y,Y),g){let de=new Set,ve=(te,oe)=>{let Ne=dh([te,oe]);if(de.has(Ne))return;de.add(Ne),Oe.push([te,oe])},Me=(te)=>{for(let oe=0;oe<te.length;oe++)ve(te[oe],te[(oe+1)%te.length])},Ce=(te,oe)=>{let[Ne,Fe]=te.corners.filter(([,,Ie])=>Ie===0);for(let Ie=Math.floor(oe)+1;Ie<Y;Ie++)ve(ie(p+Ne[0],R+Ne[1],Ie),ie(p+Fe[0],R+Fe[1],Ie))},he=K(Vt,Y,Y);if(ve(he[0],he[1]),He(p+1,R)!==Y)ve(he[1],he[2]);if(He(p,R+1)!==Y)ve(he[2],he[3]);if(ve(he[3],he[0]),z||Pe<Y)Me(K(wr,Pe,Y)),Ce(wr,Pe);if(z||B<Y)Me(K(ln,B,Y)),Ce(ln,B)}let jt=Ae==null?null:an(b,Ae);if(jt){M=!0;let de=(Ce,he,te,oe,Ne,Fe,Ie,Ze)=>{let $e=an(b,Ae,Ce);if(!$e)return;let ut=1-Ze;fe.push(`<g transform="matrix(${he} ${te} ${oe} ${Ne} ${ce(Fe)} ${ce(Ie)})"><svg x="0" y="0" width="1" height="1" viewBox="${$e.sx} ${$e.sy} ${$e.tileSize} ${$e.tileSize}" preserveAspectRatio="none"><use href="#${w}" xlink:href="#${w}"/></svg>`+(ut>0?`<rect x="0" y="0" width="1" height="1" fill="#000" opacity="${ut.toFixed(2)}"/>`:"")+"</g>")};if(Gt){let[Ce,he]=ie(p+1,R,Y);de("side",-T,q,0,ee*(Y-ot),Ce,he,Be(wr))}if(Ut){let[Ce,he]=ie(p,R+1,Y);de("side",T,q,0,ee*(Y-mt),Ce,he,Be(ln))}let[ve,Me]=ie(p,R,Y);de("top",T,q,-T,q,ve,Me,Vt.shade)}if(g)fe.push(Ah(Oe,g));if(d!=="normal"&&!jt){if(d==="lego"){let de=Math.SQRT2*nn*T,ve=Math.SQRT2*nn*q,Me=Se(ue),Ce=Se(Vt.shade),he=[[-1,-1],[-1,1],[1,-1],[1,1]];for(let[te,oe]of he){let Ne=p+0.5+te*sn,Fe=R+0.5+oe*sn,[Ie,Ze]=ie(Ne,Fe,Y),[,$e]=ie(Ne,Fe,Y+gi);ge(Ie-de,Ze+ve),ge(Ie+de,$e-ve);let ut='shape-rendering="geometricPrecision"';fe.push(`<ellipse cx="${ce(Ie)}" cy="${ce(Ze)}" rx="${ce(de)}" ry="${ce(ve)}" fill="${Et(Me)}" ${ut}/>`,`<rect x="${ce(Ie-de)}" y="${ce($e)}" width="${ce(de*2)}" height="${ce(Ze-$e)}" fill="${Et(Me)}" ${ut}/>`,`<ellipse cx="${ce(Ie)}" cy="${ce($e)}" rx="${ce(de)}" ry="${ce(ve)}" fill="${Et(Ce)}" ${ut}/>`)}}else if(d==="voxel"){let de=(te,oe,Ne,Fe,Ie,Ze)=>{let $e=(ut,Dn)=>{for(let[Ln,Mn]of ut)ge(Ln,Mn);fe.push(_a(ut,Se(Dn)))};$e([ie(oe,Ne,Ze),ie(oe,Ne,Ie),ie(oe,Fe,Ie),ie(oe,Fe,Ze)],ue),$e([ie(te,Fe,Ze),ie(te,Fe,Ie),ie(oe,Fe,Ie),ie(oe,Fe,Ze)],pe),$e([ie(te,Ne,Ze),ie(oe,Ne,Ze),ie(oe,Fe,Ze),ie(te,Fe,Ze)],Vt.shade)},ve=fi,Me=pr(1,1),Ce=z||Pe<Y?Pe:null,he=z||B<Y?B:null;if(de(p+0.5-Me/2,p+0.5+Me/2,R+0.5-Me/2,R+0.5+Me/2,Y,Y+ve),Ce!==null){let te=pr(1,Y-Ce),oe=(Y+Ce)/2;de(p+1,p+1+ve,R+0.5-te/2,R+0.5+te/2,oe-te/2,oe+te/2)}if(he!==null){let te=pr(1,Y-he),oe=(Y+he)/2;de(p+0.5-te/2,p+0.5+te/2,R+1,R+1+ve,oe-te/2,oe+te/2)}}}if(a)L.push(`<g data-color="${Et(ne)}">${fe.join("")}</g>`);else L.push(...fe)}let Le=2+X/2,wt=De-Le,nt=ze-Le,Z=Te-De+Le*2,_t=D-ze+Le*2,G=M&&b&&y&&m?`<defs><image id="${w}" href="${Et(y)}" xlink:href="${Et(y)}" x="0" y="0" width="${_}" 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="${ce(wt)} ${ce(nt)} ${ce(Z)} ${ce(_t)}" shape-rendering="crispEdges">`,G,...L,"</svg>"].join("")}var fh="hsla(278, 100%, 70%, 1)",gh=/hsla\(278, 100%, ([\d.]+)%, 1\)/g,cn=(e)=>vi({grid:[[{active:!0,color:fh}]],numCols:1,numRows:1,blockStyle:e,sideLighting:0.15}).replaceAll(gh,"hsl(var(--block-style-icon-hs, 278 100%) $1% / 1)"),mh=[{style:"normal",label:"Normal",icon:cn("normal")},{style:"voxel",label:"Voxel",icon:cn("voxel")},{style:"lego",label:"Lego",icon:cn("lego")},{style:"jelly",label:"Jelly",icon:cn("jelly")}];var Ve=[{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 bh=16777216,yh=16;function _r(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function wh(e){if(!Array.isArray(e))return[...Ve[0].colors];let t=e.slice(0,yh).flatMap((r)=>{if(typeof r==="string"&&ft(r))return[r];if(_r(r)&&ft(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:[...Ve[0].colors]}function _h(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 vh(e){let t=_r(e)?e:{};return{saturation:st(t.saturation),lightness:st(t.lightness)}}function un(e){if(e.length>bh)throw Error("Draft is too large");let t=JSON.parse(e);if(!_r(t)||t.version!==1)throw Error("Not a Flatblox version-1 draft");let r=on(t.grid),n=t.gridSize===void 0?r.length:t.gridSize;if(!Number.isInteger(n)||Number(n)<1||Number(n)>Qe||r.length!==n||!r.every((o)=>o.length===n))throw Error("Draft contains an invalid grid");let i=wh(t.palette),s=ft(t.activeColor)?t.activeColor:i[0];return{filename:typeof t.filename==="string"?rn(t.filename):"untitled",grid:r,palette:i,activeColor:s,paletteColorAdjustment:vh(t.paletteColorAdjustment),draft:{data:t,activeArtboard:_h(t)}}}function Ch(e,t){let r=Array.isArray(t)?t:[];return e.map((n,i)=>{let s=r[i];if(!_r(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 Eh(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]=_r(s)&&"grid"in s?{...s,grid:t}:t}return{artboards:n,activeArtboard:i}}function dn(e){let t=e.draft?.data,r=yr(e.grid),n=Ch(e.palette,t?.palette),{artboards:i,activeArtboard:s}=Eh(e,r),o=e.paletteColorAdjustment??{saturation:0,lightness:0},a=_r(t?.paletteColorAdjustment)?t.paletteColorAdjustment:{};return JSON.stringify({...t,version:1,grid:r,gridSize:e.grid.length,palette:n,paletteColorAdjustment:{...a,saturation:st(o.saturation),lightness:st(o.lightness)},activeColor:e.activeColor,artboards:i,activeArtboard:s,filename:e.filename,savedAt:new Date().toISOString()},null,2)}var Sa=16,Sh=100;function Ea(e,t,r){return Math.max(t,Math.min(r,e))}function hn(e){return e.map((t)=>t.map((r)=>({...r})))}function Ih(e){return Array.from({length:e},()=>Array.from({length:e},()=>({active:!1,color:null})))}function Ia(e){if(!Number.isInteger(e)||e<1||e>Qe)throw Error(`Grid size must be between 1 and ${Qe}`);return e}function qt(e=Sa){let t=[...Ve[0].colors];return{filename:"untitled",grid:Ih(Ia(e)),palette:t,activeColor:t[0],paletteColorAdjustment:{saturation:0,lightness:0}}}function xh(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 Dt{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=Ia(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:st(e.paletteColorAdjustment?.saturation),lightness:st(e.paletteColorAdjustment?.lightness)},this.draft=e.draft,this.currentGrid=hn(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:Ea(Math.round(e),0,this.size-1),y:Ea(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;let n=hn(this.currentGrid);if(!(r==="fill"?this.fill(e,t):this.paintMirrored(e,t,r==="draw"?this.activeColor:null)))return!1;if(this.undoStack.push({grid:n,id:this.currentId}),this.undoStack.length>Sh)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:hn(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:hn(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:hn(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 xh(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 kh}from"net";var Rh="127.0.0.1",Th=47642,Bh=3000,Oh=32,Ph=1048576,Nh=16384,xa=[0.57,0.57,0.6,1];function Dh(e){if(!e)return[...xa];let t=Nt(e);return t?[t.r/255,t.g/255,t.b/255,t.a]:[...xa]}function Lh(e){if(!e?.active)return{active:!1,color:null,depth:1,mirrorZ:!1};return{active:!0,color:Dh(e.color),depth:lt(e.depth),mirrorZ:!!e.mirrorZ}}function Ra(e,t,r){return{x:t%r,y:Math.floor(t/r),...e}}function Mh(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 Ta(e){let{saturation:t,lightness:r}=e.paletteColorAdjustment??{saturation:0,lightness:0},n=Xt(e.grid,t,r),i=n.length,s=n[0]?.length??0;return Array.from({length:s*i},(o,a)=>Lh(n[Math.floor(a/s)]?.[a%s]))}function Fh(e){let t=e.grid.length,r=e.grid[0]?.length??0,n=Ta(e);return{message:{protocol:Xn,type:"snapshot",columns:r,rows:t,cells:n.flatMap((i,s)=>i.active?[Ra(i,s,r)]:[])},state:n}}function Gh(e,t,r){return t.flatMap((n,i)=>e[i]&&Mh(e[i],n)?[]:[Ra(n,i,r)])}function ka(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 Ci{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=kh){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:Rh,port:Th})}catch(t){let r={state:"error",message:ka(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,ka(t))),e.on("close",()=>this.handleClose(e)),this.connectTimer=setTimeout(()=>{this.fail(e,"Timed out waiting for the Blender add-on.")},Bh),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;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=Ta(e);for(let i of Gh(this.previousGrid,n,r))this.pendingCells.set(i.y*r+i.x,i);if(this.previousGrid=n,this.pendingCells.size>0&&!this.patchTimer)this.patchTimer=setTimeout(()=>this.flushPatch(),Oh)}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)>Nh){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!==Xn){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}=Fh(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.pendingCells.size===0){this.pendingCells.clear();return}let e={protocol:Xn,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>Nh)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 Uh,Renderable as jh,RGBA as Ii}from"@opentui/core";var Ei=new WeakMap;function _r(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 Ei.get(e)??null;let i=n.width/t,s=n.height/r,o=Number.isFinite(i)&&Number.isFinite(s)&&i>0&&s>0?{width:i,height:s}:null;if(o)Ei.set(e,o);return o??Ei.get(e)??null}function zn(e){let t=_r(e);if(!t)return 2;let r=t.height/t.width;return Number.isFinite(r)&&r>=0.5&&r<=4?r:2}function qn(e){if(!_r(e))return!1;let t=e.capabilities;if(!t||t.image_protocol==="blocks")return!1;if(t.image_protocol==="kitty"||t.image_protocol==="sixel")return!0;if(t.multiplexer==="tmux")return!1;return t.kitty_graphics||t.sixel}var Si=Ii.fromInts(14,16,24),Hh={r:30,g:33,b:48,a:1},Kh={r:42,g:46,b:64,a:1};function Wh(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 g=1;g<=a;g++){let f=g*n/2,b=Math.min(A,f),p=Math.abs(Math.log(f/A));if(b>u||b===u&&p<d)l=A,c=g,u=b,d=p}return{sampleCount:s,columnScale:l,subrowScale:c,columns:s*l,subrows:s*c}}function Yh(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))}}function Oa(e,t,r){let n=(t+r)%2===0?Hh:Kh,i=e[r]?.[t],s=i?.active&&i.color?Lt(i.color):null;if(!s)return Ii.fromInts(n.r,n.g,n.b);let o=Math.max(0,Math.min(1,s.a));return Ii.fromInts(Math.round(s.r*o+n.r*(1-o)),Math.round(s.g*o+n.g*(1-o)),Math.round(s.b*o+n.b*(1-o)))}class xi extends jh{currentGrid=[];artworkImage=null;artworkImageKey="";constructor(e,t){super(e,{...t,buffered:!0});if(t.grid)this.currentGrid=t.grid}set grid(e){this.currentGrid=e??[],this.requestRender()}renderSelf(e){e.clear(Si);let t=this.currentGrid.length;if(t===0||this.width<=0||this.height<=0)return;let r=_r(this._ctx);if(r&&qn(this._ctx)){this.drawArtworkImage(e,t,r.width,r.height);return}this.releaseArtworkImage();let n=zn(this._ctx),i=this.height*2,s=Wh(this.width,this.height,t,n),{columns:o,subrows:a}=s,l=Math.floor((this.width-o)/2),c=Math.floor((i-a)/2);for(let u=0;u<this.height;u++){let d=u*2;for(let A=0;A<o;A++){let g=l+A,f=Math.floor(A/s.columnScale),b=Math.min(t-1,Math.floor(f*t/s.sampleCount)),p=[d,d+1].map((C)=>{let w=C-c;if(w<0||w>=a)return Si;let I=Math.floor(w/s.subrowScale),_=Math.min(t-1,Math.floor(I*t/s.sampleCount));return Oa(this.currentGrid,b,_)});e.setCell(g,u,"\u2580",p[0],p[1])}}}drawArtworkImage(e,t,r,n){let i=Yh(this.width,this.height,t,r,n),s=[i.sampleCount,i.side,i.pixelWidth,...this.currentGrid.flatMap((o)=>o.map((a)=>a.active?a.color??"active":""))].join("|");if(!this.artworkImage||s!==this.artworkImageKey){let o=new Uint8Array(i.sampleCount**2*4);for(let d=0;d<i.sampleCount;d++){let A=Math.min(t-1,Math.floor(d*t/i.sampleCount));for(let g=0;g<i.sampleCount;g++){let f=Math.min(t-1,Math.floor(g*t/i.sampleCount)),[b,p,C]=Oa(this.currentGrid,f,A).toInts(),w=(d*i.sampleCount+g)*4;o[w]=b,o[w+1]=p,o[w+2]=C,o[w+3]=255}}let a=Uh.fromRgba(o,i.sampleCount,i.sampleCount),l=a.resize({width:i.side,height:i.side,kernel:"nearest"});a.dispose();let c=i.pixelWidth-i.side,u=c>0?l.extend({left:c,background:Si.toInts()}):l;if(u!==l)l.dispose();this.releaseArtworkImage(),this.artworkImage=u,this.artworkImageKey=s}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.artworkImageKey=""}destroySelf(){this.releaseArtworkImage(),super.destroySelf()}}var es="id, filename, num_cols, num_rows, grid, palette, palette_saturation, palette_lightness, artboards, created_at, updated_at",Pa=16;function Da(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function Na(e,t){let r=sn(e);return r.length===t&&r.every((n)=>n.length===t)?r:null}function La(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 Qh(e){if(!Array.isArray(e))return[];return e.slice(0,pi).flatMap((t,r)=>{if(!Da(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 Jh(e){if(!Array.isArray(e))return[...ze[0].colors];let t=e.filter(mt).slice(0,Pa);return t.length>0?t:[...ze[0].colors]}function ts(e){if(!Da(e))return null;let t=Number(e.num_cols);if(!Number.isInteger(t)||t<1||t>Ye||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=Na(e.grid,t);if(!r)return null;let n=Qh(e.artboards),i=n.findIndex((s)=>{let o=Na(s.grid,t);return o?La(o,r):!1});return{id:e.id,filename:e.filename||"Untitled",size:t,grid:r,palette:Jh(e.palette),paletteSaturation:ot(e.palette_saturation),paletteLightness:ot(e.palette_lightness),artboards:n,activeArtboard:i<0?0:i,createdAt:e.created_at,updatedAt:e.updated_at}}function Ma(e){return Zt(e.grid,e.paletteSaturation,e.paletteLightness)}function Fa(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 $h(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=br(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 Zh(e,t,r=new Date().toISOString()){let n=e.grid.length;if(n<1||n>Ye||!e.grid.every((o)=>o.length===n))throw Error("Artwork grid is invalid");let i=e.palette.filter(mt).slice(0,Pa);if(i.length===0)throw Error("Artwork palette is invalid");let s=br(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 ki{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(es).eq("user_id",this.userId).order("created_at",{ascending:!1});if(t)throw Error(t.message);return(e??[]).flatMap((r)=>{let n=ts(r);return n?[n]:[]})}async createArtwork(e){let t=Zh(e,this.userId),{data:r,error:n}=await this.client.from("pixel_art").insert(t).select(es).single();if(n)throw Error(n.message);let i=ts(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||!La(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=$h(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(es).maybeSingle();if(i)throw Error(i.message);if(!n)return null;let s=ts(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(es).eq("id",e).eq("user_id",this.userId).maybeSingle();if(r)throw Error(r.message);return t?ts(t):null}async signOut(){let{error:e}=await this.client.auth.signOut();if(e)throw Error(e.message);await this.afterSignOut?.()}}Xr({artwork_preview:xi});var vr=[16,32,64],Ua=74,Ga=2,hn=new URL("./flatblox-logo.png",import.meta.url);function Xh(e,t){let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}function ja(e,t){if(e.length<=t)return e;return`${e.slice(0,Math.max(1,t-1))}\u2026`}function Ha(e){let t=en(e);return t?$t(t):"#ffffff"}function Vh(e){return qr(di(e.palette,e.grid),e.paletteSaturation,e.paletteLightness)}function Cr(e){return Math.max(1,Math.min(Ua,e-4))>=64?2:1}function Ri(e){let t=z(()=>Math.max(1,Math.min(Ua,e.width-4))),r=z(()=>Math.max(1,Math.min(19,e.height-2))),n=z(()=>Cr(e.width)),i=z(()=>r()>=12?1:0),s=z(()=>Math.max(1,r()-7-i()*2)),o=z(()=>s()*n()),a=z(()=>{let A=Math.floor(e.selectedPalette/o())*o();return ze.slice(A,A+o()).map((g,f)=>({palette:g,index:A+f}))}),l=z(()=>Xh(a(),n())),c=z(()=>Math.max(1,Math.floor((t()-4-(n()-1))/n()))),u=z(()=>Math.max(3,Math.min(10,c()-8))),d=z(()=>Math.max(1,c()-u()-4));return(()=>{var A=x("box"),g=x("box"),f=x("box"),b=x("text"),p=x("box"),C=x("text"),w=be("Choose a palette | "),I=x("box"),_=x("box"),y=x("text");return S(A,g),h(A,"id","new-artwork-modal"),h(A,"position","absolute"),h(A,"zIndex",30),h(A,"border",!0),h(A,"title"," New artwork "),h(A,"flexDirection","column"),S(g,f),S(g,p),S(g,C),S(g,I),S(g,_),S(g,y),h(g,"flexGrow",1),h(g,"width","100%"),h(g,"padding",1),h(g,"flexDirection","column"),S(f,b),h(f,"height",1),h(f,"flexDirection","row"),h(f,"gap",1),S(b,be("Grid size")),Y(f,ne(Et,{each:vr,children:(m,O)=>{let B=()=>m<=e.maxSize,U=()=>m===e.selectedSize;return(()=>{var R=x("box"),T=x("text"),q=be(" "),ee=be("\xD7");return S(R,T),h(R,"height",1),h(R,"paddingX",1),h(R,"onMouseDown",()=>e.onSelectSize(m)),S(T,q),S(T,ee),Y(T,()=>O()+1,q),Y(T,m,ee),Y(T,m,null),Pe((V)=>{var ae=U()?k.panelActive:k.panel,re=B()?U()?k.accentText:k.muted:k.border;return ae!==V.e&&(V.e=h(R,"backgroundColor",ae,V.e)),re!==V.t&&(V.t=h(T,"fg",re,V.t)),V},{e:void 0,t:void 0}),R})()}}),null),S(C,w),Y(C,()=>ze[e.selectedPalette].name,null),Y(g,ne(Et,{get each(){return l()},children:(m)=>(()=>{var O=x("box");return h(O,"height",1),h(O,"flexDirection","row"),h(O,"gap",1),Y(O,ne(Et,{each:m,children:(B)=>{let U=()=>B.index===e.selectedPalette;return(()=>{var R=x("box"),T=x("text"),q=x("box");return S(R,T),S(R,q),h(R,"height",1),h(R,"paddingX",1),h(R,"flexDirection","row"),h(R,"justifyContent","space-between"),h(R,"onMouseDown",()=>e.onSelectPalette(B.index)),Y(T,()=>ja(B.palette.name,d())),h(q,"height",1),h(q,"flexDirection","row"),Y(q,ne(Et,{get each(){return B.palette.colors.slice(0,u())},children:(ee)=>(()=>{var V=x("text");return S(V,be("\u25A0")),Pe((ae)=>h(V,"fg",Ha(ee),ae)),V})()})),Pe((ee)=>{var V=c(),ae=U()?k.panelActive:k.panel,re=U()?k.text:k.muted;return V!==ee.e&&(ee.e=h(R,"width",V,ee.e)),ae!==ee.t&&(ee.t=h(R,"backgroundColor",ae,ee.t)),re!==ee.a&&(ee.a=h(T,"fg",re,ee.a)),ee},{e:void 0,t:void 0,a:void 0}),R})()}})),O})()}),I),h(_,"flexGrow",1),Y(y,()=>e.message||"1\u20133 size \xB7 arrows palette \xB7 Enter create \xB7 Esc cancel"),Pe((m)=>{var O=Math.max(0,Math.floor((e.width-t())/2)),B=Math.max(0,Math.floor((e.height-r())/2)),U=t(),R=r(),T=k.border,q=k.accent,ee=k.panel,V=k.textPink,ae=i(),re=k.textPink,se=i(),je=e.message?k.warning:k.textPink;return O!==m.e&&(m.e=h(A,"left",O,m.e)),B!==m.t&&(m.t=h(A,"top",B,m.t)),U!==m.a&&(m.a=h(A,"width",U,m.a)),R!==m.o&&(m.o=h(A,"height",R,m.o)),T!==m.i&&(m.i=h(A,"borderColor",T,m.i)),q!==m.n&&(m.n=h(A,"titleColor",q,m.n)),ee!==m.s&&(m.s=h(g,"backgroundColor",ee,m.s)),V!==m.h&&(m.h=h(b,"fg",V,m.h)),ae!==m.r&&(m.r=h(p,"height",ae,m.r)),re!==m.d&&(m.d=h(C,"fg",re,m.d)),se!==m.l&&(m.l=h(I,"height",se,m.l)),je!==m.u&&(m.u=h(y,"fg",je,m.u)),m},{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}),A})()}function Ti(e){let t=Dt(),r=hr(),[n,i]=X([]),[s,o]=X(0),[a,l]=X(!0),[c,u]=X("Loading saved artworks\u2026"),[d,A]=X(null),[g,f]=X(!1),[b,p]=X(16),[C,w]=X(0),[I,_]=X(""),y=z(()=>{let P=Math.max(8,r().width-2);return Math.min(28,P,Math.max(12,Math.floor(P/3)))}),m=z(()=>{let P=r().height<18?7:r().height<25?9:12;return Math.max(4,Math.min(P,r().height-6))}),O=z(()=>Math.max(1,Math.floor((r().width-2)/(y()+Ga)))),B=z(()=>O()*y()+Math.max(0,O()-1)*Ga),U=z(()=>Math.max(1,Math.floor((r().height-5)/(m()+1)))),R=z(()=>O()*U()),T=z(()=>Math.floor(s()/R())),q=z(()=>T()*R()),ee=z(()=>{let P=q();return n().slice(P,P+R())});Hn(()=>{let P=Math.max(0,n().length-1);if(s()>P)o(P)});let V=async()=>{l(!0),u("Loading saved artworks\u2026");try{let P=await e.repository.listArtworks();i(P),u(P.length===0?"No saved artworks yet":`${P.length} saved artwork${P.length===1?"":"s"}`)}catch(P){u(`Load failed: ${P instanceof Error?P.message:String(P)}`)}finally{l(!1)}};Wr(()=>void V());let ae=(P,G)=>{let ie=n().length;if(ie===0)return;let me=Math.max(0,Math.min(ie-1,s()+P+G*O()));o(me),u(n()[me].filename)},re=()=>{let P=n()[s()];if(!P)return;A({artwork:P,session:new Mt(Fa(P))})},se=()=>{p(16),w(0),_(""),f(!0),u("Choose a size and palette")},je=()=>{f(!1),_(""),u("New artwork cancelled")},J=(P)=>{if(P>e.repository.maxCanvasSize){_(`${P}\xD7${P} is unavailable on this plan`);return}p(P),_("")},L=(P)=>{w((G)=>Math.max(0,Math.min(ze.length-1,G+P))),_("")},Ie=()=>{let P=zt(b()),G=ze[C()];P.palette=[...G.colors],P.activeColor=P.palette[0],f(!1),A({artwork:null,session:new Mt(P)})},it=async(P)=>{let G=d();if(!G)throw Error("No artwork is open");let ie=G.artwork?await e.repository.saveArtwork(G.artwork,P):await e.repository.createArtwork(P);if(i((me)=>me.some((fe)=>fe.id===ie.id)?me.map((fe)=>fe.id===ie.id?ie:fe):[ie,...me]),!G.artwork)o(0);return A((me)=>me===G?{...me,artwork:ie}:me),e.variant==="local"?"Saved locally":"Saved to Flatblox cloud"},He=async()=>{u("Signing out\u2026");try{await e.repository.signOut(),t.destroy()}catch(P){u(`Sign out failed: ${P instanceof Error?P.message:String(P)}`)}};return Ar((P)=>{if(P.eventType==="release"||d())return;let G=P.name.toLowerCase();if(g()){let ie=Number(G)-1;if(G==="escape")je();else if(Number.isInteger(ie)&&vr[ie])J(vr[ie]);else if(G==="left"||G==="h")L(-1);else if(G==="right"||G==="l")L(1);else if(G==="up"||G==="k")L(-Cr(r().width));else if(G==="down"||G==="j")L(Cr(r().width));else if(G==="return"||G==="enter"||G==="space"||P.sequence===" ")Ie();return}if(P.ctrl&&G==="c")t.destroy();else if(G==="escape"&&e.onBack)e.onBack();else if(G==="q"||G==="escape")t.destroy();else if(G==="left"||G==="h")ae(-1,0);else if(G==="right"||G==="l")ae(1,0);else if(G==="up"||G==="k")ae(0,-1);else if(G==="down"||G==="j")ae(0,1);else if(G==="n")se();else if(G==="return"||G==="enter"||G==="space"||P.sequence===" ")re();else if(G==="r")V();else if(G==="o"&&e.variant!=="local")He()}),ne(gt,{get when(){return d()},get fallback(){return(()=>{var P=x("box"),G=x("box"),ie=x("box"),me=x("text"),Je=x("b"),fe=x("box"),Oe=x("image"),qe=x("box"),Ot=x("text"),et=x("box"),Z=x("box"),F=x("text"),v=x("text");return S(P,G),S(P,et),S(P,Z),h(P,"width","100%"),h(P,"height","100%"),h(P,"flexDirection","column"),S(G,ie),S(G,fe),S(G,qe),h(G,"height",3),h(G,"paddingY",1),h(G,"paddingX",1),h(G,"flexDirection","row"),S(ie,me),h(ie,"height",1),h(ie,"flexBasis",0),h(ie,"flexGrow",1),h(ie,"flexDirection","row"),S(me,Je),Y(Je,()=>e.variant==="local"?"LOCAL ARTWORKS":"DASHBOARD"),S(fe,Oe),h(fe,"height",1),h(fe,"flexBasis",0),h(fe,"flexGrow",1),h(fe,"flexDirection","row"),h(fe,"justifyContent","center"),h(Oe,"id","dashboard-wordmark"),h(Oe,"source",hn),h(Oe,"width",14),h(Oe,"height",1),h(Oe,"fit","cover"),S(qe,Ot),h(qe,"height",1),h(qe,"flexBasis",0),h(qe,"flexGrow",1),h(qe,"flexDirection","row"),h(qe,"justifyContent","flex-end"),Y(Ot,()=>e.repository.username),h(et,"id","dashboard-content"),h(et,"flexGrow",1),h(et,"flexDirection","column"),h(et,"justifyContent","center"),h(et,"padding",1),Y(et,ne(gt,{get when(){return Jt(()=>!a())()&&n().length>0},get fallback(){return(()=>{var E=x("box"),Q=x("text");return S(E,Q),h(E,"flexGrow",1),h(E,"alignItems","center"),h(E,"justifyContent","center"),Y(Q,c),Pe((Ae)=>h(Q,"fg",k.muted,Ae)),E})()},get children(){var E=x("box");return h(E,"id","artwork-grid"),h(E,"alignSelf","center"),h(E,"flexDirection","row"),h(E,"flexWrap","wrap"),h(E,"rowGap",1),h(E,"columnGap",2),Y(E,ne(Et,{get each(){return ee()},children:(Q,Ae)=>{let _e=()=>q()+Ae(),ye=()=>s()===_e();return(()=>{var le=x("box"),ge=x("box"),Ce=x("box"),W=x("artwork_preview"),$e=x("box"),lt=x("text"),De=x("text"),H=x("text"),Te=x("box"),Be=x("box");return S(le,ge),S(le,De),S(le,H),S(le,Te),S(le,Be),h(le,"flexDirection","column"),h(le,"onMouseDown",()=>o(_e())),S(ge,Ce),h(ge,"width","100%"),h(ge,"height","100%"),h(ge,"border",!0),h(ge,"borderColor","transparent"),h(ge,"flexDirection","column"),S(Ce,W),S(Ce,$e),S(Ce,lt),h(Ce,"flexGrow",1),h(Ce,"width","100%"),h(Ce,"flexDirection","column"),h(Ce,"paddingX",1),h(W,"flexGrow",1),h(W,"width","100%"),h($e,"height",1),h($e,"width","100%"),h($e,"flexDirection","row"),h($e,"gap",1),h($e,"overflow","hidden"),Y($e,ne(Et,{get each(){return Vh(Q)},children:(N)=>(()=>{var ct=x("text");return S(ct,be("\u2B24")),Pe((vt)=>h(ct,"fg",Ha(N),vt)),ct})()})),Y(lt,()=>ja(Q.filename,y()-3)),h(De,"position","absolute"),h(De,"left",1),h(De,"top",0),h(De,"height",1),h(De,"zIndex",1),Y(De,()=>"\u2580".repeat(y()-2)),h(H,"position","absolute"),h(H,"left",1),h(H,"height",1),h(H,"zIndex",1),Y(H,()=>"\u2584".repeat(y()-2)),h(Te,"position","absolute"),h(Te,"left",0),h(Te,"top",0),h(Te,"width",1),h(Te,"height","100%"),h(Te,"zIndex",2),h(Be,"position","absolute"),h(Be,"top",0),h(Be,"width",1),h(Be,"height","100%"),h(Be,"zIndex",2),Pe((N)=>{var ct=`artwork-card-${Q.id}`,vt=y(),Ut=m(),jt=k.card,de=k.card,pe=k.panel,Le=`artwork-preview-${Q.id}`,Ee=Ma(Q),he=k.textPink,te=`artwork-card-selection-top-${Q.id}`,oe=y()-2,Ne=ye()?k.orangeActive:k.card,Me=k.panel,xe=`artwork-card-selection-bottom-${Q.id}`,Ze=m()-1,Xe=y()-2,ht=ye()?k.orangeActive:k.card,Dn=k.panel,Ln=`artwork-card-selection-side-${Q.id}`,Mn=ye()?k.orangeActive:k.card,uo=y()-1,ho=ye()?k.orangeActive:k.card;return ct!==N.e&&(N.e=h(le,"id",ct,N.e)),vt!==N.t&&(N.t=h(le,"width",vt,N.t)),Ut!==N.a&&(N.a=h(le,"height",Ut,N.a)),jt!==N.o&&(N.o=h(le,"backgroundColor",jt,N.o)),de!==N.i&&(N.i=h(ge,"backgroundColor",de,N.i)),pe!==N.n&&(N.n=h(Ce,"backgroundColor",pe,N.n)),Le!==N.s&&(N.s=h(W,"id",Le,N.s)),Ee!==N.h&&(N.h=h(W,"grid",Ee,N.h)),he!==N.r&&(N.r=h(lt,"fg",he,N.r)),te!==N.d&&(N.d=h(De,"id",te,N.d)),oe!==N.l&&(N.l=h(De,"width",oe,N.l)),Ne!==N.u&&(N.u=h(De,"fg",Ne,N.u)),Me!==N.c&&(N.c=h(De,"bg",Me,N.c)),xe!==N.w&&(N.w=h(H,"id",xe,N.w)),Ze!==N.m&&(N.m=h(H,"top",Ze,N.m)),Xe!==N.f&&(N.f=h(H,"width",Xe,N.f)),ht!==N.y&&(N.y=h(H,"fg",ht,N.y)),Dn!==N.g&&(N.g=h(H,"bg",Dn,N.g)),Ln!==N.p&&(N.p=h(Te,"id",Ln,N.p)),Mn!==N.b&&(N.b=h(Te,"backgroundColor",Mn,N.b)),uo!==N.T&&(N.T=h(Be,"left",uo,N.T)),ho!==N.A&&(N.A=h(Be,"backgroundColor",ho,N.A)),N},{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}),le})()}})),Pe((Q)=>h(E,"width",B(),Q)),E}})),S(Z,F),S(Z,v),h(Z,"height",1),h(Z,"paddingX",1),h(Z,"flexDirection","row"),h(Z,"justifyContent","space-between"),Y(F,c),Y(v,()=>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"),Y(P,ne(gt,{get when(){return g()},get children(){return ne(Ri,{get width(){return r().width},get height(){return r().height},get selectedPalette(){return C()},get selectedSize(){return b()},get maxSize(){return e.repository.maxCanvasSize},get message(){return I()},onSelectPalette:(E)=>{w(E),_("")},onSelectSize:J})}}),null),Pe((E)=>{var Q=k.background,Ae=k.panel,_e=k.accentText,ye=k.muted,le=k.panel,ge=k.panelActive,Ce=c().startsWith("Load failed")?k.warning:k.textPink,W=k.muted;return Q!==E.e&&(E.e=h(P,"backgroundColor",Q,E.e)),Ae!==E.t&&(E.t=h(G,"backgroundColor",Ae,E.t)),_e!==E.a&&(E.a=h(me,"fg",_e,E.a)),ye!==E.o&&(E.o=h(Ot,"fg",ye,E.o)),le!==E.i&&(E.i=h(et,"backgroundColor",le,E.i)),ge!==E.n&&(E.n=h(Z,"backgroundColor",ge,E.n)),Ce!==E.s&&(E.s=h(F,"fg",Ce,E.s)),W!==E.h&&(E.h=h(v,"fg",W,E.h)),E},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),P})()},children:(P)=>ne(Er,{get session(){return P().session},saveDocument:it,get promptForFilenameOnSave(){return!P().artwork},onBack:()=>{A(null),u("Returned from editor")}})})}import{MouseButton as Bi,NativeImage as Ka,Renderable as zh,RGBA as Sr,TextAttributes as Wa}from"@opentui/core";var rs=Sr.fromInts(19,14,21),Ya=Sr.fromInts(32,24,36),Oi=4,qh={r:30,g:33,b:48,a:1},eA={r:42,g:46,b:64,a:1},tA=Sr.fromInts(255,255,255),rA=Sr.fromInts(8,10,16),nA=0.25,ns=512,Qa=16384,sA=25000000;function iA(e,t){return(e+t)%2===0?qh:eA}function oA(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 Ni(e,t,r){let n=iA(t,r),i=e?.active&&e.color?Lt(e.color):null,s=i?oA(i,n):n;return Sr.fromInts(s.r,s.g,s.b)}function Pi(e){let[t,r,n]=e.toInts(),i=(0.2126*t+0.7152*r+0.0722*n)/255,[s,o,a]=i>0.55?rA.toInts():tA.toInts(),l=(c,u)=>Math.round(c+(u-c)*nA);return Sr.fromInts(l(t,s),l(r,o),l(n,a))}function Ja(e,t,r){return Math.max(0,Math.min(r-t,e-Math.floor(t/2)))}function aA(e,t){let r=Math.ceil(e/ns)*ns,n=Math.ceil(t/ns)*ns;if(r>Qa||n>Qa||r*n>sA)return null;return{width:r,height:n}}function lA(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 cA(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 Di extends zh{artworkImage=null;artworkImageKey="";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}renderSelf(e){e.clear(rs);let t=this.currentModel.grid.length;if(t===0||this.width<=0||this.height<=0){this.viewport.columns=0,this.viewport.pixelRows=0;return}let r=zn(this._ctx),n=_r(this._ctx),i=n&&qn(this._ctx)?cA(this.width,this.height,t,this.currentModel.zoom,n.width,n.height):null,s=i??lA(this.width,this.height,t,this.currentModel.zoom,r),{columns:o,pixelRows:a}=s;if(o===0||a===0){this.viewport.columns=0,this.viewport.pixelRows=0,this.viewport.columnZoom=s.columnZoom,this.viewport.subrowZoom=s.subrowZoom,this.viewport.renderedSubrows=0;return}let{renderedColumns:l,renderedSubrows:c,terminalRows:u}=s,d=Ja(this.currentModel.cursor.x,o,t),A=Ja(this.currentModel.cursor.y,a,t),g=Math.floor((this.width-l)/2),f=Math.floor((this.height-u)/2);if(i&&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:d,startY:A,columns:o,pixelRows:a,columnZoom:s.columnZoom,subrowZoom:s.subrowZoom,renderedSubrows:c},i){this.drawArtworkImage(e,i,g,f,d,A);return}this.releaseArtworkImage();for(let b=0;b<u;b++){let p=b*2,C=p+1,w=A+Math.floor(p/s.subrowZoom),I=A+Math.floor(C/s.subrowZoom);for(let _=0;_<l;_++){let y=d+Math.floor(_/s.columnZoom),m=Ni(this.currentModel.grid[w]?.[y],y,w),O=C<c&&I<t?Ni(this.currentModel.grid[I]?.[y],y,I):rs,B=this.currentModel.cursor,U=B.x===y&&B.y===w,R=B.x===y&&B.y===I;e.setCell(g+_,f+b,"\u2580",U?Pi(m):m,R?Pi(O):O)}}}drawArtworkImage(e,t,r,n,i,s){let o=this.currentModel.cursor,a=[];for(let c=s;c<s+t.pixelRows;c++)for(let u=i;u<i+t.columns;u++){let d=this.currentModel.grid[c]?.[u];a.push(d?.active?d.color??"active":"")}let l=[t.columns,t.pixelRows,t.pixelWidth,t.pixelHeight,i,s,o.x,o.y,...a].join("|");if(!this.artworkImage||l!==this.artworkImageKey){let c=new Uint8Array(t.columns*t.pixelRows*4);for(let A=0;A<t.pixelRows;A++){let g=s+A;for(let f=0;f<t.columns;f++){let b=i+f,p=Ni(this.currentModel.grid[g]?.[b],b,g);if(o.x===b&&o.y===g)p=Pi(p);let[C,w,I]=p.toInts(),_=(A*t.columns+f)*4;c[_]=C,c[_+1]=w,c[_+2]=I,c[_+3]=255}}let u=Ka.fromRgba(c,t.columns,t.pixelRows),d=u.resize({width:t.pixelWidth,height:t.pixelHeight,kernel:"nearest"});u.dispose(),this.releaseArtworkImage(),this.artworkImage=d,this.artworkImageKey=l}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.artworkImageKey=""}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(Oi*n)),l=Math.round(t*n),c=Math.round(r*i),u=s+a,d=o+a,A=aA(u,d);if(!A)return this.releaseWorldImage(),!1;if(!this.worldImage||a!==this.worldImageSide||u>this.worldImageWidth||d>this.worldImageHeight){let{width:b,height:p}=A,C=new Uint8Array(b*p*4),[w,I,_]=rs.toInts(),[y,m,O]=Ya.toInts();for(let B=0;B<p;B++){let U=B%a===0;for(let R=0;R<b;R++){let T=R%a===0,q=(B*b+R)*4;C[q]=U||T?y:w,C[q+1]=U||T?m:I,C[q+2]=U||T?O:_,C[q+3]=255}}this.releaseWorldImage(),this.worldImage=Ka.fromRgba(C,b,p),this.worldImageSide=a,this.worldImageWidth=b,this.worldImageHeight=p}if(!this.worldImage)return!1;let g=(-l%a+a)%a,f=(-c%a+a)%a;return e.drawImage(this.worldImage,0,0,this.width,this.height,s,o,g,f,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(Oi/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)%Oi===0;if(!a&&!c)continue;e.setCell(l,s,c?"\u258F":" ",Ya,rs,a?Wa.UNDERLINE:Wa.NONE)}}}destroySelf(){this.releaseArtworkImage(),this.releaseWorldImage(),super.destroySelf()}handleMouse(e){if(e.button!==Bi.LEFT&&e.button!==Bi.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===Bi.RIGHT?{tool:"erase"}:{}})}}Xr({pixel_grid:Di});var k={background:nt("hsl(275 26% 9%)"),panel:nt("hsl(275 26% 11%)"),panelActive:nt("hsl(275 25% 14%)"),card:nt("hsl(275 26% 16%)"),border:nt("hsl(275 30% 28%)"),text:nt("hsl(278 100% 80%)"),muted:nt("hsl(278 41% 65%)"),accent:nt("hsl(315 68% 71%)"),accentText:nt("hsl(278 70% 80%)"),warning:nt("hsl(37 100% 71%)"),textPink:nt("hsl(308, 50%, 75%)"),orangeActive:nt("hsl(28, 80%, 38%)")};function nt(e){let t=en(e);return t?$t(t):"#ffffff"}function Ir(e){return e[0].toUpperCase()+e.slice(1)}function uA(e){return(()=>{var t=x("box");return h(t,"flexDirection","column"),h(t,"gap",0),Y(t,ne(Et,{get each(){return e.colors.slice(0,10)},children:(r,n)=>{let i=()=>(e.refresh(),e.session.selectedColorIndex===n()),s=n()===9?"0":String(n()+1);return(()=>{var o=x("box"),a=x("text"),l=x("text"),c=be(" ");return S(o,a),S(o,l),h(o,"height",1),h(o,"flexDirection","row"),h(o,"paddingX",1),S(a,be("\u2588\u2588")),S(l,c),Y(l,()=>i()?" \u203A ":" ",c),Y(l,s,c),Y(l,()=>nt(r),null),Pe((u)=>{var d=i()?k.panelActive:k.panel,A=nt(r),g=i()?k.text:k.muted;return d!==u.e&&(u.e=h(o,"backgroundColor",d,u.e)),A!==u.t&&(u.t=h(a,"fg",A,u.t)),g!==u.a&&(u.a=h(l,"fg",g,u.a)),u},{e:void 0,t:void 0,a:void 0}),o})()}})),t})()}function dA(e){let t=()=>(e.refresh(),{tool:Ir(e.session.tool),color:nt(e.colors[e.session.selectedColorIndex]??e.session.activeColor),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=x("box"),n=x("box"),i=x("box"),s=x("text"),o=be("Tool: "),a=x("text"),l=be("Cursor: "),c=x("box"),u=x("box"),d=x("box"),A=x("text"),g=be("Mirror X: "),f=x("text"),b=be("Mirror Y: ");return S(r,n),h(r,"id","sidebar"),h(r,"alignSelf","flex-start"),h(r,"border",!0),h(r,"flexDirection","column"),S(n,i),S(n,c),S(n,u),S(n,d),h(n,"width","100%"),h(n,"flexDirection","column"),h(n,"paddingX",1),S(i,s),S(i,a),h(i,"flexDirection","column"),S(s,o),Y(s,()=>t().tool,null),S(a,l),Y(a,()=>t().cursor,null),h(c,"height",1),Y(n,ne(uA,{get session(){return e.session},get colors(){return e.colors},get refresh(){return e.refresh}}),u),h(u,"height",1),S(d,A),S(d,f),h(d,"flexDirection","column"),S(A,g),Y(A,()=>t().mirrorX,null),S(f,b),Y(f,()=>t().mirrorY,null),Pe((p)=>{var C=e.visible?28:0,w=e.visible,I=k.border,_=k.panel,y=k.panel,m=k.textPink,O=k.textPink,B=k.muted,U=k.muted;return C!==p.e&&(p.e=h(r,"width",C,p.e)),w!==p.t&&(p.t=h(r,"visible",w,p.t)),I!==p.a&&(p.a=h(r,"borderColor",I,p.a)),_!==p.o&&(p.o=h(r,"backgroundColor",_,p.o)),y!==p.i&&(p.i=h(n,"backgroundColor",y,p.i)),m!==p.n&&(p.n=h(s,"fg",m,p.n)),O!==p.s&&(p.s=h(a,"fg",O,p.s)),B!==p.h&&(p.h=h(A,"fg",B,p.h)),U!==p.r&&(p.r=h(f,"fg",U,p.r)),p},{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}),r})()}function hA(e){let t=()=>{e.refresh();let r=`${e.session.mirrorX?"X":"-"}${e.session.mirrorY?"Y":"-"}`;return{tool:Ir(e.session.tool),color:nt(e.colors[e.session.selectedColorIndex]??e.session.activeColor),mirror:r}};return(()=>{var r=x("box"),n=x("text"),i=be("Tool "),s=be(" Color "),o=x("text"),a=x("text"),l=be(" "),c=be(" Mirror ");return S(r,n),S(r,o),S(r,a),h(r,"border",!0),h(r,"borderStyle","rounded"),h(r,"paddingX",1),h(r,"flexDirection","row"),S(n,i),S(n,s),Y(n,()=>t().tool,s),S(o,be("\u2588\u2588")),S(a,l),S(a,c),Y(a,()=>t().color,c),Y(a,()=>t().mirror,null),Pe((u)=>{var d=e.visible?3:0,A=e.visible,g=k.border,f=k.panel,b=k.textPink,p=t().color,C=k.textPink;return d!==u.e&&(u.e=h(r,"height",d,u.e)),A!==u.t&&(u.t=h(r,"visible",A,u.t)),g!==u.a&&(u.a=h(r,"borderColor",g,u.a)),f!==u.o&&(u.o=h(r,"backgroundColor",f,u.o)),b!==u.i&&(u.i=h(n,"fg",b,u.i)),p!==u.n&&(u.n=h(o,"fg",p,u.n)),C!==u.s&&(u.s=h(a,"fg",C,u.s)),u},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),r})()}function AA(e){let t=z(()=>Math.max(1,Math.min(64,e.width-2))),r=z(()=>Math.max(1,Math.min(21,e.height-2)));return(()=>{var n=x("box"),i=x("text");return S(n,i),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),Y(i,()=>`Move Arrow keys or H J K L
11
+ `);if(t.length>Ph)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{MouseButton as Si,NativeImage as Ba,Renderable as Uh,RGBA as Cr,TextAttributes as Oa}from"@opentui/core";var Ei=new WeakMap;function vr(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 Ei.get(e)??null;let i=n.width/t,s=n.height/r,o=Number.isFinite(i)&&Number.isFinite(s)&&i>0&&s>0?{width:i,height:s}:null;if(o)Ei.set(e,o);return o??Ei.get(e)??null}function zn(e){let t=vr(e);if(!t)return 2;let r=t.height/t.width;return Number.isFinite(r)&&r>=0.5&&r<=4?r:2}function qn(e){if(!vr(e))return!1;let t=e.capabilities;if(!t||t.image_protocol==="blocks")return!1;if(t.image_protocol==="kitty"||t.image_protocol==="sixel")return!0;if(t.multiplexer==="tmux")return!1;return t.kitty_graphics||t.sixel}var es=Cr.fromInts(19,14,21),Pa=Cr.fromInts(32,24,36),Ii=4,jh={r:30,g:33,b:48,a:1},Hh={r:42,g:46,b:64,a:1},Kh=Cr.fromInts(255,255,255),Wh=Cr.fromInts(8,10,16),Yh=0.25,ts=512,Na=16384,Qh=25000000;function Jh(e,t){return(e+t)%2===0?jh:Hh}function Zh(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 xi(e,t,r){let n=Jh(t,r),i=e?.active&&e.color?Nt(e.color):null,s=i?Zh(i,n):n;return Cr.fromInts(s.r,s.g,s.b)}function ki(e){let[t,r,n]=e.toInts(),i=(0.2126*t+0.7152*r+0.0722*n)/255,[s,o,a]=i>0.55?Wh.toInts():Kh.toInts(),l=(c,u)=>Math.round(c+(u-c)*Yh);return Cr.fromInts(l(t,s),l(r,o),l(n,a))}function Da(e,t,r){return Math.max(0,Math.min(r-t,e-Math.floor(t/2)))}function $h(e,t){let r=Math.ceil(e/ts)*ts,n=Math.ceil(t/ts)*ts;if(r>Na||n>Na||r*n>Qh)return null;return{width:r,height:n}}function Xh(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 Vh(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 Ri extends Uh{artworkImage=null;artworkImageKey="";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}renderSelf(e){e.clear(es);let t=this.currentModel.grid.length;if(t===0||this.width<=0||this.height<=0){this.viewport.columns=0,this.viewport.pixelRows=0;return}let r=zn(this._ctx),n=vr(this._ctx),i=n&&qn(this._ctx)?Vh(this.width,this.height,t,this.currentModel.zoom,n.width,n.height):null,s=i??Xh(this.width,this.height,t,this.currentModel.zoom,r),{columns:o,pixelRows:a}=s;if(o===0||a===0){this.viewport.columns=0,this.viewport.pixelRows=0,this.viewport.columnZoom=s.columnZoom,this.viewport.subrowZoom=s.subrowZoom,this.viewport.renderedSubrows=0;return}let{renderedColumns:l,renderedSubrows:c,terminalRows:u}=s,d=Da(this.currentModel.cursor.x,o,t),A=Da(this.currentModel.cursor.y,a,t),g=Math.floor((this.width-l)/2),f=Math.floor((this.height-u)/2);if(i&&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:d,startY:A,columns:o,pixelRows:a,columnZoom:s.columnZoom,subrowZoom:s.subrowZoom,renderedSubrows:c},i){this.drawArtworkImage(e,i,g,f,d,A);return}this.releaseArtworkImage();for(let y=0;y<u;y++){let b=y*2,C=b+1,_=A+Math.floor(b/s.subrowZoom),S=A+Math.floor(C/s.subrowZoom);for(let v=0;v<l;v++){let w=d+Math.floor(v/s.columnZoom),m=xi(this.currentModel.grid[_]?.[w],w,_),P=C<c&&S<t?xi(this.currentModel.grid[S]?.[w],w,S):es,O=this.currentModel.cursor,U=O.x===w&&O.y===_,k=O.x===w&&O.y===S;e.setCell(g+v,f+y,"\u2580",U?ki(m):m,k?ki(P):P)}}}drawArtworkImage(e,t,r,n,i,s){let o=this.currentModel.cursor,a=[];for(let c=s;c<s+t.pixelRows;c++)for(let u=i;u<i+t.columns;u++){let d=this.currentModel.grid[c]?.[u];a.push(d?.active?d.color??"active":"")}let l=[t.columns,t.pixelRows,t.pixelWidth,t.pixelHeight,i,s,o.x,o.y,...a].join("|");if(!this.artworkImage||l!==this.artworkImageKey){let c=new Uint8Array(t.columns*t.pixelRows*4);for(let A=0;A<t.pixelRows;A++){let g=s+A;for(let f=0;f<t.columns;f++){let y=i+f,b=xi(this.currentModel.grid[g]?.[y],y,g);if(o.x===y&&o.y===g)b=ki(b);let[C,_,S]=b.toInts(),v=(A*t.columns+f)*4;c[v]=C,c[v+1]=_,c[v+2]=S,c[v+3]=255}}let u=Ba.fromRgba(c,t.columns,t.pixelRows),d=u.resize({width:t.pixelWidth,height:t.pixelHeight,kernel:"nearest"});u.dispose(),this.releaseArtworkImage(),this.artworkImage=d,this.artworkImageKey=l}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.artworkImageKey=""}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(Ii*n)),l=Math.round(t*n),c=Math.round(r*i),u=s+a,d=o+a,A=$h(u,d);if(!A)return this.releaseWorldImage(),!1;if(!this.worldImage||a!==this.worldImageSide||u>this.worldImageWidth||d>this.worldImageHeight){let{width:y,height:b}=A,C=new Uint8Array(y*b*4),[_,S,v]=es.toInts(),[w,m,P]=Pa.toInts();for(let O=0;O<b;O++){let U=O%a===0;for(let k=0;k<y;k++){let T=k%a===0,q=(O*y+k)*4;C[q]=U||T?w:_,C[q+1]=U||T?m:S,C[q+2]=U||T?P:v,C[q+3]=255}}this.releaseWorldImage(),this.worldImage=Ba.fromRgba(C,y,b),this.worldImageSide=a,this.worldImageWidth=y,this.worldImageHeight=b}if(!this.worldImage)return!1;let g=(-l%a+a)%a,f=(-c%a+a)%a;return e.drawImage(this.worldImage,0,0,this.width,this.height,s,o,g,f,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(Ii/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)%Ii===0;if(!a&&!c)continue;e.setCell(l,s,c?"\u258F":" ",Pa,es,a?Oa.UNDERLINE:Oa.NONE)}}}destroySelf(){this.releaseArtworkImage(),this.releaseWorldImage(),super.destroySelf()}handleMouse(e){if(e.button!==Si.LEFT&&e.button!==Si.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===Si.RIGHT?{tool:"erase"}:{}})}}import{NativeImage as La,parseColor as zh}from"@opentui/core";var qh=new URL("./flatblox-logo.png",import.meta.url);async function eA(e){let t=await La.load(qh),[r,n,i]=zh(e).toInts(),s=new Uint8Array(t.width*t.height*4);for(let a=0;a<s.length;a+=4)s[a]=r,s[a+1]=n,s[a+2]=i,s[a+3]=255;let o=La.fromRgba(s,t.width,t.height);try{return o.composite(t)}finally{o.dispose(),t.dispose()}}function Er(e){let[t,r]=Q(),n=!1;return Jt(()=>{eA(e.backgroundColor).then((i)=>{if(n)i.dispose();else r(i)})}),at(()=>{n=!0,t()?.dispose()}),(()=>{var i=x("image");return h(i,"fit","fit"),xe((s)=>{var o=e.id,a=t(),l=e.width,c=e.height;return o!==s.e&&(s.e=h(i,"id",o,s.e)),a!==s.t&&(s.t=h(i,"source",a,s.t)),l!==s.a&&(s.a=h(i,"width",l,s.a)),c!==s.o&&(s.o=h(i,"height",c,s.o)),s},{e:void 0,t:void 0,a:void 0,o:void 0}),i})()}Vr({pixel_grid:Ri});var E={background:tt("hsl(275 26% 9%)"),panel:tt("hsl(275 26% 11%)"),panelActive:tt("hsl(275 25% 14%)"),card:tt("hsl(275 26% 16%)"),border:tt("hsl(275 30% 28%)"),text:tt("hsl(278 100% 80%)"),muted:tt("hsl(278 41% 65%)"),accent:tt("hsl(315 68% 71%)"),accentText:tt("hsl(278 70% 80%)"),warning:tt("hsl(37 100% 71%)"),textPink:tt("hsl(308, 50%, 75%)"),orangeActive:tt("hsl(28, 80%, 38%)")};function tt(e){let t=tn(e);return t?$t(t):"#ffffff"}function Sr(e){return e[0].toUpperCase()+e.slice(1)}function tA(e){return(()=>{var t=x("box");return h(t,"flexDirection","column"),h(t,"gap",0),H(t,re(Ct,{get each(){return e.colors.slice(0,10)},children:(r,n)=>{let i=()=>(e.refresh(),e.session.selectedColorIndex===n()),s=n()===9?"0":String(n()+1);return(()=>{var o=x("box"),a=x("text"),l=x("text"),c=me(" ");return I(o,a),I(o,l),h(o,"height",1),h(o,"flexDirection","row"),h(o,"paddingX",1),I(a,me("\u2588\u2588")),I(l,c),H(l,()=>i()?" \u203A ":" ",c),H(l,s,c),H(l,()=>tt(r),null),xe((u)=>{var d=i()?E.panelActive:E.panel,A=tt(r),g=i()?E.text:E.muted;return d!==u.e&&(u.e=h(o,"backgroundColor",d,u.e)),A!==u.t&&(u.t=h(a,"fg",A,u.t)),g!==u.a&&(u.a=h(l,"fg",g,u.a)),u},{e:void 0,t:void 0,a:void 0}),o})()}})),t})()}function rA(e){let t=()=>(e.refresh(),{tool:Sr(e.session.tool),color:tt(e.colors[e.session.selectedColorIndex]??e.session.activeColor),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=x("box"),n=x("box"),i=x("box"),s=x("text"),o=me("Tool: "),a=x("text"),l=me("Cursor: "),c=x("box"),u=x("box"),d=x("box"),A=x("text"),g=me("Mirror X: "),f=x("text"),y=me("Mirror Y: ");return I(r,n),h(r,"id","sidebar"),h(r,"alignSelf","flex-start"),h(r,"border",!0),h(r,"flexDirection","column"),I(n,i),I(n,c),I(n,u),I(n,d),h(n,"width","100%"),h(n,"flexDirection","column"),h(n,"paddingX",1),I(i,s),I(i,a),h(i,"flexDirection","column"),I(s,o),H(s,()=>t().tool,null),I(a,l),H(a,()=>t().cursor,null),h(c,"height",1),H(n,re(tA,{get session(){return e.session},get colors(){return e.colors},get refresh(){return e.refresh}}),u),h(u,"height",1),I(d,A),I(d,f),h(d,"flexDirection","column"),I(A,g),H(A,()=>t().mirrorX,null),I(f,y),H(f,()=>t().mirrorY,null),xe((b)=>{var C=e.visible?28:0,_=e.visible,S=E.border,v=E.panel,w=E.panel,m=E.textPink,P=E.textPink,O=E.muted,U=E.muted;return C!==b.e&&(b.e=h(r,"width",C,b.e)),_!==b.t&&(b.t=h(r,"visible",_,b.t)),S!==b.a&&(b.a=h(r,"borderColor",S,b.a)),v!==b.o&&(b.o=h(r,"backgroundColor",v,b.o)),w!==b.i&&(b.i=h(n,"backgroundColor",w,b.i)),m!==b.n&&(b.n=h(s,"fg",m,b.n)),P!==b.s&&(b.s=h(a,"fg",P,b.s)),O!==b.h&&(b.h=h(A,"fg",O,b.h)),U!==b.r&&(b.r=h(f,"fg",U,b.r)),b},{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}),r})()}function nA(e){let t=()=>{e.refresh();let r=`${e.session.mirrorX?"X":"-"}${e.session.mirrorY?"Y":"-"}`;return{tool:Sr(e.session.tool),color:tt(e.colors[e.session.selectedColorIndex]??e.session.activeColor),mirror:r}};return(()=>{var r=x("box"),n=x("text"),i=me("Tool "),s=me(" Color "),o=x("text"),a=x("text"),l=me(" "),c=me(" Mirror ");return I(r,n),I(r,o),I(r,a),h(r,"border",!0),h(r,"borderStyle","rounded"),h(r,"paddingX",1),h(r,"flexDirection","row"),I(n,i),I(n,s),H(n,()=>t().tool,s),I(o,me("\u2588\u2588")),I(a,l),I(a,c),H(a,()=>t().color,c),H(a,()=>t().mirror,null),xe((u)=>{var d=e.visible?3:0,A=e.visible,g=E.border,f=E.panel,y=E.textPink,b=t().color,C=E.textPink;return d!==u.e&&(u.e=h(r,"height",d,u.e)),A!==u.t&&(u.t=h(r,"visible",A,u.t)),g!==u.a&&(u.a=h(r,"borderColor",g,u.a)),f!==u.o&&(u.o=h(r,"backgroundColor",f,u.o)),y!==u.i&&(u.i=h(n,"fg",y,u.i)),b!==u.n&&(u.n=h(o,"fg",b,u.n)),C!==u.s&&(u.s=h(a,"fg",C,u.s)),u},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),r})()}function sA(e){let t=V(()=>Math.max(1,Math.min(64,e.width-2))),r=V(()=>Math.max(1,Math.min(21,e.height-2)));return(()=>{var n=x("box"),i=x("text");return I(n,i),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),H(i,()=>`Move Arrow keys or H J K L
12
12
  Paint Space or Enter
13
13
  Tools D draw | E erase | F fill
14
14
  Palette 1\u20130 direct | [ and ] cycle
@@ -24,20 +24,20 @@ Quit Q`:"Quit Q or Escape"}
24
24
  Mouse Click to paint | right-click to erase
25
25
  Shift+click targets the lower half-cell
26
26
 
27
- Press ? or Escape to close help.`),Pe((s)=>{var o=Math.max(0,Math.floor((e.width-t())/2)),a=Math.max(0,Math.floor((e.height-r())/2)),l=t(),c=r(),u=e.visible,d=k.border,A=k.panel,g=k.accent,f=k.textPink;return o!==s.e&&(s.e=h(n,"left",o,s.e)),a!==s.t&&(s.t=h(n,"top",a,s.t)),l!==s.a&&(s.a=h(n,"width",l,s.a)),c!==s.o&&(s.o=h(n,"height",c,s.o)),u!==s.i&&(s.i=h(n,"visible",u,s.i)),d!==s.n&&(s.n=h(n,"borderColor",d,s.n)),A!==s.s&&(s.s=h(n,"backgroundColor",A,s.s)),g!==s.h&&(s.h=h(n,"titleColor",g,s.h)),f!==s.r&&(s.r=h(i,"fg",f,s.r)),s},{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}),n})()}function fA(e){let t=z(()=>Math.max(1,Math.min(48,e.width-4))),r=z(()=>Math.max(1,Math.min(7,e.height-2))),n=z(()=>r()>=7?1:0);return(()=>{var i=x("box"),s=x("box"),o=x("input"),a=x("box"),l=x("text");return S(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"),S(s,o),S(s,a),S(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",Ai),h(o,"focused",!0),h(o,"onKeyDown",(c)=>{if(c.eventType!=="release"&&c.name==="escape")c.preventDefault(),e.onCancel()}),Y(l,()=>e.error||"Enter save \xB7 Esc cancel"),Pe((c)=>{var u=Math.max(0,Math.floor((e.width-t())/2)),d=Math.max(0,Math.floor((e.height-r())/2)),A=t(),g=r(),f=k.border,b=k.panel,p=k.accent,C=k.panel,w=e.value,I=k.panelActive,_=k.panelActive,y=k.text,m=k.text,O=e.onInput,B=e.onSubmit,U=n(),R=e.error?k.warning:k.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)),g!==c.o&&(c.o=h(i,"height",g,c.o)),f!==c.i&&(c.i=h(i,"borderColor",f,c.i)),b!==c.n&&(c.n=h(i,"backgroundColor",b,c.n)),p!==c.s&&(c.s=h(i,"titleColor",p,c.s)),C!==c.h&&(c.h=h(s,"backgroundColor",C,c.h)),w!==c.r&&(c.r=h(o,"value",w,c.r)),I!==c.d&&(c.d=h(o,"backgroundColor",I,c.d)),_!==c.l&&(c.l=h(o,"focusedBackgroundColor",_,c.l)),y!==c.u&&(c.u=h(o,"textColor",y,c.u)),m!==c.c&&(c.c=h(o,"focusedTextColor",m,c.c)),O!==c.w&&(c.w=h(o,"onInput",O,c.w)),B!==c.m&&(c.m=h(o,"on:enter",B,c.m)),U!==c.f&&(c.f=h(a,"height",U,c.f)),R!==c.y&&(c.y=h(l,"fg",R,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 Er(e){let t=Dt(),r=hr(),[n,i]=X(0),[s,o]=X("Ready"),[a,l]=X(!1),[c,u]=X(null),[d,A]=X(!1),[g,f]=X(!1),[b,p]=X(""),[C,w]=X(""),[I,_]=X(!1),[y,m]=X(2),[O,B]=X(null),U=!e.blenderLive,R=e.blenderLive??new Ci(()=>e.session.toDocument()),[T,q]=X(R.getStatus()),ee=R.onStatus(q);bt(()=>{if(ee(),U)R.dispose()});let V=z(()=>r().width>=88&&r().height>=19),ae=()=>n(),re=()=>{i((F)=>F+1),R.sync()},se=()=>(n(),e.session.dirty),je=z(()=>qr(e.session.palette,e.session.paletteColorAdjustment.saturation,e.session.paletteColorAdjustment.lightness)),J=z(()=>(n(),{grid:Zt(e.session.grid,e.session.paletteColorAdjustment.saturation,e.session.paletteColorAdjustment.lightness),cursor:e.session.cursor,zoom:y()})),L=()=>{if(c())u(null)},Ie=(F=e.session.tool)=>{L();let v=e.session.applyAtCursor(F);re(),o(v?`${Ir(F)} applied`:"No change")},it=(F,v)=>{L(),e.session.moveCursor(F,v);let E=O(),Q=E?e.session.applyAtCursor(E):!1;re(),o(E&&Q?`${Ir(E)} at ${e.session.cursor.x+1}, ${e.session.cursor.y+1}`:`Cell ${e.session.cursor.x+1}, ${e.session.cursor.y+1}`)},He=async()=>{if(d())return;let F=e.session.revision,v=e.session.toDocument();A(!0),o("Saving\u2026");try{let E;if(e.saveDocument)E=await e.saveDocument(v);else{let Ae=e.filePath??`${e.session.filename}.flatblox.json`,_e=un(v);if(e.writeFile)await e.writeFile(Ae,_e);else await Bun.write(Ae,_e);E=`Saved ${Ae}`}let Q=e.session.markSaved(F);u(null),o(Q?E||"Saved":`${E||"Saved"}; newer edits remain unsaved`),re()}catch(E){let Q=E instanceof Error?E.message:String(E);o(`Save failed: ${Q}`)}finally{A(!1)}},P=()=>{if(e.promptForFilenameOnSave&&!I()){p(""),w(""),f(!0),o("Name artwork before saving");return}He()},G=(F)=>{let v=tn(F);if(!v){w("Enter an artwork name");return}e.session.rename(v),_(!0),w(""),f(!1),re(),He()},ie=()=>{f(!1),w(""),o("Save cancelled")},me=(F)=>{if(!se()||c()===F){if(F==="back"&&e.onBack)e.onBack();else t.destroy();return}u(F),o(F==="back"?"Unsaved changes \u2014 press Escape again to return":"Unsaved changes \u2014 press Q again to quit")},Je=(F)=>{e.session.setTool(F),L(),o(`${Ir(F)} tool`),re()},fe=(F)=>{let v=Math.max(1,Math.min(8,y()+F));m(v),o(`Zoom ${v}\xD7`)},Oe=async()=>{let F=R.getStatus();if(F.state==="connected"||F.state==="connecting"){R.disconnect(),o("Blender Live disconnected");return}o("Connecting to Blender\u2026");let v=await R.connect();o(v.state==="connected"?"Drawing live in Blender":v.message??"Blender Live disconnected")},qe=(F)=>{e.session.setCursor(F.x,F.y);let v=F.tool??e.session.tool,E=e.session.applyAt(F.x,F.y,v);L(),o(E?`${Ir(v)} at ${F.x+1}, ${F.y+1}`:`Cell ${F.x+1}, ${F.y+1}`),re()};Ar((F)=>{let v=F.name.toLowerCase(),E=F.sequence,Q=v==="space"||v==="return"||E===" ";if(F.eventType==="release"){if(Q)B(null);return}if(g())return;if(a()){if(v==="escape"||E==="?")l(!1);return}let Ae=v==="q"||v==="escape"||F.ctrl&&v==="c";if(c()&&!Ae)u(null);if(F.ctrl){if(v==="s")P();else if(v==="z"&&F.shift)o(e.session.redo()?"Redo":"Nothing to redo"),re();else if(v==="z")o(e.session.undo()?"Undo":"Nothing to undo"),re();else if(v==="y")o(e.session.redo()?"Redo":"Nothing to redo"),re();else if(v==="c")me("quit");return}if(E==="?"){l(!0);return}if(v==="escape"&&e.onBack){me("back");return}if(v==="q"||v==="escape"){me("quit");return}if(v==="left"||v==="h")it(-1,0);else if(v==="right"||v==="l")it(1,0);else if(v==="up"||v==="k")it(0,-1);else if(v==="down"||v==="j")it(0,1);else if(Q){let _e=e.session.tool;B(F.source==="kitty"&&(_e==="draw"||_e==="erase")?_e:null),Ie(_e)}else if(v==="b")Oe();else if(v==="d")Je("draw");else if(v==="e")Je("erase");else if(v==="f")Je("fill");else if(v==="x")e.session.toggleMirrorX(),o(`Mirror X ${e.session.mirrorX?"on":"off"}`),re();else if(v==="y")e.session.toggleMirrorY(),o(`Mirror Y ${e.session.mirrorY?"on":"off"}`),re();else if(v==="u")o(e.session.undo()?"Undo":"Nothing to undo"),re();else if(v==="r")o(e.session.redo()?"Redo":"Nothing to redo"),re();else if(E==="+"||v==="+"||v==="=")fe(1);else if(E==="-"||v==="-")fe(-1);else if(E==="[")e.session.selectNextColor(-1),o(`Color ${e.session.selectedColorIndex+1}`),re();else if(E==="]")e.session.selectNextColor(1),o(`Color ${e.session.selectedColorIndex+1}`),re();else if(/^[0-9]$/.test(v))e.session.selectColor(v==="0"?9:Number(v)-1),o(`Color ${e.session.selectedColorIndex+1}`),re()},{release:!0});let et=()=>{n();let F=e.session.dirty?" \u25CF":"";return`${e.session.filename}${F} ${e.session.size}\xD7${e.session.size}`},Z=()=>{switch(T().state){case"connecting":return"connecting";case"connected":return"live";case"error":return"error";default:return"off"}};return(()=>{var F=x("box"),v=x("box"),E=x("text"),Q=x("b"),Ae=x("box"),_e=x("image"),ye=x("text"),le=x("box"),ge=x("box"),Ce=x("pixel_grid"),W=x("box"),$e=x("text"),lt=be("Blender:"),De=be(" | ");return S(F,v),S(F,le),S(F,W),h(F,"width","100%"),h(F,"height","100%"),h(F,"flexDirection","column"),S(v,E),S(v,Ae),S(v,ye),h(v,"height",3),h(v,"paddingX",1),h(v,"paddingY",1),h(v,"flexDirection","row"),h(v,"justifyContent","space-between"),S(E,Q),S(Q,be("BUILD")),S(Ae,_e),h(Ae,"height",1),h(Ae,"flexBasis",0),h(Ae,"flexGrow",1),h(Ae,"flexDirection","row"),h(Ae,"justifyContent","center"),h(_e,"id","dashboard-wordmark"),h(_e,"source",hn),h(_e,"width",14),h(_e,"height",1),h(_e,"fit","cover"),Y(ye,et),S(le,ge),h(le,"flexGrow",1),h(le,"flexDirection","row"),h(le,"padding",1),h(le,"gap",1),S(ge,Ce),h(ge,"flexGrow",1),h(ge,"overflow","hidden"),h(Ce,"id","pixel-grid"),h(Ce,"width","100%"),h(Ce,"height","100%"),h(Ce,"flexGrow",1),h(Ce,"onCell",qe),Y(le,ne(dA,{get session(){return e.session},get colors(){return je()},refresh:ae,get visible(){return V()}}),null),Y(F,ne(hA,{get session(){return e.session},get colors(){return je()},refresh:ae,get visible(){return!V()}}),W),S(W,$e),h(W,"height",1),h(W,"paddingX",1),h(W,"flexDirection","row"),h(W,"justifyContent","space-between"),S($e,lt),S($e,De),Y($e,Z,De),Y($e,s,null),Y(W,ne(gt,{get when(){return s().length<Math.max(8,r().width-58)},get children(){var H=x("text"),Te=be("-/+ zoom \xB7 ? help \xB7 Ctrl+S save \xB7 "),Be=be("Q quit");return S(H,Te),S(H,Be),Y(H,()=>e.onBack?"Esc artworks \xB7 ":"",Be),Pe((N)=>h(H,"fg",k.muted,N)),H}}),null),Y(F,ne(AA,{get width(){return r().width},get height(){return r().height},get visible(){return a()},get canGoBack(){return Boolean(e.onBack)}}),null),Y(F,ne(gt,{get when(){return g()},get children(){return ne(fA,{get width(){return r().width},get height(){return r().height},get value(){return b()},get error(){return C()},onInput:(H)=>{if(p(H),C())w("")},onSubmit:G,onCancel:ie})}}),null),Pe((H)=>{var{background:Te,panel:Be}=k,N=T().state==="error"?k.warning:k.accentText,ct=se()?k.warning:k.muted,vt=k.background,Ut=k.background,jt=J(),de=k.panelActive,pe=s().startsWith("Save failed")||T().state==="error"?k.warning:k.textPink;return Te!==H.e&&(H.e=h(F,"backgroundColor",Te,H.e)),Be!==H.t&&(H.t=h(v,"backgroundColor",Be,H.t)),N!==H.a&&(H.a=h(E,"fg",N,H.a)),ct!==H.o&&(H.o=h(ye,"fg",ct,H.o)),vt!==H.i&&(H.i=h(le,"backgroundColor",vt,H.i)),Ut!==H.n&&(H.n=h(ge,"backgroundColor",Ut,H.n)),jt!==H.s&&(H.s=h(Ce,"model",jt,H.s)),de!==H.h&&(H.h=h(W,"backgroundColor",de,H.h)),pe!==H.r&&(H.r=h($e,"fg",pe,H.r)),H},{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}),F})()}import{chmod as ag,mkdir as lg,readFile as cg,rename as ug,unlink as dg,writeFile as hg}from"fs/promises";import{homedir as Ag}from"os";import{dirname as fg,join as Fc}from"path";var Cl=cu(vl(),1),{__extends:qy,__assign:ew,__rest:qt,__decorate:tw,__param:rw,__esDecorate:nw,__runInitializers:sw,__propKey:iw,__setFunctionName:ow,__metadata:aw,__awaiter:El,__generator:lw,__exportStar:cw,__createBinding:uw,__values:dw,__read:hw,__spread:Aw,__spreadArrays:fw,__spreadArray:gw,__await:mw,__asyncGenerator:pw,__asyncDelegator:bw,__asyncValues:yw,__makeTemplateObject:ww,__importStar:_w,__importDefault:vw,__classPrivateFieldGet:Cw,__classPrivateFieldSet:Ew,__classPrivateFieldIn:Sw,__addDisposableResource:Iw,__disposeResources:xw,__rewriteRelativeImportExtension:kw}=Cl.default;var Sl=(e)=>{if(e)return(...t)=>e(...t);return(...t)=>fetch(...t)};class fn 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 as extends fn{constructor(e){super("Failed to send a request to the Edge Function","FunctionsFetchError",e)}}class gn extends fn{constructor(e){super("Relay Error invoking the Edge Function","FunctionsRelayError",e)}}class mn extends fn{constructor(e){super("Edge Function returned a non-2xx status code","FunctionsHttpError",e)}}var An;(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"})(An||(An={}));class ls{constructor(e,{headers:t={},customFetch:r,region:n=An.Any}={}){this.url=e,this.headers=t,this.region=n,this.fetch=Sl(r)}setAuth(e){this.headers.Authorization=`Bearer ${e}`}invoke(e){return El(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 g=new URL(`${this.url}/${t}`);if(A&&A!=="any")d["x-region"]=A,g.searchParams.set("forceFunctionRegion",A);let f;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",f=l;else if(typeof l==="string")d["Content-Type"]="text/plain",f=l;else if(typeof FormData<"u"&&l instanceof FormData)f=l;else d["Content-Type"]="application/json",f=JSON.stringify(l);else if(l&&typeof l!=="string"&&!(typeof Blob<"u"&&l instanceof Blob)&&!(l instanceof ArrayBuffer)&&!(typeof FormData<"u"&&l instanceof FormData))f=JSON.stringify(l);else f=l;let b=c;if(u)if(s=new AbortController,i=setTimeout(()=>s.abort(),u),c)b=s.signal,c.addEventListener("abort",()=>s.abort());else b=s.signal;let p=yield this.fetch(g.toString(),{method:a||"POST",headers:Object.assign(Object.assign(Object.assign({},d),this.headers),o),body:f,signal:b}).catch((_)=>{throw new as(_)}),C=p.headers.get("x-relay-error");if(C&&C==="true")throw new gn(p);if(!p.ok)throw new mn(p);let w=((n=p.headers.get("Content-Type"))!==null&&n!==void 0?n:"text/plain").split(";")[0].trim(),I;if(w==="application/json")I=yield p.json();else if(w==="application/octet-stream"||w==="application/pdf")I=yield p.blob();else if(w==="text/event-stream")I=p;else if(w==="multipart/form-data")I=yield p.formData();else I=yield p.text();return{data:I,error:null,response:p}}catch(o){return{data:null,error:o,response:o instanceof mn||o instanceof gn?o.context:void 0}}finally{if(i)clearTimeout(i)}})}}var Il=(e)=>Math.min(1000*2**e,30000),gA=[520,503],Tl=["GET","HEAD","OPTIONS"],Bl=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 xl(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 mA(e,t,r,n){if(!n||r>=3)return!1;if(!Tl.includes(e))return!1;if(!gA.includes(t))return!1;return!0}var pA=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(!Tl.includes(r.method))throw d;if(r.retryEnabled&&o<3){let A=Il(o);o++,await xl(A,r.signal);continue}throw d}if(mA(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:Il(o);await u.text(),o++,await xl(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,g,f,b;let w=(A=d===null||d===void 0?void 0:d.message)!==null&&A!==void 0?A:"",I=(g=d===null||d===void 0?void 0:d.code)!==null&&g!==void 0?g:"";if(l=`${(f=o===null||o===void 0?void 0:o.name)!==null&&f!==void 0?f:"FetchError"}: ${o===null||o===void 0?void 0:o.message}`,l+=`
27
+ Press ? or Escape to close help.`),xe((s)=>{var o=Math.max(0,Math.floor((e.width-t())/2)),a=Math.max(0,Math.floor((e.height-r())/2)),l=t(),c=r(),u=e.visible,d=E.border,A=E.panel,g=E.accent,f=E.textPink;return o!==s.e&&(s.e=h(n,"left",o,s.e)),a!==s.t&&(s.t=h(n,"top",a,s.t)),l!==s.a&&(s.a=h(n,"width",l,s.a)),c!==s.o&&(s.o=h(n,"height",c,s.o)),u!==s.i&&(s.i=h(n,"visible",u,s.i)),d!==s.n&&(s.n=h(n,"borderColor",d,s.n)),A!==s.s&&(s.s=h(n,"backgroundColor",A,s.s)),g!==s.h&&(s.h=h(n,"titleColor",g,s.h)),f!==s.r&&(s.r=h(i,"fg",f,s.r)),s},{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}),n})()}function iA(e){let t=V(()=>Math.max(1,Math.min(48,e.width-4))),r=V(()=>Math.max(1,Math.min(7,e.height-2))),n=V(()=>r()>=7?1:0);return(()=>{var i=x("box"),s=x("box"),o=x("input"),a=x("box"),l=x("text");return I(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"),I(s,o),I(s,a),I(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",Ai),h(o,"focused",!0),h(o,"onKeyDown",(c)=>{if(c.eventType!=="release"&&c.name==="escape")c.preventDefault(),e.onCancel()}),H(l,()=>e.error||"Enter save \xB7 Esc cancel"),xe((c)=>{var u=Math.max(0,Math.floor((e.width-t())/2)),d=Math.max(0,Math.floor((e.height-r())/2)),A=t(),g=r(),f=E.border,y=E.panel,b=E.accent,C=E.panel,_=e.value,S=E.panelActive,v=E.panelActive,w=E.text,m=E.text,P=e.onInput,O=e.onSubmit,U=n(),k=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)),g!==c.o&&(c.o=h(i,"height",g,c.o)),f!==c.i&&(c.i=h(i,"borderColor",f,c.i)),y!==c.n&&(c.n=h(i,"backgroundColor",y,c.n)),b!==c.s&&(c.s=h(i,"titleColor",b,c.s)),C!==c.h&&(c.h=h(s,"backgroundColor",C,c.h)),_!==c.r&&(c.r=h(o,"value",_,c.r)),S!==c.d&&(c.d=h(o,"backgroundColor",S,c.d)),v!==c.l&&(c.l=h(o,"focusedBackgroundColor",v,c.l)),w!==c.u&&(c.u=h(o,"textColor",w,c.u)),m!==c.c&&(c.c=h(o,"focusedTextColor",m,c.c)),P!==c.w&&(c.w=h(o,"onInput",P,c.w)),O!==c.m&&(c.m=h(o,"on:enter",O,c.m)),U!==c.f&&(c.f=h(a,"height",U,c.f)),k!==c.y&&(c.y=h(l,"fg",k,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 Ir(e){let t=Pt(),r=Ar(),[n,i]=Q(0),[s,o]=Q("Ready"),[a,l]=Q(!1),[c,u]=Q(null),[d,A]=Q(!1),[g,f]=Q(!1),[y,b]=Q(""),[C,_]=Q(""),[S,v]=Q(!1),[w,m]=Q(2),[P,O]=Q(null),U=!e.blenderLive,k=e.blenderLive??new Ci(()=>e.session.toDocument()),[T,q]=Q(k.getStatus()),ee=k.onStatus(q);at(()=>{if(ee(),U)k.dispose()});let X=V(()=>r().width>=88&&r().height>=19),ae=()=>n(),se=()=>{i((G)=>G+1),k.sync()},ie=()=>(n(),e.session.dirty),He=V(()=>en(e.session.palette,e.session.paletteColorAdjustment.saturation,e.session.paletteColorAdjustment.lightness)),J=V(()=>(n(),{grid:Xt(e.session.grid,e.session.paletteColorAdjustment.saturation,e.session.paletteColorAdjustment.lightness),cursor:e.session.cursor,zoom:w()})),L=()=>{if(c())u(null)},De=(G=e.session.tool)=>{L();let p=e.session.applyAtCursor(G);se(),o(p?`${Sr(G)} applied`:"No change")},Te=(G,p)=>{L(),e.session.moveCursor(G,p);let R=P(),ne=R?e.session.applyAtCursor(R):!1;se(),o(R&&ne?`${Sr(R)} at ${e.session.cursor.x+1}, ${e.session.cursor.y+1}`:`Cell ${e.session.cursor.x+1}, ${e.session.cursor.y+1}`)},ze=async()=>{if(d())return;let G=e.session.revision,p=e.session.toDocument();A(!0),o("Saving\u2026");try{let R;if(e.saveDocument)R=await e.saveDocument(p);else{let Ae=e.filePath??`${e.session.filename}.flatblox.json`,_e=dn(p);if(e.writeFile)await e.writeFile(Ae,_e);else await Bun.write(Ae,_e);R=`Saved ${Ae}`}let ne=e.session.markSaved(G);u(null),o(ne?R||"Saved":`${R||"Saved"}; newer edits remain unsaved`),se()}catch(R){let ne=R instanceof Error?R.message:String(R);o(`Save failed: ${ne}`)}finally{A(!1)}},D=()=>{if(e.promptForFilenameOnSave&&!S()){b(""),_(""),f(!0),o("Name artwork before saving");return}ze()},M=(G)=>{let p=rn(G);if(!p){_("Enter an artwork name");return}e.session.rename(p),v(!0),_(""),f(!1),se(),ze()},ue=()=>{f(!1),_(""),o("Save cancelled")},pe=(G)=>{if(!ie()||c()===G){if(G==="back"&&e.onBack)e.onBack();else t.destroy();return}u(G),o(G==="back"?"Unsaved changes \u2014 press Escape again to return":"Unsaved changes \u2014 press Q again to quit")},Be=(G)=>{e.session.setTool(G),L(),o(`${Sr(G)} tool`),se()},ge=(G)=>{let p=Math.max(1,Math.min(8,w()+G));m(p),o(`Zoom ${p}\xD7`)},Le=async()=>{let G=k.getStatus();if(G.state==="connected"||G.state==="connecting"){k.disconnect(),o("Blender Live disconnected");return}o("Connecting to Blender\u2026");let p=await k.connect();o(p.state==="connected"?"Drawing live in Blender":p.message??"Blender Live disconnected")},wt=(G)=>{e.session.setCursor(G.x,G.y);let p=G.tool??e.session.tool,R=e.session.applyAt(G.x,G.y,p);L(),o(R?`${Sr(p)} at ${G.x+1}, ${G.y+1}`:`Cell ${G.x+1}, ${G.y+1}`),se()};fr((G)=>{let p=G.name.toLowerCase(),R=G.sequence,ne=p==="space"||p==="return"||R===" ";if(G.eventType==="release"){if(ne)O(null);return}if(g())return;if(a()){if(p==="escape"||R==="?")l(!1);return}let Ae=p==="q"||p==="escape"||G.ctrl&&p==="c";if(c()&&!Ae)u(null);if(G.ctrl){if(p==="s")D();else if(p==="z"&&G.shift)o(e.session.redo()?"Redo":"Nothing to redo"),se();else if(p==="z")o(e.session.undo()?"Undo":"Nothing to undo"),se();else if(p==="y")o(e.session.redo()?"Redo":"Nothing to redo"),se();else if(p==="c")pe("quit");return}if(R==="?"){l(!0);return}if(p==="escape"&&e.onBack){pe("back");return}if(p==="q"||p==="escape"){pe("quit");return}if(p==="left"||p==="h")Te(-1,0);else if(p==="right"||p==="l")Te(1,0);else if(p==="up"||p==="k")Te(0,-1);else if(p==="down"||p==="j")Te(0,1);else if(ne){let _e=e.session.tool;O(G.source==="kitty"&&(_e==="draw"||_e==="erase")?_e:null),De(_e)}else if(p==="b")Le();else if(p==="d")Be("draw");else if(p==="e")Be("erase");else if(p==="f")Be("fill");else if(p==="x")e.session.toggleMirrorX(),o(`Mirror X ${e.session.mirrorX?"on":"off"}`),se();else if(p==="y")e.session.toggleMirrorY(),o(`Mirror Y ${e.session.mirrorY?"on":"off"}`),se();else if(p==="u")o(e.session.undo()?"Undo":"Nothing to undo"),se();else if(p==="r")o(e.session.redo()?"Redo":"Nothing to redo"),se();else if(R==="+"||p==="+"||p==="=")ge(1);else if(R==="-"||p==="-")ge(-1);else if(R==="[")e.session.selectNextColor(-1),o(`Color ${e.session.selectedColorIndex+1}`),se();else if(R==="]")e.session.selectNextColor(1),o(`Color ${e.session.selectedColorIndex+1}`),se();else if(/^[0-9]$/.test(p))e.session.selectColor(p==="0"?9:Number(p)-1),o(`Color ${e.session.selectedColorIndex+1}`),se()},{release:!0});let Z=()=>{n();let G=e.session.dirty?" \u25CF":"";return`${e.session.filename}${G} ${e.session.size}\xD7${e.session.size}`},_t=()=>{switch(T().state){case"connecting":return"connecting";case"connected":return"live";case"error":return"error";default:return"off"}};return(()=>{var G=x("box"),p=x("box"),R=x("text"),ne=x("b"),Ae=x("box"),_e=x("text"),z=x("box"),be=x("box"),fe=x("pixel_grid"),Oe=x("box"),Y=x("text"),Ft=me("Blender:"),Se=me(" | ");return I(G,p),I(G,z),I(G,Oe),h(G,"width","100%"),h(G,"height","100%"),h(G,"flexDirection","column"),I(p,R),I(p,Ae),I(p,_e),h(p,"height",3),h(p,"paddingX",1),h(p,"paddingY",1),h(p,"flexDirection","row"),h(p,"justifyContent","space-between"),I(R,ne),I(ne,me("BUILD")),h(Ae,"height",1),h(Ae,"flexBasis",0),h(Ae,"flexGrow",1),h(Ae,"flexDirection","row"),h(Ae,"justifyContent","center"),H(Ae,re(Er,{id:"dashboard-wordmark",width:14,height:1,get backgroundColor(){return E.panel}})),H(_e,Z),I(z,be),h(z,"flexGrow",1),h(z,"flexDirection","row"),h(z,"padding",1),h(z,"gap",1),I(be,fe),h(be,"flexGrow",1),h(be,"overflow","hidden"),h(fe,"id","pixel-grid"),h(fe,"width","100%"),h(fe,"height","100%"),h(fe,"flexGrow",1),h(fe,"onCell",wt),H(z,re(rA,{get session(){return e.session},get colors(){return He()},refresh:ae,get visible(){return X()}}),null),H(G,re(nA,{get session(){return e.session},get colors(){return He()},refresh:ae,get visible(){return!X()}}),Oe),I(Oe,Y),h(Oe,"height",1),h(Oe,"paddingX",1),h(Oe,"flexDirection","row"),h(Oe,"justifyContent","space-between"),I(Y,Ft),I(Y,Se),H(Y,_t,Se),H(Y,s,null),H(Oe,re(At,{get when(){return s().length<Math.max(8,r().width-58)},get children(){var K=x("text"),Ke=me("-/+ zoom \xB7 ? help \xB7 Ctrl+S save \xB7 "),Pe=me("Q quit");return I(K,Ke),I(K,Pe),H(K,()=>e.onBack?"Esc artworks \xB7 ":"",Pe),xe((B)=>h(K,"fg",E.muted,B)),K}}),null),H(G,re(sA,{get width(){return r().width},get height(){return r().height},get visible(){return a()},get canGoBack(){return Boolean(e.onBack)}}),null),H(G,re(At,{get when(){return g()},get children(){return re(iA,{get width(){return r().width},get height(){return r().height},get value(){return y()},get error(){return C()},onInput:(K)=>{if(b(K),C())_("")},onSubmit:M,onCancel:ue})}}),null),xe((K)=>{var{background:Ke,panel:Pe}=E,B=T().state==="error"?E.warning:E.accentText,ot=ie()?E.warning:E.muted,mt=E.background,Gt=E.background,Ut=J(),jt=E.panelActive,de=s().startsWith("Save failed")||T().state==="error"?E.warning:E.textPink;return Ke!==K.e&&(K.e=h(G,"backgroundColor",Ke,K.e)),Pe!==K.t&&(K.t=h(p,"backgroundColor",Pe,K.t)),B!==K.a&&(K.a=h(R,"fg",B,K.a)),ot!==K.o&&(K.o=h(_e,"fg",ot,K.o)),mt!==K.i&&(K.i=h(z,"backgroundColor",mt,K.i)),Gt!==K.n&&(K.n=h(be,"backgroundColor",Gt,K.n)),Ut!==K.s&&(K.s=h(fe,"model",Ut,K.s)),jt!==K.h&&(K.h=h(Oe,"backgroundColor",jt,K.h)),de!==K.r&&(K.r=h(Y,"fg",de,K.r)),K},{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}),G})()}import{chmod as zf,mkdir as qf,readFile as eg,rename as tg,unlink as rg,writeFile as ng}from"fs/promises";import{homedir as sg}from"os";import{dirname as ig,join as xc}from"path";var hl=cu(dl(),1),{__extends:Uy,__assign:jy,__rest:er,__decorate:Hy,__param:Ky,__esDecorate:Wy,__runInitializers:Yy,__propKey:Qy,__setFunctionName:Jy,__metadata:Zy,__awaiter:Al,__generator:$y,__exportStar:Xy,__createBinding:Vy,__values:zy,__read:qy,__spread:ew,__spreadArrays:tw,__spreadArray:rw,__await:nw,__asyncGenerator:sw,__asyncDelegator:iw,__asyncValues:ow,__makeTemplateObject:aw,__importStar:lw,__importDefault:cw,__classPrivateFieldGet:uw,__classPrivateFieldSet:dw,__classPrivateFieldIn:hw,__addDisposableResource:Aw,__disposeResources:fw,__rewriteRelativeImportExtension:gw}=hl.default;var fl=(e)=>{if(e)return(...t)=>e(...t);return(...t)=>fetch(...t)};class fn 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 is extends fn{constructor(e){super("Failed to send a request to the Edge Function","FunctionsFetchError",e)}}class gn extends fn{constructor(e){super("Relay Error invoking the Edge Function","FunctionsRelayError",e)}}class mn extends fn{constructor(e){super("Edge Function returned a non-2xx status code","FunctionsHttpError",e)}}var An;(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"})(An||(An={}));class os{constructor(e,{headers:t={},customFetch:r,region:n=An.Any}={}){this.url=e,this.headers=t,this.region=n,this.fetch=fl(r)}setAuth(e){this.headers.Authorization=`Bearer ${e}`}invoke(e){return Al(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 g=new URL(`${this.url}/${t}`);if(A&&A!=="any")d["x-region"]=A,g.searchParams.set("forceFunctionRegion",A);let f;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",f=l;else if(typeof l==="string")d["Content-Type"]="text/plain",f=l;else if(typeof FormData<"u"&&l instanceof FormData)f=l;else d["Content-Type"]="application/json",f=JSON.stringify(l);else if(l&&typeof l!=="string"&&!(typeof Blob<"u"&&l instanceof Blob)&&!(l instanceof ArrayBuffer)&&!(typeof FormData<"u"&&l instanceof FormData))f=JSON.stringify(l);else f=l;let y=c;if(u)if(s=new AbortController,i=setTimeout(()=>s.abort(),u),c)y=s.signal,c.addEventListener("abort",()=>s.abort());else y=s.signal;let b=yield this.fetch(g.toString(),{method:a||"POST",headers:Object.assign(Object.assign(Object.assign({},d),this.headers),o),body:f,signal:y}).catch((v)=>{throw new is(v)}),C=b.headers.get("x-relay-error");if(C&&C==="true")throw new gn(b);if(!b.ok)throw new mn(b);let _=((n=b.headers.get("Content-Type"))!==null&&n!==void 0?n:"text/plain").split(";")[0].trim(),S;if(_==="application/json")S=yield b.json();else if(_==="application/octet-stream"||_==="application/pdf")S=yield b.blob();else if(_==="text/event-stream")S=b;else if(_==="multipart/form-data")S=yield b.formData();else S=yield b.text();return{data:S,error:null,response:b}}catch(o){return{data:null,error:o,response:o instanceof mn||o instanceof gn?o.context:void 0}}finally{if(i)clearTimeout(i)}})}}var gl=(e)=>Math.min(1000*2**e,30000),oA=[520,503],yl=["GET","HEAD","OPTIONS"],wl=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 ml(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 aA(e,t,r,n){if(!n||r>=3)return!1;if(!yl.includes(e))return!1;if(!oA.includes(t))return!1;return!0}var lA=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(!yl.includes(r.method))throw d;if(r.retryEnabled&&o<3){let A=gl(o);o++,await ml(A,r.signal);continue}throw d}if(aA(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:gl(o);await u.text(),o++,await ml(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,g,f,y;let _=(A=d===null||d===void 0?void 0:d.message)!==null&&A!==void 0?A:"",S=(g=d===null||d===void 0?void 0:d.code)!==null&&g!==void 0?g:"";if(l=`${(f=o===null||o===void 0?void 0:o.name)!==null&&f!==void 0?f:"FetchError"}: ${o===null||o===void 0?void 0:o.message}`,l+=`
28
28
 
29
- Caused by: ${(b=d===null||d===void 0?void 0:d.name)!==null&&b!==void 0?b:"Error"}: ${w}`,I)l+=` (${I})`;if(d===null||d===void 0?void 0:d.stack)l+=`
30
- ${d.stack}`}else{var p;l=(p=o===null||o===void 0?void 0:o.stack)!==null&&p!==void 0?p:""}let C=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)",C>this.urlLengthLimit)c+=`. Note: Your request URL is ${C} 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)",C>this.urlLengthLimit)c+=`. Your request URL is ${C} 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 Bl(r)}return{success:r===null,error:r,data:n,count:i,status:s,statusText:o}}returns(){return this}overrideTypes(){return this}},bA=class extends pA{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}},kl=new RegExp("[,()]"),kr=class extends bA{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"&&kl.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"&&kl.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}},yA=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 kr({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 kr({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 kr({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 kr({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 kr({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 pn(e){return pn=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},pn(e)}function wA(e,t){if(pn(e)!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t||"default");if(pn(n)!="object")return n;throw TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function _A(e){var t=wA(e,"string");return pn(t)=="symbol"?t:t+""}function vA(e,t,r){return(t=_A(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Rl(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 cs(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?Rl(Object(r),!0).forEach(function(n){vA(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Rl(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}var Ol=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),g=u===null||u===void 0?void 0:u.signal;if(g){if(g.aborted)return clearTimeout(A),l(c,u);let f=()=>{clearTimeout(A),d.abort()};return g.addEventListener("abort",f,{once:!0}),l(c,cs(cs({},u),{},{signal:d.signal})).finally(()=>{clearTimeout(A),g.removeEventListener("abort",f)})}return l(c,cs(cs({},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 yA(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=(g)=>g!==null&&typeof g==="object"&&(!Array.isArray(g)||g.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(([g,f])=>f!==void 0).map(([g,f])=>[g,Array.isArray(f)?`{${f.join(",")}}`:`${f}`]).forEach(([g,f])=>{l.searchParams.append(g,f)});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 kr({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 Nl{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:
29
+ Caused by: ${(y=d===null||d===void 0?void 0:d.name)!==null&&y!==void 0?y:"Error"}: ${_}`,S)l+=` (${S})`;if(d===null||d===void 0?void 0:d.stack)l+=`
30
+ ${d.stack}`}else{var b;l=(b=o===null||o===void 0?void 0:o.stack)!==null&&b!==void 0?b:""}let C=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)",C>this.urlLengthLimit)c+=`. Note: Your request URL is ${C} 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)",C>this.urlLengthLimit)c+=`. Your request URL is ${C} 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 wl(r)}return{success:r===null,error:r,data:n,count:i,status:s,statusText:o}}returns(){return this}overrideTypes(){return this}},cA=class extends lA{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}},pl=new RegExp("[,()]"),kr=class extends cA{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"&&pl.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"&&pl.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}},uA=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 kr({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 kr({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 kr({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 kr({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 kr({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 pn(e){return pn=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},pn(e)}function dA(e,t){if(pn(e)!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t||"default");if(pn(n)!="object")return n;throw TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function hA(e){var t=dA(e,"string");return pn(t)=="symbol"?t:t+""}function AA(e,t,r){return(t=hA(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function bl(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 as(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?bl(Object(r),!0).forEach(function(n){AA(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):bl(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}var _l=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),g=u===null||u===void 0?void 0:u.signal;if(g){if(g.aborted)return clearTimeout(A),l(c,u);let f=()=>{clearTimeout(A),d.abort()};return g.addEventListener("abort",f,{once:!0}),l(c,as(as({},u),{},{signal:d.signal})).finally(()=>{clearTimeout(A),g.removeEventListener("abort",f)})}return l(c,as(as({},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 uA(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=(g)=>g!==null&&typeof g==="object"&&(!Array.isArray(g)||g.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(([g,f])=>f!==void 0).map(([g,f])=>[g,Array.isArray(f)?`{${f.join(",")}}`:`${f}`]).forEach(([g,f])=>{l.searchParams.append(g,f)});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 kr({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 vl{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:
31
31
  import ws from "ws"
32
32
  new RealtimeClient(url, { transport: ws })`}}}return{type:"unsupported",error:"Unknown JavaScript runtime without WebSocket support.",workaround:"Ensure you're running in a supported environment (browser, Node.js, Deno) or provide a custom WebSocket implementation."}}static getWebSocketConstructor(){let e=this.detectEnvironment();if(e.constructor)return e.constructor;let t=e.error||"WebSocket not supported in this environment.";if(e.workaround)t+=`
33
33
 
34
- Suggested solution: ${e.workaround}`;throw Error(t)}static isWebSocketSupported(){try{let e=this.detectEnvironment();return e.type==="native"||e.type==="ws"}catch(e){return!1}}}var Mi=Nl;var Pl="2.103.0";var Dl=`realtime-js/${Pl}`,Ll="1.0.0",Fi="2.0.0",Ml=Fi;var Fl=1e4;var Gl=100;var It={closed:"closed",errored:"errored",joined:"joined",joining:"joining",leaving:"leaving"},us={close:"phx_close",error:"phx_error",join:"phx_join",reply:"phx_reply",leave:"phx_leave",access_token:"access_token"};var bn={connecting:"connecting",open:"open",closing:"closing",closed:"closed"};class ds{constructor(e){this.HEADER_LENGTH=1,this.USER_BROADCAST_PUSH_META_LENGTH=6,this.KINDS={userBroadcastPush:3,userBroadcast:4},this.BINARY_ENCODING=0,this.JSON_ENCODING=1,this.BROADCAST_EVENT="broadcast",this.allowedMetadataKeys=[],this.allowedMetadataKeys=e!==null&&e!==void 0?e:[]}encode(e,t){if(e.event===this.BROADCAST_EVENT&&!(e.payload instanceof ArrayBuffer)&&typeof e.payload.event==="string")return t(this._binaryEncodeUserBroadcastPush(e));let r=[e.join_ref,e.ref,e.topic,e.event,e.payload];return t(JSON.stringify(r))}_binaryEncodeUserBroadcastPush(e){var t;if(this._isArrayBuffer((t=e.payload)===null||t===void 0?void 0:t.payload))return this._encodeBinaryUserBroadcastPush(e);else return this._encodeJsonUserBroadcastPush(e)}_encodeBinaryUserBroadcastPush(e){var t,r;let n=(r=(t=e.payload)===null||t===void 0?void 0:t.payload)!==null&&r!==void 0?r:new ArrayBuffer(0);return this._encodeUserBroadcastPush(e,this.BINARY_ENCODING,n)}_encodeJsonUserBroadcastPush(e){var t,r;let n=(r=(t=e.payload)===null||t===void 0?void 0:t.payload)!==null&&r!==void 0?r:{},s=new TextEncoder().encode(JSON.stringify(n)).buffer;return this._encodeUserBroadcastPush(e,this.JSON_ENCODING,s)}_encodeUserBroadcastPush(e,t,r){var n,i;let s=e.topic,o=(n=e.ref)!==null&&n!==void 0?n:"",a=(i=e.join_ref)!==null&&i!==void 0?i:"",l=e.payload.event,c=this.allowedMetadataKeys?this._pick(e.payload,this.allowedMetadataKeys):{},u=Object.keys(c).length===0?"":JSON.stringify(c);if(a.length>255)throw Error(`joinRef length ${a.length} exceeds maximum of 255`);if(o.length>255)throw Error(`ref length ${o.length} exceeds maximum of 255`);if(s.length>255)throw Error(`topic length ${s.length} exceeds maximum of 255`);if(l.length>255)throw Error(`userEvent length ${l.length} exceeds maximum of 255`);if(u.length>255)throw Error(`metadata length ${u.length} exceeds maximum of 255`);let d=this.USER_BROADCAST_PUSH_META_LENGTH+a.length+o.length+s.length+l.length+u.length,A=new ArrayBuffer(this.HEADER_LENGTH+d),g=new DataView(A),f=0;g.setUint8(f++,this.KINDS.userBroadcastPush),g.setUint8(f++,a.length),g.setUint8(f++,o.length),g.setUint8(f++,s.length),g.setUint8(f++,l.length),g.setUint8(f++,u.length),g.setUint8(f++,t),Array.from(a,(p)=>g.setUint8(f++,p.charCodeAt(0))),Array.from(o,(p)=>g.setUint8(f++,p.charCodeAt(0))),Array.from(s,(p)=>g.setUint8(f++,p.charCodeAt(0))),Array.from(l,(p)=>g.setUint8(f++,p.charCodeAt(0))),Array.from(u,(p)=>g.setUint8(f++,p.charCodeAt(0)));var b=new Uint8Array(A.byteLength+r.byteLength);return b.set(new Uint8Array(A),0),b.set(new Uint8Array(r),A.byteLength),b.buffer}decode(e,t){if(this._isArrayBuffer(e)){let r=this._binaryDecode(e);return t(r)}if(typeof e==="string"){let r=JSON.parse(e),[n,i,s,o,a]=r;return t({join_ref:n,ref:i,topic:s,event:o,payload:a})}return t({})}_binaryDecode(e){let t=new DataView(e),r=t.getUint8(0),n=new TextDecoder;switch(r){case this.KINDS.userBroadcast:return this._decodeUserBroadcast(e,t,n)}}_decodeUserBroadcast(e,t,r){let n=t.getUint8(1),i=t.getUint8(2),s=t.getUint8(3),o=t.getUint8(4),a=this.HEADER_LENGTH+4,l=r.decode(e.slice(a,a+n));a=a+n;let c=r.decode(e.slice(a,a+i));a=a+i;let u=r.decode(e.slice(a,a+s));a=a+s;let d=e.slice(a,e.byteLength),A=o===this.JSON_ENCODING?JSON.parse(r.decode(d)):d,g={type:this.BROADCAST_EVENT,event:c,payload:A};if(s>0)g.meta=JSON.parse(u);return{join_ref:null,ref:null,topic:l,event:this.BROADCAST_EVENT,payload:g}}_isArrayBuffer(e){var t;return e instanceof ArrayBuffer||((t=e===null||e===void 0?void 0:e.constructor)===null||t===void 0?void 0:t.name)==="ArrayBuffer"}_pick(e,t){if(!e||typeof e!=="object")return{};return Object.fromEntries(Object.entries(e).filter(([r])=>t.includes(r)))}}var we;(function(e){e.abstime="abstime",e.bool="bool",e.date="date",e.daterange="daterange",e.float4="float4",e.float8="float8",e.int2="int2",e.int4="int4",e.int4range="int4range",e.int8="int8",e.int8range="int8range",e.json="json",e.jsonb="jsonb",e.money="money",e.numeric="numeric",e.oid="oid",e.reltime="reltime",e.text="text",e.time="time",e.timestamp="timestamp",e.timestamptz="timestamptz",e.timetz="timetz",e.tsrange="tsrange",e.tstzrange="tstzrange"})(we||(we={}));var Ui=(e,t,r={})=>{var n;let i=(n=r.skipTypes)!==null&&n!==void 0?n:[];if(!t)return{};return Object.keys(t).reduce((s,o)=>(s[o]=CA(o,e,t,i),s),{})},CA=(e,t,r,n)=>{let i=t.find((a)=>a.name===e),s=i===null||i===void 0?void 0:i.type,o=r[e];if(s&&!n.includes(s))return Ul(s,o);return Gi(o)},Ul=(e,t)=>{if(e.charAt(0)==="_"){let r=e.slice(1,e.length);return xA(t,r)}switch(e){case we.bool:return EA(t);case we.float4:case we.float8:case we.int2:case we.int4:case we.int8:case we.numeric:case we.oid:return SA(t);case we.json:case we.jsonb:return IA(t);case we.timestamp:return kA(t);case we.abstime:case we.date:case we.daterange:case we.int4range:case we.int8range:case we.money:case we.reltime:case we.text:case we.time:case we.timestamptz:case we.timetz:case we.tsrange:case we.tstzrange:return Gi(t);default:return Gi(t)}},Gi=(e)=>e,EA=(e)=>{switch(e){case"t":return!0;case"f":return!1;default:return e}},SA=(e)=>{if(typeof e==="string"){let t=parseFloat(e);if(!Number.isNaN(t))return t}return e},IA=(e)=>{if(typeof e==="string")try{return JSON.parse(e)}catch(t){return e}return e},xA=(e,t)=>{if(typeof e!=="string")return e;let r=e.length-1,n=e[r];if(e[0]==="{"&&n==="}"){let s,o=e.slice(1,r);try{s=JSON.parse("["+o+"]")}catch(a){s=o?o.split(","):[]}return s.map((a)=>Ul(t,a))}return e},kA=(e)=>{if(typeof e==="string")return e.replace(" ","T");return e},hs=(e)=>{let t=new URL(e);if(t.protocol=t.protocol.replace(/^ws/i,"http"),t.pathname=t.pathname.replace(/\/+$/,"").replace(/\/socket\/websocket$/i,"").replace(/\/socket$/i,"").replace(/\/websocket$/i,""),t.pathname===""||t.pathname==="/")t.pathname="/api/broadcast";else t.pathname=t.pathname+"/api/broadcast";return t.href};var yn=(e)=>{if(typeof e==="function")return e;else return function(){return e}},TA=typeof self<"u"?self:null,Tr=typeof window<"u"?window:null,xt=TA||Tr||globalThis,BA="2.0.0",OA=1e4,NA=1000,kt={connecting:0,open:1,closing:2,closed:3},at={closed:"closed",errored:"errored",joined:"joined",joining:"joining",leaving:"leaving"},Ft={close:"phx_close",error:"phx_error",join:"phx_join",reply:"phx_reply",leave:"phx_leave"},ji={longpoll:"longpoll",websocket:"websocket"},PA={complete:4},Hi="base64url.bearer.phx.",As=class{constructor(e,t,r,n){this.channel=e,this.event=t,this.payload=r||function(){return{}},this.receivedResp=null,this.timeout=n,this.timeoutTimer=null,this.recHooks=[],this.sent=!1,this.ref=void 0}resend(e){this.timeout=e,this.reset(),this.send()}send(){if(this.hasReceived("timeout"))return;this.startTimeout(),this.sent=!0,this.channel.socket.push({topic:this.channel.topic,event:this.event,payload:this.payload(),ref:this.ref,join_ref:this.channel.joinRef()})}receive(e,t){if(this.hasReceived(e))t(this.receivedResp.response);return this.recHooks.push({status:e,callback:t}),this}reset(){this.cancelRefEvent(),this.ref=null,this.refEvent=null,this.receivedResp=null,this.sent=!1}destroy(){this.cancelRefEvent(),this.cancelTimeout()}matchReceive({status:e,response:t,_ref:r}){this.recHooks.filter((n)=>n.status===e).forEach((n)=>n.callback(t))}cancelRefEvent(){if(!this.refEvent)return;this.channel.off(this.refEvent)}cancelTimeout(){clearTimeout(this.timeoutTimer),this.timeoutTimer=null}startTimeout(){if(this.timeoutTimer)this.cancelTimeout();this.ref=this.channel.socket.makeRef(),this.refEvent=this.channel.replyEventName(this.ref),this.channel.on(this.refEvent,(e)=>{this.cancelRefEvent(),this.cancelTimeout(),this.receivedResp=e,this.matchReceive(e)}),this.timeoutTimer=setTimeout(()=>{this.trigger("timeout",{})},this.timeout)}hasReceived(e){return this.receivedResp&&this.receivedResp.status===e}trigger(e,t){this.channel.trigger(this.refEvent,{status:e,response:t})}},jl=class{constructor(e,t){this.callback=e,this.timerCalc=t,this.timer=void 0,this.tries=0}reset(){this.tries=0,clearTimeout(this.timer)}scheduleTimeout(){clearTimeout(this.timer),this.timer=setTimeout(()=>{this.tries=this.tries+1,this.callback()},this.timerCalc(this.tries+1))}},DA=class{constructor(e,t,r){this.state=at.closed,this.topic=e,this.params=yn(t||{}),this.socket=r,this.bindings=[],this.bindingRef=0,this.timeout=this.socket.timeout,this.joinedOnce=!1,this.joinPush=new As(this,Ft.join,this.params,this.timeout),this.pushBuffer=[],this.stateChangeRefs=[],this.rejoinTimer=new jl(()=>{if(this.socket.isConnected())this.rejoin()},this.socket.rejoinAfterMs),this.stateChangeRefs.push(this.socket.onError(()=>this.rejoinTimer.reset())),this.stateChangeRefs.push(this.socket.onOpen(()=>{if(this.rejoinTimer.reset(),this.isErrored())this.rejoin()})),this.joinPush.receive("ok",()=>{this.state=at.joined,this.rejoinTimer.reset(),this.pushBuffer.forEach((n)=>n.send()),this.pushBuffer=[]}),this.joinPush.receive("error",(n)=>{if(this.state=at.errored,this.socket.hasLogger())this.socket.log("channel",`error ${this.topic}`,n);if(this.socket.isConnected())this.rejoinTimer.scheduleTimeout()}),this.onClose(()=>{if(this.rejoinTimer.reset(),this.socket.hasLogger())this.socket.log("channel",`close ${this.topic}`);this.state=at.closed,this.socket.remove(this)}),this.onError((n)=>{if(this.socket.hasLogger())this.socket.log("channel",`error ${this.topic}`,n);if(this.isJoining())this.joinPush.reset();if(this.state=at.errored,this.socket.isConnected())this.rejoinTimer.scheduleTimeout()}),this.joinPush.receive("timeout",()=>{if(this.socket.hasLogger())this.socket.log("channel",`timeout ${this.topic}`,this.joinPush.timeout);if(new As(this,Ft.leave,yn({}),this.timeout).send(),this.state=at.errored,this.joinPush.reset(),this.socket.isConnected())this.rejoinTimer.scheduleTimeout()}),this.on(Ft.reply,(n,i)=>{this.trigger(this.replyEventName(i),n)})}join(e=this.timeout){if(this.joinedOnce)throw Error("tried to join multiple times. 'join' can only be called a single time per channel instance");else return this.timeout=e,this.joinedOnce=!0,this.rejoin(),this.joinPush}teardown(){this.pushBuffer.forEach((e)=>e.destroy()),this.pushBuffer=[],this.rejoinTimer.reset(),this.joinPush.destroy(),this.state=at.closed,this.bindings=[]}onClose(e){this.on(Ft.close,e)}onError(e){return this.on(Ft.error,(t)=>e(t))}on(e,t){let r=this.bindingRef++;return this.bindings.push({event:e,ref:r,callback:t}),r}off(e,t){this.bindings=this.bindings.filter((r)=>!(r.event===e&&(typeof t>"u"||t===r.ref)))}canPush(){return this.socket.isConnected()&&this.isJoined()}push(e,t,r=this.timeout){if(t=t||{},!this.joinedOnce)throw Error(`tried to push '${e}' to '${this.topic}' before joining. Use channel.join() before pushing events`);let n=new As(this,e,function(){return t},r);if(this.canPush())n.send();else n.startTimeout(),this.pushBuffer.push(n);return n}leave(e=this.timeout){this.rejoinTimer.reset(),this.joinPush.cancelTimeout(),this.state=at.leaving;let t=()=>{if(this.socket.hasLogger())this.socket.log("channel",`leave ${this.topic}`);this.trigger(Ft.close,"leave")},r=new As(this,Ft.leave,yn({}),e);if(r.receive("ok",()=>t()).receive("timeout",()=>t()),r.send(),!this.canPush())r.trigger("ok",{});return r}onMessage(e,t,r){return t}filterBindings(e,t,r){return!0}isMember(e,t,r,n){if(this.topic!==e)return!1;if(n&&n!==this.joinRef()){if(this.socket.hasLogger())this.socket.log("channel","dropping outdated message",{topic:e,event:t,payload:r,joinRef:n});return!1}else return!0}joinRef(){return this.joinPush.ref}rejoin(e=this.timeout){if(this.isLeaving())return;this.socket.leaveOpenTopic(this.topic),this.state=at.joining,this.joinPush.resend(e)}trigger(e,t,r,n){let i=this.onMessage(e,t,r,n);if(t&&!i)throw Error("channel onMessage callbacks must return the payload, modified or unmodified");let s=this.bindings.filter((o)=>o.event===e&&this.filterBindings(o,t,r));for(let o=0;o<s.length;o++)s[o].callback(i,r,n||this.joinRef())}replyEventName(e){return`chan_reply_${e}`}isClosed(){return this.state===at.closed}isErrored(){return this.state===at.errored}isJoined(){return this.state===at.joined}isJoining(){return this.state===at.joining}isLeaving(){return this.state===at.leaving}},gs=class{static request(e,t,r,n,i,s,o){if(xt.XDomainRequest){let a=new xt.XDomainRequest;return this.xdomainRequest(a,e,t,n,i,s,o)}else if(xt.XMLHttpRequest){let a=new xt.XMLHttpRequest;return this.xhrRequest(a,e,t,r,n,i,s,o)}else if(xt.fetch&&xt.AbortController)return this.fetchRequest(e,t,r,n,i,s,o);else throw Error("No suitable XMLHttpRequest implementation found")}static fetchRequest(e,t,r,n,i,s,o){let a={method:e,headers:r,body:n},l=null;if(i){l=new AbortController;let c=setTimeout(()=>l.abort(),i);a.signal=l.signal}return xt.fetch(t,a).then((c)=>c.text()).then((c)=>this.parseJSON(c)).then((c)=>o&&o(c)).catch((c)=>{if(c.name==="AbortError"&&s)s();else o&&o(null)}),l}static xdomainRequest(e,t,r,n,i,s,o){if(e.timeout=i,e.open(t,r),e.onload=()=>{let a=this.parseJSON(e.responseText);o&&o(a)},s)e.ontimeout=s;return e.onprogress=()=>{},e.send(n),e}static xhrRequest(e,t,r,n,i,s,o,a){e.open(t,r,!0),e.timeout=s;for(let[l,c]of Object.entries(n))e.setRequestHeader(l,c);if(e.onerror=()=>a&&a(null),e.onreadystatechange=()=>{if(e.readyState===PA.complete&&a){let l=this.parseJSON(e.responseText);a(l)}},o)e.ontimeout=o;return e.send(i),e}static parseJSON(e){if(!e||e==="")return null;try{return JSON.parse(e)}catch{return console&&console.log("failed to parse JSON response",e),null}}static serialize(e,t){let r=[];for(var n in e){if(!Object.prototype.hasOwnProperty.call(e,n))continue;let i=t?`${t}[${n}]`:n,s=e[n];if(typeof s==="object")r.push(this.serialize(s,i));else r.push(encodeURIComponent(i)+"="+encodeURIComponent(s))}return r.join("&")}static appendParams(e,t){if(Object.keys(t).length===0)return e;let r=e.match(/\?/)?"&":"?";return`${e}${r}${this.serialize(t)}`}},LA=(e)=>{let t="",r=new Uint8Array(e),n=r.byteLength;for(let i=0;i<n;i++)t+=String.fromCharCode(r[i]);return btoa(t)},Rr=class{constructor(e,t){if(t&&t.length===2&&t[1].startsWith(Hi))this.authToken=atob(t[1].slice(Hi.length));this.endPoint=null,this.token=null,this.skipHeartbeat=!0,this.reqs=new Set,this.awaitingBatchAck=!1,this.currentBatch=null,this.currentBatchTimer=null,this.batchBuffer=[],this.onopen=function(){},this.onerror=function(){},this.onmessage=function(){},this.onclose=function(){},this.pollEndpoint=this.normalizeEndpoint(e),this.readyState=kt.connecting,setTimeout(()=>this.poll(),0)}normalizeEndpoint(e){return e.replace("ws://","http://").replace("wss://","https://").replace(new RegExp("(.*)/"+ji.websocket),"$1/"+ji.longpoll)}endpointURL(){return gs.appendParams(this.pollEndpoint,{token:this.token})}closeAndRetry(e,t,r){this.close(e,t,r),this.readyState=kt.connecting}ontimeout(){this.onerror("timeout"),this.closeAndRetry(1005,"timeout",!1)}isActive(){return this.readyState===kt.open||this.readyState===kt.connecting}poll(){let e={Accept:"application/json"};if(this.authToken)e["X-Phoenix-AuthToken"]=this.authToken;this.ajax("GET",e,null,()=>this.ontimeout(),(t)=>{if(t){var{status:r,token:n,messages:i}=t;if(r===410&&this.token!==null){this.onerror(410),this.closeAndRetry(3410,"session_gone",!1);return}this.token=n}else r=0;switch(r){case 200:i.forEach((s)=>{setTimeout(()=>this.onmessage({data:s}),0)}),this.poll();break;case 204:this.poll();break;case 410:this.readyState=kt.open,this.onopen({}),this.poll();break;case 403:this.onerror(403),this.close(1008,"forbidden",!1);break;case 0:case 500:this.onerror(500),this.closeAndRetry(1011,"internal server error",500);break;default:throw Error(`unhandled poll status ${r}`)}})}send(e){if(typeof e!=="string")e=LA(e);if(this.currentBatch)this.currentBatch.push(e);else if(this.awaitingBatchAck)this.batchBuffer.push(e);else this.currentBatch=[e],this.currentBatchTimer=setTimeout(()=>{this.batchSend(this.currentBatch),this.currentBatch=null},0)}batchSend(e){this.awaitingBatchAck=!0,this.ajax("POST",{"Content-Type":"application/x-ndjson"},e.join(`
35
- `),()=>this.onerror("timeout"),(t)=>{if(this.awaitingBatchAck=!1,!t||t.status!==200)this.onerror(t&&t.status),this.closeAndRetry(1011,"internal server error",!1);else if(this.batchBuffer.length>0)this.batchSend(this.batchBuffer),this.batchBuffer=[]})}close(e,t,r){for(let i of this.reqs)i.abort();this.readyState=kt.closed;let n=Object.assign({code:1000,reason:void 0,wasClean:!0},{code:e,reason:t,wasClean:r});if(this.batchBuffer=[],clearTimeout(this.currentBatchTimer),this.currentBatchTimer=null,typeof CloseEvent<"u")this.onclose(new CloseEvent("close",n));else this.onclose(n)}ajax(e,t,r,n,i){let s,o=()=>{this.reqs.delete(s),n()};s=gs.request(e,this.endpointURL(),t,r,this.timeout,o,(a)=>{if(this.reqs.delete(s),this.isActive())i(a)}),this.reqs.add(s)}},Hl=class e{constructor(t,r={}){let n=r.events||{state:"presence_state",diff:"presence_diff"};this.state={},this.pendingDiffs=[],this.channel=t,this.joinRef=null,this.caller={onJoin:function(){},onLeave:function(){},onSync:function(){}},this.channel.on(n.state,(i)=>{let{onJoin:s,onLeave:o,onSync:a}=this.caller;this.joinRef=this.channel.joinRef(),this.state=e.syncState(this.state,i,s,o),this.pendingDiffs.forEach((l)=>{this.state=e.syncDiff(this.state,l,s,o)}),this.pendingDiffs=[],a()}),this.channel.on(n.diff,(i)=>{let{onJoin:s,onLeave:o,onSync:a}=this.caller;if(this.inPendingSyncState())this.pendingDiffs.push(i);else this.state=e.syncDiff(this.state,i,s,o),a()})}onJoin(t){this.caller.onJoin=t}onLeave(t){this.caller.onLeave=t}onSync(t){this.caller.onSync=t}list(t){return e.list(this.state,t)}inPendingSyncState(){return!this.joinRef||this.joinRef!==this.channel.joinRef()}static syncState(t,r,n,i){let s=this.clone(t),o={},a={};return this.map(s,(l,c)=>{if(!r[l])a[l]=c}),this.map(r,(l,c)=>{let u=s[l];if(u){let d=c.metas.map((b)=>b.phx_ref),A=u.metas.map((b)=>b.phx_ref),g=c.metas.filter((b)=>A.indexOf(b.phx_ref)<0),f=u.metas.filter((b)=>d.indexOf(b.phx_ref)<0);if(g.length>0)o[l]=c,o[l].metas=g;if(f.length>0)a[l]=this.clone(u),a[l].metas=f}else o[l]=c}),this.syncDiff(s,{joins:o,leaves:a},n,i)}static syncDiff(t,r,n,i){let{joins:s,leaves:o}=this.clone(r);if(!n)n=function(){};if(!i)i=function(){};return this.map(s,(a,l)=>{let c=t[a];if(t[a]=this.clone(l),c){let u=t[a].metas.map((A)=>A.phx_ref),d=c.metas.filter((A)=>u.indexOf(A.phx_ref)<0);t[a].metas.unshift(...d)}n(a,c,l)}),this.map(o,(a,l)=>{let c=t[a];if(!c)return;let u=l.metas.map((d)=>d.phx_ref);if(c.metas=c.metas.filter((d)=>u.indexOf(d.phx_ref)<0),i(a,c,l),c.metas.length===0)delete t[a]}),t}static list(t,r){if(!r)r=function(n,i){return i};return this.map(t,(n,i)=>r(n,i))}static map(t,r){return Object.getOwnPropertyNames(t).map((n)=>r(n,t[n]))}static clone(t){return JSON.parse(JSON.stringify(t))}},fs={HEADER_LENGTH:1,META_LENGTH:4,KINDS:{push:0,reply:1,broadcast:2},encode(e,t){if(e.payload.constructor===ArrayBuffer)return t(this.binaryEncode(e));else{let r=[e.join_ref,e.ref,e.topic,e.event,e.payload];return t(JSON.stringify(r))}},decode(e,t){if(e.constructor===ArrayBuffer)return t(this.binaryDecode(e));else{let[r,n,i,s,o]=JSON.parse(e);return t({join_ref:r,ref:n,topic:i,event:s,payload:o})}},binaryEncode(e){let{join_ref:t,ref:r,event:n,topic:i,payload:s}=e,o=this.META_LENGTH+t.length+r.length+i.length+n.length,a=new ArrayBuffer(this.HEADER_LENGTH+o),l=new DataView(a),c=0;l.setUint8(c++,this.KINDS.push),l.setUint8(c++,t.length),l.setUint8(c++,r.length),l.setUint8(c++,i.length),l.setUint8(c++,n.length),Array.from(t,(d)=>l.setUint8(c++,d.charCodeAt(0))),Array.from(r,(d)=>l.setUint8(c++,d.charCodeAt(0))),Array.from(i,(d)=>l.setUint8(c++,d.charCodeAt(0))),Array.from(n,(d)=>l.setUint8(c++,d.charCodeAt(0)));var u=new Uint8Array(a.byteLength+s.byteLength);return u.set(new Uint8Array(a),0),u.set(new Uint8Array(s),a.byteLength),u.buffer},binaryDecode(e){let t=new DataView(e),r=t.getUint8(0),n=new TextDecoder;switch(r){case this.KINDS.push:return this.decodePush(e,t,n);case this.KINDS.reply:return this.decodeReply(e,t,n);case this.KINDS.broadcast:return this.decodeBroadcast(e,t,n)}},decodePush(e,t,r){let n=t.getUint8(1),i=t.getUint8(2),s=t.getUint8(3),o=this.HEADER_LENGTH+this.META_LENGTH-1,a=r.decode(e.slice(o,o+n));o=o+n;let l=r.decode(e.slice(o,o+i));o=o+i;let c=r.decode(e.slice(o,o+s));o=o+s;let u=e.slice(o,e.byteLength);return{join_ref:a,ref:null,topic:l,event:c,payload:u}},decodeReply(e,t,r){let n=t.getUint8(1),i=t.getUint8(2),s=t.getUint8(3),o=t.getUint8(4),a=this.HEADER_LENGTH+this.META_LENGTH,l=r.decode(e.slice(a,a+n));a=a+n;let c=r.decode(e.slice(a,a+i));a=a+i;let u=r.decode(e.slice(a,a+s));a=a+s;let d=r.decode(e.slice(a,a+o));a=a+o;let A=e.slice(a,e.byteLength),g={status:d,response:A};return{join_ref:l,ref:c,topic:u,event:Ft.reply,payload:g}},decodeBroadcast(e,t,r){let n=t.getUint8(1),i=t.getUint8(2),s=this.HEADER_LENGTH+2,o=r.decode(e.slice(s,s+n));s=s+n;let a=r.decode(e.slice(s,s+i));s=s+i;let l=e.slice(s,e.byteLength);return{join_ref:null,ref:null,topic:o,event:a,payload:l}}},Kl=class{constructor(e,t={}){if(this.stateChangeCallbacks={open:[],close:[],error:[],message:[]},this.channels=[],this.sendBuffer=[],this.ref=0,this.fallbackRef=null,this.timeout=t.timeout||OA,this.transport=t.transport||xt.WebSocket||Rr,this.conn=void 0,this.primaryPassedHealthCheck=!1,this.longPollFallbackMs=t.longPollFallbackMs,this.fallbackTimer=null,this.sessionStore=t.sessionStorage||xt&&xt.sessionStorage,this.establishedConnections=0,this.defaultEncoder=fs.encode.bind(fs),this.defaultDecoder=fs.decode.bind(fs),this.closeWasClean=!0,this.disconnecting=!1,this.binaryType=t.binaryType||"arraybuffer",this.connectClock=1,this.pageHidden=!1,this.encode=void 0,this.decode=void 0,this.transport!==Rr)this.encode=t.encode||this.defaultEncoder,this.decode=t.decode||this.defaultDecoder;else this.encode=this.defaultEncoder,this.decode=this.defaultDecoder;let r=null;if(Tr&&Tr.addEventListener)Tr.addEventListener("pagehide",(n)=>{if(this.conn)this.disconnect(),r=this.connectClock}),Tr.addEventListener("pageshow",(n)=>{if(r===this.connectClock)r=null,this.connect()}),Tr.addEventListener("visibilitychange",()=>{if(document.visibilityState==="hidden")this.pageHidden=!0;else if(this.pageHidden=!1,!this.isConnected()&&!this.closeWasClean)this.teardown(()=>this.connect())});if(this.heartbeatIntervalMs=t.heartbeatIntervalMs||30000,this.autoSendHeartbeat=t.autoSendHeartbeat??!0,this.heartbeatCallback=t.heartbeatCallback??(()=>{}),this.rejoinAfterMs=(n)=>{if(t.rejoinAfterMs)return t.rejoinAfterMs(n);else return[1000,2000,5000][n-1]||1e4},this.reconnectAfterMs=(n)=>{if(t.reconnectAfterMs)return t.reconnectAfterMs(n);else return[10,50,100,150,200,250,500,1000,2000][n-1]||5000},this.logger=t.logger||null,!this.logger&&t.debug)this.logger=(n,i,s)=>{console.log(`${n}: ${i}`,s)};this.longpollerTimeout=t.longpollerTimeout||20000,this.params=yn(t.params||{}),this.endPoint=`${e}/${ji.websocket}`,this.vsn=t.vsn||BA,this.heartbeatTimeoutTimer=null,this.heartbeatTimer=null,this.heartbeatSentAt=null,this.pendingHeartbeatRef=null,this.reconnectTimer=new jl(()=>{if(this.pageHidden){this.log("Not reconnecting as page is hidden!"),this.teardown();return}this.teardown(async()=>{if(t.beforeReconnect)await t.beforeReconnect();this.connect()})},this.reconnectAfterMs),this.authToken=t.authToken}getLongPollTransport(){return Rr}replaceTransport(e){if(this.connectClock++,this.closeWasClean=!0,clearTimeout(this.fallbackTimer),this.reconnectTimer.reset(),this.conn)this.conn.close(),this.conn=null;this.transport=e}protocol(){return location.protocol.match(/^https/)?"wss":"ws"}endPointURL(){let e=gs.appendParams(gs.appendParams(this.endPoint,this.params()),{vsn:this.vsn});if(e.charAt(0)!=="/")return e;if(e.charAt(1)==="/")return`${this.protocol()}:${e}`;return`${this.protocol()}://${location.host}${e}`}disconnect(e,t,r){this.connectClock++,this.disconnecting=!0,this.closeWasClean=!0,clearTimeout(this.fallbackTimer),this.reconnectTimer.reset(),this.teardown(()=>{this.disconnecting=!1,e&&e()},t,r)}connect(e){if(e)console&&console.log("passing params to connect is deprecated. Instead pass :params to the Socket constructor"),this.params=yn(e);if(this.conn&&!this.disconnecting)return;if(this.longPollFallbackMs&&this.transport!==Rr)this.connectWithFallback(Rr,this.longPollFallbackMs);else this.transportConnect()}log(e,t,r){this.logger&&this.logger(e,t,r)}hasLogger(){return this.logger!==null}onOpen(e){let t=this.makeRef();return this.stateChangeCallbacks.open.push([t,e]),t}onClose(e){let t=this.makeRef();return this.stateChangeCallbacks.close.push([t,e]),t}onError(e){let t=this.makeRef();return this.stateChangeCallbacks.error.push([t,e]),t}onMessage(e){let t=this.makeRef();return this.stateChangeCallbacks.message.push([t,e]),t}onHeartbeat(e){this.heartbeatCallback=e}ping(e){if(!this.isConnected())return!1;let t=this.makeRef(),r=Date.now();this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:t});let n=this.onMessage((i)=>{if(i.ref===t)this.off([n]),e(Date.now()-r)});return!0}transportName(e){switch(e){case Rr:return"LongPoll";default:return e.name}}transportConnect(){this.connectClock++,this.closeWasClean=!1;let e=void 0;if(this.authToken)e=["phoenix",`${Hi}${btoa(this.authToken).replace(/=/g,"")}`];this.conn=new this.transport(this.endPointURL(),e),this.conn.binaryType=this.binaryType,this.conn.timeout=this.longpollerTimeout,this.conn.onopen=()=>this.onConnOpen(),this.conn.onerror=(t)=>this.onConnError(t),this.conn.onmessage=(t)=>this.onConnMessage(t),this.conn.onclose=(t)=>this.onConnClose(t)}getSession(e){return this.sessionStore&&this.sessionStore.getItem(e)}storeSession(e,t){this.sessionStore&&this.sessionStore.setItem(e,t)}connectWithFallback(e,t=2500){clearTimeout(this.fallbackTimer);let r=!1,n=!0,i,s,o=this.transportName(e),a=(l)=>{this.log("transport",`falling back to ${o}...`,l),this.off([i,s]),n=!1,this.replaceTransport(e),this.transportConnect()};if(this.getSession(`phx:fallback:${o}`))return a("memorized");if(this.fallbackTimer=setTimeout(a,t),s=this.onError((l)=>{if(this.log("transport","error",l),n&&!r)clearTimeout(this.fallbackTimer),a(l)}),this.fallbackRef)this.off([this.fallbackRef]);this.fallbackRef=this.onOpen(()=>{if(r=!0,!n){let l=this.transportName(e);if(!this.primaryPassedHealthCheck)this.storeSession(`phx:fallback:${l}`,"true");return this.log("transport",`established ${l} fallback`)}clearTimeout(this.fallbackTimer),this.fallbackTimer=setTimeout(a,t),this.ping((l)=>{this.log("transport","connected to primary after",l),this.primaryPassedHealthCheck=!0,clearTimeout(this.fallbackTimer)})}),this.transportConnect()}clearHeartbeats(){clearTimeout(this.heartbeatTimer),clearTimeout(this.heartbeatTimeoutTimer)}onConnOpen(){if(this.hasLogger())this.log("transport",`connected to ${this.endPointURL()}`);if(this.closeWasClean=!1,this.disconnecting=!1,this.establishedConnections++,this.flushSendBuffer(),this.reconnectTimer.reset(),this.autoSendHeartbeat)this.resetHeartbeat();this.triggerStateCallbacks("open")}heartbeatTimeout(){if(this.pendingHeartbeatRef){if(this.pendingHeartbeatRef=null,this.heartbeatSentAt=null,this.hasLogger())this.log("transport","heartbeat timeout. Attempting to re-establish connection");try{this.heartbeatCallback("timeout")}catch(e){this.log("error","error in heartbeat callback",e)}this.triggerChanError(),this.closeWasClean=!1,this.teardown(()=>this.reconnectTimer.scheduleTimeout(),NA,"heartbeat timeout")}}resetHeartbeat(){if(this.conn&&this.conn.skipHeartbeat)return;this.pendingHeartbeatRef=null,this.clearHeartbeats(),this.heartbeatTimer=setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs)}teardown(e,t,r){if(!this.conn)return e&&e();let n=this.conn;this.waitForBufferDone(n,()=>{if(t)n.close(t,r||"");else n.close();this.waitForSocketClosed(n,()=>{if(this.conn===n)this.conn.onopen=function(){},this.conn.onerror=function(){},this.conn.onmessage=function(){},this.conn.onclose=function(){},this.conn=null;e&&e()})})}waitForBufferDone(e,t,r=1){if(r===5||!e.bufferedAmount){t();return}setTimeout(()=>{this.waitForBufferDone(e,t,r+1)},150*r)}waitForSocketClosed(e,t,r=1){if(r===5||e.readyState===kt.closed){t();return}setTimeout(()=>{this.waitForSocketClosed(e,t,r+1)},150*r)}onConnClose(e){if(this.conn)this.conn.onclose=()=>{};if(this.hasLogger())this.log("transport","close",e);if(this.triggerChanError(),this.clearHeartbeats(),!this.closeWasClean)this.reconnectTimer.scheduleTimeout();this.triggerStateCallbacks("close",e)}onConnError(e){if(this.hasLogger())this.log("transport",e);let t=this.transport,r=this.establishedConnections;if(this.triggerStateCallbacks("error",e,t,r),t===this.transport||r>0)this.triggerChanError()}triggerChanError(){this.channels.forEach((e)=>{if(!(e.isErrored()||e.isLeaving()||e.isClosed()))e.trigger(Ft.error)})}connectionState(){switch(this.conn&&this.conn.readyState){case kt.connecting:return"connecting";case kt.open:return"open";case kt.closing:return"closing";default:return"closed"}}isConnected(){return this.connectionState()==="open"}remove(e){this.off(e.stateChangeRefs),this.channels=this.channels.filter((t)=>t!==e)}off(e){for(let t in this.stateChangeCallbacks)this.stateChangeCallbacks[t]=this.stateChangeCallbacks[t].filter(([r])=>e.indexOf(r)===-1)}channel(e,t={}){let r=new DA(e,t,this);return this.channels.push(r),r}push(e){if(this.hasLogger()){let{topic:t,event:r,payload:n,ref:i,join_ref:s}=e;this.log("push",`${t} ${r} (${s}, ${i})`,n)}if(this.isConnected())this.encode(e,(t)=>this.conn.send(t));else this.sendBuffer.push(()=>this.encode(e,(t)=>this.conn.send(t)))}makeRef(){let e=this.ref+1;if(e===this.ref)this.ref=0;else this.ref=e;return this.ref.toString()}sendHeartbeat(){if(!this.isConnected()){try{this.heartbeatCallback("disconnected")}catch(e){this.log("error","error in heartbeat callback",e)}return}if(this.pendingHeartbeatRef){this.heartbeatTimeout();return}this.pendingHeartbeatRef=this.makeRef(),this.heartbeatSentAt=Date.now(),this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:this.pendingHeartbeatRef});try{this.heartbeatCallback("sent")}catch(e){this.log("error","error in heartbeat callback",e)}this.heartbeatTimeoutTimer=setTimeout(()=>this.heartbeatTimeout(),this.heartbeatIntervalMs)}flushSendBuffer(){if(this.isConnected()&&this.sendBuffer.length>0)this.sendBuffer.forEach((e)=>e()),this.sendBuffer=[]}onConnMessage(e){this.decode(e.data,(t)=>{let{topic:r,event:n,payload:i,ref:s,join_ref:o}=t;if(s&&s===this.pendingHeartbeatRef){let a=this.heartbeatSentAt?Date.now()-this.heartbeatSentAt:void 0;this.clearHeartbeats();try{this.heartbeatCallback(i.status==="ok"?"ok":"error",a)}catch(l){this.log("error","error in heartbeat callback",l)}if(this.pendingHeartbeatRef=null,this.heartbeatSentAt=null,this.autoSendHeartbeat)this.heartbeatTimer=setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs)}if(this.hasLogger())this.log("receive",`${i.status||""} ${r} ${n} ${s&&"("+s+")"||""}`.trim(),i);for(let a=0;a<this.channels.length;a++){let l=this.channels[a];if(!l.isMember(r,n,i,o))continue;l.trigger(n,i,s,o)}this.triggerStateCallbacks("message",t)})}triggerStateCallbacks(e,...t){try{this.stateChangeCallbacks[e].forEach(([r,n])=>{try{n(...t)}catch(i){this.log("error",`error in ${e} callback`,i)}})}catch(r){this.log("error",`error triggering ${e} callbacks`,r)}}leaveOpenTopic(e){let t=this.channels.find((r)=>r.topic===e&&(r.isJoined()||r.isJoining()));if(t){if(this.hasLogger())this.log("transport",`leaving duplicate topic "${e}"`);t.leave()}}};class er{constructor(e,t){let r=FA(t);this.presence=new Hl(e.getChannel(),r),this.presence.onJoin((n,i,s)=>{let o=er.onJoinPayload(n,i,s);e.getChannel().trigger("presence",o)}),this.presence.onLeave((n,i,s)=>{let o=er.onLeavePayload(n,i,s);e.getChannel().trigger("presence",o)}),this.presence.onSync(()=>{e.getChannel().trigger("presence",{event:"sync"})})}get state(){return er.transformState(this.presence.state)}static transformState(e){return e=MA(e),Object.getOwnPropertyNames(e).reduce((t,r)=>{let n=e[r];return t[r]=ms(n),t},{})}static onJoinPayload(e,t,r){let n=Wl(t),i=ms(r);return{event:"join",key:e,currentPresences:n,newPresences:i}}static onLeavePayload(e,t,r){let n=Wl(t),i=ms(r);return{event:"leave",key:e,currentPresences:n,leftPresences:i}}}function ms(e){return e.metas.map((t)=>(t.presence_ref=t.phx_ref,delete t.phx_ref,delete t.phx_ref_prev,t))}function MA(e){return JSON.parse(JSON.stringify(e))}function FA(e){return(e===null||e===void 0?void 0:e.events)&&{events:e.events}}function Wl(e){return(e===null||e===void 0?void 0:e.metas)?ms(e):[]}var Ki;(function(e){e.SYNC="sync",e.JOIN="join",e.LEAVE="leave"})(Ki||(Ki={}));class wn{get state(){return this.presenceAdapter.state}constructor(e,t){this.channel=e,this.presenceAdapter=new er(this.channel.channelAdapter,t)}}class ps{constructor(e,t,r){let n=GA(r);this.channel=e.getSocket().channel(t,n),this.socket=e}get state(){return this.channel.state}set state(e){this.channel.state=e}get joinedOnce(){return this.channel.joinedOnce}get joinPush(){return this.channel.joinPush}get rejoinTimer(){return this.channel.rejoinTimer}on(e,t){return this.channel.on(e,t)}off(e,t){this.channel.off(e,t)}subscribe(e){return this.channel.join(e)}unsubscribe(e){return this.channel.leave(e)}teardown(){this.channel.teardown()}onClose(e){this.channel.onClose(e)}onError(e){return this.channel.onError(e)}push(e,t,r){let n;try{n=this.channel.push(e,t,r)}catch(i){throw`tried to push '${e}' to '${this.channel.topic}' before joining. Use channel.subscribe() before pushing events`}if(this.channel.pushBuffer.length>Gl){let i=this.channel.pushBuffer.shift();i.cancelTimeout(),this.socket.log("channel",`discarded push due to buffer overflow: ${i.event}`,i.payload())}return n}updateJoinPayload(e){let t=this.channel.joinPush.payload();this.channel.joinPush.payload=()=>Object.assign(Object.assign({},t),e)}canPush(){return this.socket.isConnected()&&this.state===It.joined}isJoined(){return this.state===It.joined}isJoining(){return this.state===It.joining}isClosed(){return this.state===It.closed}isLeaving(){return this.state===It.leaving}updateFilterBindings(e){this.channel.filterBindings=e}updatePayloadTransform(e){this.channel.onMessage=e}getChannel(){return this.channel}}function GA(e){return{config:Object.assign({broadcast:{ack:!1,self:!1},presence:{key:"",enabled:!1},private:!1},e.config)}}var Wi;(function(e){e.ALL="*",e.INSERT="INSERT",e.UPDATE="UPDATE",e.DELETE="DELETE"})(Wi||(Wi={}));var tr;(function(e){e.BROADCAST="broadcast",e.PRESENCE="presence",e.POSTGRES_CHANGES="postgres_changes",e.SYSTEM="system"})(tr||(tr={}));var Rt;(function(e){e.SUBSCRIBED="SUBSCRIBED",e.TIMED_OUT="TIMED_OUT",e.CLOSED="CLOSED",e.CHANNEL_ERROR="CHANNEL_ERROR"})(Rt||(Rt={}));class Kt{get state(){return this.channelAdapter.state}set state(e){this.channelAdapter.state=e}get joinedOnce(){return this.channelAdapter.joinedOnce}get timeout(){return this.socket.timeout}get joinPush(){return this.channelAdapter.joinPush}get rejoinTimer(){return this.channelAdapter.rejoinTimer}constructor(e,t={config:{}},r){var n,i;if(this.topic=e,this.params=t,this.socket=r,this.bindings={},this.subTopic=e.replace(/^realtime:/i,""),this.params.config=Object.assign({broadcast:{ack:!1,self:!1},presence:{key:"",enabled:!1},private:!1},t.config),this.channelAdapter=new ps(this.socket.socketAdapter,e,this.params),this.presence=new wn(this),this._onClose(()=>{this.socket._remove(this)}),this._updateFilterTransform(),this.broadcastEndpointURL=hs(this.socket.socketAdapter.endPointURL()),this.private=this.params.config.private||!1,!this.private&&((i=(n=this.params.config)===null||n===void 0?void 0:n.broadcast)===null||i===void 0?void 0:i.replay))throw`tried to use replay on public channel '${this.topic}'. It must be a private channel.`}subscribe(e,t=this.timeout){var r,n,i;if(!this.socket.isConnected())this.socket.connect();if(this.channelAdapter.isClosed()){let{config:{broadcast:s,presence:o,private:a}}=this.params,l=(n=(r=this.bindings.postgres_changes)===null||r===void 0?void 0:r.map((A)=>A.filter))!==null&&n!==void 0?n:[],c=!!this.bindings[tr.PRESENCE]&&this.bindings[tr.PRESENCE].length>0||((i=this.params.config.presence)===null||i===void 0?void 0:i.enabled)===!0,u={},d={broadcast:s,presence:Object.assign(Object.assign({},o),{enabled:c}),postgres_changes:l,private:a};if(this.socket.accessTokenValue)u.access_token=this.socket.accessTokenValue;this._onError((A)=>{e===null||e===void 0||e(Rt.CHANNEL_ERROR,A)}),this._onClose(()=>e===null||e===void 0?void 0:e(Rt.CLOSED)),this.updateJoinPayload(Object.assign({config:d},u)),this._updateFilterMessage(),this.channelAdapter.subscribe(t).receive("ok",async({postgres_changes:A})=>{if(!this.socket._isManualToken())this.socket.setAuth();if(A===void 0){e===null||e===void 0||e(Rt.SUBSCRIBED);return}this._updatePostgresBindings(A,e)}).receive("error",(A)=>{this.state=It.errored,e===null||e===void 0||e(Rt.CHANNEL_ERROR,Error(JSON.stringify(Object.values(A).join(", ")||"error")))}).receive("timeout",()=>{e===null||e===void 0||e(Rt.TIMED_OUT)})}return this}_updatePostgresBindings(e,t){var r;let n=this.bindings.postgres_changes,i=(r=n===null||n===void 0?void 0:n.length)!==null&&r!==void 0?r:0,s=[];for(let o=0;o<i;o++){let a=n[o],{filter:{event:l,schema:c,table:u,filter:d}}=a,A=e&&e[o];if(A&&A.event===l&&Kt.isFilterValueEqual(A.schema,c)&&Kt.isFilterValueEqual(A.table,u)&&Kt.isFilterValueEqual(A.filter,d))s.push(Object.assign(Object.assign({},a),{id:A.id}));else{this.unsubscribe(),this.state=It.errored,t===null||t===void 0||t(Rt.CHANNEL_ERROR,Error("mismatch between server and client bindings for postgres changes"));return}}if(this.bindings.postgres_changes=s,this.state!=It.errored&&t)t(Rt.SUBSCRIBED)}presenceState(){return this.presence.state}async track(e,t={}){return await this.send({type:"presence",event:"track",payload:e},t.timeout||this.timeout)}async untrack(e={}){return await this.send({type:"presence",event:"untrack"},e)}on(e,t,r){let n=this.channelAdapter.isJoined()||this.channelAdapter.isJoining(),i=e===tr.PRESENCE||e===tr.POSTGRES_CHANGES;if(n&&i)throw this.socket.log("channel",`cannot add \`${e}\` callbacks for ${this.topic} after \`subscribe()\`.`),Error(`cannot add \`${e}\` callbacks for ${this.topic} after \`subscribe()\`.`);return this._on(e,t,r)}async httpSend(e,t,r={}){var n;if(t===void 0||t===null)return Promise.reject("Payload is required for httpSend()");let i={apikey:this.socket.apiKey?this.socket.apiKey:"","Content-Type":"application/json"};if(this.socket.accessTokenValue)i.Authorization=`Bearer ${this.socket.accessTokenValue}`;let s={method:"POST",headers:i,body:JSON.stringify({messages:[{topic:this.subTopic,event:e,payload:t,private:this.private}]})},o=await this._fetchWithTimeout(this.broadcastEndpointURL,s,(n=r.timeout)!==null&&n!==void 0?n:this.timeout);if(o.status===202)return{success:!0};let a=o.statusText;try{let l=await o.json();a=l.error||l.message||a}catch(l){}return Promise.reject(Error(a))}async send(e,t={}){var r,n;if(!this.channelAdapter.canPush()&&e.type==="broadcast"){console.warn("Realtime send() is automatically falling back to REST API. This behavior will be deprecated in the future. Please use httpSend() explicitly for REST delivery.");let{event:i,payload:s}=e,o={apikey:this.socket.apiKey?this.socket.apiKey:"","Content-Type":"application/json"};if(this.socket.accessTokenValue)o.Authorization=`Bearer ${this.socket.accessTokenValue}`;let a={method:"POST",headers:o,body:JSON.stringify({messages:[{topic:this.subTopic,event:i,payload:s,private:this.private}]})};try{let l=await this._fetchWithTimeout(this.broadcastEndpointURL,a,(r=t.timeout)!==null&&r!==void 0?r:this.timeout);return await((n=l.body)===null||n===void 0?void 0:n.cancel()),l.ok?"ok":"error"}catch(l){if(l.name==="AbortError")return"timed out";else return"error"}}else return new Promise((i)=>{var s,o,a;let l=this.channelAdapter.push(e.type,e,t.timeout||this.timeout);if(e.type==="broadcast"&&!((a=(o=(s=this.params)===null||s===void 0?void 0:s.config)===null||o===void 0?void 0:o.broadcast)===null||a===void 0?void 0:a.ack))i("ok");l.receive("ok",()=>i("ok")),l.receive("error",()=>i("error")),l.receive("timeout",()=>i("timed out"))})}updateJoinPayload(e){this.channelAdapter.updateJoinPayload(e)}async unsubscribe(e=this.timeout){return new Promise((t)=>{this.channelAdapter.unsubscribe(e).receive("ok",()=>t("ok")).receive("timeout",()=>t("timed out")).receive("error",()=>t("error"))})}teardown(){this.channelAdapter.teardown()}async _fetchWithTimeout(e,t,r){let n=new AbortController,i=setTimeout(()=>n.abort(),r),s=await this.socket.fetch(e,Object.assign(Object.assign({},t),{signal:n.signal}));return clearTimeout(i),s}_on(e,t,r){let n=e.toLocaleLowerCase(),i=this.channelAdapter.on(e,r),s={type:n,filter:t,callback:r,ref:i};if(this.bindings[n])this.bindings[n].push(s);else this.bindings[n]=[s];return this._updateFilterMessage(),this}_onClose(e){this.channelAdapter.onClose(e)}_onError(e){this.channelAdapter.onError(e)}_updateFilterMessage(){this.channelAdapter.updateFilterBindings((e,t,r)=>{var n,i,s,o,a,l,c;let u=e.event.toLocaleLowerCase();if(this._notThisChannelEvent(u,r))return!1;let d=(n=this.bindings[u])===null||n===void 0?void 0:n.find((A)=>A.ref===e.ref);if(!d)return!0;if(["broadcast","presence","postgres_changes"].includes(u))if("id"in d){let A=d.id,g=(i=d.filter)===null||i===void 0?void 0:i.event;return A&&((s=t.ids)===null||s===void 0?void 0:s.includes(A))&&(g==="*"||(g===null||g===void 0?void 0:g.toLocaleLowerCase())===((o=t.data)===null||o===void 0?void 0:o.type.toLocaleLowerCase()))}else{let A=(l=(a=d===null||d===void 0?void 0:d.filter)===null||a===void 0?void 0:a.event)===null||l===void 0?void 0:l.toLocaleLowerCase();return A==="*"||A===((c=t===null||t===void 0?void 0:t.event)===null||c===void 0?void 0:c.toLocaleLowerCase())}else return d.type.toLocaleLowerCase()===u})}_notThisChannelEvent(e,t){let{close:r,error:n,leave:i,join:s}=us;return t&&[r,n,i,s].includes(e)&&t!==this.joinPush.ref}_updateFilterTransform(){this.channelAdapter.updatePayloadTransform((e,t,r)=>{if(typeof t==="object"&&"ids"in t){let n=t.data,{schema:i,table:s,commit_timestamp:o,type:a,errors:l}=n;return Object.assign(Object.assign({},{schema:i,table:s,commit_timestamp:o,eventType:a,new:{},old:{},errors:l}),this._getPayloadRecords(n))}return t})}copyBindings(e){if(this.joinedOnce)throw Error("cannot copy bindings into joined channel");for(let t in e.bindings)for(let r of e.bindings[t])this._on(r.type,r.filter,r.callback)}static isFilterValueEqual(e,t){return(e!==null&&e!==void 0?e:void 0)===(t!==null&&t!==void 0?t:void 0)}_getPayloadRecords(e){let t={new:{},old:{}};if(e.type==="INSERT"||e.type==="UPDATE")t.new=Ui(e.columns,e.record);if(e.type==="UPDATE"||e.type==="DELETE")t.old=Ui(e.columns,e.old_record);return t}}class bs{constructor(e,t){this.socket=new Kl(e,t)}get timeout(){return this.socket.timeout}get endPoint(){return this.socket.endPoint}get transport(){return this.socket.transport}get heartbeatIntervalMs(){return this.socket.heartbeatIntervalMs}get heartbeatCallback(){return this.socket.heartbeatCallback}set heartbeatCallback(e){this.socket.heartbeatCallback=e}get heartbeatTimer(){return this.socket.heartbeatTimer}get pendingHeartbeatRef(){return this.socket.pendingHeartbeatRef}get reconnectTimer(){return this.socket.reconnectTimer}get vsn(){return this.socket.vsn}get encode(){return this.socket.encode}get decode(){return this.socket.decode}get reconnectAfterMs(){return this.socket.reconnectAfterMs}get sendBuffer(){return this.socket.sendBuffer}get stateChangeCallbacks(){return this.socket.stateChangeCallbacks}connect(){this.socket.connect()}disconnect(e,t,r,n=1e4){return new Promise((i)=>{setTimeout(()=>i("timeout"),n),this.socket.disconnect(()=>{e(),i("ok")},t,r)})}push(e){this.socket.push(e)}log(e,t,r){this.socket.log(e,t,r)}makeRef(){return this.socket.makeRef()}onOpen(e){this.socket.onOpen(e)}onClose(e){this.socket.onClose(e)}onError(e){this.socket.onError(e)}onMessage(e){this.socket.onMessage(e)}isConnected(){return this.socket.isConnected()}isConnecting(){return this.socket.connectionState()==bn.connecting}isDisconnecting(){return this.socket.connectionState()==bn.closing}connectionState(){return this.socket.connectionState()}endPointURL(){return this.socket.endPointURL()}sendHeartbeat(){this.socket.sendHeartbeat()}getSocket(){return this.socket}}var UA={HEARTBEAT_INTERVAL:25000,RECONNECT_DELAY:10,HEARTBEAT_TIMEOUT_FALLBACK:100},jA=[1000,2000,5000,1e4],HA=1e4,KA=`
34
+ Suggested solution: ${e.workaround}`;throw Error(t)}static isWebSocketSupported(){try{let e=this.detectEnvironment();return e.type==="native"||e.type==="ws"}catch(e){return!1}}}var Bi=vl;var Cl="2.103.0";var El=`realtime-js/${Cl}`,Sl="1.0.0",Oi="2.0.0",Il=Oi;var xl=1e4;var kl=100;var St={closed:"closed",errored:"errored",joined:"joined",joining:"joining",leaving:"leaving"},ls={close:"phx_close",error:"phx_error",join:"phx_join",reply:"phx_reply",leave:"phx_leave",access_token:"access_token"};var bn={connecting:"connecting",open:"open",closing:"closing",closed:"closed"};class cs{constructor(e){this.HEADER_LENGTH=1,this.USER_BROADCAST_PUSH_META_LENGTH=6,this.KINDS={userBroadcastPush:3,userBroadcast:4},this.BINARY_ENCODING=0,this.JSON_ENCODING=1,this.BROADCAST_EVENT="broadcast",this.allowedMetadataKeys=[],this.allowedMetadataKeys=e!==null&&e!==void 0?e:[]}encode(e,t){if(e.event===this.BROADCAST_EVENT&&!(e.payload instanceof ArrayBuffer)&&typeof e.payload.event==="string")return t(this._binaryEncodeUserBroadcastPush(e));let r=[e.join_ref,e.ref,e.topic,e.event,e.payload];return t(JSON.stringify(r))}_binaryEncodeUserBroadcastPush(e){var t;if(this._isArrayBuffer((t=e.payload)===null||t===void 0?void 0:t.payload))return this._encodeBinaryUserBroadcastPush(e);else return this._encodeJsonUserBroadcastPush(e)}_encodeBinaryUserBroadcastPush(e){var t,r;let n=(r=(t=e.payload)===null||t===void 0?void 0:t.payload)!==null&&r!==void 0?r:new ArrayBuffer(0);return this._encodeUserBroadcastPush(e,this.BINARY_ENCODING,n)}_encodeJsonUserBroadcastPush(e){var t,r;let n=(r=(t=e.payload)===null||t===void 0?void 0:t.payload)!==null&&r!==void 0?r:{},s=new TextEncoder().encode(JSON.stringify(n)).buffer;return this._encodeUserBroadcastPush(e,this.JSON_ENCODING,s)}_encodeUserBroadcastPush(e,t,r){var n,i;let s=e.topic,o=(n=e.ref)!==null&&n!==void 0?n:"",a=(i=e.join_ref)!==null&&i!==void 0?i:"",l=e.payload.event,c=this.allowedMetadataKeys?this._pick(e.payload,this.allowedMetadataKeys):{},u=Object.keys(c).length===0?"":JSON.stringify(c);if(a.length>255)throw Error(`joinRef length ${a.length} exceeds maximum of 255`);if(o.length>255)throw Error(`ref length ${o.length} exceeds maximum of 255`);if(s.length>255)throw Error(`topic length ${s.length} exceeds maximum of 255`);if(l.length>255)throw Error(`userEvent length ${l.length} exceeds maximum of 255`);if(u.length>255)throw Error(`metadata length ${u.length} exceeds maximum of 255`);let d=this.USER_BROADCAST_PUSH_META_LENGTH+a.length+o.length+s.length+l.length+u.length,A=new ArrayBuffer(this.HEADER_LENGTH+d),g=new DataView(A),f=0;g.setUint8(f++,this.KINDS.userBroadcastPush),g.setUint8(f++,a.length),g.setUint8(f++,o.length),g.setUint8(f++,s.length),g.setUint8(f++,l.length),g.setUint8(f++,u.length),g.setUint8(f++,t),Array.from(a,(b)=>g.setUint8(f++,b.charCodeAt(0))),Array.from(o,(b)=>g.setUint8(f++,b.charCodeAt(0))),Array.from(s,(b)=>g.setUint8(f++,b.charCodeAt(0))),Array.from(l,(b)=>g.setUint8(f++,b.charCodeAt(0))),Array.from(u,(b)=>g.setUint8(f++,b.charCodeAt(0)));var y=new Uint8Array(A.byteLength+r.byteLength);return y.set(new Uint8Array(A),0),y.set(new Uint8Array(r),A.byteLength),y.buffer}decode(e,t){if(this._isArrayBuffer(e)){let r=this._binaryDecode(e);return t(r)}if(typeof e==="string"){let r=JSON.parse(e),[n,i,s,o,a]=r;return t({join_ref:n,ref:i,topic:s,event:o,payload:a})}return t({})}_binaryDecode(e){let t=new DataView(e),r=t.getUint8(0),n=new TextDecoder;switch(r){case this.KINDS.userBroadcast:return this._decodeUserBroadcast(e,t,n)}}_decodeUserBroadcast(e,t,r){let n=t.getUint8(1),i=t.getUint8(2),s=t.getUint8(3),o=t.getUint8(4),a=this.HEADER_LENGTH+4,l=r.decode(e.slice(a,a+n));a=a+n;let c=r.decode(e.slice(a,a+i));a=a+i;let u=r.decode(e.slice(a,a+s));a=a+s;let d=e.slice(a,e.byteLength),A=o===this.JSON_ENCODING?JSON.parse(r.decode(d)):d,g={type:this.BROADCAST_EVENT,event:c,payload:A};if(s>0)g.meta=JSON.parse(u);return{join_ref:null,ref:null,topic:l,event:this.BROADCAST_EVENT,payload:g}}_isArrayBuffer(e){var t;return e instanceof ArrayBuffer||((t=e===null||e===void 0?void 0:e.constructor)===null||t===void 0?void 0:t.name)==="ArrayBuffer"}_pick(e,t){if(!e||typeof e!=="object")return{};return Object.fromEntries(Object.entries(e).filter(([r])=>t.includes(r)))}}var ye;(function(e){e.abstime="abstime",e.bool="bool",e.date="date",e.daterange="daterange",e.float4="float4",e.float8="float8",e.int2="int2",e.int4="int4",e.int4range="int4range",e.int8="int8",e.int8range="int8range",e.json="json",e.jsonb="jsonb",e.money="money",e.numeric="numeric",e.oid="oid",e.reltime="reltime",e.text="text",e.time="time",e.timestamp="timestamp",e.timestamptz="timestamptz",e.timetz="timetz",e.tsrange="tsrange",e.tstzrange="tstzrange"})(ye||(ye={}));var Ni=(e,t,r={})=>{var n;let i=(n=r.skipTypes)!==null&&n!==void 0?n:[];if(!t)return{};return Object.keys(t).reduce((s,o)=>(s[o]=fA(o,e,t,i),s),{})},fA=(e,t,r,n)=>{let i=t.find((a)=>a.name===e),s=i===null||i===void 0?void 0:i.type,o=r[e];if(s&&!n.includes(s))return Rl(s,o);return Pi(o)},Rl=(e,t)=>{if(e.charAt(0)==="_"){let r=e.slice(1,e.length);return bA(t,r)}switch(e){case ye.bool:return gA(t);case ye.float4:case ye.float8:case ye.int2:case ye.int4:case ye.int8:case ye.numeric:case ye.oid:return mA(t);case ye.json:case ye.jsonb:return pA(t);case ye.timestamp:return yA(t);case ye.abstime:case ye.date:case ye.daterange:case ye.int4range:case ye.int8range:case ye.money:case ye.reltime:case ye.text:case ye.time:case ye.timestamptz:case ye.timetz:case ye.tsrange:case ye.tstzrange:return Pi(t);default:return Pi(t)}},Pi=(e)=>e,gA=(e)=>{switch(e){case"t":return!0;case"f":return!1;default:return e}},mA=(e)=>{if(typeof e==="string"){let t=parseFloat(e);if(!Number.isNaN(t))return t}return e},pA=(e)=>{if(typeof e==="string")try{return JSON.parse(e)}catch(t){return e}return e},bA=(e,t)=>{if(typeof e!=="string")return e;let r=e.length-1,n=e[r];if(e[0]==="{"&&n==="}"){let s,o=e.slice(1,r);try{s=JSON.parse("["+o+"]")}catch(a){s=o?o.split(","):[]}return s.map((a)=>Rl(t,a))}return e},yA=(e)=>{if(typeof e==="string")return e.replace(" ","T");return e},us=(e)=>{let t=new URL(e);if(t.protocol=t.protocol.replace(/^ws/i,"http"),t.pathname=t.pathname.replace(/\/+$/,"").replace(/\/socket\/websocket$/i,"").replace(/\/socket$/i,"").replace(/\/websocket$/i,""),t.pathname===""||t.pathname==="/")t.pathname="/api/broadcast";else t.pathname=t.pathname+"/api/broadcast";return t.href};var yn=(e)=>{if(typeof e==="function")return e;else return function(){return e}},_A=typeof self<"u"?self:null,Tr=typeof window<"u"?window:null,It=_A||Tr||globalThis,vA="2.0.0",CA=1e4,EA=1000,xt={connecting:0,open:1,closing:2,closed:3},it={closed:"closed",errored:"errored",joined:"joined",joining:"joining",leaving:"leaving"},Lt={close:"phx_close",error:"phx_error",join:"phx_join",reply:"phx_reply",leave:"phx_leave"},Di={longpoll:"longpoll",websocket:"websocket"},SA={complete:4},Li="base64url.bearer.phx.",ds=class{constructor(e,t,r,n){this.channel=e,this.event=t,this.payload=r||function(){return{}},this.receivedResp=null,this.timeout=n,this.timeoutTimer=null,this.recHooks=[],this.sent=!1,this.ref=void 0}resend(e){this.timeout=e,this.reset(),this.send()}send(){if(this.hasReceived("timeout"))return;this.startTimeout(),this.sent=!0,this.channel.socket.push({topic:this.channel.topic,event:this.event,payload:this.payload(),ref:this.ref,join_ref:this.channel.joinRef()})}receive(e,t){if(this.hasReceived(e))t(this.receivedResp.response);return this.recHooks.push({status:e,callback:t}),this}reset(){this.cancelRefEvent(),this.ref=null,this.refEvent=null,this.receivedResp=null,this.sent=!1}destroy(){this.cancelRefEvent(),this.cancelTimeout()}matchReceive({status:e,response:t,_ref:r}){this.recHooks.filter((n)=>n.status===e).forEach((n)=>n.callback(t))}cancelRefEvent(){if(!this.refEvent)return;this.channel.off(this.refEvent)}cancelTimeout(){clearTimeout(this.timeoutTimer),this.timeoutTimer=null}startTimeout(){if(this.timeoutTimer)this.cancelTimeout();this.ref=this.channel.socket.makeRef(),this.refEvent=this.channel.replyEventName(this.ref),this.channel.on(this.refEvent,(e)=>{this.cancelRefEvent(),this.cancelTimeout(),this.receivedResp=e,this.matchReceive(e)}),this.timeoutTimer=setTimeout(()=>{this.trigger("timeout",{})},this.timeout)}hasReceived(e){return this.receivedResp&&this.receivedResp.status===e}trigger(e,t){this.channel.trigger(this.refEvent,{status:e,response:t})}},Tl=class{constructor(e,t){this.callback=e,this.timerCalc=t,this.timer=void 0,this.tries=0}reset(){this.tries=0,clearTimeout(this.timer)}scheduleTimeout(){clearTimeout(this.timer),this.timer=setTimeout(()=>{this.tries=this.tries+1,this.callback()},this.timerCalc(this.tries+1))}},IA=class{constructor(e,t,r){this.state=it.closed,this.topic=e,this.params=yn(t||{}),this.socket=r,this.bindings=[],this.bindingRef=0,this.timeout=this.socket.timeout,this.joinedOnce=!1,this.joinPush=new ds(this,Lt.join,this.params,this.timeout),this.pushBuffer=[],this.stateChangeRefs=[],this.rejoinTimer=new Tl(()=>{if(this.socket.isConnected())this.rejoin()},this.socket.rejoinAfterMs),this.stateChangeRefs.push(this.socket.onError(()=>this.rejoinTimer.reset())),this.stateChangeRefs.push(this.socket.onOpen(()=>{if(this.rejoinTimer.reset(),this.isErrored())this.rejoin()})),this.joinPush.receive("ok",()=>{this.state=it.joined,this.rejoinTimer.reset(),this.pushBuffer.forEach((n)=>n.send()),this.pushBuffer=[]}),this.joinPush.receive("error",(n)=>{if(this.state=it.errored,this.socket.hasLogger())this.socket.log("channel",`error ${this.topic}`,n);if(this.socket.isConnected())this.rejoinTimer.scheduleTimeout()}),this.onClose(()=>{if(this.rejoinTimer.reset(),this.socket.hasLogger())this.socket.log("channel",`close ${this.topic}`);this.state=it.closed,this.socket.remove(this)}),this.onError((n)=>{if(this.socket.hasLogger())this.socket.log("channel",`error ${this.topic}`,n);if(this.isJoining())this.joinPush.reset();if(this.state=it.errored,this.socket.isConnected())this.rejoinTimer.scheduleTimeout()}),this.joinPush.receive("timeout",()=>{if(this.socket.hasLogger())this.socket.log("channel",`timeout ${this.topic}`,this.joinPush.timeout);if(new ds(this,Lt.leave,yn({}),this.timeout).send(),this.state=it.errored,this.joinPush.reset(),this.socket.isConnected())this.rejoinTimer.scheduleTimeout()}),this.on(Lt.reply,(n,i)=>{this.trigger(this.replyEventName(i),n)})}join(e=this.timeout){if(this.joinedOnce)throw Error("tried to join multiple times. 'join' can only be called a single time per channel instance");else return this.timeout=e,this.joinedOnce=!0,this.rejoin(),this.joinPush}teardown(){this.pushBuffer.forEach((e)=>e.destroy()),this.pushBuffer=[],this.rejoinTimer.reset(),this.joinPush.destroy(),this.state=it.closed,this.bindings=[]}onClose(e){this.on(Lt.close,e)}onError(e){return this.on(Lt.error,(t)=>e(t))}on(e,t){let r=this.bindingRef++;return this.bindings.push({event:e,ref:r,callback:t}),r}off(e,t){this.bindings=this.bindings.filter((r)=>!(r.event===e&&(typeof t>"u"||t===r.ref)))}canPush(){return this.socket.isConnected()&&this.isJoined()}push(e,t,r=this.timeout){if(t=t||{},!this.joinedOnce)throw Error(`tried to push '${e}' to '${this.topic}' before joining. Use channel.join() before pushing events`);let n=new ds(this,e,function(){return t},r);if(this.canPush())n.send();else n.startTimeout(),this.pushBuffer.push(n);return n}leave(e=this.timeout){this.rejoinTimer.reset(),this.joinPush.cancelTimeout(),this.state=it.leaving;let t=()=>{if(this.socket.hasLogger())this.socket.log("channel",`leave ${this.topic}`);this.trigger(Lt.close,"leave")},r=new ds(this,Lt.leave,yn({}),e);if(r.receive("ok",()=>t()).receive("timeout",()=>t()),r.send(),!this.canPush())r.trigger("ok",{});return r}onMessage(e,t,r){return t}filterBindings(e,t,r){return!0}isMember(e,t,r,n){if(this.topic!==e)return!1;if(n&&n!==this.joinRef()){if(this.socket.hasLogger())this.socket.log("channel","dropping outdated message",{topic:e,event:t,payload:r,joinRef:n});return!1}else return!0}joinRef(){return this.joinPush.ref}rejoin(e=this.timeout){if(this.isLeaving())return;this.socket.leaveOpenTopic(this.topic),this.state=it.joining,this.joinPush.resend(e)}trigger(e,t,r,n){let i=this.onMessage(e,t,r,n);if(t&&!i)throw Error("channel onMessage callbacks must return the payload, modified or unmodified");let s=this.bindings.filter((o)=>o.event===e&&this.filterBindings(o,t,r));for(let o=0;o<s.length;o++)s[o].callback(i,r,n||this.joinRef())}replyEventName(e){return`chan_reply_${e}`}isClosed(){return this.state===it.closed}isErrored(){return this.state===it.errored}isJoined(){return this.state===it.joined}isJoining(){return this.state===it.joining}isLeaving(){return this.state===it.leaving}},As=class{static request(e,t,r,n,i,s,o){if(It.XDomainRequest){let a=new It.XDomainRequest;return this.xdomainRequest(a,e,t,n,i,s,o)}else if(It.XMLHttpRequest){let a=new It.XMLHttpRequest;return this.xhrRequest(a,e,t,r,n,i,s,o)}else if(It.fetch&&It.AbortController)return this.fetchRequest(e,t,r,n,i,s,o);else throw Error("No suitable XMLHttpRequest implementation found")}static fetchRequest(e,t,r,n,i,s,o){let a={method:e,headers:r,body:n},l=null;if(i){l=new AbortController;let c=setTimeout(()=>l.abort(),i);a.signal=l.signal}return It.fetch(t,a).then((c)=>c.text()).then((c)=>this.parseJSON(c)).then((c)=>o&&o(c)).catch((c)=>{if(c.name==="AbortError"&&s)s();else o&&o(null)}),l}static xdomainRequest(e,t,r,n,i,s,o){if(e.timeout=i,e.open(t,r),e.onload=()=>{let a=this.parseJSON(e.responseText);o&&o(a)},s)e.ontimeout=s;return e.onprogress=()=>{},e.send(n),e}static xhrRequest(e,t,r,n,i,s,o,a){e.open(t,r,!0),e.timeout=s;for(let[l,c]of Object.entries(n))e.setRequestHeader(l,c);if(e.onerror=()=>a&&a(null),e.onreadystatechange=()=>{if(e.readyState===SA.complete&&a){let l=this.parseJSON(e.responseText);a(l)}},o)e.ontimeout=o;return e.send(i),e}static parseJSON(e){if(!e||e==="")return null;try{return JSON.parse(e)}catch{return console&&console.log("failed to parse JSON response",e),null}}static serialize(e,t){let r=[];for(var n in e){if(!Object.prototype.hasOwnProperty.call(e,n))continue;let i=t?`${t}[${n}]`:n,s=e[n];if(typeof s==="object")r.push(this.serialize(s,i));else r.push(encodeURIComponent(i)+"="+encodeURIComponent(s))}return r.join("&")}static appendParams(e,t){if(Object.keys(t).length===0)return e;let r=e.match(/\?/)?"&":"?";return`${e}${r}${this.serialize(t)}`}},xA=(e)=>{let t="",r=new Uint8Array(e),n=r.byteLength;for(let i=0;i<n;i++)t+=String.fromCharCode(r[i]);return btoa(t)},Rr=class{constructor(e,t){if(t&&t.length===2&&t[1].startsWith(Li))this.authToken=atob(t[1].slice(Li.length));this.endPoint=null,this.token=null,this.skipHeartbeat=!0,this.reqs=new Set,this.awaitingBatchAck=!1,this.currentBatch=null,this.currentBatchTimer=null,this.batchBuffer=[],this.onopen=function(){},this.onerror=function(){},this.onmessage=function(){},this.onclose=function(){},this.pollEndpoint=this.normalizeEndpoint(e),this.readyState=xt.connecting,setTimeout(()=>this.poll(),0)}normalizeEndpoint(e){return e.replace("ws://","http://").replace("wss://","https://").replace(new RegExp("(.*)/"+Di.websocket),"$1/"+Di.longpoll)}endpointURL(){return As.appendParams(this.pollEndpoint,{token:this.token})}closeAndRetry(e,t,r){this.close(e,t,r),this.readyState=xt.connecting}ontimeout(){this.onerror("timeout"),this.closeAndRetry(1005,"timeout",!1)}isActive(){return this.readyState===xt.open||this.readyState===xt.connecting}poll(){let e={Accept:"application/json"};if(this.authToken)e["X-Phoenix-AuthToken"]=this.authToken;this.ajax("GET",e,null,()=>this.ontimeout(),(t)=>{if(t){var{status:r,token:n,messages:i}=t;if(r===410&&this.token!==null){this.onerror(410),this.closeAndRetry(3410,"session_gone",!1);return}this.token=n}else r=0;switch(r){case 200:i.forEach((s)=>{setTimeout(()=>this.onmessage({data:s}),0)}),this.poll();break;case 204:this.poll();break;case 410:this.readyState=xt.open,this.onopen({}),this.poll();break;case 403:this.onerror(403),this.close(1008,"forbidden",!1);break;case 0:case 500:this.onerror(500),this.closeAndRetry(1011,"internal server error",500);break;default:throw Error(`unhandled poll status ${r}`)}})}send(e){if(typeof e!=="string")e=xA(e);if(this.currentBatch)this.currentBatch.push(e);else if(this.awaitingBatchAck)this.batchBuffer.push(e);else this.currentBatch=[e],this.currentBatchTimer=setTimeout(()=>{this.batchSend(this.currentBatch),this.currentBatch=null},0)}batchSend(e){this.awaitingBatchAck=!0,this.ajax("POST",{"Content-Type":"application/x-ndjson"},e.join(`
35
+ `),()=>this.onerror("timeout"),(t)=>{if(this.awaitingBatchAck=!1,!t||t.status!==200)this.onerror(t&&t.status),this.closeAndRetry(1011,"internal server error",!1);else if(this.batchBuffer.length>0)this.batchSend(this.batchBuffer),this.batchBuffer=[]})}close(e,t,r){for(let i of this.reqs)i.abort();this.readyState=xt.closed;let n=Object.assign({code:1000,reason:void 0,wasClean:!0},{code:e,reason:t,wasClean:r});if(this.batchBuffer=[],clearTimeout(this.currentBatchTimer),this.currentBatchTimer=null,typeof CloseEvent<"u")this.onclose(new CloseEvent("close",n));else this.onclose(n)}ajax(e,t,r,n,i){let s,o=()=>{this.reqs.delete(s),n()};s=As.request(e,this.endpointURL(),t,r,this.timeout,o,(a)=>{if(this.reqs.delete(s),this.isActive())i(a)}),this.reqs.add(s)}},Bl=class e{constructor(t,r={}){let n=r.events||{state:"presence_state",diff:"presence_diff"};this.state={},this.pendingDiffs=[],this.channel=t,this.joinRef=null,this.caller={onJoin:function(){},onLeave:function(){},onSync:function(){}},this.channel.on(n.state,(i)=>{let{onJoin:s,onLeave:o,onSync:a}=this.caller;this.joinRef=this.channel.joinRef(),this.state=e.syncState(this.state,i,s,o),this.pendingDiffs.forEach((l)=>{this.state=e.syncDiff(this.state,l,s,o)}),this.pendingDiffs=[],a()}),this.channel.on(n.diff,(i)=>{let{onJoin:s,onLeave:o,onSync:a}=this.caller;if(this.inPendingSyncState())this.pendingDiffs.push(i);else this.state=e.syncDiff(this.state,i,s,o),a()})}onJoin(t){this.caller.onJoin=t}onLeave(t){this.caller.onLeave=t}onSync(t){this.caller.onSync=t}list(t){return e.list(this.state,t)}inPendingSyncState(){return!this.joinRef||this.joinRef!==this.channel.joinRef()}static syncState(t,r,n,i){let s=this.clone(t),o={},a={};return this.map(s,(l,c)=>{if(!r[l])a[l]=c}),this.map(r,(l,c)=>{let u=s[l];if(u){let d=c.metas.map((y)=>y.phx_ref),A=u.metas.map((y)=>y.phx_ref),g=c.metas.filter((y)=>A.indexOf(y.phx_ref)<0),f=u.metas.filter((y)=>d.indexOf(y.phx_ref)<0);if(g.length>0)o[l]=c,o[l].metas=g;if(f.length>0)a[l]=this.clone(u),a[l].metas=f}else o[l]=c}),this.syncDiff(s,{joins:o,leaves:a},n,i)}static syncDiff(t,r,n,i){let{joins:s,leaves:o}=this.clone(r);if(!n)n=function(){};if(!i)i=function(){};return this.map(s,(a,l)=>{let c=t[a];if(t[a]=this.clone(l),c){let u=t[a].metas.map((A)=>A.phx_ref),d=c.metas.filter((A)=>u.indexOf(A.phx_ref)<0);t[a].metas.unshift(...d)}n(a,c,l)}),this.map(o,(a,l)=>{let c=t[a];if(!c)return;let u=l.metas.map((d)=>d.phx_ref);if(c.metas=c.metas.filter((d)=>u.indexOf(d.phx_ref)<0),i(a,c,l),c.metas.length===0)delete t[a]}),t}static list(t,r){if(!r)r=function(n,i){return i};return this.map(t,(n,i)=>r(n,i))}static map(t,r){return Object.getOwnPropertyNames(t).map((n)=>r(n,t[n]))}static clone(t){return JSON.parse(JSON.stringify(t))}},hs={HEADER_LENGTH:1,META_LENGTH:4,KINDS:{push:0,reply:1,broadcast:2},encode(e,t){if(e.payload.constructor===ArrayBuffer)return t(this.binaryEncode(e));else{let r=[e.join_ref,e.ref,e.topic,e.event,e.payload];return t(JSON.stringify(r))}},decode(e,t){if(e.constructor===ArrayBuffer)return t(this.binaryDecode(e));else{let[r,n,i,s,o]=JSON.parse(e);return t({join_ref:r,ref:n,topic:i,event:s,payload:o})}},binaryEncode(e){let{join_ref:t,ref:r,event:n,topic:i,payload:s}=e,o=this.META_LENGTH+t.length+r.length+i.length+n.length,a=new ArrayBuffer(this.HEADER_LENGTH+o),l=new DataView(a),c=0;l.setUint8(c++,this.KINDS.push),l.setUint8(c++,t.length),l.setUint8(c++,r.length),l.setUint8(c++,i.length),l.setUint8(c++,n.length),Array.from(t,(d)=>l.setUint8(c++,d.charCodeAt(0))),Array.from(r,(d)=>l.setUint8(c++,d.charCodeAt(0))),Array.from(i,(d)=>l.setUint8(c++,d.charCodeAt(0))),Array.from(n,(d)=>l.setUint8(c++,d.charCodeAt(0)));var u=new Uint8Array(a.byteLength+s.byteLength);return u.set(new Uint8Array(a),0),u.set(new Uint8Array(s),a.byteLength),u.buffer},binaryDecode(e){let t=new DataView(e),r=t.getUint8(0),n=new TextDecoder;switch(r){case this.KINDS.push:return this.decodePush(e,t,n);case this.KINDS.reply:return this.decodeReply(e,t,n);case this.KINDS.broadcast:return this.decodeBroadcast(e,t,n)}},decodePush(e,t,r){let n=t.getUint8(1),i=t.getUint8(2),s=t.getUint8(3),o=this.HEADER_LENGTH+this.META_LENGTH-1,a=r.decode(e.slice(o,o+n));o=o+n;let l=r.decode(e.slice(o,o+i));o=o+i;let c=r.decode(e.slice(o,o+s));o=o+s;let u=e.slice(o,e.byteLength);return{join_ref:a,ref:null,topic:l,event:c,payload:u}},decodeReply(e,t,r){let n=t.getUint8(1),i=t.getUint8(2),s=t.getUint8(3),o=t.getUint8(4),a=this.HEADER_LENGTH+this.META_LENGTH,l=r.decode(e.slice(a,a+n));a=a+n;let c=r.decode(e.slice(a,a+i));a=a+i;let u=r.decode(e.slice(a,a+s));a=a+s;let d=r.decode(e.slice(a,a+o));a=a+o;let A=e.slice(a,e.byteLength),g={status:d,response:A};return{join_ref:l,ref:c,topic:u,event:Lt.reply,payload:g}},decodeBroadcast(e,t,r){let n=t.getUint8(1),i=t.getUint8(2),s=this.HEADER_LENGTH+2,o=r.decode(e.slice(s,s+n));s=s+n;let a=r.decode(e.slice(s,s+i));s=s+i;let l=e.slice(s,e.byteLength);return{join_ref:null,ref:null,topic:o,event:a,payload:l}}},Ol=class{constructor(e,t={}){if(this.stateChangeCallbacks={open:[],close:[],error:[],message:[]},this.channels=[],this.sendBuffer=[],this.ref=0,this.fallbackRef=null,this.timeout=t.timeout||CA,this.transport=t.transport||It.WebSocket||Rr,this.conn=void 0,this.primaryPassedHealthCheck=!1,this.longPollFallbackMs=t.longPollFallbackMs,this.fallbackTimer=null,this.sessionStore=t.sessionStorage||It&&It.sessionStorage,this.establishedConnections=0,this.defaultEncoder=hs.encode.bind(hs),this.defaultDecoder=hs.decode.bind(hs),this.closeWasClean=!0,this.disconnecting=!1,this.binaryType=t.binaryType||"arraybuffer",this.connectClock=1,this.pageHidden=!1,this.encode=void 0,this.decode=void 0,this.transport!==Rr)this.encode=t.encode||this.defaultEncoder,this.decode=t.decode||this.defaultDecoder;else this.encode=this.defaultEncoder,this.decode=this.defaultDecoder;let r=null;if(Tr&&Tr.addEventListener)Tr.addEventListener("pagehide",(n)=>{if(this.conn)this.disconnect(),r=this.connectClock}),Tr.addEventListener("pageshow",(n)=>{if(r===this.connectClock)r=null,this.connect()}),Tr.addEventListener("visibilitychange",()=>{if(document.visibilityState==="hidden")this.pageHidden=!0;else if(this.pageHidden=!1,!this.isConnected()&&!this.closeWasClean)this.teardown(()=>this.connect())});if(this.heartbeatIntervalMs=t.heartbeatIntervalMs||30000,this.autoSendHeartbeat=t.autoSendHeartbeat??!0,this.heartbeatCallback=t.heartbeatCallback??(()=>{}),this.rejoinAfterMs=(n)=>{if(t.rejoinAfterMs)return t.rejoinAfterMs(n);else return[1000,2000,5000][n-1]||1e4},this.reconnectAfterMs=(n)=>{if(t.reconnectAfterMs)return t.reconnectAfterMs(n);else return[10,50,100,150,200,250,500,1000,2000][n-1]||5000},this.logger=t.logger||null,!this.logger&&t.debug)this.logger=(n,i,s)=>{console.log(`${n}: ${i}`,s)};this.longpollerTimeout=t.longpollerTimeout||20000,this.params=yn(t.params||{}),this.endPoint=`${e}/${Di.websocket}`,this.vsn=t.vsn||vA,this.heartbeatTimeoutTimer=null,this.heartbeatTimer=null,this.heartbeatSentAt=null,this.pendingHeartbeatRef=null,this.reconnectTimer=new Tl(()=>{if(this.pageHidden){this.log("Not reconnecting as page is hidden!"),this.teardown();return}this.teardown(async()=>{if(t.beforeReconnect)await t.beforeReconnect();this.connect()})},this.reconnectAfterMs),this.authToken=t.authToken}getLongPollTransport(){return Rr}replaceTransport(e){if(this.connectClock++,this.closeWasClean=!0,clearTimeout(this.fallbackTimer),this.reconnectTimer.reset(),this.conn)this.conn.close(),this.conn=null;this.transport=e}protocol(){return location.protocol.match(/^https/)?"wss":"ws"}endPointURL(){let e=As.appendParams(As.appendParams(this.endPoint,this.params()),{vsn:this.vsn});if(e.charAt(0)!=="/")return e;if(e.charAt(1)==="/")return`${this.protocol()}:${e}`;return`${this.protocol()}://${location.host}${e}`}disconnect(e,t,r){this.connectClock++,this.disconnecting=!0,this.closeWasClean=!0,clearTimeout(this.fallbackTimer),this.reconnectTimer.reset(),this.teardown(()=>{this.disconnecting=!1,e&&e()},t,r)}connect(e){if(e)console&&console.log("passing params to connect is deprecated. Instead pass :params to the Socket constructor"),this.params=yn(e);if(this.conn&&!this.disconnecting)return;if(this.longPollFallbackMs&&this.transport!==Rr)this.connectWithFallback(Rr,this.longPollFallbackMs);else this.transportConnect()}log(e,t,r){this.logger&&this.logger(e,t,r)}hasLogger(){return this.logger!==null}onOpen(e){let t=this.makeRef();return this.stateChangeCallbacks.open.push([t,e]),t}onClose(e){let t=this.makeRef();return this.stateChangeCallbacks.close.push([t,e]),t}onError(e){let t=this.makeRef();return this.stateChangeCallbacks.error.push([t,e]),t}onMessage(e){let t=this.makeRef();return this.stateChangeCallbacks.message.push([t,e]),t}onHeartbeat(e){this.heartbeatCallback=e}ping(e){if(!this.isConnected())return!1;let t=this.makeRef(),r=Date.now();this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:t});let n=this.onMessage((i)=>{if(i.ref===t)this.off([n]),e(Date.now()-r)});return!0}transportName(e){switch(e){case Rr:return"LongPoll";default:return e.name}}transportConnect(){this.connectClock++,this.closeWasClean=!1;let e=void 0;if(this.authToken)e=["phoenix",`${Li}${btoa(this.authToken).replace(/=/g,"")}`];this.conn=new this.transport(this.endPointURL(),e),this.conn.binaryType=this.binaryType,this.conn.timeout=this.longpollerTimeout,this.conn.onopen=()=>this.onConnOpen(),this.conn.onerror=(t)=>this.onConnError(t),this.conn.onmessage=(t)=>this.onConnMessage(t),this.conn.onclose=(t)=>this.onConnClose(t)}getSession(e){return this.sessionStore&&this.sessionStore.getItem(e)}storeSession(e,t){this.sessionStore&&this.sessionStore.setItem(e,t)}connectWithFallback(e,t=2500){clearTimeout(this.fallbackTimer);let r=!1,n=!0,i,s,o=this.transportName(e),a=(l)=>{this.log("transport",`falling back to ${o}...`,l),this.off([i,s]),n=!1,this.replaceTransport(e),this.transportConnect()};if(this.getSession(`phx:fallback:${o}`))return a("memorized");if(this.fallbackTimer=setTimeout(a,t),s=this.onError((l)=>{if(this.log("transport","error",l),n&&!r)clearTimeout(this.fallbackTimer),a(l)}),this.fallbackRef)this.off([this.fallbackRef]);this.fallbackRef=this.onOpen(()=>{if(r=!0,!n){let l=this.transportName(e);if(!this.primaryPassedHealthCheck)this.storeSession(`phx:fallback:${l}`,"true");return this.log("transport",`established ${l} fallback`)}clearTimeout(this.fallbackTimer),this.fallbackTimer=setTimeout(a,t),this.ping((l)=>{this.log("transport","connected to primary after",l),this.primaryPassedHealthCheck=!0,clearTimeout(this.fallbackTimer)})}),this.transportConnect()}clearHeartbeats(){clearTimeout(this.heartbeatTimer),clearTimeout(this.heartbeatTimeoutTimer)}onConnOpen(){if(this.hasLogger())this.log("transport",`connected to ${this.endPointURL()}`);if(this.closeWasClean=!1,this.disconnecting=!1,this.establishedConnections++,this.flushSendBuffer(),this.reconnectTimer.reset(),this.autoSendHeartbeat)this.resetHeartbeat();this.triggerStateCallbacks("open")}heartbeatTimeout(){if(this.pendingHeartbeatRef){if(this.pendingHeartbeatRef=null,this.heartbeatSentAt=null,this.hasLogger())this.log("transport","heartbeat timeout. Attempting to re-establish connection");try{this.heartbeatCallback("timeout")}catch(e){this.log("error","error in heartbeat callback",e)}this.triggerChanError(),this.closeWasClean=!1,this.teardown(()=>this.reconnectTimer.scheduleTimeout(),EA,"heartbeat timeout")}}resetHeartbeat(){if(this.conn&&this.conn.skipHeartbeat)return;this.pendingHeartbeatRef=null,this.clearHeartbeats(),this.heartbeatTimer=setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs)}teardown(e,t,r){if(!this.conn)return e&&e();let n=this.conn;this.waitForBufferDone(n,()=>{if(t)n.close(t,r||"");else n.close();this.waitForSocketClosed(n,()=>{if(this.conn===n)this.conn.onopen=function(){},this.conn.onerror=function(){},this.conn.onmessage=function(){},this.conn.onclose=function(){},this.conn=null;e&&e()})})}waitForBufferDone(e,t,r=1){if(r===5||!e.bufferedAmount){t();return}setTimeout(()=>{this.waitForBufferDone(e,t,r+1)},150*r)}waitForSocketClosed(e,t,r=1){if(r===5||e.readyState===xt.closed){t();return}setTimeout(()=>{this.waitForSocketClosed(e,t,r+1)},150*r)}onConnClose(e){if(this.conn)this.conn.onclose=()=>{};if(this.hasLogger())this.log("transport","close",e);if(this.triggerChanError(),this.clearHeartbeats(),!this.closeWasClean)this.reconnectTimer.scheduleTimeout();this.triggerStateCallbacks("close",e)}onConnError(e){if(this.hasLogger())this.log("transport",e);let t=this.transport,r=this.establishedConnections;if(this.triggerStateCallbacks("error",e,t,r),t===this.transport||r>0)this.triggerChanError()}triggerChanError(){this.channels.forEach((e)=>{if(!(e.isErrored()||e.isLeaving()||e.isClosed()))e.trigger(Lt.error)})}connectionState(){switch(this.conn&&this.conn.readyState){case xt.connecting:return"connecting";case xt.open:return"open";case xt.closing:return"closing";default:return"closed"}}isConnected(){return this.connectionState()==="open"}remove(e){this.off(e.stateChangeRefs),this.channels=this.channels.filter((t)=>t!==e)}off(e){for(let t in this.stateChangeCallbacks)this.stateChangeCallbacks[t]=this.stateChangeCallbacks[t].filter(([r])=>e.indexOf(r)===-1)}channel(e,t={}){let r=new IA(e,t,this);return this.channels.push(r),r}push(e){if(this.hasLogger()){let{topic:t,event:r,payload:n,ref:i,join_ref:s}=e;this.log("push",`${t} ${r} (${s}, ${i})`,n)}if(this.isConnected())this.encode(e,(t)=>this.conn.send(t));else this.sendBuffer.push(()=>this.encode(e,(t)=>this.conn.send(t)))}makeRef(){let e=this.ref+1;if(e===this.ref)this.ref=0;else this.ref=e;return this.ref.toString()}sendHeartbeat(){if(!this.isConnected()){try{this.heartbeatCallback("disconnected")}catch(e){this.log("error","error in heartbeat callback",e)}return}if(this.pendingHeartbeatRef){this.heartbeatTimeout();return}this.pendingHeartbeatRef=this.makeRef(),this.heartbeatSentAt=Date.now(),this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:this.pendingHeartbeatRef});try{this.heartbeatCallback("sent")}catch(e){this.log("error","error in heartbeat callback",e)}this.heartbeatTimeoutTimer=setTimeout(()=>this.heartbeatTimeout(),this.heartbeatIntervalMs)}flushSendBuffer(){if(this.isConnected()&&this.sendBuffer.length>0)this.sendBuffer.forEach((e)=>e()),this.sendBuffer=[]}onConnMessage(e){this.decode(e.data,(t)=>{let{topic:r,event:n,payload:i,ref:s,join_ref:o}=t;if(s&&s===this.pendingHeartbeatRef){let a=this.heartbeatSentAt?Date.now()-this.heartbeatSentAt:void 0;this.clearHeartbeats();try{this.heartbeatCallback(i.status==="ok"?"ok":"error",a)}catch(l){this.log("error","error in heartbeat callback",l)}if(this.pendingHeartbeatRef=null,this.heartbeatSentAt=null,this.autoSendHeartbeat)this.heartbeatTimer=setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs)}if(this.hasLogger())this.log("receive",`${i.status||""} ${r} ${n} ${s&&"("+s+")"||""}`.trim(),i);for(let a=0;a<this.channels.length;a++){let l=this.channels[a];if(!l.isMember(r,n,i,o))continue;l.trigger(n,i,s,o)}this.triggerStateCallbacks("message",t)})}triggerStateCallbacks(e,...t){try{this.stateChangeCallbacks[e].forEach(([r,n])=>{try{n(...t)}catch(i){this.log("error",`error in ${e} callback`,i)}})}catch(r){this.log("error",`error triggering ${e} callbacks`,r)}}leaveOpenTopic(e){let t=this.channels.find((r)=>r.topic===e&&(r.isJoined()||r.isJoining()));if(t){if(this.hasLogger())this.log("transport",`leaving duplicate topic "${e}"`);t.leave()}}};class tr{constructor(e,t){let r=RA(t);this.presence=new Bl(e.getChannel(),r),this.presence.onJoin((n,i,s)=>{let o=tr.onJoinPayload(n,i,s);e.getChannel().trigger("presence",o)}),this.presence.onLeave((n,i,s)=>{let o=tr.onLeavePayload(n,i,s);e.getChannel().trigger("presence",o)}),this.presence.onSync(()=>{e.getChannel().trigger("presence",{event:"sync"})})}get state(){return tr.transformState(this.presence.state)}static transformState(e){return e=kA(e),Object.getOwnPropertyNames(e).reduce((t,r)=>{let n=e[r];return t[r]=fs(n),t},{})}static onJoinPayload(e,t,r){let n=Pl(t),i=fs(r);return{event:"join",key:e,currentPresences:n,newPresences:i}}static onLeavePayload(e,t,r){let n=Pl(t),i=fs(r);return{event:"leave",key:e,currentPresences:n,leftPresences:i}}}function fs(e){return e.metas.map((t)=>(t.presence_ref=t.phx_ref,delete t.phx_ref,delete t.phx_ref_prev,t))}function kA(e){return JSON.parse(JSON.stringify(e))}function RA(e){return(e===null||e===void 0?void 0:e.events)&&{events:e.events}}function Pl(e){return(e===null||e===void 0?void 0:e.metas)?fs(e):[]}var Mi;(function(e){e.SYNC="sync",e.JOIN="join",e.LEAVE="leave"})(Mi||(Mi={}));class wn{get state(){return this.presenceAdapter.state}constructor(e,t){this.channel=e,this.presenceAdapter=new tr(this.channel.channelAdapter,t)}}class gs{constructor(e,t,r){let n=TA(r);this.channel=e.getSocket().channel(t,n),this.socket=e}get state(){return this.channel.state}set state(e){this.channel.state=e}get joinedOnce(){return this.channel.joinedOnce}get joinPush(){return this.channel.joinPush}get rejoinTimer(){return this.channel.rejoinTimer}on(e,t){return this.channel.on(e,t)}off(e,t){this.channel.off(e,t)}subscribe(e){return this.channel.join(e)}unsubscribe(e){return this.channel.leave(e)}teardown(){this.channel.teardown()}onClose(e){this.channel.onClose(e)}onError(e){return this.channel.onError(e)}push(e,t,r){let n;try{n=this.channel.push(e,t,r)}catch(i){throw`tried to push '${e}' to '${this.channel.topic}' before joining. Use channel.subscribe() before pushing events`}if(this.channel.pushBuffer.length>kl){let i=this.channel.pushBuffer.shift();i.cancelTimeout(),this.socket.log("channel",`discarded push due to buffer overflow: ${i.event}`,i.payload())}return n}updateJoinPayload(e){let t=this.channel.joinPush.payload();this.channel.joinPush.payload=()=>Object.assign(Object.assign({},t),e)}canPush(){return this.socket.isConnected()&&this.state===St.joined}isJoined(){return this.state===St.joined}isJoining(){return this.state===St.joining}isClosed(){return this.state===St.closed}isLeaving(){return this.state===St.leaving}updateFilterBindings(e){this.channel.filterBindings=e}updatePayloadTransform(e){this.channel.onMessage=e}getChannel(){return this.channel}}function TA(e){return{config:Object.assign({broadcast:{ack:!1,self:!1},presence:{key:"",enabled:!1},private:!1},e.config)}}var Fi;(function(e){e.ALL="*",e.INSERT="INSERT",e.UPDATE="UPDATE",e.DELETE="DELETE"})(Fi||(Fi={}));var rr;(function(e){e.BROADCAST="broadcast",e.PRESENCE="presence",e.POSTGRES_CHANGES="postgres_changes",e.SYSTEM="system"})(rr||(rr={}));var kt;(function(e){e.SUBSCRIBED="SUBSCRIBED",e.TIMED_OUT="TIMED_OUT",e.CLOSED="CLOSED",e.CHANNEL_ERROR="CHANNEL_ERROR"})(kt||(kt={}));class Kt{get state(){return this.channelAdapter.state}set state(e){this.channelAdapter.state=e}get joinedOnce(){return this.channelAdapter.joinedOnce}get timeout(){return this.socket.timeout}get joinPush(){return this.channelAdapter.joinPush}get rejoinTimer(){return this.channelAdapter.rejoinTimer}constructor(e,t={config:{}},r){var n,i;if(this.topic=e,this.params=t,this.socket=r,this.bindings={},this.subTopic=e.replace(/^realtime:/i,""),this.params.config=Object.assign({broadcast:{ack:!1,self:!1},presence:{key:"",enabled:!1},private:!1},t.config),this.channelAdapter=new gs(this.socket.socketAdapter,e,this.params),this.presence=new wn(this),this._onClose(()=>{this.socket._remove(this)}),this._updateFilterTransform(),this.broadcastEndpointURL=us(this.socket.socketAdapter.endPointURL()),this.private=this.params.config.private||!1,!this.private&&((i=(n=this.params.config)===null||n===void 0?void 0:n.broadcast)===null||i===void 0?void 0:i.replay))throw`tried to use replay on public channel '${this.topic}'. It must be a private channel.`}subscribe(e,t=this.timeout){var r,n,i;if(!this.socket.isConnected())this.socket.connect();if(this.channelAdapter.isClosed()){let{config:{broadcast:s,presence:o,private:a}}=this.params,l=(n=(r=this.bindings.postgres_changes)===null||r===void 0?void 0:r.map((A)=>A.filter))!==null&&n!==void 0?n:[],c=!!this.bindings[rr.PRESENCE]&&this.bindings[rr.PRESENCE].length>0||((i=this.params.config.presence)===null||i===void 0?void 0:i.enabled)===!0,u={},d={broadcast:s,presence:Object.assign(Object.assign({},o),{enabled:c}),postgres_changes:l,private:a};if(this.socket.accessTokenValue)u.access_token=this.socket.accessTokenValue;this._onError((A)=>{e===null||e===void 0||e(kt.CHANNEL_ERROR,A)}),this._onClose(()=>e===null||e===void 0?void 0:e(kt.CLOSED)),this.updateJoinPayload(Object.assign({config:d},u)),this._updateFilterMessage(),this.channelAdapter.subscribe(t).receive("ok",async({postgres_changes:A})=>{if(!this.socket._isManualToken())this.socket.setAuth();if(A===void 0){e===null||e===void 0||e(kt.SUBSCRIBED);return}this._updatePostgresBindings(A,e)}).receive("error",(A)=>{this.state=St.errored,e===null||e===void 0||e(kt.CHANNEL_ERROR,Error(JSON.stringify(Object.values(A).join(", ")||"error")))}).receive("timeout",()=>{e===null||e===void 0||e(kt.TIMED_OUT)})}return this}_updatePostgresBindings(e,t){var r;let n=this.bindings.postgres_changes,i=(r=n===null||n===void 0?void 0:n.length)!==null&&r!==void 0?r:0,s=[];for(let o=0;o<i;o++){let a=n[o],{filter:{event:l,schema:c,table:u,filter:d}}=a,A=e&&e[o];if(A&&A.event===l&&Kt.isFilterValueEqual(A.schema,c)&&Kt.isFilterValueEqual(A.table,u)&&Kt.isFilterValueEqual(A.filter,d))s.push(Object.assign(Object.assign({},a),{id:A.id}));else{this.unsubscribe(),this.state=St.errored,t===null||t===void 0||t(kt.CHANNEL_ERROR,Error("mismatch between server and client bindings for postgres changes"));return}}if(this.bindings.postgres_changes=s,this.state!=St.errored&&t)t(kt.SUBSCRIBED)}presenceState(){return this.presence.state}async track(e,t={}){return await this.send({type:"presence",event:"track",payload:e},t.timeout||this.timeout)}async untrack(e={}){return await this.send({type:"presence",event:"untrack"},e)}on(e,t,r){let n=this.channelAdapter.isJoined()||this.channelAdapter.isJoining(),i=e===rr.PRESENCE||e===rr.POSTGRES_CHANGES;if(n&&i)throw this.socket.log("channel",`cannot add \`${e}\` callbacks for ${this.topic} after \`subscribe()\`.`),Error(`cannot add \`${e}\` callbacks for ${this.topic} after \`subscribe()\`.`);return this._on(e,t,r)}async httpSend(e,t,r={}){var n;if(t===void 0||t===null)return Promise.reject("Payload is required for httpSend()");let i={apikey:this.socket.apiKey?this.socket.apiKey:"","Content-Type":"application/json"};if(this.socket.accessTokenValue)i.Authorization=`Bearer ${this.socket.accessTokenValue}`;let s={method:"POST",headers:i,body:JSON.stringify({messages:[{topic:this.subTopic,event:e,payload:t,private:this.private}]})},o=await this._fetchWithTimeout(this.broadcastEndpointURL,s,(n=r.timeout)!==null&&n!==void 0?n:this.timeout);if(o.status===202)return{success:!0};let a=o.statusText;try{let l=await o.json();a=l.error||l.message||a}catch(l){}return Promise.reject(Error(a))}async send(e,t={}){var r,n;if(!this.channelAdapter.canPush()&&e.type==="broadcast"){console.warn("Realtime send() is automatically falling back to REST API. This behavior will be deprecated in the future. Please use httpSend() explicitly for REST delivery.");let{event:i,payload:s}=e,o={apikey:this.socket.apiKey?this.socket.apiKey:"","Content-Type":"application/json"};if(this.socket.accessTokenValue)o.Authorization=`Bearer ${this.socket.accessTokenValue}`;let a={method:"POST",headers:o,body:JSON.stringify({messages:[{topic:this.subTopic,event:i,payload:s,private:this.private}]})};try{let l=await this._fetchWithTimeout(this.broadcastEndpointURL,a,(r=t.timeout)!==null&&r!==void 0?r:this.timeout);return await((n=l.body)===null||n===void 0?void 0:n.cancel()),l.ok?"ok":"error"}catch(l){if(l.name==="AbortError")return"timed out";else return"error"}}else return new Promise((i)=>{var s,o,a;let l=this.channelAdapter.push(e.type,e,t.timeout||this.timeout);if(e.type==="broadcast"&&!((a=(o=(s=this.params)===null||s===void 0?void 0:s.config)===null||o===void 0?void 0:o.broadcast)===null||a===void 0?void 0:a.ack))i("ok");l.receive("ok",()=>i("ok")),l.receive("error",()=>i("error")),l.receive("timeout",()=>i("timed out"))})}updateJoinPayload(e){this.channelAdapter.updateJoinPayload(e)}async unsubscribe(e=this.timeout){return new Promise((t)=>{this.channelAdapter.unsubscribe(e).receive("ok",()=>t("ok")).receive("timeout",()=>t("timed out")).receive("error",()=>t("error"))})}teardown(){this.channelAdapter.teardown()}async _fetchWithTimeout(e,t,r){let n=new AbortController,i=setTimeout(()=>n.abort(),r),s=await this.socket.fetch(e,Object.assign(Object.assign({},t),{signal:n.signal}));return clearTimeout(i),s}_on(e,t,r){let n=e.toLocaleLowerCase(),i=this.channelAdapter.on(e,r),s={type:n,filter:t,callback:r,ref:i};if(this.bindings[n])this.bindings[n].push(s);else this.bindings[n]=[s];return this._updateFilterMessage(),this}_onClose(e){this.channelAdapter.onClose(e)}_onError(e){this.channelAdapter.onError(e)}_updateFilterMessage(){this.channelAdapter.updateFilterBindings((e,t,r)=>{var n,i,s,o,a,l,c;let u=e.event.toLocaleLowerCase();if(this._notThisChannelEvent(u,r))return!1;let d=(n=this.bindings[u])===null||n===void 0?void 0:n.find((A)=>A.ref===e.ref);if(!d)return!0;if(["broadcast","presence","postgres_changes"].includes(u))if("id"in d){let A=d.id,g=(i=d.filter)===null||i===void 0?void 0:i.event;return A&&((s=t.ids)===null||s===void 0?void 0:s.includes(A))&&(g==="*"||(g===null||g===void 0?void 0:g.toLocaleLowerCase())===((o=t.data)===null||o===void 0?void 0:o.type.toLocaleLowerCase()))}else{let A=(l=(a=d===null||d===void 0?void 0:d.filter)===null||a===void 0?void 0:a.event)===null||l===void 0?void 0:l.toLocaleLowerCase();return A==="*"||A===((c=t===null||t===void 0?void 0:t.event)===null||c===void 0?void 0:c.toLocaleLowerCase())}else return d.type.toLocaleLowerCase()===u})}_notThisChannelEvent(e,t){let{close:r,error:n,leave:i,join:s}=ls;return t&&[r,n,i,s].includes(e)&&t!==this.joinPush.ref}_updateFilterTransform(){this.channelAdapter.updatePayloadTransform((e,t,r)=>{if(typeof t==="object"&&"ids"in t){let n=t.data,{schema:i,table:s,commit_timestamp:o,type:a,errors:l}=n;return Object.assign(Object.assign({},{schema:i,table:s,commit_timestamp:o,eventType:a,new:{},old:{},errors:l}),this._getPayloadRecords(n))}return t})}copyBindings(e){if(this.joinedOnce)throw Error("cannot copy bindings into joined channel");for(let t in e.bindings)for(let r of e.bindings[t])this._on(r.type,r.filter,r.callback)}static isFilterValueEqual(e,t){return(e!==null&&e!==void 0?e:void 0)===(t!==null&&t!==void 0?t:void 0)}_getPayloadRecords(e){let t={new:{},old:{}};if(e.type==="INSERT"||e.type==="UPDATE")t.new=Ni(e.columns,e.record);if(e.type==="UPDATE"||e.type==="DELETE")t.old=Ni(e.columns,e.old_record);return t}}class ms{constructor(e,t){this.socket=new Ol(e,t)}get timeout(){return this.socket.timeout}get endPoint(){return this.socket.endPoint}get transport(){return this.socket.transport}get heartbeatIntervalMs(){return this.socket.heartbeatIntervalMs}get heartbeatCallback(){return this.socket.heartbeatCallback}set heartbeatCallback(e){this.socket.heartbeatCallback=e}get heartbeatTimer(){return this.socket.heartbeatTimer}get pendingHeartbeatRef(){return this.socket.pendingHeartbeatRef}get reconnectTimer(){return this.socket.reconnectTimer}get vsn(){return this.socket.vsn}get encode(){return this.socket.encode}get decode(){return this.socket.decode}get reconnectAfterMs(){return this.socket.reconnectAfterMs}get sendBuffer(){return this.socket.sendBuffer}get stateChangeCallbacks(){return this.socket.stateChangeCallbacks}connect(){this.socket.connect()}disconnect(e,t,r,n=1e4){return new Promise((i)=>{setTimeout(()=>i("timeout"),n),this.socket.disconnect(()=>{e(),i("ok")},t,r)})}push(e){this.socket.push(e)}log(e,t,r){this.socket.log(e,t,r)}makeRef(){return this.socket.makeRef()}onOpen(e){this.socket.onOpen(e)}onClose(e){this.socket.onClose(e)}onError(e){this.socket.onError(e)}onMessage(e){this.socket.onMessage(e)}isConnected(){return this.socket.isConnected()}isConnecting(){return this.socket.connectionState()==bn.connecting}isDisconnecting(){return this.socket.connectionState()==bn.closing}connectionState(){return this.socket.connectionState()}endPointURL(){return this.socket.endPointURL()}sendHeartbeat(){this.socket.sendHeartbeat()}getSocket(){return this.socket}}var BA={HEARTBEAT_INTERVAL:25000,RECONNECT_DELAY:10,HEARTBEAT_TIMEOUT_FALLBACK:100},OA=[1000,2000,5000,1e4],PA=1e4,NA=`
36
36
  addEventListener("message", (e) => {
37
37
  if (e.data.event === "start") {
38
38
  setInterval(() => postMessage({ event: "keepAlive" }), e.data.interval);
39
39
  }
40
- });`;class _n{get endPoint(){return this.socketAdapter.endPoint}get timeout(){return this.socketAdapter.timeout}get transport(){return this.socketAdapter.transport}get heartbeatCallback(){return this.socketAdapter.heartbeatCallback}get heartbeatIntervalMs(){return this.socketAdapter.heartbeatIntervalMs}get heartbeatTimer(){if(this.worker)return this._workerHeartbeatTimer;return this.socketAdapter.heartbeatTimer}get pendingHeartbeatRef(){if(this.worker)return this._pendingWorkerHeartbeatRef;return this.socketAdapter.pendingHeartbeatRef}get reconnectTimer(){return this.socketAdapter.reconnectTimer}get vsn(){return this.socketAdapter.vsn}get encode(){return this.socketAdapter.encode}get decode(){return this.socketAdapter.decode}get reconnectAfterMs(){return this.socketAdapter.reconnectAfterMs}get sendBuffer(){return this.socketAdapter.sendBuffer}get stateChangeCallbacks(){return this.socketAdapter.stateChangeCallbacks}constructor(e,t){var r;if(this.channels=[],this.accessTokenValue=null,this.accessToken=null,this.apiKey=null,this.httpEndpoint="",this.headers={},this.params={},this.ref=0,this.serializer=new ds,this._manuallySetToken=!1,this._authPromise=null,this._workerHeartbeatTimer=void 0,this._pendingWorkerHeartbeatRef=null,this._resolveFetch=(i)=>{if(i)return(...s)=>i(...s);return(...s)=>fetch(...s)},!((r=t===null||t===void 0?void 0:t.params)===null||r===void 0?void 0:r.apikey))throw Error("API key is required to connect to Realtime");this.apiKey=t.params.apikey;let n=this._initializeOptions(t);this.socketAdapter=new bs(e,n),this.httpEndpoint=hs(e),this.fetch=this._resolveFetch(t===null||t===void 0?void 0:t.fetch)}connect(){if(this.isConnecting()||this.isDisconnecting()||this.isConnected())return;if(this.accessToken&&!this._authPromise)this._setAuthSafely("connect");this._setupConnectionHandlers();try{this.socketAdapter.connect()}catch(e){let t=e.message;if(t.includes("Node.js"))throw Error(`${t}
40
+ });`;class _n{get endPoint(){return this.socketAdapter.endPoint}get timeout(){return this.socketAdapter.timeout}get transport(){return this.socketAdapter.transport}get heartbeatCallback(){return this.socketAdapter.heartbeatCallback}get heartbeatIntervalMs(){return this.socketAdapter.heartbeatIntervalMs}get heartbeatTimer(){if(this.worker)return this._workerHeartbeatTimer;return this.socketAdapter.heartbeatTimer}get pendingHeartbeatRef(){if(this.worker)return this._pendingWorkerHeartbeatRef;return this.socketAdapter.pendingHeartbeatRef}get reconnectTimer(){return this.socketAdapter.reconnectTimer}get vsn(){return this.socketAdapter.vsn}get encode(){return this.socketAdapter.encode}get decode(){return this.socketAdapter.decode}get reconnectAfterMs(){return this.socketAdapter.reconnectAfterMs}get sendBuffer(){return this.socketAdapter.sendBuffer}get stateChangeCallbacks(){return this.socketAdapter.stateChangeCallbacks}constructor(e,t){var r;if(this.channels=[],this.accessTokenValue=null,this.accessToken=null,this.apiKey=null,this.httpEndpoint="",this.headers={},this.params={},this.ref=0,this.serializer=new cs,this._manuallySetToken=!1,this._authPromise=null,this._workerHeartbeatTimer=void 0,this._pendingWorkerHeartbeatRef=null,this._resolveFetch=(i)=>{if(i)return(...s)=>i(...s);return(...s)=>fetch(...s)},!((r=t===null||t===void 0?void 0:t.params)===null||r===void 0?void 0:r.apikey))throw Error("API key is required to connect to Realtime");this.apiKey=t.params.apikey;let n=this._initializeOptions(t);this.socketAdapter=new ms(e,n),this.httpEndpoint=us(e),this.fetch=this._resolveFetch(t===null||t===void 0?void 0:t.fetch)}connect(){if(this.isConnecting()||this.isDisconnecting()||this.isConnected())return;if(this.accessToken&&!this._authPromise)this._setAuthSafely("connect");this._setupConnectionHandlers();try{this.socketAdapter.connect()}catch(e){let t=e.message;if(t.includes("Node.js"))throw Error(`${t}
41
41
 
42
42
  To use Realtime in Node.js, you need to provide a WebSocket implementation:
43
43
 
@@ -50,25 +50,25 @@ Option 2: Install and provide the "ws" package:
50
50
  const client = new RealtimeClient(url, {
51
51
  ...options,
52
52
  transport: ws
53
- })`);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()||bn.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 Kt(`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:Dl};if(t&&n.updateJoinPayload(i),n.joinedOnce&&n.channelAdapter.isJoined())n.channelAdapter.push(us.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([KA],{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:Fl,u.heartbeatIntervalMs=(i=e===null||e===void 0?void 0:e.heartbeatIntervalMs)!==null&&i!==void 0?i:UA.HEARTBEAT_INTERVAL,u.transport=(s=e===null||e===void 0?void 0:e.transport)!==null&&s!==void 0?s:Mi.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:(f)=>jA[f-1]||HA;let d,A,g=(a=e===null||e===void 0?void 0:e.vsn)!==null&&a!==void 0?a:Ml;switch(g){case Ll:d=(f,b)=>b(JSON.stringify(f)),A=(f,b)=>b(JSON.parse(f));break;case Fi: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=g,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 vn=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 WA(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 YA(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 QA(e){let t=e.fetchImpl??globalThis.fetch;return{async request({method:r,path:n,query:i,body:s,headers:o}){let a=WA(e.baseUrl,n,i),l=await YA(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 g=d?A:void 0,f=g?.error;throw new vn(f?.message??`Request failed with status ${c.status}`,{status:c.status,icebergType:f?.type,icebergCode:f?.code,details:g})}return{status:c.status,headers:c.headers,data:A}}}}function ys(e){return e.join("\x1F")}var JA=class{constructor(e,t=""){this.client=e,this.prefix=t}async listNamespaces(e){let t=e?{parent:ys(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/${ys(e.namespace)}`})}async loadNamespaceMetadata(e){return{properties:(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${ys(e.namespace)}`})).data.properties}}async namespaceExists(e){try{return await this.client.request({method:"HEAD",path:`${this.prefix}/namespaces/${ys(e.namespace)}`}),!0}catch(t){if(t instanceof vn&&t.status===404)return!1;throw t}}async createNamespaceIfNotExists(e,t){try{return await this.createNamespace(e,t)}catch(r){if(r instanceof vn&&r.status===409)return;throw r}}};function Br(e){return e.join("\x1F")}var $A=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/${Br(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/${Br(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/${Br(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/${Br(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/${Br(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/${Br(e.namespace)}/tables/${e.name}`,headers:t}),!0}catch(r){if(r instanceof vn&&r.status===404)return!1;throw r}}async createTableIfNotExists(e,t){try{return await this.createTable(e,t)}catch(r){if(r instanceof vn&&r.status===409)return await this.loadTable({namespace:e.namespace,name:t.name});throw r}}},Yl=class{constructor(e){let t="v1";if(e.catalogName)t+=`/${e.catalogName}`;let r=e.baseUrl.endsWith("/")?e.baseUrl:`${e.baseUrl}/`;this.client=QA({baseUrl:r,auth:e.auth,fetchImpl:e.fetch}),this.accessDelegation=e.accessDelegation?.join(","),this.namespaceOps=new JA(this.client,t),this.tableOps=new $A(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 _s=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 vs(e){return typeof e==="object"&&e!==null&&"__isStorageError"in e}var ws=class extends _s{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}}},Zl=class extends _s{constructor(e,t,r="storage"){super(e,r);this.name=r==="vectors"?"StorageVectorsUnknownError":"StorageUnknownError",this.originalError=t}};var ZA=(e)=>{if(e)return(...t)=>e(...t);return(...t)=>fetch(...t)},XA=(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)},Yi=(e)=>{if(Array.isArray(e))return e.map((r)=>Yi(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]=Yi(n)}),t},VA=(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 En(e){return En=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},En(e)}function zA(e,t){if(En(e)!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t||"default");if(En(n)!="object")return n;throw TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function qA(e){var t=zA(e,"string");return En(t)=="symbol"?t:t+""}function ef(e,t,r){return(t=qA(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Ql(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?Ql(Object(r),!0).forEach(function(n){ef(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ql(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}var Jl=(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)},tf=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 ws(Jl(o),s,a,n))}).catch(()=>{let o=s+"";t(new ws(i.statusText||`HTTP ${s} error`,s,o,n))})}else t(new Zl(Jl(e),e,n))},rf=(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(XA(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 Cn(e,t,r,n,i,s,o){return new Promise((a,l)=>{e(r,rf(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)=>tf(c,l,n,o))})}function Xl(e="storage"){return{get:async(t,r,n,i)=>Cn(t,"GET",r,n,i,void 0,e),post:async(t,r,n,i,s)=>Cn(t,"POST",r,i,s,n,e),put:async(t,r,n,i,s)=>Cn(t,"PUT",r,i,s,n,e),head:async(t,r,n,i)=>Cn(t,"HEAD",r,K(K({},n),{},{noResolveJson:!0}),i,void 0,e),remove:async(t,r,n,i,s)=>Cn(t,"DELETE",r,i,s,n,e)}}var sf=Xl("storage"),{get:Sn,post:yt,put:Qi,head:of,remove:Ji}=sf,dt=Xl("vectors"),Or=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=ZA(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(vs(r))return{data:null,error:r};throw r}}},af=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(vs(t))return{data:null,error:t};throw t}}},Vl;Vl=Symbol.toStringTag;var lf=class{constructor(e,t){this.downloadFn=e,this.shouldThrowOnError=t,this[Vl]="BlobDownloadBuilder",this.promise=null}asStream(){return new af(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(vs(t))return{data:null,error:t};throw t}}},cf={limit:100,offset:0,sortBy:{column:"name",order:"asc"}},$l={cacheControl:"3600",contentType:"text/plain;charset=UTF-8",upsert:!1},uf=class extends Or{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({},$l),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"?Qi:yt)(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({},$l),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 Qi(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 yt(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 _s("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 yt(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 yt(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 yt(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 yt(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 lf(()=>Sn(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()=>Yi(await Sn(t.fetch,`${t.url}/object/info/${r}`,{headers:t.headers})))}async exists(e){var t=this;let r=t._getFinalPath(e);try{return await of(t.fetch,`${t.url}/object/${r}`,{headers:t.headers}),{data:!0,error:null}}catch(i){if(t.shouldThrowOnError)throw i;if(vs(i)){var n;let s=i instanceof ws?i.status:i instanceof Zl?(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 Ji(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({},cf),t),{},{prefix:e||""});return await yt(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 yt(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}},df="2.103.0",In={"X-Client-Info":`storage-js/${df}`},hf=class extends Or{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({},In),t);super(s,o,r,"storage")}async listBuckets(e){var t=this;return t.handleOperation(async()=>{let r=t.listBucketOptionsToQueryString(e);return await Sn(t.fetch,`${t.url}/bucket${r}`,{headers:t.headers})})}async getBucket(e){var t=this;return t.handleOperation(async()=>await Sn(t.fetch,`${t.url}/bucket/${e}`,{headers:t.headers}))}async createBucket(e,t={public:!1}){var r=this;return r.handleOperation(async()=>await yt(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 Qi(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 yt(t.fetch,`${t.url}/bucket/${e}/empty`,{},{headers:t.headers}))}async deleteBucket(e){var t=this;return t.handleOperation(async()=>await Ji(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():""}},Af=class extends Or{constructor(e,t={},r){let n=e.replace(/\/$/,""),i=K(K({},In),t);super(n,i,r,"storage")}async createBucket(e){var t=this;return t.handleOperation(async()=>await yt(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 Sn(t.fetch,i,{headers:t.headers})})}async deleteBucket(e){var t=this;return t.handleOperation(async()=>await Ji(t.fetch,`${t.url}/bucket/${e}`,{},{headers:t.headers}))}from(e){var t=this;if(!VA(e))throw new _s("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 Yl({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}}}}})}},ff=class extends Or{constructor(e,t={},r){let n=e.replace(/\/$/,""),i=K(K({},In),{},{"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})||{})}},gf=class extends Or{constructor(e,t={},r){let n=e.replace(/\/$/,""),i=K(K({},In),{},{"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})||{})}},mf=class extends Or{constructor(e,t={},r){let n=e.replace(/\/$/,""),i=K(K({},In),{},{"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})||{})}},pf=class extends mf{constructor(e,t={}){super(e,t.headers||{},t.fetch)}from(e){return new bf(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)}},bf=class extends ff{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 yf(this.url,this.headers,this.vectorBucketName,e,this.fetch)}},yf=class extends gf{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}))}},zl=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 pf(this.url+"/vector",{headers:this.headers,fetch:this.fetch})}get analytics(){return new Af(this.url+"/iceberg",this.headers,this.fetch)}};var Cs="2.103.0";var rr=30000,Es=3,Ss=Es*rr,ql="http://localhost:9999",ec="supabase.auth.token";var tc={"X-Client-Info":`gotrue-js/${Cs}`};var xn="X-Supabase-Api-Version",$i={"2024-01-01":{timestamp:Date.parse("2024-01-01T00:00:00.0Z"),name:"2024-01-01"}},rc=/^([a-z0-9_-]{4})*($|[a-z0-9_-]{3}$|[a-z0-9_-]{2}$)$/i,nc=600000;class nr extends Error{constructor(e,t,r){super(e);this.__isAuthError=!0,this.name="AuthError",this.status=t,this.code=r}}function M(e){return typeof e==="object"&&e!==null&&"__isAuthError"in e}class Zi extends nr{constructor(e,t,r){super(e,t,r);this.name="AuthApiError",this.status=t,this.code=r}}function sc(e){return M(e)&&e.name==="AuthApiError"}class wt extends nr{constructor(e,t){super(e);this.name="AuthUnknownError",this.originalError=t}}class Tt extends nr{constructor(e,t,r,n){super(e,r,n);this.name=t,this.status=r}}class st extends Tt{constructor(){super("Auth session missing!","AuthSessionMissingError",400,void 0)}}function kn(e){return M(e)&&e.name==="AuthSessionMissingError"}class Wt extends Tt{constructor(){super("Auth session or user missing","AuthInvalidTokenResponseError",500,void 0)}}class Nr extends Tt{constructor(e){super(e,"AuthInvalidCredentialsError",400,void 0)}}class Pr extends Tt{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 ic(e){return M(e)&&e.name==="AuthImplicitGrantRedirectError"}class Is extends Tt{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 Xi extends Tt{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 Rn extends Tt{constructor(e,t){super(e,"AuthRetryableFetchError",t,void 0)}}function xs(e){return M(e)&&e.name==="AuthRetryableFetchError"}class ks extends Tt{constructor(e,t,r){super(e,"AuthWeakPasswordError",t,"weak_password");this.reasons=r}}class Dr extends Tt{constructor(e){super(e,"AuthInvalidJwtError",400,"invalid_jwt")}}var Rs="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".split(""),oc=`
54
- \r=`.split(""),wf=(()=>{let e=Array(128);for(let t=0;t<e.length;t+=1)e[t]=-1;for(let t=0;t<oc.length;t+=1)e[oc[t].charCodeAt(0)]=-2;for(let t=0;t<Rs.length;t+=1)e[Rs[t].charCodeAt(0)]=t;return e})();function ac(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(Rs[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(Rs[n]),t.queuedBits-=6}}}function lc(e,t,r){let n=wf[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 Vi(e){let t=[],r=(o)=>{t.push(String.fromCodePoint(o))},n={utf8seq:0,codepoint:0},i={queue:0,queuedBits:0},s=(o)=>{Cf(o,n,r)};for(let o=0;o<e.length;o+=1)lc(e.charCodeAt(o),i,s);return t.join("")}function _f(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 vf(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}_f(n,t)}}function Cf(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 Yt(e){let t=[],r={queue:0,queuedBits:0},n=(i)=>{t.push(i)};for(let i=0;i<e.length;i+=1)lc(e.charCodeAt(i),r,n);return new Uint8Array(t)}function cc(e){let t=[];return vf(e,(r)=>t.push(r)),new Uint8Array(t)}function Gt(e){let t=[],r={queue:0,queuedBits:0},n=(i)=>{t.push(i)};return e.forEach((i)=>ac(i,r,n)),ac(null,r,n),t.join("")}function uc(e){return Math.round(Date.now()/1000)+e}function dc(){return Symbol("auth-callback")}var Ue=()=>typeof window<"u"&&typeof document<"u",sr={tested:!1,writable:!1},Ts=()=>{if(!Ue())return!1;try{if(typeof globalThis.localStorage!=="object")return!1}catch(t){return!1}if(sr.tested)return sr.writable;let e=`lswt-${Math.random()}${Math.random()}`;try{globalThis.localStorage.setItem(e,e),globalThis.localStorage.removeItem(e),sr.tested=!0,sr.writable=!0}catch(t){sr.tested=!0,sr.writable=!1}return sr.writable};function hc(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 Bs=(e)=>{if(e)return(...t)=>e(...t);return(...t)=>fetch(...t)},Ac=(e)=>typeof e==="object"&&e!==null&&("status"in e)&&("ok"in e)&&("json"in e)&&typeof e.json==="function",ir=async(e,t,r)=>{await e.setItem(t,JSON.stringify(r))},Qt=async(e,t)=>{let r=await e.getItem(t);if(!r)return null;try{return JSON.parse(r)}catch(n){return r}},Qe=async(e,t)=>{await e.removeItem(t)};class Tn{constructor(){this.promise=new Tn.promiseConstructor((e,t)=>{this.resolve=e,this.reject=t})}}Tn.promiseConstructor=Promise;function Bn(e){let t=e.split(".");if(t.length!==3)throw new Dr("Invalid JWT structure");for(let n=0;n<t.length;n++)if(!rc.test(t[n]))throw new Dr("JWT not in base64url format");return{header:JSON.parse(Vi(t[0])),payload:JSON.parse(Vi(t[1])),signature:Yt(t[2]),raw:{header:t[0],payload:t[1]}}}async function fc(e){return await new Promise((t)=>{setTimeout(()=>t(null),e)})}function gc(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 Ef(e){return("0"+e.toString(16)).substr(-2)}function Sf(){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,Ef).join("")}async function If(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 xf(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 If(e);return btoa(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function or(e,t,r=!1){let n=Sf(),i=n;if(r)i+="/PASSWORD_RECOVERY";await ir(e,`${t}-code-verifier`,i);let s=await xf(n);return[s,n===s?"plain":"s256"]}var kf=/^2[0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$/i;function mc(e){let t=e.headers.get(xn);if(!t)return null;if(!t.match(kf))return null;try{return new Date(`${t}T00:00:00.0Z`)}catch(r){return null}}function pc(e){if(!e)throw Error("Missing exp claim");let t=Math.floor(Date.now()/1000);if(e<=t)throw Error("JWT has expired")}function bc(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 Rf=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;function ar(e){if(!Rf.test(e))throw Error("@supabase/auth-js: Expected parameter to be UUID but is not")}function Os(){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 yc(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 zi(e){return JSON.parse(JSON.stringify(e))}var lr=(e)=>e.msg||e.message||e.error_description||e.error||JSON.stringify(e),Tf=[502,503,504];async function wc(e){var t;if(!Ac(e))throw new Rn(lr(e),0);if(Tf.includes(e.status))throw new Rn(lr(e),e.status);let r;try{r=await e.json()}catch(s){throw new wt(lr(s),s)}let n=void 0,i=mc(e);if(i&&i.getTime()>=$i["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 ks(lr(r),e.status,r.weak_password.reasons)}else if(n==="weak_password")throw new ks(lr(r),e.status,((t=r.weak_password)===null||t===void 0?void 0:t.reasons)||[]);else if(n==="session_not_found")throw new st;throw new Zi(lr(r),e.status||500,n)}var Bf=(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 j(e,t,r,n){var i;let s=Object.assign({},n===null||n===void 0?void 0:n.headers);if(!s[xn])s[xn]=$i["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 Of(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 Of(e,t,r,n,i,s){let o=Bf(t,n,i,s),a;try{a=await e(r,Object.assign({},o))}catch(l){throw console.error(l),new Rn(lr(l),0)}if(!a.ok)await wc(a);if(n===null||n===void 0?void 0:n.noResolveJson)return a;try{return await a.json()}catch(l){await wc(l)}}function pt(e){var t;let r=null;if(Nf(e)){if(r=Object.assign({},e),!e.expires_at)r.expires_at=uc(e.expires_in)}let n=(t=e.user)!==null&&t!==void 0?t:e;return{data:{session:r,user:n},error:null}}function qi(e){let t=pt(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 Bt(e){var t;return{data:{user:(t=e.user)!==null&&t!==void 0?t:e},error:null}}function _c(e){return{data:e,error:null}}function vc(e){let{action_link:t,email_otp:r,hashed_token:n,redirect_to:i,verification_type:s}=e,o=qt(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 eo(e){return e}function Nf(e){return e.access_token&&e.refresh_token&&e.expires_in}var Ns=["global","local","others"];class Lr{constructor({url:e="",headers:t={},fetch:r}){this.url=e,this.headers=t,this.fetch=Bs(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=Ns[0]){if(Ns.indexOf(t)<0)throw Error(`@supabase/auth-js: Parameter scope must be one of ${Ns.join(", ")}`);try{return await j(this.fetch,"POST",`${this.url}/logout?scope=${t}`,{headers:this.headers,jwt:e,noResolveJson:!0}),{data:null,error:null}}catch(r){if(M(r))return{data:null,error:r};throw r}}async inviteUserByEmail(e,t={}){try{return await j(this.fetch,"POST",`${this.url}/invite`,{body:{email:e,data:t.data},headers:this.headers,redirectTo:t.redirectTo,xform:Bt})}catch(r){if(M(r))return{data:{user:null},error:r};throw r}}async generateLink(e){try{let{options:t}=e,r=qt(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 j(this.fetch,"POST",`${this.url}/admin/generate_link`,{body:n,headers:this.headers,xform:vc,redirectTo:t===null||t===void 0?void 0:t.redirectTo})}catch(t){if(M(t))return{data:{properties:null,user:null},error:t};throw t}}async createUser(e){try{return await j(this.fetch,"POST",`${this.url}/admin/users`,{body:e,headers:this.headers,xform:Bt})}catch(t){if(M(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 j(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:eo});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((g)=>{let f=parseInt(g.split(";")[0].split("=")[1].substring(0,1)),b=JSON.parse(g.split(";")[1].split("=")[1]);l[`${b}Page`]=f}),l.total=parseInt(d);return{data:Object.assign(Object.assign({},u),l),error:null}}catch(l){if(M(l))return{data:{users:[]},error:l};throw l}}async getUserById(e){ar(e);try{return await j(this.fetch,"GET",`${this.url}/admin/users/${e}`,{headers:this.headers,xform:Bt})}catch(t){if(M(t))return{data:{user:null},error:t};throw t}}async updateUserById(e,t){ar(e);try{return await j(this.fetch,"PUT",`${this.url}/admin/users/${e}`,{body:t,headers:this.headers,xform:Bt})}catch(r){if(M(r))return{data:{user:null},error:r};throw r}}async deleteUser(e,t=!1){ar(e);try{return await j(this.fetch,"DELETE",`${this.url}/admin/users/${e}`,{headers:this.headers,body:{should_soft_delete:t},xform:Bt})}catch(r){if(M(r))return{data:{user:null},error:r};throw r}}async _listFactors(e){ar(e.userId);try{let{data:t,error:r}=await j(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(M(t))return{data:null,error:t};throw t}}async _deleteFactor(e){ar(e.userId),ar(e.id);try{return{data:await j(this.fetch,"DELETE",`${this.url}/admin/users/${e.userId}/factors/${e.id}`,{headers:this.headers}),error:null}}catch(t){if(M(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 j(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:eo});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((g)=>{let f=parseInt(g.split(";")[0].split("=")[1].substring(0,1)),b=JSON.parse(g.split(";")[1].split("=")[1]);l[`${b}Page`]=f}),l.total=parseInt(d);return{data:Object.assign(Object.assign({},u),l),error:null}}catch(l){if(M(l))return{data:{clients:[]},error:l};throw l}}async _createOAuthClient(e){try{return await j(this.fetch,"POST",`${this.url}/admin/oauth/clients`,{body:e,headers:this.headers,xform:(t)=>({data:t,error:null})})}catch(t){if(M(t))return{data:null,error:t};throw t}}async _getOAuthClient(e){try{return await j(this.fetch,"GET",`${this.url}/admin/oauth/clients/${e}`,{headers:this.headers,xform:(t)=>({data:t,error:null})})}catch(t){if(M(t))return{data:null,error:t};throw t}}async _updateOAuthClient(e,t){try{return await j(this.fetch,"PUT",`${this.url}/admin/oauth/clients/${e}`,{body:t,headers:this.headers,xform:(r)=>({data:r,error:null})})}catch(r){if(M(r))return{data:null,error:r};throw r}}async _deleteOAuthClient(e){try{return await j(this.fetch,"DELETE",`${this.url}/admin/oauth/clients/${e}`,{headers:this.headers,noResolveJson:!0}),{data:null,error:null}}catch(t){if(M(t))return{data:null,error:t};throw t}}async _regenerateOAuthClientSecret(e){try{return await j(this.fetch,"POST",`${this.url}/admin/oauth/clients/${e}/regenerate_secret`,{headers:this.headers,xform:(t)=>({data:t,error:null})})}catch(t){if(M(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 j(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(M(t))return{data:{providers:[]},error:t};throw t}}async _createCustomProvider(e){try{return await j(this.fetch,"POST",`${this.url}/admin/custom-providers`,{body:e,headers:this.headers,xform:(t)=>({data:t,error:null})})}catch(t){if(M(t))return{data:null,error:t};throw t}}async _getCustomProvider(e){try{return await j(this.fetch,"GET",`${this.url}/admin/custom-providers/${e}`,{headers:this.headers,xform:(t)=>({data:t,error:null})})}catch(t){if(M(t))return{data:null,error:t};throw t}}async _updateCustomProvider(e,t){try{return await j(this.fetch,"PUT",`${this.url}/admin/custom-providers/${e}`,{body:t,headers:this.headers,xform:(r)=>({data:r,error:null})})}catch(r){if(M(r))return{data:null,error:r};throw r}}async _deleteCustomProvider(e){try{return await j(this.fetch,"DELETE",`${this.url}/admin/custom-providers/${e}`,{headers:this.headers,noResolveJson:!0}),{data:null,error:null}}catch(t){if(M(t))return{data:null,error:t};throw t}}}function to(e={}){return{getItem:(t)=>e[t]||null,setItem:(t,r)=>{e[t]=r},removeItem:(t)=>{delete e[t]}}}var _t={debug:!!(globalThis&&Ts()&&globalThis.localStorage&&globalThis.localStorage.getItem("supabase.gotrue-js.locks.debug")==="true")};class Ds extends Error{constructor(e){super(e);this.isAcquireTimeout=!0}}class Ps extends Ds{}async function ro(e,t,r){if(_t.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(),_t.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),_t.debug)console.log("@supabase/gotrue-js: navigatorLock: acquired",e,s.name);try{return await r()}finally{if(_t.debug)console.log("@supabase/gotrue-js: navigatorLock: released",e,s.name)}}else if(t===0){if(_t.debug)console.log("@supabase/gotrue-js: navigatorLock: not immediately available",e);throw new Ps(`Acquiring an exclusive Navigator LockManager lock "${e}" immediately failed`)}else{if(_t.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(_t.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(_t.debug)console.log("@supabase/gotrue-js: navigatorLock: recovered (stolen)",e,o.name);try{return await r()}finally{if(_t.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(_t.debug)console.log("@supabase/gotrue-js: navigatorLock: lock was stolen by another request",e);throw new Ps(`Lock "${e}" was released because another request stole it`)}throw s}}function Cc(){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 no(e){if(!/^0x[a-fA-F0-9]{40}$/.test(e))throw Error(`@supabase/auth-js: Address "${e}" is invalid.`);return e.toLowerCase()}function Ec(e){return parseInt(e,16)}function Sc(e){let t=new TextEncoder().encode(e);return"0x"+Array.from(t,(n)=>n.toString(16).padStart(2,"0")).join("")}function Ic(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(`
55
- `))throw Error(`@supabase/auth-js: Invalid SIWE message field "statement". Statement must not include '\\n'. Provided value: ${e.statement}`)}let g=no(e.address),f=u?`${u}://${n}`:n,b=e.statement?`${e.statement}
56
- `:"",p=`${f} wants you to sign in with your Ethereum account:
53
+ })`);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()||bn.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 Kt(`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:El};if(t&&n.updateJoinPayload(i),n.joinedOnce&&n.channelAdapter.isJoined())n.channelAdapter.push(ls.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([NA],{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:xl,u.heartbeatIntervalMs=(i=e===null||e===void 0?void 0:e.heartbeatIntervalMs)!==null&&i!==void 0?i:BA.HEARTBEAT_INTERVAL,u.transport=(s=e===null||e===void 0?void 0:e.transport)!==null&&s!==void 0?s:Bi.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:(f)=>OA[f-1]||PA;let d,A,g=(a=e===null||e===void 0?void 0:e.vsn)!==null&&a!==void 0?a:Il;switch(g){case Sl:d=(f,y)=>y(JSON.stringify(f)),A=(f,y)=>y(JSON.parse(f));break;case Oi: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=g,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 vn=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 DA(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 LA(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 MA(e){let t=e.fetchImpl??globalThis.fetch;return{async request({method:r,path:n,query:i,body:s,headers:o}){let a=DA(e.baseUrl,n,i),l=await LA(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 g=d?A:void 0,f=g?.error;throw new vn(f?.message??`Request failed with status ${c.status}`,{status:c.status,icebergType:f?.type,icebergCode:f?.code,details:g})}return{status:c.status,headers:c.headers,data:A}}}}function ps(e){return e.join("\x1F")}var FA=class{constructor(e,t=""){this.client=e,this.prefix=t}async listNamespaces(e){let t=e?{parent:ps(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/${ps(e.namespace)}`})}async loadNamespaceMetadata(e){return{properties:(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${ps(e.namespace)}`})).data.properties}}async namespaceExists(e){try{return await this.client.request({method:"HEAD",path:`${this.prefix}/namespaces/${ps(e.namespace)}`}),!0}catch(t){if(t instanceof vn&&t.status===404)return!1;throw t}}async createNamespaceIfNotExists(e,t){try{return await this.createNamespace(e,t)}catch(r){if(r instanceof vn&&r.status===409)return;throw r}}};function Br(e){return e.join("\x1F")}var GA=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/${Br(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/${Br(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/${Br(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/${Br(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/${Br(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/${Br(e.namespace)}/tables/${e.name}`,headers:t}),!0}catch(r){if(r instanceof vn&&r.status===404)return!1;throw r}}async createTableIfNotExists(e,t){try{return await this.createTable(e,t)}catch(r){if(r instanceof vn&&r.status===409)return await this.loadTable({namespace:e.namespace,name:t.name});throw r}}},Nl=class{constructor(e){let t="v1";if(e.catalogName)t+=`/${e.catalogName}`;let r=e.baseUrl.endsWith("/")?e.baseUrl:`${e.baseUrl}/`;this.client=MA({baseUrl:r,auth:e.auth,fetchImpl:e.fetch}),this.accessDelegation=e.accessDelegation?.join(","),this.namespaceOps=new FA(this.client,t),this.tableOps=new GA(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 ys=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 ws(e){return typeof e==="object"&&e!==null&&"__isStorageError"in e}var bs=class extends ys{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}}},Fl=class extends ys{constructor(e,t,r="storage"){super(e,r);this.name=r==="vectors"?"StorageVectorsUnknownError":"StorageUnknownError",this.originalError=t}};var UA=(e)=>{if(e)return(...t)=>e(...t);return(...t)=>fetch(...t)},jA=(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)},Gi=(e)=>{if(Array.isArray(e))return e.map((r)=>Gi(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]=Gi(n)}),t},HA=(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 En(e){return En=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},En(e)}function KA(e,t){if(En(e)!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t||"default");if(En(n)!="object")return n;throw TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function WA(e){var t=KA(e,"string");return En(t)=="symbol"?t:t+""}function YA(e,t,r){return(t=WA(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Dl(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?Dl(Object(r),!0).forEach(function(n){YA(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Dl(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}var Ll=(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)},QA=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 bs(Ll(o),s,a,n))}).catch(()=>{let o=s+"";t(new bs(i.statusText||`HTTP ${s} error`,s,o,n))})}else t(new Fl(Ll(e),e,n))},JA=(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(jA(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=ZA(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 ZA(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 Cn(e,t,r,n,i,s,o){return new Promise((a,l)=>{e(r,JA(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)=>QA(c,l,n,o))})}function Gl(e="storage"){return{get:async(t,r,n,i)=>Cn(t,"GET",r,n,i,void 0,e),post:async(t,r,n,i,s)=>Cn(t,"POST",r,i,s,n,e),put:async(t,r,n,i,s)=>Cn(t,"PUT",r,i,s,n,e),head:async(t,r,n,i)=>Cn(t,"HEAD",r,W(W({},n),{},{noResolveJson:!0}),i,void 0,e),remove:async(t,r,n,i,s)=>Cn(t,"DELETE",r,i,s,n,e)}}var $A=Gl("storage"),{get:Sn,post:pt,put:Ui,head:XA,remove:ji}=$A,ct=Gl("vectors"),Or=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=UA(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(ws(r))return{data:null,error:r};throw r}}},VA=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(ws(t))return{data:null,error:t};throw t}}},Ul;Ul=Symbol.toStringTag;var zA=class{constructor(e,t){this.downloadFn=e,this.shouldThrowOnError=t,this[Ul]="BlobDownloadBuilder",this.promise=null}asStream(){return new VA(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(ws(t))return{data:null,error:t};throw t}}},qA={limit:100,offset:0,sortBy:{column:"name",order:"asc"}},Ml={cacheControl:"3600",contentType:"text/plain;charset=UTF-8",upsert:!1},ef=class extends Or{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({},Ml),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"?Ui:pt)(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({},Ml),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 Ui(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 pt(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 ys("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 pt(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 pt(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 pt(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 pt(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 zA(()=>Sn(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()=>Gi(await Sn(t.fetch,`${t.url}/object/info/${r}`,{headers:t.headers})))}async exists(e){var t=this;let r=t._getFinalPath(e);try{return await XA(t.fetch,`${t.url}/object/${r}`,{headers:t.headers}),{data:!0,error:null}}catch(i){if(t.shouldThrowOnError)throw i;if(ws(i)){var n;let s=i instanceof bs?i.status:i instanceof Fl?(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 ji(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({},qA),t),{},{prefix:e||""});return await pt(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 pt(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}},tf="2.103.0",In={"X-Client-Info":`storage-js/${tf}`},rf=class extends Or{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({},In),t);super(s,o,r,"storage")}async listBuckets(e){var t=this;return t.handleOperation(async()=>{let r=t.listBucketOptionsToQueryString(e);return await Sn(t.fetch,`${t.url}/bucket${r}`,{headers:t.headers})})}async getBucket(e){var t=this;return t.handleOperation(async()=>await Sn(t.fetch,`${t.url}/bucket/${e}`,{headers:t.headers}))}async createBucket(e,t={public:!1}){var r=this;return r.handleOperation(async()=>await pt(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 Ui(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 pt(t.fetch,`${t.url}/bucket/${e}/empty`,{},{headers:t.headers}))}async deleteBucket(e){var t=this;return t.handleOperation(async()=>await ji(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():""}},nf=class extends Or{constructor(e,t={},r){let n=e.replace(/\/$/,""),i=W(W({},In),t);super(n,i,r,"storage")}async createBucket(e){var t=this;return t.handleOperation(async()=>await pt(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 Sn(t.fetch,i,{headers:t.headers})})}async deleteBucket(e){var t=this;return t.handleOperation(async()=>await ji(t.fetch,`${t.url}/bucket/${e}`,{},{headers:t.headers}))}from(e){var t=this;if(!HA(e))throw new ys("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 Nl({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}}}}})}},sf=class extends Or{constructor(e,t={},r){let n=e.replace(/\/$/,""),i=W(W({},In),{},{"Content-Type":"application/json"},t);super(n,i,r,"vectors")}async createIndex(e){var t=this;return t.handleOperation(async()=>await ct.post(t.fetch,`${t.url}/CreateIndex`,e,{headers:t.headers})||{})}async getIndex(e,t){var r=this;return r.handleOperation(async()=>await ct.post(r.fetch,`${r.url}/GetIndex`,{vectorBucketName:e,indexName:t},{headers:r.headers}))}async listIndexes(e){var t=this;return t.handleOperation(async()=>await ct.post(t.fetch,`${t.url}/ListIndexes`,e,{headers:t.headers}))}async deleteIndex(e,t){var r=this;return r.handleOperation(async()=>await ct.post(r.fetch,`${r.url}/DeleteIndex`,{vectorBucketName:e,indexName:t},{headers:r.headers})||{})}},of=class extends Or{constructor(e,t={},r){let n=e.replace(/\/$/,""),i=W(W({},In),{},{"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 ct.post(t.fetch,`${t.url}/PutVectors`,e,{headers:t.headers})||{})}async getVectors(e){var t=this;return t.handleOperation(async()=>await ct.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 ct.post(t.fetch,`${t.url}/ListVectors`,e,{headers:t.headers}))}async queryVectors(e){var t=this;return t.handleOperation(async()=>await ct.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 ct.post(t.fetch,`${t.url}/DeleteVectors`,e,{headers:t.headers})||{})}},af=class extends Or{constructor(e,t={},r){let n=e.replace(/\/$/,""),i=W(W({},In),{},{"Content-Type":"application/json"},t);super(n,i,r,"vectors")}async createBucket(e){var t=this;return t.handleOperation(async()=>await ct.post(t.fetch,`${t.url}/CreateVectorBucket`,{vectorBucketName:e},{headers:t.headers})||{})}async getBucket(e){var t=this;return t.handleOperation(async()=>await ct.post(t.fetch,`${t.url}/GetVectorBucket`,{vectorBucketName:e},{headers:t.headers}))}async listBuckets(e={}){var t=this;return t.handleOperation(async()=>await ct.post(t.fetch,`${t.url}/ListVectorBuckets`,e,{headers:t.headers}))}async deleteBucket(e){var t=this;return t.handleOperation(async()=>await ct.post(t.fetch,`${t.url}/DeleteVectorBucket`,{vectorBucketName:e},{headers:t.headers})||{})}},lf=class extends af{constructor(e,t={}){super(e,t.headers||{},t.fetch)}from(e){return new cf(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)}},cf=class extends sf{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 uf(this.url,this.headers,this.vectorBucketName,e,this.fetch)}},uf=class extends of{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}))}},jl=class extends rf{constructor(e,t={},r,n){super(e,t,r,n)}from(e){return new ef(this.url,this.headers,e,this.fetch)}get vectors(){return new lf(this.url+"/vector",{headers:this.headers,fetch:this.fetch})}get analytics(){return new nf(this.url+"/iceberg",this.headers,this.fetch)}};var _s="2.103.0";var nr=30000,vs=3,Cs=vs*nr,Hl="http://localhost:9999",Kl="supabase.auth.token";var Wl={"X-Client-Info":`gotrue-js/${_s}`};var xn="X-Supabase-Api-Version",Hi={"2024-01-01":{timestamp:Date.parse("2024-01-01T00:00:00.0Z"),name:"2024-01-01"}},Yl=/^([a-z0-9_-]{4})*($|[a-z0-9_-]{3}$|[a-z0-9_-]{2}$)$/i,Ql=600000;class sr 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 Ki extends sr{constructor(e,t,r){super(e,t,r);this.name="AuthApiError",this.status=t,this.code=r}}function Jl(e){return F(e)&&e.name==="AuthApiError"}class bt extends sr{constructor(e,t){super(e);this.name="AuthUnknownError",this.originalError=t}}class Rt extends sr{constructor(e,t,r,n){super(e,r,n);this.name=t,this.status=r}}class rt extends Rt{constructor(){super("Auth session missing!","AuthSessionMissingError",400,void 0)}}function kn(e){return F(e)&&e.name==="AuthSessionMissingError"}class Wt extends Rt{constructor(){super("Auth session or user missing","AuthInvalidTokenResponseError",500,void 0)}}class Pr extends Rt{constructor(e){super(e,"AuthInvalidCredentialsError",400,void 0)}}class Nr extends Rt{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 Zl(e){return F(e)&&e.name==="AuthImplicitGrantRedirectError"}class Es extends Rt{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 Wi extends Rt{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 Rn extends Rt{constructor(e,t){super(e,"AuthRetryableFetchError",t,void 0)}}function Ss(e){return F(e)&&e.name==="AuthRetryableFetchError"}class Is extends Rt{constructor(e,t,r){super(e,"AuthWeakPasswordError",t,"weak_password");this.reasons=r}}class Dr extends Rt{constructor(e){super(e,"AuthInvalidJwtError",400,"invalid_jwt")}}var xs="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".split(""),$l=`
54
+ \r=`.split(""),df=(()=>{let e=Array(128);for(let t=0;t<e.length;t+=1)e[t]=-1;for(let t=0;t<$l.length;t+=1)e[$l[t].charCodeAt(0)]=-2;for(let t=0;t<xs.length;t+=1)e[xs[t].charCodeAt(0)]=t;return e})();function Xl(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(xs[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(xs[n]),t.queuedBits-=6}}}function Vl(e,t,r){let n=df[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 Yi(e){let t=[],r=(o)=>{t.push(String.fromCodePoint(o))},n={utf8seq:0,codepoint:0},i={queue:0,queuedBits:0},s=(o)=>{ff(o,n,r)};for(let o=0;o<e.length;o+=1)Vl(e.charCodeAt(o),i,s);return t.join("")}function hf(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 Af(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}hf(n,t)}}function ff(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 Yt(e){let t=[],r={queue:0,queuedBits:0},n=(i)=>{t.push(i)};for(let i=0;i<e.length;i+=1)Vl(e.charCodeAt(i),r,n);return new Uint8Array(t)}function zl(e){let t=[];return Af(e,(r)=>t.push(r)),new Uint8Array(t)}function Mt(e){let t=[],r={queue:0,queuedBits:0},n=(i)=>{t.push(i)};return e.forEach((i)=>Xl(i,r,n)),Xl(null,r,n),t.join("")}function ql(e){return Math.round(Date.now()/1000)+e}function ec(){return Symbol("auth-callback")}var je=()=>typeof window<"u"&&typeof document<"u",ir={tested:!1,writable:!1},ks=()=>{if(!je())return!1;try{if(typeof globalThis.localStorage!=="object")return!1}catch(t){return!1}if(ir.tested)return ir.writable;let e=`lswt-${Math.random()}${Math.random()}`;try{globalThis.localStorage.setItem(e,e),globalThis.localStorage.removeItem(e),ir.tested=!0,ir.writable=!0}catch(t){ir.tested=!0,ir.writable=!1}return ir.writable};function tc(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 Rs=(e)=>{if(e)return(...t)=>e(...t);return(...t)=>fetch(...t)},rc=(e)=>typeof e==="object"&&e!==null&&("status"in e)&&("ok"in e)&&("json"in e)&&typeof e.json==="function",or=async(e,t,r)=>{await e.setItem(t,JSON.stringify(r))},Qt=async(e,t)=>{let r=await e.getItem(t);if(!r)return null;try{return JSON.parse(r)}catch(n){return r}},Je=async(e,t)=>{await e.removeItem(t)};class Tn{constructor(){this.promise=new Tn.promiseConstructor((e,t)=>{this.resolve=e,this.reject=t})}}Tn.promiseConstructor=Promise;function Bn(e){let t=e.split(".");if(t.length!==3)throw new Dr("Invalid JWT structure");for(let n=0;n<t.length;n++)if(!Yl.test(t[n]))throw new Dr("JWT not in base64url format");return{header:JSON.parse(Yi(t[0])),payload:JSON.parse(Yi(t[1])),signature:Yt(t[2]),raw:{header:t[0],payload:t[1]}}}async function nc(e){return await new Promise((t)=>{setTimeout(()=>t(null),e)})}function sc(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 gf(e){return("0"+e.toString(16)).substr(-2)}function mf(){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,gf).join("")}async function pf(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 bf(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 pf(e);return btoa(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function ar(e,t,r=!1){let n=mf(),i=n;if(r)i+="/PASSWORD_RECOVERY";await or(e,`${t}-code-verifier`,i);let s=await bf(n);return[s,n===s?"plain":"s256"]}var yf=/^2[0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$/i;function ic(e){let t=e.headers.get(xn);if(!t)return null;if(!t.match(yf))return null;try{return new Date(`${t}T00:00:00.0Z`)}catch(r){return null}}function oc(e){if(!e)throw Error("Missing exp claim");let t=Math.floor(Date.now()/1000);if(e<=t)throw Error("JWT has expired")}function ac(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 wf=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;function lr(e){if(!wf.test(e))throw Error("@supabase/auth-js: Expected parameter to be UUID but is not")}function Ts(){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 lc(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 Qi(e){return JSON.parse(JSON.stringify(e))}var cr=(e)=>e.msg||e.message||e.error_description||e.error||JSON.stringify(e),_f=[502,503,504];async function cc(e){var t;if(!rc(e))throw new Rn(cr(e),0);if(_f.includes(e.status))throw new Rn(cr(e),e.status);let r;try{r=await e.json()}catch(s){throw new bt(cr(s),s)}let n=void 0,i=ic(e);if(i&&i.getTime()>=Hi["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 Is(cr(r),e.status,r.weak_password.reasons)}else if(n==="weak_password")throw new Is(cr(r),e.status,((t=r.weak_password)===null||t===void 0?void 0:t.reasons)||[]);else if(n==="session_not_found")throw new rt;throw new Ki(cr(r),e.status||500,n)}var vf=(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 j(e,t,r,n){var i;let s=Object.assign({},n===null||n===void 0?void 0:n.headers);if(!s[xn])s[xn]=Hi["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 Cf(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 Cf(e,t,r,n,i,s){let o=vf(t,n,i,s),a;try{a=await e(r,Object.assign({},o))}catch(l){throw console.error(l),new Rn(cr(l),0)}if(!a.ok)await cc(a);if(n===null||n===void 0?void 0:n.noResolveJson)return a;try{return await a.json()}catch(l){await cc(l)}}function gt(e){var t;let r=null;if(Ef(e)){if(r=Object.assign({},e),!e.expires_at)r.expires_at=ql(e.expires_in)}let n=(t=e.user)!==null&&t!==void 0?t:e;return{data:{session:r,user:n},error:null}}function Ji(e){let t=gt(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 Tt(e){var t;return{data:{user:(t=e.user)!==null&&t!==void 0?t:e},error:null}}function uc(e){return{data:e,error:null}}function dc(e){let{action_link:t,email_otp:r,hashed_token:n,redirect_to:i,verification_type:s}=e,o=er(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 Zi(e){return e}function Ef(e){return e.access_token&&e.refresh_token&&e.expires_in}var Bs=["global","local","others"];class Lr{constructor({url:e="",headers:t={},fetch:r}){this.url=e,this.headers=t,this.fetch=Rs(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=Bs[0]){if(Bs.indexOf(t)<0)throw Error(`@supabase/auth-js: Parameter scope must be one of ${Bs.join(", ")}`);try{return await j(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 j(this.fetch,"POST",`${this.url}/invite`,{body:{email:e,data:t.data},headers:this.headers,redirectTo:t.redirectTo,xform:Tt})}catch(r){if(F(r))return{data:{user:null},error:r};throw r}}async generateLink(e){try{let{options:t}=e,r=er(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 j(this.fetch,"POST",`${this.url}/admin/generate_link`,{body:n,headers:this.headers,xform:dc,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 j(this.fetch,"POST",`${this.url}/admin/users`,{body:e,headers:this.headers,xform:Tt})}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 j(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:Zi});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((g)=>{let f=parseInt(g.split(";")[0].split("=")[1].substring(0,1)),y=JSON.parse(g.split(";")[1].split("=")[1]);l[`${y}Page`]=f}),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){lr(e);try{return await j(this.fetch,"GET",`${this.url}/admin/users/${e}`,{headers:this.headers,xform:Tt})}catch(t){if(F(t))return{data:{user:null},error:t};throw t}}async updateUserById(e,t){lr(e);try{return await j(this.fetch,"PUT",`${this.url}/admin/users/${e}`,{body:t,headers:this.headers,xform:Tt})}catch(r){if(F(r))return{data:{user:null},error:r};throw r}}async deleteUser(e,t=!1){lr(e);try{return await j(this.fetch,"DELETE",`${this.url}/admin/users/${e}`,{headers:this.headers,body:{should_soft_delete:t},xform:Tt})}catch(r){if(F(r))return{data:{user:null},error:r};throw r}}async _listFactors(e){lr(e.userId);try{let{data:t,error:r}=await j(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){lr(e.userId),lr(e.id);try{return{data:await j(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 j(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:Zi});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((g)=>{let f=parseInt(g.split(";")[0].split("=")[1].substring(0,1)),y=JSON.parse(g.split(";")[1].split("=")[1]);l[`${y}Page`]=f}),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 j(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 j(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 j(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 j(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 j(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 j(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 j(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 j(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 j(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 j(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 $i(e={}){return{getItem:(t)=>e[t]||null,setItem:(t,r)=>{e[t]=r},removeItem:(t)=>{delete e[t]}}}var yt={debug:!!(globalThis&&ks()&&globalThis.localStorage&&globalThis.localStorage.getItem("supabase.gotrue-js.locks.debug")==="true")};class Ps extends Error{constructor(e){super(e);this.isAcquireTimeout=!0}}class Os extends Ps{}async function Xi(e,t,r){if(yt.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(),yt.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),yt.debug)console.log("@supabase/gotrue-js: navigatorLock: acquired",e,s.name);try{return await r()}finally{if(yt.debug)console.log("@supabase/gotrue-js: navigatorLock: released",e,s.name)}}else if(t===0){if(yt.debug)console.log("@supabase/gotrue-js: navigatorLock: not immediately available",e);throw new Os(`Acquiring an exclusive Navigator LockManager lock "${e}" immediately failed`)}else{if(yt.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(yt.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(yt.debug)console.log("@supabase/gotrue-js: navigatorLock: recovered (stolen)",e,o.name);try{return await r()}finally{if(yt.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(yt.debug)console.log("@supabase/gotrue-js: navigatorLock: lock was stolen by another request",e);throw new Os(`Lock "${e}" was released because another request stole it`)}throw s}}function hc(){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 Vi(e){if(!/^0x[a-fA-F0-9]{40}$/.test(e))throw Error(`@supabase/auth-js: Address "${e}" is invalid.`);return e.toLowerCase()}function Ac(e){return parseInt(e,16)}function fc(e){let t=new TextEncoder().encode(e);return"0x"+Array.from(t,(n)=>n.toString(16).padStart(2,"0")).join("")}function gc(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(`
55
+ `))throw Error(`@supabase/auth-js: Invalid SIWE message field "statement". Statement must not include '\\n'. Provided value: ${e.statement}`)}let g=Vi(e.address),f=u?`${u}://${n}`:n,y=e.statement?`${e.statement}
56
+ `:"",b=`${f} wants you to sign in with your Ethereum account:
57
57
  ${g}
58
58
 
59
- ${b}`,C=`URI: ${d}
59
+ ${y}`,C=`URI: ${d}
60
60
  Version: ${A}
61
61
  Chain ID: ${r}${o?`
62
62
  Nonce: ${o}`:""}
63
63
  Issued At: ${s.toISOString()}`;if(i)C+=`
64
64
  Expiration Time: ${i.toISOString()}`;if(a)C+=`
65
65
  Not Before: ${a.toISOString()}`;if(l)C+=`
66
- Request ID: ${l}`;if(c){let w=`
67
- Resources:`;for(let I of c){if(!I||typeof I!=="string")throw Error(`@supabase/auth-js: Invalid SIWE message field "resources". Every resource must be a valid string. Provided value: ${I}`);w+=`
68
- - ${I}`}C+=w}return`${p}
69
- ${C}`}class ke 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 Mr extends ke{constructor(e,t){super({code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t,message:e});this.name="WebAuthnUnknownError",this.originalError=t}}function xc({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 ke({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 ke({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 ke({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 ke({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 ke({message:"The authenticator was previously registered",code:"ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",cause:e});else if(e.name==="NotAllowedError")return new ke({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 ke({message:'No entry in pubKeyCredParams was of type "public-key"',code:"ERROR_MALFORMED_PUBKEYCREDPARAMS",cause:e});return new ke({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(!so(o))return new ke({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e});else if(s.rp.id!==o)return new ke({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 ke({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 ke({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 ke({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e})}function kc({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 ke({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else if(e.name==="NotAllowedError")return new ke({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});else if(e.name==="SecurityError"){let n=window.location.hostname;if(!so(n))return new ke({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e});else if(r.rpId!==n)return new ke({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 ke({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 ke({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e})}class Tc{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 Pf=new Tc;function Bc(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=qt(e,["challenge","user","excludeCredentials"]),s=Yt(t).buffer,o=Object.assign(Object.assign({},r),{id:Yt(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:Yt(c.id).buffer,type:c.type||"public-key",transports:c.transports})}}return a}function Oc(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=qt(e,["challenge","allowCredentials"]),i=Yt(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:Yt(a.id).buffer,type:a.type||"public-key",transports:a.transports})}}return s}function Nc(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:Gt(new Uint8Array(e.response.attestationObject)),clientDataJSON:Gt(new Uint8Array(e.response.clientDataJSON))},type:"public-key",clientExtensionResults:e.getClientExtensionResults(),authenticatorAttachment:(t=r.authenticatorAttachment)!==null&&t!==void 0?t:void 0}}function Pc(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:Gt(new Uint8Array(i.authenticatorData)),clientDataJSON:Gt(new Uint8Array(i.clientDataJSON)),signature:Gt(new Uint8Array(i.signature)),userHandle:i.userHandle?Gt(new Uint8Array(i.userHandle)):void 0},type:"public-key",clientExtensionResults:n,authenticatorAttachment:(t=r.authenticatorAttachment)!==null&&t!==void 0?t:void 0}}function so(e){return e==="localhost"||/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(e)}function Rc(){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 Df(e){try{let t=await navigator.credentials.create(e);if(!t)return{data:null,error:new Mr("Empty credential response",t)};if(!(t instanceof PublicKeyCredential))return{data:null,error:new Mr("Browser returned unexpected credential type",t)};return{data:t,error:null}}catch(t){return{data:null,error:xc({error:t,options:e})}}}async function Lf(e){try{let t=await navigator.credentials.get(e);if(!t)return{data:null,error:new Mr("Empty credential response",t)};if(!(t instanceof PublicKeyCredential))return{data:null,error:new Mr("Browser returned unexpected credential type",t)};return{data:t,error:null}}catch(t){return{data:null,error:kc({error:t,options:e})}}}var Mf={hints:["security-key"],authenticatorSelection:{authenticatorAttachment:"cross-platform",requireResidentKey:!1,userVerification:"preferred",residentKey:"discouraged"},attestation:"direct"},Ff={userVerification:"preferred",hints:["security-key"],attestation:"direct"};function Ls(...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]=Ls(a,o);else n[s]=Ls(o)}else n[s]=o}}return n}function Gf(e,t){return Ls(Mf,e,t||{})}function Uf(e,t){return Ls(Ff,e,t||{})}class io{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:Pf.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,g=((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}:${g}`}else c.name=`${c.id}:${u}`}if(!c.displayName)c.displayName=c.name}switch(o.webauthn.type){case"create":{let c=Gf(o.webauthn.credential_options.publicKey,i===null||i===void 0?void 0:i.create),{data:u,error:d}=await Df({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=Uf(o.webauthn.credential_options.publicKey,i===null||i===void 0?void 0:i.request),{data:u,error:d}=await Lf(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(M(o))return{data:null,error:o};return{data:null,error:new wt("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 nr("rpId is required for WebAuthn authentication")};try{if(!Rc())return{data:null,error:new wt("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(M(s))return{data:null,error:s};return{data:null,error:new wt("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 nr("rpId is required for WebAuthn registration")};try{if(!Rc())return{data:null,error:new wt("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(M(s))return{data:null,error:s};return{data:null,error:new wt("Unexpected error in register",s)}}}}Cc();var jf={url:ql,storageKey:ec,autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,headers:tc,flowType:"implicit",debug:!1,hasCustomAuthorizationHeader:!1,throwOnError:!1,lockAcquireTimeout:5000,skipAutoInitialize:!1};async function Dc(e,t,r){return await r()}var Fr={};class On{get jwks(){var e,t;return(t=(e=Fr[this.storageKey])===null||e===void 0?void 0:e.jwks)!==null&&t!==void 0?t:{keys:[]}}set jwks(e){Fr[this.storageKey]=Object.assign(Object.assign({},Fr[this.storageKey]),{jwks:e})}get jwks_cached_at(){var e,t;return(t=(e=Fr[this.storageKey])===null||e===void 0?void 0:e.cachedAt)!==null&&t!==void 0?t:Number.MIN_SAFE_INTEGER}set jwks_cached_at(e){Fr[this.storageKey]=Object.assign(Object.assign({},Fr[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({},jf),e);if(this.storageKey=i.storageKey,this.instanceID=(t=On.nextInstanceID[this.storageKey])!==null&&t!==void 0?t:0,On.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 Lr({url:i.url,headers:i.headers,fetch:i.fetch}),this.url=i.url,this.headers=i.headers,this.fetch=Bs(i.fetch),this.lock=i.lock||Dc,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=ro;else this.lock=Dc;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 io(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(Ts())this.storage=globalThis.localStorage;else this.memoryStorage={},this.storage=to(this.memoryStorage);if(i.userStorage)this.userStorage=i.userStorage}else this.memoryStorage={},this.storage=to(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} (${Cs}) ${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=hc(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),ic(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(M(t))return this._returnResult({error:t});return this._returnResult({error:new wt("Unexpected error during initialization",t)})}finally{await this._handleVisibilityChange(),this._debug("#_initialize()","end")}}async signInAnonymously(e){var t,r,n;try{let i=await j(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:pt}),{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(M(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,g=null;if(this.flowType==="pkce")[A,g]=await or(this.storage,this.storageKey);i=await j(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:g},xform:pt})}else if("phone"in e){let{phone:c,password:u,options:d}=e;i=await j(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:pt})}else throw new Nr("You must provide either an email or phone number and a password");let{data:s,error:o}=i;if(o||!s)return await Qe(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 Qe(this.storage,`${this.storageKey}-code-verifier`),M(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 j(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:qi})}else if("phone"in e){let{phone:i,password:s,options:o}=e;t=await j(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:qi})}else throw new Nr("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 Wt;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(M(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,g;if("message"in e)A=e.message,g=e.signature;else{let{chain:f,wallet:b,statement:p,options:C}=e,w;if(!Ue()){if(typeof b!=="object"||!(C===null||C===void 0?void 0:C.url))throw Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");w=b}else if(typeof b==="object")w=b;else{let B=window;if("ethereum"in B&&typeof B.ethereum==="object"&&"request"in B.ethereum&&typeof B.ethereum.request==="function")w=B.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 I=new URL((t=C===null||C===void 0?void 0:C.url)!==null&&t!==void 0?t:window.location.href),_=await w.request({method:"eth_requestAccounts"}).then((B)=>B).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 y=no(_[0]),m=(r=C===null||C===void 0?void 0:C.signInWithEthereum)===null||r===void 0?void 0:r.chainId;if(!m){let B=await w.request({method:"eth_chainId"});m=Ec(B)}let O={domain:I.host,address:y,statement:p,uri:I.href,version:"1",chainId:m,nonce:(n=C===null||C===void 0?void 0:C.signInWithEthereum)===null||n===void 0?void 0:n.nonce,issuedAt:(s=(i=C===null||C===void 0?void 0:C.signInWithEthereum)===null||i===void 0?void 0:i.issuedAt)!==null&&s!==void 0?s:new Date,expirationTime:(o=C===null||C===void 0?void 0:C.signInWithEthereum)===null||o===void 0?void 0:o.expirationTime,notBefore:(a=C===null||C===void 0?void 0:C.signInWithEthereum)===null||a===void 0?void 0:a.notBefore,requestId:(l=C===null||C===void 0?void 0:C.signInWithEthereum)===null||l===void 0?void 0:l.requestId,resources:(c=C===null||C===void 0?void 0:C.signInWithEthereum)===null||c===void 0?void 0:c.resources};A=Ic(O),g=await w.request({method:"personal_sign",params:[Sc(A),y]})}try{let{data:f,error:b}=await j(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"ethereum",message:A,signature:g},((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:pt});if(b)throw b;if(!f||!f.session||!f.user){let p=new Wt;return this._returnResult({data:{user:null,session:null},error:p})}if(f.session)await this._saveSession(f.session),await this._notifyAllSubscribers("SIGNED_IN",f.session);return this._returnResult({data:Object.assign({},f),error:b})}catch(f){if(M(f))return this._returnResult({data:{user:null,session:null},error:f});throw f}}async signInWithSolana(e){var t,r,n,i,s,o,a,l,c,u,d,A;let g,f;if("message"in e)g=e.message,f=e.signature;else{let{chain:b,wallet:p,statement:C,options:w}=e,I;if(!Ue()){if(typeof p!=="object"||!(w===null||w===void 0?void 0:w.url))throw Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");I=p}else if(typeof p==="object")I=p;else{let y=window;if("solana"in y&&typeof y.solana==="object"&&(("signIn"in y.solana)&&typeof y.solana.signIn==="function"||("signMessage"in y.solana)&&typeof y.solana.signMessage==="function"))I=y.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=w===null||w===void 0?void 0:w.url)!==null&&t!==void 0?t:window.location.href);if("signIn"in I&&I.signIn){let y=await I.signIn(Object.assign(Object.assign(Object.assign({issuedAt:new Date().toISOString()},w===null||w===void 0?void 0:w.signInWithSolana),{version:"1",domain:_.host,uri:_.href}),C?{statement:C}:null)),m;if(Array.isArray(y)&&y[0]&&typeof y[0]==="object")m=y[0];else if(y&&typeof y==="object"&&"signedMessage"in y&&"signature"in y)m=y;else throw Error("@supabase/auth-js: Wallet method signIn() returned unrecognized value");if("signedMessage"in m&&"signature"in m&&(typeof m.signedMessage==="string"||m.signedMessage instanceof Uint8Array)&&m.signature instanceof Uint8Array)g=typeof m.signedMessage==="string"?m.signedMessage:new TextDecoder().decode(m.signedMessage),f=m.signature;else throw Error("@supabase/auth-js: Wallet method signIn() API returned object without signedMessage and signature fields")}else{if(!("signMessage"in I)||typeof I.signMessage!=="function"||!("publicKey"in I)||typeof I!=="object"||!I.publicKey||!("toBase58"in I.publicKey)||typeof I.publicKey.toBase58!=="function")throw Error("@supabase/auth-js: Wallet does not have a compatible signMessage() and publicKey.toBase58() API");g=[`${_.host} wants you to sign in with your Solana account:`,I.publicKey.toBase58(),...C?["",C,""]:[""],"Version: 1",`URI: ${_.href}`,`Issued At: ${(n=(r=w===null||w===void 0?void 0:w.signInWithSolana)===null||r===void 0?void 0:r.issuedAt)!==null&&n!==void 0?n:new Date().toISOString()}`,...((i=w===null||w===void 0?void 0:w.signInWithSolana)===null||i===void 0?void 0:i.notBefore)?[`Not Before: ${w.signInWithSolana.notBefore}`]:[],...((s=w===null||w===void 0?void 0:w.signInWithSolana)===null||s===void 0?void 0:s.expirationTime)?[`Expiration Time: ${w.signInWithSolana.expirationTime}`]:[],...((o=w===null||w===void 0?void 0:w.signInWithSolana)===null||o===void 0?void 0:o.chainId)?[`Chain ID: ${w.signInWithSolana.chainId}`]:[],...((a=w===null||w===void 0?void 0:w.signInWithSolana)===null||a===void 0?void 0:a.nonce)?[`Nonce: ${w.signInWithSolana.nonce}`]:[],...((l=w===null||w===void 0?void 0:w.signInWithSolana)===null||l===void 0?void 0:l.requestId)?[`Request ID: ${w.signInWithSolana.requestId}`]:[],...((u=(c=w===null||w===void 0?void 0:w.signInWithSolana)===null||c===void 0?void 0:c.resources)===null||u===void 0?void 0:u.length)?["Resources",...w.signInWithSolana.resources.map((m)=>`- ${m}`)]:[]].join(`
70
- `);let y=await I.signMessage(new TextEncoder().encode(g),"utf8");if(!y||!(y instanceof Uint8Array))throw Error("@supabase/auth-js: Wallet signMessage() API returned an recognized value");f=y}}try{let{data:b,error:p}=await j(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"solana",message:g,signature:Gt(f)},((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:pt});if(p)throw p;if(!b||!b.session||!b.user){let C=new Wt;return this._returnResult({data:{user:null,session:null},error:C})}if(b.session)await this._saveSession(b.session),await this._notifyAllSubscribers("SIGNED_IN",b.session);return this._returnResult({data:Object.assign({},b),error:p})}catch(b){if(M(b))return this._returnResult({data:{user:null,session:null},error:b});throw b}}async _exchangeCodeForSession(e){let t=await Qt(this.storage,`${this.storageKey}-code-verifier`),[r,n]=(t!==null&&t!==void 0?t:"").split("/");try{if(!r&&this.flowType==="pkce")throw new Xi;let{data:i,error:s}=await j(this.fetch,"POST",`${this.url}/token?grant_type=pkce`,{headers:this.headers,body:{auth_code:e,code_verifier:r},xform:pt});if(await Qe(this.storage,`${this.storageKey}-code-verifier`),s)throw s;if(!i||!i.session||!i.user){let o=new Wt;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 Qe(this.storage,`${this.storageKey}-code-verifier`),M(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 j(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:pt}),{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 Wt;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(M(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 or(this.storage,this.storageKey);let{error:u}=await j(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 j(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 Nr("You must provide either an email or phone number.")}catch(o){if(await Qe(this.storage,`${this.storageKey}-code-verifier`),M(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 j(this.fetch,"POST",`${this.url}/verify`,{headers:this.headers,body:Object.assign(Object.assign({},e),{gotrue_meta_security:{captcha_token:i}}),redirectTo:n,xform:pt});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(M(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 or(this.storage,this.storageKey);let l=await j(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:_c});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 Qe(this.storage,`${this.storageKey}-code-verifier`),M(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 st;let{error:n}=await j(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(M(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 j(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 j(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 Nr("You must provide either an email or phone number and a type")}catch(t){if(M(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 Qt(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()<Ss:!1;if(this._debug("#__loadSession()",`session has${r?"":" not"} expired`,"expires_at",e.expires_at),!r){if(this.userStorage){let s=await Qt(this.userStorage,this.storageKey+"-user");if(s===null||s===void 0?void 0:s.user)e.user=s.user;else e.user=Os()}if(this.storage.isServer&&e.user&&!e.user.__isUserNotAvailableProxy){let s={value:this.suppressGetSessionWarning};if(e.user=yc(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 j(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:e,xform:Bt});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 st};return await j(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:Bt})})}catch(t){if(M(t)){if(kn(t))await this._removeSession(),await Qe(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 st;let s=n.session,o=null,a=null;if(this.flowType==="pkce"&&e.email!=null)[o,a]=await or(this.storage,this.storageKey);let{data:l,error:c}=await j(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:Bt});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 Qe(this.storage,`${this.storageKey}-code-verifier`),M(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 st;let t=Date.now()/1000,r=t,n=!0,i=null,{payload:s}=Bn(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(M(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 st;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(M(t))return this._returnResult({data:{user:null,session:null},error:t});throw t}}async _getSessionFromURL(e,t){try{if(!Ue())throw new Pr("No browser detected.");if(e.error||e.error_description||e.error_code)throw new Pr(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 Is("Not a valid PKCE flow url.");break;case"pkce":if(this.flowType==="implicit")throw new Pr("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 Is("No code detected.");let{data:C,error:w}=await this._exchangeCodeForSession(e.code);if(w)throw w;let I=new URL(window.location.href);return I.searchParams.delete("code"),window.history.replaceState(window.history.state,"",I.toString()),{data:{session:C.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 Pr("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<=rr)console.warn(`@supabase/gotrue-js: Session as retrieved from URL expires in ${A}s, should have been closer to ${u}s`);let g=d-u;if(c-g>=120)console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued over 120s ago, URL could be stale",g,d,c);else if(c-g<0)console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued in the future? Check the device clock for skew",g,d,c);let{data:f,error:b}=await this._getUser(i);if(b)throw b;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:f.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(M(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 Qt(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&&!kn(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(!(sc(o)&&(o.status===404||o.status===401||o.status===403)||kn(o)))return this._returnResult({error:o})}}if(e!=="others")await this._removeSession(),await Qe(this.storage,`${this.storageKey}-code-verifier`);return this._returnResult({error:null})})}onAuthStateChange(e){let t=dc(),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),kn(i))console.warn(i);else console.error(i)}})}async resetPasswordForEmail(e,t={}){let r=null,n=null;if(this.flowType==="pkce")[r,n]=await or(this.storage,this.storageKey,!0);try{return await j(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 Qe(this.storage,`${this.storageKey}-code-verifier`),M(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(M(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 j(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(M(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 j(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:pt}),{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 Wt});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 Qe(this.storage,`${this.storageKey}-code-verifier`),M(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 j(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(M(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 gc(async(n)=>{if(n>0)await fc(200*Math.pow(2,n-1));return this._debug(t,"refreshing attempt",n),await j(this.fetch,"POST",`${this.url}/token?grant_type=refresh_token`,{body:{refresh_token:e},headers:this.headers,xform:pt})},(n,i)=>{let s=200*Math.pow(2,n);return i&&xs(i)&&Date.now()+s-r<rr})}catch(r){if(this._debug(t,"error",r),M(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 Qt(this.storage,this.storageKey);if(n&&this.userStorage){let s=await Qt(this.userStorage,this.storageKey+"-user");if(!this.storage.isServer&&Object.is(this.storage,this.userStorage)&&!s)s={user:n.user},await ir(this.userStorage,this.storageKey+"-user",s);n.user=(e=s===null||s===void 0?void 0:s.user)!==null&&e!==void 0?e:Os()}else if(n&&!n.user){if(!n.user){let s=await Qt(this.storage,this.storageKey+"-user");if(s&&(s===null||s===void 0?void 0:s.user))n.user=s.user,await Qe(this.storage,this.storageKey+"-user"),await ir(this.storage,this.storageKey,n);else n.user=Os()}}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()<Ss;if(this._debug("#_recoverAndRefresh()",`session has${i?"":" not"} expired with margin of ${Ss}s`),i){if(this.autoRefreshToken&&n.refresh_token){let{error:s}=await this._callRefreshToken(n.refresh_token);if(s){if(console.error(s),!xs(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 st;if(this.refreshingDeferred)return this.refreshingDeferred.promise;let n=`#_callRefreshToken(${e.substring(0,5)}...)`;this._debug(n,"begin");try{this.refreshingDeferred=new Tn;let{data:i,error:s}=await this._refreshAccessToken(e);if(s)throw s;if(!i.session)throw new st;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),M(i)){let s={data:null,error:i};if(!xs(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 Qe(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 ir(this.userStorage,this.storageKey+"-user",{user:t.user});let n=Object.assign({},t);delete n.user;let i=zi(n);await ir(this.storage,this.storageKey,i)}else{let n=zi(t);await ir(this.storage,this.storageKey,n)}}async _removeSession(){if(this._debug("#_removeSession()"),this.suppressGetSessionWarning=!1,await Qe(this.storage,this.storageKey),await Qe(this.storage,this.storageKey+"-code-verifier"),await Qe(this.storage,this.storageKey+"-user"),this.userStorage)await Qe(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(),rr);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)/rr);if(this._debug("#_autoRefreshTokenTick()",`access token expires in ${n} ticks, a tick lasts ${rr}ms, refresh threshold is ${Es} ticks`),n<=Es)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 Ds)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 or(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 j(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(M(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 j(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(M(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"?Nc(e.webauthn.credential_response):Pc(e.webauthn.credential_response)})}:{code:e.code}),{data:o,error:a}=await j(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(M(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 j(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:Bc(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:Oc(o.webauthn.credential_options.publicKey)})})}),error:null}}})}catch(t){if(M(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}=Bn(e),g=null;if(A.aal)g=A.aal;let f=g,{data:{user:b},error:p}=await this.getUser(e);if(p)return this._returnResult({data:null,error:p});if(((r=(t=b===null||b===void 0?void 0:b.factors)===null||t===void 0?void 0:t.filter((I)=>I.status==="verified"))!==null&&r!==void 0?r:[]).length>0)f="aal2";let w=A.amr||[];return{data:{currentLevel:g,nextLevel:f,currentAuthenticationMethods:w},error:null}}catch(A){if(M(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}=Bn(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 st});return await j(this.fetch,"GET",`${this.url}/oauth/authorizations/${e}`,{headers:this.headers,jwt:r.access_token,xform:(i)=>({data:i,error:null})})})}catch(t){if(M(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 st});let s=await j(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(M(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 st});let s=await j(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(M(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 st});return await j(this.fetch,"GET",`${this.url}/user/oauth/grants`,{headers:this.headers,jwt:t.access_token,xform:(n)=>({data:n,error:null})})})}catch(e){if(M(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 st});return await j(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(M(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+nc>n)return r;let{data:i,error:s}=await j(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:g}=await this.getSession();if(g||!A.session)return this._returnResult({data:null,error:g});r=A.session.access_token}let{header:n,payload:i,signature:s,raw:{header:o,payload:a}}=Bn(r);if(!(t===null||t===void 0?void 0:t.allowExpired))pc(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=bc(n.alg),u=await crypto.subtle.importKey("jwk",l,c,!0,["verify"]);if(!await crypto.subtle.verify(c,u,s,cc(`${o}.${a}`)))throw new Dr("Invalid JWT signature");return{data:{claims:i,header:n,signature:s},error:null}}catch(r){if(M(r))return this._returnResult({data:null,error:r});throw r}}}On.nextInstanceID={};var oo=On;var Hf=oo,ao=Hf;var Kf="2.103.0",Nn="";if(typeof Deno<"u")Nn="deno";else if(typeof document<"u")Nn="web";else if(typeof navigator<"u"&&navigator.product==="ReactNative")Nn="react-native";else Nn="node";var Wf={"X-Client-Info":`supabase-js-${Nn}/${Kf}`},Yf={headers:Wf},Qf={schema:"public"},Jf={autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,flowType:"implicit"},$f={};function Pn(e){return Pn=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},Pn(e)}function Zf(e,t){if(Pn(e)!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t||"default");if(Pn(n)!="object")return n;throw TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Xf(e){var t=Zf(e,"string");return Pn(t)=="symbol"?t:t+""}function Vf(e,t,r){return(t=Xf(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Lc(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 Re(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?Lc(Object(r),!0).forEach(function(n){Vf(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Lc(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}var zf=(e)=>{if(e)return(...t)=>e(...t);return(...t)=>fetch(...t)},qf=()=>Headers,eg=(e,t,r)=>{let n=zf(r),i=qf();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,Re(Re({},o),{},{headers:c}))}};function tg(e){return e.endsWith("/")?e:e+"/"}function rg(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:Re(Re({},l),i),auth:Re(Re({},c),s),realtime:Re(Re({},u),o),storage:{},global:Re(Re(Re({},d),a),{},{headers:Re(Re({},(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 ng(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(tg(t))}catch(r){throw Error("Invalid supabaseUrl: Provided URL is malformed.")}}var sg=class extends ao{constructor(e){super(e)}},ig=class{constructor(e,t,r){var n,i;this.supabaseUrl=e,this.supabaseKey=t;let s=ng(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:Qf,realtime:$f,auth:Re(Re({},Jf),{},{storageKey:o}),global:Yf},l=rg(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=eg(t,this._getAccessToken.bind(this),l.global.fetch),this.realtime=this._initRealtimeClient(Re({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 Ol(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 zl(this.storageUrl.href,this.headers,this.fetch,r===null||r===void 0?void 0:r.storage),!l.accessToken)this._listenForAuthEvents()}get functions(){return new ls(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 sg({url:this.authUrl.href,headers:Re(Re({},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((g)=>g.toLowerCase()==="authorization")})}_initRealtimeClient(e){return new _n(this.realtimeUrl.href,Re(Re({},e),{},{params:Re(Re({},{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}}},Mc=(e,t,r)=>new ig(e,t,r);function og(){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(og())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 gg=300000,Gc=16384,Uc=4096;function jc(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 Hc(e=process.env){let t=jc(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=jc(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||Fc(Ag(),".config");return{supabaseUrl:t,publishableKey:r,dashboardUrl:i,authFile:e.FLATBLOX_TUI_AUTH_FILE??Fc(s,"flatblox","tui-auth.json")}}function mg(e){if(typeof e!=="object"||e===null)return!1;let t=e;return typeof t.accessToken==="string"&&t.accessToken.length>0&&t.accessToken.length<=Gc&&typeof t.refreshToken==="string"&&t.refreshToken.length>0&&t.refreshToken.length<=Gc}async function pg(e){try{let t=JSON.parse(await cg(e,"utf8"));if(!mg(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 Ms(e,t){await lg(fg(e),{recursive:!0,mode:448});let r=`${e}.${process.pid}.tmp`;await hg(r,`${JSON.stringify({accessToken:t.access_token,refreshToken:t.refresh_token})}
71
- `,{mode:384}),await ug(r,e),await ag(e,384)}async function Gr(e){try{await dg(e)}catch(t){if(t.code!=="ENOENT")throw t}}function Kc(e){return Mc(e.supabaseUrl,e.publishableKey,{auth:{autoRefreshToken:!0,detectSessionInUrl:!1,persistSession:!1}})}async function Wc(e,t){let r=await pg(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 Gr(t),null;return await Ms(t,n.session),n.session}function bg(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 yg(e){try{return Bun.spawn(bg(e),{stdout:"ignore",stderr:"ignore"}).unref(),!0}catch{return!1}}function wg(e){let r=`<!doctype html>
66
+ Request ID: ${l}`;if(c){let _=`
67
+ 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}`);_+=`
68
+ - ${S}`}C+=_}return`${b}
69
+ ${C}`}class ke 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 Mr extends ke{constructor(e,t){super({code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t,message:e});this.name="WebAuthnUnknownError",this.originalError=t}}function mc({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 ke({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 ke({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 ke({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 ke({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 ke({message:"The authenticator was previously registered",code:"ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",cause:e});else if(e.name==="NotAllowedError")return new ke({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 ke({message:'No entry in pubKeyCredParams was of type "public-key"',code:"ERROR_MALFORMED_PUBKEYCREDPARAMS",cause:e});return new ke({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(!zi(o))return new ke({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e});else if(s.rp.id!==o)return new ke({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 ke({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 ke({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 ke({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e})}function pc({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 ke({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else if(e.name==="NotAllowedError")return new ke({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});else if(e.name==="SecurityError"){let n=window.location.hostname;if(!zi(n))return new ke({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e});else if(r.rpId!==n)return new ke({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 ke({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 ke({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e})}class yc{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 Sf=new yc;function wc(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=er(e,["challenge","user","excludeCredentials"]),s=Yt(t).buffer,o=Object.assign(Object.assign({},r),{id:Yt(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:Yt(c.id).buffer,type:c.type||"public-key",transports:c.transports})}}return a}function _c(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=er(e,["challenge","allowCredentials"]),i=Yt(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:Yt(a.id).buffer,type:a.type||"public-key",transports:a.transports})}}return s}function vc(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:Mt(new Uint8Array(e.response.attestationObject)),clientDataJSON:Mt(new Uint8Array(e.response.clientDataJSON))},type:"public-key",clientExtensionResults:e.getClientExtensionResults(),authenticatorAttachment:(t=r.authenticatorAttachment)!==null&&t!==void 0?t:void 0}}function Cc(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:Mt(new Uint8Array(i.authenticatorData)),clientDataJSON:Mt(new Uint8Array(i.clientDataJSON)),signature:Mt(new Uint8Array(i.signature)),userHandle:i.userHandle?Mt(new Uint8Array(i.userHandle)):void 0},type:"public-key",clientExtensionResults:n,authenticatorAttachment:(t=r.authenticatorAttachment)!==null&&t!==void 0?t:void 0}}function zi(e){return e==="localhost"||/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(e)}function bc(){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 If(e){try{let t=await navigator.credentials.create(e);if(!t)return{data:null,error:new Mr("Empty credential response",t)};if(!(t instanceof PublicKeyCredential))return{data:null,error:new Mr("Browser returned unexpected credential type",t)};return{data:t,error:null}}catch(t){return{data:null,error:mc({error:t,options:e})}}}async function xf(e){try{let t=await navigator.credentials.get(e);if(!t)return{data:null,error:new Mr("Empty credential response",t)};if(!(t instanceof PublicKeyCredential))return{data:null,error:new Mr("Browser returned unexpected credential type",t)};return{data:t,error:null}}catch(t){return{data:null,error:pc({error:t,options:e})}}}var kf={hints:["security-key"],authenticatorSelection:{authenticatorAttachment:"cross-platform",requireResidentKey:!1,userVerification:"preferred",residentKey:"discouraged"},attestation:"direct"},Rf={userVerification:"preferred",hints:["security-key"],attestation:"direct"};function Ns(...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]=Ns(a,o);else n[s]=Ns(o)}else n[s]=o}}return n}function Tf(e,t){return Ns(kf,e,t||{})}function Bf(e,t){return Ns(Rf,e,t||{})}class qi{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:Sf.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,g=((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}:${g}`}else c.name=`${c.id}:${u}`}if(!c.displayName)c.displayName=c.name}switch(o.webauthn.type){case"create":{let c=Tf(o.webauthn.credential_options.publicKey,i===null||i===void 0?void 0:i.create),{data:u,error:d}=await If({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=Bf(o.webauthn.credential_options.publicKey,i===null||i===void 0?void 0:i.request),{data:u,error:d}=await xf(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 bt("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 sr("rpId is required for WebAuthn authentication")};try{if(!bc())return{data:null,error:new bt("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 bt("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 sr("rpId is required for WebAuthn registration")};try{if(!bc())return{data:null,error:new bt("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 bt("Unexpected error in register",s)}}}}hc();var Of={url:Hl,storageKey:Kl,autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,headers:Wl,flowType:"implicit",debug:!1,hasCustomAuthorizationHeader:!1,throwOnError:!1,lockAcquireTimeout:5000,skipAutoInitialize:!1};async function Ec(e,t,r){return await r()}var Fr={};class On{get jwks(){var e,t;return(t=(e=Fr[this.storageKey])===null||e===void 0?void 0:e.jwks)!==null&&t!==void 0?t:{keys:[]}}set jwks(e){Fr[this.storageKey]=Object.assign(Object.assign({},Fr[this.storageKey]),{jwks:e})}get jwks_cached_at(){var e,t;return(t=(e=Fr[this.storageKey])===null||e===void 0?void 0:e.cachedAt)!==null&&t!==void 0?t:Number.MIN_SAFE_INTEGER}set jwks_cached_at(e){Fr[this.storageKey]=Object.assign(Object.assign({},Fr[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({},Of),e);if(this.storageKey=i.storageKey,this.instanceID=(t=On.nextInstanceID[this.storageKey])!==null&&t!==void 0?t:0,On.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 Lr({url:i.url,headers:i.headers,fetch:i.fetch}),this.url=i.url,this.headers=i.headers,this.fetch=Rs(i.fetch),this.lock=i.lock||Ec,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=Xi;else this.lock=Ec;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 qi(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(ks())this.storage=globalThis.localStorage;else this.memoryStorage={},this.storage=$i(this.memoryStorage);if(i.userStorage)this.userStorage=i.userStorage}else this.memoryStorage={},this.storage=$i(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} (${_s}) ${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=tc(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),Zl(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 bt("Unexpected error during initialization",t)})}finally{await this._handleVisibilityChange(),this._debug("#_initialize()","end")}}async signInAnonymously(e){var t,r,n;try{let i=await j(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:gt}),{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,g=null;if(this.flowType==="pkce")[A,g]=await ar(this.storage,this.storageKey);i=await j(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:g},xform:gt})}else if("phone"in e){let{phone:c,password:u,options:d}=e;i=await j(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:gt})}else throw new Pr("You must provide either an email or phone number and a password");let{data:s,error:o}=i;if(o||!s)return await Je(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 Je(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 j(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:Ji})}else if("phone"in e){let{phone:i,password:s,options:o}=e;t=await j(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:Ji})}else throw new Pr("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 Wt;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,g;if("message"in e)A=e.message,g=e.signature;else{let{chain:f,wallet:y,statement:b,options:C}=e,_;if(!je()){if(typeof y!=="object"||!(C===null||C===void 0?void 0:C.url))throw Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");_=y}else if(typeof y==="object")_=y;else{let O=window;if("ethereum"in O&&typeof O.ethereum==="object"&&"request"in O.ethereum&&typeof O.ethereum.request==="function")_=O.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=C===null||C===void 0?void 0:C.url)!==null&&t!==void 0?t:window.location.href),v=await _.request({method:"eth_requestAccounts"}).then((O)=>O).catch(()=>{throw Error("@supabase/auth-js: Wallet method eth_requestAccounts is missing or invalid")});if(!v||v.length===0)throw Error("@supabase/auth-js: No accounts available. Please ensure the wallet is connected.");let w=Vi(v[0]),m=(r=C===null||C===void 0?void 0:C.signInWithEthereum)===null||r===void 0?void 0:r.chainId;if(!m){let O=await _.request({method:"eth_chainId"});m=Ac(O)}let P={domain:S.host,address:w,statement:b,uri:S.href,version:"1",chainId:m,nonce:(n=C===null||C===void 0?void 0:C.signInWithEthereum)===null||n===void 0?void 0:n.nonce,issuedAt:(s=(i=C===null||C===void 0?void 0:C.signInWithEthereum)===null||i===void 0?void 0:i.issuedAt)!==null&&s!==void 0?s:new Date,expirationTime:(o=C===null||C===void 0?void 0:C.signInWithEthereum)===null||o===void 0?void 0:o.expirationTime,notBefore:(a=C===null||C===void 0?void 0:C.signInWithEthereum)===null||a===void 0?void 0:a.notBefore,requestId:(l=C===null||C===void 0?void 0:C.signInWithEthereum)===null||l===void 0?void 0:l.requestId,resources:(c=C===null||C===void 0?void 0:C.signInWithEthereum)===null||c===void 0?void 0:c.resources};A=gc(P),g=await _.request({method:"personal_sign",params:[fc(A),w]})}try{let{data:f,error:y}=await j(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"ethereum",message:A,signature:g},((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:gt});if(y)throw y;if(!f||!f.session||!f.user){let b=new Wt;return this._returnResult({data:{user:null,session:null},error:b})}if(f.session)await this._saveSession(f.session),await this._notifyAllSubscribers("SIGNED_IN",f.session);return this._returnResult({data:Object.assign({},f),error:y})}catch(f){if(F(f))return this._returnResult({data:{user:null,session:null},error:f});throw f}}async signInWithSolana(e){var t,r,n,i,s,o,a,l,c,u,d,A;let g,f;if("message"in e)g=e.message,f=e.signature;else{let{chain:y,wallet:b,statement:C,options:_}=e,S;if(!je()){if(typeof b!=="object"||!(_===null||_===void 0?void 0:_.url))throw Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");S=b}else if(typeof b==="object")S=b;else{let w=window;if("solana"in w&&typeof w.solana==="object"&&(("signIn"in w.solana)&&typeof w.solana.signIn==="function"||("signMessage"in w.solana)&&typeof w.solana.signMessage==="function"))S=w.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 v=new URL((t=_===null||_===void 0?void 0:_.url)!==null&&t!==void 0?t:window.location.href);if("signIn"in S&&S.signIn){let w=await S.signIn(Object.assign(Object.assign(Object.assign({issuedAt:new Date().toISOString()},_===null||_===void 0?void 0:_.signInWithSolana),{version:"1",domain:v.host,uri:v.href}),C?{statement:C}:null)),m;if(Array.isArray(w)&&w[0]&&typeof w[0]==="object")m=w[0];else if(w&&typeof w==="object"&&"signedMessage"in w&&"signature"in w)m=w;else throw Error("@supabase/auth-js: Wallet method signIn() returned unrecognized value");if("signedMessage"in m&&"signature"in m&&(typeof m.signedMessage==="string"||m.signedMessage instanceof Uint8Array)&&m.signature instanceof Uint8Array)g=typeof m.signedMessage==="string"?m.signedMessage:new TextDecoder().decode(m.signedMessage),f=m.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");g=[`${v.host} wants you to sign in with your Solana account:`,S.publicKey.toBase58(),...C?["",C,""]:[""],"Version: 1",`URI: ${v.href}`,`Issued At: ${(n=(r=_===null||_===void 0?void 0:_.signInWithSolana)===null||r===void 0?void 0:r.issuedAt)!==null&&n!==void 0?n:new Date().toISOString()}`,...((i=_===null||_===void 0?void 0:_.signInWithSolana)===null||i===void 0?void 0:i.notBefore)?[`Not Before: ${_.signInWithSolana.notBefore}`]:[],...((s=_===null||_===void 0?void 0:_.signInWithSolana)===null||s===void 0?void 0:s.expirationTime)?[`Expiration Time: ${_.signInWithSolana.expirationTime}`]:[],...((o=_===null||_===void 0?void 0:_.signInWithSolana)===null||o===void 0?void 0:o.chainId)?[`Chain ID: ${_.signInWithSolana.chainId}`]:[],...((a=_===null||_===void 0?void 0:_.signInWithSolana)===null||a===void 0?void 0:a.nonce)?[`Nonce: ${_.signInWithSolana.nonce}`]:[],...((l=_===null||_===void 0?void 0:_.signInWithSolana)===null||l===void 0?void 0:l.requestId)?[`Request ID: ${_.signInWithSolana.requestId}`]:[],...((u=(c=_===null||_===void 0?void 0:_.signInWithSolana)===null||c===void 0?void 0:c.resources)===null||u===void 0?void 0:u.length)?["Resources",..._.signInWithSolana.resources.map((m)=>`- ${m}`)]:[]].join(`
70
+ `);let w=await S.signMessage(new TextEncoder().encode(g),"utf8");if(!w||!(w instanceof Uint8Array))throw Error("@supabase/auth-js: Wallet signMessage() API returned an recognized value");f=w}}try{let{data:y,error:b}=await j(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"solana",message:g,signature:Mt(f)},((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:gt});if(b)throw b;if(!y||!y.session||!y.user){let C=new Wt;return this._returnResult({data:{user:null,session:null},error:C})}if(y.session)await this._saveSession(y.session),await this._notifyAllSubscribers("SIGNED_IN",y.session);return this._returnResult({data:Object.assign({},y),error:b})}catch(y){if(F(y))return this._returnResult({data:{user:null,session:null},error:y});throw y}}async _exchangeCodeForSession(e){let t=await Qt(this.storage,`${this.storageKey}-code-verifier`),[r,n]=(t!==null&&t!==void 0?t:"").split("/");try{if(!r&&this.flowType==="pkce")throw new Wi;let{data:i,error:s}=await j(this.fetch,"POST",`${this.url}/token?grant_type=pkce`,{headers:this.headers,body:{auth_code:e,code_verifier:r},xform:gt});if(await Je(this.storage,`${this.storageKey}-code-verifier`),s)throw s;if(!i||!i.session||!i.user){let o=new Wt;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 Je(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 j(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:gt}),{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 Wt;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 ar(this.storage,this.storageKey);let{error:u}=await j(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 j(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 Pr("You must provide either an email or phone number.")}catch(o){if(await Je(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 j(this.fetch,"POST",`${this.url}/verify`,{headers:this.headers,body:Object.assign(Object.assign({},e),{gotrue_meta_security:{captcha_token:i}}),redirectTo:n,xform:gt});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 ar(this.storage,this.storageKey);let l=await j(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:uc});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 Je(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 rt;let{error:n}=await j(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 j(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 j(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 Pr("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 Qt(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()<Cs:!1;if(this._debug("#__loadSession()",`session has${r?"":" not"} expired`,"expires_at",e.expires_at),!r){if(this.userStorage){let s=await Qt(this.userStorage,this.storageKey+"-user");if(s===null||s===void 0?void 0:s.user)e.user=s.user;else e.user=Ts()}if(this.storage.isServer&&e.user&&!e.user.__isUserNotAvailableProxy){let s={value:this.suppressGetSessionWarning};if(e.user=lc(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 j(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:e,xform:Tt});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 rt};return await j(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:Tt})})}catch(t){if(F(t)){if(kn(t))await this._removeSession(),await Je(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 rt;let s=n.session,o=null,a=null;if(this.flowType==="pkce"&&e.email!=null)[o,a]=await ar(this.storage,this.storageKey);let{data:l,error:c}=await j(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:Tt});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 Je(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 rt;let t=Date.now()/1000,r=t,n=!0,i=null,{payload:s}=Bn(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 rt;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 Nr("No browser detected.");if(e.error||e.error_description||e.error_code)throw new Nr(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 Es("Not a valid PKCE flow url.");break;case"pkce":if(this.flowType==="implicit")throw new Nr("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 Es("No code detected.");let{data:C,error:_}=await this._exchangeCodeForSession(e.code);if(_)throw _;let S=new URL(window.location.href);return S.searchParams.delete("code"),window.history.replaceState(window.history.state,"",S.toString()),{data:{session:C.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 Nr("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<=nr)console.warn(`@supabase/gotrue-js: Session as retrieved from URL expires in ${A}s, should have been closer to ${u}s`);let g=d-u;if(c-g>=120)console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued over 120s ago, URL could be stale",g,d,c);else if(c-g<0)console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued in the future? Check the device clock for skew",g,d,c);let{data:f,error:y}=await this._getUser(i);if(y)throw y;let b={provider_token:r,provider_refresh_token:n,access_token:i,expires_in:u,expires_at:d,refresh_token:s,token_type:l,user:f.user};return window.location.hash="",this._debug("#_getSessionFromURL()","clearing window.location.hash"),this._returnResult({data:{session:b,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 Qt(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&&!kn(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(!(Jl(o)&&(o.status===404||o.status===401||o.status===403)||kn(o)))return this._returnResult({error:o})}}if(e!=="others")await this._removeSession(),await Je(this.storage,`${this.storageKey}-code-verifier`);return this._returnResult({error:null})})}onAuthStateChange(e){let t=ec(),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),kn(i))console.warn(i);else console.error(i)}})}async resetPasswordForEmail(e,t={}){let r=null,n=null;if(this.flowType==="pkce")[r,n]=await ar(this.storage,this.storageKey,!0);try{return await j(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 Je(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 j(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 j(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:gt}),{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 Wt});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 Je(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 j(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 sc(async(n)=>{if(n>0)await nc(200*Math.pow(2,n-1));return this._debug(t,"refreshing attempt",n),await j(this.fetch,"POST",`${this.url}/token?grant_type=refresh_token`,{body:{refresh_token:e},headers:this.headers,xform:gt})},(n,i)=>{let s=200*Math.pow(2,n);return i&&Ss(i)&&Date.now()+s-r<nr})}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 Qt(this.storage,this.storageKey);if(n&&this.userStorage){let s=await Qt(this.userStorage,this.storageKey+"-user");if(!this.storage.isServer&&Object.is(this.storage,this.userStorage)&&!s)s={user:n.user},await or(this.userStorage,this.storageKey+"-user",s);n.user=(e=s===null||s===void 0?void 0:s.user)!==null&&e!==void 0?e:Ts()}else if(n&&!n.user){if(!n.user){let s=await Qt(this.storage,this.storageKey+"-user");if(s&&(s===null||s===void 0?void 0:s.user))n.user=s.user,await Je(this.storage,this.storageKey+"-user"),await or(this.storage,this.storageKey,n);else n.user=Ts()}}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()<Cs;if(this._debug("#_recoverAndRefresh()",`session has${i?"":" not"} expired with margin of ${Cs}s`),i){if(this.autoRefreshToken&&n.refresh_token){let{error:s}=await this._callRefreshToken(n.refresh_token);if(s){if(console.error(s),!Ss(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 rt;if(this.refreshingDeferred)return this.refreshingDeferred.promise;let n=`#_callRefreshToken(${e.substring(0,5)}...)`;this._debug(n,"begin");try{this.refreshingDeferred=new Tn;let{data:i,error:s}=await this._refreshAccessToken(e);if(s)throw s;if(!i.session)throw new rt;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(!Ss(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 Je(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 or(this.userStorage,this.storageKey+"-user",{user:t.user});let n=Object.assign({},t);delete n.user;let i=Qi(n);await or(this.storage,this.storageKey,i)}else{let n=Qi(t);await or(this.storage,this.storageKey,n)}}async _removeSession(){if(this._debug("#_removeSession()"),this.suppressGetSessionWarning=!1,await Je(this.storage,this.storageKey),await Je(this.storage,this.storageKey+"-code-verifier"),await Je(this.storage,this.storageKey+"-user"),this.userStorage)await Je(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(),nr);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)/nr);if(this._debug("#_autoRefreshTokenTick()",`access token expires in ${n} ticks, a tick lasts ${nr}ms, refresh threshold is ${vs} ticks`),n<=vs)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 Ps)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 ar(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 j(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 j(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"?vc(e.webauthn.credential_response):Cc(e.webauthn.credential_response)})}:{code:e.code}),{data:o,error:a}=await j(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 j(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:wc(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:_c(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}=Bn(e),g=null;if(A.aal)g=A.aal;let f=g,{data:{user:y},error:b}=await this.getUser(e);if(b)return this._returnResult({data:null,error:b});if(((r=(t=y===null||y===void 0?void 0:y.factors)===null||t===void 0?void 0:t.filter((S)=>S.status==="verified"))!==null&&r!==void 0?r:[]).length>0)f="aal2";let _=A.amr||[];return{data:{currentLevel:g,nextLevel:f,currentAuthenticationMethods:_},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}=Bn(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 rt});return await j(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 rt});let s=await j(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 rt});let s=await j(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 rt});return await j(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 rt});return await j(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+Ql>n)return r;let{data:i,error:s}=await j(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:g}=await this.getSession();if(g||!A.session)return this._returnResult({data:null,error:g});r=A.session.access_token}let{header:n,payload:i,signature:s,raw:{header:o,payload:a}}=Bn(r);if(!(t===null||t===void 0?void 0:t.allowExpired))oc(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=ac(n.alg),u=await crypto.subtle.importKey("jwk",l,c,!0,["verify"]);if(!await crypto.subtle.verify(c,u,s,zl(`${o}.${a}`)))throw new Dr("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}}}On.nextInstanceID={};var eo=On;var Pf=eo,to=Pf;var Nf="2.103.0",Pn="";if(typeof Deno<"u")Pn="deno";else if(typeof document<"u")Pn="web";else if(typeof navigator<"u"&&navigator.product==="ReactNative")Pn="react-native";else Pn="node";var Df={"X-Client-Info":`supabase-js-${Pn}/${Nf}`},Lf={headers:Df},Mf={schema:"public"},Ff={autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,flowType:"implicit"},Gf={};function Nn(e){return Nn=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},Nn(e)}function Uf(e,t){if(Nn(e)!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t||"default");if(Nn(n)!="object")return n;throw TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function jf(e){var t=Uf(e,"string");return Nn(t)=="symbol"?t:t+""}function Hf(e,t,r){return(t=jf(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Sc(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 Re(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?Sc(Object(r),!0).forEach(function(n){Hf(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Sc(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}var Kf=(e)=>{if(e)return(...t)=>e(...t);return(...t)=>fetch(...t)},Wf=()=>Headers,Yf=(e,t,r)=>{let n=Kf(r),i=Wf();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,Re(Re({},o),{},{headers:c}))}};function Qf(e){return e.endsWith("/")?e:e+"/"}function Jf(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:Re(Re({},l),i),auth:Re(Re({},c),s),realtime:Re(Re({},u),o),storage:{},global:Re(Re(Re({},d),a),{},{headers:Re(Re({},(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 Zf(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(Qf(t))}catch(r){throw Error("Invalid supabaseUrl: Provided URL is malformed.")}}var $f=class extends to{constructor(e){super(e)}},Xf=class{constructor(e,t,r){var n,i;this.supabaseUrl=e,this.supabaseKey=t;let s=Zf(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:Mf,realtime:Gf,auth:Re(Re({},Ff),{},{storageKey:o}),global:Lf},l=Jf(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=Yf(t,this._getAccessToken.bind(this),l.global.fetch),this.realtime=this._initRealtimeClient(Re({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 _l(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 jl(this.storageUrl.href,this.headers,this.fetch,r===null||r===void 0?void 0:r.storage),!l.accessToken)this._listenForAuthEvents()}get functions(){return new os(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 $f({url:this.authUrl.href,headers:Re(Re({},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((g)=>g.toLowerCase()==="authorization")})}_initRealtimeClient(e){return new _n(this.realtimeUrl.href,Re(Re({},e),{},{params:Re(Re({},{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}}},Ic=(e,t,r)=>new Xf(e,t,r);function Vf(){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(Vf())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 og=300000,kc=16384,Rc=4096;function Tc(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 Bc(e=process.env){let t=Tc(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=Tc(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||xc(sg(),".config");return{supabaseUrl:t,publishableKey:r,dashboardUrl:i,authFile:e.FLATBLOX_TUI_AUTH_FILE??xc(s,"flatblox","tui-auth.json")}}function ag(e){if(typeof e!=="object"||e===null)return!1;let t=e;return typeof t.accessToken==="string"&&t.accessToken.length>0&&t.accessToken.length<=kc&&typeof t.refreshToken==="string"&&t.refreshToken.length>0&&t.refreshToken.length<=kc}async function lg(e){try{let t=JSON.parse(await eg(e,"utf8"));if(!ag(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 Ds(e,t){await qf(ig(e),{recursive:!0,mode:448});let r=`${e}.${process.pid}.tmp`;await ng(r,`${JSON.stringify({accessToken:t.access_token,refreshToken:t.refresh_token})}
71
+ `,{mode:384}),await tg(r,e),await zf(e,384)}async function Gr(e){try{await rg(e)}catch(t){if(t.code!=="ENOENT")throw t}}function Oc(e){return Ic(e.supabaseUrl,e.publishableKey,{auth:{autoRefreshToken:!0,detectSessionInUrl:!1,persistSession:!1}})}async function Pc(e,t){let r=await lg(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 Gr(t),null;return await Ds(t,n.session),n.session}function cg(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 ug(e){try{return Bun.spawn(cg(e),{stdout:"ignore",stderr:"ignore"}).unref(),!0}catch{return!1}}function dg(e){let r=`<!doctype html>
72
72
  <meta charset="utf-8">
73
73
  <title>Flatblox TUI connected</title>
74
74
  <style>body{background:#0e1018;color:#eef0ff;font:18px system-ui;display:grid;min-height:90vh;place-items:center}main{text-align:center}h1{color:#ff5ca8}</style>
@@ -79,10 +79,10 @@ history.replaceState(null,"",location.pathname+location.search);
79
79
  fetch("/token?state="+encodeURIComponent(${JSON.stringify(e)}),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({code:values.get("code")})})
80
80
  .then(response=>{if(!response.ok)throw new Error();document.querySelector("h1").textContent="Flatblox TUI connected";document.querySelector("#status").textContent="You can close this tab and return to the terminal."})
81
81
  .catch(()=>{document.querySelector("h1").textContent="Connection failed";document.querySelector("#status").textContent="Return to the terminal and try again."});
82
- </script>`;return new Response(r,{headers:{"cache-control":"no-store",connection:"close","content-security-policy":"default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; connect-src 'self'","content-type":"text/html; charset=utf-8","x-content-type-options":"nosniff"}})}async function Yc(e,t=yg,r=gg,n=(s)=>process.stdout.write(`Open this URL to connect Flatblox TUI:
82
+ </script>`;return new Response(r,{headers:{"cache-control":"no-store",connection:"close","content-security-policy":"default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; connect-src 'self'","content-type":"text/html; charset=utf-8","x-content-type-options":"nosniff"}})}async function Nc(e,t=ug,r=og,n=(s)=>process.stdout.write(`Open this URL to connect Flatblox TUI:
83
83
  ${s}
84
84
 
85
- `),i){let s=crypto.randomUUID(),o,a,l=new Promise((p,C)=>{o=p,a=C}),c=!1,u=Bun.serve({hostname:"127.0.0.1",port:0,async fetch(p){let C=new URL(p.url);if(C.searchParams.get("state")!==s)return new Response("Invalid pairing state",{status:403});if(p.method==="GET"&&C.pathname==="/callback")return wg(s);if(p.method!=="POST"||C.pathname!=="/token")return new Response("Not found",{status:404});let w=await p.text();if(w.length>Uc+64)return new Response("Pairing code is too large",{status:413});let I;try{I=JSON.parse(w)}catch{return new Response("Invalid pairing code",{status:400})}let _=typeof I==="object"&&I!==null?I.code:null;if(typeof _!=="string"||_.length===0||_.length>Uc)return new Response("Invalid pairing code",{status:400});if(!c)c=!0,o(_);return new Response("Connected",{headers:{"cache-control":"no-store",connection:"close"}})}}),d=`http://127.0.0.1:${u.port}/callback`,A=new URL("tui-auth",e.endsWith("/")?e:`${e}/`);A.searchParams.set("callback",d),A.searchParams.set("state",s);let g=A.toString();n(g),t(g);let f=setTimeout(()=>{if(!c)c=!0,a(Error("Sign-in timed out"))},r),b=()=>{if(!c)c=!0,a(Error("Sign-in cancelled"))};if(i?.aborted)b();else i?.addEventListener("abort",b,{once:!0});try{return await l}finally{i?.removeEventListener("abort",b),clearTimeout(f),await u.stop(!1)}}async function Qc(e,t){let{data:r,error:n}=await e.auth.verifyOtp({token_hash:t,type:"magiclink"});if(n||!r.session)throw Error(n?.message??"Could not start the Supabase session");return r.session}import{basename as _g,resolve as Jc}from"path";var lo=`flatblox-tui [draft.json] [options]
85
+ `),i){let s=crypto.randomUUID(),o,a,l=new Promise((b,C)=>{o=b,a=C}),c=!1,u=Bun.serve({hostname:"127.0.0.1",port:0,async fetch(b){let C=new URL(b.url);if(C.searchParams.get("state")!==s)return new Response("Invalid pairing state",{status:403});if(b.method==="GET"&&C.pathname==="/callback")return dg(s);if(b.method!=="POST"||C.pathname!=="/token")return new Response("Not found",{status:404});let _=await b.text();if(_.length>Rc+64)return new Response("Pairing code is too large",{status:413});let S;try{S=JSON.parse(_)}catch{return new Response("Invalid pairing code",{status:400})}let v=typeof S==="object"&&S!==null?S.code:null;if(typeof v!=="string"||v.length===0||v.length>Rc)return new Response("Invalid pairing code",{status:400});if(!c)c=!0,o(v);return new Response("Connected",{headers:{"cache-control":"no-store",connection:"close"}})}}),d=`http://127.0.0.1:${u.port}/callback`,A=new URL("tui-auth",e.endsWith("/")?e:`${e}/`);A.searchParams.set("callback",d),A.searchParams.set("state",s);let g=A.toString();n(g),t(g);let f=setTimeout(()=>{if(!c)c=!0,a(Error("Sign-in timed out"))},r),y=()=>{if(!c)c=!0,a(Error("Sign-in cancelled"))};if(i?.aborted)y();else i?.addEventListener("abort",y,{once:!0});try{return await l}finally{i?.removeEventListener("abort",y),clearTimeout(f),await u.stop(!1)}}async function Dc(e,t){let{data:r,error:n}=await e.auth.verifyOtp({token_hash:t,type:"magiclink"});if(n||!r.session)throw Error(n?.message??"Could not start the Supabase session");return r.session}import{basename as hg,resolve as Lc}from"path";var ro=`flatblox-tui [draft.json] [options]
86
86
 
87
87
  Options:
88
88
  --cloud Open saved artworks from Flatblox (default)
@@ -90,9 +90,9 @@ Options:
90
90
  --logout Sign out of the cloud dashboard
91
91
  -s, --size <1-64> Grid size for a new artwork (default: 16)
92
92
  -o, --output <file> Save path for a new or opened artwork
93
- -h, --help Show this help`;function $c(e,t,r){let n=e[t+1];if(!n||n.startsWith("-"))throw Error(`${r} needs a value`);return n}function Zc(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($c(e,c,u)),l=!0,c++;else if(u==="-o"||u==="--output")r=$c(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>64)throw Error("Grid size must be between 1 and 64");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 vg(e){return _g(e).replace(/\.flatblox\.json$/i,"").replace(/\.json$/i,"")}async function Xc(e){let t=e.filePath?Jc(e.filePath):void 0,r=t?Bun.file(t):void 0,n=r?await r.exists():!1,i=n?cn(await r.text()):{...zt(e.size),filename:t?vg(t):"untitled"},s=Jc(e.outputPath??t??`${i.filename}.flatblox.json`);return{session:new Mt(i),filePath:s,created:!n}}import{readdir as Cg,readFile as Eg,stat as Vc,writeFile as Sg}from"fs/promises";import{basename as Ig,join as zc,resolve as xg}from"path";function qc(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 kg(e){return e.replace(/[\\/]/g,"-").replace(/^\.+$/,"")||"untitled"}function Rg(e=process.env,t=process.cwd()){return e.INIT_CWD||e.PWD||t}class co{username;maxCanvasSize=64;directory;constructor(e=Rg()){this.directory=xg(e),this.username=Ig(this.directory)||"Local"}async listArtworks(){let e=await Cg(this.directory,{withFileTypes:!0}),t=[];for(let r of e){if(!r.isFile()||!r.name.endsWith(".flatblox.json"))continue;let n=zc(this.directory,r.name);try{let i=cn(await Eg(n,"utf8")),s=await Vc(n),o=s.birthtimeMs>0?s.birthtime:s.mtime;t.push(qc(n,i,o,s.mtime))}catch{}}return t.sort((r,n)=>n.createdAt.localeCompare(r.createdAt))}async createArtwork(e){let t=zc(this.directory,`${kg(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 Sg(e,un(t));let r=await Vc(e),n=r.birthtimeMs>0?r.birthtime:r.mtime;return qc(e,t,n,r.mtime)}}function eu(e){let t=Dt(),r=hr(),[n,i]=X(0),[s,o]=X(!1),[a,l]=X(16),[c,u]=X(0),[d,A]=X(null),[g,f]=X(null),[b,p]=X(!1),[C,w]=X(e.cloudRepository??null),[I,_]=X(!1),[y,m]=X(!1),[O,B]=X(""),[U,R]=X(""),T=null,q=e.localRepository??new co,ee=()=>{l(16),u(0),o(!0)},V=()=>{let J=zt(a());J.palette=[...ze[c()].colors],J.activeColor=J.palette[0],o(!1),f(null),A(new Mt(J))},ae=(J)=>{u((L)=>Math.max(0,Math.min(ze.length-1,L+J)))},re=async()=>{if(y())return;let J=new AbortController;T=J,m(!0),B(""),R("");try{let L=await e.onSignIn(J.signal,R);if(!J.signal.aborted)w(L),_(!0)}catch(L){if(!J.signal.aborted)B(L instanceof Error?L.message:String(L))}finally{if(T===J)T=null;m(!1)}},se=(J)=>{i((L)=>Math.max(0,Math.min(2,L+J)))},je=()=>{if(C())_(!0);else re()};return Ar((J)=>{if(J.eventType==="release"||d()||b()||I())return;let L=J.name.toLowerCase();if(y()){if(L==="escape"||L==="q"||J.ctrl&&L==="c")T?.abort();return}if(s()){let Ie=Number(L)-1;if(L==="escape")o(!1);else if(Number.isInteger(Ie)&&vr[Ie])l(vr[Ie]);else if(L==="left"||L==="h")ae(-1);else if(L==="right"||L==="l")ae(1);else if(L==="up"||L==="k")ae(-Cr(r().width));else if(L==="down"||L==="j")ae(Cr(r().width));else if(L==="return"||L==="enter"||L==="space"||J.sequence===" ")V();return}if(J.ctrl&&L==="c")t.destroy();else if(L==="q"||L==="escape")t.destroy();else if(L==="up"||L==="k")se(-1);else if(L==="down"||L==="j")se(1);else if(L==="n")ee();else if(L==="l")p(!0);else if(L==="s"||L==="d")je();else if(L==="return"||L==="enter"||L==="space"||J.sequence===" ")if(n()===0)ee();else if(n()===1)p(!0);else je()}),ne(gt,{get when(){return Jt(()=>!!I())()?C():null},get fallback(){return ne(gt,{get when(){return d()},get fallback(){return ne(gt,{get when(){return b()},get fallback(){return(()=>{var J=x("box"),L=x("box"),Ie=x("image"),it=x("box"),He=x("box"),P=x("box"),G=x("text"),ie=x("box"),me=x("box"),Je=x("text"),fe=x("box"),Oe=x("box"),qe=x("text"),Ot=x("box"),et=x("text");return S(J,L),h(J,"width","100%"),h(J,"height","100%"),h(J,"alignItems","center"),h(J,"justifyContent","center"),S(L,Ie),S(L,it),S(L,He),S(L,ie),S(L,fe),S(L,Ot),S(L,et),h(L,"flexDirection","column"),h(L,"alignItems","center"),h(Ie,"id","welcome-wordmark"),h(Ie,"source",hn),h(Ie,"width",28),h(Ie,"height",2),h(Ie,"fit","cover"),h(it,"height",3),S(He,P),h(He,"id","welcome-new-artwork"),h(He,"width",36),h(He,"height",3),h(He,"border",!0),h(He,"onMouseDown",()=>{i(0),ee()}),S(P,G),h(P,"width","100%"),h(P,"height","100%"),h(P,"alignItems","center"),h(P,"justifyContent","center"),S(G,be("New artwork")),h(G,"id","welcome-new-artwork-label"),S(ie,me),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)}),S(me,Je),h(me,"width","100%"),h(me,"height","100%"),h(me,"alignItems","center"),h(me,"justifyContent","center"),S(Je,be("Load artwork")),h(Je,"id","welcome-load-artwork-label"),S(fe,Oe),h(fe,"id","welcome-sign-in"),h(fe,"width",36),h(fe,"height",3),h(fe,"border",!0),h(fe,"onMouseDown",()=>{i(2),je()}),S(Oe,qe),h(Oe,"width","100%"),h(Oe,"height","100%"),h(Oe,"alignItems","center"),h(Oe,"justifyContent","center"),h(qe,"id","welcome-sign-in-label"),Y(qe,()=>C()?"Dashboard":"Sign in"),h(Ot,"height",2),Y(et,(()=>{var Z=Jt(()=>!!y());return()=>Z()?Jt(()=>!!U())()?`Open this URL: ${U()} \xB7 Esc cancel`:"Complete sign-in in your browser \xB7 Esc cancel":O()||"\u2191/\u2193 select \xB7 Enter open \xB7 Q quit"})()),Y(J,ne(gt,{get when(){return s()},get children(){return ne(Ri,{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),Pe((Z)=>{var F=k.background,v=U()?Math.max(36,r().width-4):36,E=n()===0?k.accent:k.border,Q=n()===0?k.textPink:k.text,Ae=n()===1?k.accent:k.border,_e=n()===1?k.textPink:k.text,ye=n()===2?k.accent:k.border,le=n()===2?k.textPink:k.text,ge=O()?k.warning:k.muted;return F!==Z.e&&(Z.e=h(J,"backgroundColor",F,Z.e)),v!==Z.t&&(Z.t=h(L,"width",v,Z.t)),E!==Z.a&&(Z.a=h(He,"borderColor",E,Z.a)),Q!==Z.o&&(Z.o=h(G,"fg",Q,Z.o)),Ae!==Z.i&&(Z.i=h(ie,"borderColor",Ae,Z.i)),_e!==Z.n&&(Z.n=h(Je,"fg",_e,Z.n)),ye!==Z.s&&(Z.s=h(fe,"borderColor",ye,Z.s)),le!==Z.h&&(Z.h=h(qe,"fg",le,Z.h)),ge!==Z.r&&(Z.r=h(et,"fg",ge,Z.r)),Z},{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}),J})()},get children(){return ne(Ti,{repository:q,variant:"local",onBack:()=>p(!1)})}})},children:(J)=>ne(Er,{get session(){return J()},saveDocument:async(L)=>{let Ie=g(),it=Ie?await q.saveArtwork(Ie,L):await q.createArtwork(L);return f(it),"Saved locally"},promptForFilenameOnSave:!0,onBack:()=>{f(null),A(null)}})})},children:(J)=>ne(Ti,{get repository(){return J()}})})}var tu={debounceDelay:1,exitOnCtrlC:!1,targetFps:60,useKittyKeyboard:{events:!0,allKeysAsEscapes:!0}};async function Tg(e){let t=Hc(),r=Kc(t),n=await Wc(r,t.authFile);if(e){if(n)await r.auth.signOut();await Gr(t.authFile),process.stdout.write(`Signed out of Flatblox TUI.
94
- `);return}let i,s=async(o)=>{if(!i){let{data:u}=r.auth.onAuthStateChange((d,A)=>{if(A)Ms(t.authFile,A);else Gr(t.authFile)});i=()=>u.subscription.unsubscribe(),r.auth.startAutoRefresh()}let{data:a,error:l}=await r.auth.getUser(o);if(l||!a.user)throw await Gr(t.authFile),Error(l?.message??"Could not verify the Supabase session");let{data:c}=await r.from("profiles").select("username, tier").eq("id",a.user.id).maybeSingle();return new ki(r,a.user.id,c?.username?.trim()||"Flatblox account",zo[c?.tier??"tier0"],()=>Gr(t.authFile))};try{let o=n?await s(n.access_token):void 0;await ai(()=>ne(eu,{cloudRepository:o,onSignIn:async(a,l)=>{let c=await Yc(t.dashboardUrl,void 0,void 0,l,a),u=await Qc(r,c);return await Ms(t.authFile,u),s(u.access_token)}}),tu)}finally{if(i?.(),i)await r.auth.stopAutoRefresh()}}async function Bg(e){let t=await Xc(e);await ai(()=>ne(Er,{get session(){return t.session},get filePath(){return t.filePath}}),tu)}async function Og(){try{let e=Zc(Bun.argv.slice(2));if(e.help){process.stdout.write(`${lo}
95
- `);return}if(e.mode==="cloud")await Tg(e.logout);else await Bg(e)}catch(e){let t=e instanceof Error?e.message:String(e);process.stderr.write(`flatblox-tui: ${t}
93
+ -h, --help Show this help`;function Mc(e,t,r){let n=e[t+1];if(!n||n.startsWith("-"))throw Error(`${r} needs a value`);return n}function Fc(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(Mc(e,c,u)),l=!0,c++;else if(u==="-o"||u==="--output")r=Mc(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>64)throw Error("Grid size must be between 1 and 64");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 Ag(e){return hg(e).replace(/\.flatblox\.json$/i,"").replace(/\.json$/i,"")}async function Gc(e){let t=e.filePath?Lc(e.filePath):void 0,r=t?Bun.file(t):void 0,n=r?await r.exists():!1,i=n?un(await r.text()):{...qt(e.size),filename:t?Ag(t):"untitled"},s=Lc(e.outputPath??t??`${i.filename}.flatblox.json`);return{session:new Dt(i),filePath:s,created:!n}}var Ls="id, filename, num_cols, num_rows, grid, palette, palette_saturation, palette_lightness, artboards, created_at, updated_at",jc=16;function Hc(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function Uc(e,t){let r=on(e);return r.length===t&&r.every((n)=>n.length===t)?r:null}function Kc(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 fg(e){if(!Array.isArray(e))return[];return e.slice(0,pi).flatMap((t,r)=>{if(!Hc(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 gg(e){if(!Array.isArray(e))return[...Ve[0].colors];let t=e.filter(ft).slice(0,jc);return t.length>0?t:[...Ve[0].colors]}function Ms(e){if(!Hc(e))return null;let t=Number(e.num_cols);if(!Number.isInteger(t)||t<1||t>Qe||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=Uc(e.grid,t);if(!r)return null;let n=fg(e.artboards),i=n.findIndex((s)=>{let o=Uc(s.grid,t);return o?Kc(o,r):!1});return{id:e.id,filename:e.filename||"Untitled",size:t,grid:r,palette:gg(e.palette),paletteSaturation:st(e.palette_saturation),paletteLightness:st(e.palette_lightness),artboards:n,activeArtboard:i<0?0:i,createdAt:e.created_at,updatedAt:e.updated_at}}function Wc(e){return Xt(e.grid,e.paletteSaturation,e.paletteLightness)}function Yc(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 mg(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=yr(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 pg(e,t,r=new Date().toISOString()){let n=e.grid.length;if(n<1||n>Qe||!e.grid.every((o)=>o.length===n))throw Error("Artwork grid is invalid");let i=e.palette.filter(ft).slice(0,jc);if(i.length===0)throw Error("Artwork palette is invalid");let s=yr(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 no{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(Ls).eq("user_id",this.userId).order("created_at",{ascending:!1});if(t)throw Error(t.message);return(e??[]).flatMap((r)=>{let n=Ms(r);return n?[n]:[]})}async createArtwork(e){let t=pg(e,this.userId),{data:r,error:n}=await this.client.from("pixel_art").insert(t).select(Ls).single();if(n)throw Error(n.message);let i=Ms(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||!Kc(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=mg(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(Ls).maybeSingle();if(i)throw Error(i.message);if(!n)return null;let s=Ms(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(Ls).eq("id",e).eq("user_id",this.userId).maybeSingle();if(r)throw Error(r.message);return t?Ms(t):null}async signOut(){let{error:e}=await this.client.auth.signOut();if(e)throw Error(e.message);await this.afterSignOut?.()}}import{NativeImage as bg,Renderable as yg,RGBA as io}from"@opentui/core";var so=io.fromInts(14,16,24),wg={r:30,g:33,b:48,a:1},_g={r:42,g:46,b:64,a:1};function vg(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 g=1;g<=a;g++){let f=g*n/2,y=Math.min(A,f),b=Math.abs(Math.log(f/A));if(y>u||y===u&&b<d)l=A,c=g,u=y,d=b}return{sampleCount:s,columnScale:l,subrowScale:c,columns:s*l,subrows:s*c}}function Cg(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))}}function Qc(e,t,r){let n=(t+r)%2===0?wg:_g,i=e[r]?.[t],s=i?.active&&i.color?Nt(i.color):null;if(!s)return io.fromInts(n.r,n.g,n.b);let o=Math.max(0,Math.min(1,s.a));return io.fromInts(Math.round(s.r*o+n.r*(1-o)),Math.round(s.g*o+n.g*(1-o)),Math.round(s.b*o+n.b*(1-o)))}class oo extends yg{currentGrid=[];artworkImage=null;artworkImageKey="";constructor(e,t){super(e,{...t,buffered:!0});if(t.grid)this.currentGrid=t.grid}set grid(e){this.currentGrid=e??[],this.requestRender()}renderSelf(e){e.clear(so);let t=this.currentGrid.length;if(t===0||this.width<=0||this.height<=0)return;let r=vr(this._ctx);if(r&&qn(this._ctx)){this.drawArtworkImage(e,t,r.width,r.height);return}this.releaseArtworkImage();let n=zn(this._ctx),i=this.height*2,s=vg(this.width,this.height,t,n),{columns:o,subrows:a}=s,l=Math.floor((this.width-o)/2),c=Math.floor((i-a)/2);for(let u=0;u<this.height;u++){let d=u*2;for(let A=0;A<o;A++){let g=l+A,f=Math.floor(A/s.columnScale),y=Math.min(t-1,Math.floor(f*t/s.sampleCount)),b=[d,d+1].map((C)=>{let _=C-c;if(_<0||_>=a)return so;let S=Math.floor(_/s.subrowScale),v=Math.min(t-1,Math.floor(S*t/s.sampleCount));return Qc(this.currentGrid,y,v)});e.setCell(g,u,"\u2580",b[0],b[1])}}}drawArtworkImage(e,t,r,n){let i=Cg(this.width,this.height,t,r,n),s=[i.sampleCount,i.side,i.pixelWidth,...this.currentGrid.flatMap((o)=>o.map((a)=>a.active?a.color??"active":""))].join("|");if(!this.artworkImage||s!==this.artworkImageKey){let o=new Uint8Array(i.sampleCount**2*4);for(let d=0;d<i.sampleCount;d++){let A=Math.min(t-1,Math.floor(d*t/i.sampleCount));for(let g=0;g<i.sampleCount;g++){let f=Math.min(t-1,Math.floor(g*t/i.sampleCount)),[y,b,C]=Qc(this.currentGrid,f,A).toInts(),_=(d*i.sampleCount+g)*4;o[_]=y,o[_+1]=b,o[_+2]=C,o[_+3]=255}}let a=bg.fromRgba(o,i.sampleCount,i.sampleCount),l=a.resize({width:i.side,height:i.side,kernel:"nearest"});a.dispose();let c=i.pixelWidth-i.side,u=c>0?l.extend({left:c,background:so.toInts()}):l;if(u!==l)l.dispose();this.releaseArtworkImage(),this.artworkImage=u,this.artworkImageKey=s}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.artworkImageKey=""}destroySelf(){this.releaseArtworkImage(),super.destroySelf()}}Vr({artwork_preview:oo});var Ur=[16,32,64],Zc=74,Jc=2;function Eg(e,t){let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}function $c(e,t){if(e.length<=t)return e;return`${e.slice(0,Math.max(1,t-1))}\u2026`}function Xc(e){let t=tn(e);return t?$t(t):"#ffffff"}function Sg(e){return en(di(e.palette,e.grid),e.paletteSaturation,e.paletteLightness)}function jr(e){return Math.max(1,Math.min(Zc,e-4))>=64?2:1}function ao(e){let t=V(()=>Math.max(1,Math.min(Zc,e.width-4))),r=V(()=>Math.max(1,Math.min(19,e.height-2))),n=V(()=>jr(e.width)),i=V(()=>r()>=12?1:0),s=V(()=>Math.max(1,r()-7-i()*2)),o=V(()=>s()*n()),a=V(()=>{let A=Math.floor(e.selectedPalette/o())*o();return Ve.slice(A,A+o()).map((g,f)=>({palette:g,index:A+f}))}),l=V(()=>Eg(a(),n())),c=V(()=>Math.max(1,Math.floor((t()-4-(n()-1))/n()))),u=V(()=>Math.max(3,Math.min(10,c()-8))),d=V(()=>Math.max(1,c()-u()-4));return(()=>{var A=x("box"),g=x("box"),f=x("box"),y=x("text"),b=x("box"),C=x("text"),_=me("Choose a palette | "),S=x("box"),v=x("box"),w=x("text");return I(A,g),h(A,"id","new-artwork-modal"),h(A,"position","absolute"),h(A,"zIndex",30),h(A,"border",!0),h(A,"title"," New artwork "),h(A,"flexDirection","column"),I(g,f),I(g,b),I(g,C),I(g,S),I(g,v),I(g,w),h(g,"flexGrow",1),h(g,"width","100%"),h(g,"padding",1),h(g,"flexDirection","column"),I(f,y),h(f,"height",1),h(f,"flexDirection","row"),h(f,"gap",1),I(y,me("Grid size")),H(f,re(Ct,{each:Ur,children:(m,P)=>{let O=()=>m<=e.maxSize,U=()=>m===e.selectedSize;return(()=>{var k=x("box"),T=x("text"),q=me(" "),ee=me("\xD7");return I(k,T),h(k,"height",1),h(k,"paddingX",1),h(k,"onMouseDown",()=>e.onSelectSize(m)),I(T,q),I(T,ee),H(T,()=>P()+1,q),H(T,m,ee),H(T,m,null),xe((X)=>{var ae=U()?E.panelActive:E.panel,se=O()?U()?E.accentText:E.muted:E.border;return ae!==X.e&&(X.e=h(k,"backgroundColor",ae,X.e)),se!==X.t&&(X.t=h(T,"fg",se,X.t)),X},{e:void 0,t:void 0}),k})()}}),null),I(C,_),H(C,()=>Ve[e.selectedPalette].name,null),H(g,re(Ct,{get each(){return l()},children:(m)=>(()=>{var P=x("box");return h(P,"height",1),h(P,"flexDirection","row"),h(P,"gap",1),H(P,re(Ct,{each:m,children:(O)=>{let U=()=>O.index===e.selectedPalette;return(()=>{var k=x("box"),T=x("text"),q=x("box");return I(k,T),I(k,q),h(k,"height",1),h(k,"paddingX",1),h(k,"flexDirection","row"),h(k,"justifyContent","space-between"),h(k,"onMouseDown",()=>e.onSelectPalette(O.index)),H(T,()=>$c(O.palette.name,d())),h(q,"height",1),h(q,"flexDirection","row"),H(q,re(Ct,{get each(){return O.palette.colors.slice(0,u())},children:(ee)=>(()=>{var X=x("text");return I(X,me("\u25A0")),xe((ae)=>h(X,"fg",Xc(ee),ae)),X})()})),xe((ee)=>{var X=c(),ae=U()?E.panelActive:E.panel,se=U()?E.text:E.muted;return X!==ee.e&&(ee.e=h(k,"width",X,ee.e)),ae!==ee.t&&(ee.t=h(k,"backgroundColor",ae,ee.t)),se!==ee.a&&(ee.a=h(T,"fg",se,ee.a)),ee},{e:void 0,t:void 0,a:void 0}),k})()}})),P})()}),S),h(v,"flexGrow",1),H(w,()=>e.message||"1\u20133 size \xB7 arrows palette \xB7 Enter create \xB7 Esc cancel"),xe((m)=>{var P=Math.max(0,Math.floor((e.width-t())/2)),O=Math.max(0,Math.floor((e.height-r())/2)),U=t(),k=r(),T=E.border,q=E.accent,ee=E.panel,X=E.textPink,ae=i(),se=E.textPink,ie=i(),He=e.message?E.warning:E.textPink;return P!==m.e&&(m.e=h(A,"left",P,m.e)),O!==m.t&&(m.t=h(A,"top",O,m.t)),U!==m.a&&(m.a=h(A,"width",U,m.a)),k!==m.o&&(m.o=h(A,"height",k,m.o)),T!==m.i&&(m.i=h(A,"borderColor",T,m.i)),q!==m.n&&(m.n=h(A,"titleColor",q,m.n)),ee!==m.s&&(m.s=h(g,"backgroundColor",ee,m.s)),X!==m.h&&(m.h=h(y,"fg",X,m.h)),ae!==m.r&&(m.r=h(b,"height",ae,m.r)),se!==m.d&&(m.d=h(C,"fg",se,m.d)),ie!==m.l&&(m.l=h(S,"height",ie,m.l)),He!==m.u&&(m.u=h(w,"fg",He,m.u)),m},{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}),A})()}function lo(e){let t=Pt(),r=Ar(),[n,i]=Q([]),[s,o]=Q(0),[a,l]=Q(!0),[c,u]=Q("Loading saved artworks\u2026"),[d,A]=Q(null),[g,f]=Q(!1),[y,b]=Q(16),[C,_]=Q(0),[S,v]=Q(""),w=V(()=>{let D=Math.max(8,r().width-2);return Math.min(28,D,Math.max(12,Math.floor(D/3)))}),m=V(()=>{let D=r().height<18?7:r().height<25?9:12;return Math.max(4,Math.min(D,r().height-6))}),P=V(()=>Math.max(1,Math.floor((r().width-2)/(w()+Jc)))),O=V(()=>P()*w()+Math.max(0,P()-1)*Jc),U=V(()=>Math.max(1,Math.floor((r().height-5)/(m()+1)))),k=V(()=>P()*U()),T=V(()=>Math.floor(s()/k())),q=V(()=>T()*k()),ee=V(()=>{let D=q();return n().slice(D,D+k())});Hn(()=>{let D=Math.max(0,n().length-1);if(s()>D)o(D)});let X=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)}};Jt(()=>void X());let ae=(D,M)=>{let ue=n().length;if(ue===0)return;let pe=Math.max(0,Math.min(ue-1,s()+D+M*P()));o(pe),u(n()[pe].filename)},se=()=>{let D=n()[s()];if(!D)return;A({artwork:D,session:new Dt(Yc(D))})},ie=()=>{b(16),_(0),v(""),f(!0),u("Choose a size and palette")},He=()=>{f(!1),v(""),u("New artwork cancelled")},J=(D)=>{if(D>e.repository.maxCanvasSize){v(`${D}\xD7${D} is unavailable on this plan`);return}b(D),v("")},L=(D)=>{_((M)=>Math.max(0,Math.min(Ve.length-1,M+D))),v("")},De=()=>{let D=qt(y()),M=Ve[C()];D.palette=[...M.colors],D.activeColor=D.palette[0],f(!1),A({artwork:null,session:new Dt(D)})},Te=async(D)=>{let M=d();if(!M)throw Error("No artwork is open");let ue=M.artwork?await e.repository.saveArtwork(M.artwork,D):await e.repository.createArtwork(D);if(i((pe)=>pe.some((ge)=>ge.id===ue.id)?pe.map((ge)=>ge.id===ue.id?ue:ge):[ue,...pe]),!M.artwork)o(0);return A((pe)=>pe===M?{...pe,artwork:ue}:pe),e.variant==="local"?"Saved locally":"Saved to Flatblox cloud"},ze=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 fr((D)=>{if(D.eventType==="release"||d())return;let M=D.name.toLowerCase();if(g()){let ue=Number(M)-1;if(M==="escape")He();else if(Number.isInteger(ue)&&Ur[ue])J(Ur[ue]);else if(M==="left"||M==="h")L(-1);else if(M==="right"||M==="l")L(1);else if(M==="up"||M==="k")L(-jr(r().width));else if(M==="down"||M==="j")L(jr(r().width));else if(M==="return"||M==="enter"||M==="space"||D.sequence===" ")De();return}if(D.ctrl&&M==="c")t.destroy();else if(M==="escape"&&e.onBack)e.onBack();else if(M==="q"||M==="escape")t.destroy();else if(M==="left"||M==="h")ae(-1,0);else if(M==="right"||M==="l")ae(1,0);else if(M==="up"||M==="k")ae(0,-1);else if(M==="down"||M==="j")ae(0,1);else if(M==="n")ie();else if(M==="return"||M==="enter"||M==="space"||D.sequence===" ")se();else if(M==="r")X();else if(M==="o"&&e.variant!=="local")ze()}),re(At,{get when(){return d()},get fallback(){return(()=>{var D=x("box"),M=x("box"),ue=x("box"),pe=x("text"),Be=x("b"),ge=x("box"),Le=x("box"),wt=x("text"),nt=x("box"),Z=x("box"),_t=x("text"),G=x("text");return I(D,M),I(D,nt),I(D,Z),h(D,"width","100%"),h(D,"height","100%"),h(D,"flexDirection","column"),I(M,ue),I(M,ge),I(M,Le),h(M,"height",3),h(M,"paddingY",1),h(M,"paddingX",1),h(M,"flexDirection","row"),I(ue,pe),h(ue,"height",1),h(ue,"flexBasis",0),h(ue,"flexGrow",1),h(ue,"flexDirection","row"),I(pe,Be),H(Be,()=>e.variant==="local"?"LOCAL ARTWORKS":"DASHBOARD"),h(ge,"height",1),h(ge,"flexBasis",0),h(ge,"flexGrow",1),h(ge,"flexDirection","row"),h(ge,"justifyContent","center"),H(ge,re(Er,{id:"dashboard-wordmark",width:14,height:1,get backgroundColor(){return E.panel}})),I(Le,wt),h(Le,"height",1),h(Le,"flexBasis",0),h(Le,"flexGrow",1),h(Le,"flexDirection","row"),h(Le,"justifyContent","flex-end"),H(wt,()=>e.repository.username),h(nt,"id","dashboard-content"),h(nt,"flexGrow",1),h(nt,"flexDirection","column"),h(nt,"justifyContent","center"),h(nt,"padding",1),H(nt,re(At,{get when(){return Zt(()=>!a())()&&n().length>0},get fallback(){return(()=>{var p=x("box"),R=x("text");return I(p,R),h(p,"flexGrow",1),h(p,"alignItems","center"),h(p,"justifyContent","center"),H(R,c),xe((ne)=>h(R,"fg",E.muted,ne)),p})()},get children(){var p=x("box");return h(p,"id","artwork-grid"),h(p,"alignSelf","center"),h(p,"flexDirection","row"),h(p,"flexWrap","wrap"),h(p,"rowGap",1),h(p,"columnGap",2),H(p,re(Ct,{get each(){return ee()},children:(R,ne)=>{let Ae=()=>q()+ne(),_e=()=>s()===Ae();return(()=>{var z=x("box"),be=x("box"),fe=x("box"),Oe=x("artwork_preview"),Y=x("box"),Ft=x("text"),Se=x("text"),K=x("text"),Ke=x("box"),Pe=x("box");return I(z,be),I(z,Se),I(z,K),I(z,Ke),I(z,Pe),h(z,"flexDirection","column"),h(z,"onMouseDown",()=>o(Ae())),I(be,fe),h(be,"width","100%"),h(be,"height","100%"),h(be,"border",!0),h(be,"borderColor","transparent"),h(be,"flexDirection","column"),I(fe,Oe),I(fe,Y),I(fe,Ft),h(fe,"flexGrow",1),h(fe,"width","100%"),h(fe,"flexDirection","column"),h(fe,"paddingX",1),h(Oe,"flexGrow",1),h(Oe,"width","100%"),h(Y,"height",1),h(Y,"width","100%"),h(Y,"flexDirection","row"),h(Y,"gap",1),h(Y,"overflow","hidden"),H(Y,re(Ct,{get each(){return Sg(R)},children:(B)=>(()=>{var ot=x("text");return I(ot,me("\u2B24")),xe((mt)=>h(ot,"fg",Xc(B),mt)),ot})()})),H(Ft,()=>$c(R.filename,w()-3)),h(Se,"position","absolute"),h(Se,"left",1),h(Se,"top",0),h(Se,"height",1),h(Se,"zIndex",1),H(Se,()=>"\u2580".repeat(w()-2)),h(K,"position","absolute"),h(K,"left",1),h(K,"height",1),h(K,"zIndex",1),H(K,()=>"\u2584".repeat(w()-2)),h(Ke,"position","absolute"),h(Ke,"left",0),h(Ke,"top",0),h(Ke,"width",1),h(Ke,"height","100%"),h(Ke,"zIndex",2),h(Pe,"position","absolute"),h(Pe,"top",0),h(Pe,"width",1),h(Pe,"height","100%"),h(Pe,"zIndex",2),xe((B)=>{var ot=`artwork-card-${R.id}`,mt=w(),Gt=m(),Ut=E.card,jt=E.card,de=E.panel,ve=`artwork-preview-${R.id}`,Me=Wc(R),Ce=E.textPink,he=`artwork-card-selection-top-${R.id}`,te=w()-2,oe=_e()?E.orangeActive:E.card,Ne=E.panel,Fe=`artwork-card-selection-bottom-${R.id}`,Ie=m()-1,Ze=w()-2,$e=_e()?E.orangeActive:E.card,ut=E.panel,Dn=`artwork-card-selection-side-${R.id}`,Ln=_e()?E.orangeActive:E.card,Mn=w()-1,uo=_e()?E.orangeActive:E.card;return ot!==B.e&&(B.e=h(z,"id",ot,B.e)),mt!==B.t&&(B.t=h(z,"width",mt,B.t)),Gt!==B.a&&(B.a=h(z,"height",Gt,B.a)),Ut!==B.o&&(B.o=h(z,"backgroundColor",Ut,B.o)),jt!==B.i&&(B.i=h(be,"backgroundColor",jt,B.i)),de!==B.n&&(B.n=h(fe,"backgroundColor",de,B.n)),ve!==B.s&&(B.s=h(Oe,"id",ve,B.s)),Me!==B.h&&(B.h=h(Oe,"grid",Me,B.h)),Ce!==B.r&&(B.r=h(Ft,"fg",Ce,B.r)),he!==B.d&&(B.d=h(Se,"id",he,B.d)),te!==B.l&&(B.l=h(Se,"width",te,B.l)),oe!==B.u&&(B.u=h(Se,"fg",oe,B.u)),Ne!==B.c&&(B.c=h(Se,"bg",Ne,B.c)),Fe!==B.w&&(B.w=h(K,"id",Fe,B.w)),Ie!==B.m&&(B.m=h(K,"top",Ie,B.m)),Ze!==B.f&&(B.f=h(K,"width",Ze,B.f)),$e!==B.y&&(B.y=h(K,"fg",$e,B.y)),ut!==B.g&&(B.g=h(K,"bg",ut,B.g)),Dn!==B.p&&(B.p=h(Ke,"id",Dn,B.p)),Ln!==B.b&&(B.b=h(Ke,"backgroundColor",Ln,B.b)),Mn!==B.T&&(B.T=h(Pe,"left",Mn,B.T)),uo!==B.A&&(B.A=h(Pe,"backgroundColor",uo,B.A)),B},{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}),z})()}})),xe((R)=>h(p,"width",O(),R)),p}})),I(Z,_t),I(Z,G),h(Z,"height",1),h(Z,"paddingX",1),h(Z,"flexDirection","row"),h(Z,"justifyContent","space-between"),H(_t,c),H(G,()=>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"),H(D,re(At,{get when(){return g()},get children(){return re(ao,{get width(){return r().width},get height(){return r().height},get selectedPalette(){return C()},get selectedSize(){return y()},get maxSize(){return e.repository.maxCanvasSize},get message(){return S()},onSelectPalette:(p)=>{_(p),v("")},onSelectSize:J})}}),null),xe((p)=>{var R=E.background,ne=E.panel,Ae=E.accentText,_e=E.muted,z=E.panel,be=E.panelActive,fe=c().startsWith("Load failed")?E.warning:E.textPink,Oe=E.muted;return R!==p.e&&(p.e=h(D,"backgroundColor",R,p.e)),ne!==p.t&&(p.t=h(M,"backgroundColor",ne,p.t)),Ae!==p.a&&(p.a=h(pe,"fg",Ae,p.a)),_e!==p.o&&(p.o=h(wt,"fg",_e,p.o)),z!==p.i&&(p.i=h(nt,"backgroundColor",z,p.i)),be!==p.n&&(p.n=h(Z,"backgroundColor",be,p.n)),fe!==p.s&&(p.s=h(_t,"fg",fe,p.s)),Oe!==p.h&&(p.h=h(G,"fg",Oe,p.h)),p},{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)=>re(Ir,{get session(){return D().session},saveDocument:Te,get promptForFilenameOnSave(){return!D().artwork},onBack:()=>{A(null),u("Returned from editor")}})})}import{readdir as Ig,readFile as xg,stat as Vc,writeFile as kg}from"fs/promises";import{basename as Rg,join as zc,resolve as Tg}from"path";function qc(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 Bg(e){return e.replace(/[\\/]/g,"-").replace(/^\.+$/,"")||"untitled"}function Og(e=process.env,t=process.cwd()){return e.INIT_CWD||e.PWD||t}class co{username;maxCanvasSize=64;directory;constructor(e=Og()){this.directory=Tg(e),this.username=Rg(this.directory)||"Local"}async listArtworks(){let e=await Ig(this.directory,{withFileTypes:!0}),t=[];for(let r of e){if(!r.isFile()||!r.name.endsWith(".flatblox.json"))continue;let n=zc(this.directory,r.name);try{let i=un(await xg(n,"utf8")),s=await Vc(n),o=s.birthtimeMs>0?s.birthtime:s.mtime;t.push(qc(n,i,o,s.mtime))}catch{}}return t.sort((r,n)=>n.createdAt.localeCompare(r.createdAt))}async createArtwork(e){let t=zc(this.directory,`${Bg(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 kg(e,dn(t));let r=await Vc(e),n=r.birthtimeMs>0?r.birthtime:r.mtime;return qc(e,t,n,r.mtime)}}function eu(e){let t=Pt(),r=Ar(),[n,i]=Q(0),[s,o]=Q(!1),[a,l]=Q(16),[c,u]=Q(0),[d,A]=Q(null),[g,f]=Q(null),[y,b]=Q(!1),[C,_]=Q(e.cloudRepository??null),[S,v]=Q(!1),[w,m]=Q(!1),[P,O]=Q(""),[U,k]=Q(""),T=null,q=e.localRepository??new co,ee=()=>{l(16),u(0),o(!0)},X=()=>{let J=qt(a());J.palette=[...Ve[c()].colors],J.activeColor=J.palette[0],o(!1),f(null),A(new Dt(J))},ae=(J)=>{u((L)=>Math.max(0,Math.min(Ve.length-1,L+J)))},se=async()=>{if(w())return;let J=new AbortController;T=J,m(!0),O(""),k("");try{let L=await e.onSignIn(J.signal,k);if(!J.signal.aborted)_(L),v(!0)}catch(L){if(!J.signal.aborted)O(L instanceof Error?L.message:String(L))}finally{if(T===J)T=null;m(!1)}},ie=(J)=>{i((L)=>Math.max(0,Math.min(2,L+J)))},He=()=>{if(C())v(!0);else se()};return fr((J)=>{if(J.eventType==="release"||d()||y()||S())return;let L=J.name.toLowerCase();if(w()){if(L==="escape"||L==="q"||J.ctrl&&L==="c")T?.abort();return}if(s()){let De=Number(L)-1;if(L==="escape")o(!1);else if(Number.isInteger(De)&&Ur[De])l(Ur[De]);else if(L==="left"||L==="h")ae(-1);else if(L==="right"||L==="l")ae(1);else if(L==="up"||L==="k")ae(-jr(r().width));else if(L==="down"||L==="j")ae(jr(r().width));else if(L==="return"||L==="enter"||L==="space"||J.sequence===" ")X();return}if(J.ctrl&&L==="c")t.destroy();else if(L==="q"||L==="escape")t.destroy();else if(L==="up"||L==="k")ie(-1);else if(L==="down"||L==="j")ie(1);else if(L==="n")ee();else if(L==="l")b(!0);else if(L==="s"||L==="d")He();else if(L==="return"||L==="enter"||L==="space"||J.sequence===" ")if(n()===0)ee();else if(n()===1)b(!0);else He()}),re(At,{get when(){return Zt(()=>!!S())()?C():null},get fallback(){return re(At,{get when(){return d()},get fallback(){return re(At,{get when(){return y()},get fallback(){return(()=>{var J=x("box"),L=x("box"),De=x("box"),Te=x("box"),ze=x("box"),D=x("text"),M=x("box"),ue=x("box"),pe=x("text"),Be=x("box"),ge=x("box"),Le=x("text"),wt=x("box"),nt=x("text");return I(J,L),h(J,"width","100%"),h(J,"height","100%"),h(J,"alignItems","center"),h(J,"justifyContent","center"),I(L,De),I(L,Te),I(L,M),I(L,Be),I(L,wt),I(L,nt),h(L,"flexDirection","column"),h(L,"alignItems","center"),H(L,re(Er,{id:"welcome-wordmark",width:28,height:2,get backgroundColor(){return E.background}}),De),h(De,"height",3),I(Te,ze),h(Te,"id","welcome-new-artwork"),h(Te,"width",36),h(Te,"height",3),h(Te,"border",!0),h(Te,"onMouseDown",()=>{i(0),ee()}),I(ze,D),h(ze,"width","100%"),h(ze,"height","100%"),h(ze,"alignItems","center"),h(ze,"justifyContent","center"),I(D,me("New artwork")),h(D,"id","welcome-new-artwork-label"),I(M,ue),h(M,"id","welcome-load-artwork"),h(M,"width",36),h(M,"height",3),h(M,"border",!0),h(M,"onMouseDown",()=>{i(1),b(!0)}),I(ue,pe),h(ue,"width","100%"),h(ue,"height","100%"),h(ue,"alignItems","center"),h(ue,"justifyContent","center"),I(pe,me("Load artwork")),h(pe,"id","welcome-load-artwork-label"),I(Be,ge),h(Be,"id","welcome-sign-in"),h(Be,"width",36),h(Be,"height",3),h(Be,"border",!0),h(Be,"onMouseDown",()=>{i(2),He()}),I(ge,Le),h(ge,"width","100%"),h(ge,"height","100%"),h(ge,"alignItems","center"),h(ge,"justifyContent","center"),h(Le,"id","welcome-sign-in-label"),H(Le,()=>C()?"Dashboard":"Sign in"),h(wt,"height",2),H(nt,(()=>{var Z=Zt(()=>!!w());return()=>Z()?Zt(()=>!!U())()?`Open this URL: ${U()} \xB7 Esc cancel`:"Complete sign-in in your browser \xB7 Esc cancel":P()||"\u2191/\u2193 select \xB7 Enter open \xB7 Q quit"})()),H(J,re(At,{get when(){return s()},get children(){return re(ao,{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),xe((Z)=>{var _t=E.background,G=U()?Math.max(36,r().width-4):36,p=n()===0?E.accent:E.border,R=n()===0?E.textPink:E.text,ne=n()===1?E.accent:E.border,Ae=n()===1?E.textPink:E.text,_e=n()===2?E.accent:E.border,z=n()===2?E.textPink:E.text,be=P()?E.warning:E.muted;return _t!==Z.e&&(Z.e=h(J,"backgroundColor",_t,Z.e)),G!==Z.t&&(Z.t=h(L,"width",G,Z.t)),p!==Z.a&&(Z.a=h(Te,"borderColor",p,Z.a)),R!==Z.o&&(Z.o=h(D,"fg",R,Z.o)),ne!==Z.i&&(Z.i=h(M,"borderColor",ne,Z.i)),Ae!==Z.n&&(Z.n=h(pe,"fg",Ae,Z.n)),_e!==Z.s&&(Z.s=h(Be,"borderColor",_e,Z.s)),z!==Z.h&&(Z.h=h(Le,"fg",z,Z.h)),be!==Z.r&&(Z.r=h(nt,"fg",be,Z.r)),Z},{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}),J})()},get children(){return re(lo,{repository:q,variant:"local",onBack:()=>b(!1)})}})},children:(J)=>re(Ir,{get session(){return J()},saveDocument:async(L)=>{let De=g(),Te=De?await q.saveArtwork(De,L):await q.createArtwork(L);return f(Te),"Saved locally"},promptForFilenameOnSave:!0,onBack:()=>{f(null),A(null)}})})},children:(J)=>re(lo,{get repository(){return J()}})})}var tu={backgroundColor:E.background,debounceDelay:1,exitOnCtrlC:!1,targetFps:60,useKittyKeyboard:{events:!0,allKeysAsEscapes:!0}};async function Pg(e){let t=Bc(),r=Oc(t),n=await Pc(r,t.authFile);if(e){if(n)await r.auth.signOut();await Gr(t.authFile),process.stdout.write(`Signed out of Flatblox TUI.
94
+ `);return}let i,s=async(o)=>{if(!i){let{data:u}=r.auth.onAuthStateChange((d,A)=>{if(A)Ds(t.authFile,A);else Gr(t.authFile)});i=()=>u.subscription.unsubscribe(),r.auth.startAutoRefresh()}let{data:a,error:l}=await r.auth.getUser(o);if(l||!a.user)throw await Gr(t.authFile),Error(l?.message??"Could not verify the Supabase session");let{data:c}=await r.from("profiles").select("username, tier").eq("id",a.user.id).maybeSingle();return new no(r,a.user.id,c?.username?.trim()||"Flatblox account",Vo[c?.tier??"tier0"],()=>Gr(t.authFile))};try{let o=n?await s(n.access_token):void 0;await ai(()=>re(eu,{cloudRepository:o,onSignIn:async(a,l)=>{let c=await Nc(t.dashboardUrl,void 0,void 0,l,a),u=await Dc(r,c);return await Ds(t.authFile,u),s(u.access_token)}}),tu)}finally{if(i?.(),i)await r.auth.stopAutoRefresh()}}async function Ng(e){let t=await Gc(e);await ai(()=>re(Ir,{get session(){return t.session},get filePath(){return t.filePath}}),tu)}async function Dg(){try{let e=Fc(Bun.argv.slice(2));if(e.help){process.stdout.write(`${ro}
95
+ `);return}if(e.mode==="cloud")await Pg(e.logout);else await Ng(e)}catch(e){let t=e instanceof Error?e.message:String(e);process.stderr.write(`flatblox-tui: ${t}
96
96
 
97
- ${lo}
98
- `),process.exitCode=1}}await Og();
97
+ ${ro}
98
+ `),process.exitCode=1}}await Dg();