@alwith/module-auth 0.1.8 → 0.1.10

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 (203) hide show
  1. package/README.md +1 -1
  2. package/dist/chunk-01py4vpp.js +2 -0
  3. package/dist/chunk-1agdfzjz.js +2 -0
  4. package/dist/chunk-1mwjz4f1.js +2 -0
  5. package/dist/chunk-1sf9m7x2.js +2 -0
  6. package/dist/chunk-2j5re92x.js +2 -0
  7. package/dist/chunk-38vgcbpq.js +2 -0
  8. package/dist/chunk-3amxesw3.js +2 -0
  9. package/dist/chunk-3q1e1ksh.js +2 -0
  10. package/dist/chunk-3rpgxz1z.js +2 -0
  11. package/dist/chunk-3vpcfe38.js +2 -0
  12. package/dist/chunk-41jxjz9n.js +2 -0
  13. package/dist/chunk-4gegjx79.js +2 -0
  14. package/dist/chunk-4mwvph27.js +2 -0
  15. package/dist/chunk-5zpeb8cj.js +2 -0
  16. package/dist/chunk-6f02m6jw.js +2 -0
  17. package/dist/chunk-6t0bw1wy.js +2 -0
  18. package/dist/chunk-74hpp4me.js +2 -0
  19. package/dist/chunk-7pdpmxg2.js +2 -0
  20. package/dist/chunk-7y7stqn0.js +2 -0
  21. package/dist/chunk-8nzgysac.js +2 -0
  22. package/dist/chunk-8w0zccsf.js +0 -0
  23. package/dist/chunk-96emfz6b.js +2 -0
  24. package/dist/chunk-9h4j75af.js +2 -0
  25. package/dist/chunk-afy09ajr.js +2 -0
  26. package/dist/chunk-ax8zmvs0.js +2 -0
  27. package/dist/chunk-b5zfgr86.js +2 -0
  28. package/dist/chunk-b7v6g7a0.js +2 -0
  29. package/dist/chunk-bcyk6es8.js +2 -0
  30. package/dist/chunk-c9banqkx.js +2 -0
  31. package/dist/chunk-ctvwa8d3.js +2 -0
  32. package/dist/chunk-d13j3xks.js +2 -0
  33. package/dist/chunk-d4ezh3c4.js +6 -0
  34. package/dist/chunk-e20z911q.js +1 -0
  35. package/dist/chunk-enze3bpk.js +2 -0
  36. package/dist/chunk-ezj6gpm0.js +2 -0
  37. package/dist/chunk-f0awr1g7.js +2 -0
  38. package/dist/chunk-g8nah79y.js +2 -0
  39. package/dist/chunk-gq64get1.js +2 -0
  40. package/dist/chunk-gv5he3xg.js +2 -0
  41. package/dist/chunk-h994ssre.js +2 -0
  42. package/dist/chunk-hscsc9kx.js +2 -0
  43. package/dist/chunk-htw56xtp.js +2 -0
  44. package/dist/chunk-j03we9jz.js +2 -0
  45. package/dist/chunk-j2922k42.js +2 -0
  46. package/dist/chunk-jampyjt1.js +2 -0
  47. package/dist/chunk-jf77909y.js +2 -0
  48. package/dist/chunk-jppe84sk.js +2 -0
  49. package/dist/chunk-khnyadsg.js +0 -0
  50. package/dist/chunk-kqsxaxk8.js +2 -0
  51. package/dist/chunk-kwq26qhs.js +2 -0
  52. package/dist/chunk-m3e7wah7.js +2 -0
  53. package/dist/chunk-m96z2xh6.js +2 -0
  54. package/dist/chunk-mdqxdcxh.js +2 -0
  55. package/dist/chunk-mfrnyj0b.js +2 -0
  56. package/dist/chunk-mjsqb1wk.js +1 -0
  57. package/dist/chunk-nbfhs21c.js +2 -0
  58. package/dist/chunk-pbwt3qj9.js +0 -0
  59. package/dist/chunk-pe1mn10v.js +2 -0
  60. package/dist/chunk-pha0eyam.js +2 -0
  61. package/dist/chunk-pwsarey8.js +2 -0
  62. package/dist/chunk-qd5jhh2h.js +1 -0
  63. package/dist/chunk-qy364wgy.js +2 -0
  64. package/dist/chunk-rerywpwe.js +2 -0
  65. package/dist/chunk-rfxpf1eq.js +2 -0
  66. package/dist/chunk-rrhhytq1.js +2 -0
  67. package/dist/chunk-t6snsees.js +2 -0
  68. package/dist/chunk-t858h8ch.js +2 -0
  69. package/dist/chunk-tvmvzc41.js +2 -0
  70. package/dist/chunk-v5akzbxg.js +2 -0
  71. package/dist/chunk-v890qhc2.js +1 -0
  72. package/dist/chunk-v9czb1e6.js +2 -0
  73. package/dist/chunk-vt1sfk87.js +2 -0
  74. package/dist/chunk-w5yer870.js +2 -0
  75. package/dist/chunk-wa475kmq.js +2 -0
  76. package/dist/chunk-wfsdbf7j.js +2 -0
  77. package/dist/chunk-x61q358n.js +2 -0
  78. package/dist/chunk-xrw9s1th.js +2 -0
  79. package/dist/chunk-zar89jcs.js +3 -0
  80. package/dist/chunk-zkwggfj2.js +2 -0
  81. package/dist/client.d.ts +1 -1
  82. package/dist/client.js +1 -1
  83. package/dist/index.d.ts +6 -6
  84. package/dist/index.js +1 -1
  85. package/dist/oauth.js +1 -1
  86. package/dist/password.js +1 -1
  87. package/dist/pets/assets.d.ts +8 -8
  88. package/dist/pets/assets.js +1 -1
  89. package/dist/pets/client.d.ts +2 -2
  90. package/dist/pets/client.js +1 -1
  91. package/dist/pets/core/engine.d.ts +2 -2
  92. package/dist/pets/core/engine.js +1 -1
  93. package/dist/pets/core/host.d.ts +3 -3
  94. package/dist/pets/core/host.js +1 -1
  95. package/dist/pets/core/index.d.ts +11 -11
  96. package/dist/pets/core/index.js +1 -1
  97. package/dist/pets/core/lib/account-state.d.ts +1 -1
  98. package/dist/pets/core/lib/account-state.js +1 -1
  99. package/dist/pets/core/lib/bubble-outline.js +1 -1
  100. package/dist/pets/core/lib/draw-result.d.ts +1 -1
  101. package/dist/pets/core/lib/draw-result.js +1 -1
  102. package/dist/pets/core/lib/endpoints.d.ts +1 -1
  103. package/dist/pets/core/lib/endpoints.js +1 -1
  104. package/dist/pets/core/lib/gacha-pools.d.ts +1 -1
  105. package/dist/pets/core/lib/gacha-pools.js +1 -1
  106. package/dist/pets/core/lib/loading-progress.js +1 -1
  107. package/dist/pets/core/lib/pet-animation-sync.d.ts +2 -2
  108. package/dist/pets/core/lib/pet-animation-sync.js +1 -1
  109. package/dist/pets/core/lib/pet-bubble-state.d.ts +1 -1
  110. package/dist/pets/core/lib/pet-bubble-state.js +1 -1
  111. package/dist/pets/core/lib/pet-drag.d.ts +2 -2
  112. package/dist/pets/core/lib/pet-drag.js +1 -1
  113. package/dist/pets/core/lib/pet-presentation.d.ts +3 -3
  114. package/dist/pets/core/lib/pet-presentation.js +1 -1
  115. package/dist/pets/core/lib/pet-session-context.js +1 -1
  116. package/dist/pets/core/lib/preload-images.js +1 -1
  117. package/dist/pets/core/lib/presentation-readiness.js +1 -1
  118. package/dist/pets/core/lib/rarity.d.ts +1 -1
  119. package/dist/pets/core/lib/rarity.js +1 -1
  120. package/dist/pets/core/lib/recharge.js +1 -1
  121. package/dist/pets/core/lib/reply-submission.d.ts +1 -1
  122. package/dist/pets/core/lib/reply-submission.js +1 -1
  123. package/dist/pets/core/lib/resource-sync.js +1 -1
  124. package/dist/pets/core/lib/runtime-types.d.ts +1 -1
  125. package/dist/pets/core/lib/settings.js +1 -1
  126. package/dist/pets/core/lib/sprite-config.d.ts +2 -2
  127. package/dist/pets/core/lib/sprite-config.js +1 -1
  128. package/dist/pets/core/lib/vibemon-resources.d.ts +1 -1
  129. package/dist/pets/core/lib/vibemon-resources.js +1 -1
  130. package/dist/pets/core/lib/view-request.js +1 -1
  131. package/dist/pets/core/lib/window-frame.d.ts +1 -1
  132. package/dist/pets/core/lib/window-frame.js +1 -1
  133. package/dist/pets/core/lib/window-manager.d.ts +1 -1
  134. package/dist/pets/core/lib/window-manager.js +1 -1
  135. package/dist/pets/core/session-icon.js +1 -5
  136. package/dist/pets/core/types.js +1 -1
  137. package/dist/pets/host.js +1 -1
  138. package/dist/pets/index.d.ts +6 -6
  139. package/dist/pets/index.js +1 -1
  140. package/dist/pets/react/assets.js +1 -1
  141. package/dist/pets/react/components/album-view.d.ts +1 -1
  142. package/dist/pets/react/components/album-view.js +1 -1
  143. package/dist/pets/react/components/back-to-home.js +1 -1
  144. package/dist/pets/react/components/equip-view.d.ts +1 -1
  145. package/dist/pets/react/components/equip-view.js +1 -1
  146. package/dist/pets/react/components/gem-balance.js +1 -1
  147. package/dist/pets/react/components/home-view.js +1 -1
  148. package/dist/pets/react/components/insufficient-points-dialog.js +1 -1
  149. package/dist/pets/react/components/intro-overlay.js +1 -1
  150. package/dist/pets/react/components/loading-view.js +1 -1
  151. package/dist/pets/react/components/onboarding-guide.js +1 -1
  152. package/dist/pets/react/components/pet-bubble-background.js +1 -1
  153. package/dist/pets/react/components/pet-lounge.js +1 -1
  154. package/dist/pets/react/components/pet-mode-button.js +1 -1
  155. package/dist/pets/react/components/pet-window.js +1 -1
  156. package/dist/pets/react/components/pull-overlay.d.ts +1 -1
  157. package/dist/pets/react/components/pull-overlay.js +1 -1
  158. package/dist/pets/react/components/pull-video.js +1 -1
  159. package/dist/pets/react/components/pull-view.d.ts +1 -1
  160. package/dist/pets/react/components/pull-view.js +1 -1
  161. package/dist/pets/react/components/quick-reply.js +1 -2
  162. package/dist/pets/react/components/session-icon.d.ts +2 -2
  163. package/dist/pets/react/components/session-icon.js +1 -1
  164. package/dist/pets/react/components/single-pet-toast.js +1 -1
  165. package/dist/pets/react/components/sprite-renderer.d.ts +1 -1
  166. package/dist/pets/react/components/sprite-renderer.js +1 -1
  167. package/dist/pets/react/components/vibemon-empty-state.js +1 -1
  168. package/dist/pets/react/components/vibemon-header.js +1 -1
  169. package/dist/pets/react/components/vibemon-page.js +1 -1
  170. package/dist/pets/react/components/vibemon-scene.js +1 -1
  171. package/dist/pets/react/components/video-fader.js +1 -1
  172. package/dist/pets/react/components/wish-button.js +1 -1
  173. package/dist/pets/react/index.d.ts +5 -5
  174. package/dist/pets/react/index.js +1 -1
  175. package/dist/pets/react/lib/account-state.d.ts +1 -1
  176. package/dist/pets/react/lib/account-state.js +1 -1
  177. package/dist/pets/react/lib/card-image.js +1 -1
  178. package/dist/pets/react/lib/resource-sync.d.ts +2 -2
  179. package/dist/pets/react/lib/resource-sync.js +1 -1
  180. package/dist/pets/react/lib/season.js +1 -1
  181. package/dist/pets/react/lib/use-season.d.ts +1 -1
  182. package/dist/pets/react/lib/use-season.js +1 -1
  183. package/dist/pets/react/lib/utils.js +1 -1
  184. package/dist/pets/react/ui/button.d.ts +2 -2
  185. package/dist/pets/react/ui/button.js +1 -1
  186. package/dist/pets/react/ui/card.js +1 -1
  187. package/dist/pets/react/ui/input-group.d.ts +3 -3
  188. package/dist/pets/react/ui/input-group.js +1 -1
  189. package/dist/pets/react/ui/textarea.js +1 -1
  190. package/dist/pets/resource-package.d.ts +2 -2
  191. package/dist/pets/resource-package.js +1 -1
  192. package/dist/pets/resources.d.ts +5 -5
  193. package/dist/pets/resources.js +1 -1
  194. package/dist/pets/selection.d.ts +1 -1
  195. package/dist/pets/selection.js +1 -1
  196. package/dist/pets/sheet-layout.js +1 -1
  197. package/dist/pets/types.js +1 -0
  198. package/dist/state.d.ts +2 -2
  199. package/dist/state.js +1 -1
  200. package/dist/token-storage.d.ts +1 -1
  201. package/dist/token-storage.js +1 -1
  202. package/dist/types.js +1 -0
  203. package/package.json +13 -12
@@ -1 +1 @@
1
- import{imageInfo as f}from"../../resource-package.js";import{vibemonHost as c}from"../host.js";import{createSpriteConfig as m,spriteConfig as p}from"./sprite-config.js";async function U(e){return await c().assets.resources.inspect(e)!==null}async function g(e){let r=c().assets,t=await r.resources.cached(e)??await r.ensureResource(e);if(t.sheet===null){let o=await r.resources.preview(t),n=o?URL.createObjectURL(new Blob([new Uint8Array(o).buffer],{type:f(o).mime})):"";return{config:m(t.name??e,"",{frameWidth:256,frameHeight:256,states:[{id:"static",row:0,frames:1}]}),spriteUrl:n,staticImage:!0,dispose:()=>{if(n)URL.revokeObjectURL(n)}}}let s=t.sheet,a=s[0]===137&&s[1]===80,i=URL.createObjectURL(new Blob([new Uint8Array(s).buffer],{type:a?"image/png":"image/webp"}));return{config:p(e,t),spriteUrl:i,dispose:()=>URL.revokeObjectURL(i)}}export{g as loadVibemonResource,U as verifyVibemonResource};
1
+ import{Ot,v}from"../../../chunk-41jxjz9n.js";import"../../../chunk-htw56xtp.js";import"../../../chunk-v9czb1e6.js";import"../../../chunk-nbfhs21c.js";import"../../../chunk-4gegjx79.js";export{v as loadVibemonResource,Ot as verifyVibemonResource};
@@ -1 +1 @@
1
- var n=null,t=new Set;function i(e){n=e;for(let o of t)o(e)}function r(){let e=n;return n=null,e}function u(e){return t.add(e),()=>{t.delete(e)}}export{r as consumePendingVibemonView,u as onVibemonViewRequest,i as requestVibemonView};
1
+ import{Wt,ft,gt}from"../../../chunk-6t0bw1wy.js";export{ft as consumePendingVibemonView,gt as onVibemonViewRequest,Wt as requestVibemonView};
@@ -1,4 +1,4 @@
1
- import { type Monitor } from "../host.js";
1
+ import { type Monitor } from "../host";
2
2
  export declare const availableMonitors: () => Promise<Monitor[]>;
