Made with ❤️ by Daw588.
- Available on
GitHub
+const container=document.createElement("div"),toggleBtn=(container.id="app",document.body.appendChild(container),document.createElement("div")),style=(toggleBtn.id="app-toggle",toggleBtn.textContent="Vanita",document.body.appendChild(toggleBtn),document.createElement("style"));style.textContent='@import"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200";.page.a2.a2{display:flex;flex-direction:column;gap:8px;padding:8px}.page.a2 .link.a2{color:#5e7af7}.page.a2 .link.a2:hover{text-decoration:underline}svg.a1{stroke:currentColor;fill:currentColor;stroke-width:0;width:100%;height:auto;max-height:100%}.info.a3.a3{padding:8px 8px 0;font-size:.9rem}.controls.a3.a3{display:flex;flex-direction:row;gap:8px;padding:8px}.controls.a3 .textfield.a3{padding:8px;background-color:#111212;color:#bdbebe;border:1px solid #414142;border-radius:8px;outline:none;font-size:1rem}.controls.a3 .textfield.a3:focus{border-color:#bdbebe}.controls.a3 .textfield.a3::placeholder{color:#919191}.controls.a3 .button.a3{padding:6px 12px;background-color:transparent;color:#bdbebe;border:1px solid #bdbebe;border-radius:8px;font-size:1rem}.controls.a3 .button.a3:hover{border-color:#e4e4e4;color:#e4e4e4}.outfits.a3.a3{overflow-y:auto;padding:8px;display:flex;flex-direction:row;flex-wrap:wrap;align-items:flex-start;flex-grow:1;gap:8px}.outfits.a3 .outfit.a3{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px}.outfits.a3 .outfit .preview.a3{position:relative}.outfits.a3 .outfit .preview .icon.a3{width:126px;height:126px;background-color:#2f3133;border-radius:8px;cursor:pointer;transition:background .3s linear}.outfits.a3 .outfit .preview .icon.a3:hover{background:radial-gradient(transparent,rgba(0,0,0,.2))}.outfits.a3 .outfit .preview .options.a3{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:5px;background-color:#000000bf;border-radius:8px}.outfits.a3 .outfit .preview .options .option.a3{padding:3px;border:1px solid transparent;border-radius:8px;width:100%;font-size:.8rem;cursor:pointer}.outfits.a3 .outfit .preview .options .option.a3:hover{border-color:#fff}.outfits.a3 .outfit .caption.a3{display:flex;flex-direction:row;align-items:center;gap:5px;width:100%}.outfits.a3 .outfit .caption .name.a3{font-size:1rem;flex-grow:1}.outfits.a3 .outfit .caption .edit.a3{width:18px;height:18px;color:#fff;cursor:pointer}.header.a0.a0{display:flex;flex-direction:row;align-items:center;background-color:#191b1d;border-bottom:1px solid #111214;border-top-left-radius:5px;border-top-right-radius:5px;font-size:1rem}.header.a0 .icon.a0{width:24px;height:24px;margin-left:6px;user-select:none}.header.a0 .title.a0{padding:8px}.header.a0 .drag.a0{padding:8px;flex-grow:1;height:100%}.header.a0 .close.a0{width:24px;height:24px;margin-right:6px;cursor:pointer}.header.a0 .close.a0,.header.a0 .close .a0{color:#fff}.tabs.a0.a0{display:flex;flex-direction:row;align-items:center;background-color:#393b3d}.tabs.a0 .tab.a0{text-align:center;padding:6px 12px;font-size:1rem;cursor:pointer}.tabs.a0 .tab.a0:hover{background-color:#5e6165}#app *{box-sizing:border-box;font-family:HCo Gotham SSm,Helvetica Neue,Helvetica,Arial,Lucida Grande,"sans-serif"}#app{position:fixed;top:0;left:0;z-index:9999;display:flex;flex-direction:column;width:700px;height:500px;background:#232527;color:#fff;border:1px solid #111214;border-radius:5px}#app-toggle{position:fixed;top:100%;left:100px;transform:translateY(-100%);z-index:9999;padding:6px 8px;cursor:pointer;background:#232527;color:#fff;border:1px solid #111214;border-bottom:none;border-top-left-radius:8px;border-top-right-radius:8px}#app .material-symbols-outlined{font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 48}',document.head.appendChild(style);(()=>{var Mt=Object.defineProperty,St=(t,e,n)=>e in t?Mt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,L=(t,e,n)=>(St(t,"symbol"!=typeof e?e+"":e,n),n);function M(){}function z(t,e){for(const n in e)t[n]=e[n];return t}function $t(t){return t()}function pt(){return Object.create(null)}function S(t){t.forEach($t)}function Ct(t){return"function"==typeof t}function q(t,e){return t!=t?e==e:t!==e||t&&"object"==typeof t||"function"==typeof t}!function(){var t=document.createElement("link").relList;if(!(t&&t.supports&&t.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))a(e);new MutationObserver(t=>{for(const e of t)if("childList"===e.type)for(const n of e.addedNodes)"LINK"===n.tagName&&"modulepreload"===n.rel&&a(n)}).observe(document,{childList:!0,subtree:!0})}function a(t){var e,n;t.ep||(t.ep=!0,n={},(e=t).integrity&&(n.integrity=e.integrity),e.referrerpolicy&&(n.referrerPolicy=e.referrerpolicy),"use-credentials"===e.crossorigin?n.credentials="include":"anonymous"===e.crossorigin?n.credentials="omit":n.credentials="same-origin",fetch(t.href,n))}}();let ot;function ft(t,e){return(ot=ot||document.createElement("a")).href=e,t===ot.href}function Xt(t){return 0===Object.keys(t).length}function zt(t,e,n,a){if(t)return e=xt(t,e,n,a),t[0](e)}function xt(t,e,n,a){return t[1]&&a?z(n.ctx.slice(),t[1](a(e))):n.ctx}function Ft(t,e,n,a){if(t[2]&&a){var o=t[2](a(n));if(void 0===e.dirty)return o;if("object"!=typeof o)return e.dirty|o;var r=[],i=Math.max(e.dirty.length,o.length);for(let t=0;t
t.removeEventListener(e,n,a)}function m(t,e,n){null==n?t.removeAttribute(e):t.getAttribute(e)!==n&&t.setAttribute(e,n)}function Ht(t){return Array.from(t.childNodes)}function Lt(t,e){t.wholeText!==(e=""+e)&&(t.data=e)}function _t(t,e){t.value=e??""}let nt;function tt(t){nt=t}function qt(){if(nt)return nt;throw new Error("Function called outside component initialization")}function Et(t){qt().$$.on_mount.push(t)}const H=[],gt=[],st=[],yt=[],Wt=Promise.resolve();let dt=!1;function Jt(){dt||(dt=!0,Wt.then(Ut))}function mt(t){st.push(t)}const ut=new Set;let G=0;function Ut(){if(0===G){var t=nt;do{try{for(;G{rt.delete(t),a&&(n&&t.d(1),a())}),t.o(e)):a&&a()}function Nt(t,e){var n={},a={},o={$$scope:1};let r=t.length;for(;r--;){var i=t[r],s=e[r];if(s){for(const l in i)l in s||(a[l]=1);for(const c in s)o[c]||(n[c]=s[c],o[c]=1);t[r]=s}else for(const u in i)o[u]=1}for(const d in a)d in n||(n[d]=void 0);return n}function Tt(t){return"object"==typeof t&&null!==t?t:{}}function W(t){t&&t.c()}function F(e,t,n,a){var{fragment:o,after_update:r}=e.$$;o&&o.m(t,n),a||mt(()=>{var t=e.$$.on_mount.map($t).filter(Ct);e.$$.on_destroy?e.$$.on_destroy.push(...t):S(t),e.$$.on_mount=[]}),r.forEach(mt)}function V(t,e){t=t.$$;null!==t.fragment&&(S(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function Qt(t,e){-1===t.$$.dirty[0]&&(H.push(t),Jt(),t.$$.dirty.fill(0)),t.$$.dirty[e/31|0]|=1<{n=n.length?n[0]:e;return c.ctx&&o(c.ctx[t],c.ctx[t]=n)&&(!c.skip_bound&&c.bound[t]&&c.bound[t](n),u)&&Qt(a,t),e}):[],c.update(),u=!0,S(c.before_update),c.fragment=!!n&&n(c.ctx),t.target&&(t.hydrate?(r=Ht(t.target),c.fragment&&c.fragment.l(r),r.forEach(O)):c.fragment&&c.fragment.c(),t.intro&&N(a.$$.fragment),F(a,t.target,t.anchor,t.customElement),Ut()),tt(l)}class K{$destroy(){V(this,1),this.$destroy=M}$on(t,e){if(!Ct(e))return M;const n=this.$$.callbacks[t]||(this.$$.callbacks[t]=[]);return n.push(e),()=>{var t=n.indexOf(e);-1!==t&&n.splice(t,1)}}$set(t){this.$$set&&!Xt(t)&&(this.$$.skip_bound=!0,this.$$set(t),this.$$.skip_bound=!1)}}class Zt{constructor(t){L(this,"offX",0),L(this,"offY",0),L(this,"mouseX",0),L(this,"mouseY",0),L(this,"target"),L(this,"dragCompletedCallbacks",[]),this.target=t}drag(t){this.dragMouseDown(t)}dragMouseDown(t){t.preventDefault();const e=this;this.mouseX=t.clientX,this.mouseY=t.clientY,document.onmouseup=()=>e.closeDragElement(),document.onmousemove=t=>{e.elementDrag(t)}}elementDrag(t){t.preventDefault(),this.offX=this.mouseX-t.clientX,this.offY=this.mouseY-t.clientY,this.mouseX=t.clientX,this.mouseY=t.clientY,this.updateWindowPosition()}updateWindowPosition(){this.target.style.top=this.target.offsetTop-this.offY+"px",this.target.style.left=this.target.offsetLeft-this.offX+"px"}get targetX(){return parseFloat(this.target.style.left)}set targetX(t){this.target.style.left=t+"px"}get targetY(){return parseFloat(this.target.style.top)}set targetY(t){this.target.style.top=t+"px"}closeDragElement(){document.onmouseup=null,document.onmousemove=null,this.dragCompletedCallbacks.forEach(t=>t())}onDragCompleted(t){this.dragCompletedCallbacks.push(t)}}function te(t){let n;return{c(){(n=v("div")).innerHTML=`Made with ❤️ by Daw588.
+ Available on
GitHub
for free.
If you would like to support me,
- you can
donate
+ you can
donate
to keep me motivated! Donations go
towards improving this product by
- putting food on my table :D
`,b(n,"class","page a1")},m(t,e){S(t,n,e)},p:R,i:R,o:R,d(t){t&&U(n)}}}class te extends W{constructor(t){super(),K(this,t,null,Vt,J,{})}}async function Bt(){return(await fetch("https://avatar.roblox.com/v1/avatar/thumbnail-customization",{method:"POST",headers:new Headers({"Content-Type":"application/json"}),credentials:"include"})).headers.get("x-csrf-token")}async function Q(t,e){return fetch(t,{method:"POST",headers:new Headers({"Content-Type":"application/json","x-csrf-token":await Bt()}),credentials:"include",body:e?JSON.stringify(e):null})}async function G(t){return fetch(t,{method:"GET",headers:new Headers({"Content-Type":"application/json","x-csrf-token":await Bt()}),credentials:"include"})}class lt{constructor(){B(this,"id"),B(this,"name"),B(this,"displayName")}static async getCurrentUser(){var t=await(await G("https://users.roblox.com/v1/users/authenticated")).json(),e=new lt;return e.id=t.id,e.name=t.name,e.displayName=t.displayName,e}}class j{constructor(){B(this,"id"),B(this,"thumbnailUrl"),B(this,"data"),B(this,"menuOpen",!1)}async wear(){this.id||console.error("Cannot wear an outfit without an outfit id!"),await Q(`https://avatar.roblox.com/v1/outfits/${this.id}/wear`)}async update(){this.id||console.error("Cannot update outfit without an outfit id!"),this.data||console.error("Cannot update outfit without data!"),await Q(`https://avatar.roblox.com/v1/outfits/${this.id}/update`,this.data)}async create(){this.data||console.error("Cannot create an outfit without data!"),await Q("https://avatar.roblox.com/v1/outfits/create",this.data)}async delete(){this.id||console.error("Cannot delete outfit without an outfit id!"),await Q(`https://avatar.roblox.com/v1/outfits/${this.id}/delete`),this.data=null}static async getOutfitsList(t){t=await(await G(`https://avatar.roblox.com/v1/users/${t}/outfits?page=1&itemsPerPage=100&isEditable=true`)).json();return console.log(t),t.data}static async getOutfitByName(t,e){var t=await j.getOutfitsList(t),t=(console.log(t),t.find(t=>t.name===e)),n=new j;return n.id=t.id,n}static async getOutfit(t){var t=(await G(`https://avatar.roblox.com/v1/outfits/${t}/details`)).json(),e=new j;return e.id=t.id,e.data={assetIds:t.assets.map(t=>t.id),bodyColors:t.bodyColors,name:t.name,outfitType:t.outfitType,playerAvatarType:t.playerAvatarType,scale:t.scale},e}static async getOutfitFromAvatar(){var t=await(await G("https://avatar.roblox.com/v1/avatar")).json(),e=new j;return e.data={name:"TEMPLATE",bodyColors:t.bodyColors,assetIds:t.assets.map(t=>t.id),scale:t.scales,playerAvatarType:t.playerAvatarType,outfitType:"Avatar"},e}}class _t{constructor(){}static async getAvatarBodyShot(t){return(await(await G("https://thumbnails.roblox.com/v1/users/avatar?"+new URLSearchParams({userIds:t.userId.toString(),size:t.size,format:t.format,isCircular:t.isCircular?"true":"false"}).toString())).json()).data[0].imageUrl}}var yt=function(){var g=String.fromCharCode,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",r={};function a(t,e){if(!r[t]){r[t]={};for(var n=0;n>>8,n[2*o+1]=a%256}return n},decompressFromUint8Array:function(t){if(null==t)return i.decompress(t);for(var e=new Array(t.length/2),n=0,o=e.length;n>=1}else{for(r=1,o=0;o>=1}0==--l&&(l=Math.pow(2,d),d++),delete c[u]}else for(r=s[u],o=0;o>=1;0==--l&&(l=Math.pow(2,d),d++),s[i]=f++,u=String(a)}if(""!==u){if(Object.prototype.hasOwnProperty.call(c,u)){if(u.charCodeAt(0)<256){for(o=0;o>=1}else{for(r=1,o=0;o>=1}0==--l&&(l=Math.pow(2,d),d++),delete c[u]}else for(r=s[u],o=0;o>=1;0==--l&&(l=Math.pow(2,d),d++)}for(r=2,o=0;o>=1;for(;;){if(h<<=1,m==e-1){p.push(n(h));break}m++}return p.join("")},decompress:function(e){return null==e?"":""==e?null:i._decompress(e.length,32768,function(t){return e.charCodeAt(t)})},_decompress:function(t,e,n){for(var o,r,a,i,s,c,u=[],l=4,f=4,d=3,p="",h=[],m={val:n(0),position:e,index:1},v=0;v<3;v+=1)u[v]=v;for(r=0,i=Math.pow(2,2),s=1;s!=i;)a=m.val&m.position,m.position>>=1,0==m.position&&(m.position=e,m.val=n(m.index++)),r|=(0>=1,0==m.position&&(m.position=e,m.val=n(m.index++)),r|=(0>=1,0==m.position&&(m.position=e,m.val=n(m.index++)),r|=(0>=1,0==m.position&&(m.position=e,m.val=n(m.index++)),r|=(0>=1,0==m.position&&(m.position=e,m.val=n(m.index++)),r|=(0>=1,0==m.position&&(m.position=e,m.val=n(m.index++)),r|=(0{"title"in t&&n(0,a=t.title),"viewBox"in t&&n(1,i=t.viewBox),"$$scope"in t&&n(2,r=t.$$scope)},[a,i,r,o]}class oe extends W{constructor(t){super(),K(this,t,ne,ee,J,{title:0,viewBox:1})}}function re(t){let n;return{c(){b(n=at("path"),"d","M14 8.77v-1.6l-1.94-.64-.45-1.09.88-1.84-1.13-1.13-1.81.91-1.09-.45-.69-1.92h-1.6l-.63 1.94-1.11.45-1.84-.88-1.13 1.13.91 1.81-.45 1.09L0 7.23v1.59l1.94.64.45 1.09-.88 1.84 1.13 1.13 1.81-.91 1.09.45.69 1.92h1.59l.63-1.94 1.11-.45 1.84.88 1.13-1.13-.92-1.81.47-1.09L14 8.75v.02zM7 11c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3z")},m(t,e){S(t,n,e)},p:R,d(t){t&&U(n)}}}function ie(t){let o,n;const r=[{viewBox:"0 0 14 16"},t[0]];let e={$$slots:{default:[re]},$$scope:{ctx:t}};for(let t=0;t{n(0,e=et(et({},e),dt(t)))},[e=dt(e)]}class ae extends W{constructor(t){super(),K(this,t,se,ie,J,{})}}function vt(t,e,n){t=t.slice();return t[18]=e[n],t}function gt(n){let o,r,a,i,s,c,u,l,f,d,p,h,m,v,g,w,y=(n[18].data?n[18].data.name:"Unknown")+"",x,k,C,B,_,j,T,P;function R(){return n[8](n[18])}function z(){return n[9](n[18])}function F(){return n[10](n[18])}function I(){return n[11](n[18])}function D(){return n[12](n[18])}return B=new ae({}),{c(){o=A("div"),r=A("div"),a=A("img"),c=E(),u=A("div"),(l=A("div")).textContent="Update",f=E(),(d=A("div")).textContent="Delete",p=E(),(h=A("div")).textContent="Cancel",v=E(),g=A("div"),w=A("div"),x=nt(y),k=E(),C=A("div"),ot(B.$$.fragment),_=E(),b(a,"class","icon a2"),b(a,"alt",i="Bodyshot of "+(n[18].data?n[18].data.name:"Unknown")),ft(a.src,s=n[18].thumbnailUrl||"#")||b(a,"src",s),b(l,"class","option a2"),b(d,"class","option a2"),b(h,"class","option a2"),b(u,"class","options a2"),b(u,"style",m=`display: ${n[18].menuOpen?"flex":"none"};`),b(r,"class","preview a2"),b(w,"class","name a2"),b(C,"class","edit a2"),b(g,"class","caption a2"),b(o,"class","outfit a2")},m(t,e){S(t,o,e),$(o,r),$(r,a),$(r,c),$(r,u),$(u,l),$(u,f),$(u,d),$(u,p),$(u,h),$(o,v),$(o,g),$(g,w),$(w,x),$(g,k),$(g,C),X(B,C,null),$(o,_),j=!0,T||(P=[O(a,"click",R),O(a,"keydown",ce),O(l,"click",z),O(l,"keydown",ue),O(d,"click",F),O(d,"keydown",fe),O(h,"click",I),O(h,"keydown",de),O(C,"click",D),O(C,"keydown",pe)],T=!0)},p(t,e){n=t,(!j||1&e&&i!==(i="Bodyshot of "+(n[18].data?n[18].data.name:"Unknown")))&&b(a,"alt",i),(!j||1&e&&!ft(a.src,s=n[18].thumbnailUrl||"#"))&&b(a,"src",s),(!j||1&e&&m!==(m=`display: ${n[18].menuOpen?"flex":"none"};`))&&b(u,"style",m),(!j||1&e)&&y!==(y=(n[18].data?n[18].data.name:"Unknown")+"")&&At(x,y)},i(t){j||(M(B.$$.fragment,t),j=!0)},o(t){L(B.$$.fragment,t),j=!1},d(t){t&&U(o),Z(B),T=!1,N(P)}}}function le(n){let o,r,a,i,s,c,u,l,f,d,p,h=n[0],m=[];for(let t=0;tL(m[t],1,1,()=>{m[t]=null}))(t);Tt()}},i(t){if(!f){for(let t=0;t{},ue=()=>{},fe=()=>{},de=()=>{},pe=()=>{};function he(e,t,o){let r=[],n="",a,i=!1;async function s(t){var e=t.data.name,n=(t.data.name="TEMPORARY",await t.create(),await j.getOutfitByName(a.id,"TEMPORARY"));await n.wear(),await n.delete(),t.data.name=e,window.location.reload()}function c(t){t.menuOpen=!t.menuOpen,o(0,r)}function u(t){c(t);t=r.indexOf(t);-1!==t&&(r.splice(t,1),o(0,r))}async function l(t){c(t);var e=await j.getOutfitFromAvatar(),n=(e.thumbnailUrl=await _t.getAvatarBodyShot({format:"Png",isCircular:!1,size:"100x100",userId:a.id}),t.data.name);t.thumbnailUrl=e.thumbnailUrl,t.data=e.data,t.data.name=n,o(0,r)}Ot(async()=>{var t;a=await lt.getCurrentUser(),t=localStorage.getItem("rwp-outfits"),i=(t&&(t=yt.decompress(t),t=JSON.parse(t),o(0,r=t.map(t=>{var e=new j;return e.thumbnailUrl=t.thumbnailUrl,e.data=t.data,e}))),!0)});return e.$$.update=()=>{var t;1&e.$$.dirty&&r&&i&&(t=r.map(t=>({data:t.data,thumbnailUrl:t.thumbnailUrl})),t=JSON.stringify(t),t=yt.compress(t),localStorage.setItem("rwp-outfits",t))},[r,n,async function(){var t=await j.getOutfitFromAvatar();t.data.name=""===n.trim()?"New outfit":n,o(1,n=""),t.thumbnailUrl=await _t.getAvatarBodyShot({format:"Png",isCircular:!1,size:"100x100",userId:a.id}),r.push(t),o(0,r)},s,c,u,l,function(){n=this.value,o(1,n)},t=>s(t),t=>l(t),t=>u(t),t=>c(t),t=>c(t)]}class me extends W{constructor(t){super(),K(this,t,he,le,J,{})}}function _e(t){let n,o;return n=new te({}),{c(){ot(n.$$.fragment)},m(t,e){X(n,t,e),o=!0},i(t){o||(M(n.$$.fragment,t),o=!0)},o(t){L(n.$$.fragment,t),o=!1},d(t){Z(n,t)}}}function ye(t){let n,o;return n=new me({}),{c(){ot(n.$$.fragment)},m(t,e){X(n,t,e),o=!0},i(t){o||(M(n.$$.fragment,t),o=!0)},o(t){L(n.$$.fragment,t),o=!1},d(t){Z(n,t)}}}function we(n){let o,r,a,i,s,c,u,l,f,d,p,h,m,v,g,w;const y=[ye,_e],x=[];function k(t){return"outfits"===t[1]?0:"about"===t[1]?1:-1}return~(p=k(n))&&(h=x[p]=y[p](n)),{c(){o=A("div"),(r=A("div")).textContent="RWP - Vanilla Roblox with extended functionality",a=E(),i=A("div"),s=E(),c=A("div"),(u=A("div")).textContent="Outfits",l=E(),(f=A("div")).textContent="About",d=E(),h&&h.c(),m=xt(),b(r,"class","title a0"),b(i,"class","drag a0"),b(o,"class","header a0"),b(u,"class","tab a0"),b(f,"class","tab a0"),b(c,"class","tabs a0")},m(t,e){S(t,o,e),$(o,r),$(o,a),$(o,i),S(t,s,e),S(t,c,e),$(c,u),$(c,l),$(c,f),S(t,d,e),~p&&x[p].m(t,e),S(t,m,e),v=!0,g||(w=[O(i,"mousedown",n[2]),O(u,"click",n[3]),O(u,"keydown",ve),O(f,"click",n[4]),O(f,"keydown",ge)],g=!0)},p(t,[]){let e=p;(p=k(t))!==e&&(h&&(St(),L(x[e],1,1,()=>{x[e]=null}),Tt()),~p?((h=x[p])||(h=x[p]=y[p](t)).c(),M(h,1),h.m(m.parentNode,m)):h=null)},i(t){v||(M(h),v=!0)},o(t){L(h),v=!1},d(t){t&&U(o),t&&U(s),t&&U(c),t&&U(d),~p&&x[p].d(t),t&&U(m),g=!1,N(w)}}}const ve=()=>{},ge=()=>{};function be(t,e,n){let o,r="outfits";return Ot(()=>{var t=document.getElementById("app");n(0,o=new Qt(t))}),[o,r,t=>o.drag(t),()=>n(1,r="outfits"),()=>n(1,r="about")]}class ke extends W{constructor(t){super(),K(this,t,be,we,J,{})}}new ke({target:document.getElementById("app")});})()
\ No newline at end of file
+ putting food on my table :D `,m(n,"class","page a2")},m(t,e){E(t,n,e)},p:M,i:M,o:M,d(t){t&&O(n)}}}class ee extends K{constructor(t){super(),J(this,t,null,te,q,{})}}async function Yt(){return(await fetch("https://avatar.roblox.com/v1/avatar/thumbnail-customization",{method:"POST",headers:new Headers({"Content-Type":"application/json"}),credentials:"include"})).headers.get("x-csrf-token")}async function at(t,e){return fetch(t,{method:"POST",headers:new Headers({"Content-Type":"application/json","x-csrf-token":await Yt()}),credentials:"include",body:e?JSON.stringify(e):null})}async function et(t){return fetch(t,{method:"GET",headers:new Headers({"Content-Type":"application/json","x-csrf-token":await Yt()}),credentials:"include"})}class ht{constructor(){L(this,"id"),L(this,"name"),L(this,"displayName")}static async getCurrentUser(){var t=await(await et("https://users.roblox.com/v1/users/authenticated")).json(),e=new ht;return e.id=t.id,e.name=t.name,e.displayName=t.displayName,e}}class j{constructor(){L(this,"id"),L(this,"thumbnailUrl"),L(this,"data"),L(this,"menuOpen",!1)}async wear(){this.id||console.error("Cannot wear an outfit without an outfit id!"),await at(`https://avatar.roblox.com/v1/outfits/${this.id}/wear`)}async update(){this.id||console.error("Cannot update outfit without an outfit id!"),this.data||console.error("Cannot update outfit without data!"),await at(`https://avatar.roblox.com/v1/outfits/${this.id}/update`,this.data)}async create(){this.data||console.error("Cannot create an outfit without data!"),await at("https://avatar.roblox.com/v1/outfits/create",this.data)}async delete(){this.id||console.error("Cannot delete outfit without an outfit id!"),await at(`https://avatar.roblox.com/v1/outfits/${this.id}/delete`),this.data=null}static async getOutfitsList(t){t=await(await et(`https://avatar.roblox.com/v1/users/${t}/outfits?page=1&itemsPerPage=100&isEditable=true`)).json();return console.log(t),t.data}static async getOutfitByName(t,e){var t=await j.getOutfitsList(t),t=(console.log(t),t.find(t=>t.name===e)),n=new j;return n.id=t.id,n}static async getOutfit(t){var t=(await et(`https://avatar.roblox.com/v1/outfits/${t}/details`)).json(),e=new j;return e.id=t.id,e.data={assetIds:t.assets.map(t=>t.id),bodyColors:t.bodyColors,name:t.name,outfitType:t.outfitType,playerAvatarType:t.playerAvatarType,scale:t.scale},e}static async getOutfitFromAvatar(){var t=await(await et("https://avatar.roblox.com/v1/avatar")).json(),e=new j;return e.data={name:"TEMPLATE",bodyColors:t.bodyColors,assetIds:t.assets.map(t=>t.id),scale:t.scales,playerAvatarType:t.playerAvatarType,outfitType:"Avatar"},e}}class wt{constructor(){}static async getAvatarBodyShot(t){return(await(await et("https://thumbnails.roblox.com/v1/users/avatar?"+new URLSearchParams({userIds:t.userId.toString(),size:t.size,format:t.format,isCircular:t.isCircular?"true":"false"}).toString())).json()).data[0].imageUrl}}function vt(t){let n,a;return{c(){n=lt("title"),a=ct(t[0])},m(t,e){E(t,n,e),_(n,a)},p(t,e){1&e&&Lt(a,t[0])},d(t){t&&O(n)}}}function ne(t){let n,a,o,r=t[0]&&vt(t);const i=t[3].default,s=zt(i,t,t[2],null);return{c(){n=lt("svg"),r&&r.c(),a=Ot(),s&&s.c(),m(n,"xmlns","http://www.w3.org/2000/svg"),m(n,"viewBox",t[1]),m(n,"class","a1")},m(t,e){E(t,n,e),r&&r.m(n,null),_(n,a),s&&s.m(n,null),o=!0},p(t,[e]){t[0]?r?r.p(t,e):((r=vt(t)).c(),r.m(n,a)):r&&(r.d(1),r=null),s&&s.p&&(!o||4&e)&&Vt(s,i,t,t[2],o?Ft(i,t[2],e,null):Rt(t[2]),null),(!o||2&e)&&m(n,"viewBox",t[1])},i(t){o||(N(s,t),o=!0)},o(t){Y(s,t),o=!1},d(t){t&&O(n),r&&r.d(),s&&s.d(t)}}}function oe(t,e,n){let{$$slots:a={},$$scope:o}=e,{title:r=null}=e,i=e["viewBox"];return t.$$set=t=>{"title"in t&&n(0,r=t.title),"viewBox"in t&&n(1,i=t.viewBox),"$$scope"in t&&n(2,o=t.$$scope)},[r,i,o,a]}class Dt extends K{constructor(t){super(),J(this,t,oe,ne,q,{title:0,viewBox:1})}}function ae(t){let n;return{c(){m(n=lt("path"),"d","M14 8.77v-1.6l-1.94-.64-.45-1.09.88-1.84-1.13-1.13-1.81.91-1.09-.45-.69-1.92h-1.6l-.63 1.94-1.11.45-1.84-.88-1.13 1.13.91 1.81-.45 1.09L0 7.23v1.59l1.94.64.45 1.09-.88 1.84 1.13 1.13 1.81-.91 1.09.45.69 1.92h1.59l.63-1.94 1.11-.45 1.84.88 1.13-1.13-.92-1.81.47-1.09L14 8.75v.02zM7 11c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3z")},m(t,e){E(t,n,e)},p:M,d(t){t&&O(n)}}}function se(t){let a,n;const o=[{viewBox:"0 0 14 16"},t[0]];let e={$$slots:{default:[ae]},$$scope:{ctx:t}};for(let t=0;t