@alwith/module-auth 0.1.8 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/README.md +1 -1
  2. package/dist/chunk-0gf7vwzk.js +2 -0
  3. package/dist/chunk-0x7ssxpn.js +2 -0
  4. package/dist/chunk-0ze5xzg5.js +2 -0
  5. package/dist/chunk-14dfwbk0.js +2 -0
  6. package/dist/chunk-1hxexf7n.js +6 -0
  7. package/dist/chunk-1mq984ah.js +2 -0
  8. package/dist/chunk-21abksd2.js +2 -0
  9. package/dist/chunk-2aq8zkwb.js +2 -0
  10. package/dist/chunk-2k8my1h9.js +2 -0
  11. package/dist/chunk-2skzpxsk.js +2 -0
  12. package/dist/chunk-2x5tzfgv.js +2 -0
  13. package/dist/chunk-37ctfsy1.js +1 -0
  14. package/dist/chunk-38y9615y.js +2 -0
  15. package/dist/chunk-3vpcfe38.js +2 -0
  16. package/dist/chunk-44at74bw.js +2 -0
  17. package/dist/chunk-4gegjx79.js +2 -0
  18. package/dist/chunk-4h2756zy.js +2 -0
  19. package/dist/chunk-4xk0z8t0.js +2 -0
  20. package/dist/chunk-5jz8vnk5.js +1 -0
  21. package/dist/chunk-5v4zm9s3.js +2 -0
  22. package/dist/chunk-5w675j2g.js +2 -0
  23. package/dist/chunk-70nb6x0r.js +2 -0
  24. package/dist/chunk-74hpp4me.js +2 -0
  25. package/dist/chunk-7xtvv8a7.js +2 -0
  26. package/dist/chunk-8kcmwm3k.js +2 -0
  27. package/dist/chunk-8w0zccsf.js +0 -0
  28. package/dist/chunk-8xd6kn1b.js +2 -0
  29. package/dist/chunk-96emfz6b.js +2 -0
  30. package/dist/chunk-9h4j75af.js +2 -0
  31. package/dist/chunk-9tramdds.js +2 -0
  32. package/dist/chunk-9wqfns8y.js +2 -0
  33. package/dist/chunk-9zhxpvxw.js +2 -0
  34. package/dist/chunk-afy09ajr.js +2 -0
  35. package/dist/chunk-b5zfgr86.js +2 -0
  36. package/dist/chunk-bgc7s9q5.js +2 -0
  37. package/dist/chunk-c9banqkx.js +2 -0
  38. package/dist/chunk-d13j3xks.js +2 -0
  39. package/dist/chunk-ezj6gpm0.js +2 -0
  40. package/dist/chunk-fkj53yw2.js +2 -0
  41. package/dist/chunk-g47n16v3.js +2 -0
  42. package/dist/chunk-hj17ea3j.js +2 -0
  43. package/dist/chunk-hk9j0kvg.js +2 -0
  44. package/dist/chunk-htw56xtp.js +2 -0
  45. package/dist/chunk-j03we9jz.js +2 -0
  46. package/dist/chunk-j3ez3fz2.js +2 -0
  47. package/dist/chunk-jf6z5rh7.js +1 -0
  48. package/dist/chunk-jf77909y.js +2 -0
  49. package/dist/chunk-jjb1befc.js +2 -0
  50. package/dist/chunk-khnyadsg.js +0 -0
  51. package/dist/chunk-kwq26qhs.js +2 -0
  52. package/dist/chunk-m18rjmg2.js +2 -0
  53. package/dist/chunk-m96z2xh6.js +2 -0
  54. package/dist/chunk-mandqn4e.js +2 -0
  55. package/dist/chunk-mdqxdcxh.js +2 -0
  56. package/dist/chunk-mmj02855.js +2 -0
  57. package/dist/chunk-mnrtrr2j.js +2 -0
  58. package/dist/chunk-ms8jh9xz.js +2 -0
  59. package/dist/chunk-my19acdk.js +2 -0
  60. package/dist/chunk-nbzm95mz.js +2 -0
  61. package/dist/chunk-npcgz51c.js +2 -0
  62. package/dist/chunk-p1ywvmqa.js +2 -0
  63. package/dist/chunk-pbwt3qj9.js +0 -0
  64. package/dist/chunk-pha0eyam.js +2 -0
  65. package/dist/chunk-q8ebj5e6.js +2 -0
  66. package/dist/chunk-rerywpwe.js +2 -0
  67. package/dist/chunk-sp65sdp3.js +1 -0
  68. package/dist/chunk-v9czb1e6.js +2 -0
  69. package/dist/chunk-vnnyvrrd.js +3 -0
  70. package/dist/chunk-vr4ye1z4.js +2 -0
  71. package/dist/chunk-vsxgxkg5.js +0 -0
  72. package/dist/chunk-vz0m347h.js +2 -0
  73. package/dist/chunk-w1z1g5c5.js +2 -0
  74. package/dist/chunk-w5yer870.js +2 -0
  75. package/dist/chunk-wbvah1ty.js +2 -0
  76. package/dist/chunk-wcenmfkf.js +2 -0
  77. package/dist/chunk-xrw9s1th.js +2 -0
  78. package/dist/chunk-xs0abxzp.js +2 -0
  79. package/dist/chunk-yjdj2mf9.js +2 -0
  80. package/dist/chunk-z5nmdjb9.js +2 -0
  81. package/dist/chunk-zhbj6cm5.js +2 -0
  82. package/dist/client.d.ts +1 -1
  83. package/dist/client.js +1 -1
  84. package/dist/index.d.ts +6 -6
  85. package/dist/index.js +1 -1
  86. package/dist/oauth.js +1 -1
  87. package/dist/password.js +1 -1
  88. package/dist/pets/assets.d.ts +8 -8
  89. package/dist/pets/assets.js +1 -1
  90. package/dist/pets/client.d.ts +2 -2
  91. package/dist/pets/client.js +1 -1
  92. package/dist/pets/core/engine.d.ts +2 -2
  93. package/dist/pets/core/engine.js +1 -1
  94. package/dist/pets/core/host.d.ts +3 -3
  95. package/dist/pets/core/host.js +1 -1
  96. package/dist/pets/core/index.d.ts +11 -11
  97. package/dist/pets/core/index.js +1 -1
  98. package/dist/pets/core/lib/account-state.d.ts +1 -1
  99. package/dist/pets/core/lib/account-state.js +1 -1
  100. package/dist/pets/core/lib/bubble-outline.js +1 -1
  101. package/dist/pets/core/lib/draw-result.d.ts +1 -1
  102. package/dist/pets/core/lib/draw-result.js +1 -1
  103. package/dist/pets/core/lib/endpoints.d.ts +1 -1
  104. package/dist/pets/core/lib/endpoints.js +1 -1
  105. package/dist/pets/core/lib/gacha-pools.d.ts +1 -1
  106. package/dist/pets/core/lib/gacha-pools.js +1 -1
  107. package/dist/pets/core/lib/loading-progress.js +1 -1
  108. package/dist/pets/core/lib/pet-animation-sync.d.ts +2 -2
  109. package/dist/pets/core/lib/pet-animation-sync.js +1 -1
  110. package/dist/pets/core/lib/pet-bubble-state.d.ts +1 -1
  111. package/dist/pets/core/lib/pet-bubble-state.js +1 -1
  112. package/dist/pets/core/lib/pet-drag.d.ts +2 -2
  113. package/dist/pets/core/lib/pet-drag.js +1 -1
  114. package/dist/pets/core/lib/pet-presentation.d.ts +3 -3
  115. package/dist/pets/core/lib/pet-presentation.js +1 -1
  116. package/dist/pets/core/lib/pet-session-context.js +1 -1
  117. package/dist/pets/core/lib/preload-images.js +1 -1
  118. package/dist/pets/core/lib/presentation-readiness.js +1 -1
  119. package/dist/pets/core/lib/rarity.d.ts +1 -1
  120. package/dist/pets/core/lib/rarity.js +1 -1
  121. package/dist/pets/core/lib/recharge.js +1 -1
  122. package/dist/pets/core/lib/reply-submission.d.ts +1 -1
  123. package/dist/pets/core/lib/reply-submission.js +1 -1
  124. package/dist/pets/core/lib/resource-sync.js +1 -1
  125. package/dist/pets/core/lib/runtime-types.d.ts +1 -1
  126. package/dist/pets/core/lib/settings.js +1 -1
  127. package/dist/pets/core/lib/sprite-config.d.ts +2 -2
  128. package/dist/pets/core/lib/sprite-config.js +1 -1
  129. package/dist/pets/core/lib/vibemon-resources.d.ts +1 -1
  130. package/dist/pets/core/lib/vibemon-resources.js +1 -1
  131. package/dist/pets/core/lib/view-request.js +1 -1
  132. package/dist/pets/core/lib/window-frame.d.ts +1 -1
  133. package/dist/pets/core/lib/window-frame.js +1 -1
  134. package/dist/pets/core/lib/window-manager.d.ts +1 -1
  135. package/dist/pets/core/lib/window-manager.js +1 -1
  136. package/dist/pets/core/session-icon.js +1 -5
  137. package/dist/pets/core/types.js +1 -1
  138. package/dist/pets/host.js +1 -1
  139. package/dist/pets/index.d.ts +6 -6
  140. package/dist/pets/index.js +1 -1
  141. package/dist/pets/react/assets.js +1 -1
  142. package/dist/pets/react/components/album-view.d.ts +1 -1
  143. package/dist/pets/react/components/album-view.js +1 -1
  144. package/dist/pets/react/components/back-to-home.js +1 -1
  145. package/dist/pets/react/components/equip-view.d.ts +1 -1
  146. package/dist/pets/react/components/equip-view.js +1 -1
  147. package/dist/pets/react/components/gem-balance.js +1 -1
  148. package/dist/pets/react/components/home-view.js +1 -1
  149. package/dist/pets/react/components/insufficient-points-dialog.js +1 -1
  150. package/dist/pets/react/components/intro-overlay.js +1 -1
  151. package/dist/pets/react/components/loading-view.js +1 -1
  152. package/dist/pets/react/components/onboarding-guide.js +1 -1
  153. package/dist/pets/react/components/pet-bubble-background.js +1 -1
  154. package/dist/pets/react/components/pet-lounge.css +1 -0
  155. package/dist/pets/react/components/pet-lounge.js +1 -1
  156. package/dist/pets/react/components/pet-mode-button.js +1 -1
  157. package/dist/pets/react/components/pet-window.js +1 -1
  158. package/dist/pets/react/components/pull-overlay.d.ts +1 -1
  159. package/dist/pets/react/components/pull-overlay.js +1 -1
  160. package/dist/pets/react/components/pull-video.js +1 -1
  161. package/dist/pets/react/components/pull-view.d.ts +1 -1
  162. package/dist/pets/react/components/pull-view.js +1 -1
  163. package/dist/pets/react/components/quick-reply.js +1 -2
  164. package/dist/pets/react/components/session-icon.d.ts +2 -2
  165. package/dist/pets/react/components/session-icon.js +1 -1
  166. package/dist/pets/react/components/single-pet-toast.js +1 -1
  167. package/dist/pets/react/components/sprite-renderer.d.ts +1 -1
  168. package/dist/pets/react/components/sprite-renderer.js +1 -1
  169. package/dist/pets/react/components/vibemon-empty-state.js +1 -1
  170. package/dist/pets/react/components/vibemon-header.js +1 -1
  171. package/dist/pets/react/components/vibemon-page.js +1 -1
  172. package/dist/pets/react/components/vibemon-scene.js +1 -1
  173. package/dist/pets/react/components/video-fader.js +1 -1
  174. package/dist/pets/react/components/wish-button.js +1 -1
  175. package/dist/pets/react/index.d.ts +5 -5
  176. package/dist/pets/react/index.js +1 -1
  177. package/dist/pets/react/lib/account-state.d.ts +1 -1
  178. package/dist/pets/react/lib/account-state.js +1 -1
  179. package/dist/pets/react/lib/card-image.js +1 -1
  180. package/dist/pets/react/lib/resource-sync.d.ts +2 -2
  181. package/dist/pets/react/lib/resource-sync.js +1 -1
  182. package/dist/pets/react/lib/season.js +1 -1
  183. package/dist/pets/react/lib/use-season.d.ts +1 -1
  184. package/dist/pets/react/lib/use-season.js +1 -1
  185. package/dist/pets/react/lib/utils.js +1 -1
  186. package/dist/pets/react/ui/button.d.ts +2 -2
  187. package/dist/pets/react/ui/button.js +1 -1
  188. package/dist/pets/react/ui/card.js +1 -1
  189. package/dist/pets/react/ui/input-group.d.ts +3 -3
  190. package/dist/pets/react/ui/input-group.js +1 -1
  191. package/dist/pets/react/ui/textarea.js +1 -1
  192. package/dist/pets/resource-package.d.ts +2 -2
  193. package/dist/pets/resource-package.js +1 -1
  194. package/dist/pets/resources.d.ts +5 -5
  195. package/dist/pets/resources.js +1 -1
  196. package/dist/pets/selection.d.ts +1 -1
  197. package/dist/pets/selection.js +1 -1
  198. package/dist/pets/sheet-layout.js +1 -1
  199. package/dist/pets/types.js +1 -0
  200. package/dist/state.d.ts +2 -2
  201. package/dist/state.js +1 -1
  202. package/dist/token-storage.d.ts +1 -1
  203. package/dist/token-storage.js +1 -1
  204. package/dist/types.js +1 -0
  205. package/package.json +12 -12
package/README.md CHANGED
@@ -74,6 +74,6 @@ are generated by `createSpriteConfig` in the core entry. `spriteConfig` preserve
74
74
  legacy `config.json` timing, crop, facing and behavior overrides without rewriting
75
75
  existing caches. Storage keys and account cache paths remain unchanged.
76
76
 
77
- Run `bun test src` and `bun run typecheck` from this package before building.
77
+ Run `bun test src` and `bun check --no-script` from this package before building.
78
78
  `bun run build` emits minified JavaScript and declarations; `bun pm pack` includes
79
79
  those outputs, visual assets and redistribution notices.