3
3
  export declare const getCurrentWindow: () => {
4
4
  outerPosition: () => Promise<{
@@ -1 +1 @@
1
- import{vibemonHost as o}from"../host.js";var e=()=>o().windows.call("monitors"),s=()=>({outerPosition:()=>o().windows.call("position"),outerSize:()=>o().windows.call("size"),scaleFactor:()=>o().windows.call("scale")}),l=(i,n)=>o().windows.call("move",{x:i,y:n});export{e as availableMonitors,s as getCurrentWindow,l as moveVibemonWindow};
1
+ import{fe,b,J}from"../../../chunk-7y7stqn0.js";import"../../../chunk-htw56xtp.js";export{fe as availableMonitors,b as getCurrentWindow,J as moveVibemonWindow};
@@ -1,3 +1,3 @@
1
1
  export declare const openVibemonWindow: (options?: {
2
2
  trusted?: boolean;
3
- }) => Promise<"unavailable" | "shown">;
3
+ }) => Promise<"shown" | "unavailable">;
@@ -1 +1 @@
1
- import{vibemonHost as n}from"../host.js";var i=(o={})=>n().windows.openPet(o);export{i as openVibemonWindow};
1
+ import{ht}from"../../../chunk-j03we9jz.js";import"../../../chunk-htw56xtp.js";export{ht as openVibemonWindow};
@@ -1,5 +1 @@
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 o(a,n){return n?n[a]:t[a==="main"?"number-square-one":"app-window"]}export{o as sessionIconSvg};
1
+ import{_}from"../../chunk-d4ezh3c4.js";export{_ as sessionIconSvg};
@@ -1 +1 @@
1
- var E=200,_=320;export{_ as DEFAULT_VIBEMON_BUBBLE_HEIGHT,E as DEFAULT_VIBEMON_WINDOW_SIZE};
1
+ import{ce,Sn}from"../../chunk-1sf9m7x2.js";export{Sn as DEFAULT_VIBEMON_BUBBLE_HEIGHT,ce as DEFAULT_VIBEMON_WINDOW_SIZE};
package/dist/pets/host.js CHANGED
@@ -1 +1 @@
1
- function t(n){return`${n.apiHost}/${n.userId}`}function c(n,r){let o=n.account();if(o===null||t(o)!==t(r)||o.revision!==r.revision)throw Error("Vibemon account changed")}export{t as accountKey,c as assertAccount};
1
+ import{r,n}from"../chunk-rerywpwe.js";export{r as accountKey,n as assertAccount};
@@ -1,6 +1,6 @@
1
- export * from "./types.js";
2
- export * from "./host.js";
3
- export * from "./client.js";
4
- export * from "./selection.js";
5
- export * from "./resources.js";
6
- export * from "./assets.js";
1
+ export * from "./types";
2
+ export * from "./host";
3
+ export * from "./client";
4
+ export * from "./selection";
5
+ export * from "./resources";
6
+ export * from "./assets";
@@ -1 +1 @@
1
- export*from"./types.js";export*from"./host.js";export*from"./client.js";export*from"./selection.js";export*from"./resources.js";export*from"./assets.js";
1
+ import"../chunk-khnyadsg.js";import"../chunk-pbwt3qj9.js";import{gn}from"../chunk-qy364wgy.js";import{ye}from"../chunk-afy09ajr.js";import{re,xe}from"../chunk-3amxesw3.js";import"../chunk-nbfhs21c.js";import{Re}from"../chunk-ax8zmvs0.js";import{r,n}from"../chunk-rerywpwe.js";import{m}from"../chunk-4gegjx79.js";export{r as accountKey,n as assertAccount,gn as createPetAssets,ye as createPetClient,xe as createPetResources,Re as createPetSelection,re as matchesResource,m as parseSheetLayout};
@@ -1 +1 @@
1
- import o from"../../../assets/pets/card-draw/album-icon.png?url";import r from"../../../assets/pets/card-draw/dialog-close.png?url";import t from"../../../assets/pets/card-draw/empty-pet.png?url";import e from"../../../assets/pets/card-draw/gem-plus.svg?url";import m from"../../../assets/pets/card-draw/gem.svg?url";import p from"../../../assets/pets/card-draw/new-tag.svg?url";import i from"../../../assets/pets/card-draw/not-enough-dialog.png?url";import l from"../../../assets/pets/card-draw/placeholder-card.png?url";import n from"../../../assets/pets/card-draw/proceed-active.png?url";import u from"../../../assets/pets/card-draw/proceed-default.png?url";import c from"../../../assets/pets/card-draw/proceed-hover.png?url";import s from"../../../assets/pets/card-draw/pull-album-icon-transparent.png?url";import a from"../../../assets/pets/card-draw/pull-back-transparent.png?url";import f from"../../../assets/pets/card-draw/pull-gem.svg?url";import d from"../../../assets/pets/card-draw/pull-page-background.png?url";import g from"../../../assets/pets/card-draw/pull-texture.png?url";import x from"../../../assets/pets/card-draw/pull-vibemon-icon-transparent.png?url";import U from"../../../assets/pets/card-draw/result-aura.webp?url";import h from"../../../assets/pets/card-draw/wish-default.png?url";import b from"../../../assets/pets/card-draw/wish.webp?url";import B from"../../../assets/pets/vibemon/album/arrow.svg?url";import k from"../../../assets/pets/vibemon/album/book.webp?url";import P from"../../../assets/pets/vibemon/album/page-bg.webp?url";import w from"../../../assets/pets/vibemon/equip/page-bg.webp?url";import H from"../../../assets/pets/vibemon/equip/single-pet-toast.png?url";import A from"../../../assets/pets/vibemon/guide/arrow.svg?url";import v from"../../../assets/pets/vibemon/guide/bubble-texture-home.png?url";import T from"../../../assets/pets/vibemon/guide/bubble-texture-pull.png?url";import I from"../../../assets/pets/vibemon/guide/hand-shape.svg?url";import V from"../../../assets/pets/vibemon/guide/hand-sheen.png?url";import D from"../../../assets/pets/vibemon/guide/hand.svg?url";import S from"../../../assets/pets/vibemon/guide/mascot.png?url";import W from"../../../assets/pets/vibemon/guide/ring.svg?url";import C from"../../../assets/pets/vibemon/home/album-icon-hover.png?url";import M from"../../../assets/pets/vibemon/home/album-icon.png?url";import q from"../../../assets/pets/vibemon/home/album-text.png?url";import y from"../../../assets/pets/vibemon/home/home-bg.webp?url";import G from"../../../assets/pets/vibemon/home/intro.mp4?url&no-inline";import L from"../../../assets/pets/vibemon/home/pull.mp4?url&no-inline";import R from"../../../assets/pets/vibemon/home/pull.webm?url&no-inline";import j from"../../../assets/pets/vibemon/home/vibemon-icon-hover.png?url";import z from"../../../assets/pets/vibemon/home/vibemon-icon.png?url";import E from"../../../assets/pets/vibemon/home/vibemon-text.png?url";import F from"../../../assets/pets/vibemon/home/wish-icon-hover.png?url";import J from"../../../assets/pets/vibemon/home/wish-icon.png?url";import K from"../../../assets/pets/vibemon/home/wish-text.png?url";import N from"../../../assets/pets/vibemon/loading/background.webp?url";import O from"../../../assets/pets/vibemon/loading/logo.webp?url";import Q from"../../../assets/pets/vibemon/multi-draw/bg-sr.png?url";import X from"../../../assets/pets/vibemon/multi-draw/bg-ssr.png?url";var Qo={vibemon:{icon:z,hover:j,text:E},wish:{icon:J,hover:F,text:K},album:{icon:M,hover:C,text:q}},Xo={default:u,hover:c,active:n},Yo=y,Zo=G,_o=L,$o=R,or=A,rr=v,tr=T,er=S,mr=D,pr=I,ir=V,lr=W,nr=B,ur=k,cr=P,sr=w,ar=H,fr=N,dr=O,gr=Q,xr=X,Ur=b,hr=h,br=p,Br=i,kr=r,Pr=t,wr=m,Hr=e,Ar=g,vr=f,Tr=d,Ir=a,Vr=x,Dr=s,Sr=o,Wr=l,Cr=U;export{nr as albumArrow,ur as albumBook,Sr as albumIcon,cr as albumPageBackground,kr as dialogClose,Pr as emptyPet,sr as equipPageBackground,wr as gem,Hr as gemPlus,or as guideArrow,mr as guideHand,pr as guideHandShape,ir as guideHandSheen,rr as guideHomeTexture,er as guideMascot,tr as guidePullTexture,lr as guideRing,Yo as homeBackground,Qo as homeHotspotAssets,Br as insufficientPointsDialog,Zo as introVideo,fr as loadingBackground,dr as loadingLogo,gr as multiDrawSrBackground,xr as multiDrawSsrBackground,br as newTag,Wr as placeholderCard,Xo as proceedButtonAssets,Dr as pullAlbumIcon,Ir as pullBack,vr as pullGem,Tr as pullPageBackground,Ar as pullTexture,Vr as pullVibemonIcon,_o as pullVideoMp4,$o as pullVideoWebm,Cr as resultAura,ar as singlePetToast,hr as wishDefault,Ur as wishHover};
1
+ import{s,Ye,U,Ke,Xe,Ze,D,L,O,x,q,S,H,G,Je,Qe,et,tt,nt,ot,rt,it,st,at,lt,P,ct,ut,dt,z,F,c,W,j,f,g,Y,mt,l,pt}from"../../chunk-tvmvzc41.js";export{Je as albumArrow,Qe as albumBook,mt as albumIcon,et as albumPageBackground,ut as dialogClose,dt as emptyPet,tt as equipPageBackground,z as gem,F as gemPlus,D as guideArrow,q as guideHand,S as guideHandShape,H as guideHandSheen,L as guideHomeTexture,x as guideMascot,O as guidePullTexture,G as guideRing,U as homeBackground,s as homeHotspotAssets,ct as insufficientPointsDialog,Ke as introVideo,ot as loadingBackground,rt as loadingLogo,it as multiDrawSrBackground,st as multiDrawSsrBackground,P as newTag,l as placeholderCard,Ye as proceedButtonAssets,Y as pullAlbumIcon,f as pullBack,W as pullGem,j as pullPageBackground,c as pullTexture,g as pullVibemonIcon,Xe as pullVideoMp4,Ze as pullVideoWebm,pt as resultAura,nt as singlePetToast,lt as wishDefault,at as wishHover};
@@ -1,4 +1,4 @@
1
- import type { MyVibemonItem } from "../../core/lib/endpoints.js";
1
+ import type { MyVibemonItem } from "../../core/lib/endpoints";
2
2
  export declare function AlbumView({ onBack, onWish, onEquip, ownedCards, ownedLoaded, availablePoints, pointsLoaded }: {
3
3
  onBack: () => void;
4
4
  onWish: () => void;
@@ -1 +1 @@
1
- import{jsx as e,jsxs as i,Fragment as c}from"react/jsx-runtime";import{Loader2 as C}from"lucide-react";import{useMemo as x,useState as k}from"react";import{sortByRarityDesc as y}from"../../core/lib/rarity.js";import{albumArrow as N,albumBook as V,albumPageBackground as _}from"../assets.js";import{cardThumb as A}from"../lib/card-image.js";import{cn as f}from"../lib/utils.js";import{Button as P}from"../ui/button.js";import{VibemonEmptyState as B}from"./vibemon-empty-state.js";import{VibemonHeader as M}from"./vibemon-header.js";import{VibemonScene as j}from"./vibemon-scene.js";var l=8;function h({direction:r,disabled:t,onClick:a}){let o=r==="previous";return e(P,{"aria-label":o?"Previous album page":"Next album page",disabled:t,onClick:a,className:f("absolute top-[55.870%] z-20 size-[2.917cqw] bg-transparent p-0 shadow-none transition-none hover:bg-transparent disabled:opacity-100",o?"left-[20.521%]":"left-[76.563%]"),children:e("img",{src:N,alt:"",className:f("h-[63.9%] w-[46.2%] max-w-none select-none",o&&"-scale-x-100",t&&"opacity-50")})})}function E(){return i("div",{className:"relative h-full w-full",children:[e("svg",{viewBox:"0 0 200 288",preserveAspectRatio:"none","aria-hidden":!0,className:"absolute inset-0 h-full w-full opacity-25",children:e("rect",{x:"6.16",y:"7.76",width:"187.69",height:"272.47",rx:"14",fill:"none",stroke:"#8687CE",strokeWidth:"5",strokeDasharray:"25 25"})}),e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"67",height:"80",viewBox:"0 0 67 80",fill:"none",className:"absolute top-[50%] left-[50%] h-[27.5%] w-[33.1%] max-w-none translate-x-[-50%] translate-y-[-50%] select-none",children:e("path",{d:"M46.2449 32.0803V22.6882C46.2449 15.4054 40.3462 9.50669 33.0634 9.50669C25.7807 9.50669 19.882 15.415 19.882 22.6977V32.0899H46.2449V32.0803ZM9.69759 32.1853L9.68804 31.8894V21.5714C9.68804 15.854 11.9597 10.3657 16.0067 6.3187C20.0538 2.27168 25.5325 0 31.2595 0H34.877C46.789 0 56.4388 9.65941 56.4388 21.5619V32.1853C61.9939 32.9584 66.1269 37.7118 66.1269 43.3242V67.9786C66.1269 74.1923 61.0967 79.2224 54.883 79.2224H11.2439C5.03015 79.2224 0 74.1923 0 67.9786V43.3337C0 37.7213 4.13293 32.968 9.69759 32.1853ZM30.4672 57.5747V64.9242C30.4672 66.3559 31.6317 67.5204 33.0634 67.5204C34.4952 67.5204 35.6596 66.3559 35.6596 64.9242V57.5747C38.8572 56.3243 40.7184 52.974 40.0789 49.6047C39.4394 46.2258 36.4996 43.7823 33.0634 43.7823C29.6273 43.7823 26.6779 46.2258 26.048 49.6047C25.4084 52.974 27.2697 56.3243 30.4672 57.5747Z",fill:"#8687CE",fillOpacity:"0.25"})})]})}function S({cards:r}){return i(c,{children:[e("img",{src:V,alt:"","aria-hidden":!0,className:"pointer-events-none absolute top-[14.158%] left-[14.583%] h-[79.313%] w-[74.067%] max-w-none select-none",style:{maskImage:"linear-gradient(to bottom, rgba(255,255,255,0.8) 0%, #fff 25.66%, #fff 93.71%, rgba(255,255,255,0.2) 100%)",WebkitMaskImage:"linear-gradient(to bottom, rgba(255,255,255,0.8) 0%, #fff 25.66%, #fff 93.71%, rgba(255,255,255,0.2) 100%)"}}),e("div",{"data-testid":"album-book",className:"absolute top-[32.917%] left-[25.729%] grid h-[50.574%] w-[48.542%] grid-cols-4 grid-rows-2 gap-x-[4.721%] gap-y-[4.943%]",children:r.map((t,a)=>e("div",{className:"relative",children:t?e("img",{src:A(t.gacha_url??t.cover_url),alt:`${t.name} ${t.rarity_name} card`,className:"h-full w-full object-contain drop-shadow-[0_8px_9px_rgba(15,8,64,0.24)] select-none"}):e(E,{})},t?`${t.vibemon_uuid}-${a}`:`locked-${a}`))})]})}function T({onBack:r,onWish:t,onEquip:a,ownedCards:o,ownedLoaded:g,availablePoints:b,pointsLoaded:w}){let[v,u]=k(0),m=x(()=>y(o).flatMap((p)=>Array.from({length:p.duplicate_count},()=>p)),[o]),s=Math.ceil(m.length/l),n=s===0?0:Math.min(v,s-1),d=[...m.slice(n*l,(n+1)*l)];while(d.length<l)d.push(null);return i(j,{backdrop:i(c,{children:[e("img",{src:_,alt:"","aria-hidden":!0,className:"pointer-events-none absolute inset-0 h-full w-full object-cover select-none"}),e("div",{"aria-hidden":!0,className:"pointer-events-none absolute inset-0 bg-[#422053]/20"})]}),children:[e(M,{onBack:r,onWish:t,sectionAction:{kind:"equip",onClick:a},availablePoints:b,pointsLoaded:w}),!g?e("div",{"data-testid":"vibemon-owned-loading",className:"absolute inset-0 flex items-center justify-center text-[#DCC9FF]",children:e(C,{className:"size-8 animate-spin"})}):m.length===0?e(B,{onWish:t}):i(c,{children:[e(S,{cards:d}),s>1&&i(c,{children:[e(h,{direction:"previous",disabled:n===0,onClick:()=>u(n-1)}),e(h,{direction:"next",disabled:n>=s-1,onClick:()=>u(n+1)})]})]})]})}export{T as AlbumView};
1
+ import{$e}from"../../../chunk-rrhhytq1.js";import"../../../chunk-h994ssre.js";import"../../../chunk-t858h8ch.js";import"../../../chunk-mfrnyj0b.js";import"../../../chunk-j2922k42.js";import"../../../chunk-qd5jhh2h.js";import"../../../chunk-wfsdbf7j.js";import"../../../chunk-xrw9s1th.js";import"../../../chunk-t6snsees.js";import"../../../chunk-w5yer870.js";import"../../../chunk-mjsqb1wk.js";import"../../../chunk-tvmvzc41.js";import"../../../chunk-jppe84sk.js";import"../../../chunk-wa475kmq.js";import"../../../chunk-htw56xtp.js";export{$e as AlbumView};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as r}from"react/jsx-runtime";import{cn as i}from"../lib/utils.js";import{Button as l}from"../ui/button.js";function d({onClick:n,className:a,disabled:t=!1,label:o="Home",iconSrc:s}){return r(l,{variant:"ghost",className:i("h-auto gap-2 p-0 text-[#8A55C5]/80 hover:bg-transparent hover:text-[#8A55C5]/80",a),disabled:t,onClick:n,children:[s===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"})}):e("img",{src:s,alt:"",className:"size-7 shrink-0"}),e("span",{className:"text-[20px] leading-none font-semibold select-none",children:o})]})}export{d as BackToHome};
1
+ import{M}from"../../../chunk-wfsdbf7j.js";import"../../../chunk-xrw9s1th.js";import"../../../chunk-mjsqb1wk.js";export{M as BackToHome};
@@ -1,4 +1,4 @@
1
- import type { MyVibemonItem } from "../../core/lib/endpoints.js";
1
+ import type { MyVibemonItem } from "../../core/lib/endpoints";
2
2
  export declare function EquipList({ items, currentId, downloaded, onSelectedClick, onEquip }: {
3
3
  items: MyVibemonItem[];
4
4
  currentId: string;
@@ -1 +1 @@
1
- import{jsx as e,jsxs as l,Fragment as V}from"react/jsx-runtime";import{Loader2 as w}from"lucide-react";import{useCallback as P,useEffect as T,useState as g}from"react";import{useTranslation as C}from"react-i18next";import{toast as y}from"sonner";import{sortByRarityDesc as R}from"../../core/lib/rarity.js";import{verifyVibemonResource as B}from"../../core/lib/vibemon-resources.js";import{openVibemonWindow as D}from"../../core/lib/window-manager.js";import{equipPageBackground as I,placeholderCard as _,pullTexture as z}from"../assets.js";import{getVibemonState as L,updateVibemonState as m,useVibemonState as O}from"../lib/account-state.js";import{cardThumb as U}from"../lib/card-image.js";import{useVibemonSyncStore as W}from"../lib/resource-sync.js";import{Button as A}from"../ui/button.js";import{SinglePetToast as G}from"./single-pet-toast.js";import{VibemonEmptyState as H}from"./vibemon-empty-state.js";import{VibemonHeader as Y}from"./vibemon-header.js";import{VibemonScene as J}from"./vibemon-scene.js";async function K(t,i){let{pet:s}=await L();if(!s){if(t.length!==1)return;let n=t.find((a)=>i[a.vibemon_uuid]);if(n)await m({pet:n.vibemon_uuid});return}if(i[s])return;let r=t.find((n)=>i[n.vibemon_uuid]);if(r)await m({pet:r.vibemon_uuid})}function M(t){if(t.icon_url===null)return _;return t.icon_url}function Q(t){if(t.background_url===null)return _;return t.background_url}function X({item:t,isCurrent:i,isDownloaded:s,onSelectedClick:r,onEquip:n}){return l("div",{"data-testid":"equip-list-item",className:"relative h-[10.673cqw] w-full shrink-0",children:[l("div",{className:"absolute top-[10.302%] left-[4.878%] h-[78.079%] w-[94.309%]",children:[e("img",{src:Q(t),alt:"","aria-hidden":!0,className:"absolute inset-0 h-full w-full max-w-none rounded-[1.667cqw] object-cover select-none"}),l("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:t.name}),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:t.description??t.rarity_name})]}),l(A,{"aria-label":i?"selected":"select",disabled:!s,onClick:i?r: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:z,alt:"",className:"pointer-events-none absolute inset-0 size-full max-w-none rounded-[inherit] object-bottom opacity-5 mix-blend-difference select-none"}),i&&e("span",{"aria-hidden":!0,className:"pointer-events-none absolute inset-0 bg-[#5D508B]"}),e("span",{"aria-hidden":!0,className:"absolute inset-0 shadow-[inset_0_0.2cqh_0.07cqh_0_white]"}),e("span",{className:"relative text-[1.458cqw] leading-normal font-normal text-white",style:{fontFamily:'"Grow Year", system-ui, sans-serif'},children:i?"selected":"select"})]})]}),e("div",{className:"absolute top-0 left-0 size-[7.917cqw] overflow-hidden rounded-full",children:e("img",{src:U(M(t)),alt:`${t.name} portrait`,className:"h-full w-full object-cover select-none"})})]})}function Z({items:t,currentId:i,downloaded:s,onSelectedClick:r,onEquip:n}){return e("div",{className:"flex flex-col gap-[0.833cqw]",children:R(t).map((a)=>e(X,{item:a,isCurrent:a.vibemon_uuid===i,isDownloaded:s[a.vibemon_uuid],onSelectedClick:r,onEquip:()=>n(a.vibemon_uuid)},a.vibemon_uuid))})}function ve({onBack:t,onWish:i,onAlbum:s,albumHasUnseen:r,ownedCards:n,ownedLoaded:a,availablePoints:x,pointsLoaded:q}){let{i18n:N}=C("common"),u=N.getFixedT("en","common"),{pet:k}=O(),d=W((o)=>o.status==="checking"||o.status==="updating"),[f,S]=g({}),[F,b]=g(0),p=P(()=>b(0),[]);T(()=>{let o=!1;return(async()=>{let c=await Promise.all(n.map(async(v)=>[v.vibemon_uuid,await B(v.vibemon_uuid)]));if(o)return;let h=Object.fromEntries(c);if(S(h),!d)await K(n,h)})(),()=>{o=!0}},[n,d]);let j=async(o)=>{p();try{if(await m({pet:o}),await D({trusted:!0})==="unavailable")y.error(u("vibemon.actionFailed"))}catch(c){console.warn("[vibemon] equip failed",c),y.error(u("vibemon.actionFailed"))}},E=n.some((o)=>f[o.vibemon_uuid]);return l(J,{backdrop:l(V,{children:[e("img",{src:I,alt:"","aria-hidden":!0,className:"pointer-events-none absolute inset-0 h-full w-full object-cover opacity-10 select-none"}),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%)"}})]}),children:[e(Y,{onBack:t,onWish:i,sectionAction:{kind:"album",onClick:s,hasUnseen:r},availablePoints:x,pointsLoaded:q}),!a?e("div",{"data-testid":"vibemon-owned-loading",className:"absolute inset-0 flex items-center justify-center text-[#DCC9FF]",children:e(w,{className:"size-8 animate-spin"})}):n.length===0?e(H,{onWish:i}):d&&!E?l("div",{className:"absolute inset-0 flex flex-col items-center justify-center gap-3 text-[#DCC9FF]",children:[e(w,{className:"size-8 animate-spin"}),e("div",{className:"text-sm",children:u("vibemon.syncPreparing")})]}):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(Z,{items:n,currentId:k,downloaded:f,onSelectedClick:()=>b((o)=>o+1),onEquip:(o)=>void j(o)})}),e(G,{requestId:F,onClose:p})]})}export{Z as EquipList,ve as EquipView};
1
+ import{Xt,Be}from"../../../chunk-4mwvph27.js";import"../../../chunk-1agdfzjz.js";import"../../../chunk-rfxpf1eq.js";import"../../../chunk-zkwggfj2.js";import"../../../chunk-h994ssre.js";import"../../../chunk-t858h8ch.js";import"../../../chunk-mfrnyj0b.js";import"../../../chunk-j2922k42.js";import"../../../chunk-qd5jhh2h.js";import"../../../chunk-wfsdbf7j.js";import"../../../chunk-xrw9s1th.js";import"../../../chunk-t6snsees.js";import"../../../chunk-w5yer870.js";import"../../../chunk-mjsqb1wk.js";import"../../../chunk-tvmvzc41.js";import"../../../chunk-j03we9jz.js";import"../../../chunk-6f02m6jw.js";import"../../../chunk-jppe84sk.js";import"../../../chunk-ctvwa8d3.js";import"../../../chunk-01py4vpp.js";import"../../../chunk-wa475kmq.js";import"../../../chunk-khnyadsg.js";import"../../../chunk-pbwt3qj9.js";import"../../../chunk-41jxjz9n.js";import"../../../chunk-htw56xtp.js";import"../../../chunk-v9czb1e6.js";import"../../../chunk-qy364wgy.js";import"../../../chunk-afy09ajr.js";import"../../../chunk-3amxesw3.js";import"../../../chunk-nbfhs21c.js";import"../../../chunk-ax8zmvs0.js";import"../../../chunk-rerywpwe.js";import"../../../chunk-4gegjx79.js";export{Xt as EquipList,Be as EquipView};
@@ -1 +1 @@
1
- import{jsx as a,jsxs as m}from"react/jsx-runtime";import{Loader2 as n}from"lucide-react";import{gem as o,gemPlus as i}from"../assets.js";import{cn as d}from"../lib/utils.js";import{Button as c}from"../ui/button.js";import{Card as p}from"../ui/card.js";function N({amount:e,onAdd:s,loaded:t=!0,disabled:r=!1,className:l}){return m(p,{className:d("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",l),children:[a("img",{"data-slot":"gem-balance-icon",src:o,alt:"",className:"me-0.5 size-8 shrink-0"}),a("span",{"data-slot":"gem-balance-amount",className:"flex-1 text-start text-xl leading-none font-bold text-[#2A3472] tabular-nums",children:t?e:a(n,{className:"size-4 animate-spin text-[#2A3472]/50"})}),a(c,{"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:r,onClick:s,children:a("img",{"data-slot":"gem-balance-add-icon",src:i,alt:"",className:"size-8"})})]})}export{N as GemBalance};
1
+ import{N}from"../../../chunk-j2922k42.js";import"../../../chunk-qd5jhh2h.js";import"../../../chunk-xrw9s1th.js";import"../../../chunk-mjsqb1wk.js";import"../../../chunk-tvmvzc41.js";export{N as GemBalance};
@@ -1 +1 @@
1
- import{jsx as l,jsxs as c}from"react/jsx-runtime";import{useLayoutEffect as b,useRef as p,useState as f}from"react";import{homeBackground as g,homeHotspotAssets as m}from"../assets.js";import{Button as x}from"../ui/button.js";import{HomeWishGuide as w,OnboardingScrim as v}from"./onboarding-guide.js";var d=1.778723404255319,y="#120E18",r={x1:0.3,x2:0.8,y1:0.56,y2:1},N=r.x2-r.x1,S=r.y2-r.y1,E=(r.x1+r.x2)/2,k=0.8;function M(t,n){let a=Math.max(t,n*d),s=Math.min(t/N,n/S*d),e=Math.max(Math.min(a,s),k*a),o=e/d,i=e<=t?(t-e)/2:Math.min(0,Math.max(t-e,t/2-E*e)),h=o<=n?(n-o)/2:n-o;return{width:e,height:o,left:i,top:h}}function C(t){let[n,a]=f({width:0,height:0,left:0,top:0});return b(()=>{let s=t.current;if(!s)return;let e=new ResizeObserver(([o])=>{let{width:i,height:h}=o.contentRect;a(M(i,h))});return e.observe(s),()=>e.disconnect()},[t]),n}var _={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 u({assetKey:t,onClick:n,highlighted:a,disabled:s}){let[e,o]=f(!1),i=_[t];return c("div",{className:`pointer-events-none absolute inset-0 ${a?"z-30":""}`,children:[c(x,{variant:"ghost",className:"pointer-events-auto absolute h-auto p-0 hover:bg-transparent dark:hover:bg-transparent",style:i.box,"aria-label":t==="vibemon"?"Vibémon":t==="wish"?"Wish":"Album",disabled:s,onClick:n,onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),children:[l("img",{src:m[t].icon,alt:"",className:"block w-full select-none",style:{opacity:e?0:1}}),l("img",{src:m[t].hover,alt:"","aria-hidden":!0,className:"absolute inset-0 h-full w-full select-none",style:{opacity:e?1:0}})]}),l("img",{src:m[t].text,alt:"","aria-hidden":!0,className:"pointer-events-none absolute transition-opacity duration-200 select-none",style:{...i.label}})]})}function L({onDraw:t,onBackpack:n,onEquip:a,guideActive:s}){let e=p(null),o=C(e);return c("div",{ref:e,className:"relative h-full w-full overflow-hidden",children:[l("div",{className:"absolute inset-0",style:{background:y}}),c("div",{"data-testid":"vibemon-home-stage",className:"[container-type:size] absolute",style:{width:o.width,height:o.height,left:o.left,top:o.top},children:[l("img",{src:g,alt:"",className:"block h-full w-full select-none"}),c("div",{className:"pointer-events-none absolute inset-0",children:[l(u,{assetKey:"vibemon",onClick:a,highlighted:!1,disabled:s}),l(u,{assetKey:"wish",onClick:t,highlighted:s,disabled:!1}),l(u,{assetKey:"album",onClick:n,highlighted:!1,disabled:s})]}),s&&l(v,{}),s&&l(w,{})]})]})}export{L as HomeView};
1
+ import{Ie}from"../../../chunk-3rpgxz1z.js";import"../../../chunk-pwsarey8.js";import"../../../chunk-xrw9s1th.js";import"../../../chunk-mjsqb1wk.js";import"../../../chunk-tvmvzc41.js";export{Ie as HomeView};
@@ -1 +1 @@
1
- import{jsx as t,jsxs as a}from"react/jsx-runtime";import{useState as i}from"react";import{dialogClose as r,insufficientPointsDialog as l,proceedButtonAssets as c}from"../assets.js";import{Button as n}from"../ui/button.js";function d({onClose:s,onProceed:o}){return t("div",{className:"absolute inset-0 z-50 flex cursor-default items-center justify-center bg-black/80 p-0",onClick:(e)=>{if(e.target===e.currentTarget)s()},onKeyDown:(e)=>{if(e.key==="Escape")s()},children:a("div",{className:"relative",children:[t("img",{src:l,alt:"",className:"pointer-events-none max-w-none select-none",style:{width:326.24,height:201.03}}),t(n,{variant:"ghost",className:"absolute h-auto p-0 hover:bg-transparent",style:{top:-7.07,right:-11.3},onClick:s,children:t("img",{src:r,alt:"",className:"max-w-none select-none",style:{width:26,height:26}})}),t(u,{onClick:o})]})})}function u({onClick:s}){let[o,e]=i("default");return t(n,{variant:"ghost",className:"absolute h-auto -translate-x-1/2 p-0 hover:bg-transparent",style:{bottom:30,left:"50%"},title:"",onClick:s,onMouseEnter:()=>e("hover"),onMouseLeave:()=>e("default"),onMouseDown:()=>e("active"),onMouseUp:()=>e("hover"),children:t("img",{src:c[o],alt:"",className:"max-w-none select-none",style:{width:144,height:36}})})}export{d as InsufficientPointsDialog};
1
+ import{Fe}from"../../../chunk-g8nah79y.js";import"../../../chunk-mjsqb1wk.js";import"../../../chunk-tvmvzc41.js";export{Fe as InsufficientPointsDialog};
@@ -1 +1 @@
1
- import{jsx as o}from"react/jsx-runtime";import{introVideo as t}from"../assets.js";import{VideoFader as i}from"./video-fader.js";var n=t;function d({onVideoStart:e,onDone:r}){return o("div",{className:"absolute inset-0 z-50 overflow-hidden",children:o(i,{src:n,onFirstFrame:e,onComplete:r,onError:r})})}export{n as INTRO_VIDEO_URL,d as IntroOverlay};
1
+ import{ae,Ae}from"../../../chunk-hscsc9kx.js";import"../../../chunk-x61q358n.js";import"../../../chunk-tvmvzc41.js";export{ae as INTRO_VIDEO_URL,Ae as IntroOverlay};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as a}from"react/jsx-runtime";import{useEffect as w,useRef as f,useState as h}from"react";import{advanceLoadingProgress as x}from"../../core/lib/loading-progress.js";import{loadingBackground as b,loadingLogo as v}from"../assets.js";import{VibemonScene as _}from"./vibemon-scene.js";var q=98.902;function j({progress:s,onFinished:i}){let[o,g]=h(0),l=f(s);l.current=s;let c=f(i);c.current=i,w(()=>{let r=0,m=performance.now(),t=0,d=(u)=>{let p=Math.min((u-m)/1000,0.1);if(m=u,t=x(t,l.current,p),g(t),t>=1){c.current();return}r=requestAnimationFrame(d)};return r=requestAnimationFrame(d),()=>cancelAnimationFrame(r)},[]);let n=Math.round(o*100);return a(_,{backdrop:e("img",{src:b,alt:"","aria-hidden":!0,className:"pointer-events-none absolute inset-0 h-full w-full object-cover select-none"}),children:[e("img",{src:v,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"}),a("div",{"data-testid":"vibemon-loading-progress",role:"progressbar","aria-label":`Loading ${n}%`,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":n,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..."}),a("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:`${o*q}%`}})}),a("p",{className:"text-center text-[1.458cqw] leading-normal text-white",style:{fontFamily:'"Grow Year", system-ui, sans-serif'},children:[n,"%"]})]})]})]})}export{j as VibemonLoadingView};
1
+ import{ze}from"../../../chunk-bcyk6es8.js";import"../../../chunk-w5yer870.js";import"../../../chunk-tvmvzc41.js";import"../../../chunk-b5zfgr86.js";export{ze as VibemonLoadingView};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as o}from"react/jsx-runtime";import{motion as g,useReducedMotion as b}from"motion/react";import{guideArrow as p,guideHand as w,guideHandShape as c,guideHandSheen as N,guideHomeTexture as y,guideMascot as x,guidePullTexture as v,guideRing as _}from"../assets.js";import{cn as L}from"../lib/utils.js";var k=2128.456,I=1920,d=(t)=>`${t/k*100}cqw`,a=(t)=>`${t/I*100}cqw`;function R(){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)"}})}var S=8,B=32,u=160,H={width:687,height:94,textLeft:184.457,mascotLeft:20.273,mascotTop:-70.384,texture:y,length:d},z={width:712,height:94,textLeft:185.29,mascotLeft:20.96,mascotTop:-70.46,texture:v,length:a};function f({design:t,className:i,children:n}){let s=t.length;return o("div",{className:L("absolute -translate-x-1/2 -translate-y-1/2",i),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(S),backgroundImage:`url("${t.texture}")`}}),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(B)},children:n}),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)}})]})}var m=42;function E(){let t=b(),i="absolute top-[56.381%] left-[57.735%] -translate-x-1/2 -translate-y-1/2",n={width:d(m),height:d(m)},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:p,alt:"",className:"block h-full w-full max-w-none select-none"})})});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:n,children:s});return e(g.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:n,initial:{y:0},animate:{y:["0%","21.1%"]},transition:{y:{duration:0.401,times:[0,1],ease:"easeInOut",repeat:1/0}},children:s})}function G(){return o("div",{"data-testid":"vibemon-home-wish-guide",className:"pointer-events-none absolute inset-0 z-40",children:[e(f,{design:H,className:"top-[18.400%] left-[54.614%]",children:"Your first card is waiting inside!"}),e(E,{})]})}var h=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 O(){let t=b(),i={left:a(r.left),top:a(r.top),width:a(r.size),height:a(r.size)},n=e("span",{className:"absolute inset-[-578.45%]",children:e("img",{src:_,alt:"",className:"block h-full w-full max-w-none select-none"})});return o("div",{className:"relative",style:{width:a(h),height:a(h)},children:[t?e("span",{"data-node-id":"1550:4234","data-testid":"vibemon-pool-guide-ring",className:"absolute",style:i,children:n}):e(g.span,{"data-node-id":"1550:4234","data-testid":"vibemon-pool-guide-ring",className:"absolute",style:i,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:n}),o("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:w,alt:"",className:"absolute inset-0 block h-full w-full max-w-none select-none"}),e("span",{className:"absolute inset-0",style:{backgroundImage:`url("${N}")`,backgroundSize:"100% 100%",WebkitMaskImage:`url("${c}")`,WebkitMaskSize:"100% 100%",maskImage:`url("${c}")`,maskSize:"100% 100%"}})]})]})}function U(){let t=(i)=>({width:a(i),height:a(i)});return o("div",{"data-testid":"vibemon-free-draw-guide",className:"pointer-events-none absolute inset-0 z-40",children:[e(f,{design:z,className:"top-[79.004%] left-[57.240%] z-2",children:"Draw a card, find your companion!"}),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)}),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)}),e("div",{className:"absolute top-[95.437%] left-[64.490%] -translate-x-1/2 -translate-y-1/2",children:e(O,{})})]})}export{U as FreeDrawGuide,G as HomeWishGuide,R as OnboardingScrim};
1
+ import{A,Ce,Te}from"../../../chunk-pwsarey8.js";import"../../../chunk-xrw9s1th.js";import"../../../chunk-tvmvzc41.js";export{Te as FreeDrawGuide,Ce as HomeWishGuide,A as OnboardingScrim};
@@ -1 +1 @@
1
- import{jsx as P}from"react/jsx-runtime";import{useEffect as k,useEffectEvent as q,useState as R}from"react";import{vibemonHost as C}from"../../core/host.js";import{backdropSvgPath as L,bubbleOutline as j,scaleBackdropPath as A}from"../../core/lib/bubble-outline.js";var F=Promise.resolve();function d(a){let c=F,t;F=new Promise((r)=>{t=r}),(async()=>{await c;try{await a()}finally{t()}})()}function T({cardRef:a,opacity:c=0.65,radius:t=20,enabled:r=!0}){let e=C(),[x,O]=R([]),B=q(()=>{d(async()=>{await e.windows.call("bubble-blur",{enabled:!1,radius:1,path:null}).catch(e.onError)})});return k(()=>()=>B(),[]),k(()=>{let n=a.current;if(n===null)throw Error("Pet bubble background requires its card");let N={scaleFactor:()=>e.windows.call("scale")},u=!1,i=null,b=null,m=async()=>{if(u)return;let l=await N.scaleFactor();if(u)return;let o=n.getBoundingClientRect();if(o.width<=1||o.height<=1)return;let S=getComputedStyle(n),p=Number.parseFloat(S.borderTopLeftRadius);if(!Number.isFinite(p))throw Error("Pet bubble corner radius must resolve to pixels");let h=n.parentElement;if(h===null)throw Error("Pet bubble card requires its container");let v=Number.parseFloat(getComputedStyle(h).paddingBottom);if(!Number.isFinite(v))throw Error("Pet bubble tail spacing must resolve to pixels");let g=j(o.left+0.5,o.top+0.5,o.width-1,o.height-1,p-0.5,v);O(g);let y=r?A(g,window.devicePixelRatio/l):null,E=JSON.stringify([r,t,y]);if(E===b)return;await e.windows.call("bubble-blur",{enabled:r,radius:t,path:y}),b=E},s=()=>{if(u||i!==null)return;i=requestAnimationFrame(()=>{i=null,d(()=>m().catch(e.onError))})};d(()=>m().catch(e.onError));let w=new ResizeObserver(s);w.observe(n);let f=new MutationObserver(s);for(let l of[document.documentElement,document.body,n])f.observe(l,{attributes:!0,attributeFilter:["class","style"]});window.addEventListener("resize",s);let z=e.windows.geometry(s);return()=>{if(u=!0,i!==null)cancelAnimationFrame(i);w.disconnect(),f.disconnect(),window.removeEventListener("resize",s),z.then((l)=>l()).catch(e.onError)}},[a,r,t,e]),P("svg",{"aria-hidden":!0,"data-pet-bubble-background":!0,className:"pointer-events-none fixed inset-0 size-full overflow-visible",children:P("path",{d:L(x),fill:"var(--popover)",fillOpacity:c,stroke:"var(--border)",strokeOpacity:c,strokeWidth:1})})}export{T as PetBubbleBackground};
1
+ import{He}from"../../../chunk-38vgcbpq.js";import"../../../chunk-f0awr1g7.js";import"../../../chunk-htw56xtp.js";export{He as PetBubbleBackground};
@@ -1 +1 @@
1
- import{jsx as i,jsxs as v,Fragment as A}from"react/jsx-runtime";import{PlusIcon as G}from"lucide-react";import{useEffect as W,useRef as E,useState as f}from"react";import{createPortal as T}from"react-dom";import{useTranslation as J}from"react-i18next";import K from"../../../../assets/pets/lounge/autumn.png?url";import O from"../../../../assets/pets/lounge/spring.png?url";import Q from"../../../../assets/pets/lounge/summer.png?url";import Z from"../../../../assets/pets/lounge/winter.png?url";import{vibemonHost as tt}from"../../core/host.js";import{loadVibemonResource as et}from"../../core/lib/vibemon-resources.js";import{getVibemonScopeSync as rt,useVibemonState as ot}from"../lib/account-state.js";import{useSeason as nt}from"../lib/use-season.js";import{Button as B}from"../ui/button.js";import{SpriteRenderer as st}from"./sprite-renderer.js";import"./lounge-burst.css";var it={spring:O,summer:Q,autumn:K,winter:Z};function Et({active:Y,nest:s,onOpenCenter:j,onSend:_,dropTarget:k=!1}){let C=tt(),o=ot(),h=rt(),{t:F}=J("common"),L=nt(),[y,P]=f(null),[S,g]=f(null),[U,D]=f(0),[x,I]=f(!1),[u,d]=f(null),[w,N]=f(null),m=E(null),z=E(!1),b=E(!1),a=y?.pet===o.pet&&y.scope===h?y.resource:null;W(()=>{let t=!1,e=null;if(g(null),P(null),d(null),h!==null&&o.pet)(async()=>{if(!(await C.assets.getMyVibemons()).some((n)=>n.vibemon_uuid===o.pet))throw Error("This account does not own the selected Vibemon");if(t)return;if(e=await et(o.pet),t)e.dispose();else P({pet:o.pet,scope:h,resource:e})})().catch((r)=>{if(!t)g(r instanceof Error?r.message:String(r))});return()=>{t=!0,e?.dispose()}},[C,h,o.pet,U]);let R=async(t)=>{if(z.current)return;if(z.current=!0,I(!0),g(null),t)d({center:t,scale:2}),N(t);try{await _(o.pet,t)}catch(e){g(e instanceof Error?e.message:String(e))}finally{z.current=!1,I(!1),d(null)}},V=(t)=>a&&i(st,{config:a.config,spriteUrl:a.spriteUrl,staticImage:a.staticImage,stateId:a.config.behaviorMap.sleep,flipped:!1,active:Y||t,onMouseDown:()=>{},onClick:()=>{},onRenderError:(e)=>g(e.message)}),M={insetInlineEnd:s.inlineEnd,bottom:s.bottom,width:s.size,height:s.size};return v(A,{children:[i("img",{src:it[L],alt:"",draggable:!1,className:"pointer-events-none absolute inset-x-0 bottom-0 z-10 w-full"}),(k||u!==null&&!x)&&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:M}),!o.enabled&&!o.pet&&i(B,{"aria-label":"Vibémon",onClick:j,className:"border-primary bg-primary/10 text-primary absolute z-20 rounded-xl border-4 border-dashed p-0",style:M,children:i(G,{className:"size-16"})}),!o.enabled&&a&&i("button",{type:"button","aria-label":"Vibémon",disabled:x,className:"vibemon-lounge-pet absolute z-20 cursor-grab touch-none border-0 bg-transparent p-0 disabled:cursor-wait",style:{...M,opacity:u?0:1},onPointerDown:(t)=>{if(t.button!==0||x)return;let e=t.currentTarget.getBoundingClientRect(),r=t.currentTarget.parentElement;if(!r)throw Error("Lounge requires its station");let n=getComputedStyle(r).direction==="rtl",c=r.getBoundingClientRect();b.current=!1,m.current={start:{x:t.clientX,y:t.clientY},origin:{x:e.left+e.width/2,y:e.top+e.height/2},rect:e,edge:n?c.right:c.left,rtl:n,pointer:t.pointerId},t.currentTarget.setPointerCapture(t.pointerId)},onPointerMove:(t)=>{let e=m.current;if(!e)return;let r=t.clientX-e.start.x,n=t.clientY-e.start.y,c=Math.hypot(r,n);if(c<=4&&!b.current)return;b.current=!0;let l={x:e.origin.x+r,y:e.origin.y+n},X=1+Math.min(c/200,1);d({center:l,scale:X});let p=s.size*X/2,H=Math.max(0,Math.min(l.x+p,innerWidth)-Math.max(l.x-p,0)),q=Math.max(0,Math.min(l.y+p,innerHeight)-Math.max(l.y-p,0));if(H*q<p*p*2)m.current=null,t.currentTarget.releasePointerCapture(t.pointerId),R(l)},onPointerUp:(t)=>{let e=m.current;if(m.current=null,!e||!b.current)return;let r=t.clientX-e.start.x,n=t.clientY-e.start.y,c=t.clientX>=e.rect.left&&t.clientX<=e.rect.right&&t.clientY>=e.rect.top&&t.clientY<=e.rect.bottom,l=e.rtl?t.clientX>e.edge:t.clientX<e.edge;if(!c&&l&&Math.hypot(r,n)>=200)R({x:e.origin.x+r,y:e.origin.y+n});else d(null)},onPointerCancel:()=>{m.current=null,d(null),b.current=!0},children:V(!1)}),u&&a&&T(i("div",{className:"pointer-events-none fixed z-[9999]",style:{left:u.center.x-s.size/2,top:u.center.y-s.size/2,width:s.size,height:s.size,transform:`scale(${u.scale})`},children:V(!0)}),document.body),w&&T(i("div",{className:"alwith-vibemon-burst pointer-events-none fixed z-[10000]",style:{left:w.x,top:w.y,width:280,height:280,transform:"translate(-50%, -50%) scale(0.7142857)"},onAnimationEnd:()=>N(null)}),document.body),S&&v("div",{role:"alert",className:"bg-popover text-popover-foreground absolute inset-x-2 bottom-36 z-30 rounded-lg p-2 text-xs",children:[S,i(B,{size:"sm",variant:"outline",onClick:()=>D((t)=>t+1),children:F("vibemon.updateResources")})]})]})}export{Et as PetLounge};
1
+ import{Ht}from"../../../chunk-5zpeb8cj.js";import"../../../chunk-gq64get1.js";import"../../../chunk-2j5re92x.js";import"../../../chunk-8nzgysac.js";import"../../../chunk-rfxpf1eq.js";import"../../../chunk-mjsqb1wk.js";import"../../../chunk-6f02m6jw.js";import"../../../chunk-01py4vpp.js";import"../../../chunk-khnyadsg.js";import"../../../chunk-pbwt3qj9.js";import"../../../chunk-41jxjz9n.js";import"../../../chunk-htw56xtp.js";import"../../../chunk-v9czb1e6.js";import"../../../chunk-qy364wgy.js";import"../../../chunk-afy09ajr.js";import"../../../chunk-3amxesw3.js";import"../../../chunk-nbfhs21c.js";import"../../../chunk-ax8zmvs0.js";import"../../../chunk-rerywpwe.js";import"../../../chunk-4gegjx79.js";export{Ht as PetLounge};
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{LoaderCircleIcon as n,Minimize2Icon as a}from"lucide-react";import{useTranslation as i}from"react-i18next";import{Button as s}from"../ui/button.js";function p({busy:t,onClick:r}){let{t:o}=i("common");return e(s,{variant:"ghost",size:"icon-xs",title:o("petMode.enter"),"aria-label":o("petMode.enter"),disabled:t,onClick:r,className:"group text-muted-foreground hover:text-muted-foreground shrink-0 hover:bg-transparent dark:hover:bg-transparent",children:t?e(n,{className:"size-4 animate-spin"}):e(a,{className:"size-4"})})}export{p as PetModeButton};
1
+ import{$t}from"../../../chunk-1mwjz4f1.js";import"../../../chunk-mjsqb1wk.js";export{$t as PetModeButton};
@@ -1 +1 @@
1
- import{jsx as E,jsxs as A}from"react/jsx-runtime";import{useEffect as x,useEffectEvent as N,useRef as m,useState as l}from"react";import{VibemonEngine as U}from"../../core/engine.js";import{vibemonHost as X}from"../../core/host.js";import{PetAnimationSync as O}from"../../core/lib/pet-animation-sync.js";import{PetBubbleState as W}from"../../core/lib/pet-bubble-state.js";import{dragPet as B}from"../../core/lib/pet-drag.js";import{presentVibemon as F}from"../../core/lib/pet-presentation.js";import{PresentationReadiness as Y}from"../../core/lib/presentation-readiness.js";import{loadVibemonResource as H}from"../../core/lib/vibemon-resources.js";import{DEFAULT_VIBEMON_WINDOW_SIZE as S}from"../../core/types.js";import{placeholderCard as L}from"../assets.js";import{useVibemonState as Z}from"../lib/account-state.js";import{SpriteRenderer as q}from"./sprite-renderer.js";import"./lounge-burst.css";function ue(){let t=X(),u=Z(),[a,P]=l(null),f=a?.resource??null,[g,v]=l({state:"idle",flipped:!1,tick:0}),[D,h]=l(!0),[R,k]=l(!1),[z,V]=l(0),s=m(null),y=m(0),[r]=l(()=>new Y),[c]=l(()=>new O),[i]=l(()=>new W((e)=>{t.windows.call("bubble",{visible:e}).catch(t.onError)})),_=N(()=>u.position);x(()=>{if(!u.pet)return;let e=u.pet,n=++y.current;r.begin(e,n),P(null);let d=!1,p=null;return(async()=>{if(p=await H(e),d){p.dispose();return}if(await t.windows.call("resize",{size:p.config.windowSize??S}),d)return;let o=new U(p.config,(j,C,M)=>{if(d)return;v((T)=>({state:j,flipped:C,tick:T.tick+(M?1:0)}))},()=>{});if(s.current=o,c.attach(o),await o.start(_()),d){o.destroy();return}if(r.positioned(e,n,o),P({resource:p,petId:e,generation:n}),await r.wait(e,Date.now()+15000),!d)await t.windows.call("ready",{petId:e})})().catch((o)=>{if(d||y.current!==n)return;r.fail(e,n,o instanceof Error?o:Error(String(o))),t.onError(o)}),()=>{d=!0,r.invalidate(),c.attach(null),s.current?.destroy(),s.current=null,p?.dispose()}},[u.pet,t,r,c,z]),x(()=>{let e=(n)=>{if(n===null){c.bind(null,!1),i.bind(null,-1);return}c.bind(n.binding.sessionId,n.error!==null,n.binding.bindingRevision),c.update([{sessionId:n.binding.sessionId,state:n.state}],n.source),c.prompt(n.binding.sessionId,n.binding.bindingRevision,n.prompt!==null),i.bind(n.binding.sessionId,n.binding.bindingRevision),i.owner(n.owner),i.update(n.state,n.prompt?.token??null,n.surfaceVisible)};return e(t.sessions.snapshot()),t.sessions.subscribe(e)},[t,c,i]),x(()=>t.windows.commands(async(e)=>{if(e.type==="reload"){if(e.petId!==u.pet)throw Error("The selected pet changed");y.current++,r.reset(),V((n)=>n+1);return}if(e.type==="bubble-open"){i.open();return}if(e.type==="bubble-interact"){i.interact();return}if(e.type==="close"){s.current?.suspend(),h(!1),i.close(),k(!0);try{await t.windows.call("sound"),await new Promise((n)=>setTimeout(n,470)),await t.windows.call("hide")}finally{k(!1)}return}if(e.type==="bubble-close"){i.close();return}if(e.type==="suspend"){s.current?.suspend(),h(!1),i.close(),await t.windows.call("hide");return}h(!0),await F(r,t.windows,e.petId)}),[t,i,r,u.pet]);let w=m(0),b=m(null);if(f===null)return null;let I=f.config.windowSize??S;return A("div",{className:"relative flex h-full w-full items-end justify-center select-none",onPointerDown:(e)=>{if(e.button!==0)return;b.current={x:e.screenX,y:e.screenY}},onPointerMove:(e)=>{let n=b.current;if(n===null||Math.hypot(e.screenX-n.x,e.screenY-n.y)<4)return;if(b.current=null,s.current===null)throw Error("The pet engine is unavailable");B(t.windows,s.current,e.screenX<n.x).catch(t.onError)},onPointerUp:()=>{b.current=null},onContextMenu:(e)=>{e.preventDefault(),t.windows.call("menu").catch(t.onError)},children:[E("div",{style:{width:I,height:I,visibility:R?"hidden":"visible"},children:E(q,{config:f.config,spriteUrl:f.spriteUrl||L,staticImage:f.staticImage,stateId:g.state,flipped:g.flipped,animTick:g.tick,active:D&&!f.staticImage,onDrawFrame:()=>{if(a!==null)r.drawn(a.petId,a.generation)},onRenderError:(e)=>{if(a!==null)r.fail(a.petId,a.generation,e);t.onError(e)},onMouseDown:()=>{},onClick:()=>{s.current?.handleClick();let e=Date.now();if(e-w.current<350&&e-w.current>50)i.close(),t.sessions.activate().catch(t.onError),w.current=0;else w.current=e}})}),R&&E("div",{className:"alwith-vibemon-burst pointer-events-none",style:{position:"fixed",left:"50%",bottom:0,width:280,height:280,transform:`translateX(-50%) scale(${I/280})`,transformOrigin:"center bottom",zIndex:20}})]})}export{ue as PetWindow};
1
+ import{Gt}from"../../../chunk-kqsxaxk8.js";import"../../../chunk-8nzgysac.js";import"../../../chunk-rfxpf1eq.js";import"../../../chunk-tvmvzc41.js";import"../../../chunk-96emfz6b.js";import"../../../chunk-gv5he3xg.js";import"../../../chunk-1sf9m7x2.js";import"../../../chunk-kwq26qhs.js";import"../../../chunk-6f02m6jw.js";import"../../../chunk-7y7stqn0.js";import"../../../chunk-3vpcfe38.js";import"../../../chunk-mdqxdcxh.js";import"../../../chunk-01py4vpp.js";import"../../../chunk-v5akzbxg.js";import"../../../chunk-khnyadsg.js";import"../../../chunk-pbwt3qj9.js";import"../../../chunk-41jxjz9n.js";import"../../../chunk-htw56xtp.js";import"../../../chunk-v9czb1e6.js";import"../../../chunk-qy364wgy.js";import"../../../chunk-afy09ajr.js";import"../../../chunk-3amxesw3.js";import"../../../chunk-nbfhs21c.js";import"../../../chunk-ax8zmvs0.js";import"../../../chunk-rerywpwe.js";import"../../../chunk-4gegjx79.js";export{Gt as PetWindow};
@@ -1,4 +1,4 @@
1
- import type { DrawRewardViewModel } from "../../core/lib/draw-result.js";
1
+ import type { DrawRewardViewModel } from "../../core/lib/draw-result";
2
2
  export declare function PullOverlay({ phase, drawnRewards, onVideoStarted, onPullDone, onPullFailed, onResultConfirmed }: {
3
3
  phase: "idle" | "video-waiting" | "video-playing" | "result";
4
4
  drawnRewards: DrawRewardViewModel[];
@@ -1 +1 @@
1
- import{jsx as n,jsxs as d,Fragment as F}from"react/jsx-runtime";import{motion as y,useInView as H}from"motion/react";import{useEffect as L,useRef as U,useState as p}from"react";import{multiDrawSrBackground as J,multiDrawSsrBackground as Q,newTag as A,pullTexture as O,resultAura as X}from"../assets.js";import{cardThumb as w}from"../lib/card-image.js";import{cn as Z}from"../lib/utils.js";import{Button as D}from"../ui/button.js";import{PULL_VIDEO_SOURCES as ee}from"./pull-video.js";import{VideoFader as te}from"./video-fader.js";var u=300,l=500,C=400,ne=1920,I=10,P=1474,G=[0.6,0.7,0.8,0.9,1,1,0.9,0.8,0.7,0.6],ae=1.1269,k=[12,14,16,18,20,18,16,14,12].map((e)=>e*ae),q=(P-k.reduce((e,t)=>e+t,0))/G.reduce((e,t)=>e+t,0),ie=(()=>{let e=0;return G.map((t,i)=>{let s=q*t,a=e+s/2-P/2;if(e+=s,i<k.length)e+=k[i];return{scale:t,x:a}})})(),M={R:null,SR:J,SSR:Q},N=(e)=>`${e/ne*100}cqw`,B={R:"r",SR:"sr",SSR:"ssr"},z={"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"}},re={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((t)=>t.kind==="card"&&t.rarity==="SSR"))return"ssr";if(e.some((t)=>t.kind==="card"&&t.rarity==="SR"))return"sr";return"r"};function xe({phase:e,drawnRewards:t,onVideoStarted:i,onPullDone:s,onPullFailed:a,onResultConfirmed:o}){let r=U(null),g=H(r),[_,x]=p(document.visibilityState==="visible");L(()=>{let f=()=>x(document.visibilityState==="visible");return document.addEventListener("visibilitychange",f),()=>document.removeEventListener("visibilitychange",f)},[]);let[h,T]=p(!1),[S,v]=p("flat"),b=U(!1);L(()=>{if(e!=="idle")return;b.current=!1,T(!1),v("flat")},[e]);let m=t.length>1,c=m?null:t[0],R=m?W(t):null,V=m&&t.some((f)=>f.kind==="card"),E=c?c.kind==="white-card"?"white-card":B[c.rarity]:null,K=()=>{if(!m||S!=="flat"||b.current)return;if(b.current=!0,!V){v("fly"),setTimeout(()=>o(!1),u);return}v("gather"),setTimeout(()=>v("fly"),C),setTimeout(()=>o(!0),C+l)},j=()=>{if(!c||h||b.current)return;b.current=!0,T(!0);let f=c.kind==="card"?l:u;setTimeout(()=>o(c.kind==="card"),f)},Y=m?S!=="fly":!h;return d("div",{ref:r,"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)":R?re[R]:E?z[E].scrim:"rgba(1,10,21,0.82)",opacity:e==="result"&&Y?1:0}}),e==="result"&&(m?n(me,{rewards:t,stage:S,onConfirm:K}):c?n(ue,{reward:c,onConfirm:j,closing:h}):null),n(te,{sources:ee,playing:e==="video-waiting"||e==="video-playing",active:g&&_,background:"rgba(1,10,21,1)",onFirstFrame:i,onComplete:s,onError:a})]})}var se={default:"#FFAF32",hover:"#FFC15F",press:"#ECA029"};function oe({onConfirm:e}){let[t,i]=p(!1),[s,a]=p(!1),o=s?"press":t?"hover":"default";return d(D,{"aria-label":"Confirm",onClick:e,"data-visual-state":o,onPointerEnter:()=>i(!0),onPointerLeave:()=>{i(!1),a(!1)},onPointerDown:()=>a(!0),onPointerUp:()=>a(!1),onPointerCancel:()=>a(!1),onKeyDown:(r)=>{if(r.key===" "||r.key==="Enter")a(!0)},onKeyUp:(r)=>{if(r.key===" "||r.key==="Enter")a(!1)},onBlur:()=>{i(!1),a(!1)},style:{backgroundColor:se[o]},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:O,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"}),n("span",{"aria-hidden":!0,className:"absolute inset-0 shadow-[inset_0_0.2cqh_0.07cqh_0_white]"}),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"})]})}function le({tone:e,onConfirm:t}){let i=z[e];return d(D,{"aria-label":"Confirm",onClick:t,style:{backgroundColor:i.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:O,alt:"",className:Z("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",i.textureOpacity)}),n("span",{"aria-hidden":!0,className:"absolute inset-0 shadow-[inset_0_0.2cqh_0.07cqh_0_white]"}),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"})]})}function ce({reward:e}){return n("img",{src:w(e.singleImageUrl),alt:`Gacha Gem ×${e.exchangePoints}`,className:"block h-auto w-full max-w-none select-none"})}function ue({reward:e,onConfirm:t,closing:i}){let s=e.kind==="white-card"?"white-card":B[e.rarity];return n("div",{"data-testid":"single-draw-result","data-result-tone":s,className:"absolute inset-0 z-10",children:d("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(y.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:i?0:0.62},transition:{duration:u/1000},children:n("img",{src:X,alt:"",className:"h-full w-full max-w-none [animation:spin_2s_linear_infinite] select-none"})}),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(y.div,{className:"relative",style:{width:e.kind==="card"?"20.833cqw":"13.75cqw"},initial:!1,animate:i?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:i&&e.kind==="card"?{x:{duration:l/1000,ease:"linear",times:[0,0.5,1]},y:{duration:l/1000,ease:"linear",times:[0,0.5,1]},scale:{duration:l/1000,ease:"linear"},opacity:{duration:l/1000,ease:"linear",times:[0,0.7,1]}}:{duration:i?u/1000:0},children:e.kind==="card"?d(F,{children:[n("img",{src:w(e.singleImageUrl),alt:`${e.vibemonName} ${e.rarity} card`,className:"h-auto w-full max-w-none select-none"}),e.isNew&&n("img",{src:A,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"})]}):n(ce,{reward:e})})}),n(y.div,{className:"absolute top-[71.667%] left-[52.656%] h-[6.5%] w-[18.542%] -translate-x-1/2",animate:{opacity:i?0:1},transition:{duration:u/1000},style:{pointerEvents:i?"none":"auto"},children:n(le,{tone:s,onConfirm:t})})]})})}function de({reward:e}){return n("img",{src:w(e.multiImageUrl),alt:`Gacha Gem ×${e.exchangePoints}`,className:"pointer-events-none block h-auto w-full max-w-none select-none"})}function me({rewards:e,stage:t,onConfirm:i}){if(e.length!==I)throw Error(`[vibemon] ten-draw result must contain ${I} rewards, received ${e.length}`);let s=W(e);return n("div",{"data-testid":"multi-draw-result","data-result-tone":s,className:"absolute inset-0 z-10 overflow-hidden",children:d("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((a,o)=>{let r=ie[o],g={x:N(r.x),y:"0cqh",scale:r.scale,opacity:1},_=a.kind==="card"?`${a.drawIndex}-${a.vibemonUuid}`:`${a.drawIndex}-white-card`,x=a.kind==="card"?{x:"0cqw",y:"0cqh",scale:1,opacity:1}:{...g,opacity:0},h=a.kind==="card"?{x:["0cqw","17cqw","34cqw"],y:["0cqh","-40cqh","-38cqh"],scale:[1,0.08],opacity:[1,1,0]}:{...g,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:t==="flat"?10-Math.abs(o-4.5):e.length-o},children:n(y.div,{"data-result-index":o,"data-result-scale":r.scale,className:"relative w-full",initial:!1,animate:t==="flat"?g:t==="gather"?x:h,transition:t==="gather"?{duration:a.kind==="card"?C/1000:u/1000,ease:"easeIn"}:t==="fly"?a.kind==="card"?{x:{duration:l/1000,ease:"linear",times:[0,0.5,1]},y:{duration:l/1000,ease:"linear",times:[0,0.5,1]},scale:{duration:l/1000,ease:"linear"},opacity:{duration:l/1000,ease:"linear",times:[0,0.7,1]}}:{duration:u/1000}:{duration:0},children:a.kind==="card"?d(F,{children:[M[a.rarity]!==null&&n("img",{src:M[a.rarity]??void 0,alt:"","aria-hidden":!0,"data-testid":`multi-card-band-${a.rarity}`,className:"pointer-events-none absolute top-1/2 left-0 h-auto w-full max-w-none -translate-y-1/2 select-none"}),n("img",{src:w(a.multiImageUrl),alt:`${a.vibemonName} ${a.rarity} card`,className:"pointer-events-none relative block h-auto w-full max-w-none select-none"}),a.isNew&&n("img",{src:A,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"})]}):n(de,{reward:a})})},_)})}),n(y.div,{className:"absolute top-[78%] left-[40.729%] h-[6.5%] w-[18.542%]",style:{pointerEvents:t==="flat"?"auto":"none"},animate:{opacity:t==="flat"?1:0},transition:{duration:u/1000},children:n(oe,{onConfirm:i})})]})})}export{xe as PullOverlay};
1
+ import{Ne}from"../../../chunk-m3e7wah7.js";import"../../../chunk-b7v6g7a0.js";import"../../../chunk-x61q358n.js";import"../../../chunk-h994ssre.js";import"../../../chunk-xrw9s1th.js";import"../../../chunk-mjsqb1wk.js";import"../../../chunk-tvmvzc41.js";export{Ne as PullOverlay};
@@ -1 +1 @@
1
- import{pullVideoMp4 as e,pullVideoWebm as o}from"../assets.js";var i=[{src:e,type:"video/mp4"},{src:o,type:"video/webm"}];export{i as PULL_VIDEO_SOURCES};
1
+ import{Me}from"../../../chunk-b7v6g7a0.js";import"../../../chunk-tvmvzc41.js";export{Me as PULL_VIDEO_SOURCES};
@@ -1,4 +1,4 @@
1
- import { type GachaPoolCatalogViewModel } from "../../core/lib/gacha-pools.js";
1
+ import { type GachaPoolCatalogViewModel } from "../../core/lib/gacha-pools";
2
2
  export type PullButtonVisualState = "default" | "hover" | "press";
3
3
  export declare function PullView({ onBack, onAlbum, onEquip, isFirstDraw, onSingleDraw, onMultiDraw, drawDisabled, albumHasUnseen, availablePoints, pointsLoaded, guideActive, poolCatalog }: {
4
4
  onBack: () => void;
@@ -1 +1 @@
1
- import{jsx as e,jsxs as s}from"react/jsx-runtime";import{motion as j}from"motion/react";import{useEffect as G,useMemo as O,useState as w}from"react";import{getDefaultGachaPool as M,getVisibleGachaPools as L,resolveGachaPoolStatus as V}from"../../core/lib/gacha-pools.js";import{openAccountUrl as E}from"../../core/lib/recharge.js";import{placeholderCard as B,pullAlbumIcon as H,pullBack as R,pullGem as K,pullPageBackground as X,pullTexture as W,pullVibemonIcon as Y}from"../assets.js";import{cn as v}from"../lib/utils.js";import{Button as P}from"../ui/button.js";import{BackToHome as J}from"./back-to-home.js";import{GemBalance as Q}from"./gem-balance.js";import{InsufficientPointsDialog as Z}from"./insufficient-points-dialog.js";import{FreeDrawGuide as ee,OnboardingScrim as te}from"./onboarding-guide.js";var ae="linear-gradient(180deg, #0C0C77 1.7234%, #171B6A 25.125%, #A67FFB 97.583%, #957FFB 116.28%)",le=250,oe={1:{default:"bg-[#82D6EB]",hover:"bg-[#A3E1F0]",press:"bg-[#5AC8E3]"},10:{default:"bg-[#FFD932]",hover:"bg-[#FFE46B]",press:"bg-[#FACE0B]"}};function _({drawCount:t,price:a,onClick:c,disabled:r,label:d}){let p=t===1,[b,u]=w(!1),[m,l]=w(!1),o=m?"press":b?"hover":"default",f=p?`X ${a}`:`X ${a}`;return s(P,{className:"relative h-[8.5cqh] w-full overflow-visible rounded-none border-0 bg-transparent p-0 shadow-none transition-none hover:bg-transparent active:translate-y-0 disabled:opacity-45","aria-label":d,disabled:r,"data-visual-state":o,onPointerEnter:()=>u(!0),onPointerLeave:()=>{u(!1),l(!1)},onPointerDown:()=>l(!0),onPointerUp:()=>l(!1),onPointerCancel:()=>l(!1),onKeyDown:(h)=>{if(h.key===" "||h.key==="Enter")l(!0)},onKeyUp:(h)=>{if(h.key===" "||h.key==="Enter")l(!1)},onBlur:()=>{u(!1),l(!1)},onClick:c,children:[s("span",{className:"absolute top-[2.092cqh] left-0 h-[6.408cqh] w-full overflow-hidden rounded-[6.25cqw] drop-shadow-[0_0.417cqh_0_rgba(0,0,0,0.51)]",children:[e("span",{"data-slot":"pull-button-surface",className:v("absolute inset-0",oe[t][o])}),e("img",{src:W,alt:"",className:v("pointer-events-none absolute top-[-560.71%] left-[-20.34%] h-[741.76%] w-[160.31%] max-w-none select-none",p?"opacity-68 mix-blend-soft-light":"opacity-18 mix-blend-color-burn")}),e("span",{className:"absolute inset-0 shadow-[inset_0_0.2cqh_0.07cqh_0_white]"}),s("span",{"data-slot":"pull-button-label",className:"absolute inset-0 flex items-center justify-center 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:["PULL X",t]})]}),s("span",{className:"absolute top-0 left-1/2 flex h-[4.422cqh] -translate-x-1/2 items-center whitespace-nowrap",children:[e("span",{className:"me-[-0.375cqw] flex size-[2.763cqw] shrink-0 items-center justify-center",children:e("img",{"data-testid":"pull-button-gem",src:K,alt:"",className:"size-[1.682cqw] max-w-none -scale-y-100 rotate-[21.86deg] select-none"})}),e("span",{"data-slot":"pull-button-price","data-text":f,className:"relative scale-y-98 -skew-x-10 text-[1cqw] leading-normal font-semibold tracking-[0.1cqw] text-transparent before:absolute before:inset-0 before:text-white before:content-[attr(data-text)] before:[-webkit-text-stroke:0.25cqw_#FFFFFF] after:absolute after:inset-0 after:bg-gradient-to-b after:from-[#9645CF] after:to-[#878FFF] after:bg-clip-text after:text-transparent after:content-[attr(data-text)]",style:{fontFamily:'"PingFang SC", sans-serif'},children:f})]})]})}var ne=["unselected","hover","selected"],se=(t,a)=>a==="selected"?t.sidebarSelectedImageUrl:a==="hover"?t.sidebarHoverImageUrl:t.sidebarUnselectedImageUrl;function re({pool:t,selected:a,disabled:c,onSelect:r}){let[d,p]=w(!1),[b,u]=w(!1),m=a?"selected":d||b?"hover":"unselected";return e(P,{id:`pool-tab-${t.poolUuid}`,role:"tab","aria-selected":a,"aria-controls":"gacha-pool-banner","aria-label":t.name,disabled:c,onClick:r,onPointerEnter:()=>p(!0),onPointerLeave:()=>p(!1),onFocus:()=>u(!0),onBlur:()=>u(!1),"data-visual-state":m,className:v("relative h-[14.167cqh] w-full shrink-0 justify-start overflow-visible rounded-none border-0 bg-transparent p-0 shadow-none transition-none hover:bg-transparent active:translate-y-0 disabled:opacity-100",a?"z-20":"z-0"),children:ne.map((l)=>e("img",{src:se(t,l)||B,alt:"","aria-hidden":!0,className:v("pointer-events-none absolute bottom-0 left-0 h-auto w-full max-w-none select-none",m===l?"opacity-100":"opacity-0")},l))})}function ie(t,a){if(a==="UPCOMING"){if(t.startsAt===null)throw Error(`Upcoming gacha pool ${t.poolUuid} is missing startsAt`);return{label:"Starts in",at:t.startsAt}}if(a==="ACTIVE"&&t.endsAt!==null)return{label:"Time remaining",at:t.endsAt};return null}function ce({pool:t,status:a,nowMs:c}){let r=ie(t,a);if(r===null)return null;let d=Math.floor((Date.parse(r.at)-c)/1000),p=Math.floor(d/86400),b=Math.floor(d%86400/3600),u=Math.floor(d%3600/60),m=d%60,l=[{value:p,unit:"d"},{value:b,unit:"h"},{value:u,unit:"m"},{value:m,unit:"s"}];return e("div",{role:"timer","aria-label":r.label,className:"absolute bottom-[6.8%] left-[4.4%] flex min-w-[28%] items-center gap-[1.5%] rounded-lg bg-black/24 px-[1.2%] py-[0.8%] text-white backdrop-blur-sm",children:l.map(({value:o,unit:f})=>s("span",{className:"flex items-center gap-[0.35em]",children:[e("span",{className:"min-w-[2.1em] rounded-md bg-black/28 px-[0.35em] py-[0.25em] text-center text-[clamp(9px,0.82cqw,16px)] leading-none font-bold tabular-nums",children:String(o).padStart(2,"0")}),e("span",{className:"text-[clamp(8px,0.58cqw,12px)] font-medium text-white/75",children:f})]},f))})}function de(t,a){let c=t.find((r)=>r.poolUuid===a);if(c!==void 0)return c;return S(t)}function S(t){let a=t[0];if(a===void 0)throw Error("Gacha pool catalog has no visible pools");return a}function Pe({onBack:t,onAlbum:a,onEquip:c,isFirstDraw:r,onSingleDraw:d,onMultiDraw:p,drawDisabled:b,albumHasUnseen:u,availablePoints:m,pointsLoaded:l,guideActive:o,poolCatalog:f}){let[h,x]=w(!1),[z,D]=w(S(f.pools).poolUuid),[N,I]=w(Date.now);G(()=>{let i=window.setInterval(()=>I(Date.now()),1000);return()=>window.clearInterval(i)},[]);let q=O(()=>L(f.pools,N),[f.pools,N]),y=M(q),n=o?y:de(q,z),U=V(n,N),k=r&&n.poolUuid===y.poolUuid,C=n.singlePrice,F=b||!n.canDraw||U!=="ACTIVE",T=()=>{if(!k&&l&&m<C){x(!0);return}d(n.poolUuid)},A=()=>{if(l&&m<n.multiPrice){x(!0);return}p(n.poolUuid)};return s("div",{className:"[container-type:size] relative h-full w-full overflow-hidden",style:{background:ae},children:[e("div",{className:"absolute inset-0 flex items-center justify-center",children:s("div",{"data-testid":"vibemon-pull-stage",className:"[container-type:size] relative",style:{width:"min(100cqw, 160cqh)",aspectRatio:"8 / 5"},children:[s("div",{"aria-hidden":!0,className:"pointer-events-none absolute top-[-51.213%] left-[48.958%] h-[172.145%] w-[143.454%] -translate-x-1/2",children:[e("img",{"data-testid":"vibemon-pool-page-background",src:X,alt:"",className:"absolute inset-0 h-full w-full max-w-none object-cover opacity-60 mix-blend-color-burn select-none"}),e("div",{className:"absolute inset-0 bg-black/40"})]}),e(J,{onClick:t,disabled:o,label:"Back",iconSrc:R,className:"absolute top-[5%] left-[6.25%] z-10 gap-[0.729cqw] text-[#BCACE0] hover:text-[#BCACE0] [&_img]:size-[3.021cqw] [&_span]:text-[1.667cqw]"}),s("div",{className:"absolute top-[5%] right-[6.25%] z-10 flex h-[5.5cqh] items-center gap-[2.292cqw]",children:[e(P,{"aria-label":"Vibémon",disabled:o,onClick:c,className:"size-[3.333cqw] bg-transparent p-0 hover:bg-transparent",children:e("img",{src:Y,alt:"",className:"size-full object-contain"})}),s(P,{"aria-label":"Album",disabled:o,onClick:a,className:"relative size-[3.333cqw] bg-transparent p-0 hover:bg-transparent",children:[e("img",{src:H,alt:"",className:"size-full object-contain"}),u&&e("span",{className:"absolute top-0 right-0 size-2 rounded-full bg-[#F74640]"})]}),e(Q,{amount:m,onAdd:E,loaded:l,disabled:o,className:"h-[5.5cqh] min-w-0 rounded-[7.813cqw] py-0 pr-[0.417cqw] pl-[0.729cqw] [&_[data-slot=gem-balance-add-icon]]:size-[2.5cqw] [&>[data-slot=gem-balance-add]]:ms-[1.094cqw] [&>[data-slot=gem-balance-add]]:size-[2.5cqw] [&>[data-slot=gem-balance-amount]]:text-[1.563cqw] [&>[data-slot=gem-balance-icon]]:me-[0.156cqw] [&>[data-slot=gem-balance-icon]]:size-[2.5cqw]"})]}),e("div",{role:"tablist","aria-label":"Card pools",className:"absolute top-[19.816%] left-[6.25%] flex w-[12.5%] flex-col",children:q.map((i)=>e(re,{pool:i,selected:i.poolUuid===n.poolUuid,disabled:o||b,onSelect:()=>D(i.poolUuid)},i.poolUuid))}),s("div",{id:"gacha-pool-banner",role:"tabpanel","aria-labelledby":`pool-tab-${n.poolUuid}`,className:"absolute top-[16.667%] left-[14.583%] z-10 h-[66.667%] w-[79.167%] overflow-hidden rounded-[1.042cqw]",children:[q.map((i)=>{let g=i.poolUuid===n.poolUuid;return e(j.img,{src:i.poolCardImageUrl||B,alt:g?`${i.name} pool`:"","aria-hidden":!g,className:"absolute inset-0 h-full w-full object-cover select-none",style:{zIndex:g?1:0},initial:!1,animate:{opacity:g?1:0},transition:{duration:le/1000,ease:g?"easeOut":"easeIn"}},i.poolUuid)}),e(ce,{pool:n,status:U,nowMs:N})]}),s("div",{className:"absolute top-[86.098%] left-[54.427%] flex gap-[2.24cqw]",children:[e("div",{className:v("w-[18.542cqw]",o&&"relative z-30"),children:e(_,{drawCount:1,price:C,label:"Pull once",disabled:F,onClick:T})}),e("div",{className:"w-[18.542cqw]",children:e(_,{drawCount:10,price:n.multiPrice,label:"Pull ten times",disabled:o||k||F,onClick:A})})]}),o&&e(te,{}),o&&e(ee,{})]})}),h&&e(Z,{onClose:()=>x(!1),onProceed:()=>{E(),x(!1)}})]})}export{Pe as PullView};
1
+ import{Ve}from"../../../chunk-7pdpmxg2.js";import"../../../chunk-pwsarey8.js";import"../../../chunk-g8nah79y.js";import"../../../chunk-j2922k42.js";import"../../../chunk-qd5jhh2h.js";import"../../../chunk-wfsdbf7j.js";import"../../../chunk-xrw9s1th.js";import"../../../chunk-mjsqb1wk.js";import"../../../chunk-tvmvzc41.js";import"../../../chunk-pe1mn10v.js";import"../../../chunk-vt1sfk87.js";import"../../../chunk-wa475kmq.js";import"../../../chunk-htw56xtp.js";export{Ve as PullView};
@@ -1,2 +1 @@
1
- import{jsx as o,jsxs as v}from"react/jsx-runtime";import{cn as ee}from"cn";import{ArrowUpIcon as Pe,CheckIcon as Ue,PanelsTopLeftIcon as He,PencilLineIcon as Oe,XIcon as De}from"lucide-react";import{useCallback as ve,useEffect as ne,useEffectEvent as Ve,useLayoutEffect as ye,useRef as b,useState as p}from"react";import{useTranslation as Ge}from"react-i18next";import{sameBinding as We,vibemonHost as qe}from"../../core/host.js";import{advancePetSubmission as Ke}from"../../core/lib/reply-submission.js";import{getVibemonScopeSync as Qe,useVibemonState as Xe}from"../lib/account-state.js";import{Button as te}from"../ui/button.js";import{InputGroup as Ye,InputGroupAddon as Ze,InputGroupButton as P,InputGroupTextarea as Je}from"../ui/input-group.js";import{PetBubbleBackground as $e}from"./pet-bubble-background.js";import{SessionIcon as ke}from"./session-icon.js";var oe=18,se=oe/2,en={color:"var(--popover-foreground)",borderRadius:16,border:"1px solid var(--border)"},nn=(h)=>h.split(/[\\/]/).findLast(Boolean)??"",tn=(h,t)=>[nn(h.cwd),h.title||t].filter(Boolean).join(" / ");function hn({maxHeight:h}){let t=qe(),U=Xe(),Ee=Qe(),[Ie,re]=p(320);ne(()=>{let e=!1;if(re(320),h===void 0&&U.pet!=="")t.assets.resources.inspect(U.pet).then((s)=>{if(e)return;let n=s?.config?.bubbleAreaHeight;if(n!==void 0&&(typeof n!=="number"||!Number.isFinite(n)))throw Error("Pet bubble height must be a finite number");re(Math.max(typeof n==="number"?n:0,320))}).catch(t.onError);return()=>{e=!0}},[t,Ee,U.pet,h]);let{t:r}=Ge("common"),[i,Ne]=p(()=>t.sessions.snapshot()),[y,H]=p(""),[O,R]=p(!1),[m,k]=p(null),[le,D]=p(!1),[V,ie]=p(!1),[Ce,G]=p(""),[N,W]=p(!1),[Me,ae]=p(null),ce=b(null),A=b(!1),C=b(!1),u=b(null),q=b(null),g=b(null),ue=b(i),de=b(null),pe=b(null),K=ve((e)=>G(e instanceof Error?e.message:String(e)),[]),l=i?.binding??null,a=i,E=i,M=l?.connectionEpoch??null,S=l?.sessionId??null,Se=l?.bindingRevision??-1,Te=i?.owner??"",Q=i?.access!=="writable"||i.executionId!==null,Be=i!==null,_=ve(()=>{if(g.current?.abort(),g.current=null,W(!1),ae(null),H(""),R(!1),k(null),D(!1),q.current=null,G(""),A.current=!1,C.current=!1,u.current!==null)cancelAnimationFrame(u.current);u.current=null},[]);ne(()=>{let e=(n)=>{let x=ue.current;if(x===null||n===null||!We(x.binding,n.binding))_();if(ue.current=n,n!==null){if(n.state==="running")D(!0);k((I)=>I===null?I:Ke(I,n.state,n.since))}Ne(n)},s=t.sessions.subscribe(e);return e(t.sessions.snapshot()),document.addEventListener("vibemon:dismiss",_),()=>{if(s(),document.removeEventListener("vibemon:dismiss",_),g.current?.abort(),u.current!==null)cancelAnimationFrame(u.current)}},[t,_]);let T=()=>{if(l!==null)t.windows.call("bubble-interact",{binding:l}).catch(t.onError)},B=async(e)=>{if(g.current!==null)return;let s=new AbortController;g.current=s,T(),W(!0),G("");try{await e(s.signal)}catch(n){if(!s.signal.aborted)K(n)}finally{if(g.current===s)g.current=null,W(!1)}},Le=()=>t.windows.call("focus"),ze=(e)=>{if(l===null||i===null)throw Error("Pet conversation unavailable");return T(),t.windows.call("session-menu",{binding:l,candidates:i.candidates,position:e,onSelect:(s)=>B(()=>t.sessions.select(l,s))})},c=i?.state==="running",w=i?.state==="requires_action"||i?.prompt!=null,f=i?.prompt??null,Re=async(e,s,n)=>{if(l===null)throw Error(r("petMode.openToReply"));if(await t.sessions.answer(l,crypto.randomUUID(),e.token,s),!n.aborted)ae(e.token)},me=!N&&!Q&&!c&&!w&&y.trim()!==""&&Be,fe=async(e)=>{if(l===null||E===null)throw Error(r("petMode.openToReply"));let s=y.trim();q.current=E.reply?.messageId??null,k({sessionId:l.sessionId,text:s,startedAt:Date.now(),accepted:!1,sawRunning:!1,completed:!1});try{if(await t.sessions.send(l,crypto.randomUUID(),s),e.aborted)return;k((n)=>n===null?null:{...n,accepted:!0}),H("")}catch(n){if(!e.aborted)k(null);throw n}},X=()=>{if(l!==null)B(async(e)=>{await t.sessions.openChat(l),e.throwIfAborted()})},L=Ce||i?.error,Y=m?.completed||le&&(a?.state==="idle"||a?.state==="done"),F=E!==null&&!c&&!w&&!L&&Y&&E.reply?.messageId!==q.current?E.reply:null,Z=L?null:w?r("runState.requires_action"):c?r("petMode.thinking"):m?.completed?null:m?.accepted?r("petMode.sent"):null,be=m!==null,z=be||le,J=E?.userMessage??null,he=Y&&!c?null:(c||z)&&J!==null&&(m===null||J.timestamp>=m.startedAt)?J.text:be?m.text:null,j=!z&&!c&&!w,d=z&&Y&&!c&&!w&&!L,Ae=F?.messageId,_e=F?.text,we=l!==null,Fe=Ve(()=>{if(l!==null)t.windows.call("dismiss-result",{binding:l}).catch(t.onError)});ne(()=>{if(!d||V||!we)return;let e=setTimeout(Fe,1e4);return()=>clearTimeout(e)},[d,V,we,M,S,Se,Ae,_e,t]);let ge=w?320:d?260:c?240:320;ye(()=>{let e=de.current;if(e===null)return;let s=!1,n=()=>{let I=Math.ceil(e.getBoundingClientRect().height)+6;if(!s&&I>=32)t.windows.call("bubble-size",{width:ge+se*2,height:I}).catch(t.onError)},x=new ResizeObserver(n);return x.observe(e),n(),()=>{s=!0,x.disconnect()}},[t,ge,S]);let xe=a?r(a.windowLabel==="main"?"petMode.openMain":"petMode.openChat"):r("petMode.openFull");ye(()=>{if(y===""){R(!1);return}if(O||z||c)return;if(y.includes(`
2
- `)){R(!0);return}let e=ce.current;if(e===null)return;let s=()=>{let x=Math.ceil(Number.parseFloat(getComputedStyle(e).minHeight));if(e.scrollHeight>x)R(!0)};s();let n=new ResizeObserver(s);return n.observe(e),()=>n.disconnect()},[y,O,z,c]);let je=j?Ye:"div";return v("div",{ref:de,"data-pet-bubble":!0,className:"relative pb-1.5",style:{paddingTop:se,paddingInline:se},onPointerEnter:()=>ie(!0),onPointerLeave:()=>ie(!1),children:[S!==null&&o($e,{cardRef:pe}),S!==null&&v("div",{ref:pe,"data-pet-bubble-card":!0,role:"presentation",onClick:(e)=>{if(d&&e.target.closest("button")===null)X()},style:{...en,position:"relative",background:"transparent",borderColor:"transparent",boxShadow:"none",animation:"none",maxHeight:(h??Ie)-6},className:ee("overflow-y-auto p-2",d?"grid cursor-pointer grid-cols-[minmax(0,1fr)_auto] items-center gap-x-3 gap-y-1 px-3":c?"flex flex-col gap-1 py-1.5":"flex flex-col gap-2"),children:[he&&o("p",{className:"line-clamp-2 text-sm break-words whitespace-pre-wrap",children:he}),F!==null&&o("p",{className:"line-clamp-2 text-sm break-words whitespace-pre-wrap",children:F.text}),L&&o("p",{role:"alert",className:"text-muted-foreground text-xs",children:L}),f!==null&&v("section",{"aria-label":r(f.kind==="permission"?"petMode.permission":"petMode.question"),className:"flex min-w-0 flex-col gap-2",children:[o("p",{className:"text-sm break-words whitespace-pre-wrap",children:f.title}),f.detail!==""&&o("pre",{className:"text-muted-foreground max-h-24 overflow-auto text-xs break-words whitespace-pre-wrap",children:f.detail}),f.options.length>0&&!Q?o("div",{className:"flex flex-wrap gap-1",children:f.options.map((e)=>o(te,{size:"xs",className:"h-auto min-h-6 max-w-full whitespace-normal",disabled:N||Me===f.token,onClick:()=>void B((s)=>Re(f,e.id,s)),children:e.label},e.id))}):o(te,{size:"xs",onClick:X,children:r("petMode.openToAnswer")})]}),v(je,{className:d?"col-start-1 row-start-2":void 0,children:[j&&o(Je,{ref:ce,rows:1,className:"field-sizing-fixed max-h-[calc(3lh+1rem)] min-h-[calc(1lh+1rem)] min-w-0 overflow-y-auto",style:{height:O?"calc(3lh + 1rem)":"calc(1lh + 1rem)"},value:y,placeholder:r("petMode.placeholder"),"aria-label":r("petMode.placeholder"),disabled:N||Q||!Te||M===null,onChange:(e)=>{T(),H(e.target.value)},onFocus:()=>{T(),Le().catch(K)},onCompositionStart:()=>{if(u.current!==null)cancelAnimationFrame(u.current);u.current=null,C.current=!1,A.current=!0},onCompositionEnd:()=>{if(A.current=!1,C.current=!0,u.current!==null)cancelAnimationFrame(u.current);u.current=requestAnimationFrame(()=>{C.current=!1,u.current=null})},onKeyDown:(e)=>{if(e.key!=="Enter"||e.shiftKey||A.current||e.nativeEvent.isComposing||C.current||e.nativeEvent.keyCode===229)return;if(e.preventDefault(),me)B(fe)}}),v(Ze,{align:"block-end",className:ee("shrink-0",(d||c)&&"gap-1 p-0"),children:[v("div",{className:ee("flex min-w-0 items-center gap-2",!d&&"flex-1"),children:[Z&&o("p",{role:"status",className:"text-muted-foreground text-xs",children:c&&!w?o("span",{className:"shimmer",children:Z}):Z}),j?v(P,{className:"min-w-0 flex-1 justify-start",title:r("petMode.chooseSession"),"aria-label":r("petMode.chooseSession"),"aria-haspopup":"menu",disabled:N||M===null,onClick:(e)=>{let s=e.currentTarget.getBoundingClientRect();ze({x:s.left,y:s.bottom}).catch(K)},children:[a&&o("span",{role:"img","aria-label":r(a.windowLabel==="main"?"navigation.mainWindow":"navigation.chatWindow"),"data-icon":"inline-start",className:"inline-flex shrink-0",children:o(ke,{name:a.windowLabel,icons:t.sessionIcons})}),o("span",{className:"min-w-0 flex-1 truncate text-start",title:a?[a.cwd,a.title||r("collection.defaultChatTitle")].filter(Boolean).join(" / "):"",children:a?tn(a,r("collection.defaultChatTitle")):""})]}):!c&&o(P,{size:"icon-xs",className:d?"size-5":void 0,title:r("petMode.continue"),"aria-label":r("petMode.continue"),disabled:N||w||m!==null&&!m.accepted,onClick:()=>{T(),k(null),D(!1)},children:o(Oe,{})})]}),j&&o(P,{size:"icon-xs",variant:"default",className:"size-5 shrink-0",title:r("petMode.send"),"aria-label":r("petMode.send"),disabled:!me,onClick:()=>void B(fe),children:o(Pe,{className:"size-3"})}),o(P,{size:"icon-xs",className:"size-5 shrink-0",title:xe,"aria-label":xe,disabled:M===null||!a,onClick:X,children:a&&t.sessionIcons?o(ke,{name:a.windowLabel,icons:t.sessionIcons}):o(He,{className:"size-4"})})]})]}),d&&o("span",{role:"img","aria-label":r("petMode.completed"),title:r("petMode.completed"),className:"col-start-2 row-span-2 row-start-1 inline-flex size-7 items-center justify-center rounded-full bg-[var(--vibemon-completed-background)] text-[var(--vibemon-completed-foreground)]",children:o(Ue,{className:"size-4"})})]}),V&&M!==null&&S!==null&&o(te,{variant:"outline",size:"icon-xs",className:"text-muted-foreground absolute top-1 left-1 cursor-pointer rounded-full",style:{width:oe,height:oe},title:r("close"),"aria-label":r("close"),onClick:()=>void t.windows.call("bubble-close").catch(t.onError),children:o(De,{className:"size-2.5"})})]})}export{hn as PetQuickReply};
1
+ import{Ft}from"../../../chunk-zar89jcs.js";import"../../../chunk-e20z911q.js";import"../../../chunk-v890qhc2.js";import"../../../chunk-38vgcbpq.js";import"../../../chunk-rfxpf1eq.js";import"../../../chunk-3q1e1ksh.js";import"../../../chunk-mjsqb1wk.js";import"../../../chunk-pha0eyam.js";import"../../../chunk-d4ezh3c4.js";import"../../../chunk-6f02m6jw.js";import"../../../chunk-01py4vpp.js";import"../../../chunk-f0awr1g7.js";import"../../../chunk-khnyadsg.js";import"../../../chunk-pbwt3qj9.js";import"../../../chunk-htw56xtp.js";import"../../../chunk-qy364wgy.js";import"../../../chunk-afy09ajr.js";import"../../../chunk-3amxesw3.js";import"../../../chunk-nbfhs21c.js";import"../../../chunk-ax8zmvs0.js";import"../../../chunk-rerywpwe.js";import"../../../chunk-4gegjx79.js";export{Ft as PetQuickReply};
@@ -1,5 +1,5 @@
1
- import { type SessionIcons } from "../../core/session-icon.js";
2
- export { sessionIconSvg, type SessionIcons } from "../../core/session-icon.js";
1
+ import { type SessionIcons } from "../../core/session-icon";
2
+ export { sessionIconSvg, type SessionIcons } from "../../core/session-icon";
3
3
  export declare function SessionIcon({ name, icons }: {
4
4
  name: "main" | "chat";
5
5
  icons?: SessionIcons;
@@ -1 +1 @@
1
- import{jsx as s}from"react/jsx-runtime";import{sessionIconSvg as o}from"../../core/session-icon.js";import{sessionIconSvg as c}from"../../core/session-icon.js";function t({name:e,icons:n}){return s("span",{"aria-hidden":!0,className:"inline-flex size-[18px] items-center justify-center",dangerouslySetInnerHTML:{__html:o(e,n)}})}export{t as SessionIcon,c as sessionIconSvg};
1
+ import{le}from"../../../chunk-3q1e1ksh.js";import{_}from"../../../chunk-d4ezh3c4.js";export{le as SessionIcon,_ as sessionIconSvg};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as a}from"react/jsx-runtime";import{AnimatePresence as r,motion as l,useReducedMotion as c}from"motion/react";import{useEffect as u}from"react";import{singlePetToast as d}from"../assets.js";import{Button as p}from"../ui/button.js";var m="This is your only pet. It’s equipped by default and can’t be unequipped ~",f=3000;function x({requestId:t,onClose:i}){let o=c(),n=t>0;return u(()=>{if(t===0)return;let s=window.setTimeout(i,f);return()=>window.clearTimeout(s)},[t,i]),e("div",{className:"pointer-events-none absolute bottom-[7.067%] left-1/2 z-30 h-[4.583cqw] w-[52.604cqw] -translate-x-1/2",children:e(r,{initial:!1,children:n&&a(l.div,{"data-testid":"single-pet-toast",className:"pointer-events-auto relative size-full",initial:{opacity:0,y:o?0:"100%"},animate:{opacity:1,y:0},exit:{opacity:0,y:o?0:"100%"},transition:o?{duration:0}:{duration:0.3,ease:[0.16,1,0.3,1]},children:[e("img",{src:d,alt:"","aria-hidden":!0,className:"absolute inset-0 size-full max-w-none select-none"}),e("span",{role:"status",className:"sr-only",children:m}),e(p,{"aria-label":"Close",onClick:i,className:"absolute top-1/4 right-[5.743%] aspect-square h-1/2 rounded-full border-0 bg-transparent p-0 shadow-none transition-none hover:bg-white/10 focus-visible:border-white focus-visible:ring-white/70 active:translate-y-0",children:e("span",{className:"sr-only",children:"Close"})})]})})})}export{f as SINGLE_PET_TOAST_DURATION_MS,m as SINGLE_PET_TOAST_MESSAGE,x as SinglePetToast};
1
+ import{Zt,Jt,Ge}from"../../../chunk-zkwggfj2.js";import"../../../chunk-mjsqb1wk.js";import"../../../chunk-tvmvzc41.js";export{Jt as SINGLE_PET_TOAST_DURATION_MS,Zt as SINGLE_PET_TOAST_MESSAGE,Ge as SinglePetToast};
@@ -1,4 +1,4 @@
1
- import type { VibemonSpriteConfig } from "../../core/types.js";
1
+ import type { VibemonSpriteConfig } from "../../core/types";
2
2
  interface SpriteRendererProps {
3
3
  config: VibemonSpriteConfig;
4
4
  spriteUrl: string;
@@ -1 +1 @@
1
- import{jsx as _}from"react/jsx-runtime";import{useCallback as g,useEffect as X,useRef as u,useState as q}from"react";function J({config:e,spriteUrl:v,stateId:k,flipped:G,active:p,staticImage:a,animTick:x,onFirstFrame:b,onDrawFrame:C,onRenderError:E,onMouseDown:V,onClick:Y}){let h=u(null),s=u(0),t=u(null),y=u(null),c=u(!1),[D,H]=q(!1),o=e.states.find((r)=>r.id===k),R=o?.row??0,S=o?.frames??1,I=o?.fps??3,w=o?.loop??!0,j=u(b);j.current=b;let F=u(C);F.current=C;let M=u(E);M.current=E;let z=g((r,n)=>{let W=h.current,l=y.current;if(!W||!l)return;let i=W.getContext("2d");if(!i)return;i.imageSmoothingEnabled=!1,i.clearRect(0,0,e.renderSize,e.renderSize);let f=a?l.naturalWidth:e.cropW,d=a?l.naturalHeight:e.cropH,m=e.renderSize/Math.max(f,d);i.drawImage(l,a?0:r*e.frameSize+e.cropX,a?0:n*(e.frameHeight??e.frameSize)+e.cropY,f,d,(e.renderSize-f*m)/2,(e.renderSize-d*m)/2,f*m,d*m),F.current?.()},[e,a]);return X(()=>{let r=!1;c.current=!1,H(!1);let n=new Image;return n.onload=()=>{if(r)return;y.current=n,H(!0)},n.onerror=()=>{if(!r)M.current?.(Error("Vibemon spritesheet could not be decoded"))},n.src=v,()=>{r=!0,n.onload=null,n.onerror=null}},[v]),X(()=>{if(!D||!p&&c.current)return;let r=h.current;if(!r)return;if(r.dataset.animationGeneration=String(x??0),t.current)clearInterval(t.current);if(s.current=0,z(0,R),!c.current)c.current=!0,j.current?.();if(!p)return;return t.current=setInterval(()=>{if(s.current++,s.current>=S){if(s.current=w?0:S-1,!w&&t.current)clearInterval(t.current),t.current=null}z(s.current,R)},1000/I),()=>{if(t.current)clearInterval(t.current)}},[R,S,I,w,x,D,p,z]),_("canvas",{ref:h,width:e.renderSize,height:e.renderSize,onMouseDown:(r)=>{if(r.button!==0)return;r.preventDefault(),V()},onClick:(r)=>{if(r.button!==0)return;Y()},style:{width:"100%",height:"100%",imageRendering:"pixelated",transform:G?"scaleX(-1)":void 0,cursor:"pointer",pointerEvents:"auto"}})}export{J as SpriteRenderer};
1
+ import{I}from"../../../chunk-8nzgysac.js";export{I as SpriteRenderer};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as t}from"react/jsx-runtime";import{emptyPet as o}from"../assets.js";import{Button as s}from"../ui/button.js";function c({onWish:r}){return t("div",{className:"absolute inset-x-0 top-[18%] bottom-[8%] flex flex-col items-center justify-center",children:[e("img",{src:o,alt:"",className:"w-[10.938cqw] shrink-0 drop-shadow-[0_18px_28px_rgba(31,15,92,0.35)] select-none"}),t("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",{}),"draw one home!"]}),e(s,{onClick:r,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"})]})}export{c as VibemonEmptyState};
1
+ import{B}from"../../../chunk-t6snsees.js";import"../../../chunk-mjsqb1wk.js";import"../../../chunk-tvmvzc41.js";export{B as VibemonEmptyState};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as s,Fragment as l}from"react/jsx-runtime";import{useState as r}from"react";import{openAccountUrl as m}from"../../core/lib/recharge.js";import{albumIcon as i,pullBack as d,pullVibemonIcon as u}from"../assets.js";import{Button as p}from"../ui/button.js";import{BackToHome as b}from"./back-to-home.js";import{GemBalance as f}from"./gem-balance.js";import{WishButton as g}from"./wish-button.js";function q({action:a}){let[n,o]=r(!1),t=a.kind==="album";return s(p,{"aria-label":t?"Album":"Vibémon",onClick:a.onClick,onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),className:"relative size-[3.333cqw] bg-transparent p-0 shadow-none hover:bg-transparent",children:[e("img",{src:t?i:u,alt:"",className:"size-full object-contain transition-transform duration-150 select-none",style:{transform:n?"translateY(-2px) scale(1.05)":"none"}}),t&&a.hasUnseen&&e("span",{className:"absolute top-0 right-0 size-2 rounded-full bg-[#F74640]"})]})}function N({onBack:a,onWish:n,sectionAction:o,availablePoints:t,pointsLoaded:c}){return s(l,{children:[e(b,{onClick:a,label:"Back",iconSrc:d,className:"absolute top-[5.333%] left-[6.25%] z-30 gap-[0.729cqw] text-[#BCACE0] hover:text-[#BCACE0] [&_img]:size-[3.021cqw] [&_span]:text-[1.667cqw]"}),s("div",{className:"absolute top-[5%] right-[6.25%] z-30 flex h-[5.5cqh] items-center gap-[2.292cqw]",children:[e(q,{action:o}),e(g,{onClick:n,className:"size-[3.333cqw]"}),e(f,{amount:t,onAdd:m,loaded:c,className:"h-[5.5cqh] min-w-0 rounded-[7.813cqw] py-0 pr-[0.417cqw] pl-[0.729cqw] [&_[data-slot=gem-balance-add-icon]]:size-[2.5cqw] [&>[data-slot=gem-balance-add]]:ms-[1.094cqw] [&>[data-slot=gem-balance-add]]:size-[2.5cqw] [&>[data-slot=gem-balance-amount]]:text-[1.563cqw] [&>[data-slot=gem-balance-icon]]:me-[0.156cqw] [&>[data-slot=gem-balance-icon]]:size-[2.5cqw]"})]})]})}export{N as VibemonHeader};
1
+ import{T}from"../../../chunk-t858h8ch.js";import"../../../chunk-mfrnyj0b.js";import"../../../chunk-j2922k42.js";import"../../../chunk-qd5jhh2h.js";import"../../../chunk-wfsdbf7j.js";import"../../../chunk-xrw9s1th.js";import"../../../chunk-mjsqb1wk.js";import"../../../chunk-tvmvzc41.js";import"../../../chunk-wa475kmq.js";import"../../../chunk-htw56xtp.js";export{T as VibemonHeader};
@@ -1 +1 @@
1
- import{jsx as t,jsxs as F}from"react/jsx-runtime";import{Loader2 as De}from"lucide-react";import{useCallback as P,useEffect as h,useRef as S,useState as n}from"react";import{useTranslation as He}from"react-i18next";import{toast as Ce}from"sonner";import{vibemonHost as Ne}from"../../core/host.js";import{createDrawReward as ke}from"../../core/lib/draw-result.js";import{drawGachaPool as Oe,getGachaFirstDraw as Ue,getMyVibemons as Ge,getPointAccount as fe,markVibemonFirstVisit as qe}from"../../core/lib/endpoints.js";import{gachaPoolImageUrls as Fe,loadGachaPoolCatalog as Me}from"../../core/lib/gacha-pools.js";import{preloadImages as pe}from"../../core/lib/preload-images.js";import{getSetting as we,getSettingSync as E,setSetting as be}from"../../core/lib/settings.js";import{consumePendingVibemonView as Te,onVibemonViewRequest as je}from"../../core/lib/view-request.js";import{gem as Be,gemPlus as We,guideArrow as $e,guideHand as ze,guideHandShape as Je,guideHandSheen as Ke,guideHomeTexture as Qe,guideMascot as ve,guidePullTexture as Xe,guideRing as Ye,homeBackground as Ze,homeHotspotAssets as c,pullAlbumIcon as eo,pullBack as oo,pullGem as no,pullPageBackground as to,pullTexture as ro,pullVibemonIcon as io}from"../assets.js";import{equipVibemonAfterDraw as ao,getVibemonScopeSync as _}from"../lib/account-state.js";import{cardThumb as ge}from"../lib/card-image.js";import{syncVibemonResources as so}from"../lib/resource-sync.js";import{AlbumView as lo}from"./album-view.js";import{EquipView as co}from"./equip-view.js";import{HomeView as uo}from"./home-view.js";import{INTRO_VIDEO_URL as mo,IntroOverlay as fo}from"./intro-overlay.js";import{VibemonLoadingView as po}from"./loading-view.js";import{PullOverlay as wo}from"./pull-overlay.js";import{PullView as go}from"./pull-view.js";var ho=30000,M=[Ze,c.vibemon.icon,c.vibemon.hover,c.vibemon.text,c.wish.icon,c.wish.hover,c.wish.text,c.album.icon,c.album.hover,c.album.text,$e,Qe,ve],he=[to,oo,io,eo,ro,no,Be,We,Xe,ze,Je,Ke,ve,Ye],T=(r)=>{let a=_();return!!(a&&r[a])},j=(r,a)=>{let l=_();if(!l)return;be(r,{...E(r),[l]:a})},B=(r)=>{let a=_();if(!a)return null;return r[a]??null},bo=(r)=>{let a=_();if(!a)return;be("vibemon.onboardingStep",{...E("vibemon.onboardingStep"),[a]:r})};function jo(){return t("div",{className:"contents",onContextMenu:(r)=>r.preventDefault(),children:t(vo,{})})}function vo(){let{t:r}=He("vibemon"),[a,l]=n(()=>{let e=B(E("vibemon.onboardingStep"));return e==="free-draw"||e==="view-album"?"pull":"home"}),[I,u]=n("idle"),[m,Pe]=n(()=>B(E("vibemon.onboardingStep"))),[f,W]=n(!1),[L,x]=n(!1),[b,Se]=n([]),[Ee,z]=n(null),[y,Ie]=n(!1),[A,J]=n(0),[D,K]=n(!1),[ye,Re]=n([]),[Ve,Q]=n(!1),[H,_e]=n(null),[X,Y]=n(null),[Z,ee]=n({done:0,total:he.length}),[oe,Le]=n(!1),[p,v]=n(()=>T(E("vibemon.introSeen"))?"loading":"resolving-intro"),[ne,xe]=n({done:0,total:M.length}),[te,Ae]=n(null),re=S(!1),R=P((e)=>{Pe(e),bo(e)},[]),d=P(()=>l("pull"),[]);h(()=>{if(p!=="loading"||re.current)return;re.current=!0,pe(M,(e)=>{xe({done:e,total:M.length})}).catch((e)=>{let o=e instanceof Error?e:Error(String(e));Ae(o)})},[p]);let ie=S(0),ae=S(!1),C=S(!1),w=P(async()=>{let e=++ie.current;try{let o=await Ge();if(e===ie.current)Se(o),Ie(!0),z(null)}catch(o){z(o instanceof Error?o:Error(String(o))),console.warn("[vibemon] getMyVibemons failed",o)}},[]),se=S(!1),le=S(!1),N=P(async()=>{try{let e=await Me();Y(null);let o=[...new Set([...he,...Fe(e)])],s=!se.current;if(s)ee({done:0,total:o.length});if(await pe(o,(V)=>{if(s)ee({done:V,total:o.length})}),_e(e),s)se.current=!0,Le(!0)}catch(e){let o=e instanceof Error?e:Error(String(e));console.error("[vibemon] loadGachaPoolCatalog failed",o),Y(o)}},[]);h(()=>{if(p!=="loading"||le.current)return;le.current=!0,N()},[p,N]),h(()=>{let e=()=>{fe().then((s)=>{J(s.available_points),K(!0)}).catch((s)=>console.warn("[vibemon] getPointAccount failed",s))};e();let o=setInterval(e,ho);return window.addEventListener("focus",e),()=>{clearInterval(o),window.removeEventListener("focus",e)}},[]),h(()=>{for(let e of b)new Image().src=ge(e.gacha_url??e.cover_url)},[b]);let k=()=>{if(L)j("vibemon.albumHasUnseen",!1),x(!1);w(),l("album")},g=P(()=>{w(),l("equip")},[w]);h(()=>{if(ae.current)return;ae.current=!0,w(),Promise.all([Ue().catch((e)=>(console.warn("[vibemon] getGachaFirstDraw failed",e),{first_draw:!1})),we("vibemon.albumHasUnseen")]).then(([e,o])=>{if(W(e.first_draw),x(T(o)),!e.first_draw)return;if(B(E("vibemon.onboardingStep"))==="free-draw"){d();return}R("home-wish"),l("home")}),we("vibemon.introSeen").then((e)=>{if(T(e)){v("loading");return}return qe().then(({first_visit:o})=>{if(j("vibemon.introSeen",!0),o)l("home"),u("intro"),v("intro");else v("loading")})}).catch((e)=>{console.warn("[vibemon] first-visit check failed",e),v("loading")})},[d,w,R]);let[de,ce]=n(!1),O=P((e)=>{if(f&&m==="home-wish")return;if(f&&m==="free-draw"){d();return}if(e==="pull")d();else if(e==="equip")g();else ce(!0)},[f,m,g,d]);if(h(()=>{let e=Te();if(e)O(e);return je(O)},[O]),h(()=>{if(!de||!y)return;if(ce(!1),b.length===0)d();else g()},[de,y,b.length,g,d]),Ee!==null)return F("div",{role:"alert",className:"bg-background text-foreground flex h-full flex-col items-center justify-center gap-3 p-6",children:[t("p",{children:r("offline.title")}),t("p",{className:"text-muted-foreground text-sm",children:r("offline.description")}),t("button",{type:"button",className:"rounded-md border px-4 py-2",onClick:()=>void w(),children:r("offline.retry")})]});if(p==="resolving-intro")return F("div",{className:"relative flex h-full w-full items-center justify-center overflow-hidden bg-[#120E18]",children:[t("video",{src:mo,preload:"auto",muted:!0,playsInline:!0,"aria-hidden":!0,className:"pointer-events-none absolute top-0 left-0 h-px w-px opacity-0"}),t(De,{className:"size-10 animate-spin text-white"})]});if(p==="intro")return t("div",{className:"relative h-full w-full overflow-hidden bg-[#120E18]",children:t(fo,{onVideoStart:()=>u("intro"),onDone:()=>{u("idle"),v("loading")}})});if(te!==null)throw te;if(X!==null)throw X;if(p==="loading"){let e=ne.done+Z.done+(H===null?0:1)+(oe?1:0),o=ne.total+Z.total+2;return t("div",{className:"relative h-full w-full overflow-hidden",children:t(po,{progress:e/o,onFinished:()=>v("ready")})})}if(a==="home")return t(uo,{onDraw:()=>{if(m==="home-wish")R("free-draw");d()},onBackpack:k,onEquip:g,guideActive:f&&m==="home-wish"});if(a==="equip")return t(co,{onBack:()=>l("home"),onWish:d,onAlbum:k,albumHasUnseen:L,ownedCards:b,ownedLoaded:y,availablePoints:A,pointsLoaded:D});if(a==="album")return t(lo,{onBack:()=>l("home"),onWish:d,onEquip:g,ownedCards:b,ownedLoaded:y,availablePoints:A,pointsLoaded:D});if(H===null||!oe)throw Error("[vibemon] app entered ready state before gacha resources were loaded");let ue=async(e,o)=>{if(C.current||I!=="idle")return;C.current=!0,Q(!0);try{let s;try{s=await Oe(e,o)}catch(i){console.warn("[vibemon] drawGachaPool failed",i),Ce.error(r("draw.failedNetwork"));return}let V=o==="SINGLE"?1:10;if(s.results.length!==V)throw Error(`[vibemon] ${o} draw response must contain ${V} results, received ${s.results.length}`);await Promise.all(s.results.map(async(i)=>{if(i.reward_type==="WHITE_CARD"||!i.vibemon_uuid)return;Object.assign(i,await Ne().assets.resolveImages(i.vibemon_uuid))}));let me=s.results.map(ke),U=[];for(let[i,G]of s.results.entries()){if(G.reward_type==="WHITE_CARD")continue;U.push(G);let q=me[i];if(q?.kind!=="card")throw Error(`[vibemon] draw result ${G.draw_index} was not mapped to a Vibemon card`);new Image().src=ge(o==="SINGLE"?q.singleImageUrl:q.multiImageUrl)}if(Re(me),W(!1),m==="free-draw")R("view-album");if(u("video-waiting"),U.length>0){let i=U[0];if(i===void 0)throw Error("[vibemon] draw result lost its first Vibemon item");so(),ao(i.vibemon_uuid,f),w()}N(),fe().then((i)=>{J(i.available_points),K(!0)}).catch((i)=>console.warn("[vibemon] getPointAccount failed",i))}finally{C.current=!1,Q(!1)}};return F("div",{className:"relative h-full w-full",children:[t(go,{onBack:()=>l("home"),onAlbum:k,onEquip:g,isFirstDraw:f,availablePoints:A,pointsLoaded:D,onSingleDraw:(e)=>void ue(e,"SINGLE"),onMultiDraw:(e)=>void ue(e,"MULTI"),drawDisabled:Ve||I!=="idle",albumHasUnseen:L,guideActive:f&&m==="free-draw",poolCatalog:H}),I!=="intro"&&t(wo,{phase:I,drawnRewards:ye,onVideoStarted:()=>u("video-playing"),onPullDone:()=>u("result"),onPullFailed:()=>u("result"),onResultConfirmed:(e)=>{if(e)j("vibemon.albumHasUnseen",!0),x(!0);u("idle")}})]})}export{jo as VibemonPage};
1
+ import{zt}from"../../../chunk-enze3bpk.js";import"../../../chunk-3rpgxz1z.js";import"../../../chunk-hscsc9kx.js";import"../../../chunk-7pdpmxg2.js";import"../../../chunk-pwsarey8.js";import"../../../chunk-m3e7wah7.js";import"../../../chunk-b7v6g7a0.js";import"../../../chunk-4mwvph27.js";import"../../../chunk-1agdfzjz.js";import"../../../chunk-rfxpf1eq.js";import"../../../chunk-zkwggfj2.js";import"../../../chunk-x61q358n.js";import"../../../chunk-bcyk6es8.js";import"../../../chunk-g8nah79y.js";import"../../../chunk-rrhhytq1.js";import"../../../chunk-h994ssre.js";import"../../../chunk-t858h8ch.js";import"../../../chunk-mfrnyj0b.js";import"../../../chunk-j2922k42.js";import"../../../chunk-qd5jhh2h.js";import"../../../chunk-wfsdbf7j.js";import"../../../chunk-xrw9s1th.js";import"../../../chunk-t6snsees.js";import"../../../chunk-w5yer870.js";import"../../../chunk-mjsqb1wk.js";import"../../../chunk-tvmvzc41.js";import"../../../chunk-6t0bw1wy.js";import"../../../chunk-j03we9jz.js";import"../../../chunk-b5zfgr86.js";import"../../../chunk-6f02m6jw.js";import"../../../chunk-pe1mn10v.js";import"../../../chunk-vt1sfk87.js";import"../../../chunk-jppe84sk.js";import"../../../chunk-jampyjt1.js";import"../../../chunk-ctvwa8d3.js";import"../../../chunk-01py4vpp.js";import"../../../chunk-wa475kmq.js";import"../../../chunk-khnyadsg.js";import"../../../chunk-pbwt3qj9.js";import"../../../chunk-41jxjz9n.js";import"../../../chunk-htw56xtp.js";import"../../../chunk-9h4j75af.js";import"../../../chunk-v9czb1e6.js";import"../../../chunk-qy364wgy.js";import"../../../chunk-afy09ajr.js";import"../../../chunk-3amxesw3.js";import"../../../chunk-nbfhs21c.js";import"../../../chunk-ax8zmvs0.js";import"../../../chunk-rerywpwe.js";import"../../../chunk-4gegjx79.js";export{zt as VibemonPage};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as t}from"react/jsx-runtime";function n({backdrop:i,children:s}){return t("div",{className:"[container-type:size] relative h-full w-full overflow-hidden bg-[#0E0750]",children:[i,e("div",{className:"absolute inset-0 flex items-center justify-center",children:e("div",{"data-testid":"vibemon-stage",className:"[container-type:size] relative",style:{width:"min(100cqw, 160cqh)",aspectRatio:"8 / 5"},children:s})})]})}export{n as VibemonScene};
1
+ import{p}from"../../../chunk-w5yer870.js";export{p as VibemonScene};
@@ -1 +1 @@
1
- import{jsx as h,jsxs as q}from"react/jsx-runtime";import{useLayoutEffect as D,useRef as t,useState as M}from"react";var z=1,G=100,H=1000;function P({src:u,sources:l,playing:R=!0,active:a=!0,background:k,onFirstFrame:A,onComplete:L,onError:F}){let m=t(null),_=t(null),c=t(0),p=t(!1),I=t(u===void 0?{sources:l}:{src:u});I.current=u===void 0?{sources:l}:{src:u};let[C,y]=M(0),[O,v]=M(!1),n=u??l.map((e)=>`${e.type}:${e.src}`).join("|"),w=t(n),N=t(L),S=t(A),j=t(F);return N.current=L,S.current=A,j.current=F,D(()=>{let e=m.current;if(e===null)throw Error("Video player is not mounted");if(!a)return;if(p.current=!1,w.current!==n)c.current=0;w.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=()=>{p.current=!0};return e.addEventListener("error",i),e.load(),()=>{c.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,a]),D(()=>{let e=m.current,o=_.current;if(e===null||o===null)throw Error("Video player is not mounted");if(o.style.opacity="0",y(0),v(!1),!R){if(c.current=0,a)e.pause(),e.currentTime=0;return}if(!a)return;e.currentTime=c.current;let i=!1,s=!1,r=!1,d=!1,E=null,T=null,b=null,V=()=>{if(s||!e.duration)return;if(e.duration-e.currentTime<z)s=!0,y(1)},x=()=>{if(r)return;T=setTimeout(()=>{v(!0),y(0),b=setTimeout(()=>{if(r)return;r=!0,N.current()},H)},G)},f=()=>{if(i||r)return;r=!0,v(!0),j.current()};if(E=e.requestVideoFrameCallback(()=>{if(i||r||d||e.dataset.sourceKey!==n)return;d=!0,o.style.opacity="1",S.current()}),e.addEventListener("timeupdate",V),e.addEventListener("ended",x),e.addEventListener("error",f),p.current)f();else e.play().catch(f);return()=>{if(i=!0,e.removeEventListener("timeupdate",V),e.removeEventListener("ended",x),e.removeEventListener("error",f),E!==null)e.cancelVideoFrameCallback(E);if(T)clearTimeout(T);if(b)clearTimeout(b)}},[n,R,a]),q("div",{ref:_,"data-video-presentation":!0,className:"pointer-events-none absolute inset-0 z-20",style:{opacity:0,background:k},children:[h("video",{ref:m,"data-source-key":n,preload:"auto",muted:!0,playsInline:!0,className:"absolute inset-0 z-20 h-full w-full object-cover",style:{visibility:O?"hidden":"visible"},children:l===void 0?null:l.map((e)=>h("source",{type:e.type},`${e.type}:${e.src}`))}),h("div",{className:"pointer-events-none absolute inset-0 z-20 bg-white transition-opacity duration-1000 ease-in",style:{opacity:C}})]})}export{P as VideoFader};
1
+ import{C}from"../../../chunk-x61q358n.js";export{C as VideoFader};
@@ -1 +1 @@
1
- import{jsx as t,jsxs as a}from"react/jsx-runtime";import{useState as r}from"react";import{newTag as i,wishDefault as l,wishHover as m}from"../assets.js";import{cn as c}from"../lib/utils.js";import{Button as p}from"../ui/button.js";function w({onClick:o,className:s}){let[n,e]=r(!1);return a(p,{"aria-label":"Wish",variant:"ghost",className:c("relative size-[64px] p-0 hover:bg-transparent",s),onClick:o,onMouseEnter:()=>e(!0),onMouseLeave:()=>e(!1),children:[t("img",{src:n?m:l,alt:"",className:"absolute top-[5.439%] left-[4.863%] h-[89.122%] w-[90.27%] max-w-none object-contain select-none"}),t("img",{src:i,alt:"",className:"pointer-events-none absolute top-[4.422%] left-[50.578%] h-[26.03%] w-[49.428%] max-w-none select-none"})]})}export{w as WishButton};
1
+ import{We}from"../../../chunk-mfrnyj0b.js";import"../../../chunk-xrw9s1th.js";import"../../../chunk-mjsqb1wk.js";import"../../../chunk-tvmvzc41.js";export{We as WishButton};
@@ -1,5 +1,5 @@
1
- export { VibemonPage as PetCenter } from "./components/vibemon-page.js";
2
- export { PetWindow } from "./components/pet-window.js";
3
- export { PetQuickReply } from "./components/quick-reply.js";
4
- export { PetModeButton } from "./components/pet-mode-button.js";
5
- export { PetLounge } from "./components/pet-lounge.js";
1
+ export { VibemonPage as PetCenter } from "./components/vibemon-page";
2
+ export { PetWindow } from "./components/pet-window";
3
+ export { PetQuickReply } from "./components/quick-reply";
4
+ export { PetModeButton } from "./components/pet-mode-button";
5
+ export { PetLounge } from "./components/pet-lounge";