flatblox-tui 0.2.0 → 0.2.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/flatblox-logo.png +0 -0
- package/dist/index.js +30 -30
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
process.env.FLATBLOX_SUPABASE_URL ||= "https://ldxdyymfagplpxxsqmgs.supabase.co";
|
|
4
4
|
process.env.FLATBLOX_SUPABASE_PUBLISHABLE_KEY ||= "sb_publishable_mFx2R11m1O-XJCA1hZ85bA_bAOXyq9J";
|
|
5
5
|
process.env.FLATBLOX_DASHBOARD_URL ||= "https://flatblox.com/dashboard/";
|
|
6
|
-
var su=Object.create;var{getPrototypeOf:ou,defineProperty:Ao,getOwnPropertyNames:au}=Object;var lu=Object.prototype.hasOwnProperty;function cu(e){return this[e]}var uu,du,hu=(e,t,r)=>{var n=e!=null&&typeof e==="object";if(n){var s=t?uu??=new WeakMap:du??=new WeakMap,i=s.get(e);if(i)return i}r=e!=null?su(ou(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 au(e))if(!lu.call(o,a))Ao(o,a,{get:cu.bind(e,a),enumerable:!0})}if(n)s.set(e,o);return o};var Au=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Al=Au(function(iw,ri){var Ga,Ua,ja,Ha,Ka,Wa,Ya,Qa,Ja,Za,$a,Xa,Va,ei,Rs,za,qa,el,Sr,tl,rl,nl,il,sl,ol,al,ll,cl,ti,ul,dl,hl;(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 ri==="object"&&typeof iw==="object")e(r(t,r(iw)));else e(r(t));function r(n,s){if(n!==t)if(typeof Object.create==="function")Object.defineProperty(n,"__esModule",{value:!0});else n.__esModule=!0;return function(i,o){return n[i]=s?s(i,o):o}}})(function(e){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,o){i.__proto__=o}||function(i,o){for(var a in o)if(Object.prototype.hasOwnProperty.call(o,a))i[a]=o[a]};Ga=function(i,o){if(typeof o!=="function"&&o!==null)throw TypeError("Class extends value "+String(o)+" is not a constructor or null");t(i,o);function a(){this.constructor=i}i.prototype=o===null?Object.create(o):(a.prototype=o.prototype,new a)},Ua=Object.assign||function(i){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))i[c]=o[c]}return i},ja=function(i,o){var a={};for(var l in i)if(Object.prototype.hasOwnProperty.call(i,l)&&o.indexOf(l)<0)a[l]=i[l];if(i!=null&&typeof Object.getOwnPropertySymbols==="function"){for(var c=0,l=Object.getOwnPropertySymbols(i);c<l.length;c++)if(o.indexOf(l[c])<0&&Object.prototype.propertyIsEnumerable.call(i,l[c]))a[l[c]]=i[l[c]]}return a},Ha=function(i,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(i,o,a,l);else for(var A=i.length-1;A>=0;A--)if(d=i[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},Ka=function(i,o){return function(a,l){o(a,l,i)}},Wa=function(i,o,a,l,c,u){function d(p){if(p!==void 0&&typeof p!=="function")throw TypeError("Function expected");return p}var A=l.kind,m=A==="getter"?"get":A==="setter"?"set":"value",g=!o&&i?l.static?i:i.prototype:null,f=o||(g?Object.getOwnPropertyDescriptor(g,l.name):{}),b,v=!1;for(var w=a.length-1;w>=0;w--){var C={};for(var _ in l)C[_]=_==="access"?{}:l[_];for(var _ in l.access)C.access[_]=l.access[_];C.addInitializer=function(p){if(v)throw TypeError("Cannot add initializers after decoration has completed");u.push(d(p||null))};var y=(0,a[w])(A==="accessor"?{get:f.get,set:f.set}:f[m],C);if(A==="accessor"){if(y===void 0)continue;if(y===null||typeof y!=="object")throw TypeError("Object expected");if(b=d(y.get))f.get=b;if(b=d(y.set))f.set=b;if(b=d(y.init))c.unshift(b)}else if(b=d(y))if(A==="field")c.unshift(b);else f[m]=b}if(g)Object.defineProperty(g,l.name,f);v=!0},Ya=function(i,o,a){var l=arguments.length>2;for(var c=0;c<o.length;c++)a=l?o[c].call(i,a):o[c].call(i);return l?a:void 0},Qa=function(i){return typeof i==="symbol"?i:"".concat(i)},Ja=function(i,o,a){if(typeof o==="symbol")o=o.description?"[".concat(o.description,"]"):"";return Object.defineProperty(i,"name",{configurable:!0,value:a?"".concat(a," ",o):o})},Za=function(i,o){if(typeof Reflect==="object"&&typeof Reflect.metadata==="function")return Reflect.metadata(i,o)},$a=function(i,o,a,l){function c(u){return u instanceof a?u:new a(function(d){d(u)})}return new(a||(a=Promise))(function(u,d){function A(f){try{g(l.next(f))}catch(b){d(b)}}function m(f){try{g(l.throw(f))}catch(b){d(b)}}function g(f){f.done?u(f.value):c(f.value).then(A,m)}g((l=l.apply(i,o||[])).next())})},Xa=function(i,o){var a={label:0,sent:function(){if(u[0]&1)throw u[1];return u[1]},trys:[],ops:[]},l,c,u,d=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return d.next=A(0),d.throw=A(1),d.return=A(2),typeof Symbol==="function"&&(d[Symbol.iterator]=function(){return this}),d;function A(g){return function(f){return m([g,f])}}function m(g){if(l)throw TypeError("Generator is already executing.");while(d&&(d=0,g[0]&&(a=0)),a)try{if(l=1,c&&(u=g[0]&2?c.return:g[0]?c.throw||((u=c.return)&&u.call(c),0):c.next)&&!(u=u.call(c,g[1])).done)return u;if(c=0,u)g=[g[0]&2,u.value];switch(g[0]){case 0:case 1:u=g;break;case 4:return a.label++,{value:g[1],done:!1};case 5:a.label++,c=g[1],g=[0];continue;case 7:g=a.ops.pop(),a.trys.pop();continue;default:if((u=a.trys,!(u=u.length>0&&u[u.length-1]))&&(g[0]===6||g[0]===2)){a=0;continue}if(g[0]===3&&(!u||g[1]>u[0]&&g[1]<u[3])){a.label=g[1];break}if(g[0]===6&&a.label<u[1]){a.label=u[1],u=g;break}if(u&&a.label<u[2]){a.label=u[2],a.ops.push(g);break}if(u[2])a.ops.pop();a.trys.pop();continue}g=o.call(i,a)}catch(f){g=[6,f],c=0}finally{l=u=0}if(g[0]&5)throw g[1];return{value:g[0]?g[1]:void 0,done:!0}}},Va=function(i,o){for(var a in i)if(a!=="default"&&!Object.prototype.hasOwnProperty.call(o,a))ti(o,i,a)},ti=Object.create?function(i,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(i,l,c)}:function(i,o,a,l){if(l===void 0)l=a;i[l]=o[a]},ei=function(i){var o=typeof Symbol==="function"&&Symbol.iterator,a=o&&i[o],l=0;if(a)return a.call(i);if(i&&typeof i.length==="number")return{next:function(){if(i&&l>=i.length)i=void 0;return{value:i&&i[l++],done:!i}}};throw TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")},Rs=function(i,o){var a=typeof Symbol==="function"&&i[Symbol.iterator];if(!a)return i;var l=a.call(i),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},za=function(){for(var i=[],o=0;o<arguments.length;o++)i=i.concat(Rs(arguments[o]));return i},qa=function(){for(var i=0,o=0,a=arguments.length;o<a;o++)i+=arguments[o].length;for(var l=Array(i),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},el=function(i,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 i.concat(u||Array.prototype.slice.call(o))},Sr=function(i){return this instanceof Sr?(this.v=i,this):new Sr(i)},tl=function(i,o,a){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var l=a.apply(i,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(C){return Promise.resolve(C).then(w,b)}}function A(w,C){if(l[w]){if(c[w]=function(_){return new Promise(function(y,p){u.push([w,_,y,p])>1||m(w,_)})},C)c[w]=C(c[w])}}function m(w,C){try{g(l[w](C))}catch(_){v(u[0][3],_)}}function g(w){w.value instanceof Sr?Promise.resolve(w.value.v).then(f,b):v(u[0][2],w)}function f(w){m("next",w)}function b(w){m("throw",w)}function v(w,C){if(w(C),u.shift(),u.length)m(u[0][0],u[0][1])}},rl=function(i){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]=i[c]?function(d){return(a=!a)?{value:Sr(i[c](d)),done:!1}:u?u(d):d}:u}},nl=function(i){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var o=i[Symbol.asyncIterator],a;return o?o.call(i):(i=typeof ei==="function"?ei(i):i[Symbol.iterator](),a={},l("next"),l("throw"),l("return"),a[Symbol.asyncIterator]=function(){return this},a);function l(u){a[u]=i[u]&&function(d){return new Promise(function(A,m){d=i[u](d),c(A,m,d.done,d.value)})}}function c(u,d,A,m){Promise.resolve(m).then(function(g){u({value:g,done:A})},d)}},il=function(i,o){if(Object.defineProperty)Object.defineProperty(i,"raw",{value:o});else i.raw=o;return i};var r=Object.create?function(i,o){Object.defineProperty(i,"default",{enumerable:!0,value:o})}:function(i,o){i.default=o},n=function(i){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(i)};sl=function(i){if(i&&i.__esModule)return i;var o={};if(i!=null){for(var a=n(i),l=0;l<a.length;l++)if(a[l]!=="default")ti(o,i,a[l])}return r(o,i),o},ol=function(i){return i&&i.__esModule?i:{default:i}},al=function(i,o,a,l){if(a==="a"&&!l)throw TypeError("Private accessor was defined without a getter");if(typeof o==="function"?i!==o||!l:!o.has(i))throw TypeError("Cannot read private member from an object whose class did not declare it");return a==="m"?l:a==="a"?l.call(i):l?l.value:o.get(i)},ll=function(i,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"?i!==o||!c:!o.has(i))throw TypeError("Cannot write private member to an object whose class did not declare it");return l==="a"?c.call(i,a):c?c.value=a:o.set(i,a),a},cl=function(i,o){if(o===null||typeof o!=="object"&&typeof o!=="function")throw TypeError("Cannot use 'in' operator on non-object");return typeof i==="function"?o===i:i.has(o)},ul=function(i,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)}};i.stack.push({value:o,dispose:l,async:a})}else if(a)i.stack.push({async:!0});return o};var s=typeof SuppressedError==="function"?SuppressedError:function(i,o,a){var l=Error(a);return l.name="SuppressedError",l.error=i,l.suppressed=o,l};dl=function(i){function o(u){i.error=i.hasError?new s(u,i.error,"An error was suppressed during disposal."):u,i.hasError=!0}var a,l=0;function c(){while(a=i.stack.pop())try{if(!a.async&&l===1)return l=0,i.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 i.hasError?Promise.reject(i.error):Promise.resolve();if(i.hasError)throw i.error}return c()},hl=function(i,o){if(typeof i==="string"&&/^\.\.?\//.test(i))return i.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 i},e("__extends",Ga),e("__assign",Ua),e("__rest",ja),e("__decorate",Ha),e("__param",Ka),e("__esDecorate",Wa),e("__runInitializers",Ya),e("__propKey",Qa),e("__setFunctionName",Ja),e("__metadata",Za),e("__awaiter",$a),e("__generator",Xa),e("__exportStar",Va),e("__createBinding",ti),e("__values",ei),e("__read",Rs),e("__spread",za),e("__spreadArrays",qa),e("__spreadArray",el),e("__await",Sr),e("__asyncGenerator",tl),e("__asyncDelegator",rl),e("__asyncValues",nl),e("__makeTemplateObject",il),e("__importStar",sl),e("__importDefault",ol),e("__classPrivateFieldGet",al),e("__classPrivateFieldSet",ll),e("__classPrivateFieldIn",cl),e("__addDisposableResource",ul),e("__disposeResources",dl),e("__rewriteRelativeImportExtension",hl)})});import{CliRenderer as Uu,createCliRenderer as ju,engine as Hu}from"@opentui/core";import{createTestRenderer as dm}from"@opentui/core/testing";import{ASCIIFontRenderable as Ku,BoxRenderable as Wu,CodeRenderable as Yu,DiffRenderable as Qu,ImageRenderable as Ju,InputRenderable as Zu,LineNumberRenderable as $u,MarkdownRenderable as Xu,ScrollBoxRenderable as Vu,SelectRenderable as zu,TabSelectRenderable as qu,TextareaRenderable as ed,TextAttributes as Ji,TextNodeRenderable as td,TextRenderable as rd}from"@opentui/core";import{engine as fm,Timeline as gm}from"@opentui/core";var Ye={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 Ye.context.id+(r?String.fromCharCode(96+r):"")+t}function Fi(e){Ye.context=e}function fu(){return{...Ye.context,id:Ye.getNextContextId(),count:0}}var gu=!1,mu=(e,t)=>e===t,Gi=Symbol("solid-proxy"),pu=typeof Proxy==="function",bu=Symbol("solid-track"),Yg=Symbol("solid-dev-component"),Ln={equals:mu},go=null,wo=Io,at=1,jr=2,_o={owned:null,cleanups:null,context:null,owner:null};var oe=null,N=null,Kr=null,cr=null,we=null,De=null,Je=null,Fn=0;function Ur(e,t){let r=we,n=oe,s=e.length===0,i=t===void 0?n:t,o=s?_o:{owned:null,cleanups:null,context:i?i.context:null,owner:i},a=s?e:()=>e(()=>lt(()=>Mt(o)));oe=o,we=null;try{return Bt(a,!0)}finally{we=r,oe=n}}function K(e,t){t=t?Object.assign({},Ln,t):Ln;let r={value:e,observers:null,observerSlots:null,comparator:t.equals||void 0},n=(s)=>{if(typeof s==="function")if(N&&N.running&&N.sources.has(r))s=s(r.tValue);else s=s(r.value);return So(r,s)};return[Eo.bind(r),n]}function bt(e,t,r){let n=Hi(e,t,!1,at);if(Kr&&N&&N.running)De.push(n);else Yr(n)}function Gn(e,t,r){wo=vu;let n=Hi(e,t,!1,at),s=Ui&&Wr(Ui);if(s)n.suspense=s;if(!r||!r.render)n.user=!0;Je?Je.push(n):Yr(n)}function Y(e,t,r){r=r?Object.assign({},Ln,r):Ln;let n=Hi(e,t,!0,0);if(n.observers=null,n.observerSlots=null,n.comparator=r.equals||void 0,Kr&&N&&N.running)n.tState=at,De.push(n);else Yr(n);return Eo.bind(n)}function lt(e){if(!cr&&we===null)return e();let t=we;we=null;try{if(cr)return cr.untrack(e);return e()}finally{we=t}}function Ft(e){Gn(()=>lt(e))}function et(e){if(oe===null);else if(oe.cleanups===null)oe.cleanups=[e];else oe.cleanups.push(e);return e}function yu(e){if(N&&N.running)return e(),N.done;let t=we,r=oe;return Promise.resolve().then(()=>{we=t,oe=r;let n;if(Kr||Ui)n=N||(N={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0}),n.done||(n.done=new Promise((s)=>n.resolve=s)),n.running=!0;return Bt(e,!1),we=oe=null,n?n.done:void 0})}var[Qg,mo]=K(!1);function vo(e,t){let r=Symbol("context");return{id:r,Provider:Eu(r),defaultValue:e}}function Wr(e){let t;return oe&&oe.context&&(t=oe.context[e.id])!==void 0?t:e.defaultValue}function Co(e){let t=Y(e),r=Y(()=>ji(t()));return r.toArray=()=>{let n=r();return Array.isArray(n)?n:n!=null?[n]:[]},r}var Ui;function Eo(){let e=N&&N.running;if(this.sources&&(e?this.tState:this.state))if((e?this.tState:this.state)===at)Yr(this);else{let t=De;De=null,Bt(()=>Mn(this),!1),De=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 So(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 s=N.running;if(s||!r&&N.sources.has(e))N.sources.add(e),e.tValue=t;if(!s)e.value=t}else e.value=t;if(e.observers&&e.observers.length)Bt(()=>{for(let s=0;s<e.observers.length;s+=1){let i=e.observers[s],o=N&&N.running;if(o&&N.disposed.has(i))continue;if(o?!i.tState:!i.state){if(i.pure)De.push(i);else Je.push(i);if(i.observers)xo(i)}if(!o)i.state=at;else i.tState=at}if(De.length>1e6)throw De=[],Error()},!1)}return t}function Yr(e){if(!e.fn)return;Mt(e);let t=Fn;if(po(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=oe=e,po(e,e.tValue,t),we=oe=null},!1)})}function po(e,t,r){let n,s=oe,i=we;we=oe=e;try{n=e.fn(t)}catch(o){if(e.pure)if(N&&N.running)e.tState=at,e.tOwned&&e.tOwned.forEach(Mt),e.tOwned=void 0;else e.state=at,e.owned&&e.owned.forEach(Mt),e.owned=null;return e.updatedAt=r+1,Ki(o)}finally{we=i,oe=s}if(!e.updatedAt||e.updatedAt<=r){if(e.updatedAt!=null&&"observers"in e)So(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 Hi(e,t,r,n=at,s){let i={fn:e,state:n,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:oe,context:oe?oe.context:null,pure:r};if(N&&N.running)i.state=0,i.tState=n;if(oe===null);else if(oe!==_o)if(N&&N.running&&oe.pure)if(!oe.tOwned)oe.tOwned=[i];else oe.tOwned.push(i);else if(!oe.owned)oe.owned=[i];else oe.owned.push(i);if(cr&&i.fn){let o=i.fn,[a,l]=K(void 0,{equals:!1}),c=cr.factory(o,l);et(()=>c.dispose());let u,d=()=>yu(l).then(()=>{if(u)u.dispose(),u=void 0});i.fn=(A)=>{if(a(),N&&N.running){if(!u)u=cr.factory(o,d);return u.track(A)}return c.track(A)}}return i}function Hr(e){let t=N&&N.running;if((t?e.tState:e.state)===0)return;if((t?e.tState:e.state)===jr)return Mn(e);if(e.suspense&<(e.suspense.inFallback))return e.suspense.effects.push(e);let r=[e];while((e=e.owner)&&(!e.updatedAt||e.updatedAt<Fn)){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 s=e,i=r[n+1];while((s=s.owner)&&s!==i)if(N.disposed.has(s))return}if((t?e.tState:e.state)===at)Yr(e);else if((t?e.tState:e.state)===jr){let s=De;De=null,Bt(()=>Mn(e,r[0]),!1),De=s}}}function Bt(e,t){if(De)return e();let r=!1;if(!t)De=[];if(Je)r=!0;else Je=[];Fn++;try{let n=e();return wu(r),n}catch(n){if(!r)Je=null;De=null,Ki(n)}}function wu(e){if(De){if(Kr&&N&&N.running)_u(De);else Io(De);De=null}if(e)return;let t;if(N){if(!N.promises.size&&!N.queue.size){let{sources:n,disposed:s}=N;Je.push.apply(Je,N.effects),t=N.resolve;for(let i of Je)"tState"in i&&(i.state=i.tState),delete i.tState;N=null,Bt(()=>{for(let i of s)Mt(i);for(let i of n){if(i.value=i.tValue,i.owned)for(let o=0,a=i.owned.length;o<a;o++)Mt(i.owned[o]);if(i.tOwned)i.owned=i.tOwned;delete i.tValue,delete i.tOwned,i.tState=0}mo(!1)},!1)}else if(N.running){N.running=!1,N.effects.push.apply(N.effects,Je),Je=null,mo(!0);return}}let r=Je;if(Je=null,r.length)Bt(()=>wo(r),!1);if(t)t()}function Io(e){for(let t=0;t<e.length;t++)Hr(e[t])}function _u(e){for(let t=0;t<e.length;t++){let r=e[t],n=N.queue;if(!n.has(r))n.add(r),Kr(()=>{n.delete(r),Bt(()=>{N.running=!0,Hr(r)},!1),N&&(N.running=!1)})}}function vu(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(Ye.context){if(Ye.count){Ye.effects||(Ye.effects=[]),Ye.effects.push(...e.slice(0,r));return}Fi()}if(Ye.effects&&(Ye.done||!Ye.count))e=[...Ye.effects,...e],r+=Ye.effects.length,delete Ye.effects;for(t=0;t<r;t++)Hr(e[t])}function Mn(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 s=e.sources[n];if(s.sources){let i=r?s.tState:s.state;if(i===at){if(s!==t&&(!s.updatedAt||s.updatedAt<Fn))Hr(s)}else if(i===jr)Mn(s,t)}}}function xo(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=jr;else n.state=jr;if(n.pure)De.push(n);else Je.push(n);n.observers&&xo(n)}}}function Mt(e){let t;if(e.sources)while(e.sources.length){let r=e.sources.pop(),n=e.sourceSlots.pop(),s=r.observers;if(s&&s.length){let i=s.pop(),o=r.observerSlots.pop();if(n<s.length)i.sourceSlots[o]=n,s[n]=i,r.observerSlots[n]=o}}if(e.tOwned){for(t=e.tOwned.length-1;t>=0;t--)Mt(e.tOwned[t]);delete e.tOwned}if(N&&N.running&&e.pure)ko(e,!0);else if(e.owned){for(t=e.owned.length-1;t>=0;t--)Mt(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 ko(e,t){if(!t)e.tState=0,N.disposed.add(e);if(e.owned)for(let r=0;r<e.owned.length;r++)ko(e.owned[r])}function Cu(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){Ki(n,r&&r.owner||null)}}function Ki(e,t=oe){let r=go&&t&&t.context&&t.context[go],n=Cu(e);if(!r)throw n;if(Je)Je.push({fn(){bo(n,r,t)},state:at});else bo(n,r,t)}function ji(e){if(typeof e==="function"&&!e.length)return ji(e());if(Array.isArray(e)){let t=[];for(let r=0;r<e.length;r++){let n=ji(e[r]);Array.isArray(n)?t.push.apply(t,n):t.push(n)}return t}return e}function Eu(e,t){return function(n){let s;return bt(()=>s=lt(()=>(oe.context={...oe.context,[e]:n.value},Co(()=>n.children))),void 0),s}}var Su=Symbol("fallback");function yo(e){for(let t=0;t<e.length;t++)e[t]()}function Iu(e,t,r={}){let n=[],s=[],i=[],o=0,a=t.length>1?[]:null;return et(()=>yo(i)),()=>{let l=e()||[],c=l.length,u,d;return l[bu],lt(()=>{let m,g,f,b,v,w,C,_,y;if(c===0){if(o!==0)yo(i),i=[],n=[],s=[],o=0,a&&(a=[]);if(r.fallback)n=[Su],s[0]=Ur((p)=>(i[0]=p,r.fallback())),o=1}else if(o===0){s=Array(c);for(d=0;d<c;d++)n[d]=l[d],s[d]=Ur(A);o=c}else{f=Array(c),b=Array(c),a&&(v=Array(c));for(w=0,C=Math.min(o,c);w<C&&n[w]===l[w];w++);for(C=o-1,_=c-1;C>=w&&_>=w&&n[C]===l[_];C--,_--)f[_]=s[C],b[_]=i[C],a&&(v[_]=a[C]);m=new Map,g=Array(_+1);for(d=_;d>=w;d--)y=l[d],u=m.get(y),g[d]=u===void 0?-1:u,m.set(y,d);for(u=w;u<=C;u++)if(y=n[u],d=m.get(y),d!==void 0&&d!==-1)f[d]=s[u],b[d]=i[u],a&&(v[d]=a[u]),d=g[d],m.set(y,d);else i[u]();for(d=w;d<c;d++)if(d in f){if(s[d]=f[d],i[d]=b[d],a)a[d]=v[d],a[d](d)}else s[d]=Ur(A);s=s.slice(0,o=c),n=l.slice(0)}return s});function A(m){if(i[d]=m,a){let[g,f]=K(d);return a[d]=f,t(l[d],g)}return t(l[d])}}}var xu=!1;function Ro(e,t){if(xu){if(Ye.context){let r=Ye.context;Fi(fu());let n=lt(()=>e(t||{}));return Fi(r),n}}return lt(()=>e(t||{}))}function Dn(){return!0}var ku={get(e,t,r){if(t===Gi)return r;return e.get(t)},has(e,t){if(t===Gi)return!0;return e.has(t)},set:Dn,deleteProperty:Dn,getOwnPropertyDescriptor(e,t){return{configurable:!0,enumerable:!0,get(){return e.get(t)},set:Dn,deleteProperty:Dn}},ownKeys(e){return e.keys()}};function Mi(e){return!(e=typeof e==="function"?e():e)?{}:e}function Ru(){for(let e=0,t=this.length;e<t;++e){let r=this[e]();if(r!==void 0)return r}}function Un(...e){let t=!1;for(let o=0;o<e.length;o++){let a=e[o];t=t||!!a&&Gi in a,e[o]=typeof a==="function"?(t=!0,Y(a)):a}if(pu&&t)return new Proxy({get(o){for(let a=e.length-1;a>=0;a--){let l=Mi(e[a])[o];if(l!==void 0)return l}},has(o){for(let a=e.length-1;a>=0;a--)if(o in Mi(e[a]))return!0;return!1},keys(){let o=[];for(let a=0;a<e.length;a++)o.push(...Object.keys(Mi(e[a])));return[...new Set(o)]}},ku);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:Ru.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 s={},i=Object.keys(n);for(let o=i.length-1;o>=0;o--){let a=i[o],l=n[a];if(l&&l.get)Object.defineProperty(s,a,l);else s[a]=l?l.value:void 0}return s}var Tu=(e)=>`Stale read from <${e}>.`;function yt(e){let t="fallback"in e&&{fallback:()=>e.fallback};return Y(Iu(()=>e.each,e.children,t||void 0))}function Ve(e){let t=e.keyed,r=Y(()=>e.when,void 0,void 0),n=t?r:Y(r,void 0,{equals:(s,i)=>!s===!i});return Y(()=>{let s=n();if(s){let i=e.children;return typeof i==="function"&&i.length>0?lt(()=>i(t?s:()=>{if(!lt(n))throw Tu("Show");return r()})):i}return e.fallback},void 0,void 0)}import{BaseRenderable as $o,createTextAttributes as od,ImageRenderable as Fo,InputRenderable as Zi,InputRenderableEvents as Jr,isTextNodeRenderable as qi,isEditBufferRenderable as ad,parseColor as Go,Renderable as ld,RootTextNodeRenderable as cd,ScrollBoxRenderable as ud,SelectRenderable as Uo,SelectRenderableEvents as $i,TabSelectRenderable as jo,TabSelectRenderableEvents as Xi,TextNodeRenderable as dd,TextRenderable as Xo}from"@opentui/core";var Wi,Bu=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=(Wi=String.fromCodePoint)!==null&&Wi!==void 0?Wi:(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=Bu.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 s=0,i=0;s<r;s+=2){let o=t.charCodeAt(s),a=t.charCodeAt(s+1);n[i++]=o|a<<8}return n}var Po=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 Ze;(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"})(Ze||(Ze={}));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 No=32;function Yi(e){return e>=Ee.ZERO&&e<=Ee.NINE}function Ou(e){return e>=Ee.UPPER_A&&e<=Ee.UPPER_F||e>=Ee.LOWER_A&&e<=Ee.LOWER_F}function Pu(e){return e>=Ee.UPPER_A&&e<=Ee.UPPER_Z||e>=Ee.LOWER_A&&e<=Ee.LOWER_Z||Yi(e)}function Nu(e){return e===Ee.EQUALS||Pu(e)}var Fe;(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"})(Fe||(Fe={}));var Ot;(function(e){e[e.Legacy=0]="Legacy",e[e.Strict=1]="Strict",e[e.Attribute=2]="Attribute"})(Ot||(Ot={}));class Qi{constructor(e,t,r){this.decodeTree=e,this.emitCodePoint=t,this.errors=r,this.state=Fe.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=Fe.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(e,t){switch(this.state){case Fe.EntityStart:{if(e.charCodeAt(t)===Ee.NUM)return this.state=Fe.NumericStart,this.consumed+=1,this.stateNumericStart(e,t+1);return this.state=Fe.NamedEntity,this.stateNamedEntity(e,t)}case Fe.NumericStart:return this.stateNumericStart(e,t);case Fe.NumericDecimal:return this.stateNumericDecimal(e,t);case Fe.NumericHex:return this.stateNumericHex(e,t);case Fe.NamedEntity:return this.stateNamedEntity(e,t)}}stateNumericStart(e,t){if(t>=e.length)return-1;if((e.charCodeAt(t)|No)===Ee.LOWER_X)return this.state=Fe.NumericHex,this.consumed+=1,this.stateNumericHex(e,t+1);return this.state=Fe.NumericDecimal,this.stateNumericDecimal(e,t)}stateNumericHex(e,t){while(t<e.length){let r=e.charCodeAt(t);if(Yi(r)||Ou(r)){let n=r<=Ee.NINE?r-Ee.ZERO:(r|No)-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(Yi(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(Bo(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],s=(n&Ze.VALUE_LENGTH)>>14;while(t<e.length){if(s===0&&(n&Ze.FLAG13)!==0){let o=(n&Ze.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let a=n&Ze.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],s=(n&Ze.VALUE_LENGTH)>>14}if(t>=e.length)break;let i=e.charCodeAt(t);if(i===Ee.SEMI&&s!==0&&(n&Ze.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,s,this.consumed+this.excess);if(this.treeIndex=Lu(r,n,this.treeIndex+Math.max(1,s),i),this.treeIndex<0)return this.result===0||this.decodeMode===Ot.Attribute&&(s===0||Nu(i))?0:this.emitNotTerminatedNamedEntity();if(n=r[this.treeIndex],s=(n&Ze.VALUE_LENGTH)>>14,s!==0){if(i===Ee.SEMI)return this.emitNamedEntityData(this.treeIndex,s,this.consumed+this.excess);if(this.decodeMode!==Ot.Strict&&(n&Ze.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]&Ze.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]&~(Ze.VALUE_LENGTH|Ze.FLAG13):n[e+1],r),t===3)this.emitCodePoint(n[e+2],r);return r}end(){var e;switch(this.state){case Fe.NamedEntity:return this.result!==0&&(this.decodeMode!==Ot.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case Fe.NumericDecimal:return this.emitNumericEntity(0,2);case Fe.NumericHex:return this.emitNumericEntity(0,3);case Fe.NumericStart:return(e=this.errors)===null||e===void 0||e.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case Fe.EntityStart:return 0}}}function Du(e){let t="",r=new Qi(e,(n)=>t+=To(n));return function(s,i){let o=0,a=0;while((a=s.indexOf("&",a))>=0){t+=s.slice(o,a),r.startEntity(i);let c=r.write(s,a+1);if(c<0){o=a+r.end();break}o=a+c,a=c===0?o+1:o}let l=t+s.slice(o);return t="",l}}function Lu(e,t,r,n){let s=(t&Ze.BRANCH_LENGTH)>>7,i=t&Ze.JUMP_TABLE;if(s===0)return i!==0&&n===i?r:-1;if(i){let c=n-i;return c<0||c>=s?-1:e[r+c]-1}let o=s+1>>1,a=0,l=s-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 Mu=Du(Po);function Qr(e){return Mu(e,Ot.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 yd,isTextNodeRenderable as wd,TextNodeRenderable as _d,TextRenderable as vd,Yoga as Vo}from"@opentui/core";import{BoxRenderable as km,RootRenderable as Rm}from"@opentui/core";import{TimeToFirstDrawRenderable as Ed}from"@opentui/core";import{createSlotRegistry as Pm}from"@opentui/core";class Zr extends td{_ctx;constructor(e,t){super(t);this._ctx=e}}class Hn extends Zr{constructor(e,t){super(null,e);if(t==="b"||t==="strong")this.attributes=(this.attributes||0)|Ji.BOLD;else if(t==="i"||t==="em")this.attributes=(this.attributes||0)|Ji.ITALIC;else if(t==="u")this.attributes=(this.attributes||0)|Ji.UNDERLINE}}class Vi extends Hn{constructor(e){super(e,"b")}}class zi extends Hn{constructor(e){super(e,"i")}}class Yo extends Hn{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 nd={box:Wu,text:rd,input:Zu,select:zu,textarea:ed,ascii_font:Ku,tab_select:qu,scrollbox:Vu,code:Yu,diff:Qu,line_number:$u,markdown:Xu,image:Ju,span:Zr,strong:Vi,b:Vi,em:zi,i:zi,u:Yo,br:Qo,a:Jo},Zo={...nd};function $r(e){Object.assign(Zo,e)}function id(){return Zo}var ns=vo(),ht=()=>{let e=Wr(ns);if(!e)throw Error("No renderer found");return e},sd=(e)=>{let t=ht();Ft(()=>{t.on("resize",e)}),et(()=>{t.off("resize",e)})},hr=()=>{let e=ht(),[t,r]=K({width:e.width,height:e.height});return sd((s,i)=>{r({width:s,height:i})}),t},Ar=(e,t)=>{let n=ht().keyInput;Ft(()=>{if(n.on("keypress",e),t?.release)n.on("keyrelease",e)}),et(()=>{if(n.off("keypress",e),t?.release)n.off("keyrelease",e)})};var hd=(e)=>Y(()=>e());function Ad({createElement:e,createTextNode:t,createDynamicTextNode:r,createSlotNode:n,isTextNode:s,replaceText:i,insertNode:o,removeNode:a,setProperty:l,getParentNode:c,getFirstChild:u,getNextSibling:d}){function A(_,y,p,O){if(p!==void 0&&!O)O=[];if(typeof y!=="function")return m(_,y,O,p);bt((T)=>m(_,y(),T,p),O)}function m(_,y,p,O,T){while(typeof p==="function")p=p();if(y===p)return p;let M=typeof y,R=O!==void 0;if(M==="string"||M==="number"){if(M==="number")y=y.toString();if(R){let B=p[0];if(B&&s(B))i(B,y);else B=r(y);p=b(_,p,O,B)}else if(p!==""&&typeof p==="string")i(u(_),p=y);else b(_,p,O,r(y)),p=y}else if(y==null||M==="boolean")p=b(_,p,O);else if(M==="function")return bt(()=>{let B=y();while(typeof B==="function")B=B();p=m(_,B,p,O)}),()=>p;else if(Array.isArray(y)){let B=[];if(g(B,y,T))return bt(()=>p=m(_,B,p,O,!0)),()=>p;if(B.length===0){let Q=b(_,p,O);if(R)return p=Q}else if(Array.isArray(p))if(p.length===0)v(_,B,O);else f(_,p,B);else if(p==null||p==="")v(_,B);else f(_,R&&p||[u(_)],B);p=B}else{if(Array.isArray(p)){if(R)return p=b(_,p,O,y);b(_,p,null,y)}else if(p==null||p===""||!u(_))o(_,y);else w(_,y,u(_));p=y}return p}function g(_,y,p){let O=!1;for(let T=0,M=y.length;T<M;T++){let R=y[T],B;if(R==null||R===!0||R===!1);else if(Array.isArray(R))O=g(_,R)||O;else if((B=typeof R)==="string"||B==="number")_.push(r(R));else if(B==="function")if(p){while(typeof R==="function")R=R();O=g(_,Array.isArray(R)?R:[R])||O}else _.push(R),O=!0;else _.push(R)}return O}function f(_,y,p){let O=p.length,T=y.length,M=O,R=0,B=0,Q=d(y[T-1]),z=null;while(R<T||B<M){if(y[R]===p[B]){R++,B++;continue}while(y[T-1]===p[M-1])T--,M--;if(T===R){let W=M<O?B?d(p[B-1]):p[M-B]:Q;while(B<M)o(_,p[B++],W)}else if(M===B)while(R<T){if(!z||!z.has(y[R]))a(_,y[R]);R++}else if(y[R]===p[M-1]&&p[B]===y[T-1]){let W=d(y[--T]);o(_,p[B++],d(y[R++])),o(_,p[--M],W),y[T]=p[M]}else{if(!z){z=new Map;let de=B;while(de<M)z.set(p[de],de++)}let W=z.get(y[R]);if(W!=null)if(B<W&&W<M){let de=R,ie=1,te;while(++de<T&&de<M){if((te=z.get(y[de]))==null||te!==W+ie)break;ie++}if(ie>W-B){let ke=y[R];while(B<W)o(_,p[B++],ke)}else w(_,p[B++],y[R++])}else R++;else a(_,y[R++])}}}function b(_,y,p,O){if(p===void 0){let M;while(M=u(_))a(_,M);return O&&o(_,O),O??""}let T=O||n();if(y.length){let M=!1;for(let R=y.length-1;R>=0;R--){let B=y[R];if(T!==B){let Q=c(B)===_;if(!M&&!R)Q?w(_,T,B):o(_,T,p);else Q&&a(_,B)}else M=!0}}else o(_,T,p);return[T]}function v(_,y,p){for(let O=0,T=y.length;O<T;O++)o(_,y[O],p)}function w(_,y,p){o(_,y,p),a(_,p)}function C(_,y,p={},O){if(y||(y={}),!O)bt(()=>p.children=m(_,y.children,p.children));return bt(()=>y.ref&&y.ref(_)),bt(()=>{for(let T in y){if(T==="children"||T==="ref")continue;let M=y[T];if(M===p[T])continue;l(_,T,M,p[T]),p[T]=M}}),p}return{render(_,y){let p;return Ur((O)=>{p=O,A(y,_())}),p},insert:A,spread(_,y,p){if(typeof y==="function")bt((O)=>C(_,y(),O,p));else C(_,y,void 0,p)},createElement:e,createTextNode:t,insertNode:o,setProp(_,y,p,O){return l(_,y,p,O),p},mergeProps:Un,effect:bt,memo:hd,createComponent:Ro,use(_,y,p){return lt(()=>_(y,p))}}}function fd(e){let t=Ad(e);return t.mergeProps=Un,t}var jn=new Map;function is(e){if(!jn.has(e))jn.set(e,0);let t=jn.get(e)+1;return jn.set(e,t),`${e}-${t}`}var Ge=(...e)=>{if(process.env.DEBUG)console.log("[Reconciler]",...e)};class ur extends dd{static fromString(e,t={}){let r=new ur(t);return r.add(e),r}}var Le=(e)=>{if(!e)return;return e.id},es=(e)=>{let t;if(e instanceof Xo)t=e.getTextChildren();else t=e.getChildren();return t};function gd(e,t,r){if(Ge("Inserting node:",Le(t),"into parent:",Le(e),"with anchor:",Le(r),t instanceof ur),t instanceof dr)t.parent=e,t=t.getSlotChild(e);if(r&&r instanceof dr)r=r.getSlotChild(e);if(qi(t)){if(!(e instanceof Xo)&&!qi(e))throw Error(`Orphan text error: "${t.toChunks().map((i)=>i.text).join("")}" must have a <text> as a parent: ${e.id} above ${t.id}`)}if(!(e instanceof $o))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=es(e),s=n.indexOf(r);if(s===-1)Ge("[INSERT]","Could not find anchor",Le(e),Le(r),"[children]",...n.map((i)=>i.id));e.add(t,s)}function md(e,t){Ge("Removing node:",Le(t),"from parent:",Le(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 $o&&!t.parent){t.destroyRecursively();return}})}function Ho(e,t){Ge("Creating text node:",e);let r=is("text-node");if(typeof e==="number")e=e.toString();return ur.fromString(t?Qr(e):e,{id:r})}function pd(){let e=is("slot-node");return Ge("Creating slot node",e),new dr(e)}function Ko(e){Ge("Getting parent of node:",Le(e));let t=e.parent??void 0;if(t instanceof cd)t=t.textParent??void 0;let r=t?.parent?.parent?.parent;if(r instanceof ud&&r.content===t)t=r;return t}var{render:bd,effect:_e,memo:Wt,createComponent:V,createElement:I,createTextNode:Ae,insertNode:E,insert:G,spread:Cm,setProp:h,mergeProps:Em,use:Sm}=fd({createElement(e){Ge("Creating element:",e);let t=is(e),r=Wr(ns);if(!r)throw Error("No renderer found");let n=id();if(!n[e])throw Error(`[Reconciler] Unknown component type: ${e}`);let s=new n[e](r,{id:t});if(s instanceof Fo)et(()=>{s.source=void 0});return Ge("Element created with id:",t),s},createTextNode:(e)=>Ho(e,!0),createDynamicTextNode:(e)=>Ho(e,!1),createSlotNode:pd,replaceText(e,t){if(Ge("Replacing text:",t,"in node:",Le(e)),!(e instanceof ur))return;e.replace(t,0)},setProperty(e,t,r,n){if(t.startsWith("on:")){let s=t.slice(3);if(r)e.on(s,r);if(n)e.off(s,n);return}if(qi(e)){if(t==="href"){e.link={url:r};return}if(t==="style"){e.attributes|=od(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":Ge("Id mapped",e.id,"=",r),e[t]=r;break;case"focused":if(!(e instanceof ld))return;if(r)e.focus();else e.blur();break;case"onChange":let s=void 0;if(e instanceof Uo)s=$i.SELECTION_CHANGED;else if(e instanceof jo)s=Xi.SELECTION_CHANGED;else if(e instanceof Zi)s=Jr.CHANGE;if(!s)break;if(r)e.on(s,r);if(n)e.off(s,n);break;case"onInput":if(e instanceof Zi){if(r)e.on(Jr.INPUT,r);if(n)e.off(Jr.INPUT,n)}break;case"onSubmit":if(e instanceof Zi){if(r)e.on(Jr.ENTER,r);if(n)e.off(Jr.ENTER,n)}else e[t]=r;break;case"onSelect":if(e instanceof Uo){if(r)e.on($i.ITEM_SELECTED,r);if(n)e.off($i.ITEM_SELECTED,n)}else if(e instanceof jo){if(r)e.on(Xi.ITEM_SELECTED,r);if(n)e.off(Xi.ITEM_SELECTED,n)}break;case"style":let i=r??{},o=n??{};if(ad(e)&&o.selectionOccupancy&&!i.selectionOccupancy)e.selectionOccupancy=void 0;if(e instanceof Fo)for(let a in o){if(Object.prototype.hasOwnProperty.call(i,a))continue;if(a!=="fit"&&a!=="protocol")continue;e[a]=void 0}for(let a in i){let l=i[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:gd,removeNode:md,getParentNode:Ko,getFirstChild(e){Ge("Getting first child of node:",Le(e));let t=es(e)[0];if(!t){Ge("No first child found for node:",Le(e));return}return Ge("First child found:",Le(t),"for node:",Le(e)),t},getNextSibling(e){Ge("Getting next sibling of node:",Le(e));let t=Ko(e);if(!t){Ge("No parent found for node:",Le(e));return}if(e instanceof dr){let i=e.getSlotChildForRemoval(t);if(i)e=i}let r=es(t),n=r.indexOf(e);if(n===-1||n===r.length-1){Ge("No next sibling found for node:",Le(e));return}let s=r[n+1];if(!s){Ge("Next sibling is null for node:",Le(e));return}return Ge("Next sibling found:",Le(s),"for node:",Le(e)),s}});function Wo(e){return e?.getLayoutNode?.()?.constructor}function Cd(e){return e?.create?.()??Vo.default.Node.create()}class ss extends yd{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 ts extends _d{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 rs extends ss{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=Cd(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 ss{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 wd(e)||e instanceof vd}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 s=this.getTextNodeForParent(e);if(s)return s;let i=this.takeReusableTextNode(e);if(i)return i;this.disposeDetachedIncompatibleLayoutNodes(e);let o=new ts(`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 rs(`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 ts&&this.getTextNodeForParent(e)===t)this.textNodesByParent.delete(e),t.disposeWithoutSlotCascade();if(r&&t instanceof rs&&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()}}$r({time_to_first_draw:Ed});var Sd=(e,t)=>{let r,n=!1,s=!1,i=!0,o=!1,a=e.destroy.bind(e),l=()=>{if(s)return;if(!r){n=!0;return}s=!0,r()};e.once("destroy",l),e.destroy=()=>{if(i){o=!0;return}a()};try{r=bd(()=>V(ns.Provider,{get value(){return e},get children(){return V(t,{})}}),e.root)}finally{i=!1,e.destroy=a}if(n)l();if(o)a()},os=async(e,t={})=>{let r=t instanceof Uu?t:await ju({...t,onDestroy:()=>{t.onDestroy?.()}});Hu.attach(r),Sd(r,e)};var zo={tier0:32,tier1:64,tier2:64};var fr=1;function it(e){if(typeof e!=="number"||!Number.isFinite(e))return 1;return Math.max(1,Math.min(8,Math.round(e)))}function as(e,t){let r=it(e);return{primary:r,mirrored:t?r-1:0}}var ls=64;var Gm=ls*ls;var jm=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 cs={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 kd=["positionX","positionY","positionZ","rotationX","rotationY","rotationZ","scaleX","scaleY","scaleZ"];var Rd=new Set(kd);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,s]of Object.entries(e)){if(!Rd.has(n)){r.push(`${t} uses unknown property ${n}`);continue}if(!Array.isArray(s)||s.length<2){r.push(`${t}.${n} must contain at least two keyframes`);continue}let i=-1;for(let[o,a]of s.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<=i)r.push(`${t}.${n} keyframe times must increase from 0 to 1`);i=l}if(s[0]?.[0]!==0||s.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 s=`Clip ${r}`;if(!gr(n)){t.push(`${s} must be an object`);continue}if(typeof n.duration!=="number"||!Number.isFinite(n.duration)||n.duration<=0)t.push(`${s} must have a positive duration`);if(typeof n.loop!=="boolean")t.push(`${s} must declare whether it loops`);if(n.model===void 0)t.push(`${s} must include a model animation track`);else t.push(...qo(n.model,`${s}.model`));if(n.roles!==void 0)if(!gr(n.roles))t.push(`${s}.roles must be an object`);else for(let[i,o]of Object.entries(n.roles))t.push(...qo(o,`${s}.roles.${i}`))}return t}var ea=ta(cs);if(ea.length>0)throw Error(`Invalid character animation catalog:
|
|
8
|
-
${
|
|
9
|
-
`)}`);var Td=cs,Bd=["jump","frontFlip","horseWalk","swim"],Od=Object.keys(Td.clips).filter((e)=>!Bd.includes(e));var na=["top","side","bottom"],ia=["left","right","bottom","top","back","front"],sa=["humanoid","female","pig","robot","dog","cat","horse","bird","octopus"],Kn=["leftLeg","rightLeg","leftArm","rightArm","leftLegFoot","rightLegFoot","leftArmFoot","rightArmFoot","leftSleeve","rightSleeve"],oa=["leftWing","rightWing","carried","muzzle"];var qm=new Set(sa),ep=new Set([...Kn,...oa]),tp=new Set(na),rp=new Set(ia),np=["cree","per"].join(""),Xr=["H","oof"].join(""),ip=new Map([[`leftLeg${Xr}`,"leftLegFoot"],[`rightLeg${Xr}`,"rightLegFoot"],[`leftArm${Xr}`,"leftArmFoot"],[`rightArm${Xr}`,"rightArmFoot"]]),sp=["horse",Xr].join("");var Dd=Math.PI*2;var cp=new Set(Kn);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 us(e,t){let r=la(t);return e.filter((n)=>r.has(n))}var Md=/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,Fd=/^([+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?)(deg|grad|rad|turn)?$/i,Yn=(e,t,r)=>Math.max(t,Math.min(r,e));function Qn(e){let t=e.trim(),r=t.endsWith("%"),n=r?t.slice(0,-1):t;if(!Md.test(n))return null;let s=Number(n);return Number.isFinite(s)?{value:s,percentage:r}:null}function ua(e){if(e===null)return 1;let t=Qn(e);if(!t)return null;return Yn(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 s=n.split("/");if(s.length>2)return null;let i=s[0].trim().split(/\s+/),o=s.length===2?s[1].trim():null;return i.length===3&&(s.length===1||o)?{channels:i,alpha:o}:null}function Gd(e){let t=Fd.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 Vr(e){let t=da(e,["hsl","hsla"]);if(!t)return null;let r=Gd(t.channels[0]),n=Qn(t.channels[1]),s=Qn(t.channels[2]),i=ua(t.alpha);if(r===null||!n||!s||i===null)return null;return[r,Yn(n.value,0,100),Yn(s.value,0,100),i]}function ha(e,t,r){let n=t/100,s=r/100,i=(1-Math.abs(2*s-1))*n,o=(e%360+360)%360/60,a=i*(1-Math.abs(o%2-1)),l=0,c=0,u=0;if(o<1)[l,c,u]=[i,a,0];else if(o<2)[l,c,u]=[a,i,0];else if(o<3)[l,c,u]=[0,i,a];else if(o<4)[l,c,u]=[0,a,i];else if(o<5)[l,c,u]=[a,0,i];else[l,c,u]=[i,0,a];let d=s-i/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,s=t/255,i=r/255,o=Math.max(n,s,i),a=Math.min(n,s,i),l=o-a,c=(o+a)/2;if(l===0)return{h:0,s:0,l:c*100};let u;if(o===n)u=((s-i)/l+(s<i?6:0))*60;else if(o===s)u=((i-n)/l+2)*60;else u=((n-s)/l+4)*60;return{h:u,s:l/(1-Math.abs(2*c-1))*100,l:c*100}}function zr({r:e,g:t,b:r}){let n=(s)=>Math.round(Math.max(0,Math.min(255,s))).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 Wn=(e)=>{let t=Math.round(e*1000)/1000;return String(Object.is(t,-0)?0:t)};function ds(e,t,r){if(t===0&&r===0)return e;let n=Vr(e),s=n?null:Qt(e);if(!n&&!s)return e;let i=n?{h:n[0],s:n[1],l:n[2]}:Aa(s),o=i.s===0?0:ca(i.s,t),a=ca(i.l,r),l=n?.[3]??s?.a??1;return`hsla(${Wn(i.h)}, ${Wn(o)}%, ${Wn(a)}%, ${Wn(l)})`}function tt(e){return typeof e==="number"&&Number.isInteger(e)&&e>=-100&&e<=100?e:0}function qr(e,t,r){let n=tt(t),s=tt(r);if(n===0&&s===0)return e;return e.map((i)=>ds(i,n,s))}function Yt(e,t,r){if(t===0&&r===0)return e;let n=new Map,s=(i)=>{let o=n.get(i);if(o===void 0)o=ds(i,t,r),n.set(i,o);return o};return e.map((i)=>i.map((o)=>({...o,color:o.color===null?null:s(o.color)})))}function Ud(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((s)=>s+s).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 jd(e){let t=da(e,["rgb","rgba"]);if(!t)return null;let r=t.channels.map(Qn),n=ua(t.alpha);if(r.some((l)=>l===null)||n===null)return null;let[s,i,o]=r,a=(l)=>Yn(l.percentage?l.value/100*255:l.value,0,255);return{r:a(s),g:a(i),b:a(o),a:n}}function Qt(e){let t=e.trim(),r=Ud(t);if(r)return r;let n=Vr(t);if(n)return{...ha(n[0],n[1],n[2]),a:n[3]};let s=jd(t);if(s)return s;let i=aa[t.toLowerCase()];if(!i)return null;return{r:i[0],g:i[1],b:i[2],a:i[3]??1}}function hs(e){let t=Qt(e);return t?{r:t.r,g:t.g,b:t.b}:null}var Jn=1;var As=30;function en(e){return e.trim().slice(0,30)}var Zn=0.16,fs=0.1;var tn=0.15,gs=0.12;var rn=0.25;function mr(...e){let t=Math.max(0,Math.min(...e));return Math.max(0.22,t*0.5)}var Se=64,ms=Se*Se;var ps=64,ga=512,Dp=ga*ga,Qd=128,ba=65535,Jd=20,Zd=/^#(?:[\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/i,$d=/^[a-z]+$/i,Xd=/^(?: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 ct(e){if(typeof e!=="string"||e.length===0||e.length>Qd)return!1;return Zd.test(e)||$d.test(e)||Xd.test(e)}function Vd(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:s,palette:i,cells:o,activeNoColor:a,tiles:l,depths:c,mirrorZ:u}=e;if(!pr(n,0,t)||!pr(s,0,t))return!1;let d=n*s;return d<=r&&Array.isArray(i)&&i.length<=d&&i.every(ct)&&Array.isArray(o)&&o.length===d&&o.every((A)=>pr(A,0,i.length))&&ma(a,d)&&pa(l,d,ba+1)&&pa(c,d,Jd)&&ma(u,d)}function qd(e){if(!ya(e)||typeof e.active!=="boolean")return!1;if(e.color!==null&&!ct(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 eh(e){if(e.length>Se)return null;let t=0,r=[];for(let n of e){if(!Array.isArray(n)||n.length>Se)return null;if(t+=n.length,t>ms||!n.every(qd))return null;r.push(n.map((s)=>({active:s.active,color:s.color,...s.tileIndex!=null?{tileIndex:s.tileIndex}:{},...it(s.depth)>fr?{depth:it(s.depth)}:{},...s.mirrorZ?{mirrorZ:!0}:{}})))}return r}function br(e){let t=e.length,r=t>0?e[0].length:0,n=[],s=new Map,i=Array(r*t).fill(0),o=[],a=null,l=null,c=[];for(let d=0;d<t;d++){let A=e[d];for(let m=0;m<r;m++){let g=A?.[m],f=d*r+m;if(!g)continue;if(g.color){let v=s.get(g.color);if(v===void 0)n.push(g.color),v=n.length,s.set(g.color,v);i[f]=v}else if(g.active)o.push(f);if(g.tileIndex!=null)a??=Array(r*t).fill(0),a[f]=g.tileIndex+1;let b=it(g.depth);if(b>fr)l??=Array(r*t).fill(0),l[f]=b;if(g.mirrorZ)c.push(f)}}let u={v:2,w:r,h:t,palette:n,cells:i};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 nn(e){if(Vd(e))return zd(e,Se,ms)?th(e):[];return Array.isArray(e)?eh(e)??[]:[]}function th(e){let{w:t,h:r,palette:n,cells:s,activeNoColor:i,tiles:o,depths:a}=e,l=i?new Set(i):null,c=e.mirrorZ?new Set(e.mirrorZ):null,u=Array(r);for(let d=0;d<r;d++){let A=Array(t);for(let m=0;m<t;m++){let g=d*t+m,f=s[g];if(f>0)A[m]={active:!0,color:n[f-1]??null};else if(l?.has(g))A[m]={active:!0,color:null};else A[m]={active:!1,color:null};let b=o?.[g];if(b)A[m].tileIndex=b-1;let v=it(a?.[g]);if(v>fr)A[m].depth=v;if(c?.has(g))A[m].mirrorZ=!0}u[d]=A}return u}var rh={top:0,side:1,bottom:2};var nh=/^data:image\/(?:png|gif|webp);base64,[a-z\d+/=]+$/i;var ih=/^[\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 bs(e,t){return Number.isInteger(e)&&Number(e)>0&&Number(e)<=t}function sh(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 oh(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 ys(e){if(!e||e.v!==2&&e.v!==3)return!1;if(!sh(e.name)||!bs(e.tileSize,64)||!bs(e.cols,256)||!bs(e.rows,256))return!1;if(e.faceLayout!==void 0&&e.faceLayout!=="top-side-bottom")return!1;if(!oh(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 ah(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"||!ih.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 ws(e){if(!ys(e))return null;if(e.v===2)return e.imageDataUrl.length<=16777216&&nh.test(e.imageDataUrl)?e.imageDataUrl:null;if(e.v===3)return ah(e.url,e.path);return null}function sn(e,t,r="top"){if(!ys(e))return null;if(!Number.isInteger(t)||t<0||t>=e.cols*e.rows)return null;let n=e.faceLayout?3:1,s=e.faceLayout?rh[r]:0,i=e.cols*e.tileSize;return{sx:s*i+t%e.cols*e.tileSize,sy:Math.floor(t/e.cols)*e.tileSize,tileSize:e.tileSize,sheetW:i*n,sheetH:e.rows*e.tileSize}}function _s(e){if(!ys(e))return null;return{width:e.cols*e.tileSize*(e.faceLayout?3:1),height:e.rows*e.tileSize}}function lh(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 Jt={corners:[[0,0,1],[1,0,1],[1,1,1],[0,1,1]],shade:1},on={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},Zt=0.5,ch=0.75,uh="rgba(0, 0, 0, 0.16)",dh=0.92,hh="#92929a";function Ah(e){if(!Number.isFinite(e))return Zt;return Math.max(0,Math.min(1,e))}function wa(e,t){if(t<Zt){let n=t/Zt,s=e*ch;return s+(e-s)*n}let r=(t-Zt)/(1-Zt);return e+(1-e)*r}function ae(e){return e.toFixed(2)}function wt(e){return e.replaceAll("&","&").replaceAll('"',""").replaceAll("'","'").replaceAll("<","<").replaceAll(">",">")}function _a(e){return`${ae(e[0])},${ae(e[1])}`}function fh([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,s])=>`${ae(n)},${ae(s)}`).join(" ")}" fill="${wt(t)}"/>`}function Ca(e,t,r){let n=t[0]-e[0],s=t[1]-e[1],i=Math.hypot(n,s)||1,o=Math.min(r,i/2)/i;return[e[0]+n*o,e[1]+s*o]}function gh(e,t){let r=e.length,n="";for(let s=0;s<r;s++){let i=e[s],o=e[(s-1+r)%r],a=e[(s+1)%r],l=Ca(i,o,t),c=Ca(i,a,t);n+=`${s===0?"M":"L"}${ae(l[0])},${ae(l[1])}`,n+=`Q${ae(i[0])},${ae(i[1])} ${ae(c[0])},${ae(c[1])}`}return`${n}Z`}function Ea(e,t,r,n){return`<path d="${e}" fill="${wt(t)}" stroke="${wt(r)}" stroke-width="${ae(n)}" stroke-linejoin="round"/>`}function mh(e,t){if(e.length===0)return"";return`<path d="${e.map(([n,s])=>`M${ae(n[0])},${ae(n[1])}L${ae(s[0])},${ae(s[1])}`).join("")}" fill="none" stroke="${wt(t)}" stroke-width="1" stroke-linejoin="round" vector-effect="non-scaling-stroke"/>`}function vs(e){let{grid:t,numCols:r,numRows:n,scale:s=16,showGridLines:i=!1,sideLighting:o=Zt,cellGroups:a=!1,tileset:l=null,tilesetImageId:c,embedTilesetImage:u=!0,blockStyle:d="normal"}=e,A=Number.isFinite(s)&&s>0?Math.min(s,1024):16,m=i&&d!=="jelly"?uh:void 0,g=Ah(o),f=ws(l),b=l&&f?l:null,v=_s(b),w=v?.width??0,C=v?.height??0,_=f&&c&&/^[a-z_][\w:.-]{0,127}$/i.test(c)?c:null,y=f?_??lh(f):"",p=u||!_,O=t.slice(0,Se),T=Math.min(Number.isInteger(n)&&n>0?n:0,O.length,Se),M=O.reduce((x,U)=>Math.max(x,Array.isArray(U)?U.length:0),0),R=Math.min(Number.isInteger(r)&&r>0?r:0,M,Se),B=A,Q=A/Math.sqrt(3),z=A*2/Math.sqrt(3),W=d==="jelly"?B*Zn:0,de=(x)=>x?.tileIndex!=null?sn(b,x.tileIndex):null,ie=(x)=>{if(ct(x?.color))return x.color;return de(x)?hh:null},te=(x,U,k)=>[(x-U)*B,(x+U)*Q-k*z],ke=(x,U)=>{let k=t[U]?.[x];return k?.active&&ie(k)?it(k.depth):0},q=[];for(let x=0;x<T;x++)for(let U=0;U<R;U++){let k=t[x]?.[U],P=ie(k);if(k?.active&&P)q.push({x:U,y:x,color:P,tileIndex:k.tileIndex??null,depth:it(k.depth),mirrorZ:!!k.mirrorZ})}if(q.length===0)return'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 0 0"/>';q.sort((x,U)=>x.x+x.y-(U.x+U.y)||x.depth-U.depth);let H=[],ye=1/0,fe=-1/0,Xe=1/0,D=-1/0,J=!1,se=wa(yr.shade,g),le=wa(on.shade,g),Be=(x)=>x===Jt?x.shade:x===yr?se:le,pe=(x,U)=>{if(x<ye)ye=x;if(x>fe)fe=x;if(U<Xe)Xe=U;if(U>D)D=U};for(let{x,y:U,color:k,tileIndex:P,depth:re,mirrorZ:ue}of q){let me=Vr(k),Te=[],Oe=[],{primary:ee,mirrored:pt}=as(re,ue),Ke=(he)=>me?`hsla(${me[0]}, ${me[1]}%, ${Math.max(0,Math.min(100,me[2]*he))}%, ${me[3]})`:k,dt=(he,ve=0,Pe=ee)=>he.corners.map(([Ce,ge,ne])=>te(x+Ce,U+ge,ne===0?ve:Pe)),Mr=(he,ve=0,Pe=ee)=>{let Ce=dt(he,ve,Pe);if(W>0){let ge=Be(he),ne=Ke(ge),ce=gh(Ce,W),We=he===Jt?Ke(Math.min(1.18,ge+0.13)):Ke(ge*dh);Te.push(Ea(ce,ne,ne,W),Ea(ce,"none",We,W*0.3))}else Te.push(va(Ce,Ke(Be(he))));for(let[ge,ne]of Ce)pe(ge,ne)},kt=ue?-pt:ke(x+1,U),X=ue?-pt:ke(x,U+1),Lt=a&&!ue?0:kt,Rt=a&&!ue?0:X,Kt=a||ue||Lt<ee,Fr=a||ue||Rt<ee;if(Kt)Mr(yr,Lt,ee);if(Fr)Mr(on,Rt,ee);if(Mr(Jt,ee,ee),m){let he=new Set,ve=(ne,ce)=>{let We=fh([ne,ce]);if(he.has(We))return;he.add(We),Oe.push([ne,ce])},Pe=(ne)=>{for(let ce=0;ce<ne.length;ce++)ve(ne[ce],ne[(ce+1)%ne.length])},Ce=(ne,ce)=>{let[We,Qe]=ne.corners.filter(([,,Ne])=>Ne===0);for(let Ne=Math.floor(ce)+1;Ne<ee;Ne++)ve(te(x+We[0],U+We[1],Ne),te(x+Qe[0],U+Qe[1],Ne))},ge=dt(Jt,ee,ee);if(ve(ge[0],ge[1]),ke(x+1,U)!==ee)ve(ge[1],ge[2]);if(ke(x,U+1)!==ee)ve(ge[2],ge[3]);if(ve(ge[3],ge[0]),ue||kt<ee)Pe(dt(yr,kt,ee)),Ce(yr,kt);if(ue||X<ee)Pe(dt(on,X,ee)),Ce(on,X)}let Gr=P==null?null:sn(b,P);if(Gr){J=!0;let he=(Ce,ge,ne,ce,We,Qe,Ne,ze)=>{let qe=sn(b,P,Ce);if(!qe)return;let Tt=1-ze;Te.push(`<g transform="matrix(${ge} ${ne} ${ce} ${We} ${ae(Qe)} ${ae(Ne)})"><svg x="0" y="0" width="1" height="1" viewBox="${qe.sx} ${qe.sy} ${qe.tileSize} ${qe.tileSize}" preserveAspectRatio="none"><use href="#${y}" xlink:href="#${y}"/></svg>`+(Tt>0?`<rect x="0" y="0" width="1" height="1" fill="#000" opacity="${Tt.toFixed(2)}"/>`:"")+"</g>")};if(Kt){let[Ce,ge]=te(x+1,U,ee);he("side",-B,Q,0,z*(ee-Lt),Ce,ge,Be(yr))}if(Fr){let[Ce,ge]=te(x,U+1,ee);he("side",B,Q,0,z*(ee-Rt),Ce,ge,Be(on))}let[ve,Pe]=te(x,U,ee);he("top",B,Q,-B,Q,ve,Pe,Jt.shade)}if(m)Te.push(mh(Oe,m));if(d!=="normal"&&!Gr){if(d==="lego"){let he=Math.SQRT2*tn*B,ve=Math.SQRT2*tn*Q,Pe=Ke(se),Ce=Ke(Jt.shade),ge=[[-1,-1],[-1,1],[1,-1],[1,1]];for(let[ne,ce]of ge){let We=x+0.5+ne*rn,Qe=U+0.5+ce*rn,[Ne,ze]=te(We,Qe,ee),[,qe]=te(We,Qe,ee+gs);pe(Ne-he,ze+ve),pe(Ne+he,qe-ve);let Tt='shape-rendering="geometricPrecision"';Te.push(`<ellipse cx="${ae(Ne)}" cy="${ae(ze)}" rx="${ae(he)}" ry="${ae(ve)}" fill="${wt(Pe)}" ${Tt}/>`,`<rect x="${ae(Ne-he)}" y="${ae(qe)}" width="${ae(he*2)}" height="${ae(ze-qe)}" fill="${wt(Pe)}" ${Tt}/>`,`<ellipse cx="${ae(Ne)}" cy="${ae(qe)}" rx="${ae(he)}" ry="${ae(ve)}" fill="${wt(Ce)}" ${Tt}/>`)}}else if(d==="voxel"){let he=(ne,ce,We,Qe,Ne,ze)=>{let qe=(Tt,ru)=>{for(let[nu,iu]of Tt)pe(nu,iu);Te.push(va(Tt,Ke(ru)))};qe([te(ce,We,ze),te(ce,We,Ne),te(ce,Qe,Ne),te(ce,Qe,ze)],se),qe([te(ne,Qe,ze),te(ne,Qe,Ne),te(ce,Qe,Ne),te(ce,Qe,ze)],le),qe([te(ne,We,ze),te(ce,We,ze),te(ce,Qe,ze),te(ne,Qe,ze)],Jt.shade)},ve=fs,Pe=mr(1,1),Ce=ue||kt<ee?kt:null,ge=ue||X<ee?X:null;if(he(x+0.5-Pe/2,x+0.5+Pe/2,U+0.5-Pe/2,U+0.5+Pe/2,ee,ee+ve),Ce!==null){let ne=mr(1,ee-Ce),ce=(ee+Ce)/2;he(x+1,x+1+ve,U+0.5-ne/2,U+0.5+ne/2,ce-ne/2,ce+ne/2)}if(ge!==null){let ne=mr(1,ee-ge),ce=(ee+ge)/2;he(x+0.5-ne/2,x+0.5+ne/2,U+1,U+1+ve,ce-ne/2,ce+ne/2)}}}if(a)H.push(`<g data-color="${wt(k)}">${Te.join("")}</g>`);else H.push(...Te)}let Re=2+W/2,ot=ye-Re,He=Xe-Re,Z=fe-ye+Re*2,mt=D-Xe+Re*2,xt=J&&b&&f&&p?`<defs><image id="${y}" href="${wt(f)}" xlink:href="${wt(f)}" x="0" y="0" width="${w}" height="${C}" style="image-rendering:pixelated"/></defs>`:"";return[`<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="${ae(ot)} ${ae(He)} ${ae(Z)} ${ae(mt)}" shape-rendering="crispEdges">`,xt,...H,"</svg>"].join("")}var ph="hsla(278, 100%, 70%, 1)",bh=/hsla\(278, 100%, ([\d.]+)%, 1\)/g,an=(e)=>vs({grid:[[{active:!0,color:ph}]],numCols:1,numRows:1,blockStyle:e,sideLighting:0.15}).replaceAll(bh,"hsl(var(--block-style-icon-hs, 278 100%) $1% / 1)"),yh=[{style:"normal",label:"Normal",icon:an("normal")},{style:"voxel",label:"Voxel",icon:an("voxel")},{style:"lego",label:"Lego",icon:an("lego")},{style:"jelly",label:"Jelly",icon:an("jelly")}];var rt=[{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 _h=16777216,vh=16;function wr(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function Ch(e){if(!Array.isArray(e))return[...rt[0].colors];let t=e.slice(0,vh).flatMap((r)=>{if(typeof r==="string"&&ct(r))return[r];if(wr(r)&&ct(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:[...rt[0].colors]}function Eh(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 Sh(e){let t=wr(e)?e:{};return{saturation:tt(t.saturation),lightness:tt(t.lightness)}}function ln(e){if(e.length>_h)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=nn(t.grid),n=t.gridSize===void 0?r.length:t.gridSize;if(!Number.isInteger(n)||Number(n)<1||Number(n)>Se||r.length!==n||!r.every((o)=>o.length===n))throw Error("Draft contains an invalid grid");let s=Ch(t.palette),i=ct(t.activeColor)?t.activeColor:s[0];return{filename:typeof t.filename==="string"?en(t.filename):"untitled",grid:r,palette:s,activeColor:i,paletteColorAdjustment:Sh(t.paletteColorAdjustment),draft:{data:t,activeArtboard:Eh(t)}}}function Ih(e,t){let r=Array.isArray(t)?t:[];return e.map((n,s)=>{let i=r[s];if(!wr(i))return{color:n,opacity:1};let o=typeof i.opacity==="number"&&Number.isFinite(i.opacity)&&i.opacity>=0&&i.opacity<=1?i.opacity:1;return{...i,color:n,opacity:o}})}function xh(e,t){let r=e.draft?.data.artboards,n=Array.isArray(r)?[...r]:[],s=n.length>0?Math.min(e.draft?.activeArtboard??0,n.length-1):0;if(n.length===0)n.push(t);else{let i=n[s];n[s]=wr(i)&&"grid"in i?{...i,grid:t}:t}return{artboards:n,activeArtboard:s}}function cn(e){let t=e.draft?.data,r=br(e.grid),n=Ih(e.palette,t?.palette),{artboards:s,activeArtboard:i}=xh(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:tt(o.saturation),lightness:tt(o.lightness)},activeColor:e.activeColor,artboards:s,activeArtboard:i,filename:e.filename,savedAt:new Date().toISOString()},null,2)}var Ia=16,kh=100;function Sa(e,t,r){return Math.max(t,Math.min(r,e))}function un(e){return e.map((t)=>t.map((r)=>({...r})))}function Rh(e){return Array.from({length:e},()=>Array.from({length:e},()=>({active:!1,color:null})))}function xa(e){if(!Number.isInteger(e)||e<1||e>Se)throw Error(`Grid size must be between 1 and ${Se}`);return e}function dn(e=Ia){let t=[...rt[0].colors];return{filename:"untitled",grid:Rh(xa(e)),palette:t,activeColor:t[0],paletteColorAdjustment:{saturation:0,lightness:0}}}function Th(e,t,r,n){let s=[t];if(r)s.push({x:e-1-t.x,y:t.y});if(n)s.push({x:t.x,y:e-1-t.y});if(r&&n)s.push({x:e-1-t.x,y:e-1-t.y});return[...new Map(s.map((i)=>[`${i.x}:${i.y}`,i])).values()]}class Pt{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:tt(e.paletteColorAdjustment?.saturation),lightness:tt(e.paletteColorAdjustment?.lightness)},this.draft=e.draft,this.currentGrid=un(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=un(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>kh)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:un(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:un(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:un(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 s of Th(this.size,{x:e,y:t},this.mirrorX,this.mirrorY)){let i=this.currentGrid[s.y][s.x],o=r!==null;if(i.active===o&&i.color===r&&i.tileIndex==null)continue;this.currentGrid[s.y][s.x]=o?{...i,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:s}=r,i=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!==s||(d.tileIndex??null)!==i))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 Bh}from"net";var Oh="127.0.0.1",Ph=47642,Nh=3000,Dh=32,Lh=1048576,Mh=16384,ka=[0.57,0.57,0.6,1];function Fh(e){if(!e)return[...ka];let t=Qt(e);return t?[t.r/255,t.g/255,t.b/255,t.a]:[...ka]}function Gh(e){if(!e?.active)return{active:!1,color:null,depth:1,mirrorZ:!1};return{active:!0,color:Fh(e.color),depth:it(e.depth),mirrorZ:!!e.mirrorZ}}function Ta(e,t,r){return{x:t%r,y:Math.floor(t/r),...e}}function Uh(e,t){let r=e.color===t.color||!!e.color&&!!t.color&&e.color.every((n,s)=>n===t.color?.[s]);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=Yt(e.grid,t,r),s=n.length,i=n[0]?.length??0;return Array.from({length:i*s},(o,a)=>Gh(n[Math.floor(a/i)]?.[a%i]))}function jh(e){let t=e.grid.length,r=e.grid[0]?.length??0,n=Ba(e);return{message:{protocol:Jn,type:"snapshot",columns:r,rows:t,cells:n.flatMap((s,i)=>s.active?[Ta(s,i,r)]:[])},state:n}}function Hh(e,t,r){return t.flatMap((n,s)=>e[s]&&Uh(e[s],n)?[]:[Ta(n,s,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 Cs{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=Bh){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:Oh,port:Ph})}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.")},Nh),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 s of Hh(this.previousGrid,n,r))this.pendingCells.set(s.y*r+s.x,s);if(this.previousGrid=n,this.pendingCells.size>0&&!this.patchTimer)this.patchTimer=setTimeout(()=>this.flushPatch(),Dh)}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)>Mh){this.fail(e,"Blender sent an invalid handshake.");return}let r=this.handshakeBuffer.indexOf(`
|
|
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!==
|
|
11
|
-
`);if(t.length>Lh)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})}}function $t(e){let t=e.name.toLowerCase();return t==="return"||t==="enter"||t==="space"||e.sequence===" "}function Xt(e){switch(e){case"left":case"h":return{dx:-1,dy:0};case"right":case"l":return{dx:1,dy:0};case"up":case"k":return{dx:0,dy:-1};case"down":case"j":return{dx:0,dy:1};default:return}}import{MouseButton as Ss,NativeImage as Pa,Renderable as Xh,RGBA as hn,TextAttributes as Na}from"@opentui/core";import{RGBA as Kh}from"@opentui/core";var Wh={r:30,g:33,b:48,a:1},Yh={r:42,g:46,b:64,a:1},Oa=new Map;function Qh(e){let t=Oa.get(e);if(t!==void 0)return t;let r=Qt(e);return Oa.set(e,r),r}function Jh(e,t){return(e+t)%2===0?Wh:Yh}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 $h(e,t,r){let n=Jh(t,r),s=e?.active&&e.color?Qh(e.color):null;return s?Zh(s,n):n}function Vt(e,t,r){let n=$h(e,t,r);return Kh.fromInts(n.r,n.g,n.b)}var Es=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 Es.get(e)??null;let s=n.width/t,i=n.height/r,o=Number.isFinite(s)&&Number.isFinite(i)&&s>0&&i>0?{width:s,height:i}:null;if(o)Es.set(e,o);return o??Es.get(e)??null}function $n(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 Xn(e){if(!e||e.image_protocol==="blocks")return!1;if(e.image_protocol==="kitty"||e.image_protocol==="sixel")return!0;if(e.multiplexer==="tmux")return!1;return Boolean(e.kitty_graphics||e.sixel)}function Vn(e){return Boolean(_r(e)&&Xn(e.capabilities))}var zn=hn.fromInts(22,8,33),Da=hn.fromInts(39,14,57),Is=4,Vh=hn.fromInts(255,255,255),zh=hn.fromInts(8,10,16),qh=0.25,qn=512,La=16384,eA=25000000;function xs(e){let[t,r,n]=e.toInts(),s=(0.2126*t+0.7152*r+0.0722*n)/255,[i,o,a]=s>0.55?zh.toInts():Vh.toInts(),l=(c,u)=>Math.round(c+(u-c)*qh);return hn.fromInts(l(t,i),l(r,o),l(n,a))}function Ma(e,t,r){return Math.max(0,Math.min(r-t,e-Math.floor(t/2)))}function tA(e,t){let r=Math.ceil(e/qn)*qn,n=Math.ceil(t/qn)*qn;if(r>La||n>La||r*n>eA)return null;return{width:r,height:n}}function rA(e,t,r,n,s){let o=Math.max(1,Math.floor(n)),a=Math.max(1,Math.round(o*2/s)),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 nA(e,t,r,n,s,i){let o=Math.max(1,Math.floor(n)),a=Math.max(1,Math.round(o*s)),l=Math.min(r,Math.floor(e/o)),c=Math.min(r,Math.floor(t*i/a)),u=l*a,d=c*a,A=d*2/i;return{columns:l,pixelRows:c,columnZoom:o,subrowZoom:a*2/i,renderedColumns:l*o,renderedSubrows:A,terminalRows:Math.ceil(d/i),pixelWidth:u,pixelHeight:d}}class ks extends Xh{artworkImage=null;artworkImageCache=null;worldImage=null;worldImageSide=0;worldImageWidth=0;worldImageHeight=0;currentModel={grid:[],cursor:{x:0,y:0},zoom:1};cellHandler;viewport={originX:0,originY:0,startX:0,startY:0,columns:0,pixelRows:0,columnZoom:1,subrowZoom:1,renderedSubrows:0};constructor(e,t){super(e,{...t,buffered:!0});if(t.model)this.currentModel=t.model;this.cellHandler=t.onCell,this.onMouseDown=(r)=>this.handleMouse(r)}set model(e){if(!e)return;this.currentModel=e,this.requestRender()}set onCell(e){this.cellHandler=e}renderSelf(e){e.clear(zn);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=$n(this._ctx),n=_r(this._ctx),s=n&&Vn(this._ctx)?nA(this.width,this.height,t,this.currentModel.zoom,n.width,n.height):null,i=s??rA(this.width,this.height,t,this.currentModel.zoom,r),{columns:o,pixelRows:a}=i;if(o===0||a===0){this.viewport.columns=0,this.viewport.pixelRows=0,this.viewport.columnZoom=i.columnZoom,this.viewport.subrowZoom=i.subrowZoom,this.viewport.renderedSubrows=0;return}let{renderedColumns:l,renderedSubrows:c,terminalRows:u}=i,d=Ma(this.currentModel.cursor.x,o,t),A=Ma(this.currentModel.cursor.y,a,t),m=Math.floor((this.width-l)/2),g=Math.floor((this.height-u)/2);if(s&&n){if(!this.drawWorldGridImage(e,m,g,n.width,n.height))this.drawWorldGrid(e,m,g,r)}else this.releaseWorldImage(),this.drawWorldGrid(e,m,g,r);if(this.viewport={originX:m,originY:g,startX:d,startY:A,columns:o,pixelRows:a,columnZoom:i.columnZoom,subrowZoom:i.subrowZoom,renderedSubrows:c},s){this.drawArtworkImage(e,s,m,g,d,A);return}this.releaseArtworkImage();for(let f=0;f<u;f++){let b=f*2,v=b+1,w=A+Math.floor(b/i.subrowZoom),C=A+Math.floor(v/i.subrowZoom);for(let _=0;_<l;_++){let y=d+Math.floor(_/i.columnZoom),p=Vt(this.currentModel.grid[w]?.[y],y,w),O=v<c&&C<t?Vt(this.currentModel.grid[C]?.[y],y,C):zn,T=this.currentModel.cursor,M=T.x===y&&T.y===w,R=T.x===y&&T.y===C;e.setCell(m+_,g+f,"\u2580",M?xs(p):p,R?xs(O):O)}}}drawArtworkImage(e,t,r,n,s,i){let o=this.currentModel.cursor,a=this.artworkImageCache;if(!(this.artworkImage&&a&&a.grid===this.currentModel.grid&&a.columns===t.columns&&a.pixelRows===t.pixelRows&&a.pixelWidth===t.pixelWidth&&a.pixelHeight===t.pixelHeight&&a.startX===s&&a.startY===i&&a.cursorX===o.x&&a.cursorY===o.y)){let c=new Uint8Array(t.columns*t.pixelRows*4);for(let A=0;A<t.pixelRows;A++){let m=i+A;for(let g=0;g<t.columns;g++){let f=s+g,b=Vt(this.currentModel.grid[m]?.[f],f,m);if(o.x===f&&o.y===m)b=xs(b);let[v,w,C]=b.toInts(),_=(A*t.columns+g)*4;c[_]=v,c[_+1]=w,c[_+2]=C,c[_+3]=255}}let u=Pa.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.artworkImageCache={grid:this.currentModel.grid,columns:t.columns,pixelRows:t.pixelRows,pixelWidth:t.pixelWidth,pixelHeight:t.pixelHeight,startX:s,startY:i,cursorX:o.x,cursorY:o.y}}if(!this.artworkImage)return;e.drawImage(this.artworkImage,r,n,t.renderedColumns,t.terminalRows,t.pixelWidth,t.pixelHeight,0,0,t.pixelWidth,t.pixelHeight,"auto")}releaseArtworkImage(){this.artworkImage?.dispose(),this.artworkImage=null,this.artworkImageCache=null}drawWorldGridImage(e,t,r,n,s){let i=Math.max(1,Math.round(this.width*n)),o=Math.max(1,Math.round(this.height*s)),a=Math.max(1,Math.round(Is*n)),l=Math.round(t*n),c=Math.round(r*s),u=i+a,d=o+a,A=tA(u,d);if(!A)return this.releaseWorldImage(),!1;if(!this.worldImage||a!==this.worldImageSide||u>this.worldImageWidth||d>this.worldImageHeight){let{width:f,height:b}=A,v=new Uint8Array(f*b*4),[w,C,_]=zn.toInts(),[y,p,O]=Da.toInts();for(let T=0;T<b;T++){let M=T%a===0;for(let R=0;R<f;R++){let B=R%a===0,Q=(T*f+R)*4;v[Q]=M||B?y:w,v[Q+1]=M||B?p:C,v[Q+2]=M||B?O:_,v[Q+3]=255}}this.releaseWorldImage(),this.worldImage=Pa.fromRgba(v,f,b),this.worldImageSide=a,this.worldImageWidth=f,this.worldImageHeight=b}if(!this.worldImage)return!1;let m=(-l%a+a)%a,g=(-c%a+a)%a;return e.drawImage(this.worldImage,0,0,this.width,this.height,i,o,m,g,i,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 s=Math.max(1,Math.round(Is/n));for(let i=0;i<this.height;i++){let o=i+1-r,a=Math.floor(o/s)!==Math.floor((o-1)/s);for(let l=0;l<this.width;l++){let c=l>0&&(l-t)%Is===0;if(!a&&!c)continue;e.setCell(l,i,c?"\u258F":" ",Da,zn,a?Na.UNDERLINE:Na.NONE)}}}destroySelf(){this.releaseArtworkImage(),this.releaseWorldImage(),super.destroySelf()}handleMouse(e){if(e.button!==Ss.LEFT&&e.button!==Ss.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),s=e.modifiers.shift?1:0,i=r*2+s;if(i>=this.viewport.renderedSubrows)return;let o=this.viewport.startY+Math.floor(i/this.viewport.subrowZoom);if(o>=this.currentModel.grid.length)return;this.cellHandler?.({x:n,y:o,...e.button===Ss.RIGHT?{tool:"erase"}:{}})}}import{NativeImage as Fa,parseColor as iA}from"@opentui/core";var sA=new URL("./flatblox-logo.png",import.meta.url);async function oA(e){let t=await Fa.load(sA),[r,n,s]=iA(e).toInts(),i=new Uint8Array(t.width*t.height*4);for(let a=0;a<i.length;a+=4)i[a]=r,i[a+1]=n,i[a+2]=s,i[a+3]=255;let o=Fa.fromRgba(i,t.width,t.height);try{return o.composite(t)}finally{o.dispose(),t.dispose()}}function aA(e){let[t,r]=K(),n=!1;return Ft(()=>{oA(e.backgroundColor).then((s)=>{if(n)s.dispose();else r(s)})}),et(()=>{n=!0,t()?.dispose()}),(()=>{var s=I("image");return h(s,"fit","fit"),_e((i)=>{var o=e.id,a=t(),l=e.width,c=e.height;return o!==i.e&&(i.e=h(s,"id",o,i.e)),a!==i.t&&(i.t=h(s,"source",a,i.t)),l!==i.a&&(i.a=h(s,"width",l,i.a)),c!==i.o&&(i.o=h(s,"height",c,i.o)),i},{e:void 0,t:void 0,a:void 0,o:void 0}),s})()}function vr(e){let t=ht(),[r,n]=K(Xn(t.capabilities)),s=()=>n(Xn(t.capabilities));return Ft(()=>{t.on("capabilities",s),s()}),et(()=>t.off("capabilities",s)),V(Ve,{get when(){return r()},get fallback(){return(()=>{var i=I("box");return h(i,"alignItems","center"),h(i,"justifyContent","center"),G(i,V(Ve,{get when(){return e.height>=2},get fallback(){return(()=>{var o=I("text"),a=I("b");return E(o,a),E(a,Ae("FLATBLOX")),_e((l)=>h(o,"fg",e.foregroundColor,l)),o})()},get children(){var o=I("ascii_font");return h(o,"text","FLATBLOX"),h(o,"font","tiny"),_e((a)=>{var l=`${e.id}-ascii`,c=e.foregroundColor,u=e.backgroundColor;return l!==a.e&&(a.e=h(o,"id",l,a.e)),c!==a.t&&(a.t=h(o,"color",c,a.t)),u!==a.a&&(a.a=h(o,"backgroundColor",u,a.a)),a},{e:void 0,t:void 0,a:void 0}),o}})),_e((o)=>{var{id:a,width:l,height:c,backgroundColor:u}=e;return a!==o.e&&(o.e=h(i,"id",a,o.e)),l!==o.t&&(o.t=h(i,"width",l,o.t)),c!==o.a&&(o.a=h(i,"height",c,o.a)),u!==o.o&&(o.o=h(i,"backgroundColor",u,o.o)),o},{e:void 0,t:void 0,a:void 0,o:void 0}),i})()},get children(){return V(aA,e)}})}$r({pixel_grid:ks});var S={background:Ue("hsl(275 60% 9%)"),panel:Ue("hsl(275 60% 11%)"),panelActive:Ue("hsl(275 60% 14%)"),card:Ue("hsl(275 60% 16%)"),border:Ue("hsl(275 60% 28%)"),text:Ue("hsl(278 100% 80%)"),muted:Ue("hsl(278 41% 65%)"),accent:Ue("hsl(315 68% 71%)"),accentText:Ue("hsl(278 70% 80%)"),warning:Ue("hsl(37 100% 71%)"),textPink:Ue("hsl(308, 50%, 75%)"),orangeActive:Ue("hsl(28, 80%, 38%)")};function Ue(e){let t=hs(e);return t?zr(t):"#ffffff"}function Cr(e){return e[0].toUpperCase()+e.slice(1)}function lA(e){return(()=>{var t=I("box");return h(t,"flexDirection","column"),h(t,"gap",0),G(t,V(yt,{get each(){return e.colors.slice(0,10)},children:(r,n)=>{let s=()=>(e.refresh(),e.session.selectedColorIndex===n()),i=n()===9?"0":String(n()+1);return(()=>{var o=I("box"),a=I("text"),l=I("text"),c=Ae(" ");return E(o,a),E(o,l),h(o,"height",1),h(o,"flexDirection","row"),h(o,"paddingX",1),E(a,Ae("\u2588\u2588")),E(l,c),G(l,()=>s()?" \u203A ":" ",c),G(l,i,c),G(l,()=>Ue(r),null),_e((u)=>{var d=s()?S.panelActive:S.panel,A=Ue(r),m=s()?S.text:S.muted;return d!==u.e&&(u.e=h(o,"backgroundColor",d,u.e)),A!==u.t&&(u.t=h(a,"fg",A,u.t)),m!==u.a&&(u.a=h(l,"fg",m,u.a)),u},{e:void 0,t:void 0,a:void 0}),o})()}})),t})()}function cA(e){let t=()=>(e.refresh(),{tool:Cr(e.session.tool),mirrorX:e.session.mirrorX?"on":"off",mirrorY:e.session.mirrorY?"on":"off",cursor:`${e.session.cursor.x+1}, ${e.session.cursor.y+1}`});return(()=>{var r=I("box"),n=I("box"),s=I("box"),i=I("text"),o=Ae("Tool: "),a=I("text"),l=Ae("Cursor: "),c=I("box"),u=I("box"),d=I("box"),A=I("text"),m=Ae("Mirror X: "),g=I("text"),f=Ae("Mirror Y: ");return E(r,n),h(r,"id","sidebar"),h(r,"alignSelf","flex-start"),h(r,"flexDirection","column"),E(n,s),E(n,c),E(n,u),E(n,d),h(n,"width","100%"),h(n,"flexDirection","column"),h(n,"paddingX",1),E(s,i),E(s,a),h(s,"flexDirection","column"),E(i,o),G(i,()=>t().tool,null),E(a,l),G(a,()=>t().cursor,null),h(c,"height",1),G(n,V(lA,{get session(){return e.session},get colors(){return e.colors},get refresh(){return e.refresh}}),u),h(u,"height",1),E(d,A),E(d,g),h(d,"flexDirection","column"),E(A,m),G(A,()=>t().mirrorX,null),E(g,f),G(g,()=>t().mirrorY,null),_e((b)=>{var v=e.visible?28:0,w=e.visible,C=S.textPink,_=S.textPink,y=S.muted,p=S.muted;return v!==b.e&&(b.e=h(r,"width",v,b.e)),w!==b.t&&(b.t=h(r,"visible",w,b.t)),C!==b.a&&(b.a=h(i,"fg",C,b.a)),_!==b.o&&(b.o=h(a,"fg",_,b.o)),y!==b.i&&(b.i=h(A,"fg",y,b.i)),p!==b.n&&(b.n=h(g,"fg",p,b.n)),b},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),r})()}function uA(e){let t=()=>{e.refresh();let r=`${e.session.mirrorX?"X":"-"}${e.session.mirrorY?"Y":"-"}`;return{tool:Cr(e.session.tool),color:Ue(e.colors[e.session.selectedColorIndex]??e.session.activeColor),mirror:r}};return(()=>{var r=I("box"),n=I("text"),s=Ae("Tool "),i=Ae(" Color "),o=I("text"),a=I("text"),l=Ae(" "),c=Ae(" Mirror ");return E(r,n),E(r,o),E(r,a),h(r,"border",!0),h(r,"borderStyle","rounded"),h(r,"paddingX",1),h(r,"flexDirection","row"),E(n,s),E(n,i),G(n,()=>t().tool,i),E(o,Ae("\u2588\u2588")),E(a,l),E(a,c),G(a,()=>t().color,c),G(a,()=>t().mirror,null),_e((u)=>{var d=e.visible?3:0,A=e.visible,m=S.border,g=S.panel,f=S.textPink,b=t().color,v=S.textPink;return d!==u.e&&(u.e=h(r,"height",d,u.e)),A!==u.t&&(u.t=h(r,"visible",A,u.t)),m!==u.a&&(u.a=h(r,"borderColor",m,u.a)),g!==u.o&&(u.o=h(r,"backgroundColor",g,u.o)),f!==u.i&&(u.i=h(n,"fg",f,u.i)),b!==u.n&&(u.n=h(o,"fg",b,u.n)),v!==u.s&&(u.s=h(a,"fg",v,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 dA(e){let t=Y(()=>Math.max(1,Math.min(64,e.width-2))),r=Y(()=>Math.max(1,Math.min(21,e.height-2)));return(()=>{var n=I("box"),s=I("text");return E(n,s),h(n,"id","help-overlay"),h(n,"position","absolute"),h(n,"zIndex",20),h(n,"border",!0),h(n,"title"," Keyboard & mouse "),h(n,"padding",1),G(s,()=>`Move Arrow keys or H J K L
|
|
6
|
+
var bu=Object.create;var{getPrototypeOf:yu,defineProperty:_o,getOwnPropertyNames:wu}=Object;var _u=Object.prototype.hasOwnProperty;function vu(e){return this[e]}var Cu,Eu,Su=(e,t,r)=>{var n=e!=null&&typeof e==="object";if(n){var s=t?Cu??=new WeakMap:Eu??=new WeakMap,i=s.get(e);if(i)return i}r=e!=null?bu(yu(e)):{};let o=t||!e||!e.__esModule?_o(r,"default",{value:e,enumerable:!0}):r;if(e&&typeof e==="object"||typeof e==="function"){for(let a of wu(e))if(!_u.call(o,a))_o(o,a,{get:vu.bind(e,a),enumerable:!0})}if(n)s.set(e,o);return o};var Iu=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Il=Iu(function(r_,ai){var za,qa,el,tl,rl,nl,il,sl,ol,al,ll,cl,ul,si,Fs,dl,hl,Al,kr,fl,gl,ml,pl,bl,yl,wl,_l,vl,oi,Cl,El,Sl;(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 ai==="object"&&typeof r_==="object")e(r(t,r(r_)));else e(r(t));function r(n,s){if(n!==t)if(typeof Object.create==="function")Object.defineProperty(n,"__esModule",{value:!0});else n.__esModule=!0;return function(i,o){return n[i]=s?s(i,o):o}}})(function(e){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,o){i.__proto__=o}||function(i,o){for(var a in o)if(Object.prototype.hasOwnProperty.call(o,a))i[a]=o[a]};za=function(i,o){if(typeof o!=="function"&&o!==null)throw TypeError("Class extends value "+String(o)+" is not a constructor or null");t(i,o);function a(){this.constructor=i}i.prototype=o===null?Object.create(o):(a.prototype=o.prototype,new a)},qa=Object.assign||function(i){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))i[c]=o[c]}return i},el=function(i,o){var a={};for(var l in i)if(Object.prototype.hasOwnProperty.call(i,l)&&o.indexOf(l)<0)a[l]=i[l];if(i!=null&&typeof Object.getOwnPropertySymbols==="function"){for(var c=0,l=Object.getOwnPropertySymbols(i);c<l.length;c++)if(o.indexOf(l[c])<0&&Object.prototype.propertyIsEnumerable.call(i,l[c]))a[l[c]]=i[l[c]]}return a},tl=function(i,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(i,o,a,l);else for(var A=i.length-1;A>=0;A--)if(d=i[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},rl=function(i,o){return function(a,l){o(a,l,i)}},nl=function(i,o,a,l,c,u){function d(w){if(w!==void 0&&typeof w!=="function")throw TypeError("Function expected");return w}var A=l.kind,m=A==="getter"?"get":A==="setter"?"set":"value",g=!o&&i?l.static?i:i.prototype:null,f=o||(g?Object.getOwnPropertyDescriptor(g,l.name):{}),p,v=!1;for(var y=a.length-1;y>=0;y--){var S={};for(var _ in l)S[_]=_==="access"?{}:l[_];for(var _ in l.access)S.access[_]=l.access[_];S.addInitializer=function(w){if(v)throw TypeError("Cannot add initializers after decoration has completed");u.push(d(w||null))};var b=(0,a[y])(A==="accessor"?{get:f.get,set:f.set}:f[m],S);if(A==="accessor"){if(b===void 0)continue;if(b===null||typeof b!=="object")throw TypeError("Object expected");if(p=d(b.get))f.get=p;if(p=d(b.set))f.set=p;if(p=d(b.init))c.unshift(p)}else if(p=d(b))if(A==="field")c.unshift(p);else f[m]=p}if(g)Object.defineProperty(g,l.name,f);v=!0},il=function(i,o,a){var l=arguments.length>2;for(var c=0;c<o.length;c++)a=l?o[c].call(i,a):o[c].call(i);return l?a:void 0},sl=function(i){return typeof i==="symbol"?i:"".concat(i)},ol=function(i,o,a){if(typeof o==="symbol")o=o.description?"[".concat(o.description,"]"):"";return Object.defineProperty(i,"name",{configurable:!0,value:a?"".concat(a," ",o):o})},al=function(i,o){if(typeof Reflect==="object"&&typeof Reflect.metadata==="function")return Reflect.metadata(i,o)},ll=function(i,o,a,l){function c(u){return u instanceof a?u:new a(function(d){d(u)})}return new(a||(a=Promise))(function(u,d){function A(f){try{g(l.next(f))}catch(p){d(p)}}function m(f){try{g(l.throw(f))}catch(p){d(p)}}function g(f){f.done?u(f.value):c(f.value).then(A,m)}g((l=l.apply(i,o||[])).next())})},cl=function(i,o){var a={label:0,sent:function(){if(u[0]&1)throw u[1];return u[1]},trys:[],ops:[]},l,c,u,d=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return d.next=A(0),d.throw=A(1),d.return=A(2),typeof Symbol==="function"&&(d[Symbol.iterator]=function(){return this}),d;function A(g){return function(f){return m([g,f])}}function m(g){if(l)throw TypeError("Generator is already executing.");while(d&&(d=0,g[0]&&(a=0)),a)try{if(l=1,c&&(u=g[0]&2?c.return:g[0]?c.throw||((u=c.return)&&u.call(c),0):c.next)&&!(u=u.call(c,g[1])).done)return u;if(c=0,u)g=[g[0]&2,u.value];switch(g[0]){case 0:case 1:u=g;break;case 4:return a.label++,{value:g[1],done:!1};case 5:a.label++,c=g[1],g=[0];continue;case 7:g=a.ops.pop(),a.trys.pop();continue;default:if((u=a.trys,!(u=u.length>0&&u[u.length-1]))&&(g[0]===6||g[0]===2)){a=0;continue}if(g[0]===3&&(!u||g[1]>u[0]&&g[1]<u[3])){a.label=g[1];break}if(g[0]===6&&a.label<u[1]){a.label=u[1],u=g;break}if(u&&a.label<u[2]){a.label=u[2],a.ops.push(g);break}if(u[2])a.ops.pop();a.trys.pop();continue}g=o.call(i,a)}catch(f){g=[6,f],c=0}finally{l=u=0}if(g[0]&5)throw g[1];return{value:g[0]?g[1]:void 0,done:!0}}},ul=function(i,o){for(var a in i)if(a!=="default"&&!Object.prototype.hasOwnProperty.call(o,a))oi(o,i,a)},oi=Object.create?function(i,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(i,l,c)}:function(i,o,a,l){if(l===void 0)l=a;i[l]=o[a]},si=function(i){var o=typeof Symbol==="function"&&Symbol.iterator,a=o&&i[o],l=0;if(a)return a.call(i);if(i&&typeof i.length==="number")return{next:function(){if(i&&l>=i.length)i=void 0;return{value:i&&i[l++],done:!i}}};throw TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")},Fs=function(i,o){var a=typeof Symbol==="function"&&i[Symbol.iterator];if(!a)return i;var l=a.call(i),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},dl=function(){for(var i=[],o=0;o<arguments.length;o++)i=i.concat(Fs(arguments[o]));return i},hl=function(){for(var i=0,o=0,a=arguments.length;o<a;o++)i+=arguments[o].length;for(var l=Array(i),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},Al=function(i,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 i.concat(u||Array.prototype.slice.call(o))},kr=function(i){return this instanceof kr?(this.v=i,this):new kr(i)},fl=function(i,o,a){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var l=a.apply(i,o||[]),c,u=[];return c=Object.create((typeof AsyncIterator==="function"?AsyncIterator:Object).prototype),A("next"),A("throw"),A("return",d),c[Symbol.asyncIterator]=function(){return this},c;function d(y){return function(S){return Promise.resolve(S).then(y,p)}}function A(y,S){if(l[y]){if(c[y]=function(_){return new Promise(function(b,w){u.push([y,_,b,w])>1||m(y,_)})},S)c[y]=S(c[y])}}function m(y,S){try{g(l[y](S))}catch(_){v(u[0][3],_)}}function g(y){y.value instanceof kr?Promise.resolve(y.value.v).then(f,p):v(u[0][2],y)}function f(y){m("next",y)}function p(y){m("throw",y)}function v(y,S){if(y(S),u.shift(),u.length)m(u[0][0],u[0][1])}},gl=function(i){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]=i[c]?function(d){return(a=!a)?{value:kr(i[c](d)),done:!1}:u?u(d):d}:u}},ml=function(i){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var o=i[Symbol.asyncIterator],a;return o?o.call(i):(i=typeof si==="function"?si(i):i[Symbol.iterator](),a={},l("next"),l("throw"),l("return"),a[Symbol.asyncIterator]=function(){return this},a);function l(u){a[u]=i[u]&&function(d){return new Promise(function(A,m){d=i[u](d),c(A,m,d.done,d.value)})}}function c(u,d,A,m){Promise.resolve(m).then(function(g){u({value:g,done:A})},d)}},pl=function(i,o){if(Object.defineProperty)Object.defineProperty(i,"raw",{value:o});else i.raw=o;return i};var r=Object.create?function(i,o){Object.defineProperty(i,"default",{enumerable:!0,value:o})}:function(i,o){i.default=o},n=function(i){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(i)};bl=function(i){if(i&&i.__esModule)return i;var o={};if(i!=null){for(var a=n(i),l=0;l<a.length;l++)if(a[l]!=="default")oi(o,i,a[l])}return r(o,i),o},yl=function(i){return i&&i.__esModule?i:{default:i}},wl=function(i,o,a,l){if(a==="a"&&!l)throw TypeError("Private accessor was defined without a getter");if(typeof o==="function"?i!==o||!l:!o.has(i))throw TypeError("Cannot read private member from an object whose class did not declare it");return a==="m"?l:a==="a"?l.call(i):l?l.value:o.get(i)},_l=function(i,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"?i!==o||!c:!o.has(i))throw TypeError("Cannot write private member to an object whose class did not declare it");return l==="a"?c.call(i,a):c?c.value=a:o.set(i,a),a},vl=function(i,o){if(o===null||typeof o!=="object"&&typeof o!=="function")throw TypeError("Cannot use 'in' operator on non-object");return typeof i==="function"?o===i:i.has(o)},Cl=function(i,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)}};i.stack.push({value:o,dispose:l,async:a})}else if(a)i.stack.push({async:!0});return o};var s=typeof SuppressedError==="function"?SuppressedError:function(i,o,a){var l=Error(a);return l.name="SuppressedError",l.error=i,l.suppressed=o,l};El=function(i){function o(u){i.error=i.hasError?new s(u,i.error,"An error was suppressed during disposal."):u,i.hasError=!0}var a,l=0;function c(){while(a=i.stack.pop())try{if(!a.async&&l===1)return l=0,i.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 i.hasError?Promise.reject(i.error):Promise.resolve();if(i.hasError)throw i.error}return c()},Sl=function(i,o){if(typeof i==="string"&&/^\.\.?\//.test(i))return i.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 i},e("__extends",za),e("__assign",qa),e("__rest",el),e("__decorate",tl),e("__param",rl),e("__esDecorate",nl),e("__runInitializers",il),e("__propKey",sl),e("__setFunctionName",ol),e("__metadata",al),e("__awaiter",ll),e("__generator",cl),e("__exportStar",ul),e("__createBinding",oi),e("__values",si),e("__read",Fs),e("__spread",dl),e("__spreadArrays",hl),e("__spreadArray",Al),e("__await",kr),e("__asyncGenerator",fl),e("__asyncDelegator",gl),e("__asyncValues",ml),e("__makeTemplateObject",pl),e("__importStar",bl),e("__importDefault",yl),e("__classPrivateFieldGet",wl),e("__classPrivateFieldSet",_l),e("__classPrivateFieldIn",vl),e("__addDisposableResource",Cl),e("__disposeResources",El),e("__rewriteRelativeImportExtension",Sl)})});import{CliRenderer as qu,createCliRenderer as ed,engine as td}from"@opentui/core";import{createTestRenderer as Mm}from"@opentui/core/testing";import{ASCIIFontRenderable as rd,BoxRenderable as nd,CodeRenderable as id,DiffRenderable as sd,ImageRenderable as od,InputRenderable as ad,LineNumberRenderable as ld,MarkdownRenderable as cd,ScrollBoxRenderable as ud,SelectRenderable as dd,TabSelectRenderable as hd,TextareaRenderable as Ad,TextAttributes as qi,TextNodeRenderable as fd,TextRenderable as gd}from"@opentui/core";import{engine as Um,Timeline as jm}from"@opentui/core";var Ye={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return vo(this.context.count)},getNextContextId(){return vo(this.context.count++)}};function vo(e){let t=String(e),r=t.length-1;return Ye.context.id+(r?String.fromCharCode(96+r):"")+t}function Wi(e){Ye.context=e}function xu(){return{...Ye.context,id:Ye.getNextContextId(),count:0}}var ku=!1,Ru=(e,t)=>e===t,Yi=Symbol("solid-proxy"),Tu=typeof Proxy==="function",Bu=Symbol("solid-track"),pm=Symbol("solid-dev-component"),Un={equals:Ru},Co=null,ko=No,lt=1,Kr=2,Ro={owned:null,cleanups:null,context:null,owner:null};var le=null,N=null,Yr=null,hr=null,ye=null,De=null,Ze=null,Hn=0;function Jt(e,t){let r=ye,n=le,s=e.length===0,i=t===void 0?n:t,o=s?Ro:{owned:null,cleanups:null,context:i?i.context:null,owner:i},a=s?e:()=>e(()=>ct(()=>Gt(o)));le=o,ye=null;try{return Ot(a,!0)}finally{ye=r,le=n}}function J(e,t){t=t?Object.assign({},Un,t):Un;let r={value:e,observers:null,observerSlots:null,comparator:t.equals||void 0},n=(s)=>{if(typeof s==="function")if(N&&N.running&&N.sources.has(r))s=s(r.tValue);else s=s(r.value);return Po(r,s)};return[Oo.bind(r),n]}function yt(e,t,r){let n=$i(e,t,!1,lt);if(Yr&&N&&N.running)De.push(n);else Jr(n)}function Kn(e,t,r){ko=Du;let n=$i(e,t,!1,lt),s=Qi&&Qr(Qi);if(s)n.suspense=s;if(!r||!r.render)n.user=!0;Ze?Ze.push(n):Jr(n)}function Y(e,t,r){r=r?Object.assign({},Un,r):Un;let n=$i(e,t,!0,0);if(n.observers=null,n.observerSlots=null,n.comparator=r.equals||void 0,Yr&&N&&N.running)n.tState=lt,De.push(n);else Jr(n);return Oo.bind(n)}function ct(e){if(!hr&&ye===null)return e();let t=ye;ye=null;try{if(hr)return hr.untrack(e);return e()}finally{ye=t}}function $t(e){Kn(()=>ct(e))}function qe(e){if(le===null);else if(le.cleanups===null)le.cleanups=[e];else le.cleanups.push(e);return e}function Ou(e){if(N&&N.running)return e(),N.done;let t=ye,r=le;return Promise.resolve().then(()=>{ye=t,le=r;let n;if(Yr||Qi)n=N||(N={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0}),n.done||(n.done=new Promise((s)=>n.resolve=s)),n.running=!0;return Ot(e,!1),ye=le=null,n?n.done:void 0})}var[bm,Eo]=J(!1);function To(e,t){let r=Symbol("context");return{id:r,Provider:Mu(r),defaultValue:e}}function Qr(e){let t;return le&&le.context&&(t=le.context[e.id])!==void 0?t:e.defaultValue}function Bo(e){let t=Y(e),r=Y(()=>Ji(t()));return r.toArray=()=>{let n=r();return Array.isArray(n)?n:n!=null?[n]:[]},r}var Qi;function Oo(){let e=N&&N.running;if(this.sources&&(e?this.tState:this.state))if((e?this.tState:this.state)===lt)Jr(this);else{let t=De;De=null,Ot(()=>jn(this),!1),De=t}if(ye){let t=this.observers?this.observers.length:0;if(!ye.sources)ye.sources=[this],ye.sourceSlots=[t];else ye.sources.push(this),ye.sourceSlots.push(t);if(!this.observers)this.observers=[ye],this.observerSlots=[ye.sources.length-1];else this.observers.push(ye),this.observerSlots.push(ye.sources.length-1)}if(e&&N.sources.has(this))return this.tValue;return this.value}function Po(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 s=N.running;if(s||!r&&N.sources.has(e))N.sources.add(e),e.tValue=t;if(!s)e.value=t}else e.value=t;if(e.observers&&e.observers.length)Ot(()=>{for(let s=0;s<e.observers.length;s+=1){let i=e.observers[s],o=N&&N.running;if(o&&N.disposed.has(i))continue;if(o?!i.tState:!i.state){if(i.pure)De.push(i);else Ze.push(i);if(i.observers)Do(i)}if(!o)i.state=lt;else i.tState=lt}if(De.length>1e6)throw De=[],Error()},!1)}return t}function Jr(e){if(!e.fn)return;Gt(e);let t=Hn;if(So(e,N&&N.running&&N.sources.has(e)?e.tValue:e.value,t),N&&!N.running&&N.sources.has(e))queueMicrotask(()=>{Ot(()=>{N&&(N.running=!0),ye=le=e,So(e,e.tValue,t),ye=le=null},!1)})}function So(e,t,r){let n,s=le,i=ye;ye=le=e;try{n=e.fn(t)}catch(o){if(e.pure)if(N&&N.running)e.tState=lt,e.tOwned&&e.tOwned.forEach(Gt),e.tOwned=void 0;else e.state=lt,e.owned&&e.owned.forEach(Gt),e.owned=null;return e.updatedAt=r+1,Zi(o)}finally{ye=i,le=s}if(!e.updatedAt||e.updatedAt<=r){if(e.updatedAt!=null&&"observers"in e)Po(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 $i(e,t,r,n=lt,s){let i={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)i.state=0,i.tState=n;if(le===null);else if(le!==Ro)if(N&&N.running&&le.pure)if(!le.tOwned)le.tOwned=[i];else le.tOwned.push(i);else if(!le.owned)le.owned=[i];else le.owned.push(i);if(hr&&i.fn){let o=i.fn,[a,l]=J(void 0,{equals:!1}),c=hr.factory(o,l);qe(()=>c.dispose());let u,d=()=>Ou(l).then(()=>{if(u)u.dispose(),u=void 0});i.fn=(A)=>{if(a(),N&&N.running){if(!u)u=hr.factory(o,d);return u.track(A)}return c.track(A)}}return i}function Wr(e){let t=N&&N.running;if((t?e.tState:e.state)===0)return;if((t?e.tState:e.state)===Kr)return jn(e);if(e.suspense&&ct(e.suspense.inFallback))return e.suspense.effects.push(e);let r=[e];while((e=e.owner)&&(!e.updatedAt||e.updatedAt<Hn)){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 s=e,i=r[n+1];while((s=s.owner)&&s!==i)if(N.disposed.has(s))return}if((t?e.tState:e.state)===lt)Jr(e);else if((t?e.tState:e.state)===Kr){let s=De;De=null,Ot(()=>jn(e,r[0]),!1),De=s}}}function Ot(e,t){if(De)return e();let r=!1;if(!t)De=[];if(Ze)r=!0;else Ze=[];Hn++;try{let n=e();return Pu(r),n}catch(n){if(!r)Ze=null;De=null,Zi(n)}}function Pu(e){if(De){if(Yr&&N&&N.running)Nu(De);else No(De);De=null}if(e)return;let t;if(N){if(!N.promises.size&&!N.queue.size){let{sources:n,disposed:s}=N;Ze.push.apply(Ze,N.effects),t=N.resolve;for(let i of Ze)"tState"in i&&(i.state=i.tState),delete i.tState;N=null,Ot(()=>{for(let i of s)Gt(i);for(let i of n){if(i.value=i.tValue,i.owned)for(let o=0,a=i.owned.length;o<a;o++)Gt(i.owned[o]);if(i.tOwned)i.owned=i.tOwned;delete i.tValue,delete i.tOwned,i.tState=0}Eo(!1)},!1)}else if(N.running){N.running=!1,N.effects.push.apply(N.effects,Ze),Ze=null,Eo(!0);return}}let r=Ze;if(Ze=null,r.length)Ot(()=>ko(r),!1);if(t)t()}function No(e){for(let t=0;t<e.length;t++)Wr(e[t])}function Nu(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),Ot(()=>{N.running=!0,Wr(r)},!1),N&&(N.running=!1)})}}function Du(e){let t,r=0;for(t=0;t<e.length;t++){let n=e[t];if(!n.user)Wr(n);else e[r++]=n}if(Ye.context){if(Ye.count){Ye.effects||(Ye.effects=[]),Ye.effects.push(...e.slice(0,r));return}Wi()}if(Ye.effects&&(Ye.done||!Ye.count))e=[...Ye.effects,...e],r+=Ye.effects.length,delete Ye.effects;for(t=0;t<r;t++)Wr(e[t])}function jn(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 s=e.sources[n];if(s.sources){let i=r?s.tState:s.state;if(i===lt){if(s!==t&&(!s.updatedAt||s.updatedAt<Hn))Wr(s)}else if(i===Kr)jn(s,t)}}}function Do(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)De.push(n);else Ze.push(n);n.observers&&Do(n)}}}function Gt(e){let t;if(e.sources)while(e.sources.length){let r=e.sources.pop(),n=e.sourceSlots.pop(),s=r.observers;if(s&&s.length){let i=s.pop(),o=r.observerSlots.pop();if(n<s.length)i.sourceSlots[o]=n,s[n]=i,r.observerSlots[n]=o}}if(e.tOwned){for(t=e.tOwned.length-1;t>=0;t--)Gt(e.tOwned[t]);delete e.tOwned}if(N&&N.running&&e.pure)Lo(e,!0);else if(e.owned){for(t=e.owned.length-1;t>=0;t--)Gt(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 Lo(e,t){if(!t)e.tState=0,N.disposed.add(e);if(e.owned)for(let r=0;r<e.owned.length;r++)Lo(e.owned[r])}function Lu(e){if(e instanceof Error)return e;return Error(typeof e==="string"?e:"Unknown error",{cause:e})}function Io(e,t,r){try{for(let n of t)n(e)}catch(n){Zi(n,r&&r.owner||null)}}function Zi(e,t=le){let r=Co&&t&&t.context&&t.context[Co],n=Lu(e);if(!r)throw n;if(Ze)Ze.push({fn(){Io(n,r,t)},state:lt});else Io(n,r,t)}function Ji(e){if(typeof e==="function"&&!e.length)return Ji(e());if(Array.isArray(e)){let t=[];for(let r=0;r<e.length;r++){let n=Ji(e[r]);Array.isArray(n)?t.push.apply(t,n):t.push(n)}return t}return e}function Mu(e,t){return function(n){let s;return yt(()=>s=ct(()=>(le.context={...le.context,[e]:n.value},Bo(()=>n.children))),void 0),s}}var Fu=Symbol("fallback");function xo(e){for(let t=0;t<e.length;t++)e[t]()}function Gu(e,t,r={}){let n=[],s=[],i=[],o=0,a=t.length>1?[]:null;return qe(()=>xo(i)),()=>{let l=e()||[],c=l.length,u,d;return l[Bu],ct(()=>{let m,g,f,p,v,y,S,_,b;if(c===0){if(o!==0)xo(i),i=[],n=[],s=[],o=0,a&&(a=[]);if(r.fallback)n=[Fu],s[0]=Jt((w)=>(i[0]=w,r.fallback())),o=1}else if(o===0){s=Array(c);for(d=0;d<c;d++)n[d]=l[d],s[d]=Jt(A);o=c}else{f=Array(c),p=Array(c),a&&(v=Array(c));for(y=0,S=Math.min(o,c);y<S&&n[y]===l[y];y++);for(S=o-1,_=c-1;S>=y&&_>=y&&n[S]===l[_];S--,_--)f[_]=s[S],p[_]=i[S],a&&(v[_]=a[S]);m=new Map,g=Array(_+1);for(d=_;d>=y;d--)b=l[d],u=m.get(b),g[d]=u===void 0?-1:u,m.set(b,d);for(u=y;u<=S;u++)if(b=n[u],d=m.get(b),d!==void 0&&d!==-1)f[d]=s[u],p[d]=i[u],a&&(v[d]=a[u]),d=g[d],m.set(b,d);else i[u]();for(d=y;d<c;d++)if(d in f){if(s[d]=f[d],i[d]=p[d],a)a[d]=v[d],a[d](d)}else s[d]=Jt(A);s=s.slice(0,o=c),n=l.slice(0)}return s});function A(m){if(i[d]=m,a){let[g,f]=J(d);return a[d]=f,t(l[d],g)}return t(l[d])}}}var Uu=!1;function Mo(e,t){if(Uu){if(Ye.context){let r=Ye.context;Wi(xu());let n=ct(()=>e(t||{}));return Wi(r),n}}return ct(()=>e(t||{}))}function Gn(){return!0}var ju={get(e,t,r){if(t===Yi)return r;return e.get(t)},has(e,t){if(t===Yi)return!0;return e.has(t)},set:Gn,deleteProperty:Gn,getOwnPropertyDescriptor(e,t){return{configurable:!0,enumerable:!0,get(){return e.get(t)},set:Gn,deleteProperty:Gn}},ownKeys(e){return e.keys()}};function Ki(e){return!(e=typeof e==="function"?e():e)?{}:e}function Hu(){for(let e=0,t=this.length;e<t;++e){let r=this[e]();if(r!==void 0)return r}}function Wn(...e){let t=!1;for(let o=0;o<e.length;o++){let a=e[o];t=t||!!a&&Yi in a,e[o]=typeof a==="function"?(t=!0,Y(a)):a}if(Tu&&t)return new Proxy({get(o){for(let a=e.length-1;a>=0;a--){let l=Ki(e[a])[o];if(l!==void 0)return l}},has(o){for(let a=e.length-1;a>=0;a--)if(o in Ki(e[a]))return!0;return!1},keys(){let o=[];for(let a=0;a<e.length;a++)o.push(...Object.keys(Ki(e[a])));return[...new Set(o)]}},ju);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:Hu.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 s={},i=Object.keys(n);for(let o=i.length-1;o>=0;o--){let a=i[o],l=n[a];if(l&&l.get)Object.defineProperty(s,a,l);else s[a]=l?l.value:void 0}return s}var Ku=(e)=>`Stale read from <${e}>.`;function wt(e){let t="fallback"in e&&{fallback:()=>e.fallback};return Y(Gu(()=>e.each,e.children,t||void 0))}function Le(e){let t=e.keyed,r=Y(()=>e.when,void 0,void 0),n=t?r:Y(r,void 0,{equals:(s,i)=>!s===!i});return Y(()=>{let s=n();if(s){let i=e.children;return typeof i==="function"&&i.length>0?ct(()=>i(t?s:()=>{if(!ct(n))throw Ku("Show");return r()})):i}return e.fallback},void 0,void 0)}import{BaseRenderable as na,createTextAttributes as yd,ImageRenderable as Qo,InputRenderable as es,InputRenderableEvents as Zr,isTextNodeRenderable as ss,isEditBufferRenderable as wd,parseColor as Jo,Renderable as _d,RootTextNodeRenderable as vd,ScrollBoxRenderable as Cd,SelectRenderable as $o,SelectRenderableEvents as ts,TabSelectRenderable as Zo,TabSelectRenderableEvents as rs,TextNodeRenderable as Ed,TextRenderable as ia}from"@opentui/core";var Xi,Wu=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]]),Fo=(Xi=String.fromCodePoint)!==null&&Xi!==void 0?Xi:(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 Go(e){var t;if(e>=55296&&e<=57343||e>1114111)return 65533;return(t=Wu.get(e))!==null&&t!==void 0?t:e}function Uo(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 s=0,i=0;s<r;s+=2){let o=t.charCodeAt(s),a=t.charCodeAt(s+1);n[i++]=o|a<<8}return n}var jo=Uo("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 Xe;(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"})(Xe||(Xe={}));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 Ho=32;function Vi(e){return e>=Se.ZERO&&e<=Se.NINE}function Yu(e){return e>=Se.UPPER_A&&e<=Se.UPPER_F||e>=Se.LOWER_A&&e<=Se.LOWER_F}function Qu(e){return e>=Se.UPPER_A&&e<=Se.UPPER_Z||e>=Se.LOWER_A&&e<=Se.LOWER_Z||Vi(e)}function Ju(e){return e===Se.EQUALS||Qu(e)}var Ge;(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"})(Ge||(Ge={}));var Pt;(function(e){e[e.Legacy=0]="Legacy",e[e.Strict=1]="Strict",e[e.Attribute=2]="Attribute"})(Pt||(Pt={}));class zi{constructor(e,t,r){this.decodeTree=e,this.emitCodePoint=t,this.errors=r,this.state=Ge.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=Ge.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(e,t){switch(this.state){case Ge.EntityStart:{if(e.charCodeAt(t)===Se.NUM)return this.state=Ge.NumericStart,this.consumed+=1,this.stateNumericStart(e,t+1);return this.state=Ge.NamedEntity,this.stateNamedEntity(e,t)}case Ge.NumericStart:return this.stateNumericStart(e,t);case Ge.NumericDecimal:return this.stateNumericDecimal(e,t);case Ge.NumericHex:return this.stateNumericHex(e,t);case Ge.NamedEntity:return this.stateNamedEntity(e,t)}}stateNumericStart(e,t){if(t>=e.length)return-1;if((e.charCodeAt(t)|Ho)===Se.LOWER_X)return this.state=Ge.NumericHex,this.consumed+=1,this.stateNumericHex(e,t+1);return this.state=Ge.NumericDecimal,this.stateNumericDecimal(e,t)}stateNumericHex(e,t){while(t<e.length){let r=e.charCodeAt(t);if(Vi(r)||Yu(r)){let n=r<=Se.NINE?r-Se.ZERO:(r|Ho)-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(Vi(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(Go(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],s=(n&Xe.VALUE_LENGTH)>>14;while(t<e.length){if(s===0&&(n&Xe.FLAG13)!==0){let o=(n&Xe.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let a=n&Xe.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],s=(n&Xe.VALUE_LENGTH)>>14}if(t>=e.length)break;let i=e.charCodeAt(t);if(i===Se.SEMI&&s!==0&&(n&Xe.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,s,this.consumed+this.excess);if(this.treeIndex=Zu(r,n,this.treeIndex+Math.max(1,s),i),this.treeIndex<0)return this.result===0||this.decodeMode===Pt.Attribute&&(s===0||Ju(i))?0:this.emitNotTerminatedNamedEntity();if(n=r[this.treeIndex],s=(n&Xe.VALUE_LENGTH)>>14,s!==0){if(i===Se.SEMI)return this.emitNamedEntityData(this.treeIndex,s,this.consumed+this.excess);if(this.decodeMode!==Pt.Strict&&(n&Xe.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]&Xe.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]&~(Xe.VALUE_LENGTH|Xe.FLAG13):n[e+1],r),t===3)this.emitCodePoint(n[e+2],r);return r}end(){var e;switch(this.state){case Ge.NamedEntity:return this.result!==0&&(this.decodeMode!==Pt.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case Ge.NumericDecimal:return this.emitNumericEntity(0,2);case Ge.NumericHex:return this.emitNumericEntity(0,3);case Ge.NumericStart:return(e=this.errors)===null||e===void 0||e.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case Ge.EntityStart:return 0}}}function $u(e){let t="",r=new zi(e,(n)=>t+=Fo(n));return function(s,i){let o=0,a=0;while((a=s.indexOf("&",a))>=0){t+=s.slice(o,a),r.startEntity(i);let c=r.write(s,a+1);if(c<0){o=a+r.end();break}o=a+c,a=c===0?o+1:o}let l=t+s.slice(o);return t="",l}}function Zu(e,t,r,n){let s=(t&Xe.BRANCH_LENGTH)>>7,i=t&Xe.JUMP_TABLE;if(s===0)return i!==0&&n===i?r:-1;if(i){let c=n-i;return c<0||c>=s?-1:e[r+c]-1}let o=s+1>>1,a=0,l=s-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 Xu=$u(jo);function $r(e){return Xu(e,Pt.Strict)}var Ko;(function(e){e[e.XML=0]="XML",e[e.HTML=1]="HTML"})(Ko||(Ko={}));var Wo;(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"})(Wo||(Wo={}));import{BaseRenderable as Od,isTextNodeRenderable as Pd,TextNodeRenderable as Nd,TextRenderable as Dd,Yoga as sa}from"@opentui/core";import{BoxRenderable as ep,RootRenderable as tp}from"@opentui/core";import{TimeToFirstDrawRenderable as Md}from"@opentui/core";import{createSlotRegistry as sp}from"@opentui/core";class Xr extends fd{_ctx;constructor(e,t){super(t);this._ctx=e}}class Qn extends Xr{constructor(e,t){super(null,e);if(t==="b"||t==="strong")this.attributes=(this.attributes||0)|qi.BOLD;else if(t==="i"||t==="em")this.attributes=(this.attributes||0)|qi.ITALIC;else if(t==="u")this.attributes=(this.attributes||0)|qi.UNDERLINE}}class ns extends Qn{constructor(e){super(e,"b")}}class is extends Qn{constructor(e){super(e,"i")}}class qo extends Qn{constructor(e){super(e,"u")}}class ea extends Xr{constructor(e,t){super(null,t);this.add()}add(){return super.add(`
|
|
7
|
+
`)}}class ta extends Xr{constructor(e,t){let r={...t,link:{url:t.href}};super(null,r)}}var md={box:nd,text:gd,input:ad,select:dd,textarea:Ad,ascii_font:rd,tab_select:hd,scrollbox:ud,code:id,diff:sd,line_number:ld,markdown:cd,image:od,span:Xr,strong:ns,b:ns,em:is,i:is,u:qo,br:ea,a:ta},ra={...md};function Nt(e){Object.assign(ra,e)}function pd(){return ra}var cs=To(),ft=()=>{let e=Qr(cs);if(!e)throw Error("No renderer found");return e},bd=(e)=>{let t=ft();$t(()=>{t.on("resize",e)}),qe(()=>{t.off("resize",e)})},gr=()=>{let e=ft(),[t,r]=J({width:e.width,height:e.height});return bd((s,i)=>{r({width:s,height:i})}),t},mr=(e,t)=>{let n=ft().keyInput;$t(()=>{if(n.on("keypress",e),t?.release)n.on("keyrelease",e)}),qe(()=>{if(n.off("keypress",e),t?.release)n.off("keyrelease",e)})};var Sd=(e)=>Y(()=>e());function Id({createElement:e,createTextNode:t,createDynamicTextNode:r,createSlotNode:n,isTextNode:s,replaceText:i,insertNode:o,removeNode:a,setProperty:l,getParentNode:c,getFirstChild:u,getNextSibling:d}){function A(_,b,w,C){if(w!==void 0&&!C)C=[];if(typeof b!=="function")return m(_,b,C,w);yt((B)=>m(_,b(),B,w),C)}function m(_,b,w,C,B){while(typeof w==="function")w=w();if(b===w)return w;let L=typeof b,P=C!==void 0;if(L==="string"||L==="number"){if(L==="number")b=b.toString();if(P){let x=w[0];if(x&&s(x))i(x,b);else x=r(b);w=p(_,w,C,x)}else if(w!==""&&typeof w==="string")i(u(_),w=b);else p(_,w,C,r(b)),w=b}else if(b==null||L==="boolean")w=p(_,w,C);else if(L==="function")return yt(()=>{let x=b();while(typeof x==="function")x=x();w=m(_,x,w,C)}),()=>w;else if(Array.isArray(b)){let x=[];if(g(x,b,B))return yt(()=>w=m(_,x,w,C,!0)),()=>w;if(x.length===0){let G=p(_,w,C);if(P)return w=G}else if(Array.isArray(w))if(w.length===0)v(_,x,C);else f(_,w,x);else if(w==null||w==="")v(_,x);else f(_,P&&w||[u(_)],x);w=x}else{if(Array.isArray(w)){if(P)return w=p(_,w,C,b);p(_,w,null,b)}else if(w==null||w===""||!u(_))o(_,b);else y(_,b,u(_));w=b}return w}function g(_,b,w){let C=!1;for(let B=0,L=b.length;B<L;B++){let P=b[B],x;if(P==null||P===!0||P===!1);else if(Array.isArray(P))C=g(_,P)||C;else if((x=typeof P)==="string"||x==="number")_.push(r(P));else if(x==="function")if(w){while(typeof P==="function")P=P();C=g(_,Array.isArray(P)?P:[P])||C}else _.push(P),C=!0;else _.push(P)}return C}function f(_,b,w){let C=w.length,B=b.length,L=C,P=0,x=0,G=d(b[B-1]),z=null;while(P<B||x<L){if(b[P]===w[x]){P++,x++;continue}while(b[B-1]===w[L-1])B--,L--;if(B===P){let W=L<C?x?d(w[x-1]):w[L-x]:G;while(x<L)o(_,w[x++],W)}else if(L===x)while(P<B){if(!z||!z.has(b[P]))a(_,b[P]);P++}else if(b[P]===w[L-1]&&w[x]===b[B-1]){let W=d(b[--B]);o(_,w[x++],d(b[P++])),o(_,w[--L],W),b[B]=w[L]}else{if(!z){z=new Map;let ee=x;while(ee<L)z.set(w[ee],ee++)}let W=z.get(b[P]);if(W!=null)if(x<W&&W<L){let ee=P,te=1,V;while(++ee<B&&ee<L){if((V=z.get(b[ee]))==null||V!==W+te)break;te++}if(te>W-x){let Te=b[P];while(x<W)o(_,w[x++],Te)}else y(_,w[x++],b[P++])}else P++;else a(_,b[P++])}}}function p(_,b,w,C){if(w===void 0){let L;while(L=u(_))a(_,L);return C&&o(_,C),C??""}let B=C||n();if(b.length){let L=!1;for(let P=b.length-1;P>=0;P--){let x=b[P];if(B!==x){let G=c(x)===_;if(!L&&!P)G?y(_,B,x):o(_,B,w);else G&&a(_,x)}else L=!0}}else o(_,B,w);return[B]}function v(_,b,w){for(let C=0,B=b.length;C<B;C++)o(_,b[C],w)}function y(_,b,w){o(_,b,w),a(_,w)}function S(_,b,w={},C){if(b||(b={}),!C)yt(()=>w.children=m(_,b.children,w.children));return yt(()=>b.ref&&b.ref(_)),yt(()=>{for(let B in b){if(B==="children"||B==="ref")continue;let L=b[B];if(L===w[B])continue;l(_,B,L,w[B]),w[B]=L}}),w}return{render(_,b){let w;return Jt((C)=>{w=C,A(b,_())}),w},insert:A,spread(_,b,w){if(typeof b==="function")yt((C)=>S(_,b(),C,w));else S(_,b,void 0,w)},createElement:e,createTextNode:t,insertNode:o,setProp(_,b,w,C){return l(_,b,w,C),w},mergeProps:Wn,effect:yt,memo:Sd,createComponent:Mo,use(_,b,w){return ct(()=>_(b,w))}}}function xd(e){let t=Id(e);return t.mergeProps=Wn,t}var Yn=new Map;function us(e){if(!Yn.has(e))Yn.set(e,0);let t=Yn.get(e)+1;return Yn.set(e,t),`${e}-${t}`}var Ue=(...e)=>{if(process.env.DEBUG)console.log("[Reconciler]",...e)};class Ar extends Ed{static fromString(e,t={}){let r=new Ar(t);return r.add(e),r}}var Me=(e)=>{if(!e)return;return e.id},os=(e)=>{let t;if(e instanceof ia)t=e.getTextChildren();else t=e.getChildren();return t};function kd(e,t,r){if(Ue("Inserting node:",Me(t),"into parent:",Me(e),"with anchor:",Me(r),t instanceof Ar),t instanceof fr)t.parent=e,t=t.getSlotChild(e);if(r&&r instanceof fr)r=r.getSlotChild(e);if(ss(t)){if(!(e instanceof ia)&&!ss(e))throw Error(`Orphan text error: "${t.toChunks().map((i)=>i.text).join("")}" must have a <text> as a parent: ${e.id} above ${t.id}`)}if(!(e instanceof na))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=os(e),s=n.indexOf(r);if(s===-1)Ue("[INSERT]","Could not find anchor",Me(e),Me(r),"[children]",...n.map((i)=>i.id));e.add(t,s)}function Rd(e,t){Ue("Removing node:",Me(t),"from parent:",Me(e));let r;if(t instanceof fr){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 na&&!t.parent){t.destroyRecursively();return}})}function Xo(e,t){Ue("Creating text node:",e);let r=us("text-node");if(typeof e==="number")e=e.toString();return Ar.fromString(t?$r(e):e,{id:r})}function Td(){let e=us("slot-node");return Ue("Creating slot node",e),new fr(e)}function Vo(e){Ue("Getting parent of node:",Me(e));let t=e.parent??void 0;if(t instanceof vd)t=t.textParent??void 0;let r=t?.parent?.parent?.parent;if(r instanceof Cd&&r.content===t)t=r;return t}var{render:Bd,effect:me,memo:ut,createComponent:Q,createElement:I,createTextNode:we,insertNode:R,insert:F,spread:Zm,setProp:h,mergeProps:Xm,use:Vm}=xd({createElement(e){Ue("Creating element:",e);let t=us(e),r=Qr(cs);if(!r)throw Error("No renderer found");let n=pd();if(!n[e])throw Error(`[Reconciler] Unknown component type: ${e}`);let s=new n[e](r,{id:t});if(s instanceof Qo)qe(()=>{s.source=void 0});return Ue("Element created with id:",t),s},createTextNode:(e)=>Xo(e,!0),createDynamicTextNode:(e)=>Xo(e,!1),createSlotNode:Td,replaceText(e,t){if(Ue("Replacing text:",t,"in node:",Me(e)),!(e instanceof Ar))return;e.replace(t,0)},setProperty(e,t,r,n){if(t.startsWith("on:")){let s=t.slice(3);if(r)e.on(s,r);if(n)e.off(s,n);return}if(ss(e)){if(t==="href"){e.link={url:r};return}if(t==="style"){e.attributes|=yd(r),e.fg=r.fg?Jo(r.fg):e.fg,e.bg=r.bg?Jo(r.bg):e.bg;return}return}switch(t){case"id":Ue("Id mapped",e.id,"=",r),e[t]=r;break;case"focused":if(!(e instanceof _d))return;if(r)e.focus();else e.blur();break;case"onChange":let s=void 0;if(e instanceof $o)s=ts.SELECTION_CHANGED;else if(e instanceof Zo)s=rs.SELECTION_CHANGED;else if(e instanceof es)s=Zr.CHANGE;if(!s)break;if(r)e.on(s,r);if(n)e.off(s,n);break;case"onInput":if(e instanceof es){if(r)e.on(Zr.INPUT,r);if(n)e.off(Zr.INPUT,n)}break;case"onSubmit":if(e instanceof es){if(r)e.on(Zr.ENTER,r);if(n)e.off(Zr.ENTER,n)}else e[t]=r;break;case"onSelect":if(e instanceof $o){if(r)e.on(ts.ITEM_SELECTED,r);if(n)e.off(ts.ITEM_SELECTED,n)}else if(e instanceof Zo){if(r)e.on(rs.ITEM_SELECTED,r);if(n)e.off(rs.ITEM_SELECTED,n)}break;case"style":let i=r??{},o=n??{};if(wd(e)&&o.selectionOccupancy&&!i.selectionOccupancy)e.selectionOccupancy=void 0;if(e instanceof Qo)for(let a in o){if(Object.prototype.hasOwnProperty.call(i,a))continue;if(a!=="fit"&&a!=="protocol")continue;e[a]=void 0}for(let a in i){let l=i[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 Ar},insertNode:kd,removeNode:Rd,getParentNode:Vo,getFirstChild(e){Ue("Getting first child of node:",Me(e));let t=os(e)[0];if(!t){Ue("No first child found for node:",Me(e));return}return Ue("First child found:",Me(t),"for node:",Me(e)),t},getNextSibling(e){Ue("Getting next sibling of node:",Me(e));let t=Vo(e);if(!t){Ue("No parent found for node:",Me(e));return}if(e instanceof fr){let i=e.getSlotChildForRemoval(t);if(i)e=i}let r=os(t),n=r.indexOf(e);if(n===-1||n===r.length-1){Ue("No next sibling found for node:",Me(e));return}let s=r[n+1];if(!s){Ue("Next sibling is null for node:",Me(e));return}return Ue("Next sibling found:",Me(s),"for node:",Me(e)),s}});function zo(e){return e?.getLayoutNode?.()?.constructor}function Ld(e){return e?.create?.()??sa.default.Node.create()}class ds extends Od{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 as extends Nd{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 ls extends ds{yogaNode;slotParent;destroyed=!1;yogaNodeConstructor;yogaNodeFreed=!1;constructor(e,t,r){super(e);this._visible=!1,this.slotParent=t,this.yogaNodeConstructor=zo(r),this.yogaNode=Ld(this.yogaNodeConstructor),this.yogaNode.setDisplay(sa.Display.None)}getLayoutNode(){return this.yogaNode}updateFromLayout(){}updateLayout(){}onRemove(){}isCompatibleWith(e){return this.yogaNodeConstructor===zo(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 fr extends ds{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 Dd}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 s=this.getTextNodeForParent(e);if(s)return s;let i=this.takeReusableTextNode(e);if(i)return i;this.disposeDetachedIncompatibleLayoutNodes(e);let o=new as(`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 ls(`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 as&&this.getTextNodeForParent(e)===t)this.textNodesByParent.delete(e),t.disposeWithoutSlotCascade();if(r&&t instanceof ls&&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()}}Nt({time_to_first_draw:Md});var Fd=(e,t)=>{let r,n=!1,s=!1,i=!0,o=!1,a=e.destroy.bind(e),l=()=>{if(s)return;if(!r){n=!0;return}s=!0,r()};e.once("destroy",l),e.destroy=()=>{if(i){o=!0;return}a()};try{r=Bd(()=>Q(cs.Provider,{get value(){return e},get children(){return Q(t,{})}}),e.root)}finally{i=!1,e.destroy=a}if(n)l();if(o)a()},hs=async(e,t={})=>{let r=t instanceof qu?t:await ed({...t,onDestroy:()=>{t.onDestroy?.()}});td.attach(r),Fd(r,e)};var oa={tier0:32,tier1:64,tier2:64};var pr=1;function ot(e){if(typeof e!=="number"||!Number.isFinite(e))return 1;return Math.max(1,Math.min(8,Math.round(e)))}function As(e,t){let r=ot(e);return{primary:r,mirrored:t?r-1:0}}var fs=64;var dp=fs*fs;var Ap=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 gs={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 jd=["positionX","positionY","positionZ","rotationX","rotationY","rotationZ","scaleX","scaleY","scaleZ"];var Hd=new Set(jd);function br(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function aa(e,t){if(!br(e))return[`${t} must be an object`];let r=[];for(let[n,s]of Object.entries(e)){if(!Hd.has(n)){r.push(`${t} uses unknown property ${n}`);continue}if(!Array.isArray(s)||s.length<2){r.push(`${t}.${n} must contain at least two keyframes`);continue}let i=-1;for(let[o,a]of s.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<=i)r.push(`${t}.${n} keyframe times must increase from 0 to 1`);i=l}if(s[0]?.[0]!==0||s.at(-1)?.[0]!==1)r.push(`${t}.${n} must start at 0 and end at 1`)}return r}function ca(e){if(!br(e))return["Animation catalog must be an object"];let t=[];if(e.version!==1)t.push("Animation catalog version must be 1");if(!br(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(!br(e.clips))return t.push("Animation catalog clips must be an object"),t;for(let[r,n]of Object.entries(e.clips)){let s=`Clip ${r}`;if(!br(n)){t.push(`${s} must be an object`);continue}if(typeof n.duration!=="number"||!Number.isFinite(n.duration)||n.duration<=0)t.push(`${s} must have a positive duration`);if(typeof n.loop!=="boolean")t.push(`${s} must declare whether it loops`);if(n.model===void 0)t.push(`${s} must include a model animation track`);else t.push(...aa(n.model,`${s}.model`));if(n.roles!==void 0)if(!br(n.roles))t.push(`${s}.roles must be an object`);else for(let[i,o]of Object.entries(n.roles))t.push(...aa(o,`${s}.roles.${i}`))}return t}var la=ca(gs);if(la.length>0)throw Error(`Invalid character animation catalog:
|
|
8
|
+
${la.join(`
|
|
9
|
+
`)}`);var Kd=gs,Wd=["jump","frontFlip","horseWalk","swim"],Yd=Object.keys(Kd.clips).filter((e)=>!Wd.includes(e));var da=["top","side","bottom"],ha=["left","right","bottom","top","back","front"],Aa=["humanoid","female","pig","robot","dog","cat","horse","bird","octopus"],Jn=["leftLeg","rightLeg","leftArm","rightArm","leftLegFoot","rightLegFoot","leftArmFoot","rightArmFoot","leftSleeve","rightSleeve"],fa=["leftWing","rightWing","carried","muzzle"];var Sp=new Set(Aa),Ip=new Set([...Jn,...fa]),xp=new Set(da),kp=new Set(ha),Rp=["cree","per"].join(""),Vr=["H","oof"].join(""),Tp=new Map([[`leftLeg${Vr}`,"leftLegFoot"],[`rightLeg${Vr}`,"rightLegFoot"],[`leftArm${Vr}`,"leftArmFoot"],[`rightArm${Vr}`,"rightArmFoot"]]),Bp=["horse",Vr].join("");var $d=Math.PI*2;var Dp=new Set(Jn);var ga={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 ma(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 ms(e,t){let r=ma(t);return e.filter((n)=>r.has(n))}var Xd=/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,Vd=/^([+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?)(deg|grad|rad|turn)?$/i,Zn=(e,t,r)=>Math.max(t,Math.min(r,e));function Xn(e){let t=e.trim(),r=t.endsWith("%"),n=r?t.slice(0,-1):t;if(!Xd.test(n))return null;let s=Number(n);return Number.isFinite(s)?{value:s,percentage:r}:null}function ba(e){if(e===null)return 1;let t=Xn(e);if(!t)return null;return Zn(t.percentage?t.value/100:t.value,0,1)}function ya(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 s=n.split("/");if(s.length>2)return null;let i=s[0].trim().split(/\s+/),o=s.length===2?s[1].trim():null;return i.length===3&&(s.length===1||o)?{channels:i,alpha:o}:null}function zd(e){let t=Vd.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=ya(e,["hsl","hsla"]);if(!t)return null;let r=zd(t.channels[0]),n=Xn(t.channels[1]),s=Xn(t.channels[2]),i=ba(t.alpha);if(r===null||!n||!s||i===null)return null;return[r,Zn(n.value,0,100),Zn(s.value,0,100),i]}function wa(e,t,r){let n=t/100,s=r/100,i=(1-Math.abs(2*s-1))*n,o=(e%360+360)%360/60,a=i*(1-Math.abs(o%2-1)),l=0,c=0,u=0;if(o<1)[l,c,u]=[i,a,0];else if(o<2)[l,c,u]=[a,i,0];else if(o<3)[l,c,u]=[0,i,a];else if(o<4)[l,c,u]=[0,a,i];else if(o<5)[l,c,u]=[a,0,i];else[l,c,u]=[i,0,a];let d=s-i/2;return{r:Math.round((l+d)*255),g:Math.round((c+d)*255),b:Math.round((u+d)*255)}}function _a({r:e,g:t,b:r}){let n=e/255,s=t/255,i=r/255,o=Math.max(n,s,i),a=Math.min(n,s,i),l=o-a,c=(o+a)/2;if(l===0)return{h:0,s:0,l:c*100};let u;if(o===n)u=((s-i)/l+(s<i?6:0))*60;else if(o===s)u=((i-n)/l+2)*60;else u=((n-s)/l+4)*60;return{h:u,s:l/(1-Math.abs(2*c-1))*100,l:c*100}}function qr({r:e,g:t,b:r}){let n=(s)=>Math.round(Math.max(0,Math.min(255,s))).toString(16).padStart(2,"0");return`#${n(e)}${n(t)}${n(r)}`}var pa=(e,t)=>{let r=Math.max(-100,Math.min(100,t))/100;return r>=0?e+(100-e)*r:e*(1+r)};var $n=(e)=>{let t=Math.round(e*1000)/1000;return String(Object.is(t,-0)?0:t)};function ps(e,t,r){if(t===0&&r===0)return e;let n=zr(e),s=n?null:Xt(e);if(!n&&!s)return e;let i=n?{h:n[0],s:n[1],l:n[2]}:_a(s),o=i.s===0?0:pa(i.s,t),a=pa(i.l,r),l=n?.[3]??s?.a??1;return`hsla(${$n(i.h)}, ${$n(o)}%, ${$n(a)}%, ${$n(l)})`}function nt(e){return typeof e==="number"&&Number.isInteger(e)&&e>=-100&&e<=100?e:0}function en(e,t,r){let n=nt(t),s=nt(r);if(n===0&&s===0)return e;return e.map((i)=>ps(i,n,s))}function Zt(e,t,r){if(t===0&&r===0)return e;let n=new Map,s=(i)=>{let o=n.get(i);if(o===void 0)o=ps(i,t,r),n.set(i,o);return o};return e.map((i)=>i.map((o)=>({...o,color:o.color===null?null:s(o.color)})))}function qd(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((s)=>s+s).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 eh(e){let t=ya(e,["rgb","rgba"]);if(!t)return null;let r=t.channels.map(Xn),n=ba(t.alpha);if(r.some((l)=>l===null)||n===null)return null;let[s,i,o]=r,a=(l)=>Zn(l.percentage?l.value/100*255:l.value,0,255);return{r:a(s),g:a(i),b:a(o),a:n}}function Xt(e){let t=e.trim(),r=qd(t);if(r)return r;let n=zr(t);if(n)return{...wa(n[0],n[1],n[2]),a:n[3]};let s=eh(t);if(s)return s;let i=ga[t.toLowerCase()];if(!i)return null;return{r:i[0],g:i[1],b:i[2],a:i[3]??1}}function bs(e){let t=Xt(e);return t?{r:t.r,g:t.g,b:t.b}:null}var Vn=1;var ys=30;function tn(e){return e.trim().slice(0,30)}var zn=0.16,ws=0.1;var rn=0.15,_s=0.12;var nn=0.25;function yr(...e){let t=Math.max(0,Math.min(...e));return Math.max(0.22,t*0.5)}var Ie=64,vs=Ie*Ie;var Cs=64,Ca=512,a0=Ca*Ca,sh=128,Ia=65535,oh=20,ah=/^#(?:[\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/i,lh=/^[a-z]+$/i,ch=/^(?:rgb|rgba|hsl|hsla)\([\d\s.,%+\-/e]*(?:(?:deg|grad|rad|turn)[\d\s.,%+\-/e]*)?\)$/i;function xa(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function wr(e,t,r){return Number.isInteger(e)&&Number(e)>=t&&Number(e)<=r}function dt(e){if(typeof e!=="string"||e.length===0||e.length>sh)return!1;return ah.test(e)||lh.test(e)||ch.test(e)}function uh(e){return xa(e)&&e.v===2}function Ea(e,t){return e===void 0||Array.isArray(e)&&e.length<=t&&e.every((r)=>wr(r,0,t-1))}function Sa(e,t,r){return e===void 0||Array.isArray(e)&&e.length===t&&e.every((n)=>wr(n,0,r))}function dh(e,t,r){let{w:n,h:s,palette:i,cells:o,activeNoColor:a,tiles:l,depths:c,mirrorZ:u}=e;if(!wr(n,0,t)||!wr(s,0,t))return!1;let d=n*s;return d<=r&&Array.isArray(i)&&i.length<=d&&i.every(dt)&&Array.isArray(o)&&o.length===d&&o.every((A)=>wr(A,0,i.length))&&Ea(a,d)&&Sa(l,d,Ia+1)&&Sa(c,d,oh)&&Ea(u,d)}function hh(e){if(!xa(e)||typeof e.active!=="boolean")return!1;if(e.color!==null&&!dt(e.color))return!1;if(e.tileIndex!==void 0&&e.tileIndex!==null&&!wr(e.tileIndex,0,Ia))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 Ah(e){if(e.length>Ie)return null;let t=0,r=[];for(let n of e){if(!Array.isArray(n)||n.length>Ie)return null;if(t+=n.length,t>vs||!n.every(hh))return null;r.push(n.map((s)=>({active:s.active,color:s.color,...s.tileIndex!=null?{tileIndex:s.tileIndex}:{},...ot(s.depth)>pr?{depth:ot(s.depth)}:{},...s.mirrorZ?{mirrorZ:!0}:{}})))}return r}function _r(e){let t=e.length,r=t>0?e[0].length:0,n=[],s=new Map,i=Array(r*t).fill(0),o=[],a=null,l=null,c=[];for(let d=0;d<t;d++){let A=e[d];for(let m=0;m<r;m++){let g=A?.[m],f=d*r+m;if(!g)continue;if(g.color){let v=s.get(g.color);if(v===void 0)n.push(g.color),v=n.length,s.set(g.color,v);i[f]=v}else if(g.active)o.push(f);if(g.tileIndex!=null)a??=Array(r*t).fill(0),a[f]=g.tileIndex+1;let p=ot(g.depth);if(p>pr)l??=Array(r*t).fill(0),l[f]=p;if(g.mirrorZ)c.push(f)}}let u={v:2,w:r,h:t,palette:n,cells:i};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(uh(e))return dh(e,Ie,vs)?fh(e):[];return Array.isArray(e)?Ah(e)??[]:[]}function fh(e){let{w:t,h:r,palette:n,cells:s,activeNoColor:i,tiles:o,depths:a}=e,l=i?new Set(i):null,c=e.mirrorZ?new Set(e.mirrorZ):null,u=Array(r);for(let d=0;d<r;d++){let A=Array(t);for(let m=0;m<t;m++){let g=d*t+m,f=s[g];if(f>0)A[m]={active:!0,color:n[f-1]??null};else if(l?.has(g))A[m]={active:!0,color:null};else A[m]={active:!1,color:null};let p=o?.[g];if(p)A[m].tileIndex=p-1;let v=ot(a?.[g]);if(v>pr)A[m].depth=v;if(c?.has(g))A[m].mirrorZ=!0}u[d]=A}return u}var gh={top:0,side:1,bottom:2};var mh=/^data:image\/(?:png|gif|webp);base64,[a-z\d+/=]+$/i;var ph=/^[\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 Es(e,t){return Number.isInteger(e)&&Number(e)>0&&Number(e)<=t}function bh(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 yh(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 Ss(e){if(!e||e.v!==2&&e.v!==3)return!1;if(!bh(e.name)||!Es(e.tileSize,64)||!Es(e.cols,256)||!Es(e.rows,256))return!1;if(e.faceLayout!==void 0&&e.faceLayout!=="top-side-bottom")return!1;if(!yh(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 wh(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"||!ph.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 Is(e){if(!Ss(e))return null;if(e.v===2)return e.imageDataUrl.length<=16777216&&mh.test(e.imageDataUrl)?e.imageDataUrl:null;if(e.v===3)return wh(e.url,e.path);return null}function on(e,t,r="top"){if(!Ss(e))return null;if(!Number.isInteger(t)||t<0||t>=e.cols*e.rows)return null;let n=e.faceLayout?3:1,s=e.faceLayout?gh[r]:0,i=e.cols*e.tileSize;return{sx:s*i+t%e.cols*e.tileSize,sy:Math.floor(t/e.cols)*e.tileSize,tileSize:e.tileSize,sheetW:i*n,sheetH:e.rows*e.tileSize}}function xs(e){if(!Ss(e))return null;return{width:e.cols*e.tileSize*(e.faceLayout?3:1),height:e.rows*e.tileSize}}function _h(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},an={corners:[[0,1,1],[0,1,0],[1,1,0],[1,1,1]],shade:0.97},vr={corners:[[1,0,1],[1,0,0],[1,1,0],[1,1,1]],shade:0.94},zt=0.5,vh=0.75,Ch="rgba(0, 0, 0, 0.16)",Eh=0.92,Sh="#92929a";function Ih(e){if(!Number.isFinite(e))return zt;return Math.max(0,Math.min(1,e))}function ka(e,t){if(t<zt){let n=t/zt,s=e*vh;return s+(e-s)*n}let r=(t-zt)/(1-zt);return e+(1-e)*r}function ce(e){return e.toFixed(2)}function _t(e){return e.replaceAll("&","&").replaceAll('"',""").replaceAll("'","'").replaceAll("<","<").replaceAll(">",">")}function Ra(e){return`${ce(e[0])},${ce(e[1])}`}function xh([e,t]){let r=Ra(e),n=Ra(t);return r<n?`${r} ${n}`:`${n} ${r}`}function Ta(e,t){return`<polygon points="${e.map(([n,s])=>`${ce(n)},${ce(s)}`).join(" ")}" fill="${_t(t)}"/>`}function Ba(e,t,r){let n=t[0]-e[0],s=t[1]-e[1],i=Math.hypot(n,s)||1,o=Math.min(r,i/2)/i;return[e[0]+n*o,e[1]+s*o]}function kh(e,t){let r=e.length,n="";for(let s=0;s<r;s++){let i=e[s],o=e[(s-1+r)%r],a=e[(s+1)%r],l=Ba(i,o,t),c=Ba(i,a,t);n+=`${s===0?"M":"L"}${ce(l[0])},${ce(l[1])}`,n+=`Q${ce(i[0])},${ce(i[1])} ${ce(c[0])},${ce(c[1])}`}return`${n}Z`}function Oa(e,t,r,n){return`<path d="${e}" fill="${_t(t)}" stroke="${_t(r)}" stroke-width="${ce(n)}" stroke-linejoin="round"/>`}function Rh(e,t){if(e.length===0)return"";return`<path d="${e.map(([n,s])=>`M${ce(n[0])},${ce(n[1])}L${ce(s[0])},${ce(s[1])}`).join("")}" fill="none" stroke="${_t(t)}" stroke-width="1" stroke-linejoin="round" vector-effect="non-scaling-stroke"/>`}function ks(e){let{grid:t,numCols:r,numRows:n,scale:s=16,showGridLines:i=!1,sideLighting:o=zt,cellGroups:a=!1,tileset:l=null,tilesetImageId:c,embedTilesetImage:u=!0,blockStyle:d="normal"}=e,A=Number.isFinite(s)&&s>0?Math.min(s,1024):16,m=i&&d!=="jelly"?Ch:void 0,g=Ih(o),f=Is(l),p=l&&f?l:null,v=xs(p),y=v?.width??0,S=v?.height??0,_=f&&c&&/^[a-z_][\w:.-]{0,127}$/i.test(c)?c:null,b=f?_??_h(f):"",w=u||!_,C=t.slice(0,Ie),B=Math.min(Number.isInteger(n)&&n>0?n:0,C.length,Ie),L=C.reduce((k,j)=>Math.max(k,Array.isArray(j)?j.length:0),0),P=Math.min(Number.isInteger(r)&&r>0?r:0,L,Ie),x=A,G=A/Math.sqrt(3),z=A*2/Math.sqrt(3),W=d==="jelly"?x*zn:0,ee=(k)=>k?.tileIndex!=null?on(p,k.tileIndex):null,te=(k)=>{if(dt(k?.color))return k.color;return ee(k)?Sh:null},V=(k,j,T)=>[(k-j)*x,(k+j)*G-T*z],Te=(k,j)=>{let T=t[j]?.[k];return T?.active&&te(T)?ot(T.depth):0},Be=[];for(let k=0;k<B;k++)for(let j=0;j<P;j++){let T=t[k]?.[j],O=te(T);if(T?.active&&O)Be.push({x:j,y:k,color:O,tileIndex:T.tileIndex??null,depth:ot(T.depth),mirrorZ:!!T.mirrorZ})}if(Be.length===0)return'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 0 0"/>';Be.sort((k,j)=>k.x+k.y-(j.x+j.y)||k.depth-j.depth);let Z=[],H=1/0,Re=-1/0,pe=1/0,D=-1/0,q=!1,ie=ka(vr.shade,g),ae=ka(an.shade,g),ze=(k)=>k===Vt?k.shade:k===vr?ie:ae,Ae=(k,j)=>{if(k<H)H=k;if(k>Re)Re=k;if(j<pe)pe=j;if(j>D)D=j};for(let{x:k,y:j,color:T,tileIndex:O,depth:se,mirrorZ:de}of Be){let ge=zr(T),Ce=[],Oe=[],{primary:ne,mirrored:bt}=As(se,de),Ke=(he)=>ge?`hsla(${ge[0]}, ${ge[1]}%, ${Math.max(0,Math.min(100,ge[2]*he))}%, ${ge[3]})`:T,At=(he,_e=0,Pe=ne)=>he.corners.map(([Ee,fe,oe])=>V(k+Ee,j+fe,oe===0?_e:Pe)),Ur=(he,_e=0,Pe=ne)=>{let Ee=At(he,_e,Pe);if(W>0){let fe=ze(he),oe=Ke(fe),ue=kh(Ee,W),We=he===Vt?Ke(Math.min(1.18,fe+0.13)):Ke(fe*Eh);Ce.push(Oa(ue,oe,oe,W),Oa(ue,"none",We,W*0.3))}else Ce.push(Ta(Ee,Ke(ze(he))));for(let[fe,oe]of Ee)Ae(fe,oe)},Rt=de?-bt:Te(k+1,j),X=de?-bt:Te(k,j+1),Ft=a&&!de?0:Rt,Tt=a&&!de?0:X,Qt=a||de||Ft<ne,jr=a||de||Tt<ne;if(Qt)Ur(vr,Ft,ne);if(jr)Ur(an,Tt,ne);if(Ur(Vt,ne,ne),m){let he=new Set,_e=(oe,ue)=>{let We=xh([oe,ue]);if(he.has(We))return;he.add(We),Oe.push([oe,ue])},Pe=(oe)=>{for(let ue=0;ue<oe.length;ue++)_e(oe[ue],oe[(ue+1)%oe.length])},Ee=(oe,ue)=>{let[We,$e]=oe.corners.filter(([,,Ne])=>Ne===0);for(let Ne=Math.floor(ue)+1;Ne<ne;Ne++)_e(V(k+We[0],j+We[1],Ne),V(k+$e[0],j+$e[1],Ne))},fe=At(Vt,ne,ne);if(_e(fe[0],fe[1]),Te(k+1,j)!==ne)_e(fe[1],fe[2]);if(Te(k,j+1)!==ne)_e(fe[2],fe[3]);if(_e(fe[3],fe[0]),de||Rt<ne)Pe(At(vr,Rt,ne)),Ee(vr,Rt);if(de||X<ne)Pe(At(an,X,ne)),Ee(an,X)}let Hr=O==null?null:on(p,O);if(Hr){q=!0;let he=(Ee,fe,oe,ue,We,$e,Ne,tt)=>{let rt=on(p,O,Ee);if(!rt)return;let Bt=1-tt;Ce.push(`<g transform="matrix(${fe} ${oe} ${ue} ${We} ${ce($e)} ${ce(Ne)})"><svg x="0" y="0" width="1" height="1" viewBox="${rt.sx} ${rt.sy} ${rt.tileSize} ${rt.tileSize}" preserveAspectRatio="none"><use href="#${b}" xlink:href="#${b}"/></svg>`+(Bt>0?`<rect x="0" y="0" width="1" height="1" fill="#000" opacity="${Bt.toFixed(2)}"/>`:"")+"</g>")};if(Qt){let[Ee,fe]=V(k+1,j,ne);he("side",-x,G,0,z*(ne-Ft),Ee,fe,ze(vr))}if(jr){let[Ee,fe]=V(k,j+1,ne);he("side",x,G,0,z*(ne-Tt),Ee,fe,ze(an))}let[_e,Pe]=V(k,j,ne);he("top",x,G,-x,G,_e,Pe,Vt.shade)}if(m)Ce.push(Rh(Oe,m));if(d!=="normal"&&!Hr){if(d==="lego"){let he=Math.SQRT2*rn*x,_e=Math.SQRT2*rn*G,Pe=Ke(ie),Ee=Ke(Vt.shade),fe=[[-1,-1],[-1,1],[1,-1],[1,1]];for(let[oe,ue]of fe){let We=k+0.5+oe*nn,$e=j+0.5+ue*nn,[Ne,tt]=V(We,$e,ne),[,rt]=V(We,$e,ne+_s);Ae(Ne-he,tt+_e),Ae(Ne+he,rt-_e);let Bt='shape-rendering="geometricPrecision"';Ce.push(`<ellipse cx="${ce(Ne)}" cy="${ce(tt)}" rx="${ce(he)}" ry="${ce(_e)}" fill="${_t(Pe)}" ${Bt}/>`,`<rect x="${ce(Ne-he)}" y="${ce(rt)}" width="${ce(he*2)}" height="${ce(tt-rt)}" fill="${_t(Pe)}" ${Bt}/>`,`<ellipse cx="${ce(Ne)}" cy="${ce(rt)}" rx="${ce(he)}" ry="${ce(_e)}" fill="${_t(Ee)}" ${Bt}/>`)}}else if(d==="voxel"){let he=(oe,ue,We,$e,Ne,tt)=>{let rt=(Bt,gu)=>{for(let[mu,pu]of Bt)Ae(mu,pu);Ce.push(Ta(Bt,Ke(gu)))};rt([V(ue,We,tt),V(ue,We,Ne),V(ue,$e,Ne),V(ue,$e,tt)],ie),rt([V(oe,$e,tt),V(oe,$e,Ne),V(ue,$e,Ne),V(ue,$e,tt)],ae),rt([V(oe,We,tt),V(ue,We,tt),V(ue,$e,tt),V(oe,$e,tt)],Vt.shade)},_e=ws,Pe=yr(1,1),Ee=de||Rt<ne?Rt:null,fe=de||X<ne?X:null;if(he(k+0.5-Pe/2,k+0.5+Pe/2,j+0.5-Pe/2,j+0.5+Pe/2,ne,ne+_e),Ee!==null){let oe=yr(1,ne-Ee),ue=(ne+Ee)/2;he(k+1,k+1+_e,j+0.5-oe/2,j+0.5+oe/2,ue-oe/2,ue+oe/2)}if(fe!==null){let oe=yr(1,ne-fe),ue=(ne+fe)/2;he(k+0.5-oe/2,k+0.5+oe/2,j+1,j+1+_e,ue-oe/2,ue+oe/2)}}}if(a)Z.push(`<g data-color="${_t(T)}">${Ce.join("")}</g>`);else Z.push(...Ce)}let ve=2+W/2,et=H-ve,Qe=pe-ve,Je=Re-H+ve*2,re=D-pe+ve*2,kt=q&&p&&f&&w?`<defs><image id="${b}" href="${_t(f)}" xlink:href="${_t(f)}" x="0" y="0" width="${y}" height="${S}" style="image-rendering:pixelated"/></defs>`:"";return[`<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="${ce(et)} ${ce(Qe)} ${ce(Je)} ${ce(re)}" shape-rendering="crispEdges">`,kt,...Z,"</svg>"].join("")}var Th="hsla(278, 100%, 70%, 1)",Bh=/hsla\(278, 100%, ([\d.]+)%, 1\)/g,ln=(e)=>ks({grid:[[{active:!0,color:Th}]],numCols:1,numRows:1,blockStyle:e,sideLighting:0.15}).replaceAll(Bh,"hsl(var(--block-style-icon-hs, 278 100%) $1% / 1)"),Oh=[{style:"normal",label:"Normal",icon:ln("normal")},{style:"voxel",label:"Voxel",icon:ln("voxel")},{style:"lego",label:"Lego",icon:ln("lego")},{style:"jelly",label:"Jelly",icon:ln("jelly")}];var it=[{name:"Classic",colors:["hsla(278, 100%, 50%, 1)","hsla(278, 100%, 16%, 1)","hsla(278, 100%, 80%, 1)","hsla(306, 100%, 50%, 1)","hsla(28, 100%, 60%, 1)","hsla(0, 80%, 60%, 1)","hsla(278, 60%, 35%, 1)","hsla(306, 100%, 80%, 1)","hsla(306, 80%, 30%, 1)","hsla(28, 100%, 80%, 1)"]},{name:"Super Mario",colors:["hsla(218, 100%, 68%, 1)","hsla(0, 85%, 55%, 1)","hsla(225, 85%, 45%, 1)","hsla(28, 100%, 80%, 1)","hsla(22, 60%, 32%, 1)","hsla(120, 70%, 40%, 1)","hsla(45, 100%, 55%, 1)","hsla(0, 0%, 100%, 1)","hsla(0, 0%, 8%, 1)","hsla(22, 45%, 22%, 1)"]},{name:"Pac-Man",colors:["hsla(60, 100%, 50%, 1)","hsla(240, 100%, 56%, 1)","hsla(0, 100%, 50%, 1)","hsla(300, 100%, 86%, 1)","hsla(180, 100%, 50%, 1)","hsla(32, 100%, 66%, 1)","hsla(0, 0%, 100%, 1)","hsla(0, 0%, 5%, 1)","hsla(240, 100%, 25%, 1)","hsla(60, 100%, 80%, 1)"]},{name:"Grayscale",colors:["hsla(0, 0%, 98%, 1)","hsla(0, 0%, 92%, 1)","hsla(0, 0%, 86%, 1)","hsla(0, 0%, 80%, 1)","hsla(0, 0%, 74%, 1)","hsla(0, 0%, 68%, 1)","hsla(0, 0%, 62%, 1)","hsla(0, 0%, 56%, 1)","hsla(0, 0%, 50%, 1)","hsla(0, 0%, 44%, 1)"]},{name:"Sunset",colors:["hsla(45, 100%, 70%, 1)","hsla(28, 100%, 60%, 1)","hsla(12, 90%, 55%, 1)","hsla(350, 80%, 55%, 1)","hsla(320, 60%, 45%, 1)","hsla(280, 45%, 25%, 1)","hsla(50, 100%, 88%, 1)","hsla(38, 100%, 78%, 1)","hsla(20, 100%, 68%, 1)","hsla(5, 85%, 45%, 1)"]},{name:"Ocean",colors:["hsla(180, 70%, 80%, 1)","hsla(190, 75%, 60%, 1)","hsla(205, 75%, 50%, 1)","hsla(215, 70%, 40%, 1)","hsla(225, 65%, 28%, 1)","hsla(235, 55%, 15%, 1)","hsla(175, 60%, 92%, 1)","hsla(185, 70%, 70%, 1)","hsla(195, 75%, 55%, 1)","hsla(200, 70%, 45%, 1)"]},{name:"Pastel",colors:["hsla(350, 100%, 88%, 1)","hsla(30, 100%, 85%, 1)","hsla(55, 85%, 82%, 1)","hsla(135, 60%, 82%, 1)","hsla(200, 75%, 85%, 1)","hsla(275, 70%, 85%, 1)","hsla(15, 100%, 86%, 1)","hsla(45, 100%, 85%, 1)","hsla(90, 55%, 82%, 1)","hsla(160, 55%, 82%, 1)"]},{name:"Gameboy",colors:["hsla(85, 60%, 85%, 1)","hsla(88, 58%, 78%, 1)","hsla(90, 56%, 72%, 1)","hsla(93, 55%, 66%, 1)","hsla(95, 55%, 60%, 1)","hsla(98, 53%, 54%, 1)","hsla(102, 52%, 48%, 1)","hsla(105, 51%, 42%, 1)","hsla(110, 50%, 35%, 1)","hsla(113, 52%, 30%, 1)"]},{name:"Neon",colors:["hsla(320, 100%, 60%, 1)","hsla(180, 100%, 55%, 1)","hsla(60, 100%, 60%, 1)","hsla(270, 100%, 65%, 1)","hsla(130, 100%, 55%, 1)","hsla(25, 100%, 55%, 1)","hsla(300, 100%, 50%, 1)","hsla(200, 100%, 60%, 1)","hsla(90, 100%, 55%, 1)","hsla(45, 100%, 55%, 1)"]},{name:"Forest",colors:["hsla(80, 35%, 75%, 1)","hsla(100, 40%, 50%, 1)","hsla(120, 45%, 30%, 1)","hsla(140, 35%, 18%, 1)","hsla(30, 40%, 35%, 1)","hsla(25, 50%, 22%, 1)","hsla(70, 40%, 88%, 1)","hsla(90, 45%, 62%, 1)","hsla(110, 45%, 40%, 1)","hsla(130, 40%, 24%, 1)"]},{name:"Candy",colors:["hsla(340, 100%, 80%, 1)","hsla(320, 90%, 65%, 1)","hsla(280, 85%, 65%, 1)","hsla(200, 90%, 70%, 1)","hsla(165, 75%, 65%, 1)","hsla(50, 100%, 70%, 1)","hsla(350, 100%, 90%, 1)","hsla(0, 90%, 70%, 1)","hsla(30, 100%, 72%, 1)","hsla(60, 90%, 75%, 1)"]},{name:"Cobalt",colors:["hsla(215, 85%, 94%, 1)","hsla(215, 85%, 86%, 1)","hsla(215, 85%, 78%, 1)","hsla(215, 85%, 70%, 1)","hsla(215, 85%, 62%, 1)","hsla(215, 85%, 54%, 1)","hsla(215, 85%, 46%, 1)","hsla(215, 85%, 40%, 1)","hsla(215, 85%, 34%, 1)","hsla(215, 85%, 28%, 1)"]},{name:"Terracotta",colors:["hsla(25, 55%, 78%, 1)","hsla(20, 65%, 55%, 1)","hsla(15, 60%, 40%, 1)","hsla(15, 50%, 25%, 1)","hsla(35, 40%, 60%, 1)","hsla(0, 25%, 12%, 1)","hsla(30, 60%, 88%, 1)","hsla(25, 60%, 68%, 1)","hsla(18, 65%, 48%, 1)","hsla(12, 55%, 32%, 1)"]},{name:"Vaporwave",colors:["hsla(330, 100%, 78%, 1)","hsla(290, 80%, 60%, 1)","hsla(200, 90%, 72%, 1)","hsla(170, 70%, 60%, 1)","hsla(40, 90%, 78%, 1)","hsla(260, 45%, 18%, 1)","hsla(320, 100%, 88%, 1)","hsla(310, 90%, 70%, 1)","hsla(280, 70%, 45%, 1)","hsla(250, 60%, 55%, 1)"]},{name:"Mint",colors:["hsla(160, 65%, 88%, 1)","hsla(165, 60%, 65%, 1)","hsla(170, 55%, 45%, 1)","hsla(175, 50%, 28%, 1)","hsla(180, 30%, 15%, 1)","hsla(55, 60%, 90%, 1)","hsla(155, 70%, 95%, 1)","hsla(160, 60%, 78%, 1)","hsla(165, 55%, 55%, 1)","hsla(170, 50%, 36%, 1)"]},{name:"Sakura",colors:["hsla(340, 100%, 93%, 1)","hsla(345, 85%, 80%, 1)","hsla(350, 70%, 65%, 1)","hsla(355, 60%, 48%, 1)","hsla(30, 40%, 32%, 1)","hsla(120, 30%, 42%, 1)","hsla(340, 100%, 97%, 1)","hsla(342, 90%, 87%, 1)","hsla(348, 80%, 72%, 1)","hsla(352, 65%, 56%, 1)"]},{name:"Desert",colors:["hsla(40, 55%, 82%, 1)","hsla(30, 50%, 65%, 1)","hsla(15, 45%, 48%, 1)","hsla(90, 30%, 45%, 1)","hsla(95, 25%, 22%, 1)","hsla(200, 40%, 72%, 1)","hsla(42, 60%, 92%, 1)","hsla(35, 55%, 74%, 1)","hsla(25, 50%, 56%, 1)","hsla(18, 45%, 38%, 1)"]},{name:"Galaxy",colors:["hsla(265, 70%, 82%, 1)","hsla(275, 75%, 55%, 1)","hsla(290, 85%, 35%, 1)","hsla(220, 70%, 40%, 1)","hsla(230, 60%, 12%, 1)","hsla(50, 90%, 82%, 1)","hsla(260, 80%, 92%, 1)","hsla(270, 75%, 68%, 1)","hsla(285, 80%, 45%, 1)","hsla(300, 85%, 28%, 1)"]},{name:"Ember",colors:["hsla(25, 100%, 95%, 1)","hsla(25, 100%, 88%, 1)","hsla(25, 100%, 80%, 1)","hsla(25, 100%, 72%, 1)","hsla(25, 100%, 65%, 1)","hsla(25, 100%, 58%, 1)","hsla(25, 100%, 50%, 1)","hsla(25, 100%, 44%, 1)","hsla(25, 100%, 38%, 1)","hsla(25, 100%, 32%, 1)"]},{name:"Watermelon",colors:["hsla(350, 85%, 80%, 1)","hsla(350, 75%, 62%, 1)","hsla(355, 65%, 45%, 1)","hsla(90, 45%, 62%, 1)","hsla(110, 50%, 30%, 1)","hsla(0, 0%, 8%, 1)","hsla(350, 90%, 90%, 1)","hsla(350, 80%, 70%, 1)","hsla(352, 70%, 55%, 1)","hsla(358, 60%, 38%, 1)"]}];var Nh=16777216,Dh=16;function Cr(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function Lh(e){if(!Array.isArray(e))return[...it[0].colors];let t=e.slice(0,Dh).flatMap((r)=>{if(typeof r==="string"&&dt(r))return[r];if(Cr(r)&&dt(r.color)&&typeof r.opacity==="number"&&Number.isFinite(r.opacity)&&r.opacity>=0&&r.opacity<=1)return[r.color];return[]});return t.length>0?t:[...it[0].colors]}function Mh(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 Fh(e){let t=Cr(e)?e:{};return{saturation:nt(t.saturation),lightness:nt(t.lightness)}}function cn(e){if(e.length>Nh)throw Error("Draft is too large");let t=JSON.parse(e);if(!Cr(t)||t.version!==1)throw Error("Not a Flatblox version-1 draft");let r=sn(t.grid),n=t.gridSize===void 0?r.length:t.gridSize;if(!Number.isInteger(n)||Number(n)<1||Number(n)>Ie||r.length!==n||!r.every((o)=>o.length===n))throw Error("Draft contains an invalid grid");let s=Lh(t.palette),i=dt(t.activeColor)?t.activeColor:s[0];return{filename:typeof t.filename==="string"?tn(t.filename):"untitled",grid:r,palette:s,activeColor:i,paletteColorAdjustment:Fh(t.paletteColorAdjustment),draft:{data:t,activeArtboard:Mh(t)}}}function Gh(e,t){let r=Array.isArray(t)?t:[];return e.map((n,s)=>{let i=r[s];if(!Cr(i))return{color:n,opacity:1};let o=typeof i.opacity==="number"&&Number.isFinite(i.opacity)&&i.opacity>=0&&i.opacity<=1?i.opacity:1;return{...i,color:n,opacity:o}})}function Uh(e,t){let r=e.draft?.data.artboards,n=Array.isArray(r)?[...r]:[],s=n.length>0?Math.min(e.draft?.activeArtboard??0,n.length-1):0;if(n.length===0)n.push(t);else{let i=n[s];n[s]=Cr(i)&&"grid"in i?{...i,grid:t}:t}return{artboards:n,activeArtboard:s}}function un(e){let t=e.draft?.data,r=_r(e.grid),n=Gh(e.palette,t?.palette),{artboards:s,activeArtboard:i}=Uh(e,r),o=e.paletteColorAdjustment??{saturation:0,lightness:0},a=Cr(t?.paletteColorAdjustment)?t.paletteColorAdjustment:{};return JSON.stringify({...t,version:1,grid:r,gridSize:e.grid.length,palette:n,paletteColorAdjustment:{...a,saturation:nt(o.saturation),lightness:nt(o.lightness)},activeColor:e.activeColor,artboards:s,activeArtboard:i,filename:e.filename,savedAt:new Date().toISOString()},null,2)}var Na=16,jh=100;function Pa(e,t,r){return Math.max(t,Math.min(r,e))}function dn(e){return e.map((t)=>t.map((r)=>({...r})))}function Hh(e){return Array.from({length:e},()=>Array.from({length:e},()=>({active:!1,color:null})))}function Da(e){if(!Number.isInteger(e)||e<1||e>Ie)throw Error(`Grid size must be between 1 and ${Ie}`);return e}function hn(e=Na){let t=[...it[0].colors];return{filename:"untitled",grid:Hh(Da(e)),palette:t,activeColor:t[0],paletteColorAdjustment:{saturation:0,lightness:0}}}function Kh(e,t,r,n){let s=[t];if(r)s.push({x:e-1-t.x,y:t.y});if(n)s.push({x:t.x,y:e-1-t.y});if(r&&n)s.push({x:e-1-t.x,y:e-1-t.y});return[...new Map(s.map((i)=>[`${i.x}:${i.y}`,i])).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=Da(e.grid.length);if(!e.grid.every((n)=>n.length===t))throw Error("Grid must be square");if(e.palette.length===0)throw Error("Palette is empty");this.currentFilename=e.filename||"untitled",this.savedFilename=this.currentFilename,this.palette=[...e.palette],this.paletteColorAdjustment={saturation:nt(e.paletteColorAdjustment?.saturation),lightness:nt(e.paletteColorAdjustment?.lightness)},this.draft=e.draft,this.currentGrid=dn(e.grid);let r=this.palette.indexOf(e.activeColor);this.activeColorIndex=r>=0?r:0}get grid(){return this.currentGrid}get filename(){return this.currentFilename}get size(){return this.currentGrid.length}get activeColor(){return this.palette[this.activeColorIndex]}get selectedColorIndex(){return this.activeColorIndex}get canUndo(){return this.undoStack.length>0}get canRedo(){return this.redoStack.length>0}get dirty(){return this.currentId!==this.savedId||this.currentFilename!==this.savedFilename}get revision(){return{id:this.currentId,filename:this.currentFilename}}rename(e){let t=e.trim();if(!t||t===this.currentFilename)return!1;return this.currentFilename=t,!0}moveCursor(e,t){this.setCursor(this.cursor.x+e,this.cursor.y+t)}setCursor(e,t){this.cursor={x:Pa(Math.round(e),0,this.size-1),y:Pa(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>jh)this.undoStack.shift();return this.redoStack=[],this.currentId=this.nextId++,!0}undo(){let e=this.undoStack.pop();if(!e)return!1;return this.redoStack.push({grid:dn(this.currentGrid),id:this.currentId}),this.currentGrid=e.grid,this.currentId=e.id,!0}redo(){let e=this.redoStack.pop();if(!e)return!1;return this.undoStack.push({grid:dn(this.currentGrid),id:this.currentId}),this.currentGrid=e.grid,this.currentId=e.id,!0}markSaved(e=this.revision){if(e.id!==this.currentId||e.filename!==this.currentFilename)return!1;return this.savedId=e.id,this.savedFilename=e.filename,!0}toDocument(){return{filename:this.currentFilename,grid:dn(this.currentGrid),palette:[...this.palette],activeColor:this.activeColor,paletteColorAdjustment:{...this.paletteColorAdjustment},...this.draft?{draft:{data:this.draft.data,activeArtboard:this.draft.activeArtboard}}:{}}}paintMirrored(e,t,r){let n=!1;for(let s of Kh(this.size,{x:e,y:t},this.mirrorX,this.mirrorY)){let i=this.currentGrid[s.y][s.x],o=r!==null;if(i.active===o&&i.color===r&&i.tileIndex==null)continue;this.currentGrid[s.y][s.x]=o?{...i,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:s}=r,i=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!==s||(d.tileIndex??null)!==i))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 Wh}from"net";var Yh="127.0.0.1",Qh=47642,Jh=3000,$h=32,Zh=1048576,Xh=16384,La=[0.57,0.57,0.6,1],Ma=new Map;function Vh(e){if(!e)return[...La];let t=Ma.get(e);if(!t){let r=Xt(e);t=r?[r.r/255,r.g/255,r.b/255,r.a]:[...La],Ma.set(e,t)}return t}function zh(e){if(!e?.active)return{active:!1,color:null,depth:1,mirrorZ:!1};return{active:!0,color:Vh(e.color),depth:ot(e.depth),mirrorZ:!!e.mirrorZ}}function Ga(e,t,r){return{x:t%r,y:Math.floor(t/r),...e}}function qh(e,t){let r=e.color===t.color||!!e.color&&!!t.color&&e.color.every((n,s)=>n===t.color?.[s]);return e.active===t.active&&r&&e.depth===t.depth&&e.mirrorZ===t.mirrorZ}function Ua(e){let{saturation:t,lightness:r}=e.paletteColorAdjustment??{saturation:0,lightness:0},n=Zt(e.grid,t,r),s=n.length,i=n[0]?.length??0;return Array.from({length:i*s},(o,a)=>zh(n[Math.floor(a/i)]?.[a%i]))}function eA(e){let t=e.grid.length,r=e.grid[0]?.length??0,n=Ua(e);return{message:{protocol:Vn,type:"snapshot",columns:r,rows:t,cells:n.flatMap((s,i)=>s.active?[Ga(s,i,r)]:[])},state:n}}function tA(e,t,r){return t.flatMap((n,s)=>e[s]&&qh(e[s],n)?[]:[Ga(n,s,r)])}function Fa(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 Rs{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=Wh){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:Yh,port:Qh})}catch(t){let r={state:"error",message:Fa(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,Fa(t))),e.on("close",()=>this.handleClose(e)),this.connectTimer=setTimeout(()=>{this.fail(e,"Timed out waiting for the Blender add-on.")},Jh),this.connectPromise}disconnect(){this.disconnectSocket(),this.resetStream();let e={state:"disconnected"};return this.setStatus(e),this.finishConnect(e),e}sync(){if(this.status.state!=="connected"||!this.socket)return;if(!this.patchTimer)this.patchTimer=setTimeout(()=>this.flushPatch(),$h)}collectChanges(){let e=this.document(),t=e.grid.length,r=e.grid[0]?.length??0;if(!this.previousGrid||r!==this.previousColumns||t!==this.previousRows){this.sendSnapshot(e);return}let n=Ua(e);for(let s of tA(this.previousGrid,n,r))this.pendingCells.set(s.y*r+s.x,s);this.previousGrid=n}dispose(){this.disconnect(),this.listeners.clear()}handleHandshake(e,t){if(this.socket!==e||this.status.state!=="connecting")return;if(this.handshakeBuffer+=t.toString("utf8"),Buffer.byteLength(this.handshakeBuffer)>Xh){this.fail(e,"Blender sent an invalid handshake.");return}let r=this.handshakeBuffer.indexOf(`
|
|
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!==Vn){this.fail(e,"The Blender add-on uses an incompatible protocol.");return}this.clearConnectTimer(),this.handshakeBuffer="";let s={state:"connected",message:"Live in Blender"};this.setStatus(s),this.finishConnect(s),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}=eA(e);if(this.previousGrid=r,this.previousColumns=t.columns,this.previousRows=t.rows,!this.send(t))this.previousGrid=null}flushPatch(){if(this.patchTimer=null,this.status.state==="connected"&&this.socket)this.collectChanges();if(this.status.state!=="connected"||this.pendingCells.size===0){this.pendingCells.clear();return}let e={protocol:Vn,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>Zh)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 Ka,parseColor as Bs}from"@opentui/core";import{parseColor as rA,Renderable as nA,RGBA as iA}from"@opentui/core";var Ts=new WeakMap;function Ut(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 Ts.get(e)??null;let s=n.width/t,i=n.height/r,o=Ts.get(e);if(o&&o.width===s&&o.height===i)return o;let a=Number.isFinite(s)&&Number.isFinite(i)&&s>0&&i>0?{width:s,height:i}:null;if(a)Ts.set(e,a);return a??o??null}function qn(e){let t=Ut(e);if(!t)return 2;let r=t.height/t.width;return Number.isFinite(r)&&r>=0.5&&r<=4?r:2}function Er(e){if(!e||e.image_protocol==="blocks")return!1;if(e.image_protocol==="kitty"||e.image_protocol==="sixel")return!0;if(e.multiplexer==="tmux")return!1;return Boolean(e.kitty_graphics||e.sixel)}function ei(e){return Boolean(Ut(e)&&Er(e.capabilities))}var sA={width:8,height:16};function oA(e,t,r,n,s,i,o="center"){let a=Math.max(1,Math.round(e*s)),l=Math.max(1,Math.round(t*i)),c=Math.min(a/r,l/n),u=Math.max(1,Math.min(a,Math.round(r*c))),d=Math.max(1,Math.min(l,Math.round(n*c)));return{pixelWidth:a,pixelHeight:l,fittedWidth:u,fittedHeight:d,left:o==="center"?Math.floor((a-u)/2):0,top:Math.floor((l-d)/2)}}class An extends nA{_source=null;_background=iA.fromInts(0,0,0);_backgroundKey="";_kernel="default";_align="center";frame=null;frameCache=null;constructor(e,t){super(e,{...t,buffered:!0});if(this._source=t.source??null,t.background)this.background=t.background;if(t.kernel)this._kernel=t.kernel;if(t.align)this._align=t.align}set source(e){let t=e??null;if(t===this._source)return;this._source=t,this.releaseFrame(),this.requestRender()}get source(){return this._source}set background(e){if(!e||e===this._backgroundKey)return;this._backgroundKey=e,this._background=rA(e),this.releaseFrame(),this.requestRender()}set kernel(e){if(!e||e===this._kernel)return;this._kernel=e,this.releaseFrame(),this.requestRender()}set align(e){if(!e||e===this._align)return;this._align=e,this.releaseFrame(),this.requestRender()}renderSelf(e){e.clear(this._background);let t=this._source;if(!t||this.width<=0||this.height<=0||!Er(this._ctx.capabilities)){this.releaseFrame();return}let r=Ut(this._ctx)??sA,n=oA(this.width,this.height,t.width,t.height,r.width,r.height,this._align),s=this._backgroundKey,i=this.frameCache;if(!(this.frame&&i&&i.source===t&&i.pixelWidth===n.pixelWidth&&i.pixelHeight===n.pixelHeight&&i.background===s)){let a=t.resize({width:n.fittedWidth,height:n.fittedHeight,kernel:this._kernel}),l=a.extend({left:n.left,top:n.top,right:n.pixelWidth-n.fittedWidth-n.left,bottom:n.pixelHeight-n.fittedHeight-n.top,background:this._background.toInts()});if(l!==a)a.dispose();this.releaseFrame(),this.frame=l,this.frameCache={source:t,pixelWidth:n.pixelWidth,pixelHeight:n.pixelHeight,background:s}}if(!this.frame)return;e.drawImage(this.frame,0,0,this.width,this.height,n.pixelWidth,n.pixelHeight,0,0,n.pixelWidth,n.pixelHeight,"auto")}releaseFrame(){this.frame?.dispose(),this.frame=null,this.frameCache=null}destroySelf(){this.releaseFrame(),super.destroySelf()}}var ja=new WeakMap;function ti(){let e=ft(),t=ja.get(e);if(t)return t;let r=Jt(()=>{let[n,s]=J(Er(e.capabilities));return e.on("capabilities",()=>s(Er(e.capabilities))),n});return ja.set(e,r),r}Nt({fitted_image:An});var Os=32;function aA(e){let[t,r,n]=Bs(e).toInts();return Ka.fromRgba(new Uint8Array([t,r,n,255]),1,1)}function lA(e,t,r=Os){let n=Bs(e).toInts(),s=Bs(t).toInts(),i=new Uint8Array(r*r*4),o=r/2;for(let a=0;a<r;a++)for(let l=0;l<r;l++){let c=Math.hypot(l+0.5-o,a+0.5-o),u=Math.max(0,Math.min(1,o-c+0.5)),d=(a*r+l)*4;for(let A=0;A<3;A++)i[d+A]=Math.round(s[A]+(n[A]-s[A])*u);i[d+3]=255}return i}var Ha=new Map;function cA(e,t){let r=`${e}|${t}`,n=Ha.get(r);if(!n)n=lA(e,t),Ha.set(r,n);return Ka.fromRgba(n,Os,Os)}function fn(e){let t=ti(),r=()=>e.width??2,n=()=>e.shape??"square",s=Y(()=>{let i=n()==="circle"?cA(e.color,e.background):aA(e.color);return qe(()=>i.dispose()),i});return Q(Le,{get when(){return t()},get fallback(){return(()=>{var i=I("text");return F(i,(()=>{var o=ut(()=>n()==="circle");return()=>o()?"\u2B24":"\u2588".repeat(r())})()),me((o)=>h(i,"fg",e.color,o)),i})()},get children(){var i=I("fitted_image");return h(i,"height",1),h(i,"align","start"),me((o)=>{var a=r(),l=s(),c=e.background,u=n()==="circle"?"default":"nearest";return a!==o.e&&(o.e=h(i,"width",a,o.e)),l!==o.t&&(o.t=h(i,"source",l,o.t)),c!==o.a&&(o.a=h(i,"background",c,o.a)),u!==o.o&&(o.o=h(i,"kernel",u,o.o)),o},{e:void 0,t:void 0,a:void 0,o:void 0}),i}})}function qt(e){let t=e.name.toLowerCase();return t==="return"||t==="enter"||t==="space"||e.sequence===" "}function er(e){switch(e){case"left":case"h":return{dx:-1,dy:0};case"right":case"l":return{dx:1,dy:0};case"up":case"k":return{dx:0,dy:-1};case"down":case"j":return{dx:0,dy:1};default:return}}import{MouseButton as Ps,NativeImage as Ya,Renderable as yA,RGBA as gn,TextAttributes as Qa}from"@opentui/core";import{RGBA as uA}from"@opentui/core";var dA={r:30,g:33,b:48,a:1},hA={r:42,g:46,b:64,a:1},Wa=new Map;function AA(e){let t=Wa.get(e);if(t!==void 0)return t;let r=Xt(e);return Wa.set(e,r),r}function fA(e,t){return(e+t)%2===0?dA:hA}function gA(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 mA(e,t,r){let n=fA(t,r),s=e?.active&&e.color?AA(e.color):null;return s?gA(s,n):n}var pA=[new Map,new Map],bA=4096;function jt(e,t,r){let n=pA[(t+r)%2],s=e?.active&&e.color?e.color:"",i=n.get(s);if(!i){if(n.size>=bA)n.clear();let o=mA(e,t,r);i=uA.fromInts(o.r,o.g,o.b),n.set(s,i)}return i}var ri=gn.fromInts(22,8,33),Ja=gn.fromInts(39,14,57),Ns=4,wA=gn.fromInts(255,255,255),_A=gn.fromInts(8,10,16),vA=0.25,ni=512,$a=16384,CA=25000000;function Ds(e){let[t,r,n]=e.toInts(),s=(0.2126*t+0.7152*r+0.0722*n)/255,[i,o,a]=s>0.55?_A.toInts():wA.toInts(),l=(c,u)=>Math.round(c+(u-c)*vA);return gn.fromInts(l(t,i),l(r,o),l(n,a))}function Za(e,t,r){return Math.max(0,Math.min(r-t,e-Math.floor(t/2)))}function EA(e,t){let r=Math.ceil(e/ni)*ni,n=Math.ceil(t/ni)*ni;if(r>$a||n>$a||r*n>CA)return null;return{width:r,height:n}}function SA(e,t,r,n,s){let o=Math.max(1,Math.floor(n)),a=Math.max(1,Math.round(o*2/s)),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 IA(e,t,r,n,s,i){let o=Math.max(1,Math.floor(n)),a=Math.max(1,Math.round(o*s)),l=Math.min(r,Math.floor(e/o)),c=Math.min(r,Math.floor(t*i/a)),u=l*a,d=c*a,A=d*2/i;return{columns:l,pixelRows:c,columnZoom:o,subrowZoom:a*2/i,renderedColumns:l*o,renderedSubrows:A,terminalRows:Math.ceil(d/i),pixelWidth:u,pixelHeight:d}}class Ls extends yA{textFrame=null;artworkImage=null;artworkImageCache=null;worldImage=null;worldImageSide=0;worldImageWidth=0;worldImageHeight=0;currentModel={grid:[],cursor:{x:0,y:0},zoom:1};cellHandler;viewport={originX:0,originY:0,startX:0,startY:0,columns:0,pixelRows:0,columnZoom:1,subrowZoom:1,renderedSubrows:0};constructor(e,t){super(e,{...t,buffered:!0});if(t.model)this.currentModel=t.model;this.cellHandler=t.onCell,this.onMouseDown=(r)=>this.handleMouse(r)}set model(e){if(!e)return;this.currentModel=e,this.requestRender()}set onCell(e){this.cellHandler=e}sameTextFrame(e){let t=this.currentModel,r=this.textFrame;if(r&&r.grid===t.grid&&r.revision===t.revision&&r.cursorX===t.cursor.x&&r.cursorY===t.cursor.y&&r.zoom===t.zoom&&r.width===this.width&&r.height===this.height&&r.cellAspect===e)return!0;return this.textFrame={grid:t.grid,revision:t.revision,cursorX:t.cursor.x,cursorY:t.cursor.y,zoom:t.zoom,width:this.width,height:this.height,cellAspect:e},!1}renderSelf(e){let t=this.currentModel.grid.length,r=qn(this._ctx),n=Ut(this._ctx),s=n!==null&&ei(this._ctx);if(s)this.textFrame=null;else if(this.sameTextFrame(r))return;if(e.clear(ri),t===0||this.width<=0||this.height<=0){this.viewport.columns=0,this.viewport.pixelRows=0;return}let i=n&&s?IA(this.width,this.height,t,this.currentModel.zoom,n.width,n.height):null,o=i??SA(this.width,this.height,t,this.currentModel.zoom,r),{columns:a,pixelRows:l}=o;if(a===0||l===0){this.viewport.columns=0,this.viewport.pixelRows=0,this.viewport.columnZoom=o.columnZoom,this.viewport.subrowZoom=o.subrowZoom,this.viewport.renderedSubrows=0;return}let{renderedColumns:c,renderedSubrows:u,terminalRows:d}=o,A=Za(this.currentModel.cursor.x,a,t),m=Za(this.currentModel.cursor.y,l,t),g=Math.floor((this.width-c)/2),f=Math.floor((this.height-d)/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:A,startY:m,columns:a,pixelRows:l,columnZoom:o.columnZoom,subrowZoom:o.subrowZoom,renderedSubrows:u},i){this.drawArtworkImage(e,i,g,f,A,m);return}this.releaseArtworkImage();let{grid:p,cursor:v}=this.currentModel,{subrowZoom:y,columnZoom:S}=o;for(let _=0;_<d;_++){let b=_*2,w=b+1,C=m+Math.floor(b/y),B=m+Math.floor(w/y),L=p[C],P=p[B];for(let x=0;x<c;x++){let G=A+Math.floor(x/S),z=jt(L?.[G],G,C),W=w<u&&B<t?jt(P?.[G],G,B):ri,ee=v.x===G&&v.y===C,te=v.x===G&&v.y===B;e.setCell(g+x,f+_,"\u2580",ee?Ds(z):z,te?Ds(W):W)}}}drawArtworkImage(e,t,r,n,s,i){let o=this.currentModel.cursor,a=this.artworkImageCache;if(!(this.artworkImage&&a&&a.grid===this.currentModel.grid&&a.revision===this.currentModel.revision&&a.columns===t.columns&&a.pixelRows===t.pixelRows&&a.pixelWidth===t.pixelWidth&&a.pixelHeight===t.pixelHeight&&a.startX===s&&a.startY===i&&a.cursorX===o.x&&a.cursorY===o.y)){let c=new Uint8Array(t.columns*t.pixelRows*4);for(let A=0;A<t.pixelRows;A++){let m=i+A;for(let g=0;g<t.columns;g++){let f=s+g,p=jt(this.currentModel.grid[m]?.[f],f,m);if(o.x===f&&o.y===m)p=Ds(p);let[v,y,S]=p.toInts(),_=(A*t.columns+g)*4;c[_]=v,c[_+1]=y,c[_+2]=S,c[_+3]=255}}let u=Ya.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.artworkImageCache={grid:this.currentModel.grid,revision:this.currentModel.revision,columns:t.columns,pixelRows:t.pixelRows,pixelWidth:t.pixelWidth,pixelHeight:t.pixelHeight,startX:s,startY:i,cursorX:o.x,cursorY:o.y}}if(!this.artworkImage)return;e.drawImage(this.artworkImage,r,n,t.renderedColumns,t.terminalRows,t.pixelWidth,t.pixelHeight,0,0,t.pixelWidth,t.pixelHeight,"auto")}releaseArtworkImage(){this.artworkImage?.dispose(),this.artworkImage=null,this.artworkImageCache=null}drawWorldGridImage(e,t,r,n,s){let i=Math.max(1,Math.round(this.width*n)),o=Math.max(1,Math.round(this.height*s)),a=Math.max(1,Math.round(Ns*n)),l=Math.round(t*n),c=Math.round(r*s),u=i+a,d=o+a,A=EA(u,d);if(!A)return this.releaseWorldImage(),!1;if(!this.worldImage||a!==this.worldImageSide||u>this.worldImageWidth||d>this.worldImageHeight){let{width:f,height:p}=A,v=new Uint8Array(f*p*4),[y,S,_]=ri.toInts(),[b,w,C]=Ja.toInts(),B=f*4,L=new Uint8Array(B),P=new Uint8Array(B);for(let x=0;x<f;x++){let G=x*4,z=x%a===0;L[G]=z?b:y,L[G+1]=z?w:S,L[G+2]=z?C:_,L[G+3]=255,P[G]=b,P[G+1]=w,P[G+2]=C,P[G+3]=255}for(let x=0;x<p;x++)v.set(x%a===0?P:L,x*B);this.releaseWorldImage(),this.worldImage=Ya.fromRgba(v,f,p),this.worldImageSide=a,this.worldImageWidth=f,this.worldImageHeight=p}if(!this.worldImage)return!1;let m=(-l%a+a)%a,g=(-c%a+a)%a;return e.drawImage(this.worldImage,0,0,this.width,this.height,i,o,m,g,i,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 s=Math.max(1,Math.round(Ns/n));for(let i=0;i<this.height;i++){let o=i+1-r,a=Math.floor(o/s)!==Math.floor((o-1)/s);for(let l=0;l<this.width;l++){let c=l>0&&(l-t)%Ns===0;if(!a&&!c)continue;e.setCell(l,i,c?"\u258F":" ",Ja,ri,a?Qa.UNDERLINE:Qa.NONE)}}}destroySelf(){this.releaseArtworkImage(),this.releaseWorldImage(),super.destroySelf()}handleMouse(e){if(e.button!==Ps.LEFT&&e.button!==Ps.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),s=e.modifiers.shift?1:0,i=r*2+s;if(i>=this.viewport.renderedSubrows)return;let o=this.viewport.startY+Math.floor(i/this.viewport.subrowZoom);if(o>=this.currentModel.grid.length)return;this.cellHandler?.({x:n,y:o,...e.button===Ps.RIGHT?{tool:"erase"}:{}})}}var Xa={name:"flatblox-tui",version:"0.2.1",description:"Flatblox pixel art editor for the terminal",homepage:"https://flatblox.com",license:"MIT",type:"module",bin:{"flatblox-tui":"dist/index.js"},files:["dist","README.md"],publishConfig:{access:"public"},scripts:{build:"bun --env-file=../web/.env scripts/build.ts",dev:"bun --env-file=../web/.env --watch src/index.tsx",prepack:"bun run build",start:"bun --env-file=../web/.env src/index.tsx",typecheck:"tsc --noEmit",test:"bun test --preload ./scripts/preload.ts"},dependencies:{"@opentui/core":"^0.5.9","@opentui/solid":"^0.5.9",bun:"^1.4.0","solid-js":"1.9.12"},devDependencies:{"@flatblox/editor-core":"workspace:*","@flatblox/shared":"workspace:*","@supabase/supabase-js":"^2.49.4","@types/bun":"latest",typescript:"~5.9.3"}};var ii=`v${Xa.version}`;import{NativeImage as Va,parseColor as kA}from"@opentui/core";Nt({fitted_image:An});var RA=new URL("./flatblox-logo.png",import.meta.url),TA=Va.load(RA),Ms=new Map;function BA(e){let t=Ms.get(e);if(!t)t=TA.then((r)=>{let[n,s,i]=kA(e).toInts(),o=new Uint8Array(r.width*r.height*4);for(let l=0;l<o.length;l+=4)o[l]=n,o[l+1]=s,o[l+2]=i,o[l+3]=255;let a=Va.fromRgba(o,r.width,r.height);try{return a.composite(r)}finally{a.dispose()}}),t.catch(()=>Ms.delete(e)),Ms.set(e,t);return t}function Sr(e){let t=ti(),[r,n]=J(),s=!1;return $t(()=>{BA(e.backgroundColor).then((i)=>{if(!s)n(i)},()=>{})}),qe(()=>{s=!0}),Q(Le,{get when(){return ut(()=>!!t())()&&r()},get fallback(){return(()=>{var i=I("box");return h(i,"alignItems","center"),h(i,"justifyContent","center"),F(i,Q(Le,{get when(){return e.height>=2},get fallback(){return(()=>{var o=I("text"),a=I("b");return R(o,a),R(a,we("FLATBLOX")),me((l)=>h(o,"fg",e.foregroundColor,l)),o})()},get children(){var o=I("ascii_font");return h(o,"text","FLATBLOX"),h(o,"font","tiny"),me((a)=>{var l=`${e.id}-ascii`,c=e.foregroundColor,u=e.backgroundColor;return l!==a.e&&(a.e=h(o,"id",l,a.e)),c!==a.t&&(a.t=h(o,"color",c,a.t)),u!==a.a&&(a.a=h(o,"backgroundColor",u,a.a)),a},{e:void 0,t:void 0,a:void 0}),o}})),me((o)=>{var{id:a,width:l,height:c,backgroundColor:u}=e;return a!==o.e&&(o.e=h(i,"id",a,o.e)),l!==o.t&&(o.t=h(i,"width",l,o.t)),c!==o.a&&(o.a=h(i,"height",c,o.a)),u!==o.o&&(o.o=h(i,"backgroundColor",u,o.o)),o},{e:void 0,t:void 0,a:void 0,o:void 0}),i})()},get children(){var i=I("fitted_image");return me((o)=>{var a=e.id,l=r(),c=e.width,u=e.height,d=e.backgroundColor;return a!==o.e&&(o.e=h(i,"id",a,o.e)),l!==o.t&&(o.t=h(i,"source",l,o.t)),c!==o.a&&(o.a=h(i,"width",c,o.a)),u!==o.o&&(o.o=h(i,"height",u,o.o)),d!==o.i&&(o.i=h(i,"background",d,o.i)),o},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),i}})}Nt({pixel_grid:Ls});var E={background:je("hsl(275 60% 9%)"),panel:je("hsl(275 60% 11%)"),panelActive:je("hsl(275 60% 14%)"),card:je("hsl(275 60% 16%)"),border:je("hsl(275 60% 28%)"),text:je("hsl(278 100% 80%)"),muted:je("hsl(278 41% 65%)"),accent:je("hsl(315 68% 71%)"),accentText:je("hsl(278 70% 80%)"),warning:je("hsl(37 100% 71%)"),textPink:je("hsl(308, 50%, 75%)"),orangeActive:je("hsl(28, 80%, 38%)")};function je(e){let t=bs(e);return t?qr(t):"#ffffff"}function Ir(e){return e[0].toUpperCase()+e.slice(1)}function OA(e){return(()=>{var t=I("box");return h(t,"flexDirection","column"),h(t,"gap",0),F(t,Q(wt,{get each(){return e.colors.slice(0,10)},children:(r,n)=>{let s=Y(()=>(e.refresh(),e.session.selectedColorIndex===n())),i=n()===9?"0":String(n()+1);return(()=>{var o=I("box"),a=I("text"),l=we(" ");return R(o,a),h(o,"height",1),h(o,"flexDirection","row"),h(o,"paddingX",1),F(o,Q(fn,{get color(){return je(r)},get background(){return ut(()=>!!s())()?E.panelActive:E.panel}}),a),R(a,l),F(a,()=>s()?" \u203A ":" ",l),F(a,i,l),F(a,()=>je(r),null),me((c)=>{var u=s()?E.panelActive:E.panel,d=s()?E.text:E.muted;return u!==c.e&&(c.e=h(o,"backgroundColor",u,c.e)),d!==c.t&&(c.t=h(a,"fg",d,c.t)),c},{e:void 0,t:void 0}),o})()}})),t})()}function PA(e){let t=Y(()=>(e.refresh(),{tool:Ir(e.session.tool),mirrorX:e.session.mirrorX?"on":"off",mirrorY:e.session.mirrorY?"on":"off",cursor:`${e.session.cursor.x+1}, ${e.session.cursor.y+1}`}));return(()=>{var r=I("box"),n=I("box"),s=I("box"),i=I("text"),o=we("Tool: "),a=I("text"),l=we("Cursor: "),c=I("box"),u=I("box"),d=I("box"),A=I("text"),m=we("Mirror X: "),g=I("text"),f=we("Mirror Y: ");return R(r,n),h(r,"id","sidebar"),h(r,"alignSelf","flex-start"),h(r,"flexDirection","column"),R(n,s),R(n,c),R(n,u),R(n,d),h(n,"width","100%"),h(n,"flexDirection","column"),h(n,"paddingX",1),R(s,i),R(s,a),h(s,"flexDirection","column"),R(i,o),F(i,()=>t().tool,null),R(a,l),F(a,()=>t().cursor,null),h(c,"height",1),F(n,Q(OA,{get session(){return e.session},get colors(){return e.colors},get refresh(){return e.refresh}}),u),h(u,"height",1),R(d,A),R(d,g),h(d,"flexDirection","column"),R(A,m),F(A,()=>t().mirrorX,null),R(g,f),F(g,()=>t().mirrorY,null),me((p)=>{var v=e.visible?28:0,y=e.visible,S=E.textPink,_=E.textPink,b=E.muted,w=E.muted;return v!==p.e&&(p.e=h(r,"width",v,p.e)),y!==p.t&&(p.t=h(r,"visible",y,p.t)),S!==p.a&&(p.a=h(i,"fg",S,p.a)),_!==p.o&&(p.o=h(a,"fg",_,p.o)),b!==p.i&&(p.i=h(A,"fg",b,p.i)),w!==p.n&&(p.n=h(g,"fg",w,p.n)),p},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),r})()}function NA(e){let t=Y(()=>{e.refresh();let r=`${e.session.mirrorX?"X":"-"}${e.session.mirrorY?"Y":"-"}`;return{tool:Ir(e.session.tool),color:je(e.colors[e.session.selectedColorIndex]??e.session.activeColor),mirror:r}});return(()=>{var r=I("box"),n=I("text"),s=we("Tool "),i=we(" Color "),o=I("text"),a=we(" "),l=we(" Mirror ");return R(r,n),R(r,o),h(r,"border",!0),h(r,"borderStyle","rounded"),h(r,"paddingX",1),h(r,"flexDirection","row"),R(n,s),R(n,i),F(n,()=>t().tool,i),F(r,Q(fn,{get color(){return t().color},get background(){return E.panel}}),o),R(o,a),R(o,l),F(o,()=>t().color,l),F(o,()=>t().mirror,null),me((c)=>{var u=e.visible?3:0,d=e.visible,A=E.border,m=E.panel,g=E.textPink,f=E.textPink;return u!==c.e&&(c.e=h(r,"height",u,c.e)),d!==c.t&&(c.t=h(r,"visible",d,c.t)),A!==c.a&&(c.a=h(r,"borderColor",A,c.a)),m!==c.o&&(c.o=h(r,"backgroundColor",m,c.o)),g!==c.i&&(c.i=h(n,"fg",g,c.i)),f!==c.n&&(c.n=h(o,"fg",f,c.n)),c},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),r})()}function DA(e){let t=Y(()=>Math.max(1,Math.min(64,e.width-2))),r=Y(()=>Math.max(1,Math.min(21,e.height-2)));return(()=>{var n=I("box"),s=I("text");return R(n,s),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),F(s,()=>`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.`),_e((i)=>{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=S.border,A=S.panel,m=S.accent,g=S.textPink;return o!==i.e&&(i.e=h(n,"left",o,i.e)),a!==i.t&&(i.t=h(n,"top",a,i.t)),l!==i.a&&(i.a=h(n,"width",l,i.a)),c!==i.o&&(i.o=h(n,"height",c,i.o)),u!==i.i&&(i.i=h(n,"visible",u,i.i)),d!==i.n&&(i.n=h(n,"borderColor",d,i.n)),A!==i.s&&(i.s=h(n,"backgroundColor",A,i.s)),m!==i.h&&(i.h=h(n,"titleColor",m,i.h)),g!==i.r&&(i.r=h(s,"fg",g,i.r)),i},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),n})()}function hA(e){let t=Y(()=>Math.max(1,Math.min(48,e.width-4))),r=Y(()=>Math.max(1,Math.min(7,e.height-2))),n=Y(()=>r()>=7?1:0);return(()=>{var s=I("box"),i=I("box"),o=I("input"),a=I("box"),l=I("text");return E(s,i),h(s,"id","filename-modal"),h(s,"position","absolute"),h(s,"zIndex",30),h(s,"border",!0),h(s,"title"," Save artwork "),h(s,"flexDirection","column"),E(i,o),E(i,a),E(i,l),h(i,"flexGrow",1),h(i,"width","100%"),h(i,"padding",1),h(i,"flexDirection","column"),h(o,"id","artwork-name-input"),h(o,"width","100%"),h(o,"maxLength",As),h(o,"focused",!0),h(o,"onKeyDown",(c)=>{if(c.eventType!=="release"&&c.name==="escape")c.preventDefault(),e.onCancel()}),G(l,()=>e.error||"Enter save \xB7 Esc cancel"),_e((c)=>{var u=Math.max(0,Math.floor((e.width-t())/2)),d=Math.max(0,Math.floor((e.height-r())/2)),A=t(),m=r(),g=S.border,f=S.panel,b=S.accent,v=S.panel,w=e.value,C=S.panelActive,_=S.panelActive,y=S.text,p=S.text,O=e.onInput,T=e.onSubmit,M=n(),R=e.error?S.warning:S.accentText;return u!==c.e&&(c.e=h(s,"left",u,c.e)),d!==c.t&&(c.t=h(s,"top",d,c.t)),A!==c.a&&(c.a=h(s,"width",A,c.a)),m!==c.o&&(c.o=h(s,"height",m,c.o)),g!==c.i&&(c.i=h(s,"borderColor",g,c.i)),f!==c.n&&(c.n=h(s,"backgroundColor",f,c.n)),b!==c.s&&(c.s=h(s,"titleColor",b,c.s)),v!==c.h&&(c.h=h(i,"backgroundColor",v,c.h)),w!==c.r&&(c.r=h(o,"value",w,c.r)),C!==c.d&&(c.d=h(o,"backgroundColor",C,c.d)),_!==c.l&&(c.l=h(o,"focusedBackgroundColor",_,c.l)),y!==c.u&&(c.u=h(o,"textColor",y,c.u)),p!==c.c&&(c.c=h(o,"focusedTextColor",p,c.c)),O!==c.w&&(c.w=h(o,"onInput",O,c.w)),T!==c.m&&(c.m=h(o,"on:enter",T,c.m)),M!==c.f&&(c.f=h(a,"height",M,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}),s})()}function Er(e){let t=ht(),r=hr(),[n,s]=K(0),[i,o]=K("Ready"),[a,l]=K(!1),[c,u]=K(null),[d,A]=K(!1),[m,g]=K(!1),[f,b]=K(""),[v,w]=K(""),[C,_]=K(2),[y,p]=K(null),O=!e.blenderLive,T=e.blenderLive??new Cs(()=>e.session.toDocument()),[M,R]=K(T.getStatus()),B=T.onStatus(R);et(()=>{if(B(),O)T.dispose()});let Q=Y(()=>r().width>=88&&r().height>=19),z=()=>n(),[W,de]=K(0),ie=(k=!1)=>{if(s((P)=>P+1),k)de((P)=>P+1),T.sync()},te=()=>(n(),e.session.dirty),ke=Y(()=>qr(e.session.palette,e.session.paletteColorAdjustment.saturation,e.session.paletteColorAdjustment.lightness)),q=Y(()=>(W(),Yt(e.session.grid,e.session.paletteColorAdjustment.saturation,e.session.paletteColorAdjustment.lightness))),H=Y(()=>(n(),{grid:q(),cursor:e.session.cursor,zoom:C()})),ye=()=>{if(c())u(null)},fe=(k=e.session.tool)=>{ye();let P=e.session.applyAtCursor(k);ie(P),o(P?`${Cr(k)} applied`:"No change")},Xe=(k,P)=>{ye(),e.session.moveCursor(k,P);let re=y(),ue=re?e.session.applyAtCursor(re):!1;ie(ue),o(re&&ue?`${Cr(re)} at ${e.session.cursor.x+1}, ${e.session.cursor.y+1}`:`Cell ${e.session.cursor.x+1}, ${e.session.cursor.y+1}`)},D=(k)=>{let P=k==="undo"?e.session.undo():e.session.redo();o(P?k==="undo"?"Undo":"Redo":`Nothing to ${k}`),ie(P)},J=(k)=>{e.session.selectNextColor(k),ye(),o(`Color ${e.session.selectedColorIndex+1}`),ie()},se=async()=>{if(d())return;let k=e.session.revision,P=e.session.toDocument();A(!0),o("Saving\u2026");try{let re;if(e.saveDocument)re=await e.saveDocument(P);else{let me=e.filePath??`${e.session.filename}.flatblox.json`,Te=cn(P);if(e.writeFile)await e.writeFile(me,Te);else await Bun.write(me,Te);re=`Saved ${me}`}let ue=e.session.markSaved(k);u(null),o(ue?re||"Saved":`${re||"Saved"}; newer edits remain unsaved`),ie()}catch(re){let ue=re instanceof Error?re.message:String(re);o(`Save failed: ${ue}`)}finally{A(!1)}},le=()=>{if(e.promptForFilenameOnSave){b(""),w(""),g(!0),o("Name artwork before saving");return}se()},Be=(k)=>{let P=en(k);if(!P){w("Enter an artwork name");return}e.session.rename(P),w(""),g(!1),ie(),se()},pe=()=>{g(!1),w(""),o("Save cancelled")},Re=(k)=>{if(!te()||c()===k){if(k==="back"&&e.onBack)e.onBack();else t.destroy();return}u(k),o(k==="back"?"Unsaved changes \u2014 press Escape again to return":"Unsaved changes \u2014 press Q again to quit")},ot=(k)=>{e.session.setTool(k),ye(),o(`${Cr(k)} tool`),ie()},He=(k)=>{let P=Math.max(1,Math.min(8,C()+k));_(P),o(`Zoom ${P}\xD7`)},Z=async()=>{let k=T.getStatus();if(k.state==="connected"||k.state==="connecting"){T.disconnect(),o("Blender Live disconnected");return}o("Connecting to Blender\u2026");let P=await T.connect();o(P.state==="connected"?"Drawing live in Blender":P.message??"Blender Live disconnected")},mt=(k)=>{e.session.setCursor(k.x,k.y);let P=k.tool??e.session.tool,re=e.session.applyAt(k.x,k.y,P);ye(),o(re?`${Cr(P)} at ${k.x+1}, ${k.y+1}`:`Cell ${k.x+1}, ${k.y+1}`),ie(re)};Ar((k)=>{let P=k.name.toLowerCase(),re=k.sequence,ue=$t(k),me=Xt(P);if(k.eventType==="release"){if(ue)p(null);return}if(m())return;if(a()){if(P==="escape"||re==="?")l(!1);return}let Te=P==="q"||P==="escape"||k.ctrl&&P==="c";if(c()&&!Te)u(null);if(k.ctrl){if(P==="s")le();else if(P==="z"&&k.shift)D("redo");else if(P==="z")D("undo");else if(P==="y")D("redo");else if(P==="c")Re("quit");return}if(re==="?"){l(!0);return}if(P==="escape"&&e.onBack){Re("back");return}if(P==="q"||P==="escape"){Re("quit");return}if(me)Xe(me.dx,me.dy);else if(ue){let Oe=e.session.tool;p(k.source==="kitty"&&(Oe==="draw"||Oe==="erase")?Oe:null),fe(Oe)}else if(P==="b")Z();else if(P==="d")ot("draw");else if(P==="e")ot("erase");else if(P==="f")ot("fill");else if(P==="x")e.session.toggleMirrorX(),o(`Mirror X ${e.session.mirrorX?"on":"off"}`),ie();else if(P==="y")e.session.toggleMirrorY(),o(`Mirror Y ${e.session.mirrorY?"on":"off"}`),ie();else if(P==="u")D("undo");else if(P==="r")D("redo");else if(re==="+"||P==="+"||P==="=")He(1);else if(re==="-"||P==="-")He(-1);else if(re==="[")J(-1);else if(re==="]")J(1);else if(/^[0-9]$/.test(P))e.session.selectColor(P==="0"?9:Number(P)-1),o(`Color ${e.session.selectedColorIndex+1}`),ie()},{release:!0});let x=()=>{n();let k=e.session.dirty?" \u25CF":"";return`${e.session.filename}${k} ${e.session.size}\xD7${e.session.size}`},U=()=>{switch(M().state){case"connecting":return"connecting";case"connected":return"live";case"error":return"error";default:return"off"}};return(()=>{var k=I("box"),P=I("box"),re=I("text"),ue=I("b"),me=I("box"),Te=I("text"),Oe=I("box"),ee=I("box"),pt=I("pixel_grid"),Ke=I("box"),dt=I("text"),Mr=Ae("Blender:"),kt=Ae(" | ");return E(k,P),E(k,Oe),E(k,Ke),h(k,"width","100%"),h(k,"height","100%"),h(k,"flexDirection","column"),E(P,re),E(P,me),E(P,Te),h(P,"height",3),h(P,"paddingX",1),h(P,"paddingY",1),h(P,"flexDirection","row"),h(P,"justifyContent","space-between"),E(re,ue),E(ue,Ae("BUILD")),h(me,"height",1),h(me,"flexBasis",0),h(me,"flexGrow",1),h(me,"flexDirection","row"),h(me,"justifyContent","center"),G(me,V(vr,{id:"dashboard-wordmark",width:14,height:1,get backgroundColor(){return S.panel},get foregroundColor(){return S.accent}})),G(Te,x),E(Oe,ee),h(Oe,"flexGrow",1),h(Oe,"flexDirection","row"),h(Oe,"padding",1),h(Oe,"gap",1),E(ee,pt),h(ee,"flexGrow",1),h(ee,"overflow","hidden"),h(pt,"id","pixel-grid"),h(pt,"width","100%"),h(pt,"height","100%"),h(pt,"flexGrow",1),h(pt,"onCell",mt),G(Oe,V(cA,{get session(){return e.session},get colors(){return ke()},refresh:z,get visible(){return Q()}}),null),G(k,V(uA,{get session(){return e.session},get colors(){return ke()},refresh:z,get visible(){return!Q()}}),Ke),E(Ke,dt),h(Ke,"height",1),h(Ke,"paddingX",1),h(Ke,"flexDirection","row"),h(Ke,"justifyContent","space-between"),E(dt,Mr),E(dt,kt),G(dt,U,kt),G(dt,i,null),G(Ke,V(Ve,{get when(){return i().length<Math.max(8,r().width-58)},get children(){var X=I("text"),Lt=Ae("-/+ zoom \xB7 ? help \xB7 Ctrl+S save \xB7 "),Rt=Ae("Q quit");return E(X,Lt),E(X,Rt),G(X,()=>e.onBack?"Esc artworks \xB7 ":"",Rt),_e((Kt)=>h(X,"fg",S.muted,Kt)),X}}),null),G(k,V(dA,{get width(){return r().width},get height(){return r().height},get visible(){return a()},get canGoBack(){return Boolean(e.onBack)}}),null),G(k,V(Ve,{get when(){return m()},get children(){return V(hA,{get width(){return r().width},get height(){return r().height},get value(){return f()},get error(){return v()},onInput:(X)=>{if(b(X),v())w("")},onSubmit:Be,onCancel:pe})}}),null),_e((X)=>{var{background:Lt,panel:Rt}=S,Kt=M().state==="error"?S.warning:S.accentText,Fr=te()?S.warning:S.muted,Gr=S.background,he=S.background,ve=H(),Pe=S.panelActive,Ce=i().startsWith("Save failed")||M().state==="error"?S.warning:S.textPink;return Lt!==X.e&&(X.e=h(k,"backgroundColor",Lt,X.e)),Rt!==X.t&&(X.t=h(P,"backgroundColor",Rt,X.t)),Kt!==X.a&&(X.a=h(re,"fg",Kt,X.a)),Fr!==X.o&&(X.o=h(Te,"fg",Fr,X.o)),Gr!==X.i&&(X.i=h(Oe,"backgroundColor",Gr,X.i)),he!==X.n&&(X.n=h(ee,"backgroundColor",he,X.n)),ve!==X.s&&(X.s=h(pt,"model",ve,X.s)),Pe!==X.h&&(X.h=h(Ke,"backgroundColor",Pe,X.h)),Ce!==X.r&&(X.r=h(dt,"fg",Ce,X.r)),X},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),k})()}import{chmod as sg,mkdir as og,readFile as ag,rename as lg,unlink as cg,writeFile as ug}from"fs/promises";import{homedir as dg}from"os";import{dirname as hg,join as Rc}from"path";var fl=hu(Al(),1),{__extends:sw,__assign:ow,__rest:zt,__decorate:aw,__param:lw,__esDecorate:cw,__runInitializers:uw,__propKey:dw,__setFunctionName:hw,__metadata:Aw,__awaiter:gl,__generator:fw,__exportStar:gw,__createBinding:mw,__values:pw,__read:bw,__spread:yw,__spreadArrays:ww,__spreadArray:_w,__await:vw,__asyncGenerator:Cw,__asyncDelegator:Ew,__asyncValues:Sw,__makeTemplateObject:Iw,__importStar:xw,__importDefault:kw,__classPrivateFieldGet:Rw,__classPrivateFieldSet:Tw,__classPrivateFieldIn:Bw,__addDisposableResource:Ow,__disposeResources:Pw,__rewriteRelativeImportExtension:Nw}=fl.default;var ml=(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 ni 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 ii{constructor(e,{headers:t={},customFetch:r,region:n=An.Any}={}){this.url=e,this.headers=t,this.region=n,this.fetch=ml(r)}setAuth(e){this.headers.Authorization=`Bearer ${e}`}invoke(e){return gl(this,arguments,void 0,function*(t,r={}){var n;let s,i;try{let{headers:o,method:a,body:l,signal:c,timeout:u}=r,d={},{region:A}=r;if(!A)A=this.region;let m=new URL(`${this.url}/${t}`);if(A&&A!=="any")d["x-region"]=A,m.searchParams.set("forceFunctionRegion",A);let g;if(l&&(o&&!Object.prototype.hasOwnProperty.call(o,"Content-Type")||!o))if(typeof Blob<"u"&&l instanceof Blob||l instanceof ArrayBuffer)d["Content-Type"]="application/octet-stream",g=l;else if(typeof l==="string")d["Content-Type"]="text/plain",g=l;else if(typeof FormData<"u"&&l instanceof FormData)g=l;else d["Content-Type"]="application/json",g=JSON.stringify(l);else if(l&&typeof l!=="string"&&!(typeof Blob<"u"&&l instanceof Blob)&&!(l instanceof ArrayBuffer)&&!(typeof FormData<"u"&&l instanceof FormData))g=JSON.stringify(l);else g=l;let f=c;if(u)if(i=new AbortController,s=setTimeout(()=>i.abort(),u),c)f=i.signal,c.addEventListener("abort",()=>i.abort());else f=i.signal;let b=yield this.fetch(m.toString(),{method:a||"POST",headers:Object.assign(Object.assign(Object.assign({},d),this.headers),o),body:g,signal:f}).catch((_)=>{throw new ni(_)}),v=b.headers.get("x-relay-error");if(v&&v==="true")throw new gn(b);if(!b.ok)throw new mn(b);let w=((n=b.headers.get("Content-Type"))!==null&&n!==void 0?n:"text/plain").split(";")[0].trim(),C;if(w==="application/json")C=yield b.json();else if(w==="application/octet-stream"||w==="application/pdf")C=yield b.blob();else if(w==="text/event-stream")C=b;else if(w==="multipart/form-data")C=yield b.formData();else C=yield b.text();return{data:C,error:null,response:b}}catch(o){return{data:null,error:o,response:o instanceof mn||o instanceof gn?o.context:void 0}}finally{if(s)clearTimeout(s)}})}}var pl=(e)=>Math.min(1000*2**e,30000),AA=[520,503],_l=["GET","HEAD","OPTIONS"],vl=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 bl(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",s),r()},e);function s(){clearTimeout(n),r()}t===null||t===void 0||t.addEventListener("abort",s)})}function fA(e,t,r,n){if(!n||r>=3)return!1;if(!_l.includes(e))return!1;if(!AA.includes(t))return!1;return!0}var gA=class{constructor(e){var t,r,n,s,i;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=(s=e.urlLengthLimit)!==null&&s!==void 0?s:8000,this.retryEnabled=(i=e.retry)!==null&&i!==void 0?i:!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,i=(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(!_l.includes(r.method))throw d;if(r.retryEnabled&&o<3){let A=pl(o);o++,await bl(A,r.signal);continue}throw d}if(fA(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:pl(o);await u.text(),o++,await bl(A,r.signal);continue}return await r.processResponse(u)}})();if(!this.shouldThrowOnError)i=i.catch((o)=>{var a;let l="",c="",u="",d=o===null||o===void 0?void 0:o.cause;if(d){var A,m,g,f;let w=(A=d===null||d===void 0?void 0:d.message)!==null&&A!==void 0?A:"",C=(m=d===null||d===void 0?void 0:d.code)!==null&&m!==void 0?m:"";if(l=`${(g=o===null||o===void 0?void 0:o.name)!==null&&g!==void 0?g:"FetchError"}: ${o===null||o===void 0?void 0:o.message}`,l+=`
|
|
27
|
+
Press ? or Escape to close help.`),me((i)=>{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,m=E.accent,g=E.textPink;return o!==i.e&&(i.e=h(n,"left",o,i.e)),a!==i.t&&(i.t=h(n,"top",a,i.t)),l!==i.a&&(i.a=h(n,"width",l,i.a)),c!==i.o&&(i.o=h(n,"height",c,i.o)),u!==i.i&&(i.i=h(n,"visible",u,i.i)),d!==i.n&&(i.n=h(n,"borderColor",d,i.n)),A!==i.s&&(i.s=h(n,"backgroundColor",A,i.s)),m!==i.h&&(i.h=h(n,"titleColor",m,i.h)),g!==i.r&&(i.r=h(s,"fg",g,i.r)),i},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),n})()}function LA(e){let t=Y(()=>Math.max(1,Math.min(48,e.width-4))),r=Y(()=>Math.max(1,Math.min(7,e.height-2))),n=Y(()=>r()>=7?1:0);return(()=>{var s=I("box"),i=I("box"),o=I("input"),a=I("box"),l=I("text");return R(s,i),h(s,"id","filename-modal"),h(s,"position","absolute"),h(s,"zIndex",30),h(s,"border",!0),h(s,"title"," Save artwork "),h(s,"flexDirection","column"),R(i,o),R(i,a),R(i,l),h(i,"flexGrow",1),h(i,"width","100%"),h(i,"padding",1),h(i,"flexDirection","column"),h(o,"id","artwork-name-input"),h(o,"width","100%"),h(o,"maxLength",ys),h(o,"focused",!0),h(o,"onKeyDown",(c)=>{if(c.eventType!=="release"&&c.name==="escape")c.preventDefault(),e.onCancel()}),F(l,()=>e.error||"Enter save \xB7 Esc cancel"),me((c)=>{var u=Math.max(0,Math.floor((e.width-t())/2)),d=Math.max(0,Math.floor((e.height-r())/2)),A=t(),m=r(),g=E.border,f=E.panel,p=E.accent,v=E.panel,y=e.value,S=E.panelActive,_=E.panelActive,b=E.text,w=E.text,C=e.onInput,B=e.onSubmit,L=n(),P=e.error?E.warning:E.accentText;return u!==c.e&&(c.e=h(s,"left",u,c.e)),d!==c.t&&(c.t=h(s,"top",d,c.t)),A!==c.a&&(c.a=h(s,"width",A,c.a)),m!==c.o&&(c.o=h(s,"height",m,c.o)),g!==c.i&&(c.i=h(s,"borderColor",g,c.i)),f!==c.n&&(c.n=h(s,"backgroundColor",f,c.n)),p!==c.s&&(c.s=h(s,"titleColor",p,c.s)),v!==c.h&&(c.h=h(i,"backgroundColor",v,c.h)),y!==c.r&&(c.r=h(o,"value",y,c.r)),S!==c.d&&(c.d=h(o,"backgroundColor",S,c.d)),_!==c.l&&(c.l=h(o,"focusedBackgroundColor",_,c.l)),b!==c.u&&(c.u=h(o,"textColor",b,c.u)),w!==c.c&&(c.c=h(o,"focusedTextColor",w,c.c)),C!==c.w&&(c.w=h(o,"onInput",C,c.w)),B!==c.m&&(c.m=h(o,"on:enter",B,c.m)),L!==c.f&&(c.f=h(a,"height",L,c.f)),P!==c.y&&(c.y=h(l,"fg",P,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}),s})()}function xr(e){let t=ft(),r=gr(),[n,s]=J(0),[i,o]=J("Ready"),[a,l]=J(!1),[c,u]=J(null),[d,A]=J(!1),[m,g]=J(!1),[f,p]=J(""),[v,y]=J(""),[S,_]=J(2),[b,w]=J(null),C=!e.blenderLive,B=e.blenderLive??new Rs(()=>e.session.toDocument()),[L,P]=J(B.getStatus()),x=B.onStatus(P);qe(()=>{if(x(),C)B.dispose()});let G=Y(()=>r().width>=88&&r().height>=19),z=()=>n(),[W,ee]=J(0),te=(T=!1)=>{if(s((O)=>O+1),T)ee((O)=>O+1),B.sync()},V=()=>(n(),e.session.dirty),Te=Y(()=>(n(),en(e.session.palette,e.session.paletteColorAdjustment.saturation,e.session.paletteColorAdjustment.lightness))),Be=Y(()=>(W(),Zt(e.session.grid,e.session.paletteColorAdjustment.saturation,e.session.paletteColorAdjustment.lightness))),Z=Y(()=>(n(),{grid:Be(),revision:W(),cursor:e.session.cursor,zoom:S()})),H=()=>{if(c())u(null)},Re=(T=e.session.tool)=>{H();let O=e.session.applyAtCursor(T);te(O),o(O?`${Ir(T)} applied`:"No change")},pe=(T,O)=>{H(),e.session.moveCursor(T,O);let se=b(),de=se?e.session.applyAtCursor(se):!1;te(de),o(se&&de?`${Ir(se)} at ${e.session.cursor.x+1}, ${e.session.cursor.y+1}`:`Cell ${e.session.cursor.x+1}, ${e.session.cursor.y+1}`)},D=(T)=>{let O=T==="undo"?e.session.undo():e.session.redo();o(O?T==="undo"?"Undo":"Redo":`Nothing to ${T}`),te(O)},q=(T)=>{e.session.selectNextColor(T),H(),o(`Color ${e.session.selectedColorIndex+1}`),te()},ie=async()=>{if(d())return;let T=e.session.revision,O=e.session.toDocument();A(!0),o("Saving\u2026");try{let se;if(e.saveDocument)se=await e.saveDocument(O);else{let ge=e.filePath??`${e.session.filename}.flatblox.json`,Ce=un(O);if(e.writeFile)await e.writeFile(ge,Ce);else await Bun.write(ge,Ce);se=`Saved ${ge}`}let de=e.session.markSaved(T);u(null),o(de?se||"Saved":`${se||"Saved"}; newer edits remain unsaved`),te()}catch(se){let de=se instanceof Error?se.message:String(se);o(`Save failed: ${de}`)}finally{A(!1)}},ae=()=>{if(e.promptForFilenameOnSave){p(""),y(""),g(!0),o("Name artwork before saving");return}ie()},ze=(T)=>{let O=tn(T);if(!O){y("Enter an artwork name");return}e.session.rename(O),y(""),g(!1),te(),ie()},Ae=()=>{g(!1),y(""),o("Save cancelled")},ve=(T)=>{if(!V()||c()===T){if(T==="back"&&e.onBack)e.onBack();else t.destroy();return}u(T),o(T==="back"?"Unsaved changes \u2014 press Escape again to return":"Unsaved changes \u2014 press Q again to quit")},et=(T)=>{e.session.setTool(T),H(),o(`${Ir(T)} tool`),te()},Qe=(T)=>{let O=Math.max(1,Math.min(8,S()+T));_(O),o(`Zoom ${O}\xD7`)},Je=async()=>{let T=B.getStatus();if(T.state==="connected"||T.state==="connecting"){B.disconnect(),o("Blender Live disconnected");return}o("Connecting to Blender\u2026");let O=await B.connect();o(O.state==="connected"?"Drawing live in Blender":O.message??"Blender Live disconnected")},re=(T)=>{e.session.setCursor(T.x,T.y);let O=T.tool??e.session.tool,se=e.session.applyAt(T.x,T.y,O);H(),o(se?`${Ir(O)} at ${T.x+1}, ${T.y+1}`:`Cell ${T.x+1}, ${T.y+1}`),te(se)};mr((T)=>{let O=T.name.toLowerCase(),se=T.sequence,de=qt(T),ge=er(O);if(T.eventType==="release"){if(de)w(null);return}if(m())return;if(a()){if(O==="escape"||se==="?")l(!1);return}let Ce=O==="q"||O==="escape"||T.ctrl&&O==="c";if(c()&&!Ce)u(null);if(T.ctrl){if(O==="s")ae();else if(O==="z"&&T.shift)D("redo");else if(O==="z")D("undo");else if(O==="y")D("redo");else if(O==="c")ve("quit");return}if(se==="?"){l(!0);return}if(O==="escape"&&e.onBack){ve("back");return}if(O==="q"||O==="escape"){ve("quit");return}if(ge)pe(ge.dx,ge.dy);else if(de){let Oe=e.session.tool;w(T.source==="kitty"&&(Oe==="draw"||Oe==="erase")?Oe:null),Re(Oe)}else if(O==="b")Je();else if(O==="d")et("draw");else if(O==="e")et("erase");else if(O==="f")et("fill");else if(O==="x")e.session.toggleMirrorX(),o(`Mirror X ${e.session.mirrorX?"on":"off"}`),te();else if(O==="y")e.session.toggleMirrorY(),o(`Mirror Y ${e.session.mirrorY?"on":"off"}`),te();else if(O==="u")D("undo");else if(O==="r")D("redo");else if(se==="+"||O==="+"||O==="=")Qe(1);else if(se==="-"||O==="-")Qe(-1);else if(se==="[")q(-1);else if(se==="]")q(1);else if(/^[0-9]$/.test(O))e.session.selectColor(O==="0"?9:Number(O)-1),o(`Color ${e.session.selectedColorIndex+1}`),te()},{release:!0});let k=()=>{n();let T=e.session.dirty?" \u25CF":"";return`${e.session.filename}${T} ${e.session.size}\xD7${e.session.size}`},j=()=>{switch(L().state){case"connecting":return"connecting";case"connected":return"live";case"error":return"error";default:return"off"}};return(()=>{var T=I("box"),O=I("box"),se=I("text"),de=I("b"),ge=I("box"),Ce=I("text"),Oe=I("box"),ne=I("box"),bt=I("pixel_grid"),Ke=I("box"),At=I("text"),Ur=we("Blender:"),Rt=we(" | ");return R(T,O),R(T,Oe),R(T,Ke),h(T,"width","100%"),h(T,"height","100%"),h(T,"flexDirection","column"),R(O,se),R(O,ge),R(O,Ce),h(O,"height",3),h(O,"paddingX",1),h(O,"paddingY",1),h(O,"flexDirection","row"),h(O,"justifyContent","space-between"),R(se,de),F(de,ii),h(ge,"height",1),h(ge,"flexBasis",0),h(ge,"flexGrow",1),h(ge,"flexDirection","row"),h(ge,"justifyContent","center"),F(ge,Q(Sr,{id:"dashboard-wordmark",width:14,height:1,get backgroundColor(){return E.panel},get foregroundColor(){return E.accent}})),F(Ce,k),R(Oe,ne),h(Oe,"flexGrow",1),h(Oe,"flexDirection","row"),h(Oe,"padding",1),h(Oe,"gap",1),R(ne,bt),h(ne,"flexGrow",1),h(ne,"overflow","hidden"),h(bt,"id","pixel-grid"),h(bt,"width","100%"),h(bt,"height","100%"),h(bt,"flexGrow",1),h(bt,"onCell",re),F(Oe,Q(Le,{get when(){return G()},get children(){return Q(PA,{get session(){return e.session},get colors(){return Te()},refresh:z,visible:!0})}}),null),F(T,Q(Le,{get when(){return!G()},get children(){return Q(NA,{get session(){return e.session},get colors(){return Te()},refresh:z,visible:!0})}}),Ke),R(Ke,At),h(Ke,"height",1),h(Ke,"paddingX",1),h(Ke,"flexDirection","row"),h(Ke,"justifyContent","space-between"),R(At,Ur),R(At,Rt),F(At,j,Rt),F(At,i,null),F(Ke,Q(Le,{get when(){return i().length<Math.max(8,r().width-58)},get children(){var X=I("text"),Ft=we("-/+ zoom \xB7 ? help \xB7 Ctrl+S save \xB7 "),Tt=we("Q quit");return R(X,Ft),R(X,Tt),F(X,()=>e.onBack?"Esc artworks \xB7 ":"",Tt),me((Qt)=>h(X,"fg",E.muted,Qt)),X}}),null),F(T,Q(DA,{get width(){return r().width},get height(){return r().height},get visible(){return a()},get canGoBack(){return Boolean(e.onBack)}}),null),F(T,Q(Le,{get when(){return m()},get children(){return Q(LA,{get width(){return r().width},get height(){return r().height},get value(){return f()},get error(){return v()},onInput:(X)=>{if(p(X),v())y("")},onSubmit:ze,onCancel:Ae})}}),null),me((X)=>{var{background:Ft,panel:Tt}=E,Qt=L().state==="error"?E.warning:E.accentText,jr=V()?E.warning:E.muted,Hr=E.background,he=E.background,_e=Z(),Pe=E.panelActive,Ee=i().startsWith("Save failed")||L().state==="error"?E.warning:E.textPink;return Ft!==X.e&&(X.e=h(T,"backgroundColor",Ft,X.e)),Tt!==X.t&&(X.t=h(O,"backgroundColor",Tt,X.t)),Qt!==X.a&&(X.a=h(se,"fg",Qt,X.a)),jr!==X.o&&(X.o=h(Ce,"fg",jr,X.o)),Hr!==X.i&&(X.i=h(Oe,"backgroundColor",Hr,X.i)),he!==X.n&&(X.n=h(ne,"backgroundColor",he,X.n)),_e!==X.s&&(X.s=h(bt,"model",_e,X.s)),Pe!==X.h&&(X.h=h(Ke,"backgroundColor",Pe,X.h)),Ee!==X.r&&(X.r=h(At,"fg",Ee,X.r)),X},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),T})()}import{chmod as Rg,mkdir as Tg,readFile as Bg,rename as Og,unlink as Pg,writeFile as Ng}from"fs/promises";import{homedir as Dg}from"os";import{dirname as Lg,join as Hc}from"path";var xl=Su(Il(),1),{__extends:n_,__assign:i_,__rest:tr,__decorate:s_,__param:o_,__esDecorate:a_,__runInitializers:l_,__propKey:c_,__setFunctionName:u_,__metadata:d_,__awaiter:kl,__generator:h_,__exportStar:A_,__createBinding:f_,__values:g_,__read:m_,__spread:p_,__spreadArrays:b_,__spreadArray:y_,__await:w_,__asyncGenerator:__,__asyncDelegator:v_,__asyncValues:C_,__makeTemplateObject:E_,__importStar:S_,__importDefault:I_,__classPrivateFieldGet:x_,__classPrivateFieldSet:k_,__classPrivateFieldIn:R_,__addDisposableResource:T_,__disposeResources:B_,__rewriteRelativeImportExtension:O_}=xl.default;var Rl=(e)=>{if(e)return(...t)=>e(...t);return(...t)=>fetch(...t)};class pn extends Error{constructor(e,t="FunctionsError",r){super(e);this.name=t,this.context=r}toJSON(){return{name:this.name,message:this.message,context:this.context}}}class li extends pn{constructor(e){super("Failed to send a request to the Edge Function","FunctionsFetchError",e)}}class bn extends pn{constructor(e){super("Relay Error invoking the Edge Function","FunctionsRelayError",e)}}class yn extends pn{constructor(e){super("Edge Function returned a non-2xx status code","FunctionsHttpError",e)}}var mn;(function(e){e.Any="any",e.ApNortheast1="ap-northeast-1",e.ApNortheast2="ap-northeast-2",e.ApSouth1="ap-south-1",e.ApSoutheast1="ap-southeast-1",e.ApSoutheast2="ap-southeast-2",e.CaCentral1="ca-central-1",e.EuCentral1="eu-central-1",e.EuWest1="eu-west-1",e.EuWest2="eu-west-2",e.EuWest3="eu-west-3",e.SaEast1="sa-east-1",e.UsEast1="us-east-1",e.UsWest1="us-west-1",e.UsWest2="us-west-2"})(mn||(mn={}));class ci{constructor(e,{headers:t={},customFetch:r,region:n=mn.Any}={}){this.url=e,this.headers=t,this.region=n,this.fetch=Rl(r)}setAuth(e){this.headers.Authorization=`Bearer ${e}`}invoke(e){return kl(this,arguments,void 0,function*(t,r={}){var n;let s,i;try{let{headers:o,method:a,body:l,signal:c,timeout:u}=r,d={},{region:A}=r;if(!A)A=this.region;let m=new URL(`${this.url}/${t}`);if(A&&A!=="any")d["x-region"]=A,m.searchParams.set("forceFunctionRegion",A);let g;if(l&&(o&&!Object.prototype.hasOwnProperty.call(o,"Content-Type")||!o))if(typeof Blob<"u"&&l instanceof Blob||l instanceof ArrayBuffer)d["Content-Type"]="application/octet-stream",g=l;else if(typeof l==="string")d["Content-Type"]="text/plain",g=l;else if(typeof FormData<"u"&&l instanceof FormData)g=l;else d["Content-Type"]="application/json",g=JSON.stringify(l);else if(l&&typeof l!=="string"&&!(typeof Blob<"u"&&l instanceof Blob)&&!(l instanceof ArrayBuffer)&&!(typeof FormData<"u"&&l instanceof FormData))g=JSON.stringify(l);else g=l;let f=c;if(u)if(i=new AbortController,s=setTimeout(()=>i.abort(),u),c)f=i.signal,c.addEventListener("abort",()=>i.abort());else f=i.signal;let p=yield this.fetch(m.toString(),{method:a||"POST",headers:Object.assign(Object.assign(Object.assign({},d),this.headers),o),body:g,signal:f}).catch((_)=>{throw new li(_)}),v=p.headers.get("x-relay-error");if(v&&v==="true")throw new bn(p);if(!p.ok)throw new yn(p);let y=((n=p.headers.get("Content-Type"))!==null&&n!==void 0?n:"text/plain").split(";")[0].trim(),S;if(y==="application/json")S=yield p.json();else if(y==="application/octet-stream"||y==="application/pdf")S=yield p.blob();else if(y==="text/event-stream")S=p;else if(y==="multipart/form-data")S=yield p.formData();else S=yield p.text();return{data:S,error:null,response:p}}catch(o){return{data:null,error:o,response:o instanceof yn||o instanceof bn?o.context:void 0}}finally{if(s)clearTimeout(s)}})}}var Tl=(e)=>Math.min(1000*2**e,30000),MA=[520,503],Nl=["GET","HEAD","OPTIONS"],Dl=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 Bl(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",s),r()},e);function s(){clearTimeout(n),r()}t===null||t===void 0||t.addEventListener("abort",s)})}function FA(e,t,r,n){if(!n||r>=3)return!1;if(!Nl.includes(e))return!1;if(!MA.includes(t))return!1;return!0}var GA=class{constructor(e){var t,r,n,s,i;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=(s=e.urlLengthLimit)!==null&&s!==void 0?s:8000,this.retryEnabled=(i=e.retry)!==null&&i!==void 0?i:!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,i=(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(!Nl.includes(r.method))throw d;if(r.retryEnabled&&o<3){let A=Tl(o);o++,await Bl(A,r.signal);continue}throw d}if(FA(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:Tl(o);await u.text(),o++,await Bl(A,r.signal);continue}return await r.processResponse(u)}})();if(!this.shouldThrowOnError)i=i.catch((o)=>{var a;let l="",c="",u="",d=o===null||o===void 0?void 0:o.cause;if(d){var A,m,g,f;let y=(A=d===null||d===void 0?void 0:d.message)!==null&&A!==void 0?A:"",S=(m=d===null||d===void 0?void 0:d.code)!==null&&m!==void 0?m:"";if(l=`${(g=o===null||o===void 0?void 0:o.name)!==null&&g!==void 0?g:"FetchError"}: ${o===null||o===void 0?void 0:o.message}`,l+=`
|
|
28
28
|
|
|
29
|
-
Caused by: ${(f=d===null||d===void 0?void 0:d.name)!==null&&f!==void 0?f:"Error"}: ${
|
|
30
|
-
${d.stack}`}else{var b;l=(b=o===null||o===void 0?void 0:o.stack)!==null&&b!==void 0?b:""}let v=this.url.toString().length;if((o===null||o===void 0?void 0:o.name)==="AbortError"||(o===null||o===void 0?void 0:o.code)==="ABORT_ERR"){if(u="",c="Request was aborted (timeout or manual cancellation)",v>this.urlLengthLimit)c+=`. Note: Your request URL is ${v} characters, which may exceed server limits. If selecting many fields, consider using views. If filtering with large arrays (e.g., .in('id', [many IDs])), consider using an RPC function to pass values server-side.`}else if((d===null||d===void 0?void 0:d.name)==="HeadersOverflowError"||(d===null||d===void 0?void 0:d.code)==="UND_ERR_HEADERS_OVERFLOW"){if(u="",c="HTTP headers exceeded server limits (typically 16KB)",v>this.urlLengthLimit)c+=`. Your request URL is ${v} characters. If selecting many fields, consider using views. If filtering with large arrays (e.g., .in('id', [200+ IDs])), consider using an RPC function instead.`}return{success:!1,error:{message:`${(a=o===null||o===void 0?void 0:o.name)!==null&&a!==void 0?a:"FetchError"}: ${o===null||o===void 0?void 0:o.message}`,details:l,hint:c,code:u},data:null,count:null,status:0,statusText:""}});return i.then(e,t)}async processResponse(e){var t=this;let r=null,n=null,s=null,i=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)s=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,s=null,i=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,i=200,o="OK"}catch(d){if(e.status===404&&u==="")i=204,o="No Content";else r={message:u}}if(r&&t.shouldThrowOnError)throw new vl(r)}return{success:r===null,error:r,data:n,count:s,status:i,statusText:o}}returns(){return this}overrideTypes(){return this}},mA=class extends gA{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:s=n}={}){let i=s?`${s}.order`:"order",o=this.url.searchParams.get(i);return this.url.searchParams.set(i,`${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 s=typeof n>"u"?"offset":`${n}.offset`,i=typeof n>"u"?"limit":`${n}.limit`;return this.url.searchParams.set(s,`${e}`),this.url.searchParams.set(i,`${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:s=!1,format:i="text"}={}){var o;let a=[e?"analyze":null,t?"verbose":null,r?"settings":null,n?"buffers":null,s?"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+${i}; for="${l}"; options=${a};`),i==="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}},yl=new RegExp("[,()]"),Ir=class extends mA{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"&&yl.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"&&yl.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 s="";if(n==="plain")s="pl";else if(n==="phrase")s="ph";else if(n==="websearch")s="w";let i=r===void 0?"":`(${r})`;return this.url.searchParams.append(e,`${s}fts${i}.${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}},pA=class{constructor(e,{headers:t={},schema:r,fetch:n,urlLengthLimit:s=8000,retry:i}){this.url=e,this.headers=new Headers(t),this.schema=r,this.fetch=n,this.urlLengthLimit=s,this.retry=i}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:{},s=r?"HEAD":"GET",i=!1,o=(e!==null&&e!==void 0?e:"*").split("").map((c)=>{if(/\s/.test(c)&&!i)return"";if(c==='"')i=!i;return c}).join(""),{url:a,headers:l}=this.cloneRequestState();if(a.searchParams.set("select",o),n)l.append("Prefer",`count=${n}`);return new Ir({method:s,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 s="POST",{url:i,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}"`);i.searchParams.set("columns",l.join(","))}}return new Ir({method:"POST",url:i,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:s=!0}={}){var i;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(!s)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 Ir({method:"POST",url:a,headers:l,schema:this.schema,body:e,fetch:(i=this.fetch)!==null&&i!==void 0?i:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}update(e,{count:t}={}){var r;let n="PATCH",{url:s,headers:i}=this.cloneRequestState();if(t)i.append("Prefer",`count=${t}`);return new Ir({method:"PATCH",url:s,headers:i,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:s}=this.cloneRequestState();if(e)s.append("Prefer",`count=${e}`);return new Ir({method:"DELETE",url:n,headers:s,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 bA(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 yA(e){var t=bA(e,"string");return pn(t)=="symbol"?t:t+""}function wA(e,t,r){return(t=yA(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function wl(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),r.push.apply(r,n)}return r}function si(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?wl(Object(r),!0).forEach(function(n){wA(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):wl(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}var Cl=class e{constructor(t,{headers:r={},schema:n,fetch:s,timeout:i,urlLengthLimit:o=8000,retry:a}={}){this.url=t,this.headers=new Headers(r),this.schemaName=n,this.urlLengthLimit=o;let l=s!==null&&s!==void 0?s:globalThis.fetch;if(i!==void 0&&i>0)this.fetch=(c,u)=>{let d=new AbortController,A=setTimeout(()=>d.abort(),i),m=u===null||u===void 0?void 0:u.signal;if(m){if(m.aborted)return clearTimeout(A),l(c,u);let g=()=>{clearTimeout(A),d.abort()};return m.addEventListener("abort",g,{once:!0}),l(c,si(si({},u),{},{signal:d.signal})).finally(()=>{clearTimeout(A),m.removeEventListener("abort",g)})}return l(c,si(si({},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 pA(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:s=!1,count:i}={}){var o;let a,l=new URL(`${this.url}/rpc/${t}`),c,u=(m)=>m!==null&&typeof m==="object"&&(!Array.isArray(m)||m.some(u)),d=n&&Object.values(r).some(u);if(d)a="POST",c=r;else if(n||s)a=n?"HEAD":"GET",Object.entries(r).filter(([m,g])=>g!==void 0).map(([m,g])=>[m,Array.isArray(g)?`{${g.join(",")}}`:`${g}`]).forEach(([m,g])=>{l.searchParams.append(m,g)});else a="POST",c=r;let A=new Headers(this.headers);if(d)A.set("Prefer",i?`count=${i},return=minimal`:"return=minimal");else if(i)A.set("Prefer",`count=${i}`);return new Ir({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 El{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,s=parseInt(n.replace(/^v/,"").split(".")[0]);if(s>=22){if(typeof globalThis.WebSocket<"u")return{type:"native",constructor:globalThis.WebSocket};return{type:"unsupported",error:`Node.js ${s} detected but native WebSocket not found.`,workaround:"Provide a WebSocket implementation via the transport option."}}return{type:"unsupported",error:`Node.js ${s} detected without native WebSocket support.`,workaround:`For Node.js < 22, install "ws" package and provide it via the transport option:
|
|
29
|
+
Caused by: ${(f=d===null||d===void 0?void 0:d.name)!==null&&f!==void 0?f:"Error"}: ${y}`,S)l+=` (${S})`;if(d===null||d===void 0?void 0:d.stack)l+=`
|
|
30
|
+
${d.stack}`}else{var p;l=(p=o===null||o===void 0?void 0:o.stack)!==null&&p!==void 0?p:""}let v=this.url.toString().length;if((o===null||o===void 0?void 0:o.name)==="AbortError"||(o===null||o===void 0?void 0:o.code)==="ABORT_ERR"){if(u="",c="Request was aborted (timeout or manual cancellation)",v>this.urlLengthLimit)c+=`. Note: Your request URL is ${v} characters, which may exceed server limits. If selecting many fields, consider using views. If filtering with large arrays (e.g., .in('id', [many IDs])), consider using an RPC function to pass values server-side.`}else if((d===null||d===void 0?void 0:d.name)==="HeadersOverflowError"||(d===null||d===void 0?void 0:d.code)==="UND_ERR_HEADERS_OVERFLOW"){if(u="",c="HTTP headers exceeded server limits (typically 16KB)",v>this.urlLengthLimit)c+=`. Your request URL is ${v} characters. If selecting many fields, consider using views. If filtering with large arrays (e.g., .in('id', [200+ IDs])), consider using an RPC function instead.`}return{success:!1,error:{message:`${(a=o===null||o===void 0?void 0:o.name)!==null&&a!==void 0?a:"FetchError"}: ${o===null||o===void 0?void 0:o.message}`,details:l,hint:c,code:u},data:null,count:null,status:0,statusText:""}});return i.then(e,t)}async processResponse(e){var t=this;let r=null,n=null,s=null,i=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)s=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,s=null,i=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,i=200,o="OK"}catch(d){if(e.status===404&&u==="")i=204,o="No Content";else r={message:u}}if(r&&t.shouldThrowOnError)throw new Dl(r)}return{success:r===null,error:r,data:n,count:s,status:i,statusText:o}}returns(){return this}overrideTypes(){return this}},UA=class extends GA{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:s=n}={}){let i=s?`${s}.order`:"order",o=this.url.searchParams.get(i);return this.url.searchParams.set(i,`${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 s=typeof n>"u"?"offset":`${n}.offset`,i=typeof n>"u"?"limit":`${n}.limit`;return this.url.searchParams.set(s,`${e}`),this.url.searchParams.set(i,`${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:s=!1,format:i="text"}={}){var o;let a=[e?"analyze":null,t?"verbose":null,r?"settings":null,n?"buffers":null,s?"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+${i}; for="${l}"; options=${a};`),i==="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}},Ol=new RegExp("[,()]"),Rr=class extends UA{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"&&Ol.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"&&Ol.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 s="";if(n==="plain")s="pl";else if(n==="phrase")s="ph";else if(n==="websearch")s="w";let i=r===void 0?"":`(${r})`;return this.url.searchParams.append(e,`${s}fts${i}.${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}},jA=class{constructor(e,{headers:t={},schema:r,fetch:n,urlLengthLimit:s=8000,retry:i}){this.url=e,this.headers=new Headers(t),this.schema=r,this.fetch=n,this.urlLengthLimit=s,this.retry=i}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:{},s=r?"HEAD":"GET",i=!1,o=(e!==null&&e!==void 0?e:"*").split("").map((c)=>{if(/\s/.test(c)&&!i)return"";if(c==='"')i=!i;return c}).join(""),{url:a,headers:l}=this.cloneRequestState();if(a.searchParams.set("select",o),n)l.append("Prefer",`count=${n}`);return new Rr({method:s,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 s="POST",{url:i,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}"`);i.searchParams.set("columns",l.join(","))}}return new Rr({method:"POST",url:i,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:s=!0}={}){var i;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(!s)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 Rr({method:"POST",url:a,headers:l,schema:this.schema,body:e,fetch:(i=this.fetch)!==null&&i!==void 0?i:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}update(e,{count:t}={}){var r;let n="PATCH",{url:s,headers:i}=this.cloneRequestState();if(t)i.append("Prefer",`count=${t}`);return new Rr({method:"PATCH",url:s,headers:i,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:s}=this.cloneRequestState();if(e)s.append("Prefer",`count=${e}`);return new Rr({method:"DELETE",url:n,headers:s,schema:this.schema,fetch:(t=this.fetch)!==null&&t!==void 0?t:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}};function wn(e){return wn=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},wn(e)}function HA(e,t){if(wn(e)!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t||"default");if(wn(n)!="object")return n;throw TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function KA(e){var t=HA(e,"string");return wn(t)=="symbol"?t:t+""}function WA(e,t,r){return(t=KA(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Pl(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),r.push.apply(r,n)}return r}function ui(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?Pl(Object(r),!0).forEach(function(n){WA(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Pl(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}var Ll=class e{constructor(t,{headers:r={},schema:n,fetch:s,timeout:i,urlLengthLimit:o=8000,retry:a}={}){this.url=t,this.headers=new Headers(r),this.schemaName=n,this.urlLengthLimit=o;let l=s!==null&&s!==void 0?s:globalThis.fetch;if(i!==void 0&&i>0)this.fetch=(c,u)=>{let d=new AbortController,A=setTimeout(()=>d.abort(),i),m=u===null||u===void 0?void 0:u.signal;if(m){if(m.aborted)return clearTimeout(A),l(c,u);let g=()=>{clearTimeout(A),d.abort()};return m.addEventListener("abort",g,{once:!0}),l(c,ui(ui({},u),{},{signal:d.signal})).finally(()=>{clearTimeout(A),m.removeEventListener("abort",g)})}return l(c,ui(ui({},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 jA(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:s=!1,count:i}={}){var o;let a,l=new URL(`${this.url}/rpc/${t}`),c,u=(m)=>m!==null&&typeof m==="object"&&(!Array.isArray(m)||m.some(u)),d=n&&Object.values(r).some(u);if(d)a="POST",c=r;else if(n||s)a=n?"HEAD":"GET",Object.entries(r).filter(([m,g])=>g!==void 0).map(([m,g])=>[m,Array.isArray(g)?`{${g.join(",")}}`:`${g}`]).forEach(([m,g])=>{l.searchParams.append(m,g)});else a="POST",c=r;let A=new Headers(this.headers);if(d)A.set("Prefer",i?`count=${i},return=minimal`:"return=minimal");else if(i)A.set("Prefer",`count=${i}`);return new Rr({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 Ml{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,s=parseInt(n.replace(/^v/,"").split(".")[0]);if(s>=22){if(typeof globalThis.WebSocket<"u")return{type:"native",constructor:globalThis.WebSocket};return{type:"unsupported",error:`Node.js ${s} detected but native WebSocket not found.`,workaround:"Provide a WebSocket implementation via the transport option."}}return{type:"unsupported",error:`Node.js ${s} 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 Ts=El;var Sl="2.103.0";var Il=`realtime-js/${Sl}`,xl="1.0.0",Bs="2.0.0",kl=Bs;var Rl=1e4;var Tl=100;var _t={closed:"closed",errored:"errored",joined:"joined",joining:"joining",leaving:"leaving"},oi={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 ai{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:{},i=new TextEncoder().encode(JSON.stringify(n)).buffer;return this._encodeUserBroadcastPush(e,this.JSON_ENCODING,i)}_encodeUserBroadcastPush(e,t,r){var n,s;let i=e.topic,o=(n=e.ref)!==null&&n!==void 0?n:"",a=(s=e.join_ref)!==null&&s!==void 0?s:"",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(i.length>255)throw Error(`topic length ${i.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+i.length+l.length+u.length,A=new ArrayBuffer(this.HEADER_LENGTH+d),m=new DataView(A),g=0;m.setUint8(g++,this.KINDS.userBroadcastPush),m.setUint8(g++,a.length),m.setUint8(g++,o.length),m.setUint8(g++,i.length),m.setUint8(g++,l.length),m.setUint8(g++,u.length),m.setUint8(g++,t),Array.from(a,(b)=>m.setUint8(g++,b.charCodeAt(0))),Array.from(o,(b)=>m.setUint8(g++,b.charCodeAt(0))),Array.from(i,(b)=>m.setUint8(g++,b.charCodeAt(0))),Array.from(l,(b)=>m.setUint8(g++,b.charCodeAt(0))),Array.from(u,(b)=>m.setUint8(g++,b.charCodeAt(0)));var f=new Uint8Array(A.byteLength+r.byteLength);return f.set(new Uint8Array(A),0),f.set(new Uint8Array(r),A.byteLength),f.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,s,i,o,a]=r;return t({join_ref:n,ref:s,topic:i,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),s=t.getUint8(2),i=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+s));a=a+s;let u=r.decode(e.slice(a,a+i));a=a+i;let d=e.slice(a,e.byteLength),A=o===this.JSON_ENCODING?JSON.parse(r.decode(d)):d,m={type:this.BROADCAST_EVENT,event:c,payload:A};if(i>0)m.meta=JSON.parse(u);return{join_ref:null,ref:null,topic:l,event:this.BROADCAST_EVENT,payload:m}}_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 be;(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"})(be||(be={}));var Ps=(e,t,r={})=>{var n;let s=(n=r.skipTypes)!==null&&n!==void 0?n:[];if(!t)return{};return Object.keys(t).reduce((i,o)=>(i[o]=_A(o,e,t,s),i),{})},_A=(e,t,r,n)=>{let s=t.find((a)=>a.name===e),i=s===null||s===void 0?void 0:s.type,o=r[e];if(i&&!n.includes(i))return Bl(i,o);return Os(o)},Bl=(e,t)=>{if(e.charAt(0)==="_"){let r=e.slice(1,e.length);return SA(t,r)}switch(e){case be.bool:return vA(t);case be.float4:case be.float8:case be.int2:case be.int4:case be.int8:case be.numeric:case be.oid:return CA(t);case be.json:case be.jsonb:return EA(t);case be.timestamp:return IA(t);case be.abstime:case be.date:case be.daterange:case be.int4range:case be.int8range:case be.money:case be.reltime:case be.text:case be.time:case be.timestamptz:case be.timetz:case be.tsrange:case be.tstzrange:return Os(t);default:return Os(t)}},Os=(e)=>e,vA=(e)=>{switch(e){case"t":return!0;case"f":return!1;default:return e}},CA=(e)=>{if(typeof e==="string"){let t=parseFloat(e);if(!Number.isNaN(t))return t}return e},EA=(e)=>{if(typeof e==="string")try{return JSON.parse(e)}catch(t){return e}return e},SA=(e,t)=>{if(typeof e!=="string")return e;let r=e.length-1,n=e[r];if(e[0]==="{"&&n==="}"){let i,o=e.slice(1,r);try{i=JSON.parse("["+o+"]")}catch(a){i=o?o.split(","):[]}return i.map((a)=>Bl(t,a))}return e},IA=(e)=>{if(typeof e==="string")return e.replace(" ","T");return e},li=(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}},kA=typeof self<"u"?self:null,kr=typeof window<"u"?window:null,vt=kA||kr||globalThis,RA="2.0.0",TA=1e4,BA=1000,Ct={connecting:0,open:1,closing:2,closed:3},nt={closed:"closed",errored:"errored",joined:"joined",joining:"joining",leaving:"leaving"},Nt={close:"phx_close",error:"phx_error",join:"phx_join",reply:"phx_reply",leave:"phx_leave"},Ns={longpoll:"longpoll",websocket:"websocket"},OA={complete:4},Ds="base64url.bearer.phx.",ci=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})}},Ol=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))}},PA=class{constructor(e,t,r){this.state=nt.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 ci(this,Nt.join,this.params,this.timeout),this.pushBuffer=[],this.stateChangeRefs=[],this.rejoinTimer=new Ol(()=>{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=nt.joined,this.rejoinTimer.reset(),this.pushBuffer.forEach((n)=>n.send()),this.pushBuffer=[]}),this.joinPush.receive("error",(n)=>{if(this.state=nt.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=nt.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=nt.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 ci(this,Nt.leave,yn({}),this.timeout).send(),this.state=nt.errored,this.joinPush.reset(),this.socket.isConnected())this.rejoinTimer.scheduleTimeout()}),this.on(Nt.reply,(n,s)=>{this.trigger(this.replyEventName(s),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=nt.closed,this.bindings=[]}onClose(e){this.on(Nt.close,e)}onError(e){return this.on(Nt.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 ci(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=nt.leaving;let t=()=>{if(this.socket.hasLogger())this.socket.log("channel",`leave ${this.topic}`);this.trigger(Nt.close,"leave")},r=new ci(this,Nt.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=nt.joining,this.joinPush.resend(e)}trigger(e,t,r,n){let s=this.onMessage(e,t,r,n);if(t&&!s)throw Error("channel onMessage callbacks must return the payload, modified or unmodified");let i=this.bindings.filter((o)=>o.event===e&&this.filterBindings(o,t,r));for(let o=0;o<i.length;o++)i[o].callback(s,r,n||this.joinRef())}replyEventName(e){return`chan_reply_${e}`}isClosed(){return this.state===nt.closed}isErrored(){return this.state===nt.errored}isJoined(){return this.state===nt.joined}isJoining(){return this.state===nt.joining}isLeaving(){return this.state===nt.leaving}},di=class{static request(e,t,r,n,s,i,o){if(vt.XDomainRequest){let a=new vt.XDomainRequest;return this.xdomainRequest(a,e,t,n,s,i,o)}else if(vt.XMLHttpRequest){let a=new vt.XMLHttpRequest;return this.xhrRequest(a,e,t,r,n,s,i,o)}else if(vt.fetch&&vt.AbortController)return this.fetchRequest(e,t,r,n,s,i,o);else throw Error("No suitable XMLHttpRequest implementation found")}static fetchRequest(e,t,r,n,s,i,o){let a={method:e,headers:r,body:n},l=null;if(s){l=new AbortController;let c=setTimeout(()=>l.abort(),s);a.signal=l.signal}return vt.fetch(t,a).then((c)=>c.text()).then((c)=>this.parseJSON(c)).then((c)=>o&&o(c)).catch((c)=>{if(c.name==="AbortError"&&i)i();else o&&o(null)}),l}static xdomainRequest(e,t,r,n,s,i,o){if(e.timeout=s,e.open(t,r),e.onload=()=>{let a=this.parseJSON(e.responseText);o&&o(a)},i)e.ontimeout=i;return e.onprogress=()=>{},e.send(n),e}static xhrRequest(e,t,r,n,s,i,o,a){e.open(t,r,!0),e.timeout=i;for(let[l,c]of Object.entries(n))e.setRequestHeader(l,c);if(e.onerror=()=>a&&a(null),e.onreadystatechange=()=>{if(e.readyState===OA.complete&&a){let l=this.parseJSON(e.responseText);a(l)}},o)e.ontimeout=o;return e.send(s),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 s=t?`${t}[${n}]`:n,i=e[n];if(typeof i==="object")r.push(this.serialize(i,s));else r.push(encodeURIComponent(s)+"="+encodeURIComponent(i))}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)}`}},NA=(e)=>{let t="",r=new Uint8Array(e),n=r.byteLength;for(let s=0;s<n;s++)t+=String.fromCharCode(r[s]);return btoa(t)},xr=class{constructor(e,t){if(t&&t.length===2&&t[1].startsWith(Ds))this.authToken=atob(t[1].slice(Ds.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=Ct.connecting,setTimeout(()=>this.poll(),0)}normalizeEndpoint(e){return e.replace("ws://","http://").replace("wss://","https://").replace(new RegExp("(.*)/"+Ns.websocket),"$1/"+Ns.longpoll)}endpointURL(){return di.appendParams(this.pollEndpoint,{token:this.token})}closeAndRetry(e,t,r){this.close(e,t,r),this.readyState=Ct.connecting}ontimeout(){this.onerror("timeout"),this.closeAndRetry(1005,"timeout",!1)}isActive(){return this.readyState===Ct.open||this.readyState===Ct.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:s}=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:s.forEach((i)=>{setTimeout(()=>this.onmessage({data:i}),0)}),this.poll();break;case 204:this.poll();break;case 410:this.readyState=Ct.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=NA(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 s of this.reqs)s.abort();this.readyState=Ct.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,s){let i,o=()=>{this.reqs.delete(i),n()};i=di.request(e,this.endpointURL(),t,r,this.timeout,o,(a)=>{if(this.reqs.delete(i),this.isActive())s(a)}),this.reqs.add(i)}},Pl=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,(s)=>{let{onJoin:i,onLeave:o,onSync:a}=this.caller;this.joinRef=this.channel.joinRef(),this.state=e.syncState(this.state,s,i,o),this.pendingDiffs.forEach((l)=>{this.state=e.syncDiff(this.state,l,i,o)}),this.pendingDiffs=[],a()}),this.channel.on(n.diff,(s)=>{let{onJoin:i,onLeave:o,onSync:a}=this.caller;if(this.inPendingSyncState())this.pendingDiffs.push(s);else this.state=e.syncDiff(this.state,s,i,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,s){let i=this.clone(t),o={},a={};return this.map(i,(l,c)=>{if(!r[l])a[l]=c}),this.map(r,(l,c)=>{let u=i[l];if(u){let d=c.metas.map((f)=>f.phx_ref),A=u.metas.map((f)=>f.phx_ref),m=c.metas.filter((f)=>A.indexOf(f.phx_ref)<0),g=u.metas.filter((f)=>d.indexOf(f.phx_ref)<0);if(m.length>0)o[l]=c,o[l].metas=m;if(g.length>0)a[l]=this.clone(u),a[l].metas=g}else o[l]=c}),this.syncDiff(i,{joins:o,leaves:a},n,s)}static syncDiff(t,r,n,s){let{joins:i,leaves:o}=this.clone(r);if(!n)n=function(){};if(!s)s=function(){};return this.map(i,(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),s(a,c,l),c.metas.length===0)delete t[a]}),t}static list(t,r){if(!r)r=function(n,s){return s};return this.map(t,(n,s)=>r(n,s))}static map(t,r){return Object.getOwnPropertyNames(t).map((n)=>r(n,t[n]))}static clone(t){return JSON.parse(JSON.stringify(t))}},ui={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,s,i,o]=JSON.parse(e);return t({join_ref:r,ref:n,topic:s,event:i,payload:o})}},binaryEncode(e){let{join_ref:t,ref:r,event:n,topic:s,payload:i}=e,o=this.META_LENGTH+t.length+r.length+s.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++,s.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(s,(d)=>l.setUint8(c++,d.charCodeAt(0))),Array.from(n,(d)=>l.setUint8(c++,d.charCodeAt(0)));var u=new Uint8Array(a.byteLength+i.byteLength);return u.set(new Uint8Array(a),0),u.set(new Uint8Array(i),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),s=t.getUint8(2),i=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+s));o=o+s;let c=r.decode(e.slice(o,o+i));o=o+i;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),s=t.getUint8(2),i=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+s));a=a+s;let u=r.decode(e.slice(a,a+i));a=a+i;let d=r.decode(e.slice(a,a+o));a=a+o;let A=e.slice(a,e.byteLength),m={status:d,response:A};return{join_ref:l,ref:c,topic:u,event:Nt.reply,payload:m}},decodeBroadcast(e,t,r){let n=t.getUint8(1),s=t.getUint8(2),i=this.HEADER_LENGTH+2,o=r.decode(e.slice(i,i+n));i=i+n;let a=r.decode(e.slice(i,i+s));i=i+s;let l=e.slice(i,e.byteLength);return{join_ref:null,ref:null,topic:o,event:a,payload:l}}},Nl=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||TA,this.transport=t.transport||vt.WebSocket||xr,this.conn=void 0,this.primaryPassedHealthCheck=!1,this.longPollFallbackMs=t.longPollFallbackMs,this.fallbackTimer=null,this.sessionStore=t.sessionStorage||vt&&vt.sessionStorage,this.establishedConnections=0,this.defaultEncoder=ui.encode.bind(ui),this.defaultDecoder=ui.decode.bind(ui),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!==xr)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(kr&&kr.addEventListener)kr.addEventListener("pagehide",(n)=>{if(this.conn)this.disconnect(),r=this.connectClock}),kr.addEventListener("pageshow",(n)=>{if(r===this.connectClock)r=null,this.connect()}),kr.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,s,i)=>{console.log(`${n}: ${s}`,i)};this.longpollerTimeout=t.longpollerTimeout||20000,this.params=yn(t.params||{}),this.endPoint=`${e}/${Ns.websocket}`,this.vsn=t.vsn||RA,this.heartbeatTimeoutTimer=null,this.heartbeatTimer=null,this.heartbeatSentAt=null,this.pendingHeartbeatRef=null,this.reconnectTimer=new Ol(()=>{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 xr}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=di.appendParams(di.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!==xr)this.connectWithFallback(xr,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((s)=>{if(s.ref===t)this.off([n]),e(Date.now()-r)});return!0}transportName(e){switch(e){case xr:return"LongPoll";default:return e.name}}transportConnect(){this.connectClock++,this.closeWasClean=!1;let e=void 0;if(this.authToken)e=["phoenix",`${Ds}${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,s,i,o=this.transportName(e),a=(l)=>{this.log("transport",`falling back to ${o}...`,l),this.off([s,i]),n=!1,this.replaceTransport(e),this.transportConnect()};if(this.getSession(`phx:fallback:${o}`))return a("memorized");if(this.fallbackTimer=setTimeout(a,t),i=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(),BA,"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===Ct.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(Nt.error)})}connectionState(){switch(this.conn&&this.conn.readyState){case Ct.connecting:return"connecting";case Ct.open:return"open";case Ct.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 PA(e,t,this);return this.channels.push(r),r}push(e){if(this.hasLogger()){let{topic:t,event:r,payload:n,ref:s,join_ref:i}=e;this.log("push",`${t} ${r} (${i}, ${s})`,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:s,ref:i,join_ref:o}=t;if(i&&i===this.pendingHeartbeatRef){let a=this.heartbeatSentAt?Date.now()-this.heartbeatSentAt:void 0;this.clearHeartbeats();try{this.heartbeatCallback(s.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",`${s.status||""} ${r} ${n} ${i&&"("+i+")"||""}`.trim(),s);for(let a=0;a<this.channels.length;a++){let l=this.channels[a];if(!l.isMember(r,n,s,o))continue;l.trigger(n,s,i,o)}this.triggerStateCallbacks("message",t)})}triggerStateCallbacks(e,...t){try{this.stateChangeCallbacks[e].forEach(([r,n])=>{try{n(...t)}catch(s){this.log("error",`error in ${e} callback`,s)}})}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 qt{constructor(e,t){let r=LA(t);this.presence=new Pl(e.getChannel(),r),this.presence.onJoin((n,s,i)=>{let o=qt.onJoinPayload(n,s,i);e.getChannel().trigger("presence",o)}),this.presence.onLeave((n,s,i)=>{let o=qt.onLeavePayload(n,s,i);e.getChannel().trigger("presence",o)}),this.presence.onSync(()=>{e.getChannel().trigger("presence",{event:"sync"})})}get state(){return qt.transformState(this.presence.state)}static transformState(e){return e=DA(e),Object.getOwnPropertyNames(e).reduce((t,r)=>{let n=e[r];return t[r]=hi(n),t},{})}static onJoinPayload(e,t,r){let n=Dl(t),s=hi(r);return{event:"join",key:e,currentPresences:n,newPresences:s}}static onLeavePayload(e,t,r){let n=Dl(t),s=hi(r);return{event:"leave",key:e,currentPresences:n,leftPresences:s}}}function hi(e){return e.metas.map((t)=>(t.presence_ref=t.phx_ref,delete t.phx_ref,delete t.phx_ref_prev,t))}function DA(e){return JSON.parse(JSON.stringify(e))}function LA(e){return(e===null||e===void 0?void 0:e.events)&&{events:e.events}}function Dl(e){return(e===null||e===void 0?void 0:e.metas)?hi(e):[]}var Ls;(function(e){e.SYNC="sync",e.JOIN="join",e.LEAVE="leave"})(Ls||(Ls={}));class wn{get state(){return this.presenceAdapter.state}constructor(e,t){this.channel=e,this.presenceAdapter=new qt(this.channel.channelAdapter,t)}}class Ai{constructor(e,t,r){let n=MA(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(s){throw`tried to push '${e}' to '${this.channel.topic}' before joining. Use channel.subscribe() before pushing events`}if(this.channel.pushBuffer.length>Tl){let s=this.channel.pushBuffer.shift();s.cancelTimeout(),this.socket.log("channel",`discarded push due to buffer overflow: ${s.event}`,s.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===_t.joined}isJoined(){return this.state===_t.joined}isJoining(){return this.state===_t.joining}isClosed(){return this.state===_t.closed}isLeaving(){return this.state===_t.leaving}updateFilterBindings(e){this.channel.filterBindings=e}updatePayloadTransform(e){this.channel.onMessage=e}getChannel(){return this.channel}}function MA(e){return{config:Object.assign({broadcast:{ack:!1,self:!1},presence:{key:"",enabled:!1},private:!1},e.config)}}var Ms;(function(e){e.ALL="*",e.INSERT="INSERT",e.UPDATE="UPDATE",e.DELETE="DELETE"})(Ms||(Ms={}));var er;(function(e){e.BROADCAST="broadcast",e.PRESENCE="presence",e.POSTGRES_CHANGES="postgres_changes",e.SYSTEM="system"})(er||(er={}));var Et;(function(e){e.SUBSCRIBED="SUBSCRIBED",e.TIMED_OUT="TIMED_OUT",e.CLOSED="CLOSED",e.CHANNEL_ERROR="CHANNEL_ERROR"})(Et||(Et={}));class Gt{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,s;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 Ai(this.socket.socketAdapter,e,this.params),this.presence=new wn(this),this._onClose(()=>{this.socket._remove(this)}),this._updateFilterTransform(),this.broadcastEndpointURL=li(this.socket.socketAdapter.endPointURL()),this.private=this.params.config.private||!1,!this.private&&((s=(n=this.params.config)===null||n===void 0?void 0:n.broadcast)===null||s===void 0?void 0:s.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,s;if(!this.socket.isConnected())this.socket.connect();if(this.channelAdapter.isClosed()){let{config:{broadcast:i,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[er.PRESENCE]&&this.bindings[er.PRESENCE].length>0||((s=this.params.config.presence)===null||s===void 0?void 0:s.enabled)===!0,u={},d={broadcast:i,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(Et.CHANNEL_ERROR,A)}),this._onClose(()=>e===null||e===void 0?void 0:e(Et.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(Et.SUBSCRIBED);return}this._updatePostgresBindings(A,e)}).receive("error",(A)=>{this.state=_t.errored,e===null||e===void 0||e(Et.CHANNEL_ERROR,Error(JSON.stringify(Object.values(A).join(", ")||"error")))}).receive("timeout",()=>{e===null||e===void 0||e(Et.TIMED_OUT)})}return this}_updatePostgresBindings(e,t){var r;let n=this.bindings.postgres_changes,s=(r=n===null||n===void 0?void 0:n.length)!==null&&r!==void 0?r:0,i=[];for(let o=0;o<s;o++){let a=n[o],{filter:{event:l,schema:c,table:u,filter:d}}=a,A=e&&e[o];if(A&&A.event===l&&Gt.isFilterValueEqual(A.schema,c)&&Gt.isFilterValueEqual(A.table,u)&&Gt.isFilterValueEqual(A.filter,d))i.push(Object.assign(Object.assign({},a),{id:A.id}));else{this.unsubscribe(),this.state=_t.errored,t===null||t===void 0||t(Et.CHANNEL_ERROR,Error("mismatch between server and client bindings for postgres changes"));return}}if(this.bindings.postgres_changes=i,this.state!=_t.errored&&t)t(Et.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(),s=e===er.PRESENCE||e===er.POSTGRES_CHANGES;if(n&&s)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 s={apikey:this.socket.apiKey?this.socket.apiKey:"","Content-Type":"application/json"};if(this.socket.accessTokenValue)s.Authorization=`Bearer ${this.socket.accessTokenValue}`;let i={method:"POST",headers:s,body:JSON.stringify({messages:[{topic:this.subTopic,event:e,payload:t,private:this.private}]})},o=await this._fetchWithTimeout(this.broadcastEndpointURL,i,(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:s,payload:i}=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:s,payload:i,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((s)=>{var i,o,a;let l=this.channelAdapter.push(e.type,e,t.timeout||this.timeout);if(e.type==="broadcast"&&!((a=(o=(i=this.params)===null||i===void 0?void 0:i.config)===null||o===void 0?void 0:o.broadcast)===null||a===void 0?void 0:a.ack))s("ok");l.receive("ok",()=>s("ok")),l.receive("error",()=>s("error")),l.receive("timeout",()=>s("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,s=setTimeout(()=>n.abort(),r),i=await this.socket.fetch(e,Object.assign(Object.assign({},t),{signal:n.signal}));return clearTimeout(s),i}_on(e,t,r){let n=e.toLocaleLowerCase(),s=this.channelAdapter.on(e,r),i={type:n,filter:t,callback:r,ref:s};if(this.bindings[n])this.bindings[n].push(i);else this.bindings[n]=[i];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,s,i,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,m=(s=d.filter)===null||s===void 0?void 0:s.event;return A&&((i=t.ids)===null||i===void 0?void 0:i.includes(A))&&(m==="*"||(m===null||m===void 0?void 0:m.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:s,join:i}=oi;return t&&[r,n,s,i].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:s,table:i,commit_timestamp:o,type:a,errors:l}=n;return Object.assign(Object.assign({},{schema:s,table:i,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=Ps(e.columns,e.record);if(e.type==="UPDATE"||e.type==="DELETE")t.old=Ps(e.columns,e.old_record);return t}}class fi{constructor(e,t){this.socket=new Nl(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((s)=>{setTimeout(()=>s("timeout"),n),this.socket.disconnect(()=>{e(),s("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 FA={HEARTBEAT_INTERVAL:25000,RECONNECT_DELAY:10,HEARTBEAT_TIMEOUT_FALLBACK:100},GA=[1000,2000,5000,1e4],UA=1e4,jA=`
|
|
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 Gs=Ml;var Fl="2.103.0";var Gl=`realtime-js/${Fl}`,Ul="1.0.0",Us="2.0.0",jl=Us;var Hl=1e4;var Kl=100;var vt={closed:"closed",errored:"errored",joined:"joined",joining:"joining",leaving:"leaving"},di={close:"phx_close",error:"phx_error",join:"phx_join",reply:"phx_reply",leave:"phx_leave",access_token:"access_token"};var _n={connecting:"connecting",open:"open",closing:"closing",closed:"closed"};class hi{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:{},i=new TextEncoder().encode(JSON.stringify(n)).buffer;return this._encodeUserBroadcastPush(e,this.JSON_ENCODING,i)}_encodeUserBroadcastPush(e,t,r){var n,s;let i=e.topic,o=(n=e.ref)!==null&&n!==void 0?n:"",a=(s=e.join_ref)!==null&&s!==void 0?s:"",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(i.length>255)throw Error(`topic length ${i.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+i.length+l.length+u.length,A=new ArrayBuffer(this.HEADER_LENGTH+d),m=new DataView(A),g=0;m.setUint8(g++,this.KINDS.userBroadcastPush),m.setUint8(g++,a.length),m.setUint8(g++,o.length),m.setUint8(g++,i.length),m.setUint8(g++,l.length),m.setUint8(g++,u.length),m.setUint8(g++,t),Array.from(a,(p)=>m.setUint8(g++,p.charCodeAt(0))),Array.from(o,(p)=>m.setUint8(g++,p.charCodeAt(0))),Array.from(i,(p)=>m.setUint8(g++,p.charCodeAt(0))),Array.from(l,(p)=>m.setUint8(g++,p.charCodeAt(0))),Array.from(u,(p)=>m.setUint8(g++,p.charCodeAt(0)));var f=new Uint8Array(A.byteLength+r.byteLength);return f.set(new Uint8Array(A),0),f.set(new Uint8Array(r),A.byteLength),f.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,s,i,o,a]=r;return t({join_ref:n,ref:s,topic:i,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),s=t.getUint8(2),i=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+s));a=a+s;let u=r.decode(e.slice(a,a+i));a=a+i;let d=e.slice(a,e.byteLength),A=o===this.JSON_ENCODING?JSON.parse(r.decode(d)):d,m={type:this.BROADCAST_EVENT,event:c,payload:A};if(i>0)m.meta=JSON.parse(u);return{join_ref:null,ref:null,topic:l,event:this.BROADCAST_EVENT,payload:m}}_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 be;(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"})(be||(be={}));var Hs=(e,t,r={})=>{var n;let s=(n=r.skipTypes)!==null&&n!==void 0?n:[];if(!t)return{};return Object.keys(t).reduce((i,o)=>(i[o]=YA(o,e,t,s),i),{})},YA=(e,t,r,n)=>{let s=t.find((a)=>a.name===e),i=s===null||s===void 0?void 0:s.type,o=r[e];if(i&&!n.includes(i))return Wl(i,o);return js(o)},Wl=(e,t)=>{if(e.charAt(0)==="_"){let r=e.slice(1,e.length);return ZA(t,r)}switch(e){case be.bool:return QA(t);case be.float4:case be.float8:case be.int2:case be.int4:case be.int8:case be.numeric:case be.oid:return JA(t);case be.json:case be.jsonb:return $A(t);case be.timestamp:return XA(t);case be.abstime:case be.date:case be.daterange:case be.int4range:case be.int8range:case be.money:case be.reltime:case be.text:case be.time:case be.timestamptz:case be.timetz:case be.tsrange:case be.tstzrange:return js(t);default:return js(t)}},js=(e)=>e,QA=(e)=>{switch(e){case"t":return!0;case"f":return!1;default:return e}},JA=(e)=>{if(typeof e==="string"){let t=parseFloat(e);if(!Number.isNaN(t))return t}return e},$A=(e)=>{if(typeof e==="string")try{return JSON.parse(e)}catch(t){return e}return e},ZA=(e,t)=>{if(typeof e!=="string")return e;let r=e.length-1,n=e[r];if(e[0]==="{"&&n==="}"){let i,o=e.slice(1,r);try{i=JSON.parse("["+o+"]")}catch(a){i=o?o.split(","):[]}return i.map((a)=>Wl(t,a))}return e},XA=(e)=>{if(typeof e==="string")return e.replace(" ","T");return e},Ai=(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 vn=(e)=>{if(typeof e==="function")return e;else return function(){return e}},zA=typeof self<"u"?self:null,Br=typeof window<"u"?window:null,Ct=zA||Br||globalThis,qA="2.0.0",ef=1e4,tf=1000,Et={connecting:0,open:1,closing:2,closed:3},st={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"},Ks={longpoll:"longpoll",websocket:"websocket"},rf={complete:4},Ws="base64url.bearer.phx.",fi=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})}},Yl=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))}},nf=class{constructor(e,t,r){this.state=st.closed,this.topic=e,this.params=vn(t||{}),this.socket=r,this.bindings=[],this.bindingRef=0,this.timeout=this.socket.timeout,this.joinedOnce=!1,this.joinPush=new fi(this,Lt.join,this.params,this.timeout),this.pushBuffer=[],this.stateChangeRefs=[],this.rejoinTimer=new Yl(()=>{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=st.joined,this.rejoinTimer.reset(),this.pushBuffer.forEach((n)=>n.send()),this.pushBuffer=[]}),this.joinPush.receive("error",(n)=>{if(this.state=st.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=st.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=st.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 fi(this,Lt.leave,vn({}),this.timeout).send(),this.state=st.errored,this.joinPush.reset(),this.socket.isConnected())this.rejoinTimer.scheduleTimeout()}),this.on(Lt.reply,(n,s)=>{this.trigger(this.replyEventName(s),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=st.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 fi(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=st.leaving;let t=()=>{if(this.socket.hasLogger())this.socket.log("channel",`leave ${this.topic}`);this.trigger(Lt.close,"leave")},r=new fi(this,Lt.leave,vn({}),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=st.joining,this.joinPush.resend(e)}trigger(e,t,r,n){let s=this.onMessage(e,t,r,n);if(t&&!s)throw Error("channel onMessage callbacks must return the payload, modified or unmodified");let i=this.bindings.filter((o)=>o.event===e&&this.filterBindings(o,t,r));for(let o=0;o<i.length;o++)i[o].callback(s,r,n||this.joinRef())}replyEventName(e){return`chan_reply_${e}`}isClosed(){return this.state===st.closed}isErrored(){return this.state===st.errored}isJoined(){return this.state===st.joined}isJoining(){return this.state===st.joining}isLeaving(){return this.state===st.leaving}},mi=class{static request(e,t,r,n,s,i,o){if(Ct.XDomainRequest){let a=new Ct.XDomainRequest;return this.xdomainRequest(a,e,t,n,s,i,o)}else if(Ct.XMLHttpRequest){let a=new Ct.XMLHttpRequest;return this.xhrRequest(a,e,t,r,n,s,i,o)}else if(Ct.fetch&&Ct.AbortController)return this.fetchRequest(e,t,r,n,s,i,o);else throw Error("No suitable XMLHttpRequest implementation found")}static fetchRequest(e,t,r,n,s,i,o){let a={method:e,headers:r,body:n},l=null;if(s){l=new AbortController;let c=setTimeout(()=>l.abort(),s);a.signal=l.signal}return Ct.fetch(t,a).then((c)=>c.text()).then((c)=>this.parseJSON(c)).then((c)=>o&&o(c)).catch((c)=>{if(c.name==="AbortError"&&i)i();else o&&o(null)}),l}static xdomainRequest(e,t,r,n,s,i,o){if(e.timeout=s,e.open(t,r),e.onload=()=>{let a=this.parseJSON(e.responseText);o&&o(a)},i)e.ontimeout=i;return e.onprogress=()=>{},e.send(n),e}static xhrRequest(e,t,r,n,s,i,o,a){e.open(t,r,!0),e.timeout=i;for(let[l,c]of Object.entries(n))e.setRequestHeader(l,c);if(e.onerror=()=>a&&a(null),e.onreadystatechange=()=>{if(e.readyState===rf.complete&&a){let l=this.parseJSON(e.responseText);a(l)}},o)e.ontimeout=o;return e.send(s),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 s=t?`${t}[${n}]`:n,i=e[n];if(typeof i==="object")r.push(this.serialize(i,s));else r.push(encodeURIComponent(s)+"="+encodeURIComponent(i))}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)}`}},sf=(e)=>{let t="",r=new Uint8Array(e),n=r.byteLength;for(let s=0;s<n;s++)t+=String.fromCharCode(r[s]);return btoa(t)},Tr=class{constructor(e,t){if(t&&t.length===2&&t[1].startsWith(Ws))this.authToken=atob(t[1].slice(Ws.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=Et.connecting,setTimeout(()=>this.poll(),0)}normalizeEndpoint(e){return e.replace("ws://","http://").replace("wss://","https://").replace(new RegExp("(.*)/"+Ks.websocket),"$1/"+Ks.longpoll)}endpointURL(){return mi.appendParams(this.pollEndpoint,{token:this.token})}closeAndRetry(e,t,r){this.close(e,t,r),this.readyState=Et.connecting}ontimeout(){this.onerror("timeout"),this.closeAndRetry(1005,"timeout",!1)}isActive(){return this.readyState===Et.open||this.readyState===Et.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:s}=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:s.forEach((i)=>{setTimeout(()=>this.onmessage({data:i}),0)}),this.poll();break;case 204:this.poll();break;case 410:this.readyState=Et.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=sf(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 s of this.reqs)s.abort();this.readyState=Et.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,s){let i,o=()=>{this.reqs.delete(i),n()};i=mi.request(e,this.endpointURL(),t,r,this.timeout,o,(a)=>{if(this.reqs.delete(i),this.isActive())s(a)}),this.reqs.add(i)}},Ql=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,(s)=>{let{onJoin:i,onLeave:o,onSync:a}=this.caller;this.joinRef=this.channel.joinRef(),this.state=e.syncState(this.state,s,i,o),this.pendingDiffs.forEach((l)=>{this.state=e.syncDiff(this.state,l,i,o)}),this.pendingDiffs=[],a()}),this.channel.on(n.diff,(s)=>{let{onJoin:i,onLeave:o,onSync:a}=this.caller;if(this.inPendingSyncState())this.pendingDiffs.push(s);else this.state=e.syncDiff(this.state,s,i,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,s){let i=this.clone(t),o={},a={};return this.map(i,(l,c)=>{if(!r[l])a[l]=c}),this.map(r,(l,c)=>{let u=i[l];if(u){let d=c.metas.map((f)=>f.phx_ref),A=u.metas.map((f)=>f.phx_ref),m=c.metas.filter((f)=>A.indexOf(f.phx_ref)<0),g=u.metas.filter((f)=>d.indexOf(f.phx_ref)<0);if(m.length>0)o[l]=c,o[l].metas=m;if(g.length>0)a[l]=this.clone(u),a[l].metas=g}else o[l]=c}),this.syncDiff(i,{joins:o,leaves:a},n,s)}static syncDiff(t,r,n,s){let{joins:i,leaves:o}=this.clone(r);if(!n)n=function(){};if(!s)s=function(){};return this.map(i,(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),s(a,c,l),c.metas.length===0)delete t[a]}),t}static list(t,r){if(!r)r=function(n,s){return s};return this.map(t,(n,s)=>r(n,s))}static map(t,r){return Object.getOwnPropertyNames(t).map((n)=>r(n,t[n]))}static clone(t){return JSON.parse(JSON.stringify(t))}},gi={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,s,i,o]=JSON.parse(e);return t({join_ref:r,ref:n,topic:s,event:i,payload:o})}},binaryEncode(e){let{join_ref:t,ref:r,event:n,topic:s,payload:i}=e,o=this.META_LENGTH+t.length+r.length+s.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++,s.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(s,(d)=>l.setUint8(c++,d.charCodeAt(0))),Array.from(n,(d)=>l.setUint8(c++,d.charCodeAt(0)));var u=new Uint8Array(a.byteLength+i.byteLength);return u.set(new Uint8Array(a),0),u.set(new Uint8Array(i),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),s=t.getUint8(2),i=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+s));o=o+s;let c=r.decode(e.slice(o,o+i));o=o+i;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),s=t.getUint8(2),i=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+s));a=a+s;let u=r.decode(e.slice(a,a+i));a=a+i;let d=r.decode(e.slice(a,a+o));a=a+o;let A=e.slice(a,e.byteLength),m={status:d,response:A};return{join_ref:l,ref:c,topic:u,event:Lt.reply,payload:m}},decodeBroadcast(e,t,r){let n=t.getUint8(1),s=t.getUint8(2),i=this.HEADER_LENGTH+2,o=r.decode(e.slice(i,i+n));i=i+n;let a=r.decode(e.slice(i,i+s));i=i+s;let l=e.slice(i,e.byteLength);return{join_ref:null,ref:null,topic:o,event:a,payload:l}}},Jl=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||ef,this.transport=t.transport||Ct.WebSocket||Tr,this.conn=void 0,this.primaryPassedHealthCheck=!1,this.longPollFallbackMs=t.longPollFallbackMs,this.fallbackTimer=null,this.sessionStore=t.sessionStorage||Ct&&Ct.sessionStorage,this.establishedConnections=0,this.defaultEncoder=gi.encode.bind(gi),this.defaultDecoder=gi.decode.bind(gi),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!==Tr)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(Br&&Br.addEventListener)Br.addEventListener("pagehide",(n)=>{if(this.conn)this.disconnect(),r=this.connectClock}),Br.addEventListener("pageshow",(n)=>{if(r===this.connectClock)r=null,this.connect()}),Br.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,s,i)=>{console.log(`${n}: ${s}`,i)};this.longpollerTimeout=t.longpollerTimeout||20000,this.params=vn(t.params||{}),this.endPoint=`${e}/${Ks.websocket}`,this.vsn=t.vsn||qA,this.heartbeatTimeoutTimer=null,this.heartbeatTimer=null,this.heartbeatSentAt=null,this.pendingHeartbeatRef=null,this.reconnectTimer=new Yl(()=>{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 Tr}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=mi.appendParams(mi.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=vn(e);if(this.conn&&!this.disconnecting)return;if(this.longPollFallbackMs&&this.transport!==Tr)this.connectWithFallback(Tr,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((s)=>{if(s.ref===t)this.off([n]),e(Date.now()-r)});return!0}transportName(e){switch(e){case Tr:return"LongPoll";default:return e.name}}transportConnect(){this.connectClock++,this.closeWasClean=!1;let e=void 0;if(this.authToken)e=["phoenix",`${Ws}${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,s,i,o=this.transportName(e),a=(l)=>{this.log("transport",`falling back to ${o}...`,l),this.off([s,i]),n=!1,this.replaceTransport(e),this.transportConnect()};if(this.getSession(`phx:fallback:${o}`))return a("memorized");if(this.fallbackTimer=setTimeout(a,t),i=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(),tf,"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===Et.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 Et.connecting:return"connecting";case Et.open:return"open";case Et.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 nf(e,t,this);return this.channels.push(r),r}push(e){if(this.hasLogger()){let{topic:t,event:r,payload:n,ref:s,join_ref:i}=e;this.log("push",`${t} ${r} (${i}, ${s})`,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:s,ref:i,join_ref:o}=t;if(i&&i===this.pendingHeartbeatRef){let a=this.heartbeatSentAt?Date.now()-this.heartbeatSentAt:void 0;this.clearHeartbeats();try{this.heartbeatCallback(s.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",`${s.status||""} ${r} ${n} ${i&&"("+i+")"||""}`.trim(),s);for(let a=0;a<this.channels.length;a++){let l=this.channels[a];if(!l.isMember(r,n,s,o))continue;l.trigger(n,s,i,o)}this.triggerStateCallbacks("message",t)})}triggerStateCallbacks(e,...t){try{this.stateChangeCallbacks[e].forEach(([r,n])=>{try{n(...t)}catch(s){this.log("error",`error in ${e} callback`,s)}})}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 rr{constructor(e,t){let r=af(t);this.presence=new Ql(e.getChannel(),r),this.presence.onJoin((n,s,i)=>{let o=rr.onJoinPayload(n,s,i);e.getChannel().trigger("presence",o)}),this.presence.onLeave((n,s,i)=>{let o=rr.onLeavePayload(n,s,i);e.getChannel().trigger("presence",o)}),this.presence.onSync(()=>{e.getChannel().trigger("presence",{event:"sync"})})}get state(){return rr.transformState(this.presence.state)}static transformState(e){return e=of(e),Object.getOwnPropertyNames(e).reduce((t,r)=>{let n=e[r];return t[r]=pi(n),t},{})}static onJoinPayload(e,t,r){let n=$l(t),s=pi(r);return{event:"join",key:e,currentPresences:n,newPresences:s}}static onLeavePayload(e,t,r){let n=$l(t),s=pi(r);return{event:"leave",key:e,currentPresences:n,leftPresences:s}}}function pi(e){return e.metas.map((t)=>(t.presence_ref=t.phx_ref,delete t.phx_ref,delete t.phx_ref_prev,t))}function of(e){return JSON.parse(JSON.stringify(e))}function af(e){return(e===null||e===void 0?void 0:e.events)&&{events:e.events}}function $l(e){return(e===null||e===void 0?void 0:e.metas)?pi(e):[]}var Ys;(function(e){e.SYNC="sync",e.JOIN="join",e.LEAVE="leave"})(Ys||(Ys={}));class Cn{get state(){return this.presenceAdapter.state}constructor(e,t){this.channel=e,this.presenceAdapter=new rr(this.channel.channelAdapter,t)}}class bi{constructor(e,t,r){let n=lf(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(s){throw`tried to push '${e}' to '${this.channel.topic}' before joining. Use channel.subscribe() before pushing events`}if(this.channel.pushBuffer.length>Kl){let s=this.channel.pushBuffer.shift();s.cancelTimeout(),this.socket.log("channel",`discarded push due to buffer overflow: ${s.event}`,s.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===vt.joined}isJoined(){return this.state===vt.joined}isJoining(){return this.state===vt.joining}isClosed(){return this.state===vt.closed}isLeaving(){return this.state===vt.leaving}updateFilterBindings(e){this.channel.filterBindings=e}updatePayloadTransform(e){this.channel.onMessage=e}getChannel(){return this.channel}}function lf(e){return{config:Object.assign({broadcast:{ack:!1,self:!1},presence:{key:"",enabled:!1},private:!1},e.config)}}var Qs;(function(e){e.ALL="*",e.INSERT="INSERT",e.UPDATE="UPDATE",e.DELETE="DELETE"})(Qs||(Qs={}));var nr;(function(e){e.BROADCAST="broadcast",e.PRESENCE="presence",e.POSTGRES_CHANGES="postgres_changes",e.SYSTEM="system"})(nr||(nr={}));var St;(function(e){e.SUBSCRIBED="SUBSCRIBED",e.TIMED_OUT="TIMED_OUT",e.CLOSED="CLOSED",e.CHANNEL_ERROR="CHANNEL_ERROR"})(St||(St={}));class Ht{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,s;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 bi(this.socket.socketAdapter,e,this.params),this.presence=new Cn(this),this._onClose(()=>{this.socket._remove(this)}),this._updateFilterTransform(),this.broadcastEndpointURL=Ai(this.socket.socketAdapter.endPointURL()),this.private=this.params.config.private||!1,!this.private&&((s=(n=this.params.config)===null||n===void 0?void 0:n.broadcast)===null||s===void 0?void 0:s.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,s;if(!this.socket.isConnected())this.socket.connect();if(this.channelAdapter.isClosed()){let{config:{broadcast:i,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[nr.PRESENCE]&&this.bindings[nr.PRESENCE].length>0||((s=this.params.config.presence)===null||s===void 0?void 0:s.enabled)===!0,u={},d={broadcast:i,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(St.CHANNEL_ERROR,A)}),this._onClose(()=>e===null||e===void 0?void 0:e(St.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(St.SUBSCRIBED);return}this._updatePostgresBindings(A,e)}).receive("error",(A)=>{this.state=vt.errored,e===null||e===void 0||e(St.CHANNEL_ERROR,Error(JSON.stringify(Object.values(A).join(", ")||"error")))}).receive("timeout",()=>{e===null||e===void 0||e(St.TIMED_OUT)})}return this}_updatePostgresBindings(e,t){var r;let n=this.bindings.postgres_changes,s=(r=n===null||n===void 0?void 0:n.length)!==null&&r!==void 0?r:0,i=[];for(let o=0;o<s;o++){let a=n[o],{filter:{event:l,schema:c,table:u,filter:d}}=a,A=e&&e[o];if(A&&A.event===l&&Ht.isFilterValueEqual(A.schema,c)&&Ht.isFilterValueEqual(A.table,u)&&Ht.isFilterValueEqual(A.filter,d))i.push(Object.assign(Object.assign({},a),{id:A.id}));else{this.unsubscribe(),this.state=vt.errored,t===null||t===void 0||t(St.CHANNEL_ERROR,Error("mismatch between server and client bindings for postgres changes"));return}}if(this.bindings.postgres_changes=i,this.state!=vt.errored&&t)t(St.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(),s=e===nr.PRESENCE||e===nr.POSTGRES_CHANGES;if(n&&s)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 s={apikey:this.socket.apiKey?this.socket.apiKey:"","Content-Type":"application/json"};if(this.socket.accessTokenValue)s.Authorization=`Bearer ${this.socket.accessTokenValue}`;let i={method:"POST",headers:s,body:JSON.stringify({messages:[{topic:this.subTopic,event:e,payload:t,private:this.private}]})},o=await this._fetchWithTimeout(this.broadcastEndpointURL,i,(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:s,payload:i}=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:s,payload:i,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((s)=>{var i,o,a;let l=this.channelAdapter.push(e.type,e,t.timeout||this.timeout);if(e.type==="broadcast"&&!((a=(o=(i=this.params)===null||i===void 0?void 0:i.config)===null||o===void 0?void 0:o.broadcast)===null||a===void 0?void 0:a.ack))s("ok");l.receive("ok",()=>s("ok")),l.receive("error",()=>s("error")),l.receive("timeout",()=>s("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,s=setTimeout(()=>n.abort(),r),i=await this.socket.fetch(e,Object.assign(Object.assign({},t),{signal:n.signal}));return clearTimeout(s),i}_on(e,t,r){let n=e.toLocaleLowerCase(),s=this.channelAdapter.on(e,r),i={type:n,filter:t,callback:r,ref:s};if(this.bindings[n])this.bindings[n].push(i);else this.bindings[n]=[i];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,s,i,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,m=(s=d.filter)===null||s===void 0?void 0:s.event;return A&&((i=t.ids)===null||i===void 0?void 0:i.includes(A))&&(m==="*"||(m===null||m===void 0?void 0:m.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:s,join:i}=di;return t&&[r,n,s,i].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:s,table:i,commit_timestamp:o,type:a,errors:l}=n;return Object.assign(Object.assign({},{schema:s,table:i,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=Hs(e.columns,e.record);if(e.type==="UPDATE"||e.type==="DELETE")t.old=Hs(e.columns,e.old_record);return t}}class yi{constructor(e,t){this.socket=new Jl(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((s)=>{setTimeout(()=>s("timeout"),n),this.socket.disconnect(()=>{e(),s("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()==_n.connecting}isDisconnecting(){return this.socket.connectionState()==_n.closing}connectionState(){return this.socket.connectionState()}endPointURL(){return this.socket.endPointURL()}sendHeartbeat(){this.socket.sendHeartbeat()}getSocket(){return this.socket}}var cf={HEARTBEAT_INTERVAL:25000,RECONNECT_DELAY:10,HEARTBEAT_TIMEOUT_FALLBACK:100},uf=[1000,2000,5000,1e4],df=1e4,hf=`
|
|
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
|
|
40
|
+
});`;class En{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 hi,this._manuallySetToken=!1,this._authPromise=null,this._workerHeartbeatTimer=void 0,this._pendingWorkerHeartbeatRef=null,this._resolveFetch=(s)=>{if(s)return(...i)=>s(...i);return(...i)=>fetch(...i)},!((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 yi(e,n),this.httpEndpoint=Ai(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,10 +50,10 @@ 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((s)=>s.topic===r);if(!n){let s=new Gt(`realtime:${e}`,t,this);return this.channels.push(s),s}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 s={access_token:t,version:Il};if(t&&n.updateJoinPayload(s),n.joinedOnce&&n.channelAdapter.isJoined())n.channelAdapter.push(oi.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([jA],{type:"application/javascript"});t=URL.createObjectURL(r)}return t}_initializeOptions(e){var t,r,n,s,i,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:Rl,u.heartbeatIntervalMs=(s=e===null||e===void 0?void 0:e.heartbeatIntervalMs)!==null&&s!==void 0?s:FA.HEARTBEAT_INTERVAL,u.transport=(i=e===null||e===void 0?void 0:e.transport)!==null&&i!==void 0?i:Ts.getWebSocketConstructor(),u.params=e===null||e===void 0?void 0:e.params,u.logger=e===null||e===void 0?void 0:e.logger,u.heartbeatCallback=this._wrapHeartbeatCallback(e===null||e===void 0?void 0:e.heartbeatCallback),u.reconnectAfterMs=(o=e===null||e===void 0?void 0:e.reconnectAfterMs)!==null&&o!==void 0?o:(g)=>GA[g-1]||UA;let d,A,m=(a=e===null||e===void 0?void 0:e.vsn)!==null&&a!==void 0?a:kl;switch(m){case xl:d=(g,f)=>f(JSON.stringify(g)),A=(g,f)=>f(JSON.parse(g));break;case Bs:d=this.serializer.encode.bind(this.serializer),A=this.serializer.decode.bind(this.serializer);break;default:throw Error(`Unsupported serializer version: ${u.vsn}`)}if(u.vsn=m,u.encode=(l=e===null||e===void 0?void 0:e.encode)!==null&&l!==void 0?l:d,u.decode=(c=e===null||e===void 0?void 0:e.decode)!==null&&c!==void 0?c:A,u.beforeReconnect=this._reconnectAuth.bind(this),(e===null||e===void 0?void 0:e.logLevel)||(e===null||e===void 0?void 0:e.log_level))this.logLevel=e.logLevel||e.log_level,u.params=Object.assign(Object.assign({},u.params),{log_level:this.logLevel});if(this.worker){if(typeof window<"u"&&!window.Worker)throw Error("Web Worker is not supported");this.workerUrl=e===null||e===void 0?void 0:e.workerUrl,u.autoSendHeartbeat=!this.worker}return u}async _reconnectAuth(){if(await this._waitForAuthIfNeeded(),!this.isConnected())this.connect()}}var 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 HA(e,t,r){let n=new URL(t,e);if(r){for(let[s,i]of Object.entries(r))if(i!==void 0)n.searchParams.set(s,i)}return n.toString()}async function KA(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 WA(e){let t=e.fetchImpl??globalThis.fetch;return{async request({method:r,path:n,query:s,body:i,headers:o}){let a=HA(e.baseUrl,n,s),l=await KA(e.auth),c=await t(a,{method:r,headers:{...i?{"Content-Type":"application/json"}:{},...l,...o},body:i?JSON.stringify(i):void 0}),u=await c.text(),d=(c.headers.get("content-type")||"").includes("application/json"),A=d&&u?JSON.parse(u):u;if(!c.ok){let m=d?A:void 0,g=m?.error;throw new vn(g?.message??`Request failed with status ${c.status}`,{status:c.status,icebergType:g?.type,icebergCode:g?.code,details:m})}return{status:c.status,headers:c.headers,data:A}}}}function gi(e){return e.join("\x1F")}var YA=class{constructor(e,t=""){this.client=e,this.prefix=t}async listNamespaces(e){let t=e?{parent:gi(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/${gi(e.namespace)}`})}async loadNamespaceMetadata(e){return{properties:(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${gi(e.namespace)}`})).data.properties}}async namespaceExists(e){try{return await this.client.request({method:"HEAD",path:`${this.prefix}/namespaces/${gi(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 Rr(e){return e.join("\x1F")}var QA=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/${Rr(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/${Rr(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/${Rr(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/${Rr(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/${Rr(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/${Rr(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}}},Ll=class{constructor(e){let t="v1";if(e.catalogName)t+=`/${e.catalogName}`;let r=e.baseUrl.endsWith("/")?e.baseUrl:`${e.baseUrl}/`;this.client=WA({baseUrl:r,auth:e.auth,fetchImpl:e.fetch}),this.accessDelegation=e.accessDelegation?.join(","),this.namespaceOps=new YA(this.client,t),this.tableOps=new QA(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 pi=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 bi(e){return typeof e==="object"&&e!==null&&"__isStorageError"in e}var mi=class extends pi{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}}},Ul=class extends pi{constructor(e,t,r="storage"){super(e,r);this.name=r==="vectors"?"StorageVectorsUnknownError":"StorageUnknownError",this.originalError=t}};var JA=(e)=>{if(e)return(...t)=>e(...t);return(...t)=>fetch(...t)},ZA=(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)},Fs=(e)=>{if(Array.isArray(e))return e.map((r)=>Fs(r));else if(typeof e==="function"||e!==Object(e))return e;let t={};return Object.entries(e).forEach(([r,n])=>{let s=r.replace(/([-_][a-z])/gi,(i)=>i.toUpperCase().replace(/[-_]/g,""));t[s]=Fs(n)}),t},$A=(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 XA(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 VA(e){var t=XA(e,"string");return En(t)=="symbol"?t:t+""}function zA(e,t,r){return(t=VA(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Ml(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),r.push.apply(r,n)}return r}function j(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?Ml(Object(r),!0).forEach(function(n){zA(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ml(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}var Fl=(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 s=e,i=parseInt(s.status,10);if(!Number.isFinite(i))i=500;s.json().then((o)=>{let a=(o===null||o===void 0?void 0:o.statusCode)||(o===null||o===void 0?void 0:o.code)||i+"";t(new mi(Fl(o),i,a,n))}).catch(()=>{let o=i+"";t(new mi(s.statusText||`HTTP ${i} error`,i,o,n))})}else t(new Ul(Fl(e),e,n))},ef=(e,t,r,n)=>{let s={method:e,headers:(t===null||t===void 0?void 0:t.headers)||{}};if(e==="GET"||e==="HEAD"||!n)return j(j({},s),r);if(ZA(n)){var i;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;s.headers=tf(o,"Content-Type",(i=a)!==null&&i!==void 0?i:"application/json"),s.body=JSON.stringify(n)}else s.body=n;if(t===null||t===void 0?void 0:t.duplex)s.duplex=t.duplex;return j(j({},s),r)};function tf(e,t,r){let n=j({},e);for(let s of Object.keys(n))if(s.toLowerCase()===t.toLowerCase())delete n[s];return n[t]=r,n}async function Cn(e,t,r,n,s,i,o){return new Promise((a,l)=>{e(r,ef(t,n,s,i)).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 jl(e="storage"){return{get:async(t,r,n,s)=>Cn(t,"GET",r,n,s,void 0,e),post:async(t,r,n,s,i)=>Cn(t,"POST",r,s,i,n,e),put:async(t,r,n,s,i)=>Cn(t,"PUT",r,s,i,n,e),head:async(t,r,n,s)=>Cn(t,"HEAD",r,j(j({},n),{},{noResolveJson:!0}),s,void 0,e),remove:async(t,r,n,s,i)=>Cn(t,"DELETE",r,s,i,n,e)}}var rf=jl("storage"),{get:Sn,post:At,put:Gs,head:nf,remove:Us}=rf,st=jl("vectors"),Tr=class{constructor(e,t={},r,n="storage"){this.shouldThrowOnError=!1,this.url=e,this.headers=Object.fromEntries(Object.entries(t).map(([s,i])=>[s.toLowerCase(),i])),this.fetch=JA(r),this.namespace=n}throwOnError(){return this.shouldThrowOnError=!0,this}setHeader(e,t){return this.headers=j(j({},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(bi(r))return{data:null,error:r};throw r}}},sf=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(bi(t))return{data:null,error:t};throw t}}},Hl;Hl=Symbol.toStringTag;var of=class{constructor(e,t){this.downloadFn=e,this.shouldThrowOnError=t,this[Hl]="BlobDownloadBuilder",this.promise=null}asStream(){return new sf(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(bi(t))return{data:null,error:t};throw t}}},af={limit:100,offset:0,sortBy:{column:"name",order:"asc"}},Gl={cacheControl:"3600",contentType:"text/plain;charset=UTF-8",upsert:!1},lf=class extends Tr{constructor(e,t={},r,n){super(e,t,n,"storage");this.bucketId=r}async uploadOrUpdate(e,t,r,n){var s=this;return s.handleOperation(async()=>{let i,o=j(j({},Gl),n),a=j(j({},s.headers),e==="POST"&&{"x-upsert":String(o.upsert)}),l=o.metadata;if(typeof Blob<"u"&&r instanceof Blob){if(i=new FormData,i.append("cacheControl",o.cacheControl),l)i.append("metadata",s.encodeMetadata(l));i.append("",r)}else if(typeof FormData<"u"&&r instanceof FormData){if(i=r,!i.has("cacheControl"))i.append("cacheControl",o.cacheControl);if(l&&!i.has("metadata"))i.append("metadata",s.encodeMetadata(l))}else{if(i=r,a["cache-control"]=`max-age=${o.cacheControl}`,a["content-type"]=o.contentType,l)a["x-metadata"]=s.toBase64(s.encodeMetadata(l));if((typeof ReadableStream<"u"&&i instanceof ReadableStream||i&&typeof i==="object"&&("pipe"in i)&&typeof i.pipe==="function")&&!o.duplex)o.duplex="half"}if(n===null||n===void 0?void 0:n.headers)a=j(j({},a),n.headers);let c=s._removeEmptyFolders(t),u=s._getFinalPath(c),d=await(e=="PUT"?Gs:At)(s.fetch,`${s.url}/object/${u}`,i,j({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 s=this;let i=s._removeEmptyFolders(e),o=s._getFinalPath(i),a=new URL(s.url+`/object/upload/sign/${o}`);return a.searchParams.set("token",t),s.handleOperation(async()=>{let l,c=j(j({},Gl),n),u=j(j({},s.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:i,fullPath:(await Gs(s.fetch,a.toString(),l,{headers:u})).Key}})}async createSignedUploadUrl(e,t){var r=this;return r.handleOperation(async()=>{let n=r._getFinalPath(e),s=j({},r.headers);if(t===null||t===void 0?void 0:t.upsert)s["x-upsert"]="true";let i=await At(r.fetch,`${r.url}/object/upload/sign/${n}`,{},{headers:s}),o=new URL(r.url+i.url),a=o.searchParams.get("token");if(!a)throw new pi("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 At(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 At(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 s=n._getFinalPath(e),i=typeof(r===null||r===void 0?void 0:r.transform)==="object"&&r.transform!==null&&Object.keys(r.transform).length>0,o=await At(n.fetch,`${n.url}/object/sign/${s}`,j({expiresIn:t},i?{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=i&&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 s=await At(n.fetch,`${n.url}/object/sign/${n.bucketId}`,{expiresIn:t,paths:e},{headers:n.headers}),i=new URLSearchParams;if(r===null||r===void 0?void 0:r.download)i.set("download",r.download===!0?"":r.download);if((r===null||r===void 0?void 0:r.cacheNonce)!=null)i.set("cacheNonce",String(r.cacheNonce));let o=i.toString();return s.map((a)=>j(j({},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",s=new URLSearchParams;if(t===null||t===void 0?void 0:t.transform)this.applyTransformOptsToQuery(s,t.transform);if((t===null||t===void 0?void 0:t.cacheNonce)!=null)s.set("cacheNonce",String(t.cacheNonce));let i=s.toString(),o=this._getFinalPath(e);return new of(()=>Sn(this.fetch,`${this.url}/${n}/${o}${i?`?${i}`:""}`,{headers:this.headers,noResolveJson:!0},r),this.shouldThrowOnError)}async info(e){var t=this;let r=t._getFinalPath(e);return t.handleOperation(async()=>Fs(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 nf(t.fetch,`${t.url}/object/${r}`,{headers:t.headers}),{data:!0,error:null}}catch(s){if(t.shouldThrowOnError)throw s;if(bi(s)){var n;let i=s instanceof mi?s.status:s instanceof Ul?(n=s.originalError)===null||n===void 0?void 0:n.status:void 0;if(i!==void 0&&[400,404].includes(i))return{data:!1,error:s}}throw s}}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 s=n.toString(),i=typeof(t===null||t===void 0?void 0:t.transform)<"u"?"render/image":"object";return{data:{publicUrl:encodeURI(`${this.url}/${i}/public/${r}`)+(s?`?${s}`:"")}}}async remove(e){var t=this;return t.handleOperation(async()=>await Us(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 s=j(j(j({},af),t),{},{prefix:e||""});return await At(n.fetch,`${n.url}/object/list/${n.bucketId}`,s,{headers:n.headers},r)})}async listV2(e,t){var r=this;return r.handleOperation(async()=>{let n=j({},e);return await At(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}},cf="2.103.0",In={"X-Client-Info":`storage-js/${cf}`},uf=class extends Tr{constructor(e,t={},r,n){let s=new URL(e);if(n===null||n===void 0?void 0:n.useNewHostname){if(/supabase\.(co|in|red)$/.test(s.hostname)&&!s.hostname.includes("storage.supabase."))s.hostname=s.hostname.replace("supabase.","storage.supabase.")}let i=s.href.replace(/\/$/,""),o=j(j({},In),t);super(i,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 At(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 Gs(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 At(t.fetch,`${t.url}/bucket/${e}/empty`,{},{headers:t.headers}))}async deleteBucket(e){var t=this;return t.handleOperation(async()=>await Us(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():""}},df=class extends Tr{constructor(e,t={},r){let n=e.replace(/\/$/,""),s=j(j({},In),t);super(n,s,r,"storage")}async createBucket(e){var t=this;return t.handleOperation(async()=>await At(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(),s=n?`${t.url}/bucket?${n}`:`${t.url}/bucket`;return await Sn(t.fetch,s,{headers:t.headers})})}async deleteBucket(e){var t=this;return t.handleOperation(async()=>await Us(t.fetch,`${t.url}/bucket/${e}`,{},{headers:t.headers}))}from(e){var t=this;if(!$A(e))throw new pi("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 Ll({baseUrl:this.url,catalogName:e,auth:{type:"custom",getHeaders:async()=>t.headers},fetch:this.fetch}),n=this.shouldThrowOnError;return new Proxy(r,{get(s,i){let o=s[i];if(typeof o!=="function")return o;return async(...a)=>{try{return{data:await o.apply(s,a),error:null}}catch(l){if(n)throw l;return{data:null,error:l}}}}})}},hf=class extends Tr{constructor(e,t={},r){let n=e.replace(/\/$/,""),s=j(j({},In),{},{"Content-Type":"application/json"},t);super(n,s,r,"vectors")}async createIndex(e){var t=this;return t.handleOperation(async()=>await st.post(t.fetch,`${t.url}/CreateIndex`,e,{headers:t.headers})||{})}async getIndex(e,t){var r=this;return r.handleOperation(async()=>await st.post(r.fetch,`${r.url}/GetIndex`,{vectorBucketName:e,indexName:t},{headers:r.headers}))}async listIndexes(e){var t=this;return t.handleOperation(async()=>await st.post(t.fetch,`${t.url}/ListIndexes`,e,{headers:t.headers}))}async deleteIndex(e,t){var r=this;return r.handleOperation(async()=>await st.post(r.fetch,`${r.url}/DeleteIndex`,{vectorBucketName:e,indexName:t},{headers:r.headers})||{})}},Af=class extends Tr{constructor(e,t={},r){let n=e.replace(/\/$/,""),s=j(j({},In),{},{"Content-Type":"application/json"},t);super(n,s,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 st.post(t.fetch,`${t.url}/PutVectors`,e,{headers:t.headers})||{})}async getVectors(e){var t=this;return t.handleOperation(async()=>await st.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 st.post(t.fetch,`${t.url}/ListVectors`,e,{headers:t.headers}))}async queryVectors(e){var t=this;return t.handleOperation(async()=>await st.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 st.post(t.fetch,`${t.url}/DeleteVectors`,e,{headers:t.headers})||{})}},ff=class extends Tr{constructor(e,t={},r){let n=e.replace(/\/$/,""),s=j(j({},In),{},{"Content-Type":"application/json"},t);super(n,s,r,"vectors")}async createBucket(e){var t=this;return t.handleOperation(async()=>await st.post(t.fetch,`${t.url}/CreateVectorBucket`,{vectorBucketName:e},{headers:t.headers})||{})}async getBucket(e){var t=this;return t.handleOperation(async()=>await st.post(t.fetch,`${t.url}/GetVectorBucket`,{vectorBucketName:e},{headers:t.headers}))}async listBuckets(e={}){var t=this;return t.handleOperation(async()=>await st.post(t.fetch,`${t.url}/ListVectorBuckets`,e,{headers:t.headers}))}async deleteBucket(e){var t=this;return t.handleOperation(async()=>await st.post(t.fetch,`${t.url}/DeleteVectorBucket`,{vectorBucketName:e},{headers:t.headers})||{})}},gf=class extends ff{constructor(e,t={}){super(e,t.headers||{},t.fetch)}from(e){return new mf(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)}},mf=class extends hf{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,j(j({},e),{},{vectorBucketName:r.vectorBucketName}))}async listIndexes(e={}){var t=()=>super.listIndexes,r=this;return t().call(r,j(j({},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 pf(this.url,this.headers,this.vectorBucketName,e,this.fetch)}},pf=class extends Af{constructor(e,t,r,n,s){super(e,t,s);this.vectorBucketName=r,this.indexName=n}async putVectors(e){var t=()=>super.putVectors,r=this;return t().call(r,j(j({},e),{},{vectorBucketName:r.vectorBucketName,indexName:r.indexName}))}async getVectors(e){var t=()=>super.getVectors,r=this;return t().call(r,j(j({},e),{},{vectorBucketName:r.vectorBucketName,indexName:r.indexName}))}async listVectors(e={}){var t=()=>super.listVectors,r=this;return t().call(r,j(j({},e),{},{vectorBucketName:r.vectorBucketName,indexName:r.indexName}))}async queryVectors(e){var t=()=>super.queryVectors,r=this;return t().call(r,j(j({},e),{},{vectorBucketName:r.vectorBucketName,indexName:r.indexName}))}async deleteVectors(e){var t=()=>super.deleteVectors,r=this;return t().call(r,j(j({},e),{},{vectorBucketName:r.vectorBucketName,indexName:r.indexName}))}},Kl=class extends uf{constructor(e,t={},r,n){super(e,t,r,n)}from(e){return new lf(this.url,this.headers,e,this.fetch)}get vectors(){return new gf(this.url+"/vector",{headers:this.headers,fetch:this.fetch})}get analytics(){return new df(this.url+"/iceberg",this.headers,this.fetch)}};var yi="2.103.0";var tr=30000,wi=3,_i=wi*tr,Wl="http://localhost:9999",Yl="supabase.auth.token";var Ql={"X-Client-Info":`gotrue-js/${yi}`};var xn="X-Supabase-Api-Version",js={"2024-01-01":{timestamp:Date.parse("2024-01-01T00:00:00.0Z"),name:"2024-01-01"}},Jl=/^([a-z0-9_-]{4})*($|[a-z0-9_-]{3}$|[a-z0-9_-]{2}$)$/i,Zl=600000;class rr extends Error{constructor(e,t,r){super(e);this.__isAuthError=!0,this.name="AuthError",this.status=t,this.code=r}}function L(e){return typeof e==="object"&&e!==null&&"__isAuthError"in e}class Hs extends rr{constructor(e,t,r){super(e,t,r);this.name="AuthApiError",this.status=t,this.code=r}}function $l(e){return L(e)&&e.name==="AuthApiError"}class ft extends rr{constructor(e,t){super(e);this.name="AuthUnknownError",this.originalError=t}}class St extends rr{constructor(e,t,r,n){super(e,r,n);this.name=t,this.status=r}}class $e extends St{constructor(){super("Auth session missing!","AuthSessionMissingError",400,void 0)}}function kn(e){return L(e)&&e.name==="AuthSessionMissingError"}class Ut extends St{constructor(){super("Auth session or user missing","AuthInvalidTokenResponseError",500,void 0)}}class Br extends St{constructor(e){super(e,"AuthInvalidCredentialsError",400,void 0)}}class Or extends St{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 Xl(e){return L(e)&&e.name==="AuthImplicitGrantRedirectError"}class vi extends St{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 Ks extends St{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 St{constructor(e,t){super(e,"AuthRetryableFetchError",t,void 0)}}function Ci(e){return L(e)&&e.name==="AuthRetryableFetchError"}class Ei extends St{constructor(e,t,r){super(e,"AuthWeakPasswordError",t,"weak_password");this.reasons=r}}class Pr extends St{constructor(e){super(e,"AuthInvalidJwtError",400,"invalid_jwt")}}var Si="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".split(""),Vl=`
|
|
54
|
-
\r=`.split(""),bf=(()=>{let e=Array(128);for(let t=0;t<e.length;t+=1)e[t]=-1;for(let t=0;t<Vl.length;t+=1)e[Vl[t].charCodeAt(0)]=-2;for(let t=0;t<Si.length;t+=1)e[Si[t].charCodeAt(0)]=t;return e})();function zl(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(Si[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(Si[n]),t.queuedBits-=6}}}function ql(e,t,r){let n=bf[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 Ws(e){let t=[],r=(o)=>{t.push(String.fromCodePoint(o))},n={utf8seq:0,codepoint:0},s={queue:0,queuedBits:0},i=(o)=>{_f(o,n,r)};for(let o=0;o<e.length;o+=1)ql(e.charCodeAt(o),s,i);return t.join("")}function yf(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 wf(e,t){for(let r=0;r<e.length;r+=1){let n=e.charCodeAt(r);if(n>55295&&n<=56319){let s=(n-55296)*1024&65535;n=(e.charCodeAt(r+1)-56320&65535|s)+65536,r+=1}yf(n,t)}}function _f(e,t,r){if(t.utf8seq===0){if(e<=127){r(e);return}for(let n=1;n<6;n+=1)if((e>>7-n&1)===0){t.utf8seq=n;break}if(t.utf8seq===2)t.codepoint=e&31;else if(t.utf8seq===3)t.codepoint=e&15;else if(t.utf8seq===4)t.codepoint=e&7;else throw Error("Invalid UTF-8 sequence");t.utf8seq-=1}else if(t.utf8seq>0){if(e<=127)throw Error("Invalid UTF-8 sequence");if(t.codepoint=t.codepoint<<6|e&63,t.utf8seq-=1,t.utf8seq===0)r(t.codepoint)}}function jt(e){let t=[],r={queue:0,queuedBits:0},n=(s)=>{t.push(s)};for(let s=0;s<e.length;s+=1)ql(e.charCodeAt(s),r,n);return new Uint8Array(t)}function ec(e){let t=[];return wf(e,(r)=>t.push(r)),new Uint8Array(t)}function Dt(e){let t=[],r={queue:0,queuedBits:0},n=(s)=>{t.push(s)};return e.forEach((s)=>zl(s,r,n)),zl(null,r,n),t.join("")}function tc(e){return Math.round(Date.now()/1000)+e}function rc(){return Symbol("auth-callback")}var Me=()=>typeof window<"u"&&typeof document<"u",nr={tested:!1,writable:!1},Ii=()=>{if(!Me())return!1;try{if(typeof globalThis.localStorage!=="object")return!1}catch(t){return!1}if(nr.tested)return nr.writable;let e=`lswt-${Math.random()}${Math.random()}`;try{globalThis.localStorage.setItem(e,e),globalThis.localStorage.removeItem(e),nr.tested=!0,nr.writable=!0}catch(t){nr.tested=!0,nr.writable=!1}return nr.writable};function nc(e){let t={},r=new URL(e);if(r.hash&&r.hash[0]==="#")try{new URLSearchParams(r.hash.substring(1)).forEach((s,i)=>{t[i]=s})}catch(n){}return r.searchParams.forEach((n,s)=>{t[s]=n}),t}var xi=(e)=>{if(e)return(...t)=>e(...t);return(...t)=>fetch(...t)},ic=(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))},Ht=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 Pr("Invalid JWT structure");for(let n=0;n<t.length;n++)if(!Jl.test(t[n]))throw new Pr("JWT not in base64url format");return{header:JSON.parse(Ws(t[0])),payload:JSON.parse(Ws(t[1])),signature:jt(t[2]),raw:{header:t[0],payload:t[1]}}}async function sc(e){return await new Promise((t)=>{setTimeout(()=>t(null),e)})}function oc(e,t){return new Promise((n,s)=>{(async()=>{for(let i=0;i<1/0;i++)try{let o=await e(i);if(!t(i,null,o)){n(o);return}}catch(o){if(!t(i,o)){s(o);return}}})()})}function vf(e){return("0"+e.toString(16)).substr(-2)}function Cf(){let t=new Uint32Array(56);if(typeof crypto>"u"){let s="";for(let i=0;i<56;i++)s+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~".charAt(Math.floor(Math.random()*66));return s}return crypto.getRandomValues(t),Array.from(t,vf).join("")}async function Ef(e){let r=new TextEncoder().encode(e),n=await crypto.subtle.digest("SHA-256",r),s=new Uint8Array(n);return Array.from(s).map((i)=>String.fromCharCode(i)).join("")}async function Sf(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 Ef(e);return btoa(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function sr(e,t,r=!1){let n=Cf(),s=n;if(r)s+="/PASSWORD_RECOVERY";await ir(e,`${t}-code-verifier`,s);let i=await Sf(n);return[i,n===i?"plain":"s256"]}var If=/^2[0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$/i;function ac(e){let t=e.headers.get(xn);if(!t)return null;if(!t.match(If))return null;try{return new Date(`${t}T00:00:00.0Z`)}catch(r){return null}}function lc(e){if(!e)throw Error("Missing exp claim");let t=Math.floor(Date.now()/1000);if(e<=t)throw Error("JWT has expired")}function cc(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 xf=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;function or(e){if(!xf.test(e))throw Error("@supabase/auth-js: Expected parameter to be UUID but is not")}function ki(){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 uc(e,t){return new Proxy(e,{get:(r,n,s)=>{if(n==="__isInsecureUserWarningProxy")return!0;if(typeof n==="symbol"){let i=n.toString();if(i==="Symbol(Symbol.toPrimitive)"||i==="Symbol(Symbol.toStringTag)"||i==="Symbol(util.inspect.custom)"||i==="Symbol(nodejs.util.inspect.custom)")return Reflect.get(r,n,s)}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,s)}})}function Ys(e){return JSON.parse(JSON.stringify(e))}var ar=(e)=>e.msg||e.message||e.error_description||e.error||JSON.stringify(e),kf=[502,503,504];async function dc(e){var t;if(!ic(e))throw new Rn(ar(e),0);if(kf.includes(e.status))throw new Rn(ar(e),e.status);let r;try{r=await e.json()}catch(i){throw new ft(ar(i),i)}let n=void 0,s=ac(e);if(s&&s.getTime()>=js["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((i,o)=>i&&typeof o==="string",!0))throw new Ei(ar(r),e.status,r.weak_password.reasons)}else if(n==="weak_password")throw new Ei(ar(r),e.status,((t=r.weak_password)===null||t===void 0?void 0:t.reasons)||[]);else if(n==="session_not_found")throw new $e;throw new Hs(ar(r),e.status||500,n)}var Rf=(e,t,r,n)=>{let s={method:e,headers:(t===null||t===void 0?void 0:t.headers)||{}};if(e==="GET")return s;return s.headers=Object.assign({"Content-Type":"application/json;charset=UTF-8"},t===null||t===void 0?void 0:t.headers),s.body=JSON.stringify(n),Object.assign(Object.assign({},s),r)};async function F(e,t,r,n){var s;let i=Object.assign({},n===null||n===void 0?void 0:n.headers);if(!i[xn])i[xn]=js["2024-01-01"].name;if(n===null||n===void 0?void 0:n.jwt)i.Authorization=`Bearer ${n.jwt}`;let o=(s=n===null||n===void 0?void 0:n.query)!==null&&s!==void 0?s:{};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 Tf(e,t,r+a,{headers:i,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 Tf(e,t,r,n,s,i){let o=Rf(t,n,s,i),a;try{a=await e(r,Object.assign({},o))}catch(l){throw console.error(l),new Rn(ar(l),0)}if(!a.ok)await dc(a);if(n===null||n===void 0?void 0:n.noResolveJson)return a;try{return await a.json()}catch(l){await dc(l)}}function ut(e){var t;let r=null;if(Bf(e)){if(r=Object.assign({},e),!e.expires_at)r.expires_at=tc(e.expires_in)}let n=(t=e.user)!==null&&t!==void 0?t:e;return{data:{session:r,user:n},error:null}}function Qs(e){let t=ut(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 It(e){var t;return{data:{user:(t=e.user)!==null&&t!==void 0?t:e},error:null}}function hc(e){return{data:e,error:null}}function Ac(e){let{action_link:t,email_otp:r,hashed_token:n,redirect_to:s,verification_type:i}=e,o=zt(e,["action_link","email_otp","hashed_token","redirect_to","verification_type"]),a={action_link:t,email_otp:r,hashed_token:n,redirect_to:s,verification_type:i},l=Object.assign({},o);return{data:{properties:a,user:l},error:null}}function Js(e){return e}function Bf(e){return e.access_token&&e.refresh_token&&e.expires_in}var Ri=["global","local","others"];class Nr{constructor({url:e="",headers:t={},fetch:r}){this.url=e,this.headers=t,this.fetch=xi(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=Ri[0]){if(Ri.indexOf(t)<0)throw Error(`@supabase/auth-js: Parameter scope must be one of ${Ri.join(", ")}`);try{return await F(this.fetch,"POST",`${this.url}/logout?scope=${t}`,{headers:this.headers,jwt:e,noResolveJson:!0}),{data:null,error:null}}catch(r){if(L(r))return{data:null,error:r};throw r}}async inviteUserByEmail(e,t={}){try{return await F(this.fetch,"POST",`${this.url}/invite`,{body:{email:e,data:t.data},headers:this.headers,redirectTo:t.redirectTo,xform:It})}catch(r){if(L(r))return{data:{user:null},error:r};throw r}}async generateLink(e){try{let{options:t}=e,r=zt(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 F(this.fetch,"POST",`${this.url}/admin/generate_link`,{body:n,headers:this.headers,xform:Ac,redirectTo:t===null||t===void 0?void 0:t.redirectTo})}catch(t){if(L(t))return{data:{properties:null,user:null},error:t};throw t}}async createUser(e){try{return await F(this.fetch,"POST",`${this.url}/admin/users`,{body:e,headers:this.headers,xform:It})}catch(t){if(L(t))return{data:{user:null},error:t};throw t}}async listUsers(e){var t,r,n,s,i,o,a;try{let l={nextPage:null,lastPage:0,total:0},c=await F(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:(s=(n=e===null||e===void 0?void 0:e.perPage)===null||n===void 0?void 0:n.toString())!==null&&s!==void 0?s:""},xform:Js});if(c.error)throw c.error;let u=await c.json(),d=(i=c.headers.get("x-total-count"))!==null&&i!==void 0?i:0,A=(a=(o=c.headers.get("link"))===null||o===void 0?void 0:o.split(","))!==null&&a!==void 0?a:[];if(A.length>0)A.forEach((m)=>{let g=parseInt(m.split(";")[0].split("=")[1].substring(0,1)),f=JSON.parse(m.split(";")[1].split("=")[1]);l[`${f}Page`]=g}),l.total=parseInt(d);return{data:Object.assign(Object.assign({},u),l),error:null}}catch(l){if(L(l))return{data:{users:[]},error:l};throw l}}async getUserById(e){or(e);try{return await F(this.fetch,"GET",`${this.url}/admin/users/${e}`,{headers:this.headers,xform:It})}catch(t){if(L(t))return{data:{user:null},error:t};throw t}}async updateUserById(e,t){or(e);try{return await F(this.fetch,"PUT",`${this.url}/admin/users/${e}`,{body:t,headers:this.headers,xform:It})}catch(r){if(L(r))return{data:{user:null},error:r};throw r}}async deleteUser(e,t=!1){or(e);try{return await F(this.fetch,"DELETE",`${this.url}/admin/users/${e}`,{headers:this.headers,body:{should_soft_delete:t},xform:It})}catch(r){if(L(r))return{data:{user:null},error:r};throw r}}async _listFactors(e){or(e.userId);try{let{data:t,error:r}=await F(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(L(t))return{data:null,error:t};throw t}}async _deleteFactor(e){or(e.userId),or(e.id);try{return{data:await F(this.fetch,"DELETE",`${this.url}/admin/users/${e.userId}/factors/${e.id}`,{headers:this.headers}),error:null}}catch(t){if(L(t))return{data:null,error:t};throw t}}async _listOAuthClients(e){var t,r,n,s,i,o,a;try{let l={nextPage:null,lastPage:0,total:0},c=await F(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:(s=(n=e===null||e===void 0?void 0:e.perPage)===null||n===void 0?void 0:n.toString())!==null&&s!==void 0?s:""},xform:Js});if(c.error)throw c.error;let u=await c.json(),d=(i=c.headers.get("x-total-count"))!==null&&i!==void 0?i:0,A=(a=(o=c.headers.get("link"))===null||o===void 0?void 0:o.split(","))!==null&&a!==void 0?a:[];if(A.length>0)A.forEach((m)=>{let g=parseInt(m.split(";")[0].split("=")[1].substring(0,1)),f=JSON.parse(m.split(";")[1].split("=")[1]);l[`${f}Page`]=g}),l.total=parseInt(d);return{data:Object.assign(Object.assign({},u),l),error:null}}catch(l){if(L(l))return{data:{clients:[]},error:l};throw l}}async _createOAuthClient(e){try{return await F(this.fetch,"POST",`${this.url}/admin/oauth/clients`,{body:e,headers:this.headers,xform:(t)=>({data:t,error:null})})}catch(t){if(L(t))return{data:null,error:t};throw t}}async _getOAuthClient(e){try{return await F(this.fetch,"GET",`${this.url}/admin/oauth/clients/${e}`,{headers:this.headers,xform:(t)=>({data:t,error:null})})}catch(t){if(L(t))return{data:null,error:t};throw t}}async _updateOAuthClient(e,t){try{return await F(this.fetch,"PUT",`${this.url}/admin/oauth/clients/${e}`,{body:t,headers:this.headers,xform:(r)=>({data:r,error:null})})}catch(r){if(L(r))return{data:null,error:r};throw r}}async _deleteOAuthClient(e){try{return await F(this.fetch,"DELETE",`${this.url}/admin/oauth/clients/${e}`,{headers:this.headers,noResolveJson:!0}),{data:null,error:null}}catch(t){if(L(t))return{data:null,error:t};throw t}}async _regenerateOAuthClientSecret(e){try{return await F(this.fetch,"POST",`${this.url}/admin/oauth/clients/${e}/regenerate_secret`,{headers:this.headers,xform:(t)=>({data:t,error:null})})}catch(t){if(L(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 F(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(L(t))return{data:{providers:[]},error:t};throw t}}async _createCustomProvider(e){try{return await F(this.fetch,"POST",`${this.url}/admin/custom-providers`,{body:e,headers:this.headers,xform:(t)=>({data:t,error:null})})}catch(t){if(L(t))return{data:null,error:t};throw t}}async _getCustomProvider(e){try{return await F(this.fetch,"GET",`${this.url}/admin/custom-providers/${e}`,{headers:this.headers,xform:(t)=>({data:t,error:null})})}catch(t){if(L(t))return{data:null,error:t};throw t}}async _updateCustomProvider(e,t){try{return await F(this.fetch,"PUT",`${this.url}/admin/custom-providers/${e}`,{body:t,headers:this.headers,xform:(r)=>({data:r,error:null})})}catch(r){if(L(r))return{data:null,error:r};throw r}}async _deleteCustomProvider(e){try{return await F(this.fetch,"DELETE",`${this.url}/admin/custom-providers/${e}`,{headers:this.headers,noResolveJson:!0}),{data:null,error:null}}catch(t){if(L(t))return{data:null,error:t};throw t}}}function Zs(e={}){return{getItem:(t)=>e[t]||null,setItem:(t,r)=>{e[t]=r},removeItem:(t)=>{delete e[t]}}}var gt={debug:!!(globalThis&&Ii()&&globalThis.localStorage&&globalThis.localStorage.getItem("supabase.gotrue-js.locks.debug")==="true")};class Bi extends Error{constructor(e){super(e);this.isAcquireTimeout=!0}}class Ti extends Bi{}async function $s(e,t,r){if(gt.debug)console.log("@supabase/gotrue-js: navigatorLock: acquire lock",e,t);let n=new globalThis.AbortController,s;if(t>0)s=setTimeout(()=>{if(n.abort(),gt.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(i)=>{if(i){if(clearTimeout(s),gt.debug)console.log("@supabase/gotrue-js: navigatorLock: acquired",e,i.name);try{return await r()}finally{if(gt.debug)console.log("@supabase/gotrue-js: navigatorLock: released",e,i.name)}}else if(t===0){if(gt.debug)console.log("@supabase/gotrue-js: navigatorLock: not immediately available",e);throw new Ti(`Acquiring an exclusive Navigator LockManager lock "${e}" immediately failed`)}else{if(gt.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(s),await r()}})}catch(i){if(t>0)clearTimeout(s);if((i===null||i===void 0?void 0:i.name)==="AbortError"&&t>0)if(n.signal.aborted){if(gt.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(gt.debug)console.log("@supabase/gotrue-js: navigatorLock: recovered (stolen)",e,o.name);try{return await r()}finally{if(gt.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(gt.debug)console.log("@supabase/gotrue-js: navigatorLock: lock was stolen by another request",e);throw new Ti(`Lock "${e}" was released because another request stole it`)}throw i}}function fc(){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 Xs(e){if(!/^0x[a-fA-F0-9]{40}$/.test(e))throw Error(`@supabase/auth-js: Address "${e}" is invalid.`);return e.toLowerCase()}function gc(e){return parseInt(e,16)}function mc(e){let t=new TextEncoder().encode(e);return"0x"+Array.from(t,(n)=>n.toString(16).padStart(2,"0")).join("")}function pc(e){var t;let{chainId:r,domain:n,expirationTime:s,issuedAt:i=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 m=
|
|
56
|
-
`:"",
|
|
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()||_n.closed}isConnected(){return this.socketAdapter.isConnected()}isConnecting(){return this.socketAdapter.isConnecting()}isDisconnecting(){return this.socketAdapter.isDisconnecting()}channel(e,t={config:{}}){let r=`realtime:${e}`,n=this.getChannels().find((s)=>s.topic===r);if(!n){let s=new Ht(`realtime:${e}`,t,this);return this.channels.push(s),s}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 s={access_token:t,version:Gl};if(t&&n.updateJoinPayload(s),n.joinedOnce&&n.channelAdapter.isJoined())n.channelAdapter.push(di.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([hf],{type:"application/javascript"});t=URL.createObjectURL(r)}return t}_initializeOptions(e){var t,r,n,s,i,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:Hl,u.heartbeatIntervalMs=(s=e===null||e===void 0?void 0:e.heartbeatIntervalMs)!==null&&s!==void 0?s:cf.HEARTBEAT_INTERVAL,u.transport=(i=e===null||e===void 0?void 0:e.transport)!==null&&i!==void 0?i:Gs.getWebSocketConstructor(),u.params=e===null||e===void 0?void 0:e.params,u.logger=e===null||e===void 0?void 0:e.logger,u.heartbeatCallback=this._wrapHeartbeatCallback(e===null||e===void 0?void 0:e.heartbeatCallback),u.reconnectAfterMs=(o=e===null||e===void 0?void 0:e.reconnectAfterMs)!==null&&o!==void 0?o:(g)=>uf[g-1]||df;let d,A,m=(a=e===null||e===void 0?void 0:e.vsn)!==null&&a!==void 0?a:jl;switch(m){case Ul:d=(g,f)=>f(JSON.stringify(g)),A=(g,f)=>f(JSON.parse(g));break;case Us:d=this.serializer.encode.bind(this.serializer),A=this.serializer.decode.bind(this.serializer);break;default:throw Error(`Unsupported serializer version: ${u.vsn}`)}if(u.vsn=m,u.encode=(l=e===null||e===void 0?void 0:e.encode)!==null&&l!==void 0?l:d,u.decode=(c=e===null||e===void 0?void 0:e.decode)!==null&&c!==void 0?c:A,u.beforeReconnect=this._reconnectAuth.bind(this),(e===null||e===void 0?void 0:e.logLevel)||(e===null||e===void 0?void 0:e.log_level))this.logLevel=e.logLevel||e.log_level,u.params=Object.assign(Object.assign({},u.params),{log_level:this.logLevel});if(this.worker){if(typeof window<"u"&&!window.Worker)throw Error("Web Worker is not supported");this.workerUrl=e===null||e===void 0?void 0:e.workerUrl,u.autoSendHeartbeat=!this.worker}return u}async _reconnectAuth(){if(await this._waitForAuthIfNeeded(),!this.isConnected())this.connect()}}var Sn=class extends Error{constructor(e,t){super(e);this.name="IcebergError",this.status=t.status,this.icebergType=t.icebergType,this.icebergCode=t.icebergCode,this.details=t.details,this.isCommitStateUnknown=t.icebergType==="CommitStateUnknownException"||[500,502,504].includes(t.status)&&t.icebergType?.includes("CommitState")===!0}isNotFound(){return this.status===404}isConflict(){return this.status===409}isAuthenticationTimeout(){return this.status===419}};function Af(e,t,r){let n=new URL(t,e);if(r){for(let[s,i]of Object.entries(r))if(i!==void 0)n.searchParams.set(s,i)}return n.toString()}async function ff(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 gf(e){let t=e.fetchImpl??globalThis.fetch;return{async request({method:r,path:n,query:s,body:i,headers:o}){let a=Af(e.baseUrl,n,s),l=await ff(e.auth),c=await t(a,{method:r,headers:{...i?{"Content-Type":"application/json"}:{},...l,...o},body:i?JSON.stringify(i):void 0}),u=await c.text(),d=(c.headers.get("content-type")||"").includes("application/json"),A=d&&u?JSON.parse(u):u;if(!c.ok){let m=d?A:void 0,g=m?.error;throw new Sn(g?.message??`Request failed with status ${c.status}`,{status:c.status,icebergType:g?.type,icebergCode:g?.code,details:m})}return{status:c.status,headers:c.headers,data:A}}}}function wi(e){return e.join("\x1F")}var mf=class{constructor(e,t=""){this.client=e,this.prefix=t}async listNamespaces(e){let t=e?{parent:wi(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/${wi(e.namespace)}`})}async loadNamespaceMetadata(e){return{properties:(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${wi(e.namespace)}`})).data.properties}}async namespaceExists(e){try{return await this.client.request({method:"HEAD",path:`${this.prefix}/namespaces/${wi(e.namespace)}`}),!0}catch(t){if(t instanceof Sn&&t.status===404)return!1;throw t}}async createNamespaceIfNotExists(e,t){try{return await this.createNamespace(e,t)}catch(r){if(r instanceof Sn&&r.status===409)return;throw r}}};function Or(e){return e.join("\x1F")}var pf=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/${Or(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/${Or(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/${Or(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/${Or(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/${Or(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/${Or(e.namespace)}/tables/${e.name}`,headers:t}),!0}catch(r){if(r instanceof Sn&&r.status===404)return!1;throw r}}async createTableIfNotExists(e,t){try{return await this.createTable(e,t)}catch(r){if(r instanceof Sn&&r.status===409)return await this.loadTable({namespace:e.namespace,name:t.name});throw r}}},Zl=class{constructor(e){let t="v1";if(e.catalogName)t+=`/${e.catalogName}`;let r=e.baseUrl.endsWith("/")?e.baseUrl:`${e.baseUrl}/`;this.client=gf({baseUrl:r,auth:e.auth,fetchImpl:e.fetch}),this.accessDelegation=e.accessDelegation?.join(","),this.namespaceOps=new mf(this.client,t),this.tableOps=new pf(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 vi=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 Ci(e){return typeof e==="object"&&e!==null&&"__isStorageError"in e}var _i=class extends vi{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}}},ql=class extends vi{constructor(e,t,r="storage"){super(e,r);this.name=r==="vectors"?"StorageVectorsUnknownError":"StorageUnknownError",this.originalError=t}};var bf=(e)=>{if(e)return(...t)=>e(...t);return(...t)=>fetch(...t)},yf=(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)},Js=(e)=>{if(Array.isArray(e))return e.map((r)=>Js(r));else if(typeof e==="function"||e!==Object(e))return e;let t={};return Object.entries(e).forEach(([r,n])=>{let s=r.replace(/([-_][a-z])/gi,(i)=>i.toUpperCase().replace(/[-_]/g,""));t[s]=Js(n)}),t},wf=(e)=>{if(!e||typeof e!=="string")return!1;if(e.length===0||e.length>100)return!1;if(e.trim()!==e)return!1;if(e.includes("/")||e.includes("\\"))return!1;return/^[\w!.\*'() &$@=;:+,?-]+$/.test(e)};function xn(e){return xn=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},xn(e)}function _f(e,t){if(xn(e)!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t||"default");if(xn(n)!="object")return n;throw TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function vf(e){var t=_f(e,"string");return xn(t)=="symbol"?t:t+""}function Cf(e,t,r){return(t=vf(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Xl(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).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?Xl(Object(r),!0).forEach(function(n){Cf(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Xl(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}var Vl=(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)},Ef=async(e,t,r,n)=>{if(e!==null&&typeof e==="object"&&typeof e.json==="function"){let s=e,i=parseInt(s.status,10);if(!Number.isFinite(i))i=500;s.json().then((o)=>{let a=(o===null||o===void 0?void 0:o.statusCode)||(o===null||o===void 0?void 0:o.code)||i+"";t(new _i(Vl(o),i,a,n))}).catch(()=>{let o=i+"";t(new _i(s.statusText||`HTTP ${i} error`,i,o,n))})}else t(new ql(Vl(e),e,n))},Sf=(e,t,r,n)=>{let s={method:e,headers:(t===null||t===void 0?void 0:t.headers)||{}};if(e==="GET"||e==="HEAD"||!n)return K(K({},s),r);if(yf(n)){var i;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;s.headers=If(o,"Content-Type",(i=a)!==null&&i!==void 0?i:"application/json"),s.body=JSON.stringify(n)}else s.body=n;if(t===null||t===void 0?void 0:t.duplex)s.duplex=t.duplex;return K(K({},s),r)};function If(e,t,r){let n=K({},e);for(let s of Object.keys(n))if(s.toLowerCase()===t.toLowerCase())delete n[s];return n[t]=r,n}async function In(e,t,r,n,s,i,o){return new Promise((a,l)=>{e(r,Sf(t,n,s,i)).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)=>Ef(c,l,n,o))})}function ec(e="storage"){return{get:async(t,r,n,s)=>In(t,"GET",r,n,s,void 0,e),post:async(t,r,n,s,i)=>In(t,"POST",r,s,i,n,e),put:async(t,r,n,s,i)=>In(t,"PUT",r,s,i,n,e),head:async(t,r,n,s)=>In(t,"HEAD",r,K(K({},n),{},{noResolveJson:!0}),s,void 0,e),remove:async(t,r,n,s,i)=>In(t,"DELETE",r,s,i,n,e)}}var xf=ec("storage"),{get:kn,post:gt,put:$s,head:kf,remove:Zs}=xf,at=ec("vectors"),Pr=class{constructor(e,t={},r,n="storage"){this.shouldThrowOnError=!1,this.url=e,this.headers=Object.fromEntries(Object.entries(t).map(([s,i])=>[s.toLowerCase(),i])),this.fetch=bf(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(Ci(r))return{data:null,error:r};throw r}}},Rf=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(Ci(t))return{data:null,error:t};throw t}}},tc;tc=Symbol.toStringTag;var Tf=class{constructor(e,t){this.downloadFn=e,this.shouldThrowOnError=t,this[tc]="BlobDownloadBuilder",this.promise=null}asStream(){return new Rf(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(Ci(t))return{data:null,error:t};throw t}}},Bf={limit:100,offset:0,sortBy:{column:"name",order:"asc"}},zl={cacheControl:"3600",contentType:"text/plain;charset=UTF-8",upsert:!1},Of=class extends Pr{constructor(e,t={},r,n){super(e,t,n,"storage");this.bucketId=r}async uploadOrUpdate(e,t,r,n){var s=this;return s.handleOperation(async()=>{let i,o=K(K({},zl),n),a=K(K({},s.headers),e==="POST"&&{"x-upsert":String(o.upsert)}),l=o.metadata;if(typeof Blob<"u"&&r instanceof Blob){if(i=new FormData,i.append("cacheControl",o.cacheControl),l)i.append("metadata",s.encodeMetadata(l));i.append("",r)}else if(typeof FormData<"u"&&r instanceof FormData){if(i=r,!i.has("cacheControl"))i.append("cacheControl",o.cacheControl);if(l&&!i.has("metadata"))i.append("metadata",s.encodeMetadata(l))}else{if(i=r,a["cache-control"]=`max-age=${o.cacheControl}`,a["content-type"]=o.contentType,l)a["x-metadata"]=s.toBase64(s.encodeMetadata(l));if((typeof ReadableStream<"u"&&i instanceof ReadableStream||i&&typeof i==="object"&&("pipe"in i)&&typeof i.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=s._removeEmptyFolders(t),u=s._getFinalPath(c),d=await(e=="PUT"?$s:gt)(s.fetch,`${s.url}/object/${u}`,i,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 s=this;let i=s._removeEmptyFolders(e),o=s._getFinalPath(i),a=new URL(s.url+`/object/upload/sign/${o}`);return a.searchParams.set("token",t),s.handleOperation(async()=>{let l,c=K(K({},zl),n),u=K(K({},s.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:i,fullPath:(await $s(s.fetch,a.toString(),l,{headers:u})).Key}})}async createSignedUploadUrl(e,t){var r=this;return r.handleOperation(async()=>{let n=r._getFinalPath(e),s=K({},r.headers);if(t===null||t===void 0?void 0:t.upsert)s["x-upsert"]="true";let i=await gt(r.fetch,`${r.url}/object/upload/sign/${n}`,{},{headers:s}),o=new URL(r.url+i.url),a=o.searchParams.get("token");if(!a)throw new vi("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 gt(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 gt(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 s=n._getFinalPath(e),i=typeof(r===null||r===void 0?void 0:r.transform)==="object"&&r.transform!==null&&Object.keys(r.transform).length>0,o=await gt(n.fetch,`${n.url}/object/sign/${s}`,K({expiresIn:t},i?{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=i&&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 s=await gt(n.fetch,`${n.url}/object/sign/${n.bucketId}`,{expiresIn:t,paths:e},{headers:n.headers}),i=new URLSearchParams;if(r===null||r===void 0?void 0:r.download)i.set("download",r.download===!0?"":r.download);if((r===null||r===void 0?void 0:r.cacheNonce)!=null)i.set("cacheNonce",String(r.cacheNonce));let o=i.toString();return s.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",s=new URLSearchParams;if(t===null||t===void 0?void 0:t.transform)this.applyTransformOptsToQuery(s,t.transform);if((t===null||t===void 0?void 0:t.cacheNonce)!=null)s.set("cacheNonce",String(t.cacheNonce));let i=s.toString(),o=this._getFinalPath(e);return new Tf(()=>kn(this.fetch,`${this.url}/${n}/${o}${i?`?${i}`:""}`,{headers:this.headers,noResolveJson:!0},r),this.shouldThrowOnError)}async info(e){var t=this;let r=t._getFinalPath(e);return t.handleOperation(async()=>Js(await kn(t.fetch,`${t.url}/object/info/${r}`,{headers:t.headers})))}async exists(e){var t=this;let r=t._getFinalPath(e);try{return await kf(t.fetch,`${t.url}/object/${r}`,{headers:t.headers}),{data:!0,error:null}}catch(s){if(t.shouldThrowOnError)throw s;if(Ci(s)){var n;let i=s instanceof _i?s.status:s instanceof ql?(n=s.originalError)===null||n===void 0?void 0:n.status:void 0;if(i!==void 0&&[400,404].includes(i))return{data:!1,error:s}}throw s}}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 s=n.toString(),i=typeof(t===null||t===void 0?void 0:t.transform)<"u"?"render/image":"object";return{data:{publicUrl:encodeURI(`${this.url}/${i}/public/${r}`)+(s?`?${s}`:"")}}}async remove(e){var t=this;return t.handleOperation(async()=>await Zs(t.fetch,`${t.url}/object/${t.bucketId}`,{prefixes:e},{headers:t.headers}))}async list(e,t,r){var n=this;return n.handleOperation(async()=>{let s=K(K(K({},Bf),t),{},{prefix:e||""});return await gt(n.fetch,`${n.url}/object/list/${n.bucketId}`,s,{headers:n.headers},r)})}async listV2(e,t){var r=this;return r.handleOperation(async()=>{let n=K({},e);return await gt(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}},Pf="2.103.0",Rn={"X-Client-Info":`storage-js/${Pf}`},Nf=class extends Pr{constructor(e,t={},r,n){let s=new URL(e);if(n===null||n===void 0?void 0:n.useNewHostname){if(/supabase\.(co|in|red)$/.test(s.hostname)&&!s.hostname.includes("storage.supabase."))s.hostname=s.hostname.replace("supabase.","storage.supabase.")}let i=s.href.replace(/\/$/,""),o=K(K({},Rn),t);super(i,o,r,"storage")}async listBuckets(e){var t=this;return t.handleOperation(async()=>{let r=t.listBucketOptionsToQueryString(e);return await kn(t.fetch,`${t.url}/bucket${r}`,{headers:t.headers})})}async getBucket(e){var t=this;return t.handleOperation(async()=>await kn(t.fetch,`${t.url}/bucket/${e}`,{headers:t.headers}))}async createBucket(e,t={public:!1}){var r=this;return r.handleOperation(async()=>await gt(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 $s(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 gt(t.fetch,`${t.url}/bucket/${e}/empty`,{},{headers:t.headers}))}async deleteBucket(e){var t=this;return t.handleOperation(async()=>await Zs(t.fetch,`${t.url}/bucket/${e}`,{},{headers:t.headers}))}listBucketOptionsToQueryString(e){let t={};if(e){if("limit"in e)t.limit=String(e.limit);if("offset"in e)t.offset=String(e.offset);if(e.search)t.search=e.search;if(e.sortColumn)t.sortColumn=e.sortColumn;if(e.sortOrder)t.sortOrder=e.sortOrder}return Object.keys(t).length>0?"?"+new URLSearchParams(t).toString():""}},Df=class extends Pr{constructor(e,t={},r){let n=e.replace(/\/$/,""),s=K(K({},Rn),t);super(n,s,r,"storage")}async createBucket(e){var t=this;return t.handleOperation(async()=>await gt(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(),s=n?`${t.url}/bucket?${n}`:`${t.url}/bucket`;return await kn(t.fetch,s,{headers:t.headers})})}async deleteBucket(e){var t=this;return t.handleOperation(async()=>await Zs(t.fetch,`${t.url}/bucket/${e}`,{},{headers:t.headers}))}from(e){var t=this;if(!wf(e))throw new vi("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 Zl({baseUrl:this.url,catalogName:e,auth:{type:"custom",getHeaders:async()=>t.headers},fetch:this.fetch}),n=this.shouldThrowOnError;return new Proxy(r,{get(s,i){let o=s[i];if(typeof o!=="function")return o;return async(...a)=>{try{return{data:await o.apply(s,a),error:null}}catch(l){if(n)throw l;return{data:null,error:l}}}}})}},Lf=class extends Pr{constructor(e,t={},r){let n=e.replace(/\/$/,""),s=K(K({},Rn),{},{"Content-Type":"application/json"},t);super(n,s,r,"vectors")}async createIndex(e){var t=this;return t.handleOperation(async()=>await at.post(t.fetch,`${t.url}/CreateIndex`,e,{headers:t.headers})||{})}async getIndex(e,t){var r=this;return r.handleOperation(async()=>await at.post(r.fetch,`${r.url}/GetIndex`,{vectorBucketName:e,indexName:t},{headers:r.headers}))}async listIndexes(e){var t=this;return t.handleOperation(async()=>await at.post(t.fetch,`${t.url}/ListIndexes`,e,{headers:t.headers}))}async deleteIndex(e,t){var r=this;return r.handleOperation(async()=>await at.post(r.fetch,`${r.url}/DeleteIndex`,{vectorBucketName:e,indexName:t},{headers:r.headers})||{})}},Mf=class extends Pr{constructor(e,t={},r){let n=e.replace(/\/$/,""),s=K(K({},Rn),{},{"Content-Type":"application/json"},t);super(n,s,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 at.post(t.fetch,`${t.url}/PutVectors`,e,{headers:t.headers})||{})}async getVectors(e){var t=this;return t.handleOperation(async()=>await at.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 at.post(t.fetch,`${t.url}/ListVectors`,e,{headers:t.headers}))}async queryVectors(e){var t=this;return t.handleOperation(async()=>await at.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 at.post(t.fetch,`${t.url}/DeleteVectors`,e,{headers:t.headers})||{})}},Ff=class extends Pr{constructor(e,t={},r){let n=e.replace(/\/$/,""),s=K(K({},Rn),{},{"Content-Type":"application/json"},t);super(n,s,r,"vectors")}async createBucket(e){var t=this;return t.handleOperation(async()=>await at.post(t.fetch,`${t.url}/CreateVectorBucket`,{vectorBucketName:e},{headers:t.headers})||{})}async getBucket(e){var t=this;return t.handleOperation(async()=>await at.post(t.fetch,`${t.url}/GetVectorBucket`,{vectorBucketName:e},{headers:t.headers}))}async listBuckets(e={}){var t=this;return t.handleOperation(async()=>await at.post(t.fetch,`${t.url}/ListVectorBuckets`,e,{headers:t.headers}))}async deleteBucket(e){var t=this;return t.handleOperation(async()=>await at.post(t.fetch,`${t.url}/DeleteVectorBucket`,{vectorBucketName:e},{headers:t.headers})||{})}},Gf=class extends Ff{constructor(e,t={}){super(e,t.headers||{},t.fetch)}from(e){return new Uf(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)}},Uf=class extends Lf{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 jf(this.url,this.headers,this.vectorBucketName,e,this.fetch)}},jf=class extends Mf{constructor(e,t,r,n,s){super(e,t,s);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}))}},rc=class extends Nf{constructor(e,t={},r,n){super(e,t,r,n)}from(e){return new Of(this.url,this.headers,e,this.fetch)}get vectors(){return new Gf(this.url+"/vector",{headers:this.headers,fetch:this.fetch})}get analytics(){return new Df(this.url+"/iceberg",this.headers,this.fetch)}};var Ei="2.103.0";var ir=30000,Si=3,Ii=Si*ir,nc="http://localhost:9999",ic="supabase.auth.token";var sc={"X-Client-Info":`gotrue-js/${Ei}`};var Tn="X-Supabase-Api-Version",Xs={"2024-01-01":{timestamp:Date.parse("2024-01-01T00:00:00.0Z"),name:"2024-01-01"}},oc=/^([a-z0-9_-]{4})*($|[a-z0-9_-]{3}$|[a-z0-9_-]{2}$)$/i,ac=600000;class sr 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 Vs extends sr{constructor(e,t,r){super(e,t,r);this.name="AuthApiError",this.status=t,this.code=r}}function lc(e){return M(e)&&e.name==="AuthApiError"}class mt extends sr{constructor(e,t){super(e);this.name="AuthUnknownError",this.originalError=t}}class It extends sr{constructor(e,t,r,n){super(e,r,n);this.name=t,this.status=r}}class Ve extends It{constructor(){super("Auth session missing!","AuthSessionMissingError",400,void 0)}}function Bn(e){return M(e)&&e.name==="AuthSessionMissingError"}class Kt extends It{constructor(){super("Auth session or user missing","AuthInvalidTokenResponseError",500,void 0)}}class Nr extends It{constructor(e){super(e,"AuthInvalidCredentialsError",400,void 0)}}class Dr extends It{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 cc(e){return M(e)&&e.name==="AuthImplicitGrantRedirectError"}class xi extends It{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 zs extends It{constructor(){super("PKCE code verifier not found in storage. This can happen if the auth flow was initiated in a different browser or device, or if the storage was cleared. For SSR frameworks (Next.js, SvelteKit, etc.), use @supabase/ssr on both the server and client to store the code verifier in cookies.","AuthPKCECodeVerifierMissingError",400,"pkce_code_verifier_not_found")}}class On extends It{constructor(e,t){super(e,"AuthRetryableFetchError",t,void 0)}}function ki(e){return M(e)&&e.name==="AuthRetryableFetchError"}class Ri extends It{constructor(e,t,r){super(e,"AuthWeakPasswordError",t,"weak_password");this.reasons=r}}class Lr extends It{constructor(e){super(e,"AuthInvalidJwtError",400,"invalid_jwt")}}var Ti="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".split(""),uc=`
|
|
54
|
+
\r=`.split(""),Hf=(()=>{let e=Array(128);for(let t=0;t<e.length;t+=1)e[t]=-1;for(let t=0;t<uc.length;t+=1)e[uc[t].charCodeAt(0)]=-2;for(let t=0;t<Ti.length;t+=1)e[Ti[t].charCodeAt(0)]=t;return e})();function dc(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(Ti[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(Ti[n]),t.queuedBits-=6}}}function hc(e,t,r){let n=Hf[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 qs(e){let t=[],r=(o)=>{t.push(String.fromCodePoint(o))},n={utf8seq:0,codepoint:0},s={queue:0,queuedBits:0},i=(o)=>{Yf(o,n,r)};for(let o=0;o<e.length;o+=1)hc(e.charCodeAt(o),s,i);return t.join("")}function Kf(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 Wf(e,t){for(let r=0;r<e.length;r+=1){let n=e.charCodeAt(r);if(n>55295&&n<=56319){let s=(n-55296)*1024&65535;n=(e.charCodeAt(r+1)-56320&65535|s)+65536,r+=1}Kf(n,t)}}function Yf(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 Wt(e){let t=[],r={queue:0,queuedBits:0},n=(s)=>{t.push(s)};for(let s=0;s<e.length;s+=1)hc(e.charCodeAt(s),r,n);return new Uint8Array(t)}function Ac(e){let t=[];return Wf(e,(r)=>t.push(r)),new Uint8Array(t)}function Mt(e){let t=[],r={queue:0,queuedBits:0},n=(s)=>{t.push(s)};return e.forEach((s)=>dc(s,r,n)),dc(null,r,n),t.join("")}function fc(e){return Math.round(Date.now()/1000)+e}function gc(){return Symbol("auth-callback")}var Fe=()=>typeof window<"u"&&typeof document<"u",or={tested:!1,writable:!1},Bi=()=>{if(!Fe())return!1;try{if(typeof globalThis.localStorage!=="object")return!1}catch(t){return!1}if(or.tested)return or.writable;let e=`lswt-${Math.random()}${Math.random()}`;try{globalThis.localStorage.setItem(e,e),globalThis.localStorage.removeItem(e),or.tested=!0,or.writable=!0}catch(t){or.tested=!0,or.writable=!1}return or.writable};function mc(e){let t={},r=new URL(e);if(r.hash&&r.hash[0]==="#")try{new URLSearchParams(r.hash.substring(1)).forEach((s,i)=>{t[i]=s})}catch(n){}return r.searchParams.forEach((n,s)=>{t[s]=n}),t}var Oi=(e)=>{if(e)return(...t)=>e(...t);return(...t)=>fetch(...t)},pc=(e)=>typeof e==="object"&&e!==null&&("status"in e)&&("ok"in e)&&("json"in e)&&typeof e.json==="function",ar=async(e,t,r)=>{await e.setItem(t,JSON.stringify(r))},Yt=async(e,t)=>{let r=await e.getItem(t);if(!r)return null;try{return JSON.parse(r)}catch(n){return r}},He=async(e,t)=>{await e.removeItem(t)};class Pn{constructor(){this.promise=new Pn.promiseConstructor((e,t)=>{this.resolve=e,this.reject=t})}}Pn.promiseConstructor=Promise;function Nn(e){let t=e.split(".");if(t.length!==3)throw new Lr("Invalid JWT structure");for(let n=0;n<t.length;n++)if(!oc.test(t[n]))throw new Lr("JWT not in base64url format");return{header:JSON.parse(qs(t[0])),payload:JSON.parse(qs(t[1])),signature:Wt(t[2]),raw:{header:t[0],payload:t[1]}}}async function bc(e){return await new Promise((t)=>{setTimeout(()=>t(null),e)})}function yc(e,t){return new Promise((n,s)=>{(async()=>{for(let i=0;i<1/0;i++)try{let o=await e(i);if(!t(i,null,o)){n(o);return}}catch(o){if(!t(i,o)){s(o);return}}})()})}function Qf(e){return("0"+e.toString(16)).substr(-2)}function Jf(){let t=new Uint32Array(56);if(typeof crypto>"u"){let s="";for(let i=0;i<56;i++)s+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~".charAt(Math.floor(Math.random()*66));return s}return crypto.getRandomValues(t),Array.from(t,Qf).join("")}async function $f(e){let r=new TextEncoder().encode(e),n=await crypto.subtle.digest("SHA-256",r),s=new Uint8Array(n);return Array.from(s).map((i)=>String.fromCharCode(i)).join("")}async function Zf(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 $f(e);return btoa(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function lr(e,t,r=!1){let n=Jf(),s=n;if(r)s+="/PASSWORD_RECOVERY";await ar(e,`${t}-code-verifier`,s);let i=await Zf(n);return[i,n===i?"plain":"s256"]}var Xf=/^2[0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$/i;function wc(e){let t=e.headers.get(Tn);if(!t)return null;if(!t.match(Xf))return null;try{return new Date(`${t}T00:00:00.0Z`)}catch(r){return null}}function _c(e){if(!e)throw Error("Missing exp claim");let t=Math.floor(Date.now()/1000);if(e<=t)throw Error("JWT has expired")}function vc(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 Vf=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;function cr(e){if(!Vf.test(e))throw Error("@supabase/auth-js: Expected parameter to be UUID but is not")}function Pi(){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 Cc(e,t){return new Proxy(e,{get:(r,n,s)=>{if(n==="__isInsecureUserWarningProxy")return!0;if(typeof n==="symbol"){let i=n.toString();if(i==="Symbol(Symbol.toPrimitive)"||i==="Symbol(Symbol.toStringTag)"||i==="Symbol(util.inspect.custom)"||i==="Symbol(nodejs.util.inspect.custom)")return Reflect.get(r,n,s)}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,s)}})}function eo(e){return JSON.parse(JSON.stringify(e))}var ur=(e)=>e.msg||e.message||e.error_description||e.error||JSON.stringify(e),zf=[502,503,504];async function Ec(e){var t;if(!pc(e))throw new On(ur(e),0);if(zf.includes(e.status))throw new On(ur(e),e.status);let r;try{r=await e.json()}catch(i){throw new mt(ur(i),i)}let n=void 0,s=wc(e);if(s&&s.getTime()>=Xs["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((i,o)=>i&&typeof o==="string",!0))throw new Ri(ur(r),e.status,r.weak_password.reasons)}else if(n==="weak_password")throw new Ri(ur(r),e.status,((t=r.weak_password)===null||t===void 0?void 0:t.reasons)||[]);else if(n==="session_not_found")throw new Ve;throw new Vs(ur(r),e.status||500,n)}var qf=(e,t,r,n)=>{let s={method:e,headers:(t===null||t===void 0?void 0:t.headers)||{}};if(e==="GET")return s;return s.headers=Object.assign({"Content-Type":"application/json;charset=UTF-8"},t===null||t===void 0?void 0:t.headers),s.body=JSON.stringify(n),Object.assign(Object.assign({},s),r)};async function U(e,t,r,n){var s;let i=Object.assign({},n===null||n===void 0?void 0:n.headers);if(!i[Tn])i[Tn]=Xs["2024-01-01"].name;if(n===null||n===void 0?void 0:n.jwt)i.Authorization=`Bearer ${n.jwt}`;let o=(s=n===null||n===void 0?void 0:n.query)!==null&&s!==void 0?s:{};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 eg(e,t,r+a,{headers:i,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 eg(e,t,r,n,s,i){let o=qf(t,n,s,i),a;try{a=await e(r,Object.assign({},o))}catch(l){throw console.error(l),new On(ur(l),0)}if(!a.ok)await Ec(a);if(n===null||n===void 0?void 0:n.noResolveJson)return a;try{return await a.json()}catch(l){await Ec(l)}}function ht(e){var t;let r=null;if(tg(e)){if(r=Object.assign({},e),!e.expires_at)r.expires_at=fc(e.expires_in)}let n=(t=e.user)!==null&&t!==void 0?t:e;return{data:{session:r,user:n},error:null}}function to(e){let t=ht(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 xt(e){var t;return{data:{user:(t=e.user)!==null&&t!==void 0?t:e},error:null}}function Sc(e){return{data:e,error:null}}function Ic(e){let{action_link:t,email_otp:r,hashed_token:n,redirect_to:s,verification_type:i}=e,o=tr(e,["action_link","email_otp","hashed_token","redirect_to","verification_type"]),a={action_link:t,email_otp:r,hashed_token:n,redirect_to:s,verification_type:i},l=Object.assign({},o);return{data:{properties:a,user:l},error:null}}function ro(e){return e}function tg(e){return e.access_token&&e.refresh_token&&e.expires_in}var Ni=["global","local","others"];class Mr{constructor({url:e="",headers:t={},fetch:r}){this.url=e,this.headers=t,this.fetch=Oi(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=Ni[0]){if(Ni.indexOf(t)<0)throw Error(`@supabase/auth-js: Parameter scope must be one of ${Ni.join(", ")}`);try{return await U(this.fetch,"POST",`${this.url}/logout?scope=${t}`,{headers:this.headers,jwt:e,noResolveJson:!0}),{data:null,error:null}}catch(r){if(M(r))return{data:null,error:r};throw r}}async inviteUserByEmail(e,t={}){try{return await U(this.fetch,"POST",`${this.url}/invite`,{body:{email:e,data:t.data},headers:this.headers,redirectTo:t.redirectTo,xform:xt})}catch(r){if(M(r))return{data:{user:null},error:r};throw r}}async generateLink(e){try{let{options:t}=e,r=tr(e,["options"]),n=Object.assign(Object.assign({},r),t);if("newEmail"in r)n.new_email=r===null||r===void 0?void 0:r.newEmail,delete n.newEmail;return await U(this.fetch,"POST",`${this.url}/admin/generate_link`,{body:n,headers:this.headers,xform:Ic,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 U(this.fetch,"POST",`${this.url}/admin/users`,{body:e,headers:this.headers,xform:xt})}catch(t){if(M(t))return{data:{user:null},error:t};throw t}}async listUsers(e){var t,r,n,s,i,o,a;try{let l={nextPage:null,lastPage:0,total:0},c=await U(this.fetch,"GET",`${this.url}/admin/users`,{headers:this.headers,noResolveJson:!0,query:{page:(r=(t=e===null||e===void 0?void 0:e.page)===null||t===void 0?void 0:t.toString())!==null&&r!==void 0?r:"",per_page:(s=(n=e===null||e===void 0?void 0:e.perPage)===null||n===void 0?void 0:n.toString())!==null&&s!==void 0?s:""},xform:ro});if(c.error)throw c.error;let u=await c.json(),d=(i=c.headers.get("x-total-count"))!==null&&i!==void 0?i:0,A=(a=(o=c.headers.get("link"))===null||o===void 0?void 0:o.split(","))!==null&&a!==void 0?a:[];if(A.length>0)A.forEach((m)=>{let g=parseInt(m.split(";")[0].split("=")[1].substring(0,1)),f=JSON.parse(m.split(";")[1].split("=")[1]);l[`${f}Page`]=g}),l.total=parseInt(d);return{data:Object.assign(Object.assign({},u),l),error:null}}catch(l){if(M(l))return{data:{users:[]},error:l};throw l}}async getUserById(e){cr(e);try{return await U(this.fetch,"GET",`${this.url}/admin/users/${e}`,{headers:this.headers,xform:xt})}catch(t){if(M(t))return{data:{user:null},error:t};throw t}}async updateUserById(e,t){cr(e);try{return await U(this.fetch,"PUT",`${this.url}/admin/users/${e}`,{body:t,headers:this.headers,xform:xt})}catch(r){if(M(r))return{data:{user:null},error:r};throw r}}async deleteUser(e,t=!1){cr(e);try{return await U(this.fetch,"DELETE",`${this.url}/admin/users/${e}`,{headers:this.headers,body:{should_soft_delete:t},xform:xt})}catch(r){if(M(r))return{data:{user:null},error:r};throw r}}async _listFactors(e){cr(e.userId);try{let{data:t,error:r}=await U(this.fetch,"GET",`${this.url}/admin/users/${e.userId}/factors`,{headers:this.headers,xform:(n)=>({data:{factors:n},error:null})});return{data:t,error:r}}catch(t){if(M(t))return{data:null,error:t};throw t}}async _deleteFactor(e){cr(e.userId),cr(e.id);try{return{data:await U(this.fetch,"DELETE",`${this.url}/admin/users/${e.userId}/factors/${e.id}`,{headers:this.headers}),error:null}}catch(t){if(M(t))return{data:null,error:t};throw t}}async _listOAuthClients(e){var t,r,n,s,i,o,a;try{let l={nextPage:null,lastPage:0,total:0},c=await U(this.fetch,"GET",`${this.url}/admin/oauth/clients`,{headers:this.headers,noResolveJson:!0,query:{page:(r=(t=e===null||e===void 0?void 0:e.page)===null||t===void 0?void 0:t.toString())!==null&&r!==void 0?r:"",per_page:(s=(n=e===null||e===void 0?void 0:e.perPage)===null||n===void 0?void 0:n.toString())!==null&&s!==void 0?s:""},xform:ro});if(c.error)throw c.error;let u=await c.json(),d=(i=c.headers.get("x-total-count"))!==null&&i!==void 0?i:0,A=(a=(o=c.headers.get("link"))===null||o===void 0?void 0:o.split(","))!==null&&a!==void 0?a:[];if(A.length>0)A.forEach((m)=>{let g=parseInt(m.split(";")[0].split("=")[1].substring(0,1)),f=JSON.parse(m.split(";")[1].split("=")[1]);l[`${f}Page`]=g}),l.total=parseInt(d);return{data:Object.assign(Object.assign({},u),l),error:null}}catch(l){if(M(l))return{data:{clients:[]},error:l};throw l}}async _createOAuthClient(e){try{return await U(this.fetch,"POST",`${this.url}/admin/oauth/clients`,{body:e,headers:this.headers,xform:(t)=>({data:t,error:null})})}catch(t){if(M(t))return{data:null,error:t};throw t}}async _getOAuthClient(e){try{return await U(this.fetch,"GET",`${this.url}/admin/oauth/clients/${e}`,{headers:this.headers,xform:(t)=>({data:t,error:null})})}catch(t){if(M(t))return{data:null,error:t};throw t}}async _updateOAuthClient(e,t){try{return await U(this.fetch,"PUT",`${this.url}/admin/oauth/clients/${e}`,{body:t,headers:this.headers,xform:(r)=>({data:r,error:null})})}catch(r){if(M(r))return{data:null,error:r};throw r}}async _deleteOAuthClient(e){try{return await U(this.fetch,"DELETE",`${this.url}/admin/oauth/clients/${e}`,{headers:this.headers,noResolveJson:!0}),{data:null,error:null}}catch(t){if(M(t))return{data:null,error:t};throw t}}async _regenerateOAuthClientSecret(e){try{return await U(this.fetch,"POST",`${this.url}/admin/oauth/clients/${e}/regenerate_secret`,{headers:this.headers,xform:(t)=>({data:t,error:null})})}catch(t){if(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 U(this.fetch,"GET",`${this.url}/admin/custom-providers`,{headers:this.headers,query:t,xform:(r)=>{var n;return{data:{providers:(n=r===null||r===void 0?void 0:r.providers)!==null&&n!==void 0?n:[]},error:null}}})}catch(t){if(M(t))return{data:{providers:[]},error:t};throw t}}async _createCustomProvider(e){try{return await U(this.fetch,"POST",`${this.url}/admin/custom-providers`,{body:e,headers:this.headers,xform:(t)=>({data:t,error:null})})}catch(t){if(M(t))return{data:null,error:t};throw t}}async _getCustomProvider(e){try{return await U(this.fetch,"GET",`${this.url}/admin/custom-providers/${e}`,{headers:this.headers,xform:(t)=>({data:t,error:null})})}catch(t){if(M(t))return{data:null,error:t};throw t}}async _updateCustomProvider(e,t){try{return await U(this.fetch,"PUT",`${this.url}/admin/custom-providers/${e}`,{body:t,headers:this.headers,xform:(r)=>({data:r,error:null})})}catch(r){if(M(r))return{data:null,error:r};throw r}}async _deleteCustomProvider(e){try{return await U(this.fetch,"DELETE",`${this.url}/admin/custom-providers/${e}`,{headers:this.headers,noResolveJson:!0}),{data:null,error:null}}catch(t){if(M(t))return{data:null,error:t};throw t}}}function no(e={}){return{getItem:(t)=>e[t]||null,setItem:(t,r)=>{e[t]=r},removeItem:(t)=>{delete e[t]}}}var pt={debug:!!(globalThis&&Bi()&&globalThis.localStorage&&globalThis.localStorage.getItem("supabase.gotrue-js.locks.debug")==="true")};class Li extends Error{constructor(e){super(e);this.isAcquireTimeout=!0}}class Di extends Li{}async function io(e,t,r){if(pt.debug)console.log("@supabase/gotrue-js: navigatorLock: acquire lock",e,t);let n=new globalThis.AbortController,s;if(t>0)s=setTimeout(()=>{if(n.abort(),pt.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(i)=>{if(i){if(clearTimeout(s),pt.debug)console.log("@supabase/gotrue-js: navigatorLock: acquired",e,i.name);try{return await r()}finally{if(pt.debug)console.log("@supabase/gotrue-js: navigatorLock: released",e,i.name)}}else if(t===0){if(pt.debug)console.log("@supabase/gotrue-js: navigatorLock: not immediately available",e);throw new Di(`Acquiring an exclusive Navigator LockManager lock "${e}" immediately failed`)}else{if(pt.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(s),await r()}})}catch(i){if(t>0)clearTimeout(s);if((i===null||i===void 0?void 0:i.name)==="AbortError"&&t>0)if(n.signal.aborted){if(pt.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(pt.debug)console.log("@supabase/gotrue-js: navigatorLock: recovered (stolen)",e,o.name);try{return await r()}finally{if(pt.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(pt.debug)console.log("@supabase/gotrue-js: navigatorLock: lock was stolen by another request",e);throw new Di(`Lock "${e}" was released because another request stole it`)}throw i}}function xc(){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 so(e){if(!/^0x[a-fA-F0-9]{40}$/.test(e))throw Error(`@supabase/auth-js: Address "${e}" is invalid.`);return e.toLowerCase()}function kc(e){return parseInt(e,16)}function Rc(e){let t=new TextEncoder().encode(e);return"0x"+Array.from(t,(n)=>n.toString(16).padStart(2,"0")).join("")}function Tc(e){var t;let{chainId:r,domain:n,expirationTime:s,issuedAt:i=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 m=so(e.address),g=u?`${u}://${n}`:n,f=e.statement?`${e.statement}
|
|
56
|
+
`:"",p=`${g} wants you to sign in with your Ethereum account:
|
|
57
57
|
${m}
|
|
58
58
|
|
|
59
59
|
${f}`,v=`URI: ${d}
|
|
@@ -63,12 +63,12 @@ Nonce: ${o}`:""}
|
|
|
63
63
|
Issued At: ${i.toISOString()}`;if(s)v+=`
|
|
64
64
|
Expiration Time: ${s.toISOString()}`;if(a)v+=`
|
|
65
65
|
Not Before: ${a.toISOString()}`;if(l)v+=`
|
|
66
|
-
Request ID: ${l}`;if(c){let
|
|
67
|
-
Resources:`;for(let
|
|
68
|
-
- ${
|
|
69
|
-
${v}`}class Ie extends Error{constructor({message:e,code:t,cause:r,name:n}){var s;super(e,{cause:r});this.__isWebAuthnError=!0,this.name=(s=n!==null&&n!==void 0?n:r instanceof Error?r.name:void 0)!==null&&s!==void 0?s:"Unknown Error",this.code=t}}class Dr extends Ie{constructor(e,t){super({code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t,message:e});this.name="WebAuthnUnknownError",this.originalError=t}}function bc({error:e,options:t}){var r,n,s;let{publicKey:i}=t;if(!i)throw Error("options was missing required publicKey property");if(e.name==="AbortError"){if(t.signal instanceof AbortSignal)return new Ie({message:"Registration ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else if(e.name==="ConstraintError"){if(((r=i.authenticatorSelection)===null||r===void 0?void 0:r.requireResidentKey)===!0)return new Ie({message:"Discoverable credentials were required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT",cause:e});else if(t.mediation==="conditional"&&((n=i.authenticatorSelection)===null||n===void 0?void 0:n.userVerification)==="required")return new Ie({message:"User verification was required during automatic registration but it could not be performed",code:"ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE",cause:e});else if(((s=i.authenticatorSelection)===null||s===void 0?void 0:s.userVerification)==="required")return new Ie({message:"User verification was required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT",cause:e})}else if(e.name==="InvalidStateError")return new Ie({message:"The authenticator was previously registered",code:"ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",cause:e});else if(e.name==="NotAllowedError")return new Ie({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});else if(e.name==="NotSupportedError"){if(i.pubKeyCredParams.filter((a)=>a.type==="public-key").length===0)return new Ie({message:'No entry in pubKeyCredParams was of type "public-key"',code:"ERROR_MALFORMED_PUBKEYCREDPARAMS",cause:e});return new Ie({message:"No available authenticator supported any of the specified pubKeyCredParams algorithms",code:"ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG",cause:e})}else if(e.name==="SecurityError"){let o=window.location.hostname;if(!Vs(o))return new Ie({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e});else if(i.rp.id!==o)return new Ie({message:`The RP ID "${i.rp.id}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else if(e.name==="TypeError"){if(i.user.id.byteLength<1||i.user.id.byteLength>64)return new Ie({message:"User ID was not between 1 and 64 characters",code:"ERROR_INVALID_USER_ID_LENGTH",cause:e})}else if(e.name==="UnknownError")return new Ie({message:"The authenticator was unable to process the specified options, or could not create a new credential",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:e});return new Ie({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e})}function yc({error:e,options:t}){let{publicKey:r}=t;if(!r)throw Error("options was missing required publicKey property");if(e.name==="AbortError"){if(t.signal instanceof AbortSignal)return new Ie({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else if(e.name==="NotAllowedError")return new Ie({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});else if(e.name==="SecurityError"){let n=window.location.hostname;if(!Vs(n))return new Ie({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e});else if(r.rpId!==n)return new Ie({message:`The RP ID "${r.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else if(e.name==="UnknownError")return new Ie({message:"The authenticator was unable to process the specified options, or could not create a new assertion signature",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:e});return new Ie({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e})}class _c{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 Of=new _c;function vc(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,s=zt(e,["challenge","user","excludeCredentials"]),i=jt(t).buffer,o=Object.assign(Object.assign({},r),{id:jt(r.id).buffer}),a=Object.assign(Object.assign({},s),{challenge:i,user:o});if(n&&n.length>0){a.excludeCredentials=Array(n.length);for(let l=0;l<n.length;l++){let c=n[l];a.excludeCredentials[l]=Object.assign(Object.assign({},c),{id:jt(c.id).buffer,type:c.type||"public-key",transports:c.transports})}}return a}function Cc(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=zt(e,["challenge","allowCredentials"]),s=jt(t).buffer,i=Object.assign(Object.assign({},n),{challenge:s});if(r&&r.length>0){i.allowCredentials=Array(r.length);for(let o=0;o<r.length;o++){let a=r[o];i.allowCredentials[o]=Object.assign(Object.assign({},a),{id:jt(a.id).buffer,type:a.type||"public-key",transports:a.transports})}}return i}function Ec(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:Dt(new Uint8Array(e.response.attestationObject)),clientDataJSON:Dt(new Uint8Array(e.response.clientDataJSON))},type:"public-key",clientExtensionResults:e.getClientExtensionResults(),authenticatorAttachment:(t=r.authenticatorAttachment)!==null&&t!==void 0?t:void 0}}function Sc(e){var t;if("toJSON"in e&&typeof e.toJSON==="function")return e.toJSON();let r=e,n=e.getClientExtensionResults(),s=e.response;return{id:e.id,rawId:e.id,response:{authenticatorData:Dt(new Uint8Array(s.authenticatorData)),clientDataJSON:Dt(new Uint8Array(s.clientDataJSON)),signature:Dt(new Uint8Array(s.signature)),userHandle:s.userHandle?Dt(new Uint8Array(s.userHandle)):void 0},type:"public-key",clientExtensionResults:n,authenticatorAttachment:(t=r.authenticatorAttachment)!==null&&t!==void 0?t:void 0}}function Vs(e){return e==="localhost"||/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(e)}function wc(){var e,t;return!!(Me()&&("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 Pf(e){try{let t=await navigator.credentials.create(e);if(!t)return{data:null,error:new Dr("Empty credential response",t)};if(!(t instanceof PublicKeyCredential))return{data:null,error:new Dr("Browser returned unexpected credential type",t)};return{data:t,error:null}}catch(t){return{data:null,error:bc({error:t,options:e})}}}async function Nf(e){try{let t=await navigator.credentials.get(e);if(!t)return{data:null,error:new Dr("Empty credential response",t)};if(!(t instanceof PublicKeyCredential))return{data:null,error:new Dr("Browser returned unexpected credential type",t)};return{data:t,error:null}}catch(t){return{data:null,error:yc({error:t,options:e})}}}var Df={hints:["security-key"],authenticatorSelection:{authenticatorAttachment:"cross-platform",requireResidentKey:!1,userVerification:"preferred",residentKey:"discouraged"},attestation:"direct"},Lf={userVerification:"preferred",hints:["security-key"],attestation:"direct"};function Oi(...e){let t=(s)=>s!==null&&typeof s==="object"&&!Array.isArray(s),r=(s)=>s instanceof ArrayBuffer||ArrayBuffer.isView(s),n={};for(let s of e){if(!s)continue;for(let i in s){let o=s[i];if(o===void 0)continue;if(Array.isArray(o))n[i]=o;else if(r(o))n[i]=o;else if(t(o)){let a=n[i];if(t(a))n[i]=Oi(a,o);else n[i]=Oi(o)}else n[i]=o}}return n}function Mf(e,t){return Oi(Df,e,t||{})}function Ff(e,t){return Oi(Lf,e,t||{})}class zs{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},s){var i;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:Of.createNewAbortSignal();if(o.webauthn.type==="create"){let{user:c}=o.webauthn.credential_options.publicKey;if(!c.name){let u=r;if(!u){let A=(await this.client.getUser()).data.user,m=((i=A===null||A===void 0?void 0:A.user_metadata)===null||i===void 0?void 0:i.name)||(A===null||A===void 0?void 0:A.email)||(A===null||A===void 0?void 0:A.id)||"User";c.name=`${c.id}:${m}`}else c.name=`${c.id}:${u}`}if(!c.displayName)c.displayName=c.name}switch(o.webauthn.type){case"create":{let c=Mf(o.webauthn.credential_options.publicKey,s===null||s===void 0?void 0:s.create),{data:u,error:d}=await Pf({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=Ff(o.webauthn.credential_options.publicKey,s===null||s===void 0?void 0:s.request),{data:u,error:d}=await Nf(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(L(o))return{data:null,error:o};return{data:null,error:new ft("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}={}},s){if(!t)return{data:null,error:new rr("rpId is required for WebAuthn authentication")};try{if(!wc())return{data:null,error:new ft("Browser does not support WebAuthn",null)};let{data:i,error:o}=await this.challenge({factorId:e,webauthn:{rpId:t,rpOrigins:r},signal:n},{request:s});if(!i)return{data:null,error:o};let{webauthn:a}=i;return this._verify({factorId:e,challengeId:i.challengeId,webauthn:{type:a.type,rpId:t,rpOrigins:r,credential_response:a.credential_response}})}catch(i){if(L(i))return{data:null,error:i};return{data:null,error:new ft("Unexpected error in authenticate",i)}}}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}={}},s){if(!t)return{data:null,error:new rr("rpId is required for WebAuthn registration")};try{if(!wc())return{data:null,error:new ft("Browser does not support WebAuthn",null)};let{data:i,error:o}=await this._enroll({friendlyName:e});if(!i)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:i.id,friendlyName:i.friendly_name,webauthn:{rpId:t,rpOrigins:r},signal:n},{create:s});if(!a)return{data:null,error:l};return this._verify({factorId:i.id,challengeId:a.challengeId,webauthn:{rpId:t,rpOrigins:r,type:a.webauthn.type,credential_response:a.webauthn.credential_response}})}catch(i){if(L(i))return{data:null,error:i};return{data:null,error:new ft("Unexpected error in register",i)}}}}fc();var Gf={url:Wl,storageKey:Yl,autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,headers:Ql,flowType:"implicit",debug:!1,hasCustomAuthorizationHeader:!1,throwOnError:!1,lockAcquireTimeout:5000,skipAutoInitialize:!1};async function Ic(e,t,r){return await r()}var Lr={};class On{get jwks(){var e,t;return(t=(e=Lr[this.storageKey])===null||e===void 0?void 0:e.jwks)!==null&&t!==void 0?t:{keys:[]}}set jwks(e){Lr[this.storageKey]=Object.assign(Object.assign({},Lr[this.storageKey]),{jwks:e})}get jwks_cached_at(){var e,t;return(t=(e=Lr[this.storageKey])===null||e===void 0?void 0:e.cachedAt)!==null&&t!==void 0?t:Number.MIN_SAFE_INTEGER}set jwks_cached_at(e){Lr[this.storageKey]=Object.assign(Object.assign({},Lr[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 s=Object.assign(Object.assign({},Gf),e);if(this.storageKey=s.storageKey,this.instanceID=(t=On.nextInstanceID[this.storageKey])!==null&&t!==void 0?t:0,On.nextInstanceID[this.storageKey]=this.instanceID+1,this.logDebugMessages=!!s.debug,typeof s.debug==="function")this.logger=s.debug;if(this.instanceID>0&&Me()){let i=`${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(i),this.logDebugMessages)console.trace(i)}if(this.persistSession=s.persistSession,this.autoRefreshToken=s.autoRefreshToken,this.admin=new Nr({url:s.url,headers:s.headers,fetch:s.fetch}),this.url=s.url,this.headers=s.headers,this.fetch=xi(s.fetch),this.lock=s.lock||Ic,this.detectSessionInUrl=s.detectSessionInUrl,this.flowType=s.flowType,this.hasCustomAuthorizationHeader=s.hasCustomAuthorizationHeader,this.throwOnError=s.throwOnError,this.lockAcquireTimeout=s.lockAcquireTimeout,s.lock)this.lock=s.lock;else if(this.persistSession&&Me()&&((r=globalThis===null||globalThis===void 0?void 0:globalThis.navigator)===null||r===void 0?void 0:r.locks))this.lock=$s;else this.lock=Ic;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 zs(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(s.storage)this.storage=s.storage;else if(Ii())this.storage=globalThis.localStorage;else this.memoryStorage={},this.storage=Zs(this.memoryStorage);if(s.userStorage)this.userStorage=s.userStorage}else this.memoryStorage={},this.storage=Zs(this.memoryStorage);if(Me()&&globalThis.BroadcastChannel&&this.persistSession&&this.storageKey){try{this.broadcastChannel=new globalThis.BroadcastChannel(this.storageKey)}catch(i){console.error("Failed to create a new BroadcastChannel, multi-tab state changes will not be available",i)}(n=this.broadcastChannel)===null||n===void 0||n.addEventListener("message",async(i)=>{this._debug("received broadcast notification from other tab or client",i);try{await this._notifyAllSubscribers(i.data.event,i.data.session,!1)}catch(o){this._debug("#broadcastChannel","error",o)}})}if(!s.skipAutoInitialize)this.initialize().catch((i)=>{this._debug("#initialize()","error",i)})}isThrowOnErrorEnabled(){return this.throwOnError}_returnResult(e){if(this.throwOnError&&e&&e.error)throw e.error;return e}_logPrefix(){return`GoTrueClient@${this.storageKey}:${this.instanceID} (${yi}) ${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(Me()){if(t=nc(window.location.href),this._isImplicitGrantCallback(t))r="implicit";else if(await this._isPKCECallback(t))r="pkce"}if(Me()&&this.detectSessionInUrl&&r!=="none"){let{data:n,error:s}=await this._getSessionFromURL(t,r);if(s){if(this._debug("#_initialize()","error detecting session from URL",s),Xl(s)){let a=(e=s.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:s}}return{error:s}}let{session:i,redirectType:o}=n;return this._debug("#_initialize()","detected session in URL",i,"redirect type",o),await this._saveSession(i),setTimeout(async()=>{if(o==="recovery")await this._notifyAllSubscribers("PASSWORD_RECOVERY",i);else await this._notifyAllSubscribers("SIGNED_IN",i)},0),{error:null}}return await this._recoverAndRefresh(),{error:null}}catch(t){if(L(t))return this._returnResult({error:t});return this._returnResult({error:new ft("Unexpected error during initialization",t)})}finally{await this._handleVisibilityChange(),this._debug("#_initialize()","end")}}async signInAnonymously(e){var t,r,n;try{let s=await F(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:ut}),{data:i,error:o}=s;if(o||!i)return this._returnResult({data:{user:null,session:null},error:o});let{session:a,user:l}=i;if(i.session)await this._saveSession(i.session),await this._notifyAllSubscribers("SIGNED_IN",a);return this._returnResult({data:{user:l,session:a},error:null})}catch(s){if(L(s))return this._returnResult({data:{user:null,session:null},error:s});throw s}}async signUp(e){var t,r,n;try{let s;if("email"in e){let{email:c,password:u,options:d}=e,A=null,m=null;if(this.flowType==="pkce")[A,m]=await sr(this.storage,this.storageKey);s=await F(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,redirectTo:d===null||d===void 0?void 0:d.emailRedirectTo,body:{email:c,password:u,data:(t=d===null||d===void 0?void 0:d.data)!==null&&t!==void 0?t:{},gotrue_meta_security:{captcha_token:d===null||d===void 0?void 0:d.captchaToken},code_challenge:A,code_challenge_method:m},xform:ut})}else if("phone"in e){let{phone:c,password:u,options:d}=e;s=await F(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:ut})}else throw new Br("You must provide either an email or phone number and a password");let{data:i,error:o}=s;if(o||!i)return await je(this.storage,`${this.storageKey}-code-verifier`),this._returnResult({data:{user:null,session:null},error:o});let{session:a,user:l}=i;if(i.session)await this._saveSession(i.session),await this._notifyAllSubscribers("SIGNED_IN",a);return this._returnResult({data:{user:l,session:a},error:null})}catch(s){if(await je(this.storage,`${this.storageKey}-code-verifier`),L(s))return this._returnResult({data:{user:null,session:null},error:s});throw s}}async signInWithPassword(e){try{let t;if("email"in e){let{email:s,password:i,options:o}=e;t=await F(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{email:s,password:i,gotrue_meta_security:{captcha_token:o===null||o===void 0?void 0:o.captchaToken}},xform:Qs})}else if("phone"in e){let{phone:s,password:i,options:o}=e;t=await F(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{phone:s,password:i,gotrue_meta_security:{captcha_token:o===null||o===void 0?void 0:o.captchaToken}},xform:Qs})}else throw new Br("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 s=new Ut;return this._returnResult({data:{user:null,session:null},error:s})}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(L(t))return this._returnResult({data:{user:null,session:null},error:t});throw t}}async signInWithOAuth(e){var t,r,n,s;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:(s=e.options)===null||s===void 0?void 0:s.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,s,i,o,a,l,c,u,d;let A,m;if("message"in e)A=e.message,m=e.signature;else{let{chain:g,wallet:f,statement:b,options:v}=e,w;if(!Me()){if(typeof f!=="object"||!(v===null||v===void 0?void 0:v.url))throw Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");w=f}else if(typeof f==="object")w=f;else{let T=window;if("ethereum"in T&&typeof T.ethereum==="object"&&"request"in T.ethereum&&typeof T.ethereum.request==="function")w=T.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 C=new URL((t=v===null||v===void 0?void 0:v.url)!==null&&t!==void 0?t:window.location.href),_=await w.request({method:"eth_requestAccounts"}).then((T)=>T).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=Xs(_[0]),p=(r=v===null||v===void 0?void 0:v.signInWithEthereum)===null||r===void 0?void 0:r.chainId;if(!p){let T=await w.request({method:"eth_chainId"});p=gc(T)}let O={domain:C.host,address:y,statement:b,uri:C.href,version:"1",chainId:p,nonce:(n=v===null||v===void 0?void 0:v.signInWithEthereum)===null||n===void 0?void 0:n.nonce,issuedAt:(i=(s=v===null||v===void 0?void 0:v.signInWithEthereum)===null||s===void 0?void 0:s.issuedAt)!==null&&i!==void 0?i:new Date,expirationTime:(o=v===null||v===void 0?void 0:v.signInWithEthereum)===null||o===void 0?void 0:o.expirationTime,notBefore:(a=v===null||v===void 0?void 0:v.signInWithEthereum)===null||a===void 0?void 0:a.notBefore,requestId:(l=v===null||v===void 0?void 0:v.signInWithEthereum)===null||l===void 0?void 0:l.requestId,resources:(c=v===null||v===void 0?void 0:v.signInWithEthereum)===null||c===void 0?void 0:c.resources};A=pc(O),m=await w.request({method:"personal_sign",params:[mc(A),y]})}try{let{data:g,error:f}=await F(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"ethereum",message:A,signature:m},((u=e.options)===null||u===void 0?void 0:u.captchaToken)?{gotrue_meta_security:{captcha_token:(d=e.options)===null||d===void 0?void 0:d.captchaToken}}:null),xform:ut});if(f)throw f;if(!g||!g.session||!g.user){let b=new Ut;return this._returnResult({data:{user:null,session:null},error:b})}if(g.session)await this._saveSession(g.session),await this._notifyAllSubscribers("SIGNED_IN",g.session);return this._returnResult({data:Object.assign({},g),error:f})}catch(g){if(L(g))return this._returnResult({data:{user:null,session:null},error:g});throw g}}async signInWithSolana(e){var t,r,n,s,i,o,a,l,c,u,d,A;let m,g;if("message"in e)m=e.message,g=e.signature;else{let{chain:f,wallet:b,statement:v,options:w}=e,C;if(!Me()){if(typeof b!=="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.");C=b}else if(typeof b==="object")C=b;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"))C=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 C&&C.signIn){let y=await C.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}),v?{statement:v}:null)),p;if(Array.isArray(y)&&y[0]&&typeof y[0]==="object")p=y[0];else if(y&&typeof y==="object"&&"signedMessage"in y&&"signature"in y)p=y;else throw Error("@supabase/auth-js: Wallet method signIn() returned unrecognized value");if("signedMessage"in p&&"signature"in p&&(typeof p.signedMessage==="string"||p.signedMessage instanceof Uint8Array)&&p.signature instanceof Uint8Array)m=typeof p.signedMessage==="string"?p.signedMessage:new TextDecoder().decode(p.signedMessage),g=p.signature;else throw Error("@supabase/auth-js: Wallet method signIn() API returned object without signedMessage and signature fields")}else{if(!("signMessage"in C)||typeof C.signMessage!=="function"||!("publicKey"in C)||typeof C!=="object"||!C.publicKey||!("toBase58"in C.publicKey)||typeof C.publicKey.toBase58!=="function")throw Error("@supabase/auth-js: Wallet does not have a compatible signMessage() and publicKey.toBase58() API");m=[`${_.host} wants you to sign in with your Solana account:`,C.publicKey.toBase58(),...v?["",v,""]:[""],"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()}`,...((s=w===null||w===void 0?void 0:w.signInWithSolana)===null||s===void 0?void 0:s.notBefore)?[`Not Before: ${w.signInWithSolana.notBefore}`]:[],...((i=w===null||w===void 0?void 0:w.signInWithSolana)===null||i===void 0?void 0:i.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((p)=>`- ${p}`)]:[]].join(`
|
|
70
|
-
`);let y=await C.signMessage(new TextEncoder().encode(m),"utf8");if(!y||!(y instanceof Uint8Array))throw Error("@supabase/auth-js: Wallet signMessage() API returned an recognized value");g=y}}try{let{data:f,error:b}=await F(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"solana",message:m,signature:Dt(g)},((d=e.options)===null||d===void 0?void 0:d.captchaToken)?{gotrue_meta_security:{captcha_token:(A=e.options)===null||A===void 0?void 0:A.captchaToken}}:null),xform:ut});if(b)throw b;if(!f||!f.session||!f.user){let v=new Ut;return this._returnResult({data:{user:null,session:null},error:v})}if(f.session)await this._saveSession(f.session),await this._notifyAllSubscribers("SIGNED_IN",f.session);return this._returnResult({data:Object.assign({},f),error:b})}catch(f){if(L(f))return this._returnResult({data:{user:null,session:null},error:f});throw f}}async _exchangeCodeForSession(e){let t=await Ht(this.storage,`${this.storageKey}-code-verifier`),[r,n]=(t!==null&&t!==void 0?t:"").split("/");try{if(!r&&this.flowType==="pkce")throw new Ks;let{data:s,error:i}=await F(this.fetch,"POST",`${this.url}/token?grant_type=pkce`,{headers:this.headers,body:{auth_code:e,code_verifier:r},xform:ut});if(await je(this.storage,`${this.storageKey}-code-verifier`),i)throw i;if(!s||!s.session||!s.user){let o=new Ut;return this._returnResult({data:{user:null,session:null,redirectType:null},error:o})}if(s.session)await this._saveSession(s.session),await this._notifyAllSubscribers("SIGNED_IN",s.session);return this._returnResult({data:Object.assign(Object.assign({},s),{redirectType:n!==null&&n!==void 0?n:null}),error:i})}catch(s){if(await je(this.storage,`${this.storageKey}-code-verifier`),L(s))return this._returnResult({data:{user:null,session:null,redirectType:null},error:s});throw s}}async signInWithIdToken(e){try{let{options:t,provider:r,token:n,access_token:s,nonce:i}=e,o=await F(this.fetch,"POST",`${this.url}/token?grant_type=id_token`,{headers:this.headers,body:{provider:r,id_token:n,access_token:s,nonce:i,gotrue_meta_security:{captcha_token:t===null||t===void 0?void 0:t.captchaToken}},xform:ut}),{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 Ut;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(L(t))return this._returnResult({data:{user:null,session:null},error:t});throw t}}async signInWithOtp(e){var t,r,n,s,i;try{if("email"in e){let{email:o,options:a}=e,l=null,c=null;if(this.flowType==="pkce")[l,c]=await sr(this.storage,this.storageKey);let{error:u}=await F(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 F(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:(s=a===null||a===void 0?void 0:a.shouldCreateUser)!==null&&s!==void 0?s:!0,gotrue_meta_security:{captcha_token:a===null||a===void 0?void 0:a.captchaToken},channel:(i=a===null||a===void 0?void 0:a.channel)!==null&&i!==void 0?i:"sms"}});return this._returnResult({data:{user:null,session:null,messageId:l===null||l===void 0?void 0:l.message_id},error:c})}throw new Br("You must provide either an email or phone number.")}catch(o){if(await je(this.storage,`${this.storageKey}-code-verifier`),L(o))return this._returnResult({data:{user:null,session:null},error:o});throw o}}async verifyOtp(e){var t,r;try{let n=void 0,s=void 0;if("options"in e)n=(t=e.options)===null||t===void 0?void 0:t.redirectTo,s=(r=e.options)===null||r===void 0?void 0:r.captchaToken;let{data:i,error:o}=await F(this.fetch,"POST",`${this.url}/verify`,{headers:this.headers,body:Object.assign(Object.assign({},e),{gotrue_meta_security:{captcha_token:s}}),redirectTo:n,xform:ut});if(o)throw o;if(!i)throw Error("An error occurred on token verification.");let{session:a,user:l}=i;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(L(n))return this._returnResult({data:{user:null,session:null},error:n});throw n}}async signInWithSSO(e){var t,r,n,s,i;try{let o=null,a=null;if(this.flowType==="pkce")[o,a]=await sr(this.storage,this.storageKey);let l=await F(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:hc});if(((s=l.data)===null||s===void 0?void 0:s.url)&&Me()&&!((i=e.options)===null||i===void 0?void 0:i.skipBrowserRedirect))window.location.assign(l.data.url);return this._returnResult(l)}catch(o){if(await je(this.storage,`${this.storageKey}-code-verifier`),L(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 $e;let{error:n}=await F(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(L(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:s}=e,{error:i}=await F(this.fetch,"POST",t,{headers:this.headers,body:{email:r,type:n,gotrue_meta_security:{captcha_token:s===null||s===void 0?void 0:s.captchaToken}},redirectTo:s===null||s===void 0?void 0:s.emailRedirectTo});return this._returnResult({data:{user:null,session:null},error:i})}else if("phone"in e){let{phone:r,type:n,options:s}=e,{data:i,error:o}=await F(this.fetch,"POST",t,{headers:this.headers,body:{phone:r,type:n,gotrue_meta_security:{captcha_token:s===null||s===void 0?void 0:s.captchaToken}}});return this._returnResult({data:{user:null,session:null,messageId:i===null||i===void 0?void 0:i.message_id},error:o})}throw new Br("You must provide either an email or phone number and a type")}catch(t){if(L(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(s){}})()),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 Ht(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()<_i:!1;if(this._debug("#__loadSession()",`session has${r?"":" not"} expired`,"expires_at",e.expires_at),!r){if(this.userStorage){let i=await Ht(this.userStorage,this.storageKey+"-user");if(i===null||i===void 0?void 0:i.user)e.user=i.user;else e.user=ki()}if(this.storage.isServer&&e.user&&!e.user.__isUserNotAvailableProxy){let i={value:this.suppressGetSessionWarning};if(e.user=uc(e.user,i),i.value)this.suppressGetSessionWarning=!0}return{data:{session:e},error:null}}let{data:n,error:s}=await this._callRefreshToken(e.refresh_token);if(s)return this._returnResult({data:{session:null},error:s});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 F(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:e,xform:It});return await this._useSession(async(t)=>{var r,n,s;let{data:i,error:o}=t;if(o)throw o;if(!((r=i.session)===null||r===void 0?void 0:r.access_token)&&!this.hasCustomAuthorizationHeader)return{data:{user:null},error:new $e};return await F(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:(s=(n=i.session)===null||n===void 0?void 0:n.access_token)!==null&&s!==void 0?s:void 0,xform:It})})}catch(t){if(L(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:s}=r;if(s)throw s;if(!n.session)throw new $e;let i=n.session,o=null,a=null;if(this.flowType==="pkce"&&e.email!=null)[o,a]=await sr(this.storage,this.storageKey);let{data:l,error:c}=await F(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:i.access_token,xform:It});if(c)throw c;return i.user=l.user,await this._saveSession(i),await this._notifyAllSubscribers("USER_UPDATED",i),this._returnResult({data:{user:i.user},error:null})})}catch(r){if(await je(this.storage,`${this.storageKey}-code-verifier`),L(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 $e;let t=Date.now()/1000,r=t,n=!0,s=null,{payload:i}=Bn(e.access_token);if(i.exp)r=i.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};s=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});s={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(s),await this._notifyAllSubscribers("SIGNED_IN",s)}return this._returnResult({data:{user:s.user,session:s},error:null})}catch(t){if(L(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:i,error:o}=t;if(o)throw o;e=(r=i.session)!==null&&r!==void 0?r:void 0}if(!(e===null||e===void 0?void 0:e.refresh_token))throw new $e;let{data:n,error:s}=await this._callRefreshToken(e.refresh_token);if(s)return this._returnResult({data:{user:null,session:null},error:s});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(L(t))return this._returnResult({data:{user:null,session:null},error:t});throw t}}async _getSessionFromURL(e,t){try{if(!Me())throw new Or("No browser detected.");if(e.error||e.error_description||e.error_code)throw new Or(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 vi("Not a valid PKCE flow url.");break;case"pkce":if(this.flowType==="implicit")throw new Or("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 vi("No code detected.");let{data:v,error:w}=await this._exchangeCodeForSession(e.code);if(w)throw w;let C=new URL(window.location.href);return C.searchParams.delete("code"),window.history.replaceState(window.history.state,"",C.toString()),{data:{session:v.session,redirectType:null},error:null}}let{provider_token:r,provider_refresh_token:n,access_token:s,refresh_token:i,expires_in:o,expires_at:a,token_type:l}=e;if(!s||!o||!i||!l)throw new Or("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<=tr)console.warn(`@supabase/gotrue-js: Session as retrieved from URL expires in ${A}s, should have been closer to ${u}s`);let m=d-u;if(c-m>=120)console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued over 120s ago, URL could be stale",m,d,c);else if(c-m<0)console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued in the future? Check the device clock for skew",m,d,c);let{data:g,error:f}=await this._getUser(s);if(f)throw f;let b={provider_token:r,provider_refresh_token:n,access_token:s,expires_in:u,expires_at:d,refresh_token:i,token_type:l,user:g.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(L(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 Ht(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:s}=t;if(s&&!kn(s))return this._returnResult({error:s});let i=(r=n.session)===null||r===void 0?void 0:r.access_token;if(i){let{error:o}=await this.admin.signOut(i,e);if(o){if(!($l(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=rc(),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:s},error:i}=t;if(i)throw i;await((r=this.stateChangeEmitters.get(e))===null||r===void 0?void 0:r.callback("INITIAL_SESSION",s)),this._debug("INITIAL_SESSION","callback id",e,"session",s)}catch(s){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",s),kn(s))console.warn(s);else console.error(s)}})}async resetPasswordForEmail(e,t={}){let r=null,n=null;if(this.flowType==="pkce")[r,n]=await sr(this.storage,this.storageKey,!0);try{return await F(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(s){if(await je(this.storage,`${this.storageKey}-code-verifier`),L(s))return this._returnResult({data:null,error:s});throw s}}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(L(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(s)=>{var i,o,a,l,c;let{data:u,error:d}=s;if(d)throw d;let A=await this._getUrlForProvider(`${this.url}/user/identities/authorize`,e.provider,{redirectTo:(i=e.options)===null||i===void 0?void 0:i.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 F(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(Me()&&!((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(L(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:s}}=t;if(n)throw n;let{options:i,provider:o,token:a,access_token:l,nonce:c}=e,u=await F(this.fetch,"POST",`${this.url}/token?grant_type=id_token`,{headers:this.headers,jwt:(r=s===null||s===void 0?void 0:s.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:i===null||i===void 0?void 0:i.captchaToken}},xform:ut}),{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 Ut});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`),L(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:s,error:i}=t;if(i)throw i;return await F(this.fetch,"DELETE",`${this.url}/user/identities/${e.identity_id}`,{headers:this.headers,jwt:(n=(r=s.session)===null||r===void 0?void 0:r.access_token)!==null&&n!==void 0?n:void 0})})}catch(t){if(L(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 oc(async(n)=>{if(n>0)await sc(200*Math.pow(2,n-1));return this._debug(t,"refreshing attempt",n),await F(this.fetch,"POST",`${this.url}/token?grant_type=refresh_token`,{body:{refresh_token:e},headers:this.headers,xform:ut})},(n,s)=>{let i=200*Math.pow(2,n);return s&&Ci(s)&&Date.now()+i-r<tr})}catch(r){if(this._debug(t,"error",r),L(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),Me()&&!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 Ht(this.storage,this.storageKey);if(n&&this.userStorage){let i=await Ht(this.userStorage,this.storageKey+"-user");if(!this.storage.isServer&&Object.is(this.storage,this.userStorage)&&!i)i={user:n.user},await ir(this.userStorage,this.storageKey+"-user",i);n.user=(e=i===null||i===void 0?void 0:i.user)!==null&&e!==void 0?e:ki()}else if(n&&!n.user){if(!n.user){let i=await Ht(this.storage,this.storageKey+"-user");if(i&&(i===null||i===void 0?void 0:i.user))n.user=i.user,await je(this.storage,this.storageKey+"-user"),await ir(this.storage,this.storageKey,n);else n.user=ki()}}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 s=((t=n.expires_at)!==null&&t!==void 0?t:1/0)*1000-Date.now()<_i;if(this._debug("#_recoverAndRefresh()",`session has${s?"":" not"} expired with margin of ${_i}s`),s){if(this.autoRefreshToken&&n.refresh_token){let{error:i}=await this._callRefreshToken(n.refresh_token);if(i){if(console.error(i),!Ci(i))this._debug("#_recoverAndRefresh()","refresh failed with a non-retryable error, removing the session",i),await this._removeSession()}}}else if(n.user&&n.user.__isUserNotAvailableProxy===!0)try{let{data:i,error:o}=await this._getUser(n.access_token);if(!o&&(i===null||i===void 0?void 0:i.user))n.user=i.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(i){console.error("Error getting user data:",i),this._debug("#_recoverAndRefresh()","error getting user data, skipping SIGNED_IN notification",i)}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 $e;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:s,error:i}=await this._refreshAccessToken(e);if(i)throw i;if(!s.session)throw new $e;await this._saveSession(s.session),await this._notifyAllSubscribers("TOKEN_REFRESHED",s.session);let o={data:s.session,error:null};return this.refreshingDeferred.resolve(o),o}catch(s){if(this._debug(n,"error",s),L(s)){let i={data:null,error:s};if(!Ci(s))await this._removeSession();return(t=this.refreshingDeferred)===null||t===void 0||t.resolve(i),i}throw(r=this.refreshingDeferred)===null||r===void 0||r.reject(s),s}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 s=[],i=Array.from(this.stateChangeEmitters.values()).map(async(o)=>{try{await o.callback(e,t)}catch(a){s.push(a)}});if(await Promise.all(i),s.length>0){for(let o=0;o<s.length;o+=1)console.error(s[o]);throw s[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 ir(this.userStorage,this.storageKey+"-user",{user:t.user});let n=Object.assign({},t);delete n.user;let s=Ys(n);await ir(this.storage,this.storageKey,s)}else{let n=Ys(t);await ir(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&&Me()&&(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(),tr);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)/tr);if(this._debug("#_autoRefreshTokenTick()",`access token expires in ${n} ticks, a tick lasts ${tr}ms, refresh threshold is ${wi} ticks`),n<=wi)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 Bi)this._debug("auto refresh token tick lock not available");else throw e}}async _handleVisibilityChange(){if(this._debug("#_handleVisibilityChange()"),!Me()||!(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[s,i]=await sr(this.storage,this.storageKey),o=new URLSearchParams({code_challenge:`${encodeURIComponent(s)}`,code_challenge_method:`${encodeURIComponent(i)}`});n.push(o.toString())}if(r===null||r===void 0?void 0:r.queryParams){let s=new URLSearchParams(r.queryParams);n.push(s.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:s}=t;if(s)return this._returnResult({data:null,error:s});return await F(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(L(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:s,error:i}=t;if(i)return this._returnResult({data:null,error:i});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 F(this.fetch,"POST",`${this.url}/factors`,{body:o,headers:this.headers,jwt:(r=s===null||s===void 0?void 0:s.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(L(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:s}=t;if(s)return this._returnResult({data:null,error:s});let i=Object.assign({challenge_id:e.challengeId},"webauthn"in e?{webauthn:Object.assign(Object.assign({},e.webauthn),{credential_response:e.webauthn.type==="create"?Ec(e.webauthn.credential_response):Sc(e.webauthn.credential_response)})}:{code:e.code}),{data:o,error:a}=await F(this.fetch,"POST",`${this.url}/factors/${e.factorId}/verify`,{body:i,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(L(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:s}=t;if(s)return this._returnResult({data:null,error:s});let i=await F(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(i.error)return i;let{data:o}=i;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:vc(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:Cc(o.webauthn.credential_options.publicKey)})})}),error:null}}})}catch(t){if(L(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 s of(e=t===null||t===void 0?void 0:t.factors)!==null&&e!==void 0?e:[])if(n.all.push(s),s.status==="verified")n[s.factor_type].push(s);return{data:n,error:null}}async _getAuthenticatorAssuranceLevel(e){var t,r,n,s;if(e)try{let{payload:A}=Bn(e),m=null;if(A.aal)m=A.aal;let g=m,{data:{user:f},error:b}=await this.getUser(e);if(b)return this._returnResult({data:null,error:b});if(((r=(t=f===null||f===void 0?void 0:f.factors)===null||t===void 0?void 0:t.filter((C)=>C.status==="verified"))!==null&&r!==void 0?r:[]).length>0)g="aal2";let w=A.amr||[];return{data:{currentLevel:m,nextLevel:g,currentAuthenticationMethods:w},error:null}}catch(A){if(L(A))return this._returnResult({data:null,error:A});throw A}let{data:{session:i},error:o}=await this.getSession();if(o)return this._returnResult({data:null,error:o});if(!i)return{data:{currentLevel:null,nextLevel:null,currentAuthenticationMethods:[]},error:null};let{payload:a}=Bn(i.access_token),l=null;if(a.aal)l=a.aal;let c=l;if(((s=(n=i.user.factors)===null||n===void 0?void 0:n.filter((A)=>A.status==="verified"))!==null&&s!==void 0?s:[]).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 $e});return await F(this.fetch,"GET",`${this.url}/oauth/authorizations/${e}`,{headers:this.headers,jwt:r.access_token,xform:(s)=>({data:s,error:null})})})}catch(t){if(L(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:s}=r;if(s)return this._returnResult({data:null,error:s});if(!n)return this._returnResult({data:null,error:new $e});let i=await F(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(i.data&&i.data.redirect_url){if(Me()&&!(t===null||t===void 0?void 0:t.skipBrowserRedirect))window.location.assign(i.data.redirect_url)}return i})}catch(r){if(L(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:s}=r;if(s)return this._returnResult({data:null,error:s});if(!n)return this._returnResult({data:null,error:new $e});let i=await F(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(i.data&&i.data.redirect_url){if(Me()&&!(t===null||t===void 0?void 0:t.skipBrowserRedirect))window.location.assign(i.data.redirect_url)}return i})}catch(r){if(L(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 $e});return await F(this.fetch,"GET",`${this.url}/user/oauth/grants`,{headers:this.headers,jwt:t.access_token,xform:(n)=>({data:n,error:null})})})}catch(e){if(L(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 $e});return await F(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(L(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+Zl>n)return r;let{data:s,error:i}=await F(this.fetch,"GET",`${this.url}/.well-known/jwks.json`,{headers:this.headers});if(i)throw i;if(!s.keys||s.keys.length===0)return null;if(this.jwks=s,this.jwks_cached_at=n,r=s.keys.find((o)=>o.kid===e),!r)return null;return r}async getClaims(e,t={}){try{let r=e;if(!r){let{data:A,error:m}=await this.getSession();if(m||!A.session)return this._returnResult({data:null,error:m});r=A.session.access_token}let{header:n,payload:s,signature:i,raw:{header:o,payload:a}}=Bn(r);if(!(t===null||t===void 0?void 0:t.allowExpired))lc(s.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:s,header:n,signature:i},error:null}}let c=cc(n.alg),u=await crypto.subtle.importKey("jwk",l,c,!0,["verify"]);if(!await crypto.subtle.verify(c,u,i,ec(`${o}.${a}`)))throw new Pr("Invalid JWT signature");return{data:{claims:s,header:n,signature:i},error:null}}catch(r){if(L(r))return this._returnResult({data:null,error:r});throw r}}}On.nextInstanceID={};var qs=On;var Uf=qs,eo=Uf;var jf="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 Hf={"X-Client-Info":`supabase-js-${Pn}/${jf}`},Kf={headers:Hf},Wf={schema:"public"},Yf={autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,flowType:"implicit"},Qf={};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 Jf(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 Zf(e){var t=Jf(e,"string");return Nn(t)=="symbol"?t:t+""}function $f(e,t,r){return(t=Zf(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function xc(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),r.push.apply(r,n)}return r}function xe(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?xc(Object(r),!0).forEach(function(n){$f(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):xc(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}var Xf=(e)=>{if(e)return(...t)=>e(...t);return(...t)=>fetch(...t)},Vf=()=>Headers,zf=(e,t,r)=>{let n=Xf(r),s=Vf();return async(i,o)=>{var a;let l=(a=await t())!==null&&a!==void 0?a:e,c=new s(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(i,xe(xe({},o),{},{headers:c}))}};function qf(e){return e.endsWith("/")?e:e+"/"}function eg(e,t){var r,n;let{db:s,auth:i,realtime:o,global:a}=e,{db:l,auth:c,realtime:u,global:d}=t,A={db:xe(xe({},l),s),auth:xe(xe({},c),i),realtime:xe(xe({},u),o),storage:{},global:xe(xe(xe({},d),a),{},{headers:xe(xe({},(r=d===null||d===void 0?void 0:d.headers)!==null&&r!==void 0?r:{}),(n=a===null||a===void 0?void 0:a.headers)!==null&&n!==void 0?n:{})}),accessToken:async()=>""};if(e.accessToken)A.accessToken=e.accessToken;else delete A.accessToken;return A}function tg(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 rg=class extends eo{constructor(e){super(e)}},ng=class{constructor(e,t,r){var n,s;this.supabaseUrl=e,this.supabaseKey=t;let i=tg(e);if(!t)throw Error("supabaseKey is required.");this.realtimeUrl=new URL("realtime/v1",i),this.realtimeUrl.protocol=this.realtimeUrl.protocol.replace("http","ws"),this.authUrl=new URL("auth/v1",i),this.storageUrl=new URL("storage/v1",i),this.functionsUrl=new URL("functions/v1",i);let o=`sb-${i.hostname.split(".")[0]}-auth-token`,a={db:Wf,realtime:Qf,auth:xe(xe({},Yf),{},{storageKey:o}),global:Kf},l=eg(r!==null&&r!==void 0?r:{},a);if(this.storageKey=(n=l.auth.storageKey)!==null&&n!==void 0?n:"",this.headers=(s=l.global.headers)!==null&&s!==void 0?s:{},!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=zf(t,this._getAccessToken.bind(this),l.global.fetch),this.realtime=this._initRealtimeClient(xe({headers:this.headers,accessToken:this._getAccessToken.bind(this)},l.realtime)),this.accessToken)Promise.resolve(this.accessToken()).then((u)=>this.realtime.setAuth(u)).catch((u)=>console.warn("Failed to set initial Realtime auth token:",u));if(this.rest=new Cl(new URL("rest/v1",i).href,{headers:this.headers,schema:l.db.schema,fetch:this.fetch,timeout:l.db.timeout,urlLengthLimit:l.db.urlLengthLimit}),this.storage=new Kl(this.storageUrl.href,this.headers,this.fetch,r===null||r===void 0?void 0:r.storage),!l.accessToken)this._listenForAuthEvents()}get functions(){return new ii(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:s,storageKey:i,flowType:o,lock:a,debug:l,throwOnError:c},u,d){let A={Authorization:`Bearer ${this.supabaseKey}`,apikey:`${this.supabaseKey}`};return new rg({url:this.authUrl.href,headers:xe(xe({},A),u),storageKey:i,autoRefreshToken:e,persistSession:t,detectSessionInUrl:r,storage:n,userStorage:s,flowType:o,lock:a,debug:l,throwOnError:c,fetch:d,hasCustomAuthorizationHeader:Object.keys(this.headers).some((m)=>m.toLowerCase()==="authorization")})}_initRealtimeClient(e){return new _n(this.realtimeUrl.href,xe(xe({},e),{},{params:xe(xe({},{apikey:this.supabaseKey}),e===null||e===void 0?void 0:e.params)}))}_listenForAuthEvents(){return this.auth.onAuthStateChange((e,t)=>{this._handleTokenChanged(e,"CLIENT",t===null||t===void 0?void 0:t.access_token)})}_handleTokenChanged(e,t,r){if((e==="TOKEN_REFRESHED"||e==="SIGNED_IN")&&this.changedAccessToken!==r)this.changedAccessToken=r,this.realtime.setAuth(r);else if(e==="SIGNED_OUT"){if(this.realtime.setAuth(),t=="STORAGE")this.auth.signOut();this.changedAccessToken=void 0}}},kc=(e,t,r)=>new ng(e,t,r);function ig(){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(ig())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 Ag=300000,Tc=16384,Bc=4096;function Oc(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 Pc(e=process.env){let t=Oc(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=Oc(e.FLATBLOX_DASHBOARD_URL??e.VITE_SITE_URL,e.FLATBLOX_DASHBOARD_URL?"FLATBLOX_DASHBOARD_URL":"VITE_SITE_URL"),s=e.FLATBLOX_DASHBOARD_URL?n:new URL("/dashboard/",n).toString(),i=e.XDG_CONFIG_HOME||Rc(dg(),".config");return{supabaseUrl:t,publishableKey:r,dashboardUrl:s,authFile:e.FLATBLOX_TUI_AUTH_FILE??Rc(i,"flatblox","tui-auth.json")}}function fg(e){if(typeof e!=="object"||e===null)return!1;let t=e;return typeof t.accessToken==="string"&&t.accessToken.length>0&&t.accessToken.length<=Tc&&typeof t.refreshToken==="string"&&t.refreshToken.length>0&&t.refreshToken.length<=Tc}async function gg(e){try{let t=JSON.parse(await ag(e,"utf8"));if(!fg(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 Pi(e,t){await og(hg(e),{recursive:!0,mode:448});let r=`${e}.${process.pid}.tmp`;await ug(r,`${JSON.stringify({accessToken:t.access_token,refreshToken:t.refresh_token})}
|
|
71
|
-
`,{mode:384}),await
|
|
66
|
+
Request ID: ${l}`;if(c){let y=`
|
|
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}`);y+=`
|
|
68
|
+
- ${S}`}v+=y}return`${p}
|
|
69
|
+
${v}`}class xe extends Error{constructor({message:e,code:t,cause:r,name:n}){var s;super(e,{cause:r});this.__isWebAuthnError=!0,this.name=(s=n!==null&&n!==void 0?n:r instanceof Error?r.name:void 0)!==null&&s!==void 0?s:"Unknown Error",this.code=t}}class Fr extends xe{constructor(e,t){super({code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t,message:e});this.name="WebAuthnUnknownError",this.originalError=t}}function Bc({error:e,options:t}){var r,n,s;let{publicKey:i}=t;if(!i)throw Error("options was missing required publicKey property");if(e.name==="AbortError"){if(t.signal instanceof AbortSignal)return new xe({message:"Registration ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else if(e.name==="ConstraintError"){if(((r=i.authenticatorSelection)===null||r===void 0?void 0:r.requireResidentKey)===!0)return new xe({message:"Discoverable credentials were required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT",cause:e});else if(t.mediation==="conditional"&&((n=i.authenticatorSelection)===null||n===void 0?void 0:n.userVerification)==="required")return new xe({message:"User verification was required during automatic registration but it could not be performed",code:"ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE",cause:e});else if(((s=i.authenticatorSelection)===null||s===void 0?void 0:s.userVerification)==="required")return new xe({message:"User verification was required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT",cause:e})}else if(e.name==="InvalidStateError")return new xe({message:"The authenticator was previously registered",code:"ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",cause:e});else if(e.name==="NotAllowedError")return new xe({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});else if(e.name==="NotSupportedError"){if(i.pubKeyCredParams.filter((a)=>a.type==="public-key").length===0)return new xe({message:'No entry in pubKeyCredParams was of type "public-key"',code:"ERROR_MALFORMED_PUBKEYCREDPARAMS",cause:e});return new xe({message:"No available authenticator supported any of the specified pubKeyCredParams algorithms",code:"ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG",cause:e})}else if(e.name==="SecurityError"){let o=window.location.hostname;if(!oo(o))return new xe({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e});else if(i.rp.id!==o)return new xe({message:`The RP ID "${i.rp.id}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else if(e.name==="TypeError"){if(i.user.id.byteLength<1||i.user.id.byteLength>64)return new xe({message:"User ID was not between 1 and 64 characters",code:"ERROR_INVALID_USER_ID_LENGTH",cause:e})}else if(e.name==="UnknownError")return new xe({message:"The authenticator was unable to process the specified options, or could not create a new credential",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:e});return new xe({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e})}function Oc({error:e,options:t}){let{publicKey:r}=t;if(!r)throw Error("options was missing required publicKey property");if(e.name==="AbortError"){if(t.signal instanceof AbortSignal)return new xe({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else if(e.name==="NotAllowedError")return new xe({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});else if(e.name==="SecurityError"){let n=window.location.hostname;if(!oo(n))return new xe({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e});else if(r.rpId!==n)return new xe({message:`The RP ID "${r.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else if(e.name==="UnknownError")return new xe({message:"The authenticator was unable to process the specified options, or could not create a new assertion signature",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:e});return new xe({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e})}class Nc{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 rg=new Nc;function Dc(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,s=tr(e,["challenge","user","excludeCredentials"]),i=Wt(t).buffer,o=Object.assign(Object.assign({},r),{id:Wt(r.id).buffer}),a=Object.assign(Object.assign({},s),{challenge:i,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:Wt(c.id).buffer,type:c.type||"public-key",transports:c.transports})}}return a}function Lc(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=tr(e,["challenge","allowCredentials"]),s=Wt(t).buffer,i=Object.assign(Object.assign({},n),{challenge:s});if(r&&r.length>0){i.allowCredentials=Array(r.length);for(let o=0;o<r.length;o++){let a=r[o];i.allowCredentials[o]=Object.assign(Object.assign({},a),{id:Wt(a.id).buffer,type:a.type||"public-key",transports:a.transports})}}return i}function Mc(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 Fc(e){var t;if("toJSON"in e&&typeof e.toJSON==="function")return e.toJSON();let r=e,n=e.getClientExtensionResults(),s=e.response;return{id:e.id,rawId:e.id,response:{authenticatorData:Mt(new Uint8Array(s.authenticatorData)),clientDataJSON:Mt(new Uint8Array(s.clientDataJSON)),signature:Mt(new Uint8Array(s.signature)),userHandle:s.userHandle?Mt(new Uint8Array(s.userHandle)):void 0},type:"public-key",clientExtensionResults:n,authenticatorAttachment:(t=r.authenticatorAttachment)!==null&&t!==void 0?t:void 0}}function oo(e){return e==="localhost"||/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(e)}function Pc(){var e,t;return!!(Fe()&&("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 ng(e){try{let t=await navigator.credentials.create(e);if(!t)return{data:null,error:new Fr("Empty credential response",t)};if(!(t instanceof PublicKeyCredential))return{data:null,error:new Fr("Browser returned unexpected credential type",t)};return{data:t,error:null}}catch(t){return{data:null,error:Bc({error:t,options:e})}}}async function ig(e){try{let t=await navigator.credentials.get(e);if(!t)return{data:null,error:new Fr("Empty credential response",t)};if(!(t instanceof PublicKeyCredential))return{data:null,error:new Fr("Browser returned unexpected credential type",t)};return{data:t,error:null}}catch(t){return{data:null,error:Oc({error:t,options:e})}}}var sg={hints:["security-key"],authenticatorSelection:{authenticatorAttachment:"cross-platform",requireResidentKey:!1,userVerification:"preferred",residentKey:"discouraged"},attestation:"direct"},og={userVerification:"preferred",hints:["security-key"],attestation:"direct"};function Mi(...e){let t=(s)=>s!==null&&typeof s==="object"&&!Array.isArray(s),r=(s)=>s instanceof ArrayBuffer||ArrayBuffer.isView(s),n={};for(let s of e){if(!s)continue;for(let i in s){let o=s[i];if(o===void 0)continue;if(Array.isArray(o))n[i]=o;else if(r(o))n[i]=o;else if(t(o)){let a=n[i];if(t(a))n[i]=Mi(a,o);else n[i]=Mi(o)}else n[i]=o}}return n}function ag(e,t){return Mi(sg,e,t||{})}function lg(e,t){return Mi(og,e,t||{})}class ao{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},s){var i;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:rg.createNewAbortSignal();if(o.webauthn.type==="create"){let{user:c}=o.webauthn.credential_options.publicKey;if(!c.name){let u=r;if(!u){let A=(await this.client.getUser()).data.user,m=((i=A===null||A===void 0?void 0:A.user_metadata)===null||i===void 0?void 0:i.name)||(A===null||A===void 0?void 0:A.email)||(A===null||A===void 0?void 0:A.id)||"User";c.name=`${c.id}:${m}`}else c.name=`${c.id}:${u}`}if(!c.displayName)c.displayName=c.name}switch(o.webauthn.type){case"create":{let c=ag(o.webauthn.credential_options.publicKey,s===null||s===void 0?void 0:s.create),{data:u,error:d}=await ng({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=lg(o.webauthn.credential_options.publicKey,s===null||s===void 0?void 0:s.request),{data:u,error:d}=await ig(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 mt("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}={}},s){if(!t)return{data:null,error:new sr("rpId is required for WebAuthn authentication")};try{if(!Pc())return{data:null,error:new mt("Browser does not support WebAuthn",null)};let{data:i,error:o}=await this.challenge({factorId:e,webauthn:{rpId:t,rpOrigins:r},signal:n},{request:s});if(!i)return{data:null,error:o};let{webauthn:a}=i;return this._verify({factorId:e,challengeId:i.challengeId,webauthn:{type:a.type,rpId:t,rpOrigins:r,credential_response:a.credential_response}})}catch(i){if(M(i))return{data:null,error:i};return{data:null,error:new mt("Unexpected error in authenticate",i)}}}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}={}},s){if(!t)return{data:null,error:new sr("rpId is required for WebAuthn registration")};try{if(!Pc())return{data:null,error:new mt("Browser does not support WebAuthn",null)};let{data:i,error:o}=await this._enroll({friendlyName:e});if(!i)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:i.id,friendlyName:i.friendly_name,webauthn:{rpId:t,rpOrigins:r},signal:n},{create:s});if(!a)return{data:null,error:l};return this._verify({factorId:i.id,challengeId:a.challengeId,webauthn:{rpId:t,rpOrigins:r,type:a.webauthn.type,credential_response:a.webauthn.credential_response}})}catch(i){if(M(i))return{data:null,error:i};return{data:null,error:new mt("Unexpected error in register",i)}}}}xc();var cg={url:nc,storageKey:ic,autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,headers:sc,flowType:"implicit",debug:!1,hasCustomAuthorizationHeader:!1,throwOnError:!1,lockAcquireTimeout:5000,skipAutoInitialize:!1};async function Gc(e,t,r){return await r()}var Gr={};class Dn{get jwks(){var e,t;return(t=(e=Gr[this.storageKey])===null||e===void 0?void 0:e.jwks)!==null&&t!==void 0?t:{keys:[]}}set jwks(e){Gr[this.storageKey]=Object.assign(Object.assign({},Gr[this.storageKey]),{jwks:e})}get jwks_cached_at(){var e,t;return(t=(e=Gr[this.storageKey])===null||e===void 0?void 0:e.cachedAt)!==null&&t!==void 0?t:Number.MIN_SAFE_INTEGER}set jwks_cached_at(e){Gr[this.storageKey]=Object.assign(Object.assign({},Gr[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 s=Object.assign(Object.assign({},cg),e);if(this.storageKey=s.storageKey,this.instanceID=(t=Dn.nextInstanceID[this.storageKey])!==null&&t!==void 0?t:0,Dn.nextInstanceID[this.storageKey]=this.instanceID+1,this.logDebugMessages=!!s.debug,typeof s.debug==="function")this.logger=s.debug;if(this.instanceID>0&&Fe()){let i=`${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(i),this.logDebugMessages)console.trace(i)}if(this.persistSession=s.persistSession,this.autoRefreshToken=s.autoRefreshToken,this.admin=new Mr({url:s.url,headers:s.headers,fetch:s.fetch}),this.url=s.url,this.headers=s.headers,this.fetch=Oi(s.fetch),this.lock=s.lock||Gc,this.detectSessionInUrl=s.detectSessionInUrl,this.flowType=s.flowType,this.hasCustomAuthorizationHeader=s.hasCustomAuthorizationHeader,this.throwOnError=s.throwOnError,this.lockAcquireTimeout=s.lockAcquireTimeout,s.lock)this.lock=s.lock;else if(this.persistSession&&Fe()&&((r=globalThis===null||globalThis===void 0?void 0:globalThis.navigator)===null||r===void 0?void 0:r.locks))this.lock=io;else this.lock=Gc;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 ao(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(s.storage)this.storage=s.storage;else if(Bi())this.storage=globalThis.localStorage;else this.memoryStorage={},this.storage=no(this.memoryStorage);if(s.userStorage)this.userStorage=s.userStorage}else this.memoryStorage={},this.storage=no(this.memoryStorage);if(Fe()&&globalThis.BroadcastChannel&&this.persistSession&&this.storageKey){try{this.broadcastChannel=new globalThis.BroadcastChannel(this.storageKey)}catch(i){console.error("Failed to create a new BroadcastChannel, multi-tab state changes will not be available",i)}(n=this.broadcastChannel)===null||n===void 0||n.addEventListener("message",async(i)=>{this._debug("received broadcast notification from other tab or client",i);try{await this._notifyAllSubscribers(i.data.event,i.data.session,!1)}catch(o){this._debug("#broadcastChannel","error",o)}})}if(!s.skipAutoInitialize)this.initialize().catch((i)=>{this._debug("#initialize()","error",i)})}isThrowOnErrorEnabled(){return this.throwOnError}_returnResult(e){if(this.throwOnError&&e&&e.error)throw e.error;return e}_logPrefix(){return`GoTrueClient@${this.storageKey}:${this.instanceID} (${Ei}) ${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(Fe()){if(t=mc(window.location.href),this._isImplicitGrantCallback(t))r="implicit";else if(await this._isPKCECallback(t))r="pkce"}if(Fe()&&this.detectSessionInUrl&&r!=="none"){let{data:n,error:s}=await this._getSessionFromURL(t,r);if(s){if(this._debug("#_initialize()","error detecting session from URL",s),cc(s)){let a=(e=s.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:s}}return{error:s}}let{session:i,redirectType:o}=n;return this._debug("#_initialize()","detected session in URL",i,"redirect type",o),await this._saveSession(i),setTimeout(async()=>{if(o==="recovery")await this._notifyAllSubscribers("PASSWORD_RECOVERY",i);else await this._notifyAllSubscribers("SIGNED_IN",i)},0),{error:null}}return await this._recoverAndRefresh(),{error:null}}catch(t){if(M(t))return this._returnResult({error:t});return this._returnResult({error:new mt("Unexpected error during initialization",t)})}finally{await this._handleVisibilityChange(),this._debug("#_initialize()","end")}}async signInAnonymously(e){var t,r,n;try{let s=await U(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,body:{data:(r=(t=e===null||e===void 0?void 0:e.options)===null||t===void 0?void 0:t.data)!==null&&r!==void 0?r:{},gotrue_meta_security:{captcha_token:(n=e===null||e===void 0?void 0:e.options)===null||n===void 0?void 0:n.captchaToken}},xform:ht}),{data:i,error:o}=s;if(o||!i)return this._returnResult({data:{user:null,session:null},error:o});let{session:a,user:l}=i;if(i.session)await this._saveSession(i.session),await this._notifyAllSubscribers("SIGNED_IN",a);return this._returnResult({data:{user:l,session:a},error:null})}catch(s){if(M(s))return this._returnResult({data:{user:null,session:null},error:s});throw s}}async signUp(e){var t,r,n;try{let s;if("email"in e){let{email:c,password:u,options:d}=e,A=null,m=null;if(this.flowType==="pkce")[A,m]=await lr(this.storage,this.storageKey);s=await U(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,redirectTo:d===null||d===void 0?void 0:d.emailRedirectTo,body:{email:c,password:u,data:(t=d===null||d===void 0?void 0:d.data)!==null&&t!==void 0?t:{},gotrue_meta_security:{captcha_token:d===null||d===void 0?void 0:d.captchaToken},code_challenge:A,code_challenge_method:m},xform:ht})}else if("phone"in e){let{phone:c,password:u,options:d}=e;s=await U(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,body:{phone:c,password:u,data:(r=d===null||d===void 0?void 0:d.data)!==null&&r!==void 0?r:{},channel:(n=d===null||d===void 0?void 0:d.channel)!==null&&n!==void 0?n:"sms",gotrue_meta_security:{captcha_token:d===null||d===void 0?void 0:d.captchaToken}},xform:ht})}else throw new Nr("You must provide either an email or phone number and a password");let{data:i,error:o}=s;if(o||!i)return await He(this.storage,`${this.storageKey}-code-verifier`),this._returnResult({data:{user:null,session:null},error:o});let{session:a,user:l}=i;if(i.session)await this._saveSession(i.session),await this._notifyAllSubscribers("SIGNED_IN",a);return this._returnResult({data:{user:l,session:a},error:null})}catch(s){if(await He(this.storage,`${this.storageKey}-code-verifier`),M(s))return this._returnResult({data:{user:null,session:null},error:s});throw s}}async signInWithPassword(e){try{let t;if("email"in e){let{email:s,password:i,options:o}=e;t=await U(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{email:s,password:i,gotrue_meta_security:{captcha_token:o===null||o===void 0?void 0:o.captchaToken}},xform:to})}else if("phone"in e){let{phone:s,password:i,options:o}=e;t=await U(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{phone:s,password:i,gotrue_meta_security:{captcha_token:o===null||o===void 0?void 0:o.captchaToken}},xform:to})}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 s=new Kt;return this._returnResult({data:{user:null,session:null},error:s})}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,s;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:(s=e.options)===null||s===void 0?void 0:s.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,s,i,o,a,l,c,u,d;let A,m;if("message"in e)A=e.message,m=e.signature;else{let{chain:g,wallet:f,statement:p,options:v}=e,y;if(!Fe()){if(typeof f!=="object"||!(v===null||v===void 0?void 0:v.url))throw Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");y=f}else if(typeof f==="object")y=f;else{let B=window;if("ethereum"in B&&typeof B.ethereum==="object"&&"request"in B.ethereum&&typeof B.ethereum.request==="function")y=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 S=new URL((t=v===null||v===void 0?void 0:v.url)!==null&&t!==void 0?t:window.location.href),_=await y.request({method:"eth_requestAccounts"}).then((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 b=so(_[0]),w=(r=v===null||v===void 0?void 0:v.signInWithEthereum)===null||r===void 0?void 0:r.chainId;if(!w){let B=await y.request({method:"eth_chainId"});w=kc(B)}let C={domain:S.host,address:b,statement:p,uri:S.href,version:"1",chainId:w,nonce:(n=v===null||v===void 0?void 0:v.signInWithEthereum)===null||n===void 0?void 0:n.nonce,issuedAt:(i=(s=v===null||v===void 0?void 0:v.signInWithEthereum)===null||s===void 0?void 0:s.issuedAt)!==null&&i!==void 0?i:new Date,expirationTime:(o=v===null||v===void 0?void 0:v.signInWithEthereum)===null||o===void 0?void 0:o.expirationTime,notBefore:(a=v===null||v===void 0?void 0:v.signInWithEthereum)===null||a===void 0?void 0:a.notBefore,requestId:(l=v===null||v===void 0?void 0:v.signInWithEthereum)===null||l===void 0?void 0:l.requestId,resources:(c=v===null||v===void 0?void 0:v.signInWithEthereum)===null||c===void 0?void 0:c.resources};A=Tc(C),m=await y.request({method:"personal_sign",params:[Rc(A),b]})}try{let{data:g,error:f}=await U(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"ethereum",message:A,signature:m},((u=e.options)===null||u===void 0?void 0:u.captchaToken)?{gotrue_meta_security:{captcha_token:(d=e.options)===null||d===void 0?void 0:d.captchaToken}}:null),xform:ht});if(f)throw f;if(!g||!g.session||!g.user){let p=new Kt;return this._returnResult({data:{user:null,session:null},error:p})}if(g.session)await this._saveSession(g.session),await this._notifyAllSubscribers("SIGNED_IN",g.session);return this._returnResult({data:Object.assign({},g),error:f})}catch(g){if(M(g))return this._returnResult({data:{user:null,session:null},error:g});throw g}}async signInWithSolana(e){var t,r,n,s,i,o,a,l,c,u,d,A;let m,g;if("message"in e)m=e.message,g=e.signature;else{let{chain:f,wallet:p,statement:v,options:y}=e,S;if(!Fe()){if(typeof p!=="object"||!(y===null||y===void 0?void 0:y.url))throw Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");S=p}else if(typeof p==="object")S=p;else{let b=window;if("solana"in b&&typeof b.solana==="object"&&(("signIn"in b.solana)&&typeof b.solana.signIn==="function"||("signMessage"in b.solana)&&typeof b.solana.signMessage==="function"))S=b.solana;else throw Error("@supabase/auth-js: No compatible Solana wallet interface on the window object (window.solana) detected. Make sure the user already has a wallet installed and connected for this app. Prefer passing the wallet interface object directly to signInWithWeb3({ chain: 'solana', wallet: resolvedUserWallet }) instead.")}let _=new URL((t=y===null||y===void 0?void 0:y.url)!==null&&t!==void 0?t:window.location.href);if("signIn"in S&&S.signIn){let b=await S.signIn(Object.assign(Object.assign(Object.assign({issuedAt:new Date().toISOString()},y===null||y===void 0?void 0:y.signInWithSolana),{version:"1",domain:_.host,uri:_.href}),v?{statement:v}:null)),w;if(Array.isArray(b)&&b[0]&&typeof b[0]==="object")w=b[0];else if(b&&typeof b==="object"&&"signedMessage"in b&&"signature"in b)w=b;else throw Error("@supabase/auth-js: Wallet method signIn() returned unrecognized value");if("signedMessage"in w&&"signature"in w&&(typeof w.signedMessage==="string"||w.signedMessage instanceof Uint8Array)&&w.signature instanceof Uint8Array)m=typeof w.signedMessage==="string"?w.signedMessage:new TextDecoder().decode(w.signedMessage),g=w.signature;else throw Error("@supabase/auth-js: Wallet method signIn() API returned object without signedMessage and signature fields")}else{if(!("signMessage"in S)||typeof S.signMessage!=="function"||!("publicKey"in S)||typeof S!=="object"||!S.publicKey||!("toBase58"in S.publicKey)||typeof S.publicKey.toBase58!=="function")throw Error("@supabase/auth-js: Wallet does not have a compatible signMessage() and publicKey.toBase58() API");m=[`${_.host} wants you to sign in with your Solana account:`,S.publicKey.toBase58(),...v?["",v,""]:[""],"Version: 1",`URI: ${_.href}`,`Issued At: ${(n=(r=y===null||y===void 0?void 0:y.signInWithSolana)===null||r===void 0?void 0:r.issuedAt)!==null&&n!==void 0?n:new Date().toISOString()}`,...((s=y===null||y===void 0?void 0:y.signInWithSolana)===null||s===void 0?void 0:s.notBefore)?[`Not Before: ${y.signInWithSolana.notBefore}`]:[],...((i=y===null||y===void 0?void 0:y.signInWithSolana)===null||i===void 0?void 0:i.expirationTime)?[`Expiration Time: ${y.signInWithSolana.expirationTime}`]:[],...((o=y===null||y===void 0?void 0:y.signInWithSolana)===null||o===void 0?void 0:o.chainId)?[`Chain ID: ${y.signInWithSolana.chainId}`]:[],...((a=y===null||y===void 0?void 0:y.signInWithSolana)===null||a===void 0?void 0:a.nonce)?[`Nonce: ${y.signInWithSolana.nonce}`]:[],...((l=y===null||y===void 0?void 0:y.signInWithSolana)===null||l===void 0?void 0:l.requestId)?[`Request ID: ${y.signInWithSolana.requestId}`]:[],...((u=(c=y===null||y===void 0?void 0:y.signInWithSolana)===null||c===void 0?void 0:c.resources)===null||u===void 0?void 0:u.length)?["Resources",...y.signInWithSolana.resources.map((w)=>`- ${w}`)]:[]].join(`
|
|
70
|
+
`);let b=await S.signMessage(new TextEncoder().encode(m),"utf8");if(!b||!(b instanceof Uint8Array))throw Error("@supabase/auth-js: Wallet signMessage() API returned an recognized value");g=b}}try{let{data:f,error:p}=await U(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"solana",message:m,signature:Mt(g)},((d=e.options)===null||d===void 0?void 0:d.captchaToken)?{gotrue_meta_security:{captcha_token:(A=e.options)===null||A===void 0?void 0:A.captchaToken}}:null),xform:ht});if(p)throw p;if(!f||!f.session||!f.user){let v=new Kt;return this._returnResult({data:{user:null,session:null},error:v})}if(f.session)await this._saveSession(f.session),await this._notifyAllSubscribers("SIGNED_IN",f.session);return this._returnResult({data:Object.assign({},f),error:p})}catch(f){if(M(f))return this._returnResult({data:{user:null,session:null},error:f});throw f}}async _exchangeCodeForSession(e){let t=await Yt(this.storage,`${this.storageKey}-code-verifier`),[r,n]=(t!==null&&t!==void 0?t:"").split("/");try{if(!r&&this.flowType==="pkce")throw new zs;let{data:s,error:i}=await U(this.fetch,"POST",`${this.url}/token?grant_type=pkce`,{headers:this.headers,body:{auth_code:e,code_verifier:r},xform:ht});if(await He(this.storage,`${this.storageKey}-code-verifier`),i)throw i;if(!s||!s.session||!s.user){let o=new Kt;return this._returnResult({data:{user:null,session:null,redirectType:null},error:o})}if(s.session)await this._saveSession(s.session),await this._notifyAllSubscribers("SIGNED_IN",s.session);return this._returnResult({data:Object.assign(Object.assign({},s),{redirectType:n!==null&&n!==void 0?n:null}),error:i})}catch(s){if(await He(this.storage,`${this.storageKey}-code-verifier`),M(s))return this._returnResult({data:{user:null,session:null,redirectType:null},error:s});throw s}}async signInWithIdToken(e){try{let{options:t,provider:r,token:n,access_token:s,nonce:i}=e,o=await U(this.fetch,"POST",`${this.url}/token?grant_type=id_token`,{headers:this.headers,body:{provider:r,id_token:n,access_token:s,nonce:i,gotrue_meta_security:{captcha_token:t===null||t===void 0?void 0:t.captchaToken}},xform:ht}),{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 Kt;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,s,i;try{if("email"in e){let{email:o,options:a}=e,l=null,c=null;if(this.flowType==="pkce")[l,c]=await lr(this.storage,this.storageKey);let{error:u}=await U(this.fetch,"POST",`${this.url}/otp`,{headers:this.headers,body:{email:o,data:(t=a===null||a===void 0?void 0:a.data)!==null&&t!==void 0?t:{},create_user:(r=a===null||a===void 0?void 0:a.shouldCreateUser)!==null&&r!==void 0?r:!0,gotrue_meta_security:{captcha_token:a===null||a===void 0?void 0:a.captchaToken},code_challenge:l,code_challenge_method:c},redirectTo:a===null||a===void 0?void 0:a.emailRedirectTo});return this._returnResult({data:{user:null,session:null},error:u})}if("phone"in e){let{phone:o,options:a}=e,{data:l,error:c}=await U(this.fetch,"POST",`${this.url}/otp`,{headers:this.headers,body:{phone:o,data:(n=a===null||a===void 0?void 0:a.data)!==null&&n!==void 0?n:{},create_user:(s=a===null||a===void 0?void 0:a.shouldCreateUser)!==null&&s!==void 0?s:!0,gotrue_meta_security:{captcha_token:a===null||a===void 0?void 0:a.captchaToken},channel:(i=a===null||a===void 0?void 0:a.channel)!==null&&i!==void 0?i:"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 He(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,s=void 0;if("options"in e)n=(t=e.options)===null||t===void 0?void 0:t.redirectTo,s=(r=e.options)===null||r===void 0?void 0:r.captchaToken;let{data:i,error:o}=await U(this.fetch,"POST",`${this.url}/verify`,{headers:this.headers,body:Object.assign(Object.assign({},e),{gotrue_meta_security:{captcha_token:s}}),redirectTo:n,xform:ht});if(o)throw o;if(!i)throw Error("An error occurred on token verification.");let{session:a,user:l}=i;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,s,i;try{let o=null,a=null;if(this.flowType==="pkce")[o,a]=await lr(this.storage,this.storageKey);let l=await U(this.fetch,"POST",`${this.url}/sso`,{body:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},"providerId"in e?{provider_id:e.providerId}:null),"domain"in e?{domain:e.domain}:null),{redirect_to:(r=(t=e.options)===null||t===void 0?void 0:t.redirectTo)!==null&&r!==void 0?r:void 0}),((n=e===null||e===void 0?void 0:e.options)===null||n===void 0?void 0:n.captchaToken)?{gotrue_meta_security:{captcha_token:e.options.captchaToken}}:null),{skip_http_redirect:!0,code_challenge:o,code_challenge_method:a}),headers:this.headers,xform:Sc});if(((s=l.data)===null||s===void 0?void 0:s.url)&&Fe()&&!((i=e.options)===null||i===void 0?void 0:i.skipBrowserRedirect))window.location.assign(l.data.url);return this._returnResult(l)}catch(o){if(await He(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 Ve;let{error:n}=await U(this.fetch,"GET",`${this.url}/reauthenticate`,{headers:this.headers,jwt:t.access_token});return this._returnResult({data:{user:null,session:null},error:n})})}catch(e){if(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:s}=e,{error:i}=await U(this.fetch,"POST",t,{headers:this.headers,body:{email:r,type:n,gotrue_meta_security:{captcha_token:s===null||s===void 0?void 0:s.captchaToken}},redirectTo:s===null||s===void 0?void 0:s.emailRedirectTo});return this._returnResult({data:{user:null,session:null},error:i})}else if("phone"in e){let{phone:r,type:n,options:s}=e,{data:i,error:o}=await U(this.fetch,"POST",t,{headers:this.headers,body:{phone:r,type:n,gotrue_meta_security:{captcha_token:s===null||s===void 0?void 0:s.captchaToken}}});return this._returnResult({data:{user:null,session:null,messageId:i===null||i===void 0?void 0:i.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(s){}})()),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 Yt(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()<Ii:!1;if(this._debug("#__loadSession()",`session has${r?"":" not"} expired`,"expires_at",e.expires_at),!r){if(this.userStorage){let i=await Yt(this.userStorage,this.storageKey+"-user");if(i===null||i===void 0?void 0:i.user)e.user=i.user;else e.user=Pi()}if(this.storage.isServer&&e.user&&!e.user.__isUserNotAvailableProxy){let i={value:this.suppressGetSessionWarning};if(e.user=Cc(e.user,i),i.value)this.suppressGetSessionWarning=!0}return{data:{session:e},error:null}}let{data:n,error:s}=await this._callRefreshToken(e.refresh_token);if(s)return this._returnResult({data:{session:null},error:s});return this._returnResult({data:{session:n},error:null})}finally{this._debug("#__loadSession()","end")}}async getUser(e){if(e)return await this._getUser(e);await this.initializePromise;let t=await this._acquireLock(this.lockAcquireTimeout,async()=>await this._getUser());if(t.data.user)this.suppressGetSessionWarning=!0;return t}async _getUser(e){try{if(e)return await U(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:e,xform:xt});return await this._useSession(async(t)=>{var r,n,s;let{data:i,error:o}=t;if(o)throw o;if(!((r=i.session)===null||r===void 0?void 0:r.access_token)&&!this.hasCustomAuthorizationHeader)return{data:{user:null},error:new Ve};return await U(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:(s=(n=i.session)===null||n===void 0?void 0:n.access_token)!==null&&s!==void 0?s:void 0,xform:xt})})}catch(t){if(M(t)){if(Bn(t))await this._removeSession(),await He(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:s}=r;if(s)throw s;if(!n.session)throw new Ve;let i=n.session,o=null,a=null;if(this.flowType==="pkce"&&e.email!=null)[o,a]=await lr(this.storage,this.storageKey);let{data:l,error:c}=await U(this.fetch,"PUT",`${this.url}/user`,{headers:this.headers,redirectTo:t===null||t===void 0?void 0:t.emailRedirectTo,body:Object.assign(Object.assign({},e),{code_challenge:o,code_challenge_method:a}),jwt:i.access_token,xform:xt});if(c)throw c;return i.user=l.user,await this._saveSession(i),await this._notifyAllSubscribers("USER_UPDATED",i),this._returnResult({data:{user:i.user},error:null})})}catch(r){if(await He(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 Ve;let t=Date.now()/1000,r=t,n=!0,s=null,{payload:i}=Nn(e.access_token);if(i.exp)r=i.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};s=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});s={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(s),await this._notifyAllSubscribers("SIGNED_IN",s)}return this._returnResult({data:{user:s.user,session:s},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:i,error:o}=t;if(o)throw o;e=(r=i.session)!==null&&r!==void 0?r:void 0}if(!(e===null||e===void 0?void 0:e.refresh_token))throw new Ve;let{data:n,error:s}=await this._callRefreshToken(e.refresh_token);if(s)return this._returnResult({data:{user:null,session:null},error:s});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(!Fe())throw new Dr("No browser detected.");if(e.error||e.error_description||e.error_code)throw new Dr(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 xi("Not a valid PKCE flow url.");break;case"pkce":if(this.flowType==="implicit")throw new Dr("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 xi("No code detected.");let{data:v,error:y}=await this._exchangeCodeForSession(e.code);if(y)throw y;let S=new URL(window.location.href);return S.searchParams.delete("code"),window.history.replaceState(window.history.state,"",S.toString()),{data:{session:v.session,redirectType:null},error:null}}let{provider_token:r,provider_refresh_token:n,access_token:s,refresh_token:i,expires_in:o,expires_at:a,token_type:l}=e;if(!s||!o||!i||!l)throw new Dr("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<=ir)console.warn(`@supabase/gotrue-js: Session as retrieved from URL expires in ${A}s, should have been closer to ${u}s`);let m=d-u;if(c-m>=120)console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued over 120s ago, URL could be stale",m,d,c);else if(c-m<0)console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued in the future? Check the device clock for skew",m,d,c);let{data:g,error:f}=await this._getUser(s);if(f)throw f;let p={provider_token:r,provider_refresh_token:n,access_token:s,expires_in:u,expires_at:d,refresh_token:i,token_type:l,user:g.user};return window.location.hash="",this._debug("#_getSessionFromURL()","clearing window.location.hash"),this._returnResult({data:{session:p,redirectType:e.type},error:null})}catch(r){if(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 Yt(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:s}=t;if(s&&!Bn(s))return this._returnResult({error:s});let i=(r=n.session)===null||r===void 0?void 0:r.access_token;if(i){let{error:o}=await this.admin.signOut(i,e);if(o){if(!(lc(o)&&(o.status===404||o.status===401||o.status===403)||Bn(o)))return this._returnResult({error:o})}}if(e!=="others")await this._removeSession(),await He(this.storage,`${this.storageKey}-code-verifier`);return this._returnResult({error:null})})}onAuthStateChange(e){let t=gc(),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:s},error:i}=t;if(i)throw i;await((r=this.stateChangeEmitters.get(e))===null||r===void 0?void 0:r.callback("INITIAL_SESSION",s)),this._debug("INITIAL_SESSION","callback id",e,"session",s)}catch(s){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",s),Bn(s))console.warn(s);else console.error(s)}})}async resetPasswordForEmail(e,t={}){let r=null,n=null;if(this.flowType==="pkce")[r,n]=await lr(this.storage,this.storageKey,!0);try{return await U(this.fetch,"POST",`${this.url}/recover`,{body:{email:e,code_challenge:r,code_challenge_method:n,gotrue_meta_security:{captcha_token:t.captchaToken}},headers:this.headers,redirectTo:t.redirectTo})}catch(s){if(await He(this.storage,`${this.storageKey}-code-verifier`),M(s))return this._returnResult({data:null,error:s});throw s}}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(s)=>{var i,o,a,l,c;let{data:u,error:d}=s;if(d)throw d;let A=await this._getUrlForProvider(`${this.url}/user/identities/authorize`,e.provider,{redirectTo:(i=e.options)===null||i===void 0?void 0:i.redirectTo,scopes:(o=e.options)===null||o===void 0?void 0:o.scopes,queryParams:(a=e.options)===null||a===void 0?void 0:a.queryParams,skipBrowserRedirect:!0});return await U(this.fetch,"GET",A,{headers:this.headers,jwt:(c=(l=u.session)===null||l===void 0?void 0:l.access_token)!==null&&c!==void 0?c:void 0})});if(n)throw n;if(Fe()&&!((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:s}}=t;if(n)throw n;let{options:i,provider:o,token:a,access_token:l,nonce:c}=e,u=await U(this.fetch,"POST",`${this.url}/token?grant_type=id_token`,{headers:this.headers,jwt:(r=s===null||s===void 0?void 0:s.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:i===null||i===void 0?void 0:i.captchaToken}},xform:ht}),{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 Kt});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 He(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:s,error:i}=t;if(i)throw i;return await U(this.fetch,"DELETE",`${this.url}/user/identities/${e.identity_id}`,{headers:this.headers,jwt:(n=(r=s.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 yc(async(n)=>{if(n>0)await bc(200*Math.pow(2,n-1));return this._debug(t,"refreshing attempt",n),await U(this.fetch,"POST",`${this.url}/token?grant_type=refresh_token`,{body:{refresh_token:e},headers:this.headers,xform:ht})},(n,s)=>{let i=200*Math.pow(2,n);return s&&ki(s)&&Date.now()+i-r<ir})}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),Fe()&&!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 Yt(this.storage,this.storageKey);if(n&&this.userStorage){let i=await Yt(this.userStorage,this.storageKey+"-user");if(!this.storage.isServer&&Object.is(this.storage,this.userStorage)&&!i)i={user:n.user},await ar(this.userStorage,this.storageKey+"-user",i);n.user=(e=i===null||i===void 0?void 0:i.user)!==null&&e!==void 0?e:Pi()}else if(n&&!n.user){if(!n.user){let i=await Yt(this.storage,this.storageKey+"-user");if(i&&(i===null||i===void 0?void 0:i.user))n.user=i.user,await He(this.storage,this.storageKey+"-user"),await ar(this.storage,this.storageKey,n);else n.user=Pi()}}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 s=((t=n.expires_at)!==null&&t!==void 0?t:1/0)*1000-Date.now()<Ii;if(this._debug("#_recoverAndRefresh()",`session has${s?"":" not"} expired with margin of ${Ii}s`),s){if(this.autoRefreshToken&&n.refresh_token){let{error:i}=await this._callRefreshToken(n.refresh_token);if(i){if(console.error(i),!ki(i))this._debug("#_recoverAndRefresh()","refresh failed with a non-retryable error, removing the session",i),await this._removeSession()}}}else if(n.user&&n.user.__isUserNotAvailableProxy===!0)try{let{data:i,error:o}=await this._getUser(n.access_token);if(!o&&(i===null||i===void 0?void 0:i.user))n.user=i.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(i){console.error("Error getting user data:",i),this._debug("#_recoverAndRefresh()","error getting user data, skipping SIGNED_IN notification",i)}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 Ve;if(this.refreshingDeferred)return this.refreshingDeferred.promise;let n=`#_callRefreshToken(${e.substring(0,5)}...)`;this._debug(n,"begin");try{this.refreshingDeferred=new Pn;let{data:s,error:i}=await this._refreshAccessToken(e);if(i)throw i;if(!s.session)throw new Ve;await this._saveSession(s.session),await this._notifyAllSubscribers("TOKEN_REFRESHED",s.session);let o={data:s.session,error:null};return this.refreshingDeferred.resolve(o),o}catch(s){if(this._debug(n,"error",s),M(s)){let i={data:null,error:s};if(!ki(s))await this._removeSession();return(t=this.refreshingDeferred)===null||t===void 0||t.resolve(i),i}throw(r=this.refreshingDeferred)===null||r===void 0||r.reject(s),s}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 s=[],i=Array.from(this.stateChangeEmitters.values()).map(async(o)=>{try{await o.callback(e,t)}catch(a){s.push(a)}});if(await Promise.all(i),s.length>0){for(let o=0;o<s.length;o+=1)console.error(s[o]);throw s[0]}}finally{this._debug(n,"end")}}async _saveSession(e){this._debug("#_saveSession()",e),this.suppressGetSessionWarning=!0,await He(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 ar(this.userStorage,this.storageKey+"-user",{user:t.user});let n=Object.assign({},t);delete n.user;let s=eo(n);await ar(this.storage,this.storageKey,s)}else{let n=eo(t);await ar(this.storage,this.storageKey,n)}}async _removeSession(){if(this._debug("#_removeSession()"),this.suppressGetSessionWarning=!1,await He(this.storage,this.storageKey),await He(this.storage,this.storageKey+"-code-verifier"),await He(this.storage,this.storageKey+"-user"),this.userStorage)await He(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&&Fe()&&(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(),ir);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)/ir);if(this._debug("#_autoRefreshTokenTick()",`access token expires in ${n} ticks, a tick lasts ${ir}ms, refresh threshold is ${Si} ticks`),n<=Si)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 Li)this._debug("auto refresh token tick lock not available");else throw e}}async _handleVisibilityChange(){if(this._debug("#_handleVisibilityChange()"),!Fe()||!(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[s,i]=await lr(this.storage,this.storageKey),o=new URLSearchParams({code_challenge:`${encodeURIComponent(s)}`,code_challenge_method:`${encodeURIComponent(i)}`});n.push(o.toString())}if(r===null||r===void 0?void 0:r.queryParams){let s=new URLSearchParams(r.queryParams);n.push(s.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:s}=t;if(s)return this._returnResult({data:null,error:s});return await U(this.fetch,"DELETE",`${this.url}/factors/${e.factorId}`,{headers:this.headers,jwt:(r=n===null||n===void 0?void 0:n.session)===null||r===void 0?void 0:r.access_token})})}catch(t){if(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:s,error:i}=t;if(i)return this._returnResult({data:null,error:i});let o=Object.assign({friendly_name:e.friendlyName,factor_type:e.factorType},e.factorType==="phone"?{phone:e.phone}:e.factorType==="totp"?{issuer:e.issuer}:{}),{data:a,error:l}=await U(this.fetch,"POST",`${this.url}/factors`,{body:o,headers:this.headers,jwt:(r=s===null||s===void 0?void 0:s.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:s}=t;if(s)return this._returnResult({data:null,error:s});let i=Object.assign({challenge_id:e.challengeId},"webauthn"in e?{webauthn:Object.assign(Object.assign({},e.webauthn),{credential_response:e.webauthn.type==="create"?Mc(e.webauthn.credential_response):Fc(e.webauthn.credential_response)})}:{code:e.code}),{data:o,error:a}=await U(this.fetch,"POST",`${this.url}/factors/${e.factorId}/verify`,{body:i,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:s}=t;if(s)return this._returnResult({data:null,error:s});let i=await U(this.fetch,"POST",`${this.url}/factors/${e.factorId}/challenge`,{body:e,headers:this.headers,jwt:(r=n===null||n===void 0?void 0:n.session)===null||r===void 0?void 0:r.access_token});if(i.error)return i;let{data:o}=i;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:Dc(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:Lc(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 s of(e=t===null||t===void 0?void 0:t.factors)!==null&&e!==void 0?e:[])if(n.all.push(s),s.status==="verified")n[s.factor_type].push(s);return{data:n,error:null}}async _getAuthenticatorAssuranceLevel(e){var t,r,n,s;if(e)try{let{payload:A}=Nn(e),m=null;if(A.aal)m=A.aal;let g=m,{data:{user:f},error:p}=await this.getUser(e);if(p)return this._returnResult({data:null,error:p});if(((r=(t=f===null||f===void 0?void 0:f.factors)===null||t===void 0?void 0:t.filter((S)=>S.status==="verified"))!==null&&r!==void 0?r:[]).length>0)g="aal2";let y=A.amr||[];return{data:{currentLevel:m,nextLevel:g,currentAuthenticationMethods:y},error:null}}catch(A){if(M(A))return this._returnResult({data:null,error:A});throw A}let{data:{session:i},error:o}=await this.getSession();if(o)return this._returnResult({data:null,error:o});if(!i)return{data:{currentLevel:null,nextLevel:null,currentAuthenticationMethods:[]},error:null};let{payload:a}=Nn(i.access_token),l=null;if(a.aal)l=a.aal;let c=l;if(((s=(n=i.user.factors)===null||n===void 0?void 0:n.filter((A)=>A.status==="verified"))!==null&&s!==void 0?s:[]).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 Ve});return await U(this.fetch,"GET",`${this.url}/oauth/authorizations/${e}`,{headers:this.headers,jwt:r.access_token,xform:(s)=>({data:s,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:s}=r;if(s)return this._returnResult({data:null,error:s});if(!n)return this._returnResult({data:null,error:new Ve});let i=await U(this.fetch,"POST",`${this.url}/oauth/authorizations/${e}/consent`,{headers:this.headers,jwt:n.access_token,body:{action:"approve"},xform:(o)=>({data:o,error:null})});if(i.data&&i.data.redirect_url){if(Fe()&&!(t===null||t===void 0?void 0:t.skipBrowserRedirect))window.location.assign(i.data.redirect_url)}return i})}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:s}=r;if(s)return this._returnResult({data:null,error:s});if(!n)return this._returnResult({data:null,error:new Ve});let i=await U(this.fetch,"POST",`${this.url}/oauth/authorizations/${e}/consent`,{headers:this.headers,jwt:n.access_token,body:{action:"deny"},xform:(o)=>({data:o,error:null})});if(i.data&&i.data.redirect_url){if(Fe()&&!(t===null||t===void 0?void 0:t.skipBrowserRedirect))window.location.assign(i.data.redirect_url)}return i})}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 Ve});return await U(this.fetch,"GET",`${this.url}/user/oauth/grants`,{headers:this.headers,jwt:t.access_token,xform:(n)=>({data:n,error:null})})})}catch(e){if(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 Ve});return await U(this.fetch,"DELETE",`${this.url}/user/oauth/grants`,{headers:this.headers,jwt:r.access_token,query:{client_id:e.clientId},noResolveJson:!0}),{data:{},error:null}})}catch(t){if(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+ac>n)return r;let{data:s,error:i}=await U(this.fetch,"GET",`${this.url}/.well-known/jwks.json`,{headers:this.headers});if(i)throw i;if(!s.keys||s.keys.length===0)return null;if(this.jwks=s,this.jwks_cached_at=n,r=s.keys.find((o)=>o.kid===e),!r)return null;return r}async getClaims(e,t={}){try{let r=e;if(!r){let{data:A,error:m}=await this.getSession();if(m||!A.session)return this._returnResult({data:null,error:m});r=A.session.access_token}let{header:n,payload:s,signature:i,raw:{header:o,payload:a}}=Nn(r);if(!(t===null||t===void 0?void 0:t.allowExpired))_c(s.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:s,header:n,signature:i},error:null}}let c=vc(n.alg),u=await crypto.subtle.importKey("jwk",l,c,!0,["verify"]);if(!await crypto.subtle.verify(c,u,i,Ac(`${o}.${a}`)))throw new Lr("Invalid JWT signature");return{data:{claims:s,header:n,signature:i},error:null}}catch(r){if(M(r))return this._returnResult({data:null,error:r});throw r}}}Dn.nextInstanceID={};var lo=Dn;var ug=lo,co=ug;var dg="2.103.0",Ln="";if(typeof Deno<"u")Ln="deno";else if(typeof document<"u")Ln="web";else if(typeof navigator<"u"&&navigator.product==="ReactNative")Ln="react-native";else Ln="node";var hg={"X-Client-Info":`supabase-js-${Ln}/${dg}`},Ag={headers:hg},fg={schema:"public"},gg={autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,flowType:"implicit"},mg={};function Mn(e){return Mn=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Mn(e)}function pg(e,t){if(Mn(e)!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t||"default");if(Mn(n)!="object")return n;throw TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function bg(e){var t=pg(e,"string");return Mn(t)=="symbol"?t:t+""}function yg(e,t,r){return(t=bg(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Uc(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),r.push.apply(r,n)}return r}function ke(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?Uc(Object(r),!0).forEach(function(n){yg(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Uc(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}var wg=(e)=>{if(e)return(...t)=>e(...t);return(...t)=>fetch(...t)},_g=()=>Headers,vg=(e,t,r)=>{let n=wg(r),s=_g();return async(i,o)=>{var a;let l=(a=await t())!==null&&a!==void 0?a:e,c=new s(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(i,ke(ke({},o),{},{headers:c}))}};function Cg(e){return e.endsWith("/")?e:e+"/"}function Eg(e,t){var r,n;let{db:s,auth:i,realtime:o,global:a}=e,{db:l,auth:c,realtime:u,global:d}=t,A={db:ke(ke({},l),s),auth:ke(ke({},c),i),realtime:ke(ke({},u),o),storage:{},global:ke(ke(ke({},d),a),{},{headers:ke(ke({},(r=d===null||d===void 0?void 0:d.headers)!==null&&r!==void 0?r:{}),(n=a===null||a===void 0?void 0:a.headers)!==null&&n!==void 0?n:{})}),accessToken:async()=>""};if(e.accessToken)A.accessToken=e.accessToken;else delete A.accessToken;return A}function Sg(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(Cg(t))}catch(r){throw Error("Invalid supabaseUrl: Provided URL is malformed.")}}var Ig=class extends co{constructor(e){super(e)}},xg=class{constructor(e,t,r){var n,s;this.supabaseUrl=e,this.supabaseKey=t;let i=Sg(e);if(!t)throw Error("supabaseKey is required.");this.realtimeUrl=new URL("realtime/v1",i),this.realtimeUrl.protocol=this.realtimeUrl.protocol.replace("http","ws"),this.authUrl=new URL("auth/v1",i),this.storageUrl=new URL("storage/v1",i),this.functionsUrl=new URL("functions/v1",i);let o=`sb-${i.hostname.split(".")[0]}-auth-token`,a={db:fg,realtime:mg,auth:ke(ke({},gg),{},{storageKey:o}),global:Ag},l=Eg(r!==null&&r!==void 0?r:{},a);if(this.storageKey=(n=l.auth.storageKey)!==null&&n!==void 0?n:"",this.headers=(s=l.global.headers)!==null&&s!==void 0?s:{},!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=vg(t,this._getAccessToken.bind(this),l.global.fetch),this.realtime=this._initRealtimeClient(ke({headers:this.headers,accessToken:this._getAccessToken.bind(this)},l.realtime)),this.accessToken)Promise.resolve(this.accessToken()).then((u)=>this.realtime.setAuth(u)).catch((u)=>console.warn("Failed to set initial Realtime auth token:",u));if(this.rest=new Ll(new URL("rest/v1",i).href,{headers:this.headers,schema:l.db.schema,fetch:this.fetch,timeout:l.db.timeout,urlLengthLimit:l.db.urlLengthLimit}),this.storage=new rc(this.storageUrl.href,this.headers,this.fetch,r===null||r===void 0?void 0:r.storage),!l.accessToken)this._listenForAuthEvents()}get functions(){return new ci(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:s,storageKey:i,flowType:o,lock:a,debug:l,throwOnError:c},u,d){let A={Authorization:`Bearer ${this.supabaseKey}`,apikey:`${this.supabaseKey}`};return new Ig({url:this.authUrl.href,headers:ke(ke({},A),u),storageKey:i,autoRefreshToken:e,persistSession:t,detectSessionInUrl:r,storage:n,userStorage:s,flowType:o,lock:a,debug:l,throwOnError:c,fetch:d,hasCustomAuthorizationHeader:Object.keys(this.headers).some((m)=>m.toLowerCase()==="authorization")})}_initRealtimeClient(e){return new En(this.realtimeUrl.href,ke(ke({},e),{},{params:ke(ke({},{apikey:this.supabaseKey}),e===null||e===void 0?void 0:e.params)}))}_listenForAuthEvents(){return this.auth.onAuthStateChange((e,t)=>{this._handleTokenChanged(e,"CLIENT",t===null||t===void 0?void 0:t.access_token)})}_handleTokenChanged(e,t,r){if((e==="TOKEN_REFRESHED"||e==="SIGNED_IN")&&this.changedAccessToken!==r)this.changedAccessToken=r,this.realtime.setAuth(r);else if(e==="SIGNED_OUT"){if(this.realtime.setAuth(),t=="STORAGE")this.auth.signOut();this.changedAccessToken=void 0}}},jc=(e,t,r)=>new xg(e,t,r);function kg(){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(kg())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 Mg=300000,Kc=16384,Wc=4096;function Yc(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 Qc(e=process.env){let t=Yc(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=Yc(e.FLATBLOX_DASHBOARD_URL??e.VITE_SITE_URL,e.FLATBLOX_DASHBOARD_URL?"FLATBLOX_DASHBOARD_URL":"VITE_SITE_URL"),s=e.FLATBLOX_DASHBOARD_URL?n:new URL("/dashboard/",n).toString(),i=e.XDG_CONFIG_HOME||Hc(Dg(),".config");return{supabaseUrl:t,publishableKey:r,dashboardUrl:s,authFile:e.FLATBLOX_TUI_AUTH_FILE??Hc(i,"flatblox","tui-auth.json")}}function Fg(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 Gg(e){try{let t=JSON.parse(await Bg(e,"utf8"));if(!Fg(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 Fi(e,t){await Tg(Lg(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 Og(r,e),await Rg(e,384)}async function dr(e){try{await Pg(e)}catch(t){if(t.code!=="ENOENT")throw t}}function Jc(e){return jc(e.supabaseUrl,e.publishableKey,{auth:{autoRefreshToken:!0,detectSessionInUrl:!1,persistSession:!1}})}async function $c(e,t){let r=await Gg(t);if(!r)return null;let{data:n,error:s}=await e.auth.setSession({access_token:r.accessToken,refresh_token:r.refreshToken});if(s||!n.session)return await dr(t),null;return await Fi(t,n.session),n.session}function Ug(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 jg(e){try{return Bun.spawn(Ug(e),{stdout:"ignore",stderr:"ignore"}).unref(),!0}catch{return!1}}function Hg(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,20 +79,20 @@ 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
|
|
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 Zc(e){let t=e.launch??jg,r=e.timeoutMs??Mg,n=e.announce??((v)=>process.stdout.write(`Open this URL to connect Flatblox TUI:
|
|
83
83
|
${v}
|
|
84
84
|
|
|
85
|
-
`)),{dashboardUrl:s,signal:i}=e,o=crypto.randomUUID(),a,l,c=new Promise((v,
|
|
85
|
+
`)),{dashboardUrl:s,signal:i}=e,o=crypto.randomUUID(),a,l,c=new Promise((v,y)=>{a=v,l=y}),u=!1,d=Bun.serve({hostname:"127.0.0.1",port:0,async fetch(v){let y=new URL(v.url);if(y.searchParams.get("state")!==o)return new Response("Invalid pairing state",{status:403});if(v.method==="GET"&&y.pathname==="/callback")return Hg(o);if(v.method!=="POST"||y.pathname!=="/token")return new Response("Not found",{status:404});let S=await v.text();if(S.length>Wc+64)return new Response("Pairing code is too large",{status:413});let _;try{_=JSON.parse(S)}catch{return new Response("Invalid pairing code",{status:400})}let b=typeof _==="object"&&_!==null?_.code:null;if(typeof b!=="string"||b.length===0||b.length>Wc)return new Response("Invalid pairing code",{status:400});if(!u)u=!0,a(b);return new Response("Connected",{headers:{"cache-control":"no-store",connection:"close"}})}}),A=`http://127.0.0.1:${d.port}/callback`,m=new URL("tui-auth",s.endsWith("/")?s:`${s}/`);m.searchParams.set("callback",A),m.searchParams.set("state",o);let g=m.toString();n(g),t(g);let f=setTimeout(()=>{if(!u)u=!0,l(Error("Sign-in timed out"))},r),p=()=>{if(!u)u=!0,l(Error("Sign-in cancelled"))};if(i?.aborted)p();else i?.addEventListener("abort",p,{once:!0});try{return await c}finally{i?.removeEventListener("abort",p),clearTimeout(f),await d.stop(!1)}}async function Xc(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 Kg,resolve as Vc}from"path";var uo=`flatblox-tui [draft.json] [options]
|
|
86
86
|
|
|
87
87
|
Options:
|
|
88
88
|
--cloud Open saved artworks from Flatblox (default)
|
|
89
89
|
--local Create a new local artwork
|
|
90
90
|
--logout Sign out of the cloud dashboard
|
|
91
|
-
-s, --size <1-${
|
|
91
|
+
-s, --size <1-${Ie}> 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 Gc(e,t,r){let n=e[t+1];if(!n||n.startsWith("-"))throw Error(`${r} needs a value`);return n}function Uc(e){let t,r,n=16,s=!1,i=!1,o=!1,a=!1,l=!1;for(let c=0;c<e.length;c++){let u=e[c];if(u==="-h"||u==="--help")s=!0;else if(u==="--cloud")i=!0;else if(u==="--local")o=!0;else if(u==="--logout")i=!0,a=!0;else if(u==="-s"||u==="--size")n=Number(Gc(e,c,u)),l=!0,c++;else if(u==="-o"||u==="--output")r=Gc(e,c,u),l=!0,c++;else if(u.startsWith("-"))throw Error(`Unknown option: ${u}`);else if(t)throw Error("Only one draft file can be opened");else t=u,l=!0}if(!Number.isInteger(n)||n<1||n>Se)throw Error(`Grid size must be between 1 and ${Se}`);if(i&&(o||l))throw Error("Cloud mode cannot be combined with local file options");return{mode:i||!o&&!l?"cloud":"local",filePath:t,outputPath:r,size:n,help:s,logout:a}}function wg(e){return yg(e).replace(/\.flatblox\.json$/i,"").replace(/\.json$/i,"")}async function jc(e){let t=e.filePath?Fc(e.filePath):void 0,r=t?Bun.file(t):void 0,n=r&&await r.exists()?ln(await r.text()):{...dn(e.size),filename:t?wg(t):"untitled"},s=Fc(e.outputPath??t??`${n.filename}.flatblox.json`);return{session:new Pt(n),filePath:s}}var Ni="id, filename, num_cols, num_rows, grid, palette, palette_saturation, palette_lightness, artboards, created_at, updated_at",Kc=16;function Wc(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function Hc(e,t){let r=nn(e);return r.length===t&&r.every((n)=>n.length===t)?r:null}function Yc(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 s=e[r][n],i=t[r][n];if(s.active!==i.active||s.color!==i.color||(s.tileIndex??null)!==(i.tileIndex??null)||(s.depth??null)!==(i.depth??null)||(s.mirrorZ??!1)!==(i.mirrorZ??!1))return!1}}return!0}function _g(e){if(!Array.isArray(e))return[];return e.slice(0,ps).flatMap((t,r)=>{if(!Wc(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 vg(e){if(!Array.isArray(e))return[...rt[0].colors];let t=e.filter(ct).slice(0,Kc);return t.length>0?t:[...rt[0].colors]}function Di(e){if(!Wc(e))return null;let t=Number(e.num_cols);if(!Number.isInteger(t)||t<1||t>Se||e.num_rows!==t||typeof e.id!=="string"||typeof e.filename!=="string"||typeof e.created_at!=="string"||typeof e.updated_at!=="string")return null;let r=Hc(e.grid,t);if(!r)return null;let n=_g(e.artboards),s=n.findIndex((i)=>{let o=Hc(i.grid,t);return o?Yc(o,r):!1});return{id:e.id,filename:e.filename||"Untitled",size:t,grid:r,palette:vg(e.palette),paletteSaturation:tt(e.palette_saturation),paletteLightness:tt(e.palette_lightness),artboards:n,activeArtboard:s<0?0:s,createdAt:e.created_at,updatedAt:e.updated_at}}function Qc(e){return Yt(e.grid,e.paletteSaturation,e.paletteLightness)}function Jc(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 Cg(e,t,r=new Date().toISOString()){if(t.grid.length!==e.size||!t.grid.every((i)=>i.length===e.size))throw Error("Artwork dimensions changed");let n=br(t.grid),s=e.artboards.map((i)=>({...i}));if(s.length===0)s.push({id:0,name:"Frame 1",grid:n});else{let i=Math.min(e.activeArtboard,s.length-1);s[i]={...s[i],grid:n}}return{grid:n,artboards:s,updated_at:r}}function Eg(e,t,r=new Date().toISOString()){let n=e.grid.length;if(n<1||n>Se||!e.grid.every((o)=>o.length===n))throw Error("Artwork grid is invalid");let s=e.palette.filter(ct).slice(0,Kc);if(s.length===0)throw Error("Artwork palette is invalid");let i=br(e.grid);return{user_id:t,filename:e.filename||"untitled",num_cols:n,num_rows:n,grid:i,palette:s,artboards:[{id:0,name:"Frame 1",grid:i}],updated_at:r}}class ro{client;userId;afterSignOut;username;maxCanvasSize;constructor(e,t,r,n=32,s){this.client=e,this.userId=t,this.username=r,this.maxCanvasSize=n,this.afterSignOut=s}async listArtworks(){let{data:e,error:t}=await this.client.from("pixel_art").select(Ni).eq("user_id",this.userId).order("created_at",{ascending:!1});if(t)throw Error(t.message);return(e??[]).flatMap((r)=>{let n=Di(r);return n?[n]:[]})}async createArtwork(e){let t=Eg(e,this.userId),{data:r,error:n}=await this.client.from("pixel_art").insert(t).select(Ni).single();if(n)throw Error(n.message);let s=Di(r);if(!s)throw Error("Supabase returned an invalid artwork");return s}async saveArtwork(e,t){let r=await this.trySaveArtwork(e,t);if(r)return r;let n=await this.fetchArtwork(e.id);if(!n||!Yc(e.grid,n.grid))throw Error("This artwork changed in the web app. Return and refresh before saving.");let s=await this.trySaveArtwork(n,t);if(s)return s;throw Error("This artwork changed again while saving. Return and refresh before trying again.")}async trySaveArtwork(e,t){let r=Cg(e,t),{data:n,error:s}=await this.client.from("pixel_art").update(r).eq("id",e.id).eq("user_id",this.userId).eq("updated_at",e.updatedAt).select(Ni).maybeSingle();if(s)throw Error(s.message);if(!n)return null;let i=Di(n);if(!i)throw Error("Supabase returned an invalid artwork");return i}async fetchArtwork(e){let{data:t,error:r}=await this.client.from("pixel_art").select(Ni).eq("id",e).eq("user_id",this.userId).maybeSingle();if(r)throw Error(r.message);return t?Di(t):null}async signOut(){let{error:e}=await this.client.auth.signOut();if(e)throw Error(e.message);await this.afterSignOut?.()}}import{NativeImage as Sg,Renderable as Ig,RGBA as xg}from"@opentui/core";var no=xg.fromInts(14,16,24);function kg(e,t,r,n){let s=t*2,i=Math.max(1,Math.min(r,e,s)),o=Math.max(1,Math.floor(e/i)),a=Math.max(1,Math.floor(s/i)),l=1,c=1,u=0,d=Number.POSITIVE_INFINITY;for(let A=1;A<=o;A++)for(let m=1;m<=a;m++){let g=m*n/2,f=Math.min(A,g),b=Math.abs(Math.log(g/A));if(f>u||f===u&&b<d)l=A,c=m,u=f,d=b}return{sampleCount:i,columnScale:l,subrowScale:c,columns:i*l,subrows:i*c}}function Rg(e,t,r,n,s){let i=Math.max(1,Math.round(Math.min(e*n,t*s))),o=Math.max(1,Math.min(r,i)),a=Math.min(e,Math.ceil(i/n));return{sampleCount:o,side:i,columns:a,rows:Math.min(t,Math.ceil(i/s)),pixelWidth:Math.max(i,Math.round(a*n))}}class io extends Ig{currentGrid=[];artworkImage=null;artworkImageCache=null;constructor(e,t){super(e,{...t,buffered:!0});if(t.grid)this.currentGrid=t.grid}set grid(e){let t=e??[];if(t===this.currentGrid)return;this.currentGrid=t,this.requestRender()}renderSelf(e){e.clear(no);let t=this.currentGrid.length;if(t===0||this.width<=0||this.height<=0)return;let r=_r(this._ctx);if(r&&Vn(this._ctx)){this.drawArtworkImage(e,t,r.width,r.height);return}this.releaseArtworkImage();let n=$n(this._ctx),s=this.height*2,i=kg(this.width,this.height,t,n),{columns:o,subrows:a}=i,l=Math.floor((this.width-o)/2),c=Math.floor((s-a)/2);for(let u=0;u<this.height;u++){let d=u*2;for(let A=0;A<o;A++){let m=l+A,g=Math.floor(A/i.columnScale),f=Math.min(t-1,Math.floor(g*t/i.sampleCount)),b=[d,d+1].map((v)=>{let w=v-c;if(w<0||w>=a)return no;let C=Math.floor(w/i.subrowScale),_=Math.min(t-1,Math.floor(C*t/i.sampleCount));return Vt(this.currentGrid[_]?.[f],f,_)});e.setCell(m,u,"\u2580",b[0],b[1])}}}drawArtworkImage(e,t,r,n){let s=Rg(this.width,this.height,t,r,n),i=this.artworkImageCache;if(!(this.artworkImage&&i&&i.grid===this.currentGrid&&i.sampleCount===s.sampleCount&&i.side===s.side&&i.pixelWidth===s.pixelWidth)){let a=new Uint8Array(s.sampleCount**2*4);for(let A=0;A<s.sampleCount;A++){let m=Math.min(t-1,Math.floor(A*t/s.sampleCount));for(let g=0;g<s.sampleCount;g++){let f=Math.min(t-1,Math.floor(g*t/s.sampleCount)),[b,v,w]=Vt(this.currentGrid[m]?.[f],f,m).toInts(),C=(A*s.sampleCount+g)*4;a[C]=b,a[C+1]=v,a[C+2]=w,a[C+3]=255}}let l=Sg.fromRgba(a,s.sampleCount,s.sampleCount),c=l.resize({width:s.side,height:s.side,kernel:"nearest"});l.dispose();let u=s.pixelWidth-s.side,d=u>0?c.extend({left:u,background:no.toInts()}):c;if(d!==c)c.dispose();this.releaseArtworkImage(),this.artworkImage=d,this.artworkImageCache={grid:this.currentGrid,sampleCount:s.sampleCount,side:s.side,pixelWidth:s.pixelWidth}}if(!this.artworkImage)return;e.drawImage(this.artworkImage,Math.floor((this.width-s.columns)/2),Math.floor((this.height-s.rows)/2),s.columns,s.rows,s.pixelWidth,s.side,0,0,s.pixelWidth,s.side,"auto")}releaseArtworkImage(){this.artworkImage?.dispose(),this.artworkImage=null,this.artworkImageCache=null}destroySelf(){this.releaseArtworkImage(),super.destroySelf()}}$r({artwork_preview:io});var so=[16,32,64],$c=74,Zc=2;function oo(e,t){let r=dn(e),n=rt[t];return r.palette=[...n.colors],r.activeColor=r.palette[0],r}function ao(e,t){let r=e.name.toLowerCase(),n=Number(r)-1;if(r==="escape")return{kind:"cancel"};if(Number.isInteger(n)&&so[n])return{kind:"size",size:so[n]};let s=Xt(r);if(s)return{kind:"palette",delta:s.dx+s.dy*t};if($t(e))return{kind:"create"}}function Tg(e,t){let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}function Xc(e,t){if(e.length<=t)return e;return`${e.slice(0,Math.max(1,t-1))}\u2026`}function Bg(e){return qr(us(e.palette,e.grid),e.paletteSaturation,e.paletteLightness)}function lo(e,t){return Math.max(0,Math.min(rt.length-1,e+t))}function Li(e){return Math.max(1,Math.min($c,e-4))>=64?2:1}function co(e){let t=Y(()=>Math.max(1,Math.min($c,e.width-4))),r=Y(()=>Math.max(1,Math.min(19,e.height-2))),n=Y(()=>Li(e.width)),s=Y(()=>r()>=12?1:0),i=Y(()=>Math.max(1,r()-7-s()*2)),o=Y(()=>i()*n()),a=Y(()=>{let A=Math.floor(e.selectedPalette/o())*o();return rt.slice(A,A+o()).map((m,g)=>({palette:m,index:A+g}))}),l=Y(()=>Tg(a(),n())),c=Y(()=>Math.max(1,Math.floor((t()-4-(n()-1))/n()))),u=Y(()=>Math.max(3,Math.min(10,c()-8))),d=Y(()=>Math.max(1,c()-u()-4));return(()=>{var A=I("box"),m=I("box"),g=I("box"),f=I("text"),b=I("box"),v=I("text"),w=Ae("Choose a palette | "),C=I("box"),_=I("box"),y=I("text");return E(A,m),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"),E(m,g),E(m,b),E(m,v),E(m,C),E(m,_),E(m,y),h(m,"flexGrow",1),h(m,"width","100%"),h(m,"padding",1),h(m,"flexDirection","column"),E(g,f),h(g,"height",1),h(g,"flexDirection","row"),h(g,"gap",1),E(f,Ae("Grid size")),G(g,V(yt,{each:so,children:(p,O)=>{let T=()=>p<=e.maxSize,M=()=>p===e.selectedSize;return(()=>{var R=I("box"),B=I("text"),Q=Ae(" "),z=Ae("\xD7");return E(R,B),h(R,"height",1),h(R,"paddingX",1),h(R,"onMouseDown",()=>e.onSelectSize(p)),E(B,Q),E(B,z),G(B,()=>O()+1,Q),G(B,p,z),G(B,p,null),_e((W)=>{var de=M()?S.panelActive:S.panel,ie=T()?M()?S.accentText:S.muted:S.border;return de!==W.e&&(W.e=h(R,"backgroundColor",de,W.e)),ie!==W.t&&(W.t=h(B,"fg",ie,W.t)),W},{e:void 0,t:void 0}),R})()}}),null),E(v,w),G(v,()=>rt[e.selectedPalette].name,null),G(m,V(yt,{get each(){return l()},children:(p)=>(()=>{var O=I("box");return h(O,"height",1),h(O,"flexDirection","row"),h(O,"gap",1),G(O,V(yt,{each:p,children:(T)=>{let M=()=>T.index===e.selectedPalette;return(()=>{var R=I("box"),B=I("text"),Q=I("box");return E(R,B),E(R,Q),h(R,"height",1),h(R,"paddingX",1),h(R,"flexDirection","row"),h(R,"justifyContent","space-between"),h(R,"onMouseDown",()=>e.onSelectPalette(T.index)),G(B,()=>Xc(T.palette.name,d())),h(Q,"height",1),h(Q,"flexDirection","row"),G(Q,V(yt,{get each(){return T.palette.colors.slice(0,u())},children:(z)=>(()=>{var W=I("text");return E(W,Ae("\u25A0")),_e((de)=>h(W,"fg",Ue(z),de)),W})()})),_e((z)=>{var W=c(),de=M()?S.panelActive:S.panel,ie=M()?S.text:S.muted;return W!==z.e&&(z.e=h(R,"width",W,z.e)),de!==z.t&&(z.t=h(R,"backgroundColor",de,z.t)),ie!==z.a&&(z.a=h(B,"fg",ie,z.a)),z},{e:void 0,t:void 0,a:void 0}),R})()}})),O})()}),C),h(_,"flexGrow",1),G(y,()=>e.message||"1\u20133 size \xB7 arrows palette \xB7 Enter create \xB7 Esc cancel"),_e((p)=>{var O=Math.max(0,Math.floor((e.width-t())/2)),T=Math.max(0,Math.floor((e.height-r())/2)),M=t(),R=r(),B=S.border,Q=S.accent,z=S.panel,W=S.textPink,de=s(),ie=S.textPink,te=s(),ke=e.message?S.warning:S.textPink;return O!==p.e&&(p.e=h(A,"left",O,p.e)),T!==p.t&&(p.t=h(A,"top",T,p.t)),M!==p.a&&(p.a=h(A,"width",M,p.a)),R!==p.o&&(p.o=h(A,"height",R,p.o)),B!==p.i&&(p.i=h(A,"borderColor",B,p.i)),Q!==p.n&&(p.n=h(A,"titleColor",Q,p.n)),z!==p.s&&(p.s=h(m,"backgroundColor",z,p.s)),W!==p.h&&(p.h=h(f,"fg",W,p.h)),de!==p.r&&(p.r=h(b,"height",de,p.r)),ie!==p.d&&(p.d=h(v,"fg",ie,p.d)),te!==p.l&&(p.l=h(C,"height",te,p.l)),ke!==p.u&&(p.u=h(y,"fg",ke,p.u)),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,d:void 0,l:void 0,u:void 0}),A})()}function Og(e){let t=Y(()=>Qc(e.artwork)),r=Y(()=>Bg(e.artwork)),n=()=>e.selected()===e.index,s=()=>e.cardWidth-2;return(()=>{var i=I("box"),o=I("box"),a=I("box"),l=I("artwork_preview"),c=I("box"),u=I("text"),d=I("text"),A=I("text"),m=I("box"),g=I("box");return E(i,o),E(i,d),E(i,A),E(i,m),E(i,g),h(i,"flexDirection","column"),E(o,a),h(o,"width","100%"),h(o,"height","100%"),h(o,"border",!0),h(o,"borderColor","transparent"),h(o,"flexDirection","column"),E(a,l),E(a,c),E(a,u),h(a,"flexGrow",1),h(a,"width","100%"),h(a,"flexDirection","column"),h(a,"paddingX",1),h(l,"flexGrow",1),h(l,"width","100%"),h(c,"height",1),h(c,"width","100%"),h(c,"flexDirection","row"),h(c,"gap",1),h(c,"overflow","hidden"),G(c,V(yt,{get each(){return r()},children:(f)=>(()=>{var b=I("text");return E(b,Ae("\u2B24")),_e((v)=>h(b,"fg",Ue(f),v)),b})()})),G(u,()=>Xc(e.artwork.filename,e.cardWidth-3)),h(d,"position","absolute"),h(d,"left",1),h(d,"top",0),h(d,"height",1),h(d,"zIndex",1),G(d,()=>"\u2580".repeat(s())),h(A,"position","absolute"),h(A,"left",1),h(A,"height",1),h(A,"zIndex",1),G(A,()=>"\u2584".repeat(s())),h(m,"position","absolute"),h(m,"left",0),h(m,"top",0),h(m,"width",1),h(m,"height","100%"),h(m,"zIndex",2),h(g,"position","absolute"),h(g,"top",0),h(g,"width",1),h(g,"height","100%"),h(g,"zIndex",2),_e((f)=>{var b=`artwork-card-${e.artwork.id}`,v=e.cardWidth,w=e.cardHeight,C=S.card,_=e.onSelect,y=S.card,p=S.panel,O=`artwork-preview-${e.artwork.id}`,T=t(),M=S.textPink,R=`artwork-card-selection-top-${e.artwork.id}`,B=s(),Q=n()?S.orangeActive:S.card,z=S.panel,W=`artwork-card-selection-bottom-${e.artwork.id}`,de=e.cardHeight-1,ie=s(),te=n()?S.orangeActive:S.card,ke=S.panel,q=`artwork-card-selection-side-${e.artwork.id}`,H=n()?S.orangeActive:S.card,ye=e.cardWidth-1,fe=n()?S.orangeActive:S.card;return b!==f.e&&(f.e=h(i,"id",b,f.e)),v!==f.t&&(f.t=h(i,"width",v,f.t)),w!==f.a&&(f.a=h(i,"height",w,f.a)),C!==f.o&&(f.o=h(i,"backgroundColor",C,f.o)),_!==f.i&&(f.i=h(i,"onMouseDown",_,f.i)),y!==f.n&&(f.n=h(o,"backgroundColor",y,f.n)),p!==f.s&&(f.s=h(a,"backgroundColor",p,f.s)),O!==f.h&&(f.h=h(l,"id",O,f.h)),T!==f.r&&(f.r=h(l,"grid",T,f.r)),M!==f.d&&(f.d=h(u,"fg",M,f.d)),R!==f.l&&(f.l=h(d,"id",R,f.l)),B!==f.u&&(f.u=h(d,"width",B,f.u)),Q!==f.c&&(f.c=h(d,"fg",Q,f.c)),z!==f.w&&(f.w=h(d,"bg",z,f.w)),W!==f.m&&(f.m=h(A,"id",W,f.m)),de!==f.f&&(f.f=h(A,"top",de,f.f)),ie!==f.y&&(f.y=h(A,"width",ie,f.y)),te!==f.g&&(f.g=h(A,"fg",te,f.g)),ke!==f.p&&(f.p=h(A,"bg",ke,f.p)),q!==f.b&&(f.b=h(m,"id",q,f.b)),H!==f.T&&(f.T=h(m,"backgroundColor",H,f.T)),ye!==f.A&&(f.A=h(g,"left",ye,f.A)),fe!==f.O&&(f.O=h(g,"backgroundColor",fe,f.O)),f},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0,A:void 0,O:void 0}),i})()}function uo(e){let t=ht(),r=hr(),[n,s]=K([]),[i,o]=K(0),[a,l]=K(!0),[c,u]=K("Loading saved artworks\u2026"),[d,A]=K(null),[m,g]=K(!1),[f,b]=K(16),[v,w]=K(0),[C,_]=K(""),y=Y(()=>{let D=Math.max(8,r().width-2);return Math.min(28,D,Math.max(12,Math.floor(D/3)))}),p=Y(()=>{let D=r().height<18?7:r().height<25?9:12;return Math.max(4,Math.min(D,r().height-6))}),O=Y(()=>Math.max(1,Math.floor((r().width-2)/(y()+Zc)))),T=Y(()=>O()*y()+Math.max(0,O()-1)*Zc),M=Y(()=>Math.max(1,Math.floor((r().height-5)/(p()+1)))),R=Y(()=>O()*M()),B=Y(()=>Math.floor(i()/R())),Q=Y(()=>B()*R()),z=Y(()=>{let D=Q();return n().slice(D,D+R())});Gn(()=>{let D=Math.max(0,n().length-1);if(i()>D)o(D)});let W=async()=>{l(!0),u("Loading saved artworks\u2026");try{let D=await e.repository.listArtworks();s(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)}};Ft(()=>void W());let de=(D,J)=>{let se=n().length;if(se===0)return;let le=Math.max(0,Math.min(se-1,i()+D+J*O()));o(le),u(n()[le].filename)},ie=()=>{let D=n()[i()];if(!D)return;A({artwork:D,session:new Pt(Jc(D))})},te=()=>{b(16),w(0),_(""),g(!0),u("Choose a size and palette")},ke=()=>{g(!1),_(""),u("New artwork cancelled")},q=(D)=>{if(D>e.repository.maxCanvasSize){_(`${D}\xD7${D} is unavailable on this plan`);return}b(D),_("")},H=(D)=>{w((J)=>lo(J,D)),_("")},ye=()=>{g(!1),A({artwork:null,session:new Pt(oo(f(),v()))})},fe=async(D)=>{let J=d();if(!J)throw Error("No artwork is open");let se=J.artwork?await e.repository.saveArtwork(J.artwork,D):await e.repository.createArtwork(D);if(s((le)=>le.some((pe)=>pe.id===se.id)?le.map((pe)=>pe.id===se.id?se:pe):[se,...le]),!J.artwork)o(0);return A((le)=>le===J?{...le,artwork:se}:le),e.variant==="local"?"Saved locally":"Saved to Flatblox cloud"},Xe=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 Ar((D)=>{if(D.eventType==="release"||d())return;let J=D.name.toLowerCase();if(m()){let le=ao(D,Li(r().width));if(le?.kind==="cancel")ke();else if(le?.kind==="size")q(le.size);else if(le?.kind==="palette")H(le.delta);else if(le?.kind==="create")ye();return}let se=Xt(J);if(D.ctrl&&J==="c")t.destroy();else if(J==="escape"&&e.onBack)e.onBack();else if(J==="q"||J==="escape")t.destroy();else if(se)de(se.dx,se.dy);else if(J==="n")te();else if($t(D))ie();else if(J==="r")W();else if(J==="o"&&e.variant!=="local")Xe()}),V(Ve,{get when(){return d()},get fallback(){return(()=>{var D=I("box"),J=I("box"),se=I("box"),le=I("text"),Be=I("b"),pe=I("box"),Re=I("box"),ot=I("text"),He=I("box"),Z=I("box"),mt=I("text"),xt=I("text");return E(D,J),E(D,He),E(D,Z),h(D,"width","100%"),h(D,"height","100%"),h(D,"flexDirection","column"),E(J,se),E(J,pe),E(J,Re),h(J,"height",3),h(J,"paddingY",1),h(J,"paddingX",1),h(J,"flexDirection","row"),E(se,le),h(se,"height",1),h(se,"flexBasis",0),h(se,"flexGrow",1),h(se,"flexDirection","row"),E(le,Be),G(Be,()=>e.variant==="local"?"LOCAL ARTWORKS":"DASHBOARD"),h(pe,"height",1),h(pe,"flexBasis",0),h(pe,"flexGrow",1),h(pe,"flexDirection","row"),h(pe,"justifyContent","center"),G(pe,V(vr,{id:"dashboard-wordmark",width:14,height:1,get backgroundColor(){return S.panel},get foregroundColor(){return S.accent}})),E(Re,ot),h(Re,"height",1),h(Re,"flexBasis",0),h(Re,"flexGrow",1),h(Re,"flexDirection","row"),h(Re,"justifyContent","flex-end"),G(ot,()=>e.repository.username),h(He,"id","dashboard-content"),h(He,"flexGrow",1),h(He,"flexDirection","column"),h(He,"justifyContent","center"),h(He,"padding",1),G(He,V(Ve,{get when(){return Wt(()=>!a())()&&n().length>0},get fallback(){return(()=>{var x=I("box"),U=I("text");return E(x,U),h(x,"flexGrow",1),h(x,"alignItems","center"),h(x,"justifyContent","center"),G(U,c),_e((k)=>h(U,"fg",S.muted,k)),x})()},get children(){var x=I("box");return h(x,"id","artwork-grid"),h(x,"alignSelf","center"),h(x,"flexDirection","row"),h(x,"flexWrap","wrap"),h(x,"rowGap",1),h(x,"columnGap",2),G(x,V(yt,{get each(){return z()},children:(U,k)=>V(Og,{artwork:U,get index(){return Q()+k()},selected:i,get cardWidth(){return y()},get cardHeight(){return p()},onSelect:()=>o(Q()+k())})})),_e((U)=>h(x,"width",T(),U)),x}})),E(Z,mt),E(Z,xt),h(Z,"height",1),h(Z,"paddingX",1),h(Z,"flexDirection","row"),h(Z,"justifyContent","space-between"),G(mt,c),G(xt,()=>e.variant==="local"?"N new | arrows move | Enter edit | R refresh | Esc back | Q quit":"N new | arrows move | Enter edit | R refresh | O sign out | Q quit"),G(D,V(Ve,{get when(){return m()},get children(){return V(co,{get width(){return r().width},get height(){return r().height},get selectedPalette(){return v()},get selectedSize(){return f()},get maxSize(){return e.repository.maxCanvasSize},get message(){return C()},onSelectPalette:(x)=>{w(x),_("")},onSelectSize:q})}}),null),_e((x)=>{var U=S.background,k=S.panel,P=S.accentText,re=S.muted,ue=S.panel,me=S.panelActive,Te=c().startsWith("Load failed")?S.warning:S.textPink,Oe=S.muted;return U!==x.e&&(x.e=h(D,"backgroundColor",U,x.e)),k!==x.t&&(x.t=h(J,"backgroundColor",k,x.t)),P!==x.a&&(x.a=h(le,"fg",P,x.a)),re!==x.o&&(x.o=h(ot,"fg",re,x.o)),ue!==x.i&&(x.i=h(He,"backgroundColor",ue,x.i)),me!==x.n&&(x.n=h(Z,"backgroundColor",me,x.n)),Te!==x.s&&(x.s=h(mt,"fg",Te,x.s)),Oe!==x.h&&(x.h=h(xt,"fg",Oe,x.h)),x},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),D})()},children:(D)=>V(Er,{get session(){return D().session},saveDocument:fe,get promptForFilenameOnSave(){return!D().artwork},onBack:()=>{A(null),u("Returned from editor")}})})}import{readdir as Pg,readFile as Ng,stat as Vc,writeFile as Dg}from"fs/promises";import{basename as Lg,join as zc,resolve as Mg}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 Fg(e){return e.replace(/[\\/]/g,"-").replace(/^\.+$/,"")||"untitled"}function Gg(e){return typeof e==="object"&&e!==null&&"code"in e&&typeof e.code==="string"&&e.code!=="ENOENT"}function Ug(e=process.env,t=process.cwd()){return e.INIT_CWD||e.PWD||t}class ho{username;maxCanvasSize=64;directory;constructor(e=Ug()){this.directory=Mg(e),this.username=Lg(this.directory)||"Local"}async listArtworks(){let e=await Pg(this.directory,{withFileTypes:!0});return(await Promise.all(e.map(async(r)=>{if(!r.isFile()||!r.name.endsWith(".flatblox.json"))return null;let n=zc(this.directory,r.name);try{let s=ln(await Ng(n,"utf8")),i=await Vc(n),o=i.birthtimeMs>0?i.birthtime:i.mtime;return qc(n,s,o,i.mtime)}catch(s){if(Gg(s))throw s;return null}}))).filter((r)=>r!==null).sort((r,n)=>n.createdAt.localeCompare(r.createdAt))}async createArtwork(e){let t=zc(this.directory,`${Fg(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 Dg(e,cn(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=ht(),r=hr(),[n,s]=K(0),[i,o]=K(!1),[a,l]=K(16),[c,u]=K(0),[d,A]=K(null),[m,g]=K(null),[f,b]=K(!1),[v,w]=K(e.cloudRepository??null),[C,_]=K(!1),[y,p]=K(!1),[O,T]=K(""),[M,R]=K(""),B=null,Q=e.localRepository??new ho,z=()=>{l(16),u(0),o(!0)},W=()=>{o(!1),g(null),A(new Pt(oo(a(),c())))},de=(q)=>{u((H)=>lo(H,q))},ie=async()=>{if(y())return;let q=new AbortController;B=q,p(!0),T(""),R("");try{let H=await e.onSignIn(q.signal,R);if(!q.signal.aborted)w(H),_(!0)}catch(H){if(!q.signal.aborted)T(H instanceof Error?H.message:String(H))}finally{if(B===q)B=null;p(!1)}},te=(q)=>{s((H)=>Math.max(0,Math.min(2,H+q)))},ke=()=>{if(v())_(!0);else ie()};return Ar((q)=>{if(q.eventType==="release"||d()||f()||C())return;let H=q.name.toLowerCase();if(y()){if(H==="escape"||H==="q"||q.ctrl&&H==="c")B?.abort();return}if(i()){let fe=ao(q,Li(r().width));if(fe?.kind==="cancel")o(!1);else if(fe?.kind==="size")l(fe.size);else if(fe?.kind==="palette")de(fe.delta);else if(fe?.kind==="create")W();return}let ye=Xt(H);if(q.ctrl&&H==="c")t.destroy();else if(H==="q"||H==="escape")t.destroy();else if(ye?.dy)te(ye.dy);else if(H==="n")z();else if(H==="l")b(!0);else if(H==="s"||H==="d")ke();else if($t(q))if(n()===0)z();else if(n()===1)b(!0);else ke()}),V(Ve,{get when(){return Wt(()=>!!C())()?v():null},get fallback(){return V(Ve,{get when(){return d()},get fallback(){return V(Ve,{get when(){return f()},get fallback(){return(()=>{var q=I("box"),H=I("box"),ye=I("box"),fe=I("box"),Xe=I("box"),D=I("text"),J=I("box"),se=I("box"),le=I("text"),Be=I("box"),pe=I("box"),Re=I("text"),ot=I("box"),He=I("text");return E(q,H),h(q,"width","100%"),h(q,"height","100%"),h(q,"alignItems","center"),h(q,"justifyContent","center"),E(H,ye),E(H,fe),E(H,J),E(H,Be),E(H,ot),E(H,He),h(H,"flexDirection","column"),h(H,"alignItems","center"),G(H,V(vr,{id:"welcome-wordmark",width:32,height:2,get backgroundColor(){return S.background},get foregroundColor(){return S.accent}}),ye),h(ye,"height",3),E(fe,Xe),h(fe,"id","welcome-new-artwork"),h(fe,"width",36),h(fe,"height",3),h(fe,"border",!0),h(fe,"onMouseDown",()=>{s(0),z()}),E(Xe,D),h(Xe,"width","100%"),h(Xe,"height","100%"),h(Xe,"alignItems","center"),h(Xe,"justifyContent","center"),E(D,Ae("New artwork")),h(D,"id","welcome-new-artwork-label"),E(J,se),h(J,"id","welcome-load-artwork"),h(J,"width",36),h(J,"height",3),h(J,"border",!0),h(J,"onMouseDown",()=>{s(1),b(!0)}),E(se,le),h(se,"width","100%"),h(se,"height","100%"),h(se,"alignItems","center"),h(se,"justifyContent","center"),E(le,Ae("Load artwork")),h(le,"id","welcome-load-artwork-label"),E(Be,pe),h(Be,"id","welcome-sign-in"),h(Be,"width",36),h(Be,"height",3),h(Be,"border",!0),h(Be,"onMouseDown",()=>{s(2),ke()}),E(pe,Re),h(pe,"width","100%"),h(pe,"height","100%"),h(pe,"alignItems","center"),h(pe,"justifyContent","center"),h(Re,"id","welcome-sign-in-label"),G(Re,()=>v()?"Dashboard":"Sign in"),h(ot,"height",2),G(He,(()=>{var Z=Wt(()=>!!y());return()=>Z()?Wt(()=>!!M())()?`Open this URL: ${M()} \xB7 Esc cancel`:"Complete sign-in in your browser \xB7 Esc cancel":O()||"\u2191/\u2193 select \xB7 Enter open \xB7 Q quit"})()),G(q,V(Ve,{get when(){return i()},get children(){return V(co,{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),_e((Z)=>{var mt=S.background,xt=M()?Math.max(36,r().width-4):36,x=n()===0?S.accent:S.border,U=n()===0?S.textPink:S.text,k=n()===1?S.accent:S.border,P=n()===1?S.textPink:S.text,re=n()===2?S.accent:S.border,ue=n()===2?S.textPink:S.text,me=O()?S.warning:S.muted;return mt!==Z.e&&(Z.e=h(q,"backgroundColor",mt,Z.e)),xt!==Z.t&&(Z.t=h(H,"width",xt,Z.t)),x!==Z.a&&(Z.a=h(fe,"borderColor",x,Z.a)),U!==Z.o&&(Z.o=h(D,"fg",U,Z.o)),k!==Z.i&&(Z.i=h(J,"borderColor",k,Z.i)),P!==Z.n&&(Z.n=h(le,"fg",P,Z.n)),re!==Z.s&&(Z.s=h(Be,"borderColor",re,Z.s)),ue!==Z.h&&(Z.h=h(Re,"fg",ue,Z.h)),me!==Z.r&&(Z.r=h(He,"fg",me,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}),q})()},get children(){return V(uo,{repository:Q,variant:"local",onBack:()=>b(!1)})}})},children:(q)=>V(Er,{get session(){return q()},saveDocument:async(H)=>{let ye=m(),fe=ye?await Q.saveArtwork(ye,H):await Q.createArtwork(H);return g(fe),"Saved locally"},get promptForFilenameOnSave(){return!m()},onBack:()=>{g(null),A(null)}})})},children:(q)=>V(uo,{get repository(){return q()}})})}var tu={backgroundColor:S.background,debounceDelay:1,exitOnCtrlC:!1,targetFps:60,useKittyKeyboard:{events:!0,allKeysAsEscapes:!0}};async function jg(e){let t=Pc(),r=Nc(t),n=await Dc(r,t.authFile);if(e){if(n)await r.auth.signOut();await lr(t.authFile),process.stdout.write(`Signed out of Flatblox TUI.
|
|
94
|
-
`);return}let s,i=async(o)=>{if(!s){let{data:d}=r.auth.onAuthStateChange((A,m)=>{if(m)
|
|
95
|
-
`);return}if(e.mode==="cloud")await
|
|
93
|
+
-h, --help Show this help`;function zc(e,t,r){let n=e[t+1];if(!n||n.startsWith("-"))throw Error(`${r} needs a value`);return n}function qc(e){let t,r,n=16,s=!1,i=!1,o=!1,a=!1,l=!1;for(let c=0;c<e.length;c++){let u=e[c];if(u==="-h"||u==="--help")s=!0;else if(u==="--cloud")i=!0;else if(u==="--local")o=!0;else if(u==="--logout")i=!0,a=!0;else if(u==="-s"||u==="--size")n=Number(zc(e,c,u)),l=!0,c++;else if(u==="-o"||u==="--output")r=zc(e,c,u),l=!0,c++;else if(u.startsWith("-"))throw Error(`Unknown option: ${u}`);else if(t)throw Error("Only one draft file can be opened");else t=u,l=!0}if(!Number.isInteger(n)||n<1||n>Ie)throw Error(`Grid size must be between 1 and ${Ie}`);if(i&&(o||l))throw Error("Cloud mode cannot be combined with local file options");return{mode:i||!o&&!l?"cloud":"local",filePath:t,outputPath:r,size:n,help:s,logout:a}}function Wg(e){return Kg(e).replace(/\.flatblox\.json$/i,"").replace(/\.json$/i,"")}async function eu(e){let t=e.filePath?Vc(e.filePath):void 0,r=t?Bun.file(t):void 0,n=r&&await r.exists()?cn(await r.text()):{...hn(e.size),filename:t?Wg(t):"untitled"},s=Vc(e.outputPath??t??`${n.filename}.flatblox.json`);return{session:new Dt(n),filePath:s}}var Gi="id, filename, num_cols, num_rows, grid, palette, palette_saturation, palette_lightness, artboards, created_at, updated_at",ru=16;function nu(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function tu(e,t){let r=sn(e);return r.length===t&&r.every((n)=>n.length===t)?r:null}function iu(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 s=e[r][n],i=t[r][n];if(s.active!==i.active||s.color!==i.color||(s.tileIndex??null)!==(i.tileIndex??null)||(s.depth??null)!==(i.depth??null)||(s.mirrorZ??!1)!==(i.mirrorZ??!1))return!1}}return!0}function Yg(e){if(!Array.isArray(e))return[];return e.slice(0,Cs).flatMap((t,r)=>{if(!nu(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 Qg(e){if(!Array.isArray(e))return[...it[0].colors];let t=e.filter(dt).slice(0,ru);return t.length>0?t:[...it[0].colors]}function Ui(e){if(!nu(e))return null;let t=Number(e.num_cols);if(!Number.isInteger(t)||t<1||t>Ie||e.num_rows!==t||typeof e.id!=="string"||typeof e.filename!=="string"||typeof e.created_at!=="string"||typeof e.updated_at!=="string")return null;let r=tu(e.grid,t);if(!r)return null;let n=Yg(e.artboards),s=JSON.stringify(e.grid),i=n.findIndex((o)=>JSON.stringify(o.grid)===s);if(i<0)i=n.findIndex((o)=>{let a=tu(o.grid,t);return a?iu(a,r):!1});return{id:e.id,filename:e.filename||"Untitled",size:t,grid:r,palette:Qg(e.palette),paletteSaturation:nt(e.palette_saturation),paletteLightness:nt(e.palette_lightness),artboards:n,activeArtboard:i<0?0:i,createdAt:e.created_at,updatedAt:e.updated_at}}function su(e){return Zt(e.grid,e.paletteSaturation,e.paletteLightness)}function ou(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 Jg(e,t,r=new Date().toISOString()){if(t.grid.length!==e.size||!t.grid.every((i)=>i.length===e.size))throw Error("Artwork dimensions changed");let n=_r(t.grid),s=e.artboards.map((i)=>({...i}));if(s.length===0)s.push({id:0,name:"Frame 1",grid:n});else{let i=Math.min(e.activeArtboard,s.length-1);s[i]={...s[i],grid:n}}return{grid:n,artboards:s,updated_at:r}}function $g(e,t,r=new Date().toISOString()){let n=e.grid.length;if(n<1||n>Ie||!e.grid.every((o)=>o.length===n))throw Error("Artwork grid is invalid");let s=e.palette.filter(dt).slice(0,ru);if(s.length===0)throw Error("Artwork palette is invalid");let i=_r(e.grid);return{user_id:t,filename:e.filename||"untitled",num_cols:n,num_rows:n,grid:i,palette:s,artboards:[{id:0,name:"Frame 1",grid:i}],updated_at:r}}class ho{client;userId;afterSignOut;username;maxCanvasSize;constructor(e,t,r,n=32,s){this.client=e,this.userId=t,this.username=r,this.maxCanvasSize=n,this.afterSignOut=s}async listArtworks(){let{data:e,error:t}=await this.client.from("pixel_art").select(Gi).eq("user_id",this.userId).order("created_at",{ascending:!1});if(t)throw Error(t.message);return(e??[]).flatMap((r)=>{let n=Ui(r);return n?[n]:[]})}async createArtwork(e){let t=$g(e,this.userId),{data:r,error:n}=await this.client.from("pixel_art").insert(t).select(Gi).single();if(n)throw Error(n.message);let s=Ui(r);if(!s)throw Error("Supabase returned an invalid artwork");return s}async saveArtwork(e,t){let r=await this.trySaveArtwork(e,t);if(r)return r;let n=await this.fetchArtwork(e.id);if(!n||!iu(e.grid,n.grid))throw Error("This artwork changed in the web app. Return and refresh before saving.");let s=await this.trySaveArtwork(n,t);if(s)return s;throw Error("This artwork changed again while saving. Return and refresh before trying again.")}async trySaveArtwork(e,t){let r=Jg(e,t),{data:n,error:s}=await this.client.from("pixel_art").update(r).eq("id",e.id).eq("user_id",this.userId).eq("updated_at",e.updatedAt).select(Gi).maybeSingle();if(s)throw Error(s.message);if(!n)return null;let i=Ui(n);if(!i)throw Error("Supabase returned an invalid artwork");return i}async fetchArtwork(e){let{data:t,error:r}=await this.client.from("pixel_art").select(Gi).eq("id",e).eq("user_id",this.userId).maybeSingle();if(r)throw Error(r.message);return t?Ui(t):null}async signOut(){let{error:e}=await this.client.auth.signOut();if(e)throw Error(e.message);await this.afterSignOut?.()}}import{NativeImage as Zg,Renderable as Xg,RGBA as Vg}from"@opentui/core";var Fn=Vg.fromInts(14,16,24),ji=new Map,zg=256;function qg(e,t,r,n){let s=`${e}|${t}|${r}|${n}`,i=ji.get(s);if(i)return i;if(ji.size>=zg)ji.clear();let o=em(e,t,r,n);return ji.set(s,o),o}function em(e,t,r,n){let s=t*2,i=Math.max(1,Math.min(r,e,s)),o=Math.max(1,Math.floor(e/i)),a=Math.max(1,Math.floor(s/i)),l=1,c=1,u=0,d=Number.POSITIVE_INFINITY;for(let A=1;A<=o;A++)for(let m=1;m<=a;m++){let g=m*n/2,f=Math.min(A,g),p=Math.abs(Math.log(g/A));if(f>u||f===u&&p<d)l=A,c=m,u=f,d=p}return{sampleCount:i,columnScale:l,subrowScale:c,columns:i*l,subrows:i*c}}function tm(e,t,r,n,s){let i=Math.max(1,Math.round(Math.min(e*n,t*s))),o=Math.max(1,Math.min(r,i)),a=Math.min(e,Math.ceil(i/n));return{sampleCount:o,side:i,columns:a,rows:Math.min(t,Math.ceil(i/s)),pixelWidth:Math.max(i,Math.round(a*n))}}class Ao extends Xg{currentGrid=[];textFrame=null;artworkImage=null;artworkImageCache=null;constructor(e,t){super(e,{...t,buffered:!0});if(t.grid)this.currentGrid=t.grid}set grid(e){let t=e??[];if(t===this.currentGrid)return;this.currentGrid=t,this.requestRender()}renderSelf(e){let t=this.currentGrid.length,r=Ut(this._ctx);if(r&&ei(this._ctx)){if(this.textFrame=null,e.clear(Fn),t===0||this.width<=0||this.height<=0)return;this.drawArtworkImage(e,t,r.width,r.height);return}let n=qn(this._ctx),s=this.textFrame;if(s&&s.grid===this.currentGrid&&s.width===this.width&&s.height===this.height&&s.cellAspect===n)return;if(this.textFrame={grid:this.currentGrid,width:this.width,height:this.height,cellAspect:n},e.clear(Fn),t===0||this.width<=0||this.height<=0)return;this.releaseArtworkImage();let i=this.height*2,o=qg(this.width,this.height,t,n),{columns:a,subrows:l}=o,c=Math.floor((this.width-a)/2),u=Math.floor((i-l)/2),d=this.currentGrid,{columnScale:A,subrowScale:m,sampleCount:g}=o,f=(p)=>{let v=p-u;if(v<0||v>=l)return-1;let y=Math.floor(v/m);return Math.min(t-1,Math.floor(y*t/g))};for(let p=0;p<this.height;p++){let v=f(p*2),y=f(p*2+1);for(let S=0;S<a;S++){let _=Math.floor(S/A),b=Math.min(t-1,Math.floor(_*t/g)),w=v<0?Fn:jt(d[v]?.[b],b,v),C=y<0?Fn:jt(d[y]?.[b],b,y);e.setCell(c+S,p,"\u2580",w,C)}}}drawArtworkImage(e,t,r,n){let s=tm(this.width,this.height,t,r,n),i=this.artworkImageCache;if(!(this.artworkImage&&i&&i.grid===this.currentGrid&&i.sampleCount===s.sampleCount&&i.side===s.side&&i.pixelWidth===s.pixelWidth)){let a=new Uint8Array(s.sampleCount**2*4);for(let A=0;A<s.sampleCount;A++){let m=Math.min(t-1,Math.floor(A*t/s.sampleCount));for(let g=0;g<s.sampleCount;g++){let f=Math.min(t-1,Math.floor(g*t/s.sampleCount)),[p,v,y]=jt(this.currentGrid[m]?.[f],f,m).toInts(),S=(A*s.sampleCount+g)*4;a[S]=p,a[S+1]=v,a[S+2]=y,a[S+3]=255}}let l=Zg.fromRgba(a,s.sampleCount,s.sampleCount),c=l.resize({width:s.side,height:s.side,kernel:"nearest"});l.dispose();let u=s.pixelWidth-s.side,d=u>0?c.extend({left:u,background:Fn.toInts()}):c;if(d!==c)c.dispose();this.releaseArtworkImage(),this.artworkImage=d,this.artworkImageCache={grid:this.currentGrid,sampleCount:s.sampleCount,side:s.side,pixelWidth:s.pixelWidth}}if(!this.artworkImage)return;e.drawImage(this.artworkImage,Math.floor((this.width-s.columns)/2),Math.floor((this.height-s.rows)/2),s.columns,s.rows,s.pixelWidth,s.side,0,0,s.pixelWidth,s.side,"auto")}releaseArtworkImage(){this.artworkImage?.dispose(),this.artworkImage=null,this.artworkImageCache=null}destroySelf(){this.releaseArtworkImage(),super.destroySelf()}}Nt({artwork_preview:Ao});var fo=[16,32,64],lu=74,au=2;function go(e,t){let r=hn(e),n=it[t];return r.palette=[...n.colors],r.activeColor=r.palette[0],r}function mo(e,t){let r=e.name.toLowerCase(),n=Number(r)-1;if(r==="escape")return{kind:"cancel"};if(Number.isInteger(n)&&fo[n])return{kind:"size",size:fo[n]};let s=er(r);if(s)return{kind:"palette",delta:s.dx+s.dy*t};if(qt(e))return{kind:"create"}}function rm(e,t){let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}function cu(e,t){if(e.length<=t)return e;return`${e.slice(0,Math.max(1,t-1))}\u2026`}function nm(e){return en(ms(e.palette,e.grid),e.paletteSaturation,e.paletteLightness)}function po(e,t){return Math.max(0,Math.min(it.length-1,e+t))}function Hi(e){return Math.max(1,Math.min(lu,e-4))>=64?2:1}function bo(e){let t=Y(()=>Math.max(1,Math.min(lu,e.width-4))),r=Y(()=>Math.max(1,Math.min(19,e.height-2))),n=Y(()=>Hi(e.width)),s=Y(()=>r()>=12?1:0),i=Y(()=>Math.max(1,r()-7-s()*2)),o=Y(()=>i()*n()),a=Y(()=>Math.floor(e.selectedPalette/o())*o()),l=Y(()=>{let m=a();return it.slice(m,m+o()).map((g,f)=>({palette:g,index:m+f}))}),c=Y(()=>rm(l(),n())),u=Y(()=>Math.max(1,Math.floor((t()-4-(n()-1))/n()))),d=Y(()=>Math.max(3,Math.min(10,u()-8))),A=Y(()=>Math.max(1,u()-d()-4));return(()=>{var m=I("box"),g=I("box"),f=I("box"),p=I("text"),v=I("box"),y=I("text"),S=we("Choose a palette | "),_=I("box"),b=I("box"),w=I("text");return R(m,g),h(m,"id","new-artwork-modal"),h(m,"position","absolute"),h(m,"zIndex",30),h(m,"border",!0),h(m,"title"," New artwork "),h(m,"flexDirection","column"),R(g,f),R(g,v),R(g,y),R(g,_),R(g,b),R(g,w),h(g,"flexGrow",1),h(g,"width","100%"),h(g,"padding",1),h(g,"flexDirection","column"),R(f,p),h(f,"height",1),h(f,"flexDirection","row"),h(f,"gap",1),R(p,we("Grid size")),F(f,Q(wt,{each:fo,children:(C,B)=>{let L=()=>C<=e.maxSize,P=()=>C===e.selectedSize;return(()=>{var x=I("box"),G=I("text"),z=we(" "),W=we("\xD7");return R(x,G),h(x,"height",1),h(x,"paddingX",1),h(x,"onMouseDown",()=>e.onSelectSize(C)),R(G,z),R(G,W),F(G,()=>B()+1,z),F(G,C,W),F(G,C,null),me((ee)=>{var te=P()?E.panelActive:E.panel,V=L()?P()?E.accentText:E.muted:E.border;return te!==ee.e&&(ee.e=h(x,"backgroundColor",te,ee.e)),V!==ee.t&&(ee.t=h(G,"fg",V,ee.t)),ee},{e:void 0,t:void 0}),x})()}}),null),R(y,S),F(y,()=>it[e.selectedPalette].name,null),F(g,Q(wt,{get each(){return c()},children:(C)=>(()=>{var B=I("box");return h(B,"height",1),h(B,"flexDirection","row"),h(B,"gap",1),F(B,Q(wt,{each:C,children:(L)=>{let P=()=>L.index===e.selectedPalette;return(()=>{var x=I("box"),G=I("text"),z=I("box");return R(x,G),R(x,z),h(x,"height",1),h(x,"paddingX",1),h(x,"flexDirection","row"),h(x,"justifyContent","space-between"),h(x,"onMouseDown",()=>e.onSelectPalette(L.index)),F(G,()=>cu(L.palette.name,A())),h(z,"height",1),h(z,"flexDirection","row"),F(z,Q(wt,{get each(){return L.palette.colors.slice(0,d())},children:(W)=>(()=>{var ee=I("text");return R(ee,we("\u25A0")),me((te)=>h(ee,"fg",je(W),te)),ee})()})),me((W)=>{var ee=u(),te=P()?E.panelActive:E.panel,V=P()?E.text:E.muted;return ee!==W.e&&(W.e=h(x,"width",ee,W.e)),te!==W.t&&(W.t=h(x,"backgroundColor",te,W.t)),V!==W.a&&(W.a=h(G,"fg",V,W.a)),W},{e:void 0,t:void 0,a:void 0}),x})()}})),B})()}),_),h(b,"flexGrow",1),F(w,()=>e.message||"1\u20133 size \xB7 arrows palette \xB7 Enter create \xB7 Esc cancel"),me((C)=>{var B=Math.max(0,Math.floor((e.width-t())/2)),L=Math.max(0,Math.floor((e.height-r())/2)),P=t(),x=r(),G=E.border,z=E.accent,W=E.panel,ee=E.textPink,te=s(),V=E.textPink,Te=s(),Be=e.message?E.warning:E.textPink;return B!==C.e&&(C.e=h(m,"left",B,C.e)),L!==C.t&&(C.t=h(m,"top",L,C.t)),P!==C.a&&(C.a=h(m,"width",P,C.a)),x!==C.o&&(C.o=h(m,"height",x,C.o)),G!==C.i&&(C.i=h(m,"borderColor",G,C.i)),z!==C.n&&(C.n=h(m,"titleColor",z,C.n)),W!==C.s&&(C.s=h(g,"backgroundColor",W,C.s)),ee!==C.h&&(C.h=h(p,"fg",ee,C.h)),te!==C.r&&(C.r=h(v,"height",te,C.r)),V!==C.d&&(C.d=h(y,"fg",V,C.d)),Te!==C.l&&(C.l=h(_,"height",Te,C.l)),Be!==C.u&&(C.u=h(w,"fg",Be,C.u)),C},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0}),m})()}function im(e){let t=Y(()=>su(e.artwork)),r=Y(()=>nm(e.artwork)),n=()=>e.selected()===e.index,s=()=>e.cardWidth-2;return(()=>{var i=I("box"),o=I("box"),a=I("box"),l=I("artwork_preview"),c=I("box"),u=I("text"),d=I("text"),A=I("text"),m=I("box"),g=I("box");return R(i,o),R(i,d),R(i,A),R(i,m),R(i,g),h(i,"flexDirection","column"),R(o,a),h(o,"width","100%"),h(o,"height","100%"),h(o,"border",!0),h(o,"borderColor","transparent"),h(o,"flexDirection","column"),R(a,l),R(a,c),R(a,u),h(a,"flexGrow",1),h(a,"width","100%"),h(a,"flexDirection","column"),h(a,"paddingX",1),h(l,"flexGrow",1),h(l,"width","100%"),h(c,"height",1),h(c,"width","100%"),h(c,"flexDirection","row"),h(c,"gap",1),h(c,"overflow","hidden"),F(c,Q(wt,{get each(){return r()},children:(f)=>Q(fn,{get color(){return je(f)},get background(){return E.panel},width:1,shape:"circle"})})),F(u,()=>cu(e.artwork.filename,e.cardWidth-3)),h(d,"position","absolute"),h(d,"left",1),h(d,"top",0),h(d,"height",1),h(d,"zIndex",1),F(d,()=>"\u2580".repeat(s())),h(A,"position","absolute"),h(A,"left",1),h(A,"height",1),h(A,"zIndex",1),F(A,()=>"\u2584".repeat(s())),h(m,"position","absolute"),h(m,"left",0),h(m,"top",0),h(m,"width",1),h(m,"height","100%"),h(m,"zIndex",2),h(g,"position","absolute"),h(g,"top",0),h(g,"width",1),h(g,"height","100%"),h(g,"zIndex",2),me((f)=>{var p=`artwork-card-${e.artwork.id}`,v=e.cardWidth,y=e.cardHeight,S=E.card,_=e.onSelect,b=E.card,w=E.panel,C=`artwork-preview-${e.artwork.id}`,B=t(),L=E.textPink,P=`artwork-card-selection-top-${e.artwork.id}`,x=s(),G=n()?E.orangeActive:E.card,z=E.panel,W=`artwork-card-selection-bottom-${e.artwork.id}`,ee=e.cardHeight-1,te=s(),V=n()?E.orangeActive:E.card,Te=E.panel,Be=`artwork-card-selection-side-${e.artwork.id}`,Z=n()?E.orangeActive:E.card,H=e.cardWidth-1,Re=n()?E.orangeActive:E.card;return p!==f.e&&(f.e=h(i,"id",p,f.e)),v!==f.t&&(f.t=h(i,"width",v,f.t)),y!==f.a&&(f.a=h(i,"height",y,f.a)),S!==f.o&&(f.o=h(i,"backgroundColor",S,f.o)),_!==f.i&&(f.i=h(i,"onMouseDown",_,f.i)),b!==f.n&&(f.n=h(o,"backgroundColor",b,f.n)),w!==f.s&&(f.s=h(a,"backgroundColor",w,f.s)),C!==f.h&&(f.h=h(l,"id",C,f.h)),B!==f.r&&(f.r=h(l,"grid",B,f.r)),L!==f.d&&(f.d=h(u,"fg",L,f.d)),P!==f.l&&(f.l=h(d,"id",P,f.l)),x!==f.u&&(f.u=h(d,"width",x,f.u)),G!==f.c&&(f.c=h(d,"fg",G,f.c)),z!==f.w&&(f.w=h(d,"bg",z,f.w)),W!==f.m&&(f.m=h(A,"id",W,f.m)),ee!==f.f&&(f.f=h(A,"top",ee,f.f)),te!==f.y&&(f.y=h(A,"width",te,f.y)),V!==f.g&&(f.g=h(A,"fg",V,f.g)),Te!==f.p&&(f.p=h(A,"bg",Te,f.p)),Be!==f.b&&(f.b=h(m,"id",Be,f.b)),Z!==f.T&&(f.T=h(m,"backgroundColor",Z,f.T)),H!==f.A&&(f.A=h(g,"left",H,f.A)),Re!==f.O&&(f.O=h(g,"backgroundColor",Re,f.O)),f},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0,A:void 0,O:void 0}),i})()}function yo(e){let t=ft(),r=gr(),[n,s]=J([]),[i,o]=J(0),[a,l]=J(!0),[c,u]=J("Loading saved artworks\u2026"),[d,A]=J(null),[m,g]=J(!1),[f,p]=J(16),[v,y]=J(0),[S,_]=J(""),b=Y(()=>{let D=Math.max(8,r().width-2);return Math.min(28,D,Math.max(12,Math.floor(D/3)))}),w=Y(()=>{let D=r().height<18?7:r().height<25?9:12;return Math.max(4,Math.min(D,r().height-6))}),C=Y(()=>Math.max(1,Math.floor((r().width-2)/(b()+au)))),B=Y(()=>C()*b()+Math.max(0,C()-1)*au),L=Y(()=>Math.max(1,Math.floor((r().height-5)/(w()+1)))),P=Y(()=>C()*L()),x=Y(()=>Math.floor(i()/P())),G=Y(()=>x()*P()),z=Y(()=>{let D=G();return n().slice(D,D+P())});Kn(()=>{let D=Math.max(0,n().length-1);if(i()>D)o(D)});let W=async()=>{l(!0),u("Loading saved artworks\u2026");try{let D=await e.repository.listArtworks();s(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)}};$t(()=>void W());let ee=(D,q)=>{let ie=n().length;if(ie===0)return;let ae=Math.max(0,Math.min(ie-1,i()+D+q*C()));o(ae),u(n()[ae].filename)},te=()=>{let D=n()[i()];if(!D)return;A({artwork:D,session:new Dt(ou(D))})},V=()=>{p(16),y(0),_(""),g(!0),u("Choose a size and palette")},Te=()=>{g(!1),_(""),u("New artwork cancelled")},Be=(D)=>{if(D>e.repository.maxCanvasSize){_(`${D}\xD7${D} is unavailable on this plan`);return}p(D),_("")},Z=(D)=>{y((q)=>po(q,D)),_("")},H=()=>{g(!1),A({artwork:null,session:new Dt(go(f(),v()))})},Re=async(D)=>{let q=d();if(!q)throw Error("No artwork is open");let ie=q.artwork?await e.repository.saveArtwork(q.artwork,D):await e.repository.createArtwork(D);if(s((ae)=>ae.some((Ae)=>Ae.id===ie.id)?ae.map((Ae)=>Ae.id===ie.id?ie:Ae):[ie,...ae]),!q.artwork)o(0);return A((ae)=>ae===q?{...ae,artwork:ie}:ae),e.variant==="local"?"Saved locally":"Saved to Flatblox cloud"},pe=async()=>{u("Signing out\u2026");try{await e.repository.signOut(),t.destroy()}catch(D){u(`Sign out failed: ${D instanceof Error?D.message:String(D)}`)}};return mr((D)=>{if(D.eventType==="release"||d())return;let q=D.name.toLowerCase();if(m()){let ae=mo(D,Hi(r().width));if(ae?.kind==="cancel")Te();else if(ae?.kind==="size")Be(ae.size);else if(ae?.kind==="palette")Z(ae.delta);else if(ae?.kind==="create")H();return}let ie=er(q);if(D.ctrl&&q==="c")t.destroy();else if(q==="escape"&&e.onBack)e.onBack();else if(q==="q"||q==="escape")t.destroy();else if(ie)ee(ie.dx,ie.dy);else if(q==="n")V();else if(qt(D))te();else if(q==="r")W();else if(q==="o"&&e.variant!=="local")pe()}),Q(Le,{get when(){return d()},get fallback(){return(()=>{var D=I("box"),q=I("box"),ie=I("box"),ae=I("text"),ze=I("b"),Ae=I("box"),ve=I("box"),et=I("text"),Qe=I("box"),Je=I("box"),re=I("text"),kt=I("text");return R(D,q),R(D,Qe),R(D,Je),h(D,"width","100%"),h(D,"height","100%"),h(D,"flexDirection","column"),R(q,ie),R(q,Ae),R(q,ve),h(q,"height",3),h(q,"paddingY",1),h(q,"paddingX",1),h(q,"flexDirection","row"),R(ie,ae),h(ie,"height",1),h(ie,"flexBasis",0),h(ie,"flexGrow",1),h(ie,"flexDirection","row"),R(ae,ze),F(ze,ii),h(Ae,"height",1),h(Ae,"flexBasis",0),h(Ae,"flexGrow",1),h(Ae,"flexDirection","row"),h(Ae,"justifyContent","center"),F(Ae,Q(Sr,{id:"dashboard-wordmark",width:14,height:1,get backgroundColor(){return E.panel},get foregroundColor(){return E.accent}})),R(ve,et),h(ve,"height",1),h(ve,"flexBasis",0),h(ve,"flexGrow",1),h(ve,"flexDirection","row"),h(ve,"justifyContent","flex-end"),F(et,()=>e.repository.username),h(Qe,"id","dashboard-content"),h(Qe,"flexGrow",1),h(Qe,"flexDirection","column"),h(Qe,"justifyContent","center"),h(Qe,"padding",1),F(Qe,Q(Le,{get when(){return ut(()=>!a())()&&n().length>0},get fallback(){return(()=>{var k=I("box"),j=I("text");return R(k,j),h(k,"flexGrow",1),h(k,"alignItems","center"),h(k,"justifyContent","center"),F(j,c),me((T)=>h(j,"fg",E.muted,T)),k})()},get children(){var k=I("box");return h(k,"id","artwork-grid"),h(k,"alignSelf","center"),h(k,"flexDirection","row"),h(k,"flexWrap","wrap"),h(k,"rowGap",1),h(k,"columnGap",2),F(k,Q(wt,{get each(){return z()},children:(j,T)=>Q(im,{artwork:j,get index(){return G()+T()},selected:i,get cardWidth(){return b()},get cardHeight(){return w()},onSelect:()=>o(G()+T())})})),me((j)=>h(k,"width",B(),j)),k}})),R(Je,re),R(Je,kt),h(Je,"height",1),h(Je,"paddingX",1),h(Je,"flexDirection","row"),h(Je,"justifyContent","space-between"),F(re,c),F(kt,()=>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"),F(D,Q(Le,{get when(){return m()},get children(){return Q(bo,{get width(){return r().width},get height(){return r().height},get selectedPalette(){return v()},get selectedSize(){return f()},get maxSize(){return e.repository.maxCanvasSize},get message(){return S()},onSelectPalette:(k)=>{y(k),_("")},onSelectSize:Be})}}),null),me((k)=>{var j=E.background,T=E.panel,O=E.accentText,se=E.muted,de=E.panel,ge=E.panelActive,Ce=c().startsWith("Load failed")?E.warning:E.textPink,Oe=E.muted;return j!==k.e&&(k.e=h(D,"backgroundColor",j,k.e)),T!==k.t&&(k.t=h(q,"backgroundColor",T,k.t)),O!==k.a&&(k.a=h(ae,"fg",O,k.a)),se!==k.o&&(k.o=h(et,"fg",se,k.o)),de!==k.i&&(k.i=h(Qe,"backgroundColor",de,k.i)),ge!==k.n&&(k.n=h(Je,"backgroundColor",ge,k.n)),Ce!==k.s&&(k.s=h(re,"fg",Ce,k.s)),Oe!==k.h&&(k.h=h(kt,"fg",Oe,k.h)),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}),D})()},children:(D)=>Q(xr,{get session(){return D().session},saveDocument:Re,get promptForFilenameOnSave(){return!D().artwork},onBack:()=>{A(null),u("Returned from editor")}})})}import{readdir as sm,readFile as om,stat as uu,writeFile as am}from"fs/promises";import{basename as lm,join as du,resolve as cm}from"path";function hu(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 um(e){return e.replace(/[\\/]/g,"-").replace(/^\.+$/,"")||"untitled"}function dm(e){return typeof e==="object"&&e!==null&&"code"in e&&typeof e.code==="string"&&e.code!=="ENOENT"}function hm(e=process.env,t=process.cwd()){return e.INIT_CWD||e.PWD||t}class wo{username;maxCanvasSize=64;directory;constructor(e=hm()){this.directory=cm(e),this.username=lm(this.directory)||"Local"}async listArtworks(){let e=await sm(this.directory,{withFileTypes:!0});return(await Promise.all(e.map(async(r)=>{if(!r.isFile()||!r.name.endsWith(".flatblox.json"))return null;let n=du(this.directory,r.name);try{let s=cn(await om(n,"utf8")),i=await uu(n),o=i.birthtimeMs>0?i.birthtime:i.mtime;return hu(n,s,o,i.mtime)}catch(s){if(dm(s))throw s;return null}}))).filter((r)=>r!==null).sort((r,n)=>n.createdAt.localeCompare(r.createdAt))}async createArtwork(e){let t=du(this.directory,`${um(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 am(e,un(t));let r=await uu(e),n=r.birthtimeMs>0?r.birthtime:r.mtime;return hu(e,t,n,r.mtime)}}function Au(e){let t=ft(),r=gr(),[n,s]=J(0),[i,o]=J(!1),[a,l]=J(16),[c,u]=J(0),[d,A]=J(null),[m,g]=J(null),[f,p]=J(!1),v=e.cloudRepository,[y,S]=J(v instanceof Promise?null:v??null);if(v instanceof Promise)v.then(S,(Z)=>L(Z instanceof Error?Z.message:String(Z)));let[_,b]=J(!1),[w,C]=J(!1),[B,L]=J(""),[P,x]=J(""),G=null,z=e.localRepository??new wo,W=()=>{l(16),u(0),o(!0)},ee=()=>{o(!1),g(null),A(new Dt(go(a(),c())))},te=(Z)=>{u((H)=>po(H,Z))},V=async()=>{if(w())return;let Z=new AbortController;G=Z,C(!0),L(""),x("");try{let H=await e.onSignIn(Z.signal,x);if(!Z.signal.aborted)S(H),b(!0)}catch(H){if(!Z.signal.aborted)L(H instanceof Error?H.message:String(H))}finally{if(G===Z)G=null;C(!1)}},Te=(Z)=>{s((H)=>Math.max(0,Math.min(2,H+Z)))},Be=()=>{if(y())b(!0);else V()};return mr((Z)=>{if(Z.eventType==="release"||d()||f()||_())return;let H=Z.name.toLowerCase();if(w()){if(H==="escape"||H==="q"||Z.ctrl&&H==="c")G?.abort();return}if(i()){let pe=mo(Z,Hi(r().width));if(pe?.kind==="cancel")o(!1);else if(pe?.kind==="size")l(pe.size);else if(pe?.kind==="palette")te(pe.delta);else if(pe?.kind==="create")ee();return}let Re=er(H);if(Z.ctrl&&H==="c")t.destroy();else if(H==="q"||H==="escape")t.destroy();else if(Re?.dy)Te(Re.dy);else if(H==="n")W();else if(H==="l")p(!0);else if(H==="s"||H==="d")Be();else if(qt(Z))if(n()===0)W();else if(n()===1)p(!0);else Be()}),Q(Le,{get when(){return ut(()=>!!_())()?y():null},get fallback(){return Q(Le,{get when(){return d()},get fallback(){return Q(Le,{get when(){return f()},get fallback(){return(()=>{var Z=I("box"),H=I("box"),Re=I("box"),pe=I("box"),D=I("box"),q=I("text"),ie=I("box"),ae=I("box"),ze=I("text"),Ae=I("box"),ve=I("box"),et=I("text"),Qe=I("box"),Je=I("text");return R(Z,H),h(Z,"width","100%"),h(Z,"height","100%"),h(Z,"alignItems","center"),h(Z,"justifyContent","center"),R(H,Re),R(H,pe),R(H,ie),R(H,Ae),R(H,Qe),R(H,Je),h(H,"flexDirection","column"),h(H,"alignItems","center"),F(H,Q(Sr,{id:"welcome-wordmark",width:32,height:2,get backgroundColor(){return E.background},get foregroundColor(){return E.accent}}),Re),h(Re,"height",3),R(pe,D),h(pe,"id","welcome-new-artwork"),h(pe,"width",36),h(pe,"height",3),h(pe,"border",!0),h(pe,"onMouseDown",()=>{s(0),W()}),R(D,q),h(D,"width","100%"),h(D,"height","100%"),h(D,"alignItems","center"),h(D,"justifyContent","center"),R(q,we("New artwork")),h(q,"id","welcome-new-artwork-label"),R(ie,ae),h(ie,"id","welcome-load-artwork"),h(ie,"width",36),h(ie,"height",3),h(ie,"border",!0),h(ie,"onMouseDown",()=>{s(1),p(!0)}),R(ae,ze),h(ae,"width","100%"),h(ae,"height","100%"),h(ae,"alignItems","center"),h(ae,"justifyContent","center"),R(ze,we("Load artwork")),h(ze,"id","welcome-load-artwork-label"),R(Ae,ve),h(Ae,"id","welcome-sign-in"),h(Ae,"width",36),h(Ae,"height",3),h(Ae,"border",!0),h(Ae,"onMouseDown",()=>{s(2),Be()}),R(ve,et),h(ve,"width","100%"),h(ve,"height","100%"),h(ve,"alignItems","center"),h(ve,"justifyContent","center"),h(et,"id","welcome-sign-in-label"),F(et,()=>y()?"Dashboard":"Sign in"),h(Qe,"height",2),F(Je,(()=>{var re=ut(()=>!!w());return()=>re()?ut(()=>!!P())()?`Open this URL: ${P()} \xB7 Esc cancel`:"Complete sign-in in your browser \xB7 Esc cancel":B()||"\u2191/\u2193 select \xB7 Enter open \xB7 Q quit"})()),F(Z,Q(Le,{get when(){return i()},get children(){return Q(bo,{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),me((re)=>{var kt=E.background,k=P()?Math.max(36,r().width-4):36,j=n()===0?E.accent:E.border,T=n()===0?E.textPink:E.text,O=n()===1?E.accent:E.border,se=n()===1?E.textPink:E.text,de=n()===2?E.accent:E.border,ge=n()===2?E.textPink:E.text,Ce=B()?E.warning:E.muted;return kt!==re.e&&(re.e=h(Z,"backgroundColor",kt,re.e)),k!==re.t&&(re.t=h(H,"width",k,re.t)),j!==re.a&&(re.a=h(pe,"borderColor",j,re.a)),T!==re.o&&(re.o=h(q,"fg",T,re.o)),O!==re.i&&(re.i=h(ie,"borderColor",O,re.i)),se!==re.n&&(re.n=h(ze,"fg",se,re.n)),de!==re.s&&(re.s=h(Ae,"borderColor",de,re.s)),ge!==re.h&&(re.h=h(et,"fg",ge,re.h)),Ce!==re.r&&(re.r=h(Je,"fg",Ce,re.r)),re},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0}),Z})()},get children(){return Q(yo,{repository:z,variant:"local",onBack:()=>p(!1)})}})},children:(Z)=>Q(xr,{get session(){return Z()},saveDocument:async(H)=>{let Re=m(),pe=Re?await z.saveArtwork(Re,H):await z.createArtwork(H);return g(pe),"Saved locally"},get promptForFilenameOnSave(){return!m()},onBack:()=>{g(null),A(null)}})})},children:(Z)=>Q(yo,{get repository(){return Z()}})})}var fu={backgroundColor:E.background,debounceDelay:1,exitOnCtrlC:!1,targetFps:60,useKittyKeyboard:{events:!0,allKeysAsEscapes:!0}};async function Am(e){let t=Qc(),r=Jc(t),n=await $c(r,t.authFile);if(e){if(n)await r.auth.signOut();await dr(t.authFile),process.stdout.write(`Signed out of Flatblox TUI.
|
|
94
|
+
`);return}let s,i=async(o)=>{if(!s){let{data:d}=r.auth.onAuthStateChange((A,m)=>{if(m)Fi(t.authFile,m);else dr(t.authFile)});s=()=>d.subscription.unsubscribe(),r.auth.startAutoRefresh()}let{data:a,error:l}=await r.auth.getUser(o);if(l||!a.user)throw await dr(t.authFile),Error(l?.message??"Could not verify the Supabase session");let{data:c,error:u}=await r.from("profiles").select("username, tier").eq("id",a.user.id).maybeSingle();if(u)throw await dr(t.authFile),Error(u.message);return new ho(r,a.user.id,c?.username?.trim()||"Flatblox account",oa[c?.tier??"tier0"],()=>dr(t.authFile))};try{let o=n?i(n.access_token):void 0;await hs(()=>Q(Au,{cloudRepository:o,onSignIn:async(a,l)=>{let c=await Zc({dashboardUrl:t.dashboardUrl,announce:l,signal:a}),u=await Xc(r,c);return await Fi(t.authFile,u),i(u.access_token)}}),fu)}finally{if(s)s(),await r.auth.stopAutoRefresh()}}async function fm(e){let t=await eu(e);await hs(()=>Q(xr,{get session(){return t.session},get filePath(){return t.filePath}}),fu)}async function gm(){try{let e=qc(Bun.argv.slice(2));if(e.help){process.stdout.write(`${uo}
|
|
95
|
+
`);return}if(e.mode==="cloud")await Am(e.logout);else await fm(e)}catch(e){let t=e instanceof Error?e.message:String(e);process.stderr.write(`flatblox-tui: ${t}
|
|
96
96
|
|
|
97
|
-
${
|
|
98
|
-
`),process.exitCode=1}}await
|
|
97
|
+
${uo}
|
|
98
|
+
`),process.exitCode=1}}await gm();
|