@@ -0,0 +1,2 @@
1
+ import{o}from"./chunk-xrw9s1th.js";import{t}from"./chunk-5jz8vnk5.js";import{jsxDEV as e}from"react/jsx-dev-runtime";function C({onClick:n,className:s,disabled:i=!1,label:l="Home",iconSrc:a}){return e(t,{variant:"ghost",className:o("h-auto gap-2 p-0 text-[#8A55C5]/80 hover:bg-transparent hover:text-[#8A55C5]/80",s),disabled:i,onClick:n,children:[a===void 0?e("svg",{viewBox:"0 0 28 28",fill:"none","aria-hidden":"true",className:"size-7 shrink-0",children:e("path",{d:"M12.5709 8.57642V3.93455C12.5867 3.8165 12.5756 3.69641 12.5382 3.5833C12.5009 3.4702 12.4384 3.36704 12.3555 3.28158C12.2055 3.1325 12.0026 3.04883 11.7911 3.04883C11.5796 3.04883 11.3767 3.1325 11.2267 3.28158L3.36348 11.9028C3.21724 12.0686 3.13655 12.2821 3.13655 12.5031C3.13655 12.7242 3.21724 12.9377 3.36348 13.1035L11.1838 21.6749C11.4769 21.9248 12.0112 22.0656 12.3557 21.7208C12.534 21.5431 12.6114 21.3927 12.5857 21.1608V16.4383C17.0974 16.4383 21.2356 19.2604 22.8549 23.2291C23.0887 23.8033 23.9213 23.7437 24.066 23.1416C24.2809 22.2415 24.3892 21.3193 24.3886 20.3938C24.3908 13.8674 19.1001 8.57642 12.5709 8.57642Z",fill:"currentColor"},void 0,!1,void 0,this)},void 0,!1,void 0,this):e("img",{src:a,alt:"",className:"size-7 shrink-0"},void 0,!1,void 0,this),e("span",{className:"text-[20px] leading-none font-semibold select-none",children:l},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}
2
+ export{C};
@@ -0,0 +1,2 @@
1
+ import{dt}from"./chunk-2k8my1h9.js";import{t}from"./chunk-5jz8vnk5.js";import{jsxDEV as e}from"react/jsx-dev-runtime";function B({onWish:o}){return e("div",{className:"absolute inset-x-0 top-[18%] bottom-[8%] flex flex-col items-center justify-center",children:[e("img",{src:dt,alt:"",className:"w-[10.938cqw] shrink-0 drop-shadow-[0_18px_28px_rgba(31,15,92,0.35)] select-none"},void 0,!1,void 0,this),e("p",{className:"mt-[1.5cqh] max-w-[19.792cqw] px-[1.25cqw] text-center text-[0.938cqw] leading-relaxed text-white/60",children:["No Vibémon to keep your lobby company~",e("br",{},void 0,!1,void 0,this),"draw one home!"]},void 0,!0,void 0,this),e(t,{onClick:o,className:"mt-[4cqh] h-[5.5cqh] min-w-[10.417cqw] rounded-full border border-white/75 bg-[linear-gradient(180deg,#C579F2_0%,#8A4FDB_100%)] px-[1.875cqw] text-[1.25cqw] font-black text-white shadow-[0_8px_18px_rgba(50,20,126,0.35),inset_0_2px_2px_rgba(255,255,255,0.5)] hover:bg-[linear-gradient(180deg,#CF87F6_0%,#9458E2_100%)]",style:{fontFamily:"Outfit, system-ui, sans-serif"},children:"Go Pull"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}
2
+ export{B};
@@ -0,0 +1,2 @@
1
+ import{it,st,P,c,pt}from"./chunk-2k8my1h9.js";import{i}from"./chunk-2skzpxsk.js";import{o}from"./chunk-xrw9s1th.js";import{t}from"./chunk-5jz8vnk5.js";import{Ce}from"./chunk-8kcmwm3k.js";import{T}from"./chunk-q8ebj5e6.js";import{motion as v,useInView as Q}from"motion/react";import{useEffect as U,useRef as I,useState as R}from"react";import{jsxDEV as n,Fragment as z}from"react/jsx-dev-runtime";var f=300,m=500,k=400,X=1920,O=10,F=1474,V=[0.6,0.7,0.8,0.9,1,1,0.9,0.8,0.7,0.6],Z=1.1269,M=[12,14,16,18,20,18,16,14,12].map((e)=>e*Z),q=(F-M.reduce((e,a)=>e+a,0))/V.reduce((e,a)=>e+a,0),j=(()=>{let e=0;return V.map((a,l)=>{let d=q*a,r=e+d/2-F/2;if(e+=d,l<M.length)e+=M[l];return{scale:a,x:r}})})(),A={R:null,SR:it,SSR:st},N=(e)=>`${e/X*100}cqw`,B={R:"r",SR:"sr",SSR:"ssr"},G={"white-card":{scrim:"linear-gradient(0deg, rgba(0,0,0,0.20) 0%, rgba(0,0,0,0.20) 100%), linear-gradient(180.83deg, rgba(1,24,30,0.90) 58.198%, rgba(86,209,251,0.90) 153.35%)",button:"#82D6EB",textureOpacity:"opacity-68"},r:{scrim:"linear-gradient(0deg, rgba(0,0,0,0.20) 0%, rgba(0,0,0,0.20) 100%), linear-gradient(180.83deg, rgba(1,24,30,0.90) 58.198%, rgba(86,209,251,0.90) 153.35%)",button:"#82D6EB",textureOpacity:"opacity-68"},sr:{scrim:"linear-gradient(0deg, rgba(0,0,0,0.20) 0%, rgba(0,0,0,0.20) 100%), linear-gradient(180.83deg, rgba(22,1,30,0.90) 59.16%, rgba(192,106,255,0.90) 153.35%)",button:"#C16AFF",textureOpacity:"opacity-68"},ssr:{scrim:"linear-gradient(0deg, rgba(0,0,0,0.20) 0%, rgba(0,0,0,0.20) 100%), linear-gradient(180.83deg, rgba(33,15,0,0.90) 65.36%, rgba(255,172,47,0.90) 153.35%)",button:"#FFAF32",textureOpacity:"opacity-100"}},ee={r:"linear-gradient(0deg, rgba(0, 0, 0, 0.20) 0%, rgba(0, 0, 0, 0.20) 100%), linear-gradient(181deg, rgba(0, 17, 35, 0.90) 65.37%, rgba(21, 166, 226, 0.90) 153.35%)",sr:"linear-gradient(0deg, rgba(0, 0, 0, 0.20) 0%, rgba(0, 0, 0, 0.20) 100%), linear-gradient(181deg, rgba(24, 7, 45, 0.90) 65.37%, rgba(156, 63, 224, 0.90) 153.35%)",ssr:"linear-gradient(0deg, rgba(0, 0, 0, 0.20) 0%, rgba(0, 0, 0, 0.20) 100%), linear-gradient(181deg, rgba(33, 15, 0, 0.90) 65.37%, rgba(255, 172, 47, 0.90) 153.35%)"},W=(e)=>{if(e.some((a)=>a.kind==="card"&&a.rarity==="SSR"))return"ssr";if(e.some((a)=>a.kind==="card"&&a.rarity==="SR"))return"sr";return"r"};function Ue({phase:e,drawnRewards:a,onVideoStarted:l,onPullDone:d,onPullFailed:r,onResultConfirmed:u}){let s=I(null),w=Q(s),[C,_]=R(document.visibilityState==="visible");U(()=>{let p=()=>_(document.visibilityState==="visible");return document.addEventListener("visibilitychange",p),()=>document.removeEventListener("visibilitychange",p)},[]);let[b,D]=R(!1),[x,S]=R("flat"),h=I(!1);U(()=>{if(e!=="idle")return;h.current=!1,D(!1),S("flat")},[e]);let y=a.length>1,g=y?null:a[0],E=y?W(a):null,K=y&&a.some((p)=>p.kind==="card"),L=g?g.kind==="white-card"?"white-card":B[g.rarity]:null,Y=()=>{if(!y||x!=="flat"||h.current)return;if(h.current=!0,!K){S("fly"),setTimeout(()=>u(!1),f);return}S("gather"),setTimeout(()=>S("fly"),k),setTimeout(()=>u(!0),k+m)},H=()=>{if(!g||b||h.current)return;h.current=!0,D(!0);let p=g.kind==="card"?m:f;setTimeout(()=>u(g.kind==="card"),p)},J=y?x!=="fly":!b;return n("div",{ref:s,"data-presentation-state":e,className:"[container-type:size] absolute inset-0 z-50 overflow-hidden bg-transparent transition-colors duration-300",style:{pointerEvents:e==="idle"?"none":"auto"},children:[n("div",{"aria-hidden":!0,className:"pointer-events-none absolute inset-0 transition-opacity duration-300",style:{background:e!=="result"?"rgba(1,10,21,1)":E?ee[E]:L?G[L].scrim:"rgba(1,10,21,0.82)",opacity:e==="result"&&J?1:0}},void 0,!1,void 0,this),e==="result"&&(y?n(le,{rewards:a,stage:x,onConfirm:Y},void 0,!1,void 0,this):g?n(oe,{reward:g,onConfirm:H,closing:b},void 0,!1,void 0,this):null),n(T,{sources:Ce,playing:e==="video-waiting"||e==="video-playing",active:w&&C,background:"rgba(1,10,21,1)",onFirstFrame:l,onComplete:d,onError:r},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var te={default:"#FFAF32",hover:"#FFC15F",press:"#ECA029"};function ne({onConfirm:e}){let[a,l]=R(!1),[d,r]=R(!1),u=d?"press":a?"hover":"default";return n(t,{"aria-label":"Confirm",onClick:e,"data-visual-state":u,onPointerEnter:()=>l(!0),onPointerLeave:()=>{l(!1),r(!1)},onPointerDown:()=>r(!0),onPointerUp:()=>r(!1),onPointerCancel:()=>r(!1),onKeyDown:(s)=>{if(s.key===" "||s.key==="Enter")r(!0)},onKeyUp:(s)=>{if(s.key===" "||s.key==="Enter")r(!1)},onBlur:()=>{l(!1),r(!1)},style:{backgroundColor:te[u]},className:"relative h-full w-full overflow-hidden rounded-full border-0 p-0 shadow-none drop-shadow-[0_0.417cqh_0_rgba(0,0,0,0.51)] transition-none active:translate-y-0",children:[n("img",{src:c,alt:"",className:"pointer-events-none absolute top-[-560.71%] left-[-20.34%] h-[741.76%] w-[160.31%] max-w-none mix-blend-soft-light select-none"},void 0,!1,void 0,this),n("span",{"aria-hidden":!0,className:"absolute inset-0 shadow-[inset_0_0.2cqh_0.07cqh_0_white]"},void 0,!1,void 0,this),n("span",{className:"relative text-[1.458cqw] leading-normal font-normal text-[#403C80]",style:{fontFamily:'"Grow Year", system-ui, sans-serif',WebkitTextStroke:"0.25cqw white",paintOrder:"stroke fill"},children:"Confirm"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function ae({tone:e,onConfirm:a}){let l=G[e];return n(t,{"aria-label":"Confirm",onClick:a,style:{backgroundColor:l.button},className:"relative h-full w-full overflow-hidden rounded-full border-0 p-0 shadow-none drop-shadow-[0_0.417cqh_0_rgba(0,0,0,0.51)] transition-none hover:brightness-105 active:translate-y-0",children:[n("img",{src:c,alt:"",className:o("pointer-events-none absolute top-[-560.71%] left-[-20.34%] h-[741.76%] w-[160.31%] max-w-none mix-blend-soft-light select-none",l.textureOpacity)},void 0,!1,void 0,this),n("span",{"aria-hidden":!0,className:"absolute inset-0 shadow-[inset_0_0.2cqh_0.07cqh_0_white]"},void 0,!1,void 0,this),n("span",{className:"relative text-[1.458cqw] leading-normal font-normal text-[#403C80]",style:{fontFamily:'"Grow Year", system-ui, sans-serif',WebkitTextStroke:"0.25cqw white",paintOrder:"stroke fill"},children:"Confirm"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function ie({reward:e}){return n("img",{src:i(e.singleImageUrl),alt:`Gacha Gem ×${e.exchangePoints}`,className:"block h-auto w-full max-w-none select-none"},void 0,!1,void 0,this)}function oe({reward:e,onConfirm:a,closing:l}){let d=e.kind==="white-card"?"white-card":B[e.rarity];return n("div",{"data-testid":"single-draw-result","data-result-tone":d,className:"absolute inset-0 z-10",children:n("div",{className:"[container-type:size] absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2",style:{width:"min(100cqw, 160cqh)",aspectRatio:"8 / 5"},children:[n(v.div,{"aria-hidden":!0,className:"pointer-events-none absolute top-[43.810%] left-[52.655%] aspect-square w-[31.656%] -translate-x-1/2 -translate-y-1/2",animate:{opacity:l?0:0.62},transition:{duration:f/1000},children:n("img",{src:pt,alt:"",className:"h-full w-full max-w-none [animation:spin_2s_linear_infinite] select-none"},void 0,!1,void 0,this)},void 0,!1,void 0,this),n("div",{className:`absolute -translate-x-1/2 ${e.kind==="card"?"top-[20.396%] left-[52.551%]":"top-[43.810%] left-[52.656%] -translate-y-1/2"}`,children:n(v.div,{className:"relative",style:{width:e.kind==="card"?"20.833cqw":"13.75cqw"},initial:!1,animate:l?e.kind==="card"?{x:["0cqw","14cqw","29cqw"],y:["0cqh","-34cqh","-37cqh"],scale:[1,0.14],opacity:[1,1,0]}:{x:0,y:0,scale:0.94,opacity:0}:{x:0,y:0,scale:1,opacity:1},transition:l&&e.kind==="card"?{x:{duration:m/1000,ease:"linear",times:[0,0.5,1]},y:{duration:m/1000,ease:"linear",times:[0,0.5,1]},scale:{duration:m/1000,ease:"linear"},opacity:{duration:m/1000,ease:"linear",times:[0,0.7,1]}}:{duration:l?f/1000:0},children:e.kind==="card"?n(z,{children:[n("img",{src:i(e.singleImageUrl),alt:`${e.vibemonName} ${e.rarity} card`,className:"h-auto w-full max-w-none select-none"},void 0,!1,void 0,this),e.isNew&&n("img",{src:P,alt:"New",className:"pointer-events-none absolute top-[0.202%] right-[2.504%] z-10 h-auto w-[22.5%] max-w-none select-none"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):n(ie,{reward:e},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),n(v.div,{className:"absolute top-[71.667%] left-[52.656%] h-[6.5%] w-[18.542%] -translate-x-1/2",animate:{opacity:l?0:1},transition:{duration:f/1000},style:{pointerEvents:l?"none":"auto"},children:n(ae,{tone:d,onConfirm:a},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function re({reward:e}){return n("img",{src:i(e.multiImageUrl),alt:`Gacha Gem ×${e.exchangePoints}`,className:"pointer-events-none block h-auto w-full max-w-none select-none"},void 0,!1,void 0,this)}function le({rewards:e,stage:a,onConfirm:l}){if(e.length!==O)throw Error(`[vibemon] ten-draw result must contain ${O} rewards, received ${e.length}`);let d=W(e);return n("div",{"data-testid":"multi-draw-result","data-result-tone":d,className:"absolute inset-0 z-10 overflow-hidden",children:n("div",{"data-testid":"multi-result-stage",className:"[container-type:size] absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2",style:{width:"min(100cqw, 160cqh)",aspectRatio:"8 / 5"},children:[n("div",{"data-testid":"multi-result-group",className:"absolute top-[17.833%] left-[11.615%] h-[55%] w-[76.77%]",children:e.map((r,u)=>{let s=j[u],w={x:N(s.x),y:"0cqh",scale:s.scale,opacity:1},C=r.kind==="card"?`${r.drawIndex}-${r.vibemonUuid}`:`${r.drawIndex}-white-card`,_=r.kind==="card"?{x:"0cqw",y:"0cqh",scale:1,opacity:1}:{...w,opacity:0},b=r.kind==="card"?{x:["0cqw","17cqw","34cqw"],y:["0cqh","-40cqh","-38cqh"],scale:[1,0.08],opacity:[1,1,0]}:{...w,opacity:0};return n("div",{className:"absolute inset-y-0 left-1/2 flex items-center",style:{width:N(q),marginLeft:N(-q/2),zIndex:a==="flat"?10-Math.abs(u-4.5):e.length-u},children:n(v.div,{"data-result-index":u,"data-result-scale":s.scale,className:"relative w-full",initial:!1,animate:a==="flat"?w:a==="gather"?_:b,transition:a==="gather"?{duration:r.kind==="card"?k/1000:f/1000,ease:"easeIn"}:a==="fly"?r.kind==="card"?{x:{duration:m/1000,ease:"linear",times:[0,0.5,1]},y:{duration:m/1000,ease:"linear",times:[0,0.5,1]},scale:{duration:m/1000,ease:"linear"},opacity:{duration:m/1000,ease:"linear",times:[0,0.7,1]}}:{duration:f/1000}:{duration:0},children:r.kind==="card"?n(z,{children:[A[r.rarity]!==null&&n("img",{src:A[r.rarity]??void 0,alt:"","aria-hidden":!0,"data-testid":`multi-card-band-${r.rarity}`,className:"pointer-events-none absolute top-1/2 left-0 h-auto w-full max-w-none -translate-y-1/2 select-none"},void 0,!1,void 0,this),n("img",{src:i(r.multiImageUrl),alt:`${r.vibemonName} ${r.rarity} card`,className:"pointer-events-none relative block h-auto w-full max-w-none select-none"},void 0,!1,void 0,this),r.isNew&&n("img",{src:P,alt:"New",className:"pointer-events-none absolute top-0 right-[-5.85%] z-10 h-auto w-[44.21%] max-w-none -translate-y-1/2 select-none"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):n(re,{reward:r},void 0,!1,void 0,this)},void 0,!1,void 0,this)},C,!1,void 0,this)})},void 0,!1,void 0,this),n(v.div,{className:"absolute top-[78%] left-[40.729%] h-[6.5%] w-[18.542%]",style:{pointerEvents:a==="flat"?"auto":"none"},animate:{opacity:a==="flat"?1:0},transition:{duration:f/1000},children:n(ne,{onConfirm:l},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}
2
+ export{Ue};
@@ -0,0 +1,2 @@
1
+ import{e}from"./chunk-htw56xtp.js";var I=()=>e().windows.openRecharge();
2
+ export{I};
@@ -0,0 +1,6 @@
1
+ var t={"app-window":`
2
+ <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 256 256"><path d="M224,56V200a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V56a8,8,0,0,1,8-8H216A8,8,0,0,1,224,56Z" opacity="0.2"/><path d="M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40Zm0,160H40V56H216V200ZM80,84A12,12,0,1,1,68,72,12,12,0,0,1,80,84Zm40,0a12,12,0,1,1-12-12A12,12,0,0,1,120,84Z"/></svg>
3
+ `,"number-square-one":`
4
+ <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 256 256"><path d="M216,48V208a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V48a8,8,0,0,1,8-8H208A8,8,0,0,1,216,48Z" opacity="0.2"/><path d="M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32Zm0,176H48V48H208V208ZM140,80v96a8,8,0,0,1-16,0V95l-11.56,7.71a8,8,0,1,1-8.88-13.32l24-16A8,8,0,0,1,140,80Z"/></svg>
5
+ `};function S(n,a){return a?a[n]:t[n==="main"?"number-square-one":"app-window"]}
6
+ export{S};
@@ -0,0 +1,2 @@
1
+ import{e}from"./chunk-htw56xtp.js";import{Rt,kt}from"./chunk-9wqfns8y.js";var s={SSR:5,SR:4,R:3,UC:2,C:1};function c(o){let t=o.items.filter((r)=>(r.reward_type==="VIBEMON"||r.reward_type==null)&&Boolean(r.vibemon_uuid)&&r.status===1),a=t[0];if(a===void 0)throw Error(`[vibemon] gacha pool ${o.uuid} has no active Vibemon item`);return t.slice(1).reduce((r,i)=>{if(s[i.rarity_code]-s[r.rarity_code]>0)return i;return r},a)}function m(o,t){if(t.uuid!==o.uuid)throw Error(`[vibemon] gacha pool detail UUID ${t.uuid} does not match catalog UUID ${o.uuid}`);if(t.multi_count!==10)throw Error(`[vibemon] gacha pool ${t.uuid} multi_count must be 10, received ${t.multi_count}`);let a=c(t);return{poolUuid:t.uuid,name:t.name,sidebarSelectedImageUrl:a.vibemon_sidebar_selected_url??"",sidebarHoverImageUrl:a.vibemon_sidebar_hover_url??"",sidebarUnselectedImageUrl:a.vibemon_sidebar_unselected_url??"",pageBackgroundImageUrl:a.vibemon_background_url??"",poolCardImageUrl:a.vibemon_pool_card_url??"",status:t.status===1?"ACTIVE":"UNAVAILABLE",startsAt:o.start_time,endsAt:o.end_time,singlePrice:t.next_single_actual_cost??o.single_cost,multiPrice:t.next_multi_actual_cost??o.multi_cost,currencyType:o.currency_type,canDraw:t.status===1,isDefault:o.is_default===1}}function en(o,t){if(o.length===0)throw Error("[vibemon] active gacha pool catalog is empty");let a=new Map(t.map((i)=>[i.uuid,i]));return{pools:[...o].toSorted((i,n)=>i.sort_order-n.sort_order).map((i)=>{let n=a.get(i.uuid);if(n===void 0)throw Error(`[vibemon] gacha pool ${i.uuid} is missing its detail response`);return m(i,n)})}}function xt(o){let t=o.pools.flatMap((a)=>[a.sidebarSelectedImageUrl,a.sidebarHoverImageUrl,a.sidebarUnselectedImageUrl,a.poolCardImageUrl,a.pageBackgroundImageUrl]);return[...new Set(t.filter(Boolean))]}async function _t(){let t=[...await Rt()].toSorted((r,i)=>r.sort_order-i.sort_order),a=await Promise.all(t.map((r)=>kt(r.uuid)));return await Promise.all(a.map(async(r)=>{let i=c(r),n=await e().assets.resolveImages(i.vibemon_uuid,i.vibemon_resource_url);for(let[u,d]of Object.entries(n))Object.assign(i,{[`vibemon_${u}`]:d})})),en(t,a)}function l(o,t,a){let r=Date.parse(t);if(Number.isNaN(r))throw Error(`[vibemon] gacha pool ${o.poolUuid} has invalid ${a}: ${t}`);return r}function me(o,t){if(o.status==="UNAVAILABLE")return o.status;if(o.startsAt!==null&&t<l(o,o.startsAt,"startsAt"))return"UPCOMING";if(o.endsAt!==null&&t>=l(o,o.endsAt,"endsAt"))return"ENDED";return o.status}function Pt(o){let t=o.find((r)=>r.isDefault);if(t!==void 0)return t;let a=o[0];if(a===void 0)throw Error("[vibemon] gacha pool catalog has no visible pools");return a}function St(o,t){return o.filter((a)=>me(a,t)!=="ENDED")}
2
+ export{en,xt,_t,me,Pt,St};
@@ -0,0 +1,2 @@
1
+ import{n}from"./chunk-rerywpwe.js";import{m}from"./chunk-4gegjx79.js";import{y,ie,se,Pe,E,Se,zt}from"./chunk-mmj02855.js";var O=new TextEncoder,N=new TextDecoder;function re(r,d){let w=d.resource_package_format??0;return(r.format??0)===w&&r.version===(d.resource_version??null)&&(r.sourceUrl===void 0?w===0:r.sourceUrl===(w===1?d.resource_url:d.sheet_url))}function xe(r){let d=!1,w=new Map,k=new Map,M=new Map,S=new Map,R=new Set,A=Promise.resolve();function U(e){if(d)throw Error("Vibemon resources disposed");let s=r.account();if(s===null)throw Error("Sign in to load Vibemon resources");if(!/^[a-zA-Z0-9_-]+$/.test(e)||!/^[a-zA-Z0-9.-]+$/.test(s.apiHost))throw Error("Invalid resource identity");return`vibemon/catalog/${s.apiHost}/${e}`}function I(e){let s=r.account();if(s===null)return Promise.reject(Error("Sign in to load Vibemon resources"));let t=`${U(e)}/${s.userId}/${s.revision}`,i=k.get(t);if(i)return i;let o=H(e).finally(()=>{if(k.get(t)===o)k.delete(t)});return k.set(t,o),o}async function H(e){let s=r.account();if(s===null)throw Error("Sign in to load Vibemon resources");let t=U(e),i=await r.resources.read(`${t}/resource.json`);if(i===null){for(let l of[t,`vibemon/${s.apiHost}/${s.userId}/${e}`]){let f=await r.resources.read(`${l}/config.json`);if(f===null)continue;let a=JSON.parse(N.decode(f));if(!/^sprite-sheet\.(webp|png)$/.test(a.spritesheet))throw Error("Invalid legacy sprite filename");let v=m(JSON.stringify({frameWidth:a.frameSize,frameHeight:a.frameSize,states:a.states}));if(await r.resources.exists(`${l}/${a.spritesheet}`)){let b=await r.storage.get("vibemon.resourceVersion");return n(r,s),{directory:l,sheetName:a.spritesheet,layout:v,version:b?.[s.apiHost]?.[e]??0,config:a}}}return null}let o;try{o=JSON.parse(N.decode(i))}catch{return null}if(!o||o.format!==void 0&&o.format!==0&&o.format!==1)return null;if(o.format===1)try{let l=await r.resources.read(`${t}/manifest.json`),f=await r.resources.read(`${t}/resource.zip`);if(!l||!f||await se(f)!==o.archiveSha256)return null;let a=Pe(l),v=await Se(a,(b)=>r.resources.read(`${t}/${b}`));return n(r,s),{...o,directory:t,manifest:a,layout:v,sheetName:a.assets.sheet?.path??null}}catch{return n(r,s),null}let c=JSON.parse(N.decode(i));if(m(JSON.stringify(c.layout)),!/^sprite-sheet\.(webp|png)$/.test(c.sheet))throw Error("Invalid sprite filename");let u=await r.resources.exists(`${t}/${c.sheet}`);n(r,s);let h=await r.resources.read(`${t}/config.json`);return n(r,s),!u?null:{directory:t,sheetName:c.sheet,name:c.name,layout:c.layout,version:c.version,format:0,sourceUrl:o.sourceUrl,config:h===null?void 0:JSON.parse(N.decode(h))}}async function L(e){let s=r.account();if(s===null)throw Error("Sign in to load Vibemon resources");let t=await I(e);if(t===null)return null;if(t.sheetName===null)return{...t,sheet:null};let i=await r.resources.read(`${t.directory}/${t.sheetName}`);return n(r,s),i===null?null:{...t,sheet:i}}function J(e){let s=r.account();if(s===null)return Promise.reject(Error("Sign in to download Vibemon resources"));if(e.resource_package_format!=null&&(!Number.isInteger(e.resource_package_format)||e.resource_package_format<0))return Promise.reject(Error("Invalid Vibemon resource format"));if(e.resource_version!=null&&(!Number.isInteger(e.resource_version)||e.resource_version<0))return Promise.reject(Error("Invalid Vibemon resource version"));let t=U(e.uuid),i=JSON.stringify([s.revision,e.resource_package_format??0,e.resource_version??null,e.resource_url,e.sheet_url,e.layout]),o=w.get(t);if(o?.key===i)return o.work;let c=(M.get(t)??0)+1;M.set(t,c);let u=()=>{if(n(r,s),d||M.get(t)!==c)throw Error("Vibemon resource request superseded")},l=(async()=>{await o?.work.catch(()=>{}),u();let f=await L(e.uuid);if(n(r,s),f!==null&&re(f,e))return{...f,name:e.name};let a=e.resource_package_format??0;if(a!==0&&a!==1)throw Error(`Unsupported Vibemon resource format: ${a}`);if(a===1&&!e.resource_url)throw Error("Vibemon package URL is missing");if(a===0&&(!e.sheet_url||!e.layout))throw Error("Vibemon animation is unavailable");let v=a===0?m(e.layout):null,b=new URL(a===1?e.resource_url:e.sheet_url);if(b.protocol!=="https:")throw Error("Vibemon sprites require HTTPS");let C=b.pathname.toLowerCase().endsWith(".png")?"sprite-sheet.png":"sprite-sheet.webp",_=new AbortController;R.add(_);let g=`${t}.${crypto.randomUUID()}.tmp`;try{let P=await r.download(b.href,_.signal);if(u(),a===1){let p=await zt(P,r.validateImage);u();for(let[D,T]of p.files)await r.resources.write(`${g}/${D}`,T);await r.resources.write(`${g}/resource.zip`,P);let V={directory:t,format:1,sourceUrl:e.resource_url,version:e.resource_version??null,name:e.name,manifest:p.manifest,layout:p.layout,sheetName:p.manifest.assets.sheet?.path??null,archiveSha256:await se(P)};return await r.resources.write(`${g}/resource.json`,O.encode(JSON.stringify(V))),u(),_.signal.throwIfAborted(),await r.resources.replace(g,t),{...V,sheet:V.sheetName?p.files.get(V.sheetName):null}}if(P.byteLength===0)throw Error("Empty Vibemon spritesheet");await r.resources.write(`${g}/${C}`,P),await r.resources.write(`${g}/resource.json`,O.encode(JSON.stringify({layout:v,version:e.resource_version??null,sheet:C,name:e.name,sourceUrl:e.sheet_url}))),n(r,s),_.signal.throwIfAborted(),u(),await r.resources.replace(g,t),n(r,s);let x=A.catch(()=>{}).then(async()=>{n(r,s);let p=await r.storage.get("vibemon.resourceVersion")??{};n(r,s),await r.storage.set("vibemon.resourceVersion",{...p,[s.apiHost]:{...p[s.apiHost],[e.uuid]:e.resource_version??0}})});return A=x,await x,n(r,s),{directory:t,sheetName:C,sheet:P,name:e.name,layout:v,version:e.resource_version??null,format:0,sourceUrl:e.sheet_url}}finally{R.delete(_),await r.resources.remove(g)}})().finally(()=>{if(w.get(t)?.work===l)w.delete(t)});return w.set(t,{key:i,generation:c,work:l}),l}async function z(e){if(e.format!==1||!e.manifest)return{};let s=e.manifest,t={};return await Promise.all(y.map(async(i)=>{let o=s.assets[i];if(!o){t[i]=null;return}if(!ie(o.path))throw Error("Invalid cached Vibemon path");if(r.resources.url)t[i]=`${await r.resources.url(`${e.directory}/${o.path}`)}?v=${o.sha256}`;else{let c=`${e.directory}/${o.sha256}`,u=S.get(c);if(!u){let h=await r.resources.read(`${e.directory}/${o.path}`);if(h===null)throw Error("Cached Vibemon image is missing");u=URL.createObjectURL(new Blob([new Uint8Array(h).buffer],{type:E(h).mime})),S.set(c,u)}t[i]=u}})),t}function j(){for(let e of R)e.abort();R.clear()}return{inspect:I,visuals:z,async preview(e){let s=e.manifest?.assets.cover??e.manifest?.assets.icon;return s?r.resources.read(`${e.directory}/${s.path}`):null},cached:L,ensure:J,cancel:j,dispose(){d=!0,j();for(let e of S.values())URL.revokeObjectURL(e);S.clear()}}}
2
+ export{re,xe};
@@ -0,0 +1,2 @@
1
+ import{s,M}from"./chunk-2k8my1h9.js";import{t}from"./chunk-5jz8vnk5.js";import{k,Te}from"./chunk-m18rjmg2.js";import{useLayoutEffect as f,useRef as p,useState as u}from"react";import{jsxDEV as n}from"react/jsx-dev-runtime";var d=1.778723404255319,g="#120E18",h={x1:0.3,x2:0.8,y1:0.56,y2:1},v=h.x2-h.x1,w=h.y2-h.y1,y=(h.x1+h.x2)/2,x=0.8;function S(e,a){let c=Math.max(e,a*d),l=Math.min(e/v,a/w*d),o=Math.max(Math.min(c,l),x*c),i=o/d,r=o<=e?(e-o)/2:Math.min(0,Math.max(e-o,e/2-y*o)),b=i<=a?(a-i)/2:a-i;return{width:o,height:i,left:r,top:b}}function E(e){let[a,c]=u({width:0,height:0,left:0,top:0});return f(()=>{let l=e.current;if(!l)return;let o=new ResizeObserver(([i])=>{let{width:r,height:b}=i.contentRect;c(S(r,b))});return o.observe(l),()=>o.disconnect()},[e]),a}var R={vibemon:{box:{left:"15.75%",top:"68.40%",width:"16.60%"},label:{left:"30.80%",top:"88.00%",width:"9.2%"}},wish:{box:{left:"50.40%",top:"58.40%",width:"14.50%"},label:{left:"54.00%",top:"84.50%",width:"6.8%"}},album:{box:{left:"75.80%",top:"64.65%",width:"20.20%"},label:{left:"74.60%",top:"73.20%",width:"7.2%"}}};function m({assetKey:e,onClick:a,highlighted:c,disabled:l}){let[o,i]=u(!1),r=R[e];return n("div",{className:`pointer-events-none absolute inset-0 ${c?"z-30":""}`,children:[n(t,{variant:"ghost",className:"pointer-events-auto absolute h-auto p-0 hover:bg-transparent dark:hover:bg-transparent",style:r.box,"aria-label":e==="vibemon"?"Vibémon":e==="wish"?"Wish":"Album",disabled:l,onClick:a,onMouseEnter:()=>i(!0),onMouseLeave:()=>i(!1),children:[n("img",{src:s[e].icon,alt:"",className:"block w-full select-none",style:{opacity:o?0:1}},void 0,!1,void 0,this),n("img",{src:s[e].hover,alt:"","aria-hidden":!0,className:"absolute inset-0 h-full w-full select-none",style:{opacity:o?1:0}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),n("img",{src:s[e].text,alt:"","aria-hidden":!0,className:"pointer-events-none absolute transition-opacity duration-200 select-none",style:{...r.label}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Re({onDraw:e,onBackpack:a,onEquip:c,guideActive:l}){let o=p(null),i=E(o);return n("div",{ref:o,className:"relative h-full w-full overflow-hidden",children:[n("div",{className:"absolute inset-0",style:{background:g}},void 0,!1,void 0,this),n("div",{"data-testid":"vibemon-home-stage",className:"[container-type:size] absolute",style:{width:i.width,height:i.height,left:i.left,top:i.top},children:[n("img",{src:M,alt:"",className:"block h-full w-full select-none"},void 0,!1,void 0,this),n("div",{className:"pointer-events-none absolute inset-0",children:[n(m,{assetKey:"vibemon",onClick:c,highlighted:!1,disabled:l},void 0,!1,void 0,this),n(m,{assetKey:"wish",onClick:e,highlighted:l,disabled:!1},void 0,!1,void 0,this),n(m,{assetKey:"album",onClick:a,highlighted:!1,disabled:l},void 0,!1,void 0,this)]},void 0,!0,void 0,this),l&&n(k,{},void 0,!1,void 0,this),l&&n(Te,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}
2
+ export{Re};
@@ -0,0 +1,2 @@
1
+ import o from"@alwith/module-auth/assets/pets/card-draw/album-icon.png?url";import r from"@alwith/module-auth/assets/pets/card-draw/dialog-close.png?url";import t from"@alwith/module-auth/assets/pets/card-draw/empty-pet.png?url";import e from"@alwith/module-auth/assets/pets/card-draw/gem-plus.svg?url";import m from"@alwith/module-auth/assets/pets/card-draw/gem.svg?url";import p from"@alwith/module-auth/assets/pets/card-draw/new-tag.svg?url";import i from"@alwith/module-auth/assets/pets/card-draw/not-enough-dialog.png?url";import n from"@alwith/module-auth/assets/pets/card-draw/placeholder-card.png?url";import u from"@alwith/module-auth/assets/pets/card-draw/proceed-active.png?url";import a from"@alwith/module-auth/assets/pets/card-draw/proceed-default.png?url";import d from"@alwith/module-auth/assets/pets/card-draw/proceed-hover.png?url";import U from"@alwith/module-auth/assets/pets/card-draw/pull-album-icon-transparent.png?url";import h from"@alwith/module-auth/assets/pets/card-draw/pull-back-transparent.png?url";import b from"@alwith/module-auth/assets/pets/card-draw/pull-gem.svg?url";import B from"@alwith/module-auth/assets/pets/card-draw/pull-page-background.png?url";import k from"@alwith/module-auth/assets/pets/card-draw/pull-texture.png?url";import w from"@alwith/module-auth/assets/pets/card-draw/pull-vibemon-icon-transparent.png?url";import A from"@alwith/module-auth/assets/pets/card-draw/result-aura.webp?url";import v from"@alwith/module-auth/assets/pets/card-draw/wish-default.png?url";import T from"@alwith/module-auth/assets/pets/card-draw/wish.webp?url";import I from"@alwith/module-auth/assets/pets/vibemon/album/arrow.svg?url";import V from"@alwith/module-auth/assets/pets/vibemon/album/book.webp?url";import S from"@alwith/module-auth/assets/pets/vibemon/album/page-bg.webp?url";import C from"@alwith/module-auth/assets/pets/vibemon/equip/page-bg.webp?url";import y from"@alwith/module-auth/assets/pets/vibemon/equip/single-pet-toast.png?url";import R from"@alwith/module-auth/assets/pets/vibemon/guide/arrow.svg?url";import E from"@alwith/module-auth/assets/pets/vibemon/guide/bubble-texture-home.png?url";import J from"@alwith/module-auth/assets/pets/vibemon/guide/bubble-texture-pull.png?url";import K from"@alwith/module-auth/assets/pets/vibemon/guide/hand-shape.svg?url";import N from"@alwith/module-auth/assets/pets/vibemon/guide/hand-sheen.png?url";import Q from"@alwith/module-auth/assets/pets/vibemon/guide/hand.svg?url";import X from"@alwith/module-auth/assets/pets/vibemon/guide/mascot.png?url";import Y from"@alwith/module-auth/assets/pets/vibemon/guide/ring.svg?url";import oo from"@alwith/module-auth/assets/pets/vibemon/home/album-icon-hover.png?url";import ro from"@alwith/module-auth/assets/pets/vibemon/home/album-icon.png?url";import to from"@alwith/module-auth/assets/pets/vibemon/home/album-text.png?url";import eo from"@alwith/module-auth/assets/pets/vibemon/home/home-bg.webp?url";import mo from"@alwith/module-auth/assets/pets/vibemon/home/intro.mp4?url&no-inline";import po from"@alwith/module-auth/assets/pets/vibemon/home/pull.mp4?url&no-inline";import io from"@alwith/module-auth/assets/pets/vibemon/home/pull.webm?url&no-inline";import lo from"@alwith/module-auth/assets/pets/vibemon/home/vibemon-icon-hover.png?url";import no from"@alwith/module-auth/assets/pets/vibemon/home/vibemon-icon.png?url";import uo from"@alwith/module-auth/assets/pets/vibemon/home/vibemon-text.png?url";import co from"@alwith/module-auth/assets/pets/vibemon/home/wish-icon-hover.png?url";import so from"@alwith/module-auth/assets/pets/vibemon/home/wish-icon.png?url";import ao from"@alwith/module-auth/assets/pets/vibemon/home/wish-text.png?url";import fo from"@alwith/module-auth/assets/pets/vibemon/loading/background.webp?url";import go from"@alwith/module-auth/assets/pets/vibemon/loading/logo.webp?url";import xo from"@alwith/module-auth/assets/pets/vibemon/multi-draw/bg-sr.png?url";import Uo from"@alwith/module-auth/assets/pets/vibemon/multi-draw/bg-ssr.png?url";var s={vibemon:{icon:no,hover:lo,text:uo},wish:{icon:so,hover:co,text:ao},album:{icon:ro,hover:oo,text:to}},Ze={default:a,hover:d,active:u},M=eo,Ye=mo,Qe=po,Xe=io,q=R,D=E,L=J,x=X,z=Q,_=K,O=N,H=Y,Ke=I,Je=V,et=S,tt=C,nt=y,ot=fo,rt=go,it=xo,st=Uo,at=T,lt=v,P=p,ct=i,ut=r,dt=t,G=m,F=e,c=k,j=b,W=B,f=h,g=w,Z=U,mt=o,l=n,pt=A;
2
+ export{s,Ze,M,Ye,Qe,Xe,q,D,L,x,z,_,O,H,Ke,Je,et,tt,nt,ot,rt,it,st,at,lt,P,ct,ut,dt,G,F,c,j,W,f,g,Z,mt,l,pt};
@@ -0,0 +1,2 @@
1
+ import{l}from"./chunk-2k8my1h9.js";var e=["https://static.alwith.ai/","https://static-alwith-ai-dev.tos-ap-southeast-1.bytepluses.com/"],o="x-tos-process=image/format,webp",n=l;function i(t){if(!t)return n;if(!e.some((s)=>t.startsWith(s)))return t;if(t.includes("x-tos-process="))return t;return`${t}${t.includes("?")?"&":"?"}${o}`}
2
+ export{i};
@@ -0,0 +1,2 @@
1
+ var r=["SSR","SR","R","UC","C"],n=(e)=>{let t=r.indexOf(e);return t===-1?r.length:t};function J(e){return[...e].toSorted((t,o)=>n(t.rarity_code)-n(o.rarity_code))}
2
+ export{J};
@@ -0,0 +1 @@
1
+ import{cn as r}from"cn";import{jsxDEV as d}from"react/jsx-dev-runtime";function We({className:a,size:t="default",...o}){return d("div",{"data-slot":"card","data-size":t,className:r("group/card bg-card text-card-foreground ring-foreground/10 flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl py-(--card-spacing) text-sm shadow-xs ring-1 [--card-spacing:--spacing(6)] has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(4)] *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",a),...o},void 0,!1,void 0,this)}function hn({className:a,...t}){return d("div",{"data-slot":"card-header",className:r("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)",a),...t},void 0,!1,void 0,this)}function bn({className:a,...t}){return d("div",{"data-slot":"card-title",className:r("font-heading text-base leading-normal font-medium group-data-[size=sm]/card:text-sm",a),...t},void 0,!1,void 0,this)}function wn({className:a,...t}){return d("div",{"data-slot":"card-description",className:r("text-muted-foreground text-sm",a),...t},void 0,!1,void 0,this)}function vn({className:a,...t}){return d("div",{"data-slot":"card-action",className:r("col-start-2 row-span-2 row-start-1 self-start justify-self-end",a),...t},void 0,!1,void 0,this)}function yn({className:a,...t}){return d("div",{"data-slot":"card-content",className:r("flex flex-col gap-3 px-(--card-spacing)",a),...t},void 0,!1,void 0,this)}function xn({className:a,...t}){return d("div",{"data-slot":"card-footer",className:r("flex items-center rounded-b-xl px-(--card-spacing) [.border-t]:pt-(--card-spacing)",a),...t},void 0,!1,void 0,this)}export{We,hn,bn,wn,vn,yn,xn};
@@ -0,0 +1,2 @@
1
+ function Bt(n,o,x,u,r,k){let e=n+x,c=o+u,l=n+x/2;r=Math.min(r,x/2,u/2);let t=r*0.5522847498307936;return[{kind:"move",x:n+r,y:o},{kind:"line",x:e-r,y:o},{kind:"curve",control1X:e-r+t,control1Y:o,control2X:e,control2Y:o+r-t,x:e,y:o+r},{kind:"line",x:e,y:c-r},{kind:"curve",control1X:e,control1Y:c-r+t,control2X:e-r+t,control2Y:c,x:e-r,y:c},{kind:"line",x:l+k,y:c},{kind:"line",x:l+1,y:c+k-1},{kind:"curve",control1X:l+0.5,control1Y:c+k-0.5,control2X:l-0.5,control2Y:c+k-0.5,x:l-1,y:c+k-1},{kind:"line",x:l-k,y:c},{kind:"line",x:n+r,y:c},{kind:"curve",control1X:n+r-t,control1Y:c,control2X:n,control2Y:c-r+t,x:n,y:c-r},{kind:"line",x:n,y:o+r},{kind:"curve",control1X:n,control1Y:o+r-t,control2X:n+r-t,control2Y:o,x:n+r,y:o},{kind:"close"}]}function Mt(n){return n.map(y).join(" ")}function y(n){switch(n.kind){case"move":return`M${n.x},${n.y}`;case"line":return`L${n.x},${n.y}`;case"curve":return`C${n.control1X},${n.control1Y} ${n.control2X},${n.control2Y} ${n.x},${n.y}`;case"close":return"Z"}}function qt(n,o){return n.map((x)=>b(x,o))}function b(n,o){switch(n.kind){case"move":case"line":return{kind:n.kind,x:n.x*o,y:n.y*o};case"curve":return{kind:"curve",control1X:n.control1X*o,control1Y:n.control1Y*o,control2X:n.control2X*o,control2Y:n.control2Y*o,x:n.x*o,y:n.y*o};case"close":return n}}
2
+ export{Bt,Mt,qt};
@@ -0,0 +1,2 @@
1
+ class ge{apply;requested=!1;interacting=!1;visible=null;state=null;prompt=null;sessionId=null;revision=-1;ownerLabel="";observed=!1;constructor(e){this.apply=e}bind(e,t){if(this.sessionId===e&&this.revision===t)return;let i=this.requested&&e!==null;this.sessionId=e,this.revision=t,this.ownerLabel="",this.reset(),this.requested=i}owner(e){if(this.ownerLabel!==""&&this.ownerLabel!==e)this.reset();this.ownerLabel=e}reset(){this.requested=!1,this.interacting=!1,this.visible=null,this.state=null,this.prompt=null,this.observed=!1,this.publish()}update(e,t,i){if(e!==null&&i!==null){let s=this.observed&&(e!==this.state||t!==this.prompt);if(this.state=e,this.prompt=t,this.observed=!0,s&&(e==="running"||e==="requires_action"||t!==null))this.requested=!0}if(this.visible=i,i&&!this.interacting)this.requested=!1;this.publish()}open(){if(this.sessionId===null)return;this.requested=!0,this.interacting=!0,this.publish()}interact(){if(!this.requested)return;this.interacting=!0,this.publish()}close(){this.requested=!1,this.interacting=!1,this.publish()}publish(){this.apply(this.requested&&(this.interacting||this.visible===!1))}}
2
+ export{ge};
@@ -0,0 +1,2 @@
1
+ import{E}from"./chunk-mmj02855.js";import{e}from"./chunk-htw56xtp.js";import{ne,oe}from"./chunk-v9czb1e6.js";async function Lt(r){return await e().assets.resources.inspect(r)!==null}async function v(r){let s=e().assets,t=await s.resources.cached(r)??await s.ensureResource(r);if(t.sheet===null){let i=await s.resources.preview(t),n=i?URL.createObjectURL(new Blob([new Uint8Array(i).buffer],{type:E(i).mime})):"";return{config:ne(t.name??r,"",{frameWidth:256,frameHeight:256,states:[{id:"static",row:0,frames:1}]}),spriteUrl:n,staticImage:!0,dispose:()=>{if(n)URL.revokeObjectURL(n)}}}let o=t.sheet,a=o[0]===137&&o[1]===80,c=URL.createObjectURL(new Blob([new Uint8Array(o).buffer],{type:a?"image/png":"image/webp"}));return{config:oe(r,t),spriteUrl:c,dispose:()=>URL.revokeObjectURL(c)}}
2
+ export{Lt,v};
@@ -0,0 +1,2 @@
1
+ function m(t){let e=JSON.parse(t);if(!e||!Number.isInteger(e.frameWidth)||e.frameWidth<1||e.frameWidth>4096||!Number.isInteger(e.frameHeight)||e.frameHeight<1||e.frameHeight>4096||!Array.isArray(e.states)||e.states.length<1||e.states.length>32||e.states.some((r)=>!r||typeof r.id!=="string"||!r.id||!Number.isInteger(r.row)||r.row<0||!Number.isInteger(r.frames)||r.frames<1||r.frames>128)||new Set(e.states.map((r)=>r.id)).size!==e.states.length||e.states.reduce((r,s)=>r+s.frames,0)>512)throw Error("Invalid Vibemon sprite layout");return e}
2
+ export{m};
@@ -0,0 +1,2 @@
1
+ import{r}from"./chunk-rerywpwe.js";import{re}from"./chunk-21abksd2.js";import{e}from"./chunk-htw56xtp.js";import{createStore as h}from"zustand/vanilla";var ee=h(()=>({status:"idle"})),Wt=()=>ee.getState().status,Nt=(t)=>ee.setState({status:t}),Zt=(t)=>ee.subscribe((a)=>t(a.status)),i=null;async function te(){let t=e();if(t.synchronizeResources!==void 0)return t.synchronizeResources();let a=t.account();if(a===null)return;let p=`${r(a)}/${a.revision}`,n=()=>{let o=t.account();return o!==null&&`${r(o)}/${o.revision}`===p};if(i?.scope===p)return i.operation;let u=(o)=>{if(n())Nt(o)},y=(o,c)=>{if(!n())return;if(t.onResourceSyncError)t.onResourceSyncError(o,c);else console.warn("[vibemon] resource sync failed",c,o)},d=(async()=>{u("checking");try{let o=await t.assets.getVibemonCatalog();if(!n())return;let c=new Set,S=0,f=!1;if(await Promise.all(Array.from({length:Math.min(6,o.length)},async()=>{while(n()&&S<o.length){let s=o[S++];try{let l=await t.assets.resources.inspect(s.uuid);if(l&&re(l,s))continue;u("updating"),await t.assets.resources.ensure(s),c.add(s.uuid)}catch(l){f=!0,y(l,{phase:"resource",petId:s.uuid})}}})),n())try{await t.resourcesSynchronized?.(c)}catch(s){if(n())t.onError(s)}u(f?"error":c.size===0?"idle":"done")}catch(o){u("error"),y(o,{phase:"catalog"})}})();i={scope:p,operation:d};try{await d}finally{if(i?.operation===d)i=null}}
2
+ export{ee,Wt,Nt,Zt,te};
@@ -0,0 +1,2 @@
1
+ import{t}from"./chunk-5jz8vnk5.js";import{LoaderCircleIcon as a,Minimize2Icon as i}from"lucide-react";import{useTranslation as s}from"react-i18next";import{jsxDEV as o}from"react/jsx-dev-runtime";function $t({busy:e,onClick:r}){let{t:n}=s("common");return o(t,{variant:"ghost",size:"icon-xs",title:n("petMode.enter"),"aria-label":n("petMode.enter"),disabled:e,onClick:r,className:"group text-muted-foreground hover:text-muted-foreground shrink-0 hover:bg-transparent dark:hover:bg-transparent",children:e?o(a,{className:"size-4 animate-spin"},void 0,!1,void 0,this):o(i,{className:"size-4"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}
2
+ export{$t};
@@ -0,0 +1 @@
1
+ import{Button as n}from"@base-ui/react/button";import{cva as d}from"class-variance-authority";import{cn as o}from"cn";import{jsxDEV as s}from"react/jsx-dev-runtime";var Jt=d("group/button focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 inline-flex shrink-0 items-center justify-center rounded-md border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:ring-3 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:ring-3 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50 shadow-xs",secondary:"bg-secondary text-secondary-foreground aria-expanded:bg-secondary aria-expanded:text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)]",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 gap-1.5 px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),8px)] px-2 text-xs in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-8 gap-1 rounded-[min(var(--radius-md),10px)] px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5",lg:"h-10 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-9","icon-xs":"size-6 rounded-[min(var(--radius-md),8px)] in-data-[slot=button-group]:rounded-md [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-8 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-md","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function t({className:e,variant:r="default",size:i="default",...a}){return s(n,{"data-slot":"button",className:o(Jt({variant:r,size:i,className:e})),...a},void 0,!1,void 0,this)}export{Jt,t};
@@ -0,0 +1,2 @@
1
+ import{e}from"./chunk-htw56xtp.js";import{Tt}from"./chunk-g47n16v3.js";import{At,pe,It,Et,Vt}from"./chunk-9wqfns8y.js";import{xt,_t}from"./chunk-1mq984ah.js";import{ve}from"./chunk-9h4j75af.js";import{u,be,A}from"./chunk-w1z1g5c5.js";import{ft,gt}from"./chunk-70nb6x0r.js";import{s,M,q,D,L,x,z,_,O,H,G,F,c,j,W,f,g,Z}from"./chunk-2k8my1h9.js";import{a,de}from"./chunk-yjdj2mf9.js";import{i}from"./chunk-2skzpxsk.js";import{te}from"./chunk-4h2756zy.js";import{$e}from"./chunk-wbvah1ty.js";import{Be}from"./chunk-my19acdk.js";import{Re}from"./chunk-2aq8zkwb.js";import{ae,ke}from"./chunk-hj17ea3j.js";import{Ge}from"./chunk-8xd6kn1b.js";import{Ue}from"./chunk-0ze5xzg5.js";import{Ve}from"./chunk-wcenmfkf.js";import{Loader2 as to}from"lucide-react";import{useCallback as C,useEffect as E,useRef as N,useState as t}from"react";import{useTranslation as ro}from"react-i18next";import{toast as io}from"sonner";import{jsxDEV as r}from"react/jsx-dev-runtime";var ao=30000,ue=[M,s.vibemon.icon,s.vibemon.hover,s.vibemon.text,s.wish.icon,s.wish.hover,s.wish.text,s.album.icon,s.album.hover,s.album.text,q,D,x],We=[W,f,g,Z,c,j,G,F,L,z,_,O,x,H],ce=(l)=>{let m=a();return!!(m&&l[m])},me=(l,m)=>{let w=a();if(!w)return;A(l,{...u(l),[w]:m})},fe=(l)=>{let m=a();if(!m)return null;return l[m]??null},lo=(l)=>{let m=a();if(!m)return;A("vibemon.onboardingStep",{...u("vibemon.onboardingStep"),[m]:l})};function Gt(){return r("div",{className:"contents",onContextMenu:(l)=>l.preventDefault(),children:r(so,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function so(){let{t:l}=ro("vibemon"),[m,w]=t(()=>{let o=fe(u("vibemon.onboardingStep"));return o==="free-draw"||o==="view-album"?"pull":"home"}),[k,v]=t("idle"),[h,je]=t(()=>fe(u("vibemon.onboardingStep"))),[S,we]=t(!1),[K,J]=t(!1),[R,Ke]=t([]),[ze,ge]=t(null),[U,Je]=t(!1),[Q,he]=t(0),[X,Se]=t(!1),[Qe,Xe]=t([]),[Ye,ye]=t(!1),[Y,Ze]=t(null),[Pe,Ee]=t(null),[Ie,De]=t({done:0,total:We.length}),[Ae,eo]=t(!1),[y,I]=t(()=>ce(u("vibemon.introSeen"))?"loading":"resolving-intro"),[Le,oo]=t({done:0,total:ue.length}),[_e,no]=t(null),Ce=N(!1),T=C((o)=>{je(o),lo(o)},[]),b=C(()=>w("pull"),[]);E(()=>{if(y!=="loading"||Ce.current)return;Ce.current=!0,ve(ue,(o)=>{oo({done:o,total:ue.length})}).catch((o)=>{let n=o instanceof Error?o:Error(String(o));no(n)})},[y]);let He=N(0),Oe=N(!1),ee=N(!1),P=C(async()=>{let o=++He.current;try{let n=await At();if(o===He.current)Ke(n),Je(!0),ge(null)}catch(n){ge(n instanceof Error?n:Error(String(n))),console.warn("[vibemon] getMyVibemons failed",n)}},[]),xe=N(!1),Ne=N(!1),oe=C(async()=>{try{let o=await _t();Ee(null);let n=[...new Set([...We,...xt(o)])],p=!xe.current;if(p)De({done:0,total:n.length});if(await ve(n,(B)=>{if(p)De({done:B,total:n.length})}),Ze(o),p)xe.current=!0,eo(!0)}catch(o){let n=o instanceof Error?o:Error(String(o));console.error("[vibemon] loadGachaPoolCatalog failed",n),Ee(n)}},[]);E(()=>{if(y!=="loading"||Ne.current)return;Ne.current=!0,oe()},[y,oe]),E(()=>{let o=()=>{pe().then((p)=>{he(p.available_points),Se(!0)}).catch((p)=>console.warn("[vibemon] getPointAccount failed",p))};o();let n=setInterval(o,ao);return window.addEventListener("focus",o),()=>{clearInterval(n),window.removeEventListener("focus",o)}},[]),E(()=>{for(let o of R)new Image().src=i(o.gacha_url??o.cover_url)},[R]);let ne=()=>{if(K)me("vibemon.albumHasUnseen",!1),J(!1);P(),w("album")},V=C(()=>{P(),w("equip")},[P]);E(()=>{if(Oe.current)return;Oe.current=!0,P(),Promise.all([It().catch((o)=>(console.warn("[vibemon] getGachaFirstDraw failed",o),{first_draw:!1})),be("vibemon.albumHasUnseen")]).then(([o,n])=>{if(we(o.first_draw),J(ce(n)),!o.first_draw)return;if(fe(u("vibemon.onboardingStep"))==="free-draw"){b();return}T("home-wish"),w("home")}),be("vibemon.introSeen").then((o)=>{if(ce(o)){I("loading");return}return Et().then(({first_visit:n})=>{if(me("vibemon.introSeen",!0),n)w("home"),v("intro"),I("intro");else I("loading")})}).catch((o)=>{console.warn("[vibemon] first-visit check failed",o),I("loading")})},[b,P,T]);let[Me,qe]=t(!1),re=C((o)=>{if(S&&h==="home-wish")return;if(S&&h==="free-draw"){b();return}if(o==="pull")b();else if(o==="equip")V();else qe(!0)},[S,h,V,b]);if(E(()=>{let o=ft();if(o)re(o);return gt(re)},[re]),E(()=>{if(!Me||!U)return;if(qe(!1),R.length===0)b();else V()},[Me,U,R.length,V,b]),ze!==null)return r("div",{role:"alert",className:"bg-background text-foreground flex h-full flex-col items-center justify-center gap-3 p-6",children:[r("p",{children:l("offline.title")},void 0,!1,void 0,this),r("p",{className:"text-muted-foreground text-sm",children:l("offline.description")},void 0,!1,void 0,this),r("button",{type:"button",className:"rounded-md border px-4 py-2",onClick:()=>void P(),children:l("offline.retry")},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(y==="resolving-intro")return r("div",{className:"relative flex h-full w-full items-center justify-center overflow-hidden bg-[#120E18]",children:[r("video",{src:ae,preload:"auto",muted:!0,playsInline:!0,"aria-hidden":!0,className:"pointer-events-none absolute top-0 left-0 h-px w-px opacity-0"},void 0,!1,void 0,this),r(to,{className:"size-10 animate-spin text-white"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(y==="intro")return r("div",{className:"relative h-full w-full overflow-hidden bg-[#120E18]",children:r(ke,{onVideoStart:()=>v("intro"),onDone:()=>{v("idle"),I("loading")}},void 0,!1,void 0,this)},void 0,!1,void 0,this);if(_e!==null)throw _e;if(Pe!==null)throw Pe;if(y==="loading"){let o=Le.done+Ie.done+(Y===null?0:1)+(Ae?1:0),n=Le.total+Ie.total+2;return r("div",{className:"relative h-full w-full overflow-hidden",children:r(Ge,{progress:o/n,onFinished:()=>I("ready")},void 0,!1,void 0,this)},void 0,!1,void 0,this)}if(m==="home")return r(Re,{onDraw:()=>{if(h==="home-wish")T("free-draw");b()},onBackpack:ne,onEquip:V,guideActive:S&&h==="home-wish"},void 0,!1,void 0,this);if(m==="equip")return r(Be,{onBack:()=>w("home"),onWish:b,onAlbum:ne,albumHasUnseen:K,ownedCards:R,ownedLoaded:U,availablePoints:Q,pointsLoaded:X},void 0,!1,void 0,this);if(m==="album")return r($e,{onBack:()=>w("home"),onWish:b,onEquip:V,ownedCards:R,ownedLoaded:U,availablePoints:Q,pointsLoaded:X},void 0,!1,void 0,this);if(Y===null||!Ae)throw Error("[vibemon] app entered ready state before gacha resources were loaded");let Fe=async(o,n)=>{if(ee.current||k!=="idle")return;ee.current=!0,ye(!0);try{let p;try{p=await Vt(o,n)}catch(d){console.warn("[vibemon] drawGachaPool failed",d),io.error(l("draw.failedNetwork"));return}let B=n==="SINGLE"?1:10;if(p.results.length!==B)throw Error(`[vibemon] ${n} draw response must contain ${B} results, received ${p.results.length}`);await Promise.all(p.results.map(async(d)=>{if(d.reward_type==="WHITE_CARD"||!d.vibemon_uuid)return;Object.assign(d,await e().assets.resolveImages(d.vibemon_uuid))}));let Te=p.results.map(Tt),ie=[];for(let[d,le]of p.results.entries()){if(le.reward_type==="WHITE_CARD")continue;ie.push(le);let se=Te[d];if(se?.kind!=="card")throw Error(`[vibemon] draw result ${le.draw_index} was not mapped to a Vibemon card`);new Image().src=i(n==="SINGLE"?se.singleImageUrl:se.multiImageUrl)}if(Xe(Te),we(!1),h==="free-draw")T("view-album");if(v("video-waiting"),ie.length>0){let d=ie[0];if(d===void 0)throw Error("[vibemon] draw result lost its first Vibemon item");te(),de(d.vibemon_uuid,S),P()}oe(),pe().then((d)=>{he(d.available_points),Se(!0)}).catch((d)=>console.warn("[vibemon] getPointAccount failed",d))}finally{ee.current=!1,ye(!1)}};return r("div",{className:"relative h-full w-full",children:[r(Ve,{onBack:()=>w("home"),onAlbum:ne,onEquip:V,isFirstDraw:S,availablePoints:Q,pointsLoaded:X,onSingleDraw:(o)=>void Fe(o,"SINGLE"),onMultiDraw:(o)=>void Fe(o,"MULTI"),drawDisabled:Ye||k!=="idle",albumHasUnseen:K,guideActive:S&&h==="free-draw",poolCatalog:Y},void 0,!1,void 0,this),k!=="intro"&&r(Ue,{phase:k,drawnRewards:Qe,onVideoStarted:()=>v("video-playing"),onPullDone:()=>v("result"),onPullFailed:()=>v("result"),onResultConfirmed:(o)=>{if(o)me("vibemon.albumHasUnseen",!0),J(!0);v("idle")}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}
2
+ export{Gt};
@@ -0,0 +1,2 @@
1
+ import{Ee}from"./chunk-7xtvv8a7.js";var i=new Set(["Antarctica","Australia","Pacific/Auckland","Pacific/Chatham","Pacific/Fiji","Pacific/Noumea","Pacific/Port_Moresby","Pacific/Guadalcanal","Pacific/Tongatapu","Pacific/Apia","Pacific/Tahiti","America/Sao_Paulo","America/Argentina","America/Santiago","America/Montevideo","America/Asuncion","America/La_Paz","America/Lima","America/Recife","America/Bahia","America/Cuiaba","America/Campo_Grande","Africa/Johannesburg","Africa/Maputo","Africa/Windhoek","Africa/Harare","Africa/Lusaka","Africa/Gaborone","Africa/Luanda","Africa/Dar_es_Salaam","Indian/Antananarivo","Indian/Mauritius","Indian/Reunion"]);function r(){let a=Intl.DateTimeFormat().resolvedOptions().timeZone;if(!a)return"north";let e=a.split("/")[0];if(i.has(a)||i.has(e))return"south";let n=a.split("/").slice(0,2).join("/");return i.has(n)?"south":"north"}function Ie(){return Ee(new Date,r())}
2
+ export{Ie};
@@ -0,0 +1,2 @@
1
+ var n=null,i=new Set;function jt(e){n=e;for(let o of i)o(e)}function ft(){let e=n;return n=null,e}function gt(e){return i.add(e),()=>{i.delete(e)}}
2
+ export{jt,ft,gt};
@@ -0,0 +1,2 @@
1
+ class bt{surfaces={main:{sessionId:null,visible:!1},chat:{sessionId:null,visible:!1}};selectedWindow=null;target(){if(this.selectedWindow!==null){let e=this.surfaces[this.selectedWindow].sessionId;if(e!==null)return e;this.selectedWindow=null}return this.surfaces.chat.sessionId??this.surfaces.main.sessionId}surface(e,s){this.surfaces[e]=s,this.target()}select(e){if(this.surfaces.chat.sessionId===e)this.selectedWindow="chat";else if(this.surfaces.main.sessionId===e)this.selectedWindow="main";else throw Error("The conversation is no longer current")}collapse(e){this.surfaces.chat={...this.surfaces.chat,sessionId:e},this.selectedWindow=null}reset(){this.selectedWindow=null}}
2
+ export{bt};
@@ -0,0 +1,2 @@
1
+ import{SolarTime as s}from"tyme4ts";var u={立春:"spring",雨水:"spring",惊蛰:"spring",春分:"spring",清明:"spring",谷雨:"spring",立夏:"summer",小满:"summer",芒种:"summer",夏至:"summer",小暑:"summer",大暑:"summer",立秋:"autumn",处暑:"autumn",白露:"autumn",秋分:"autumn",寒露:"autumn",霜降:"autumn",立冬:"winter",小雪:"winter",大雪:"winter",冬至:"winter",小寒:"winter",大寒:"winter"},o={spring:"autumn",summer:"winter",autumn:"spring",winter:"summer"};function Ee(n=new Date,m="north"){let e=new Date(n.getTime()+28800000),t=s.fromYmdHms(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds()).getTerm().getName(),r=u[t];if(!r)throw Error(`Unknown solar term: ${t}`);return m==="south"?o[r]:r}
2
+ export{Ee};
@@ -0,0 +1,2 @@
1
+ import{Qe,Xe}from"./chunk-2k8my1h9.js";var Ce=[{src:Qe,type:"video/mp4"},{src:Xe,type:"video/webm"}];
2
+ export{Ce};
File without changes
@@ -0,0 +1,2 @@
1
+ import{yt}from"./chunk-b5zfgr86.js";import{ot,rt}from"./chunk-2k8my1h9.js";import{p}from"./chunk-w5yer870.js";import{useEffect as w,useRef as u,useState as b}from"react";import{jsxDEV as e}from"react/jsx-dev-runtime";var v=98.902;function Ge({progress:o,onFinished:r}){let[i,f]=b(0),s=u(o);s.current=o;let l=u(r);l.current=r,w(()=>{let n=0,c=performance.now(),t=0,m=(d)=>{let g=Math.min((d-c)/1000,0.1);if(c=d,t=yt(t,s.current,g),f(t),t>=1){l.current();return}n=requestAnimationFrame(m)};return n=requestAnimationFrame(m),()=>cancelAnimationFrame(n)},[]);let a=Math.round(i*100);return e(p,{backdrop:e("img",{src:ot,alt:"","aria-hidden":!0,className:"pointer-events-none absolute inset-0 h-full w-full object-cover select-none"},void 0,!1,void 0,this),children:[e("img",{src:rt,alt:"Vibémon",className:"pointer-events-none absolute top-[17.140%] left-[22.049%] h-[56.559%] w-[55.903%] max-w-none select-none"},void 0,!1,void 0,this),e("div",{"data-testid":"vibemon-loading-progress",role:"progressbar","aria-label":`Loading ${a}%`,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":a,className:"absolute top-[83.050%] left-1/2 flex w-[52.083%] -translate-x-1/2 flex-col gap-[0.625cqw]",children:[e("p",{className:"text-right text-[1.458cqw] leading-normal tracking-[0.08em] text-white",style:{fontFamily:'"Grow Year", system-ui, sans-serif'},children:"LOADING..."},void 0,!1,void 0,this),e("div",{className:"flex flex-col items-center gap-[0.625cqw]",children:[e("div",{className:"relative h-[2.292cqw] w-full rounded-full bg-[#3B138F] shadow-[inset_0_0.052cqw_0.365cqw_0_rgba(0,0,0,0.25)]",children:e("div",{"data-testid":"vibemon-loading-progress-fill",className:"absolute top-[9.091%] left-[0.549%] h-[81.818%] min-w-[3.6%] rounded-full bg-[linear-gradient(180deg,#FFE16C_0%,#FFB638_100%)] shadow-[inset_0_0.208cqw_0.156cqw_0_rgba(255,255,255,0.87)]",style:{width:`${i*v}%`}},void 0,!1,void 0,this)},void 0,!1,void 0,this),e("p",{className:"text-center text-[1.458cqw] leading-normal text-white",style:{fontFamily:'"Grow Year", system-ui, sans-serif'},children:[a,"%"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}
2
+ export{Ge};
@@ -0,0 +1,2 @@
1
+ async function wt(e,i,n){let t=await e.wait(n,Date.now()+15000);await t.presentAt(async()=>(t.resume(),e.requireFreshFrame(n),await e.wait(n,Date.now()+15000),e.assertReady(n,t),await i.call("present"),i.call("position")))}
2
+ export{wt};
@@ -0,0 +1,2 @@
1
+ var n=new Map;function s(e){let t=n.get(e);if(t)return n.delete(e),n.set(e,t),t;let o=new Image;o.src=e;let i=o.decode().then(()=>o).catch((a)=>{if(n.get(e)===i)n.delete(e);throw Error(`[vibemon] preload failed: ${e}`,{cause:a})});if(n.set(e,i),n.size>64)n.delete(n.keys().next().value);return i}async function ve(e,t){let o=0;await Promise.all(e.map(async(i)=>{await s(i),t(++o)}))}
2
+ export{ve};
@@ -0,0 +1,2 @@
1
+ import{r,n}from"./chunk-rerywpwe.js";function Ae(t,u){let s=Promise.resolve();return{get:async()=>{let e=t.account();if(e===null)return null;let o=await t.storage.get("vibemon.accounts");return n(t,e),o?.[r(e)]?.pet||null},async select(e){let o=t.account();if(o===null)throw Error("Sign in to select a Vibemon");if(e!==null&&!(await u(e)).some((c)=>c.vibemon_uuid===e))throw Error("This account does not own the selected Vibemon");n(t,o);let i=s.catch(()=>{}).then(async()=>{n(t,o);let c=await t.storage.get("vibemon.accounts")??{};n(t,o);let a=r(o);await t.storage.set("vibemon.accounts",{...c,[a]:{...c[a],pet:e??""}}),n(t,o)});s=i,await i}}}
2
+ export{Ae};
@@ -0,0 +1,2 @@
1
+ import{e}from"./chunk-htw56xtp.js";var At=()=>e().assets.getMyVibemons(),Pn=()=>e().assets.getVibemonCatalog(),pe=()=>e().assets.getPointAccount(),It=()=>e().assets.getGachaFirstDraw(),Et=()=>e().assets.markVibemonFirstVisit(),Rt=()=>e().assets.getActiveGachaPools(),kt=(t)=>e().assets.getGachaPoolDetail(t),Vt=(t,o)=>e().assets.drawGachaPool(t,o);
2
+ export{At,Pn,pe,It,Et,Rt,kt,Vt};
@@ -0,0 +1,2 @@
1
+ async function Dt(t,a,l){a.handleDragStart(l);let o=null;try{let n=(await t.call("position")).x;o=await t.moved((i)=>{let e=i.x-n;if(Math.abs(e)>2)a.setFacing(e<0),n=i.x}),await t.call("drag")}finally{o?.(),a.handleDragEnd()}}
2
+ export{Dt};
@@ -0,0 +1,2 @@
1
+ import{n}from"./chunk-rerywpwe.js";function ye(s){async function e(t,a,c){let o=s.account();if(o===null)throw Error("Sign in to use Vibemon");let i=await s.request(t,a,c);return n(s,o),i}let r=!1;return{getVibemonDetail:(t)=>e(`/api/v1/vibemons/${encodeURIComponent(t)}`,"GET"),getVibemonCatalog:()=>e("/api/v1/vibemons/catalog","GET"),getMyVibemons:(t={})=>{let a=new URLSearchParams;for(let[o,i]of Object.entries(t))if(i!==void 0)a.set(o,String(i));let c=a.size>0?`?${a}`:"";return e(`/api/v1/vibemons/mine${c}`,"GET")},markVibemonFirstVisit:()=>e("/api/v1/vibemons/first-visit","POST"),getGachaFirstDraw:()=>e("/api/v1/gacha/first-draw","GET"),getActiveGachaPools:()=>e("/api/v1/gacha/pools","GET"),getGachaPoolDetail:(t)=>e(`/api/v1/gacha/pools/${encodeURIComponent(t)}`,"GET"),getPointAccount:()=>e("/api/v1/points/account","GET"),async drawGachaPool(t,a){if(r)throw Error("A draw is already pending");r=!0;try{return await e("/api/v1/gacha/draw","POST",{pool_uuid:t,draw_type:a})}finally{r=!1}}}}
2
+ export{ye};
@@ -0,0 +1,2 @@
1
+ function yt(t,a,e){let n=Math.min(1,Math.max(0,a)),r=Math.min(n,t+Math.max(0,n-t)*12*e);return n===1&&r>=0.999?1:r}
2
+ export{yt};
@@ -0,0 +1,2 @@
1
+ import{e}from"./chunk-htw56xtp.js";import{v}from"./chunk-44at74bw.js";import{a}from"./chunk-yjdj2mf9.js";import{d}from"./chunk-mnrtrr2j.js";import{Ie}from"./chunk-5w675j2g.js";import{t}from"./chunk-5jz8vnk5.js";import{R}from"./chunk-j3ez3fz2.js";import{PlusIcon as K}from"lucide-react";import{useEffect as Q,useRef as C,useState as x}from"react";import{createPortal as Y}from"react-dom";import{useTranslation as Z}from"react-i18next";import j from"@alwith/module-auth/assets/pets/lounge/autumn.png?url";import ee from"@alwith/module-auth/assets/pets/lounge/spring.png?url";import te from"@alwith/module-auth/assets/pets/lounge/summer.png?url";import oe from"@alwith/module-auth/assets/pets/lounge/winter.png?url";import{jsxDEV as i,Fragment as re}from"react/jsx-dev-runtime";var ne={spring:ee,summer:te,autumn:j,winter:oe};function Ot({active:U,nest:c,onOpenCenter:H,onSend:O,dropTarget:q=!1}){let N=e(),s=d(),z=a(),{t:A}=Z("common"),F=Ie(),[P,I]=x(null),[B,y]=x(null),[G,W]=x(0),[k,T]=x(!1),[b,g]=x(null),[M,V]=x(null),f=C(null),S=C(!1),w=C(!1),p=P?.pet===s.pet&&P.scope===z?P.resource:null;Q(()=>{let o=!1,n=null;if(y(null),I(null),g(null),z!==null&&s.pet)(async()=>{if(!(await N.assets.getMyVibemons()).some((l)=>l.vibemon_uuid===s.pet))throw Error("This account does not own the selected Vibemon");if(o)return;if(n=await v(s.pet),o)n.dispose();else I({pet:s.pet,scope:z,resource:n})})().catch((r)=>{if(!o)y(r instanceof Error?r.message:String(r))});return()=>{o=!0,n?.dispose()}},[N,z,s.pet,G]);let X=async(o)=>{if(S.current)return;if(S.current=!0,T(!0),y(null),o)g({center:o,scale:2}),V(o);try{await O(s.pet,o)}catch(n){y(n instanceof Error?n.message:String(n))}finally{S.current=!1,T(!1),g(null)}},D=(o)=>p&&i(R,{config:p.config,spriteUrl:p.spriteUrl,staticImage:p.staticImage,stateId:p.config.behaviorMap.sleep,flipped:!1,active:U||o,onMouseDown:()=>{},onClick:()=>{},onRenderError:(n)=>y(n.message)},void 0,!1,void 0,this),E={insetInlineEnd:c.inlineEnd,bottom:c.bottom,width:c.size,height:c.size};return i(re,{children:[i("img",{src:ne[F],alt:"",draggable:!1,className:"pointer-events-none absolute inset-x-0 bottom-0 z-10 w-full"},void 0,!1,void 0,this),(q||b!==null&&!k)&&i("div",{"data-testid":"pet-lounge-drop",className:"border-primary bg-primary/10 pointer-events-none absolute z-30 rounded-xl border-4 border-dashed",style:E},void 0,!1,void 0,this),!s.enabled&&!s.pet&&i(t,{"aria-label":"Vibémon",onClick:H,className:"border-primary bg-primary/10 text-primary absolute z-20 rounded-xl border-4 border-dashed p-0",style:E,children:i(K,{className:"size-16"},void 0,!1,void 0,this)},void 0,!1,void 0,this),!s.enabled&&p&&i("button",{type:"button","aria-label":"Vibémon",disabled:k,className:"vibemon-lounge-pet absolute z-20 cursor-grab touch-none border-0 bg-transparent p-0 disabled:cursor-wait",style:{...E,opacity:b?0:1},onPointerDown:(o)=>{if(o.button!==0||k)return;let n=o.currentTarget.getBoundingClientRect(),r=o.currentTarget.parentElement;if(!r)throw Error("Lounge requires its station");let l=getComputedStyle(r).direction==="rtl",m=r.getBoundingClientRect();w.current=!1,f.current={start:{x:o.clientX,y:o.clientY},origin:{x:n.left+n.width/2,y:n.top+n.height/2},rect:n,edge:l?m.right:m.left,rtl:l,pointer:o.pointerId},o.currentTarget.setPointerCapture(o.pointerId)},onPointerMove:(o)=>{let n=f.current;if(!n)return;let r=o.clientX-n.start.x,l=o.clientY-n.start.y,m=Math.hypot(r,l);if(m<=4&&!w.current)return;w.current=!0;let u={x:n.origin.x+r,y:n.origin.y+l},L=1+Math.min(m/200,1);g({center:u,scale:L});let h=c.size*L/2,_=Math.max(0,Math.min(u.x+h,innerWidth)-Math.max(u.x-h,0)),J=Math.max(0,Math.min(u.y+h,innerHeight)-Math.max(u.y-h,0));if(_*J<h*h*2)f.current=null,o.currentTarget.releasePointerCapture(o.pointerId),X(u)},onPointerUp:(o)=>{let n=f.current;if(f.current=null,!n||!w.current)return;let r=o.clientX-n.start.x,l=o.clientY-n.start.y,m=o.clientX>=n.rect.left&&o.clientX<=n.rect.right&&o.clientY>=n.rect.top&&o.clientY<=n.rect.bottom,u=n.rtl?o.clientX>n.edge:o.clientX<n.edge;if(!m&&u&&Math.hypot(r,l)>=200)X({x:n.origin.x+r,y:n.origin.y+l});else g(null)},onPointerCancel:()=>{f.current=null,g(null),w.current=!0},children:D(!1)},void 0,!1,void 0,this),b&&p&&Y(i("div",{className:"pointer-events-none fixed z-[9999]",style:{left:b.center.x-c.size/2,top:b.center.y-c.size/2,width:c.size,height:c.size,transform:`scale(${b.scale})`},children:D(!0)},void 0,!1,void 0,this),document.body),M&&Y(i("div",{className:"alwith-vibemon-burst pointer-events-none fixed z-[10000]",style:{left:M.x,top:M.y,width:280,height:280,transform:"translate(-50%, -50%) scale(0.7142857)"},onAnimationEnd:()=>V(null)},void 0,!1,void 0,this),document.body),B&&i("div",{role:"alert",className:"bg-popover text-popover-foreground absolute inset-x-2 bottom-36 z-30 rounded-lg p-2 text-xs",children:[B,i(t,{size:"sm",variant:"outline",onClick:()=>W((o)=>o+1),children:A("vibemon.updateResources")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}
2
+ export{Ot};
@@ -0,0 +1,2 @@
1
+ function i(n){let e="";for(let r of n)e+=String.fromCharCode(r);return btoa(e).replaceAll("+","-").replaceAll("/","_").replace(/=+$/,"")}function rn(){let n=new Uint8Array(32);return crypto.getRandomValues(n),i(n)}async function sn(n){let e=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(n));return i(new Uint8Array(e))}var t=null;function an(n){t=n}function ln(){let n=t;return t=null,n}function un(){t=null}var o=[["OAUTH_SESSION_EXPIRED","signIn.oauthSessionExpired"],["OAUTH_VERIFICATION_FAILED","signIn.oauthVerificationFailed"],["OAUTH_EMAIL_REQUIRED","signIn.oauthEmailRequired"],["OAUTH_IDENTITY_CONFLICT","signIn.oauthIdentityConflict"],["OAUTH_RATE_LIMITED","signIn.tooManyRequests"],["OAUTH_PROVIDER_UNAVAILABLE","signIn.oauthProviderUnavailable"],["OAUTH_CONFIG_UNAVAILABLE","signIn.oauthConfigUnavailable"],["ACCOUNT_DISABLED","signIn.accountDisabled"]];function dn(n){for(let[e,r]of o)if(n.includes(e))return r;return"signIn.signInFailed"}
2
+ export{rn,sn,an,ln,un,dn};
@@ -0,0 +1,2 @@
1
+ function nn(e){let{tokenStorage:d,loadUser:c,saveUser:l,clearAllAuth:f}=e.storage,r=0;return(a,u)=>({user:null,isAuthenticated:!1,isLoading:!0,_initialized:!1,init:()=>{if(u()._initialized)return;a({_initialized:!0}),e.onInit();let t=r;(async()=>{try{let i=await d.getAccess(),n=await d.getRefresh();if(t!==r)return;if(!i||!n){await e.handleUnauthenticated(),a({isLoading:!1});return}let A=e.validateProfile(),s=await c();if(t!==r)return;if(!A){if(s)a({user:s,isAuthenticated:!0}),e.loadProviders();return}if(s)a({user:s,isAuthenticated:!0,isLoading:!1}),e.onSignedIn(s,"restore");e.loadProviders();try{let o=await e.getProfile();if(t!==r)return;let v={user_uuid:o.uuid,nickname:o.nickname,login_email:o.login_email,avatar:o.avatar};a({user:v,isAuthenticated:!0}),await l(v),e.onProfileRestored()}catch{let o=await c();if(t!==r)return;if(o)a({user:o,isAuthenticated:!0});else await f(),e.clearProviders(),a({user:null,isAuthenticated:!1})}if(!s)a({isLoading:!1})}catch(i){console.error("[auth] session restore failed unexpectedly",i)}finally{if(u().isLoading)a({isLoading:!1})}})(),e.subscribeExpired(()=>{r++,e.clearAccountConversation(u().user).then(e.handleUnauthenticated).then((i)=>{if(i)return;a({user:null,isAuthenticated:!1})})}),e.subscribeState((i)=>{if(i.action==="logout")r++,e.clearAccountConversation(u().user).then(e.handleUnauthenticated).then((n)=>{if(n)return;e.clearProviders(),a({user:null,isAuthenticated:!1})});else if(i.action==="login"&&i.user)r++,a({user:i.user,isAuthenticated:!0}),e.loadProviders();else if(i.action==="update"&&i.user)a({user:i.user})})},login:async(t)=>{r++,await d.save(t.access_token,t.refresh_token);let i={user_uuid:t.user_uuid,nickname:t.nickname,login_email:t.login_email};await l(i),a({user:i,isAuthenticated:!0}),e.loadProviders(),await e.broadcast({action:"login",user:i}),e.onSignedIn(i,"login")},logout:async()=>{if(r++,e.clearProviders(),await e.logoutApi(),await e.clearAccountConversation(u().user),await f(),await e.broadcast({action:"logout"}),await e.handleUnauthenticated())return;a({user:null,isAuthenticated:!1})},refreshUser:async()=>{try{let t=await e.getProfile(),i={user_uuid:t.uuid,nickname:t.nickname,login_email:t.login_email,avatar:t.avatar};a({user:i}),await l(i)}catch(t){console.warn("[auth] refreshUser failed",t)}},updateUser:(t)=>{let i=u().user;if(!i)return;let n={...i,...t};a({user:n}),l(n),e.broadcast({action:"update",user:n})}})}
2
+ export{nn};
@@ -0,0 +1,2 @@
1
+ function mn({publicPost:i,apiPost:g,platform:r,arch:a,getDeviceId:u,onLogoutError:d,logInfo:h}){async function l(e,n="LOGIN"){await i("/api/v1/auth/send-code",{login_type:"EMAIL",email:e,purpose:n})}async function m(e,n){let[t,s,o]=await Promise.all([r(),a(),u()]);return i("/api/v1/auth/login",{email:e,code:n,login_type:"EMAIL",client_type:"DESKTOP",client_name:`Tauri-${t}-${s}`,device_id:o})}async function O(e,n){let[t,s,o]=await Promise.all([r(),a(),u()]);return i("/api/v1/auth/login",{email:e,password:n,login_type:"PASSWORD",client_type:"DESKTOP",client_name:`Tauri-${t}-${s}`,device_id:o})}async function P(e){return i("/api/v1/auth/email-exists",{email:e})}async function v(e,n,t){let[s,o,c]=await Promise.all([r(),a(),u()]);return i("/api/v1/auth/register",{email:e,code:n,password:t,client_type:"DESKTOP",client_name:`Tauri-${s}-${o}`,device_id:c})}async function y(){try{await g("/api/v1/auth/logout")}catch(e){d(e)}}function S(e){switch(e){case"macos":return"MACOS";case"windows":return"WINDOWS";case"linux":return"LINUX";default:throw Error(`unsupported desktop platform for OAuth: ${e}`)}}async function _(e,n,t){let[s,o,c]=await Promise.all([r(),a(),u()]),p={provider:e,client_type:"DESKTOP",platform:S(s),return_target:"APP_LOGIN",client_name:`Tauri-${s}-${o}`,device_id:c,client_code_challenge:n,...t!==void 0?{loopback_port:t}:{}};return h(`[oauth] POST /api/v1/auth/oauth/sessions request: ${JSON.stringify(p)}`),i("/api/v1/auth/oauth/sessions",p)}async function f(e,n){return i("/api/v1/auth/oauth/tickets/exchange",{ticket:e,client_code_verifier:n})}async function A(){return g("/api/v1/sso/otp")}async function R(e){return i("/api/v1/sso/exchange",{otp:e,client_type:"DESKTOP"})}return{sendVerificationCode:l,loginWithCode:m,loginWithPassword:O,emailExists:P,register:v,logoutApi:y,createOAuthSession:_,exchangeOAuthTicket:f,getSsoOtp:A,exchangeSsoCode:R}}
2
+ export{mn};
@@ -0,0 +1,2 @@
1
+ import{ee}from"./chunk-4h2756zy.js";import{useStore as o}from"zustand";var Me=(e)=>o(ee,e);
2
+ export{Me};
@@ -0,0 +1,2 @@
1
+ var n=(r)=>{if(r==="R"||r==="SR"||r==="SSR")return r;throw Error(`[vibemon] unsupported draw rarity: ${r}`)},e=(r,a,i)=>{if(r===null)throw Error(`[vibemon] drawn white card at index ${a.draw_index} is missing ${i}`);return r},t=(r)=>({kind:"card",drawIndex:r.draw_index,vibemonUuid:r.vibemon_uuid,vibemonName:r.vibemon_name,singleImageUrl:r.gacha_url??"",multiImageUrl:r.multi_draw_url??"",rarity:n(r.rarity_code),isNew:!r.is_duplicate}),d=(r)=>{if(r==="UC"||r==="C")return r;throw Error(`[vibemon] unsupported white-card rarity: ${r}`)},Tt=(r)=>{if(r.reward_type!=="WHITE_CARD"){if(!r.vibemon_uuid)throw Error("Vibemon draw result is missing its ID");return t(r)}return{kind:"white-card",drawIndex:r.draw_index,rarity:d(r.rarity_code),exchangePoints:r.exchange_points,singleImageUrl:e(r.gacha_url,r,"gacha_url"),multiImageUrl:e(r.multi_draw_url,r,"multi_draw_url")}};
2
+ export{Tt};
@@ -0,0 +1,2 @@
1
+ import{Ye}from"./chunk-2k8my1h9.js";import{T}from"./chunk-q8ebj5e6.js";import{jsxDEV as r}from"react/jsx-dev-runtime";var ae=Ye;function ke({onVideoStart:e,onDone:o}){return r("div",{className:"absolute inset-0 z-50 overflow-hidden",children:r(T,{src:ae,onFirstFrame:e,onComplete:o,onError:o},void 0,!1,void 0,this)},void 0,!1,void 0,this)}
2
+ export{ae,ke};
@@ -0,0 +1,2 @@
1
+ import{e}from"./chunk-htw56xtp.js";var fe=()=>e().windows.call("monitors"),b=()=>({outerPosition:()=>e().windows.call("position"),outerSize:()=>e().windows.call("size"),scaleFactor:()=>e().windows.call("scale")}),K=(o,n)=>e().windows.call("move",{x:o,y:n});
2
+ export{fe,b,K};
@@ -0,0 +1,2 @@
1
+ var i=null;function tn(n){if(i!==null)throw Error("Vibemon already initialized in this window");return i=n,()=>{if(i===n)i=null}}function e(){if(i===null)throw Error("Vibemon has not initialized");return i}function we(n,o){return n.connectionEpoch===o.connectionEpoch&&n.agentId===o.agentId&&n.sessionId===o.sessionId&&n.incarnation===o.incarnation&&n.bindingRevision===o.bindingRevision}
2
+ export{tn,e,we};
@@ -0,0 +1,2 @@
1
+ import{e}from"./chunk-htw56xtp.js";var ht=(o={})=>e().windows.openPet(o);
2
+ export{ht};
@@ -0,0 +1,2 @@
1
+ import{useCallback as G,useEffect as V,useRef as o,useState as Y}from"react";import{jsxDEV as q}from"react/jsx-dev-runtime";function R({config:e,spriteUrl:z,stateId:L,flipped:P,active:p,staticImage:a,animTick:C,onFirstFrame:E,onDrawFrame:g,onRenderError:y,onMouseDown:W,onClick:X}){let S=o(null),u=o(0),n=o(null),I=o(null),s=o(!1),[D,F]=Y(!1),c=e.states.find((r)=>r.id===L),h=c?.row??0,v=c?.frames??1,H=c?.fps??3,b=c?.loop??!0,M=o(E);M.current=E;let x=o(g);x.current=g;let k=o(y);k.current=y;let w=G((r,t)=>{let T=S.current,i=I.current;if(!T||!i)return;let l=T.getContext("2d");if(!l)return;l.imageSmoothingEnabled=!1,l.clearRect(0,0,e.renderSize,e.renderSize);let d=a?i.naturalWidth:e.cropW,f=a?i.naturalHeight:e.cropH,m=e.renderSize/Math.max(d,f);l.drawImage(i,a?0:r*e.frameSize+e.cropX,a?0:t*(e.frameHeight??e.frameSize)+e.cropY,d,f,(e.renderSize-d*m)/2,(e.renderSize-f*m)/2,d*m,f*m),x.current?.()},[e,a]);return V(()=>{let r=!1;s.current=!1,F(!1);let t=new Image;return t.onload=()=>{if(r)return;I.current=t,F(!0)},t.onerror=()=>{if(!r)k.current?.(Error("Vibemon spritesheet could not be decoded"))},t.src=z,()=>{r=!0,t.onload=null,t.onerror=null}},[z]),V(()=>{if(!D||!p&&s.current)return;let r=S.current;if(!r)return;if(r.dataset.animationGeneration=String(C??0),n.current)clearInterval(n.current);if(u.current=0,w(0,h),!s.current)s.current=!0,M.current?.();if(!p)return;return n.current=setInterval(()=>{if(u.current++,u.current>=v){if(u.current=b?0:v-1,!b&&n.current)clearInterval(n.current),n.current=null}w(u.current,h)},1000/H),()=>{if(n.current)clearInterval(n.current)}},[h,v,H,b,C,D,p,w]),q("canvas",{ref:S,width:e.renderSize,height:e.renderSize,onMouseDown:(r)=>{if(r.button!==0)return;r.preventDefault(),W()},onClick:(r)=>{if(r.button!==0)return;X()},style:{width:"100%",height:"100%",imageRendering:"pixelated",transform:P?"scaleX(-1)":void 0,cursor:"pointer",pointerEvents:"auto"}},void 0,!1,void 0,this)}
2
+ export{R};
@@ -0,0 +1 @@
1
+ import{cn as e}from"cn";import{jsxDEV as a}from"react/jsx-dev-runtime";function ze({className:r,...i}){return a("textarea",{"data-slot":"textarea",className:e("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-2.5 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-3 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:ring-3 md:text-sm",r),...i},void 0,!1,void 0,this)}export{ze};
@@ -0,0 +1,2 @@
1
+ var n=/^(?=.*[A-Za-z])(?=.*\d)[\x21-\x7E]{8,26}$/;function on(t){return n.test(t)}
2
+ export{on};
@@ -0,0 +1,2 @@
1
+ import{fe,b,K}from"./chunk-hk9j0kvg.js";var o=60000,h=24,a=90;class Y{currentBehavior="idle";flipped=!1;position={x:200,y:200};targetPosition=null;screenBounds={x:0,y:0,width:1920,height:1080};behaviorTimer=null;sleepTimer=null;moveTimerId=null;isDragging=!1;isPresenting=!1;isHatching=!1;destroyed=!1;suspended=!1;behaviorBeforeDrag="idle";working=!1;sessionAnimation=null;onStateChange;onNotification;config;constructor(i,e,t){this.config=i,this.onStateChange=e,this.onNotification=t}stateOf(i){return this.config.behaviorMap[i]??this.config.behaviorMap.idle}async start(i){if(await this.updateScreenBounds(),i===void 0){let e=await b().outerPosition();this.position={x:e.x,y:e.y}}else if(i){let e=await b().outerSize();if((await fe()).some((n)=>i.x+e.width>n.position.x&&i.x<n.position.x+n.size.width&&i.y+e.height>n.position.y&&i.y<n.position.y+n.size.height))this.position={x:i.x,y:i.y};else{let n=this.screenBounds.x+this.screenBounds.width-e.width,r=this.screenBounds.y+this.screenBounds.height-e.height;this.position={x:Math.min(Math.max(i.x,this.screenBounds.x),n),y:Math.min(Math.max(i.y,this.screenBounds.y),r)}}await K(this.position.x,this.position.y)}else{let e=await b().outerSize(),t=await b().scaleFactor(),s=Math.round(h*t),n=Math.round(a*t);this.position={x:this.screenBounds.x+this.screenBounds.width-e.width-s,y:this.screenBounds.y+this.screenBounds.height-e.height-n},await K(this.position.x,this.position.y)}if(this.setBehavior("idle"),this.sessionAnimation!==null)this.applySessionAnimation();this.resetSleepTimer()}destroy(){if(this.destroyed=!0,this.behaviorTimer)clearTimeout(this.behaviorTimer);if(this.sleepTimer)clearTimeout(this.sleepTimer);if(this.moveTimerId)clearInterval(this.moveTimerId)}suspend(){if(this.suspended=!0,this.cancelMovement(),this.targetPosition=null,this.sleepTimer)clearTimeout(this.sleepTimer);this.sleepTimer=null}resume(){if(this.destroyed)throw Error("Cannot resume a destroyed Vibemon engine");if(this.suspended=!1,this.sessionAnimation!==null)this.applySessionAnimation();else this.setBehavior(this.restBehavior());this.resetSleepTimer()}async presentAt(i){if(this.isDragging||this.isPresenting||this.destroyed)throw Error("Vibemon cannot be presented right now");this.isPresenting=!0,this.cancelMovement(),this.targetPosition=null;try{if(this.position=await i(),this.destroyed)throw Error("Vibemon engine changed during presentation")}finally{if(this.isPresenting=!1,!this.destroyed&&!this.suspended){if(this.sessionAnimation!==null)this.applySessionAnimation();else if(this.currentBehavior!=="wait"&&this.currentBehavior!=="error")this.setBehavior(this.restBehavior());this.resetSleepTimer()}}}restBehavior(){return this.working?"sit":"idle"}setWorking(i){if(this.working===i)return;if(this.working=i,this.destroyed||this.suspended||this.isDragging)return;let e=this.currentBehavior==="idle"||this.currentBehavior==="sit"||this.currentBehavior==="sleep",t=this.restBehavior();if(e&&t!==this.currentBehavior)this.setBehavior(t),this.resetSleepTimer()}setSessionState(i,e,t){let s=this.sessionAnimation;if(s!==null&&s.sessionId===i&&s.state===e&&s.failed===t)return;if(this.sessionAnimation={sessionId:i,state:e,failed:t},this.setWorking(e==="running"&&!t),s!==null&&s.sessionId===i&&s.state==="done"&&e==="idle"&&!t&&this.currentBehavior==="jump"&&this.behaviorTimer!==null)return;if(!this.destroyed&&!this.suspended&&!this.isDragging&&!this.isPresenting)this.applySessionAnimation()}applySessionAnimation(){let i=this.sessionAnimation;if(i===null)throw Error("Session animation requires a Runtime snapshot");let e=i.failed?"task-error":i.state==="running"?"running":i.state==="requires_action"?"info":i.state==="done"?"task-complete":"idle";this.handleNotification({type:e,message:"",sourceWindow:""})}handleNotification(i){if(this.suspended)return;if(this.isHatching)return;if(this.onNotification(i),this.resetSleepTimer(),this.behaviorTimer)clearTimeout(this.behaviorTimer);if(this.currentBehavior==="sleep"){this.setBehavior("scared"),this.behaviorTimer=setTimeout(()=>{if(!this.destroyed&&!this.isDragging&&!this.isPresenting)if(this.sessionAnimation!==null)this.applySessionAnimation();else this.handleNotification(i)},500);return}if(this.cancelMovement(),i.type==="info"){this.setBehavior("wait");return}if(i.type==="task-error"){this.setBehavior(this.config.behaviorMap.error?"error":"wait");return}if(i.type==="running"){this.setBehavior("sit");return}if(i.type==="task-complete"){this.setBehavior("jump");let e=this.config.states.find((s)=>s.id===this.stateOf("jump")),t=e?e.frames/e.fps*1000:800;this.behaviorTimer=setTimeout(()=>{if(!this.destroyed&&!this.isDragging)this.setBehavior(this.restBehavior())},t);return}this.setBehavior(this.restBehavior())}handleClick(){if(this.isHatching)return;this.resetSleepTimer()}dismissError(){if(this.currentBehavior!=="error")return;this.cancelMovement(),this.setBehavior(this.restBehavior()),this.resetSleepTimer()}flipForDirection(i){return this.config.facing==="left"?!i:i}handleDragStart(i){if(this.isPresenting)throw Error("Vibemon presentation is in progress");if(this.isHatching)return;if(this.behaviorBeforeDrag=this.currentBehavior,this.isDragging=!0,this.cancelMovement(),this.resetSleepTimer(),i!==void 0)this.flipped=this.flipForDirection(i);this.setBehavior("scared")}setFacing(i){let e=this.flipForDirection(i);if(this.flipped===e)return;this.flipped=e,this.onStateChange(this.stateOf(this.currentBehavior),this.flipped,!1)}handleDragEnd(){if(this.destroyed)return;if(this.isDragging=!1,this.cancelMovement(),this.flipped=!1,this.sessionAnimation!==null)this.applySessionAnimation();else if(this.behaviorBeforeDrag==="wait"||this.behaviorBeforeDrag==="error")this.setBehavior(this.behaviorBeforeDrag);else this.setBehavior(this.restBehavior());this.syncPositionFromWindow()}debugSpeed=8;setDebugSpeed(i){this.debugSpeed=i}stop(){this.cancelMovement(),this.setBehavior("idle")}debugSetBehavior(i){if(this.cancelMovement(),i in this.config.behaviorMap)this.setBehavior(i);else this.currentBehavior="idle",this.onStateChange(i,this.flipped,!0)}getDebugSpeed(){return this.debugSpeed}async debugRun(){this.cancelMovement(),await this.syncPositionFromWindow();let i=await b().outerSize(),e=[{x:this.screenBounds.x,y:this.screenBounds.y},{x:this.screenBounds.x+this.screenBounds.width-i.width,y:this.screenBounds.y},{x:this.screenBounds.x+this.screenBounds.width-i.width,y:this.screenBounds.y+this.screenBounds.height-i.height},{x:this.screenBounds.x,y:this.screenBounds.y+this.screenBounds.height-i.height}],t=0,s=()=>{if(this.destroyed)return;let n=e[t%e.length];t++;let r=n.x-this.position.x;if(Math.abs(r)>1)this.flipped=r<0;this.setBehavior("run"),this.startMovement(n,this.debugSpeed,s)};s()}setBehavior(i){this.currentBehavior=i,this.onStateChange(this.stateOf(i),this.flipped,!0)}async syncPositionFromWindow(){if(this.destroyed)return;let i;try{i=await b().outerPosition()}catch(e){if(this.destroyed)return;throw e}if(this.destroyed)return;this.position={x:i.x,y:i.y}}async updateScreenBounds(){let i=await fe();if(i.length>0){let e=i[0];this.screenBounds={x:e.position.x,y:e.position.y,width:e.size.width,height:e.size.height}}}startMovement(i,e,t){if(this.isPresenting||this.suspended)return;this.cancelMovement(),this.targetPosition=i,this.moveTimerId=setInterval(()=>{if(this.destroyed||this.isDragging||!this.targetPosition||this.currentBehavior!=="run"){if(this.moveTimerId)clearInterval(this.moveTimerId);this.moveTimerId=null;return}let s=this.targetPosition.x-this.position.x,n=this.targetPosition.y-this.position.y,r=Math.hypot(s,n);if(r<e){if(this.position={...this.targetPosition},this.targetPosition=null,this.moveTimerId)clearInterval(this.moveTimerId),this.moveTimerId=null;if(K(this.position.x,this.position.y),t)t();else this.setBehavior("idle");return}this.position.x+=s/r*e,this.position.y+=n/r*e,K(this.position.x,this.position.y)},16)}cancelMovement(){if(this.moveTimerId)clearInterval(this.moveTimerId),this.moveTimerId=null;if(this.behaviorTimer)clearTimeout(this.behaviorTimer),this.behaviorTimer=null}resetSleepTimer(){if(this.sleepTimer)clearTimeout(this.sleepTimer);if(this.suspended)return;this.sleepTimer=setTimeout(()=>{if(!this.destroyed&&!this.isDragging&&this.currentBehavior==="idle")this.cancelMovement(),this.setBehavior("sleep")},o)}}
2
+ export{Y};
File without changes
@@ -0,0 +1,2 @@
1
+ class ue{current=null;listeners=new Set;begin(r,n){this.current={petId:r,generation:n,value:null,drawn:!1,error:null},this.notify()}positioned(r,n,e){let i=this.current;if(i?.petId!==r||i.generation!==n)return;i.value=e,this.notify()}drawn(r,n){let e=this.current;if(e?.petId!==r||e.generation!==n||e.drawn)return;e.drawn=!0,this.notify()}requireFreshFrame(r){if(this.current?.petId!==r)throw Error("Vibemon resource changed");this.current.drawn=!1,this.notify()}fail(r,n,e){let i=this.current;if(i?.petId!==r||i.generation!==n)return;i.error=e,this.notify()}invalidate(){if(this.current===null)return;this.current.error=Error("Vibemon resource was unloaded"),this.notify()}reset(){this.invalidate(),this.current=null,this.notify()}assertReady(r,n){let e=this.current;if(e?.petId!==r||e.value!==n||!e.drawn||e.error!==null)throw Error("Vibemon resource changed during presentation")}notify(){for(let r of this.listeners)r()}waitingStage(){let r=this.current;if(r===null)return"resource-loading";if(r.value===null)return"initial-position";if(!r.drawn)return"canvas-frame";return"ready"}wait(r,n){let e=this.current?.generation;return new Promise((i,u)=>{let a=()=>{clearTimeout(l),this.listeners.delete(s)},o=(t)=>{a(),u(t)},s=()=>{if(Date.now()>=n){o(Error(`Vibemon presentation timed out [stage=${this.waitingStage()}]`));return}let t=this.current;if(!t)return;if(e??=t.generation,t.petId!==r||e!==void 0&&e!==t.generation)o(Error("Vibemon resource changed during presentation"));else if(t.error)o(t.error);else if(t.drawn&&t.value!==null)a(),i(t.value)},l=setTimeout(()=>o(Error(`Vibemon presentation timed out [stage=${this.waitingStage()}]`)),Math.max(0,n-Date.now()));this.listeners.add(s),s()})}}
2
+ export{ue};
@@ -0,0 +1,2 @@
1
+ import{q,D,L,x,z,_,O,H}from"./chunk-2k8my1h9.js";import{o}from"./chunk-xrw9s1th.js";import{motion as h,useReducedMotion as b}from"motion/react";import{jsxDEV as e}from"react/jsx-dev-runtime";var p=2128.456,f=1920,d=(t)=>`${t/p*100}cqw`,a=(t)=>`${t/f*100}cqw`;function k(){return e("div",{"data-testid":"vibemon-onboarding-scrim","aria-hidden":!0,className:"absolute inset-0 z-20 bg-black/50",style:{boxShadow:"0 0 0 100vmax rgba(0,0,0,0.5)"}},void 0,!1,void 0,this)}var w=8,N=32,u=160,y={width:687,height:94,textLeft:184.457,mascotLeft:20.273,mascotTop:-70.384,texture:D,length:d},v={width:712,height:94,textLeft:185.29,mascotLeft:20.96,mascotTop:-70.46,texture:L,length:a};function g({design:t,className:n,children:i}){let s=t.length;return e("div",{className:o("absolute -translate-x-1/2 -translate-y-1/2",n),style:{width:s(t.width),height:s(t.height)},children:[e("div",{className:"absolute inset-0 rounded-full border-white bg-[#8546DD] bg-[length:100%_100%] [background-origin:border-box]",style:{borderWidth:s(w),backgroundImage:`url("${t.texture}")`}},void 0,!1,void 0,this),e("p",{className:"absolute top-1/2 -translate-y-1/2 leading-normal whitespace-nowrap text-white",style:{left:s(t.textLeft),fontFamily:'"Lilita One", system-ui, sans-serif',fontSize:s(N)},children:i},void 0,!1,void 0,this),e("img",{src:x,alt:"",className:"absolute max-w-none select-none",style:{left:s(t.mascotLeft),top:s(t.mascotTop),width:s(u),height:s(u)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var c=42;function B(){let t=b(),n="absolute top-[56.381%] left-[57.735%] -translate-x-1/2 -translate-y-1/2",i={width:d(c),height:d(c)},s=e("span",{className:"absolute inset-0 rotate-180",children:e("span",{className:"absolute inset-[6.35%_-0.84%_-3.12%_-0.84%]",children:e("img",{src:q,alt:"",className:"block h-full w-full max-w-none select-none"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this);if(t)return e("div",{"data-node-id":"1566:3898","data-testid":"vibemon-home-guide-arrow",className:"absolute top-[56.381%] left-[57.735%] -translate-x-1/2 -translate-y-1/2",style:i,children:s},void 0,!1,void 0,this);return e(h.div,{"data-node-id":"1566:3898","data-testid":"vibemon-home-guide-arrow",className:"absolute top-[56.381%] left-[57.735%] -translate-x-1/2 -translate-y-1/2",style:i,initial:{y:0},animate:{y:["0%","21.1%"]},transition:{y:{duration:0.401,times:[0,1],ease:"easeInOut",repeat:1/0}},children:s},void 0,!1,void 0,this)}function Te(){return e("div",{"data-testid":"vibemon-home-wish-guide",className:"pointer-events-none absolute inset-0 z-40",children:[e(g,{design:y,className:"top-[18.400%] left-[54.614%]",children:"Your first card is waiting inside!"},void 0,!1,void 0,this),e(B,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var m=109.551,l={left:20.179,top:18.317,width:69.1953,height:70.918},r={left:25.672,top:2.065,size:43.219};function I(){let t=b(),n={left:a(r.left),top:a(r.top),width:a(r.size),height:a(r.size)},i=e("span",{className:"absolute inset-[-578.45%]",children:e("img",{src:H,alt:"",className:"block h-full w-full max-w-none select-none"},void 0,!1,void 0,this)},void 0,!1,void 0,this);return e("div",{className:"relative",style:{width:a(m),height:a(m)},children:[t?e("span",{"data-node-id":"1550:4234","data-testid":"vibemon-pool-guide-ring",className:"absolute",style:n,children:i},void 0,!1,void 0,this):e(h.span,{"data-node-id":"1550:4234","data-testid":"vibemon-pool-guide-ring",className:"absolute",style:n,initial:{scaleX:1.6,scaleY:1.6},animate:{scaleX:[1.6,1.014,1],scaleY:[1.6,1.014,1]},transition:{scaleX:{duration:0.61,times:[0,0.82,1],ease:"linear",repeat:1/0},scaleY:{duration:0.61,times:[0,0.82,1],ease:"linear",repeat:1/0}},children:i},void 0,!1,void 0,this),e("span",{"data-node-id":"1550:4236",className:"absolute",style:{left:a(l.left),top:a(l.top),width:a(l.width),height:a(l.height)},children:[e("img",{src:z,alt:"",className:"absolute inset-0 block h-full w-full max-w-none select-none"},void 0,!1,void 0,this),e("span",{className:"absolute inset-0",style:{backgroundImage:`url("${O}")`,backgroundSize:"100% 100%",WebkitMaskImage:`url("${_}")`,WebkitMaskSize:"100% 100%",maskImage:`url("${_}")`,maskSize:"100% 100%"}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Ne(){let t=(n)=>({width:a(n),height:a(n)});return e("div",{"data-testid":"vibemon-free-draw-guide",className:"pointer-events-none absolute inset-0 z-40",children:[e(g,{design:v,className:"top-[79.004%] left-[57.240%] z-2",children:"Draw a card, find your companion!"},void 0,!1,void 0,this),e("span",{className:"absolute top-[82.184%] left-[68.358%] z-1 -translate-x-1/2 -translate-y-1/2 rounded-full bg-white",style:t(34.461)},void 0,!1,void 0,this),e("span",{className:"absolute top-[85.459%] left-[67.288%] z-1 -translate-x-1/2 -translate-y-1/2 rounded-full bg-white",style:t(15.354)},void 0,!1,void 0,this),e("div",{className:"absolute top-[95.437%] left-[64.490%] -translate-x-1/2 -translate-y-1/2",children:e(I,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}
2
+ export{k,Te,Ne};
@@ -0,0 +1,2 @@
1
+ function pn(e){return`auth.${new URL(e).host}`}function fn(e){let t={ACCESS:"access_token",REFRESH:"refresh_token",DEVICE_ID:"device_id",USER:"user"},a={save:async(n,o)=>{await e.set(t.ACCESS,n),await e.set(t.REFRESH,o)},getAccess:async()=>await e.get(t.ACCESS)??"",getRefresh:async()=>await e.get(t.REFRESH)??"",updateAccess:async(n)=>{await e.set(t.ACCESS,n)},clear:async()=>{await e.delete(t.ACCESS),await e.delete(t.REFRESH)},getDeviceId:async()=>{let n=await e.get(t.DEVICE_ID);if(!n)n=crypto.randomUUID(),await e.set(t.DEVICE_ID,n);return n}};async function r(n){await e.set(t.USER,n)}async function s(){return await e.get(t.USER)??null}async function i(){await e.delete(t.USER)}async function c(){await a.clear(),await i()}return{tokenStorage:a,saveUser:r,loadUser:s,clearUser:i,clearAllAuth:c}}
2
+ export{pn,fn};
@@ -0,0 +1,2 @@
1
+ import{G,F}from"./chunk-2k8my1h9.js";import{o}from"./chunk-xrw9s1th.js";import{t}from"./chunk-5jz8vnk5.js";import{We}from"./chunk-37ctfsy1.js";import{Loader2 as r}from"lucide-react";import{jsxDEV as a}from"react/jsx-dev-runtime";function U({amount:e,onAdd:s,loaded:l=!0,disabled:n=!1,className:m}){return a(We,{className:o("flex h-11 w-fit min-w-[137px] flex-row items-center gap-0 rounded-full border-0 bg-[#F4EFFF] px-1.5 py-0 ring-0",m),children:[a("img",{"data-slot":"gem-balance-icon",src:G,alt:"",className:"me-0.5 size-8 shrink-0"},void 0,!1,void 0,this),a("span",{"data-slot":"gem-balance-amount",className:"flex-1 text-start text-xl leading-none font-bold text-[#2A3472] tabular-nums",children:l?e:a(r,{className:"size-4 animate-spin text-[#2A3472]/50"},void 0,!1,void 0,this)},void 0,!1,void 0,this),a(t,{"data-slot":"gem-balance-add",variant:"ghost",className:"ms-[14px] size-8 shrink-0 rounded-full p-0 hover:bg-transparent","aria-label":"Add gems",disabled:n,onClick:s,children:a("img",{"data-slot":"gem-balance-add-icon",src:F,alt:"",className:"size-8"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}
2
+ export{U};
@@ -0,0 +1,2 @@
1
+ class he{engine=null;states=[];sessionId=null;failed=!1;bindingRevision=-1;historicalDone=!1;pendingPrompt=!1;attach(t){this.engine=t,this.historicalDone=this.state()==="done",this.apply()}bind(t,i,s=0){let e=this.sessionId!==t||this.bindingRevision!==s;if(this.sessionId=t,this.failed=i,this.bindingRevision=s,e)this.pendingPrompt=!1,this.engine?.setSessionState(null,null,!1),this.historicalDone=this.state()==="done";this.apply()}prompt(t,i,s){if(t!==this.sessionId||i!==this.bindingRevision)return;this.pendingPrompt=s,this.apply()}update(t,i="event"){let s=this.state();if(this.states=t,this.state()!==s)this.historicalDone=i==="snapshot"&&this.state()==="done";this.apply()}state(){return this.states.find((t)=>t.sessionId===this.sessionId)?.state??null}apply(){let t=this.state();this.engine?.setSessionState(this.sessionId,this.pendingPrompt?"requires_action":t==="done"&&this.historicalDone?"idle":t,this.pendingPrompt?!1:this.failed)}}
2
+ export{he};
@@ -0,0 +1,2 @@
1
+ import{m}from"./chunk-4gegjx79.js";import{Unzip as v,UnzipInflate as k}from"fflate";var y=["cover","gacha","multi_draw","icon","background","pool_card","sidebar_selected","sidebar_hover","sidebar_unselected"],_e=209715200,w=65536,A=new TextDecoder("utf-8",{fatal:!0});function ie(e){return e.length>0&&!/[\\\u0000-\u001f:]/.test(e)&&e.split("/").every((n)=>n!==""&&n!=="."&&n!=="..")}async function se(e){let n=await crypto.subtle.digest("SHA-256",new Uint8Array(e).buffer);return Array.from(new Uint8Array(n),(a)=>a.toString(16).padStart(2,"0")).join("")}function Pe(e){if(e.length>w)throw Error("Vibemon manifest exceeds 64 KiB");let n=JSON.parse(A.decode(e));if(n?.format_version!==1||!n.assets||typeof n.assets!=="object"||Array.isArray(n.assets))throw Error("Invalid Vibemon package manifest");let a=Object.entries(n.assets);if(a.length>11)throw Error("Too many Vibemon assets");let i=new Set;for(let[,t]of a){if(!t||typeof t.path!=="string"||!ie(t.path)||t.path==="manifest.json"||typeof t.sha256!=="string"||!/^[a-f0-9]{64}$/.test(t.sha256)||i.has(t.path))throw Error("Invalid Vibemon asset reference");i.add(t.path)}if(Boolean(n.assets.sheet)!==Boolean(n.assets.layout))throw Error("Vibemon animation requires both sheet and layout");return n}function E(e){let n=new DataView(e.buffer,e.byteOffset,e.byteLength),a=(r,f)=>String.fromCharCode(...e.subarray(r,r+f)),i="",t=0,s=0;if(e.length>=24&&e[0]===137&&a(1,3)==="PNG")i="image/png",t=n.getUint32(16),s=n.getUint32(20);else if(e.length>=10&&/GIF8[79]a/.test(a(0,6)))i="image/gif",t=n.getUint16(6,!0),s=n.getUint16(8,!0);else if(e.length>=30&&a(0,4)==="RIFF"&&a(8,4)==="WEBP"){i="image/webp";let r=a(12,4);if(r==="VP8X")t=1+(n.getUint32(24,!0)&16777215),s=1+(e[27]|e[28]<<8|e[29]<<16);else if(r==="VP8L"&&e[20]===47){let f=n.getUint32(21,!0);t=1+(f&16383),s=1+(f>>>14&16383)}else if(r==="VP8 "&&e[23]===157&&e[24]===1&&e[25]===42)t=n.getUint16(26,!0)&16383,s=n.getUint16(28,!0)&16383}else if(e.length>4&&e[0]===255&&e[1]===216){i="image/jpeg";for(let r=2;r+8<e.length;){if(e[r++]!==255)break;while(e[r]===255)r++;let f=e[r++];if(f===217||f===218)break;if(f===1||f>=208&&f<=215)continue;let c=n.getUint16(r);if(c<2||r+c>e.length)break;if([192,193,194,195,197,198,199,201,202,203,205,206,207].includes(f)){s=n.getUint16(r+3),t=n.getUint16(r+5);break}r+=c}}if(!t||!s||t>16384||s>16384)throw Error("Invalid or unsupported Vibemon image dimensions");return{mime:i,width:t,height:s}}async function Se(e,n,a){let i=0,t=null,s=null;for(let[r,f]of Object.entries(e.assets)){let c=await n(f.path);if(c===null||await se(c)!==f.sha256)throw Error(`Vibemon asset checksum mismatch: ${r}`);if(i+=c.length,i>_e)throw Error("Vibemon resource expansion limit exceeded");if(r==="layout"){if(c.length>w)throw Error("Vibemon layout exceeds 64 KiB");t=m(A.decode(c))}else if(r==="sheet"||y.includes(r)){let h=E(c);if(await a?.(c,h.mime),r==="sheet")s=h}}if(t&&s&&t.states.some((r)=>r.frames*t.frameWidth>s.width||(r.row+1)*t.frameHeight>s.height))throw Error("Vibemon animation exceeds the spritesheet");return t}async function zt(e,n){if(e.length>_e)throw Error("Vibemon ZIP exceeds 200 MiB");let a=new DataView(e.buffer,e.byteOffset,e.byteLength),i=e.length-22;while(i>=Math.max(0,e.length-65557)&&a.getUint32(i,!0)!==101010256)i--;if(i<0||e.length<22||a.getUint32(i,!0)!==101010256||i+22+a.getUint16(i+20,!0)!==e.length||a.getUint16(i+4,!0)!==0||a.getUint16(i+6,!0)!==0||a.getUint32(i+16,!0)+a.getUint32(i+12,!0)!==i)throw Error("Incomplete or unsupported Vibemon ZIP");let t=new Map,s=new Set,r=0,f=0,c=new v((o)=>{let l=o.name.endsWith("/"),u=l?o.name.slice(0,-1):o.name;if(!ie(u)||s.has(u)||s.size>=44)throw Error("Invalid or duplicate Vibemon ZIP path");if((o.originalSize??0)>_e)throw Error("Vibemon ZIP expansion limit exceeded");s.add(u);let p=[],g=0;o.ondata=(x,d,S)=>{if(x)throw x;if(r+=d.length,g+=d.length,r>_e||(o.name==="manifest.json"||o.name.endsWith(".json"))&&g>w)throw Error("Vibemon ZIP expansion limit exceeded");if(p.push(d),S){let P=new Uint8Array(g),U=0;for(let I of p)P.set(I,U),U+=I.length;if(l){if(g!==0)throw Error("Invalid Vibemon ZIP directory")}else{if(t.size>=12)throw Error("Too many Vibemon ZIP files");t.set(o.name,P)}f++}},o.start()});c.register(k);for(let o=0;o<e.length;o+=65536)if(c.push(e.subarray(o,o+65536),o+65536>=e.length),o>0&&o%1048576===0)await new Promise((l)=>setTimeout(l,0));if(f!==s.size||s.size!==a.getUint16(i+10,!0)||!t.has("manifest.json"))throw Error("Incomplete Vibemon ZIP");let h=Pe(t.get("manifest.json")),V=new Set(["manifest.json",...Object.values(h.assets).map((o)=>o.path)]);if([...t.keys()].some((o)=>!V.has(o)))throw Error("Unexpected Vibemon ZIP file");let b=await Se(h,(o)=>Promise.resolve(t.get(o)??null),n);return{files:t,manifest:h,layout:b}}
2
+ export{y,_e,ie,se,Pe,E,Se,zt};
@@ -0,0 +1,2 @@
1
+ import{Ut}from"./chunk-w1z1g5c5.js";import{Q}from"./chunk-yjdj2mf9.js";import{useSyncExternalStore as t}from"react";var d=()=>t(Ut,Q);
2
+ export{d};
@@ -0,0 +1,2 @@
1
+ import{e}from"./chunk-htw56xtp.js";import{Y}from"./chunk-jjb1befc.js";import{he}from"./chunk-mdqxdcxh.js";import{ge}from"./chunk-3vpcfe38.js";import{Dt}from"./chunk-9zhxpvxw.js";import{wt}from"./chunk-96emfz6b.js";import{ue}from"./chunk-kwq26qhs.js";import{v}from"./chunk-44at74bw.js";import{ce}from"./chunk-nbzm95mz.js";import{l}from"./chunk-2k8my1h9.js";import{d}from"./chunk-mnrtrr2j.js";import{R}from"./chunk-j3ez3fz2.js";import{useEffect as P,useEffectEvent as W,useRef as y,useState as u}from"react";import{jsxDEV as x}from"react/jsx-dev-runtime";function Ht(){let i=e(),f=d(),[p,D]=u(null),w=p?.resource??null,[k,T]=u({state:"idle",flipped:!1,tick:0}),[C,E]=u(!0),[V,z]=u(!1),[M,A]=u(0),c=y(null),I=y(0),[o]=u(()=>new ue),[a]=u(()=>new he),[r]=u(()=>new ge((n)=>{i.windows.call("bubble",{visible:n}).catch(i.onError)})),N=W(()=>f.position);P(()=>{if(!f.pet)return;let n=f.pet,t=++I.current;o.begin(n,t),D(null);let b=!1,m=null;return(async()=>{if(m=await v(n),b){m.dispose();return}if(await i.windows.call("resize",{size:m.config.windowSize??ce}),b)return;let s=new Y(m.config,(U,X,_)=>{if(b)return;T((O)=>({state:U,flipped:X,tick:O.tick+(_?1:0)}))},()=>{});if(c.current=s,a.attach(s),await s.start(N()),b){s.destroy();return}if(o.positioned(n,t,s),D({resource:m,petId:n,generation:t}),await o.wait(n,Date.now()+15000),!b)await i.windows.call("ready",{petId:n})})().catch((s)=>{if(b||I.current!==t)return;o.fail(n,t,s instanceof Error?s:Error(String(s))),i.onError(s)}),()=>{b=!0,o.invalidate(),a.attach(null),c.current?.destroy(),c.current=null,m?.dispose()}},[f.pet,i,o,a,M]),P(()=>{let n=(t)=>{if(t===null){a.bind(null,!1),r.bind(null,-1);return}a.bind(t.binding.sessionId,t.error!==null,t.binding.bindingRevision),a.update([{sessionId:t.binding.sessionId,state:t.state}],t.source),a.prompt(t.binding.sessionId,t.binding.bindingRevision,t.prompt!==null),r.bind(t.binding.sessionId,t.binding.bindingRevision),r.owner(t.owner),r.update(t.state,t.prompt?.token??null,t.surfaceVisible)};return n(i.sessions.snapshot()),i.sessions.subscribe(n)},[i,a,r]),P(()=>i.windows.commands(async(n)=>{if(n.type==="reload"){if(n.petId!==f.pet)throw Error("The selected pet changed");I.current++,o.reset(),A((t)=>t+1);return}if(n.type==="bubble-open"){r.open();return}if(n.type==="bubble-interact"){r.interact();return}if(n.type==="close"){c.current?.suspend(),E(!1),r.close(),z(!0);try{await i.windows.call("sound"),await new Promise((t)=>setTimeout(t,470)),await i.windows.call("hide")}finally{z(!1)}return}if(n.type==="bubble-close"){r.close();return}if(n.type==="suspend"){c.current?.suspend(),E(!1),r.close(),await i.windows.call("hide");return}E(!0),await wt(o,i.windows,n.petId)}),[i,r,o,f.pet]);let g=y(0),h=y(null);if(w===null)return null;let S=w.config.windowSize??ce;return x("div",{className:"relative flex h-full w-full items-end justify-center select-none",onPointerDown:(n)=>{if(n.button!==0)return;h.current={x:n.screenX,y:n.screenY}},onPointerMove:(n)=>{let t=h.current;if(t===null||Math.hypot(n.screenX-t.x,n.screenY-t.y)<4)return;if(h.current=null,c.current===null)throw Error("The pet engine is unavailable");Dt(i.windows,c.current,n.screenX<t.x).catch(i.onError)},onPointerUp:()=>{h.current=null},onContextMenu:(n)=>{n.preventDefault(),i.windows.call("menu").catch(i.onError)},children:[x("div",{style:{width:S,height:S,visibility:V?"hidden":"visible"},children:x(R,{config:w.config,spriteUrl:w.spriteUrl||l,staticImage:w.staticImage,stateId:k.state,flipped:k.flipped,animTick:k.tick,active:C&&!w.staticImage,onDrawFrame:()=>{if(p!==null)o.drawn(p.petId,p.generation)},onRenderError:(n)=>{if(p!==null)o.fail(p.petId,p.generation,n);i.onError(n)},onMouseDown:()=>{},onClick:()=>{c.current?.handleClick();let n=Date.now();if(n-g.current<350&&n-g.current>50)r.close(),i.sessions.activate().catch(i.onError),g.current=0;else g.current=n}},void 0,!1,void 0,this)},void 0,!1,void 0,this),V&&x("div",{className:"alwith-vibemon-burst pointer-events-none",style:{position:"fixed",left:"50%",bottom:0,width:280,height:280,transform:`translateX(-50%) scale(${S/280})`,transformOrigin:"center bottom",zIndex:20}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}
2
+ export{Ht};
@@ -0,0 +1,2 @@
1
+ import{J}from"./chunk-2x5tzfgv.js";import{Lt}from"./chunk-44at74bw.js";import{ht}from"./chunk-j03we9jz.js";import{tt,c,l}from"./chunk-2k8my1h9.js";import{X,h}from"./chunk-yjdj2mf9.js";import{d}from"./chunk-mnrtrr2j.js";import{i}from"./chunk-2skzpxsk.js";import{Me}from"./chunk-fkj53yw2.js";import{t}from"./chunk-5jz8vnk5.js";import{He}from"./chunk-vr4ye1z4.js";import{B}from"./chunk-0x7ssxpn.js";import{N}from"./chunk-zhbj6cm5.js";import{p}from"./chunk-w5yer870.js";import{Loader2 as k}from"lucide-react";import{useCallback as D,useEffect as M,useState as x}from"react";import{useTranslation as j}from"react-i18next";import{toast as V}from"sonner";import{jsxDEV as e,Fragment as O}from"react/jsx-dev-runtime";async function L(o,a){let{pet:u}=await X();if(!u){if(o.length!==1)return;let n=o.find((r)=>a[r.vibemon_uuid]);if(n)await h({pet:n.vibemon_uuid});return}if(a[u])return;let m=o.find((n)=>a[n.vibemon_uuid]);if(m)await h({pet:m.vibemon_uuid})}function z(o){if(o.icon_url===null)return l;return o.icon_url}function U(o){if(o.background_url===null)return l;return o.background_url}function W({item:o,isCurrent:a,isDownloaded:u,onSelectedClick:m,onEquip:n}){return e("div",{"data-testid":"equip-list-item",className:"relative h-[10.673cqw] w-full shrink-0",children:[e("div",{className:"absolute top-[10.302%] left-[4.878%] h-[78.079%] w-[94.309%]",children:[e("img",{src:U(o),alt:"","aria-hidden":!0,className:"absolute inset-0 h-full w-full max-w-none rounded-[1.667cqw] object-cover select-none"},void 0,!1,void 0,this),e("div",{className:"absolute top-[29.638%] left-[9.914%] w-[65.259%]",children:[e("div",{className:"truncate text-[1.875cqw] leading-[1.278] text-white",style:{fontFamily:"Outfit, system-ui, sans-serif",fontWeight:900},children:o.name},void 0,!1,void 0,this),e("div",{className:"mt-[0.104cqw] truncate text-[1.042cqw] leading-[1.25] font-medium text-white",style:{fontFamily:"Outfit, system-ui, sans-serif"},children:o.description??o.rarity_name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),e(t,{"aria-label":a?"selected":"select",disabled:!u,onClick:a?m:n,style:{backgroundColor:"#5536CC"},className:"absolute top-[31.756%] left-[70.690%] h-[41.25%] w-[17.241%] overflow-hidden rounded-full border-0 p-0 shadow-none drop-shadow-[0_0.25cqh_0_rgba(0,0,0,0.5)] transition-none hover:brightness-105 active:translate-y-0 disabled:opacity-100",children:[e("img",{src:c,alt:"",className:"pointer-events-none absolute inset-0 size-full max-w-none rounded-[inherit] object-bottom opacity-5 mix-blend-difference select-none"},void 0,!1,void 0,this),a&&e("span",{"aria-hidden":!0,className:"pointer-events-none absolute inset-0 bg-[#5D508B]"},void 0,!1,void 0,this),e("span",{"aria-hidden":!0,className:"absolute inset-0 shadow-[inset_0_0.2cqh_0.07cqh_0_white]"},void 0,!1,void 0,this),e("span",{className:"relative text-[1.458cqw] leading-normal font-normal text-white",style:{fontFamily:'"Grow Year", system-ui, sans-serif'},children:a?"selected":"select"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),e("div",{className:"absolute top-0 left-0 size-[7.917cqw] overflow-hidden rounded-full",children:e("img",{src:i(z(o)),alt:`${o.name} portrait`,className:"h-full w-full object-cover select-none"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Qt({items:o,currentId:a,downloaded:u,onSelectedClick:m,onEquip:n}){return e("div",{className:"flex flex-col gap-[0.833cqw]",children:J(o).map((r)=>e(W,{item:r,isCurrent:r.vibemon_uuid===a,isDownloaded:u[r.vibemon_uuid],onSelectedClick:m,onEquip:()=>n(r.vibemon_uuid)},r.vibemon_uuid,!1,void 0,this))},void 0,!1,void 0,this)}function Be({onBack:o,onWish:a,onAlbum:u,albumHasUnseen:m,ownedCards:n,ownedLoaded:r,availablePoints:S,pointsLoaded:I}){let{i18n:E}=j("common"),f=E.getFixedT("en","common"),{pet:C}=d(),v=Me((s)=>s.status==="checking"||s.status==="updating"),[w,R]=x({}),[F,g]=x(0),y=D(()=>g(0),[]);M(()=>{let s=!1;return(async()=>{let b=await Promise.all(n.map(async(_)=>[_.vibemon_uuid,await Lt(_.vibemon_uuid)]));if(s)return;let q=Object.fromEntries(b);if(R(q),!v)await L(n,q)})(),()=>{s=!0}},[n,v]);let P=async(s)=>{y();try{if(await h({pet:s}),await ht({trusted:!0})==="unavailable")V.error(f("vibemon.actionFailed"))}catch(b){console.warn("[vibemon] equip failed",b),V.error(f("vibemon.actionFailed"))}},T=n.some((s)=>w[s.vibemon_uuid]);return e(p,{backdrop:e(O,{children:[e("img",{src:tt,alt:"","aria-hidden":!0,className:"pointer-events-none absolute inset-0 h-full w-full object-cover opacity-10 select-none"},void 0,!1,void 0,this),e("div",{"aria-hidden":!0,className:"pointer-events-none absolute inset-0",style:{background:"linear-gradient(180deg, rgba(0,0,0,0.3) 0%, rgba(102,102,102,0) 100%)"}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[e(N,{onBack:o,onWish:a,sectionAction:{kind:"album",onClick:u,hasUnseen:m},availablePoints:S,pointsLoaded:I},void 0,!1,void 0,this),!r?e("div",{"data-testid":"vibemon-owned-loading",className:"absolute inset-0 flex items-center justify-center text-[#DCC9FF]",children:e(k,{className:"size-8 animate-spin"},void 0,!1,void 0,this)},void 0,!1,void 0,this):n.length===0?e(B,{onWish:a},void 0,!1,void 0,this):v&&!T?e("div",{className:"absolute inset-0 flex flex-col items-center justify-center gap-3 text-[#DCC9FF]",children:[e(k,{className:"size-8 animate-spin"},void 0,!1,void 0,this),e("div",{className:"text-sm",children:f("vibemon.syncPreparing")},void 0,!1,void 0,this)]},void 0,!0,void 0,this):e("div",{className:"absolute top-[17.167%] left-[17.969%] h-[77.833%] w-[64.063%] [scrollbar-width:none] overflow-y-auto overscroll-y-contain [&::-webkit-scrollbar]:hidden",children:e(Qt,{items:n,currentId:C,downloaded:w,onSelectedClick:()=>g((s)=>s+1),onEquip:(s)=>void P(s)},void 0,!1,void 0,this)},void 0,!1,void 0,this),e(He,{requestId:F,onClose:y},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}
2
+ export{Qt,Be};
@@ -0,0 +1,2 @@
1
+ var ce=200,_n=320;
2
+ export{ce,_n};
@@ -0,0 +1,2 @@
1
+ import{e}from"./chunk-htw56xtp.js";import{Bt,Mt,qt}from"./chunk-38y9615y.js";import{useEffect as k,useEffectEvent as q,useState as x}from"react";import{jsxDEV as O}from"react/jsx-dev-runtime";var F=Promise.resolve();function d(c){let u=F,r;F=new Promise((n)=>{r=n}),(async()=>{await u;try{await c()}finally{r()}})()}function Oe({cardRef:c,opacity:u=0.65,radius:r=20,enabled:n=!0}){let t=e(),[B,R]=x([]),N=q(()=>{d(async()=>{await t.windows.call("bubble-blur",{enabled:!1,radius:1,path:null}).catch(t.onError)})});return k(()=>()=>N(),[]),k(()=>{let o=c.current;if(o===null)throw Error("Pet bubble background requires its card");let z={scaleFactor:()=>t.windows.call("scale")},b=!1,l=null,m=null,p=async()=>{if(b)return;let a=await z.scaleFactor();if(b)return;let i=o.getBoundingClientRect();if(i.width<=1||i.height<=1)return;let S=getComputedStyle(o),h=Number.parseFloat(S.borderTopLeftRadius);if(!Number.isFinite(h))throw Error("Pet bubble corner radius must resolve to pixels");let v=o.parentElement;if(v===null)throw Error("Pet bubble card requires its container");let g=Number.parseFloat(getComputedStyle(v).paddingBottom);if(!Number.isFinite(g))throw Error("Pet bubble tail spacing must resolve to pixels");let y=Bt(i.left+0.5,i.top+0.5,i.width-1,i.height-1,h-0.5,g);R(y);let E=n?qt(y,window.devicePixelRatio/a):null,P=JSON.stringify([n,r,E]);if(P===m)return;await t.windows.call("bubble-blur",{enabled:n,radius:r,path:E}),m=P},s=()=>{if(b||l!==null)return;l=requestAnimationFrame(()=>{l=null,d(()=>p().catch(t.onError))})};d(()=>p().catch(t.onError));let f=new ResizeObserver(s);f.observe(o);let w=new MutationObserver(s);for(let a of[document.documentElement,document.body,o])w.observe(a,{attributes:!0,attributeFilter:["class","style"]});window.addEventListener("resize",s);let C=t.windows.geometry(s);return()=>{if(b=!0,l!==null)cancelAnimationFrame(l);f.disconnect(),w.disconnect(),window.removeEventListener("resize",s),C.then((a)=>a()).catch(t.onError)}},[c,n,r,t]),O("svg",{"aria-hidden":!0,"data-pet-bubble-background":!0,className:"pointer-events-none fixed inset-0 size-full overflow-visible",children:O("path",{d:Mt(B),fill:"var(--popover)",fillOpacity:u,stroke:"var(--border)",strokeOpacity:u,strokeWidth:1},void 0,!1,void 0,this)},void 0,!1,void 0,this)}
2
+ export{Oe};
@@ -0,0 +1,2 @@
1
+ import{at,lt,P}from"./chunk-2k8my1h9.js";import{o}from"./chunk-xrw9s1th.js";import{t}from"./chunk-5jz8vnk5.js";import{useState as i}from"react";import{jsxDEV as e}from"react/jsx-dev-runtime";function je({onClick:s,className:a}){let[r,n]=i(!1);return e(t,{"aria-label":"Wish",variant:"ghost",className:o("relative size-[64px] p-0 hover:bg-transparent",a),onClick:s,onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),children:[e("img",{src:r?at:lt,alt:"",className:"absolute top-[5.439%] left-[4.863%] h-[89.122%] w-[90.27%] max-w-none object-contain select-none"},void 0,!1,void 0,this),e("img",{src:P,alt:"",className:"pointer-events-none absolute top-[4.422%] left-[50.578%] h-[26.03%] w-[49.428%] max-w-none select-none"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}
2
+ export{je};
File without changes
@@ -0,0 +1,2 @@
1
+ function vt(e,t,n){if(n<e.startedAt)return e;if(t==="running")return{...e,sawRunning:!0,completed:!1};if(t==="requires_action")return{...e,completed:!1};if(t==="done"||t==="idle"&&e.sawRunning)return{...e,completed:!0};return e}
2
+ export{vt};
@@ -0,0 +1,2 @@
1
+ import{useLayoutEffect as D,useRef as t,useState as C}from"react";import{jsxDEV as m}from"react/jsx-dev-runtime";var z=1,G=100,K=1000;function T({src:u,sources:l,playing:R=!0,active:c=!0,background:H,onFirstFrame:L,onComplete:S,onError:h}){let p=t(null),A=t(null),a=t(0),y=t(!1),I=t(u===void 0?{sources:l}:{src:u});I.current=u===void 0?{sources:l}:{src:u};let[O,v]=C(0),[q,E]=C(!1),n=u??l.map((e)=>`${e.type}:${e.src}`).join("|"),g=t(n),w=t(S),M=t(L),N=t(h);return w.current=S,M.current=L,N.current=h,D(()=>{let e=p.current;if(e===null)throw Error("Video player is not mounted");if(!c)return;if(y.current=!1,g.current!==n)a.current=0;g.current=n;let o=I.current;if("src"in o)e.src=o.src;else{let s=e.querySelectorAll("source");o.sources.forEach((r,d)=>{s[d].setAttribute("src",r.src)})}e.defaultMuted=!0,e.muted=!0;let i=()=>{y.current=!0};return e.addEventListener("error",i),e.load(),()=>{a.current=e.currentTime,e.removeEventListener("error",i),e.pause(),e.removeAttribute("src");for(let s of e.querySelectorAll("source"))s.removeAttribute("src");e.load()}},[n,c]),D(()=>{let e=p.current,o=A.current;if(e===null||o===null)throw Error("Video player is not mounted");if(o.style.opacity="0",v(0),E(!1),!R){if(a.current=0,c)e.pause(),e.currentTime=0;return}if(!c)return;e.currentTime=a.current;let i=!1,s=!1,r=!1,d=!1,b=null,V=null,F=null,_=()=>{if(s||!e.duration)return;if(e.duration-e.currentTime<z)s=!0,v(1)},k=()=>{if(r)return;V=setTimeout(()=>{E(!0),v(0),F=setTimeout(()=>{if(r)return;r=!0,w.current()},K)},G)},f=()=>{if(i||r)return;r=!0,E(!0),N.current()};if(b=e.requestVideoFrameCallback(()=>{if(i||r||d||e.dataset.sourceKey!==n)return;d=!0,o.style.opacity="1",M.current()}),e.addEventListener("timeupdate",_),e.addEventListener("ended",k),e.addEventListener("error",f),y.current)f();else e.play().catch(f);return()=>{if(i=!0,e.removeEventListener("timeupdate",_),e.removeEventListener("ended",k),e.removeEventListener("error",f),b!==null)e.cancelVideoFrameCallback(b);if(V)clearTimeout(V);if(F)clearTimeout(F)}},[n,R,c]),m("div",{ref:A,"data-video-presentation":!0,className:"pointer-events-none absolute inset-0 z-20",style:{opacity:0,background:H},children:[m("video",{ref:p,"data-source-key":n,preload:"auto",muted:!0,playsInline:!0,className:"absolute inset-0 z-20 h-full w-full object-cover",style:{visibility:q?"hidden":"visible"},children:l===void 0?null:l.map((e)=>m("source",{type:e.type},`${e.type}:${e.src}`,!1,void 0,this))},void 0,!1,void 0,this),m("div",{className:"pointer-events-none absolute inset-0 z-20 bg-white transition-opacity duration-1000 ease-in",style:{opacity:O}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}
2
+ export{T};
@@ -0,0 +1,2 @@
1
+ function r(e){return`${e.apiHost}/${e.userId}`}function n(e,o){let t=e.account();if(t===null||r(t)!==r(o)||t.revision!==o.revision)throw Error("Vibemon account changed")}
2
+ export{r,n};
@@ -0,0 +1 @@
1
+ import{t}from"./chunk-5jz8vnk5.js";import{ze}from"./chunk-jf6z5rh7.js";import{cva as s}from"class-variance-authority";import{cn as o}from"cn";import{jsxDEV as i}from"react/jsx-dev-runtime";function qe({className:r,...a}){return i("div",{"data-slot":"input-group",role:"group",className:o("group/input-group border-input has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-destructive/20 dark:bg-input/30 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 relative flex h-9 w-full min-w-0 items-center rounded-md border shadow-xs transition-[color,box-shadow] outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-3 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5",r),...a},void 0,!1,void 0,this)}var p=s("text-muted-foreground flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4",{variants:{align:{"inline-start":"order-first pl-2 has-[>button]:-ml-1 has-[>kbd]:ml-[-0.15rem]","inline-end":"order-last pr-2 has-[>button]:-mr-1 has-[>kbd]:mr-[-0.15rem]","block-start":"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2","block-end":"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2"}},defaultVariants:{align:"inline-start"}});function De({className:r,align:a="inline-start",...e}){return i("div",{role:"group","data-slot":"input-group-addon","data-align":a,className:o(p({align:a}),r),onClick:(n)=>{if(n.target.closest("button"))return;n.currentTarget.parentElement?.querySelector("input")?.focus()},...e},void 0,!1,void 0,this)}var l=s("flex items-center gap-2 text-sm shadow-none",{variants:{size:{xs:"h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5",sm:"","icon-xs":"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0","icon-sm":"size-8 p-0 has-[>svg]:p-0"}},defaultVariants:{size:"xs"}});function V({className:r,type:a="button",variant:e="ghost",size:n="xs",...u}){return i(t,{type:a,"data-size":n,variant:e,className:o(l({size:n}),r),...u},void 0,!1,void 0,this)}function Le({className:r,...a}){return i(ze,{"data-slot":"input-group-control",className:o("flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent",r),...a},void 0,!1,void 0,this)}export{qe,De,V,Le};
@@ -0,0 +1,2 @@
1
+ var s={working:{fps:7,loop:!0},empty:{fps:6,loop:!0},done:{fps:7,loop:!1},wait:{fps:7,loop:!0},drag:{fps:7,loop:!0},error:{fps:7,loop:!0},hover:{fps:6,loop:!0}};function ne(r,t,i){let p=i.states.map((o)=>o.id),e=(...o)=>o.find((m)=>p.includes(m))??p[0],a={idle:e("empty","working"),"idle-alt":e("empty","working"),groom:e("empty","working"),"groom-alt":e("empty","working"),run:e("drag","working"),sleep:e("empty","working"),sit:e("working","empty"),interact:e("done","hover","empty"),jump:e("done","empty"),scared:e("drag","empty"),wait:e("wait","empty"),error:e("error","wait","empty"),hover:e("hover","empty")},n=i.frameWidth;return{name:r,frameSize:n,frameHeight:i.frameHeight,renderSize:n,cropX:0,cropY:0,cropW:n,cropH:i.frameHeight,spritesheet:t,facing:"right",behaviorMap:a,states:i.states.map((o)=>({...o,...s[o.id]??{fps:6,loop:!0}}))}}function oe(r,t){if(t.config!==void 0)return t.config;if(t.sheetName===null||t.layout===null)throw Error("Vibemon has no animation");return ne(t.name??r,t.sheetName,t.layout)}
2
+ export{ne,oe};