@alwith/module-auth 0.1.0 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +2 -2
- package/README.md +35 -1
- package/THIRD_PARTY_NOTICES.md +32 -2
- package/assets/pets/assets/fonts/GrowYear.woff2 +0 -0
- package/assets/pets/assets/fonts/Outfit-Variable.woff2 +0 -0
- package/assets/pets/card-draw/add-to-album-active.png +0 -0
- package/assets/pets/card-draw/add-to-album-default.png +0 -0
- package/assets/pets/card-draw/add-to-album-hover.png +0 -0
- package/assets/pets/card-draw/album-bg.webp +0 -0
- package/assets/pets/card-draw/album-icon.png +0 -0
- package/assets/pets/card-draw/card-back.webp +0 -0
- package/assets/pets/card-draw/card-star.svg +13 -0
- package/assets/pets/card-draw/dialog-close.png +0 -0
- package/assets/pets/card-draw/download.svg +3 -0
- package/assets/pets/card-draw/empty-pet.png +0 -0
- package/assets/pets/card-draw/gem-plus.svg +4 -0
- package/assets/pets/card-draw/gem.svg +23 -0
- package/assets/pets/card-draw/new-tag.svg +14 -0
- package/assets/pets/card-draw/not-enough-dialog.png +0 -0
- package/assets/pets/card-draw/placeholder-card.png +0 -0
- package/assets/pets/card-draw/proceed-active.png +0 -0
- package/assets/pets/card-draw/proceed-default.png +0 -0
- package/assets/pets/card-draw/proceed-hover.png +0 -0
- package/assets/pets/card-draw/pull-0-active.png +0 -0
- package/assets/pets/card-draw/pull-0-default.png +0 -0
- package/assets/pets/card-draw/pull-0-hover.png +0 -0
- package/assets/pets/card-draw/pull-160-active.png +0 -0
- package/assets/pets/card-draw/pull-160-default.png +0 -0
- package/assets/pets/card-draw/pull-160-hover.png +0 -0
- package/assets/pets/card-draw/pull-1600-active.png +0 -0
- package/assets/pets/card-draw/pull-1600-default.png +0 -0
- package/assets/pets/card-draw/pull-1600-hover.png +0 -0
- package/assets/pets/card-draw/pull-album-icon-transparent.png +0 -0
- package/assets/pets/card-draw/pull-back-transparent.png +0 -0
- package/assets/pets/card-draw/pull-gem.svg +27 -0
- package/assets/pets/card-draw/pull-page-background.png +0 -0
- package/assets/pets/card-draw/pull-texture.png +0 -0
- package/assets/pets/card-draw/pull-vibemon-icon-transparent.png +0 -0
- package/assets/pets/card-draw/rarity-bg-sr.webp +0 -0
- package/assets/pets/card-draw/rarity-bg-ssr.webp +0 -0
- package/assets/pets/card-draw/result-aura.webp +0 -0
- package/assets/pets/card-draw/stage.webp +0 -0
- package/assets/pets/card-draw/wish-default.png +0 -0
- package/assets/pets/card-draw/wish.webp +0 -0
- package/assets/pets/vibemon/album/arrow.svg +12 -0
- package/assets/pets/vibemon/album/book.webp +0 -0
- package/assets/pets/vibemon/album/logo.webp +0 -0
- package/assets/pets/vibemon/album/page-bg.webp +0 -0
- package/assets/pets/vibemon/burst-sheet.png +0 -0
- package/assets/pets/vibemon/chick-armor/config.json +61 -0
- package/assets/pets/vibemon/chick-armor/sprite-sheet.webp +0 -0
- package/assets/pets/vibemon/chick-classic/config.json +61 -0
- package/assets/pets/vibemon/chick-classic/sprite-sheet.webp +0 -0
- package/assets/pets/vibemon/default-cat/config.json +37 -0
- package/assets/pets/vibemon/default-cat/sprite-sheet.png +0 -0
- package/assets/pets/vibemon/dino-cole-f/config.json +137 -0
- package/assets/pets/vibemon/dino-cole-f/sprite-sheet.png +0 -0
- package/assets/pets/vibemon/dino-cole-m/config.json +137 -0
- package/assets/pets/vibemon/dino-cole-m/sprite-sheet.png +0 -0
- package/assets/pets/vibemon/dino-doux-f/config.json +137 -0
- package/assets/pets/vibemon/dino-doux-f/sprite-sheet.png +0 -0
- package/assets/pets/vibemon/dino-kira-f/config.json +137 -0
- package/assets/pets/vibemon/dino-kira-f/sprite-sheet.png +0 -0
- package/assets/pets/vibemon/dino-kira-m/config.json +137 -0
- package/assets/pets/vibemon/dino-kira-m/sprite-sheet.png +0 -0
- package/assets/pets/vibemon/dino-kuro-f/config.json +137 -0
- package/assets/pets/vibemon/dino-kuro-f/sprite-sheet.png +0 -0
- package/assets/pets/vibemon/dino-kuro-m/config.json +137 -0
- package/assets/pets/vibemon/dino-kuro-m/sprite-sheet.png +0 -0
- package/assets/pets/vibemon/dino-loki-f/config.json +137 -0
- package/assets/pets/vibemon/dino-loki-f/sprite-sheet.png +0 -0
- package/assets/pets/vibemon/dino-loki-m/config.json +137 -0
- package/assets/pets/vibemon/dino-loki-m/sprite-sheet.png +0 -0
- package/assets/pets/vibemon/dino-mono-f/config.json +137 -0
- package/assets/pets/vibemon/dino-mono-f/sprite-sheet.png +0 -0
- package/assets/pets/vibemon/dino-mono-m/config.json +137 -0
- package/assets/pets/vibemon/dino-mono-m/sprite-sheet.png +0 -0
- package/assets/pets/vibemon/dino-mort-f/config.json +137 -0
- package/assets/pets/vibemon/dino-mort-f/sprite-sheet.png +0 -0
- package/assets/pets/vibemon/dino-nico-f/config.json +137 -0
- package/assets/pets/vibemon/dino-nico-f/sprite-sheet.png +0 -0
- package/assets/pets/vibemon/dino-nico-m/config.json +137 -0
- package/assets/pets/vibemon/dino-nico-m/sprite-sheet.png +0 -0
- package/assets/pets/vibemon/dino-olaf-f/config.json +137 -0
- package/assets/pets/vibemon/dino-olaf-f/sprite-sheet.png +0 -0
- package/assets/pets/vibemon/dino-olaf-m/config.json +137 -0
- package/assets/pets/vibemon/dino-olaf-m/sprite-sheet.png +0 -0
- package/assets/pets/vibemon/dino-purple-horn/config.json +35 -0
- package/assets/pets/vibemon/dino-purple-horn/sprite-sheet.webp +0 -0
- package/assets/pets/vibemon/dino-sena-f/config.json +137 -0
- package/assets/pets/vibemon/dino-sena-f/sprite-sheet.png +0 -0
- package/assets/pets/vibemon/dino-sena-m/config.json +137 -0
- package/assets/pets/vibemon/dino-sena-m/sprite-sheet.png +0 -0
- package/assets/pets/vibemon/dino-tard-f/config.json +137 -0
- package/assets/pets/vibemon/dino-tard-f/sprite-sheet.png +0 -0
- package/assets/pets/vibemon/dino-vita-f/config.json +137 -0
- package/assets/pets/vibemon/dino-vita-f/sprite-sheet.png +0 -0
- package/assets/pets/vibemon/equip/page-bg.webp +0 -0
- package/assets/pets/vibemon/equip/single-pet-toast.png +0 -0
- package/assets/pets/vibemon/guide/arrow.svg +29 -0
- package/assets/pets/vibemon/guide/bubble-texture-home.png +0 -0
- package/assets/pets/vibemon/guide/bubble-texture-pull.png +0 -0
- package/assets/pets/vibemon/guide/hand-shape.svg +3 -0
- package/assets/pets/vibemon/guide/hand-sheen.png +0 -0
- package/assets/pets/vibemon/guide/hand.svg +10 -0
- package/assets/pets/vibemon/guide/mascot.png +0 -0
- package/assets/pets/vibemon/guide/ring.svg +41 -0
- package/assets/pets/vibemon/home/album-icon-hover.png +0 -0
- package/assets/pets/vibemon/home/album-icon.png +0 -0
- package/assets/pets/vibemon/home/album-text.png +0 -0
- package/assets/pets/vibemon/home/home-bg-bak.webp +0 -0
- package/assets/pets/vibemon/home/home-bg.webp +0 -0
- package/assets/pets/vibemon/home/intro.mp4 +0 -0
- package/assets/pets/vibemon/home/pull.mp4 +0 -0
- package/assets/pets/vibemon/home/pull.webm +0 -0
- package/assets/pets/vibemon/home/vibemon-icon-hover.png +0 -0
- package/assets/pets/vibemon/home/vibemon-icon.png +0 -0
- package/assets/pets/vibemon/home/vibemon-text.png +0 -0
- package/assets/pets/vibemon/home/wish-icon-hover.png +0 -0
- package/assets/pets/vibemon/home/wish-icon.png +0 -0
- package/assets/pets/vibemon/home/wish-text.png +0 -0
- package/assets/pets/vibemon/loading/background.webp +0 -0
- package/assets/pets/vibemon/loading/logo.webp +0 -0
- package/assets/pets/vibemon/multi-draw/bg-sr.png +0 -0
- package/assets/pets/vibemon/multi-draw/bg-ssr.png +0 -0
- package/dist/client.d.ts +1 -1
- package/dist/pets/assets.d.ts +35 -0
- package/dist/pets/assets.js +1 -0
- package/dist/pets/client.d.ts +12 -0
- package/dist/pets/client.js +1 -0
- package/dist/pets/core/engine.d.ts +63 -0
- package/dist/pets/core/engine.js +1 -0
- package/dist/pets/core/host.d.ts +112 -0
- package/dist/pets/core/host.js +1 -0
- package/dist/pets/core/index.d.ts +11 -0
- package/dist/pets/core/index.js +1 -0
- package/dist/pets/core/lib/account-state.d.ts +6 -0
- package/dist/pets/core/lib/account-state.js +1 -0
- package/dist/pets/core/lib/bubble-outline.d.ts +18 -0
- package/dist/pets/core/lib/bubble-outline.js +1 -0
- package/dist/pets/core/lib/draw-result.d.ts +22 -0
- package/dist/pets/core/lib/draw-result.js +1 -0
- package/dist/pets/core/lib/endpoints.d.ts +9 -0
- package/dist/pets/core/lib/endpoints.js +1 -0
- package/dist/pets/core/lib/gacha-pools.d.ts +28 -0
- package/dist/pets/core/lib/gacha-pools.js +1 -0
- package/dist/pets/core/lib/loading-progress.d.ts +2 -0
- package/dist/pets/core/lib/loading-progress.js +1 -0
- package/dist/pets/core/lib/pet-animation-sync.d.ts +20 -0
- package/dist/pets/core/lib/pet-animation-sync.js +1 -0
- package/dist/pets/core/lib/pet-bubble-state.d.ts +22 -0
- package/dist/pets/core/lib/pet-bubble-state.js +1 -0
- package/dist/pets/core/lib/pet-drag.d.ts +3 -0
- package/dist/pets/core/lib/pet-drag.js +1 -0
- package/dist/pets/core/lib/pet-presentation.d.ts +6 -0
- package/dist/pets/core/lib/pet-presentation.js +1 -0
- package/dist/pets/core/lib/pet-session-context.d.ts +14 -0
- package/dist/pets/core/lib/pet-session-context.js +1 -0
- package/dist/pets/core/lib/preload-images.d.ts +1 -0
- package/dist/pets/core/lib/preload-images.js +1 -0
- package/dist/pets/core/lib/presentation-readiness.d.ts +15 -0
- package/dist/pets/core/lib/presentation-readiness.js +1 -0
- package/dist/pets/core/lib/rarity.d.ts +2 -0
- package/dist/pets/core/lib/rarity.js +1 -0
- package/dist/pets/core/lib/recharge.d.ts +1 -0
- package/dist/pets/core/lib/recharge.js +1 -0
- package/dist/pets/core/lib/reply-submission.d.ts +10 -0
- package/dist/pets/core/lib/reply-submission.js +1 -0
- package/dist/pets/core/lib/resource-sync.d.ts +8 -0
- package/dist/pets/core/lib/resource-sync.js +1 -0
- package/dist/pets/core/lib/runtime-types.d.ts +1 -0
- package/dist/pets/core/lib/runtime-types.js +0 -0
- package/dist/pets/core/lib/settings.d.ts +22 -0
- package/dist/pets/core/lib/settings.js +1 -0
- package/dist/pets/core/lib/sprite-config.d.ts +4 -0
- package/dist/pets/core/lib/sprite-config.js +1 -0
- package/dist/pets/core/lib/vibemon-resources.d.ts +3 -0
- package/dist/pets/core/lib/vibemon-resources.js +1 -0
- package/dist/pets/core/lib/view-request.d.ts +4 -0
- package/dist/pets/core/lib/view-request.js +1 -0
- package/dist/pets/core/lib/window-frame.d.ts +14 -0
- package/dist/pets/core/lib/window-frame.js +1 -0
- package/dist/pets/core/lib/window-manager.d.ts +3 -0
- package/dist/pets/core/lib/window-manager.js +1 -0
- package/dist/pets/core/session-icon.d.ts +2 -0
- package/dist/pets/core/session-icon.js +5 -0
- package/dist/pets/core/types.d.ts +68 -0
- package/dist/pets/core/types.js +1 -0
- package/dist/pets/host.d.ts +25 -0
- package/dist/pets/host.js +1 -0
- package/dist/pets/index.d.ts +6 -0
- package/dist/pets/index.js +1 -0
- package/dist/pets/react/assets.d.ts +60 -0
- package/dist/pets/react/assets.js +1 -0
- package/dist/pets/react/components/album-view.d.ts +10 -0
- package/dist/pets/react/components/album-view.js +1 -0
- package/dist/pets/react/components/back-to-home.d.ts +7 -0
- package/dist/pets/react/components/back-to-home.js +1 -0
- package/dist/pets/react/components/equip-view.d.ts +18 -0
- package/dist/pets/react/components/equip-view.js +1 -0
- package/dist/pets/react/components/gem-balance.d.ts +7 -0
- package/dist/pets/react/components/gem-balance.js +1 -0
- package/dist/pets/react/components/home-view.d.ts +6 -0
- package/dist/pets/react/components/home-view.js +1 -0
- package/dist/pets/react/components/insufficient-points-dialog.d.ts +4 -0
- package/dist/pets/react/components/insufficient-points-dialog.js +1 -0
- package/dist/pets/react/components/intro-overlay.d.ts +5 -0
- package/dist/pets/react/components/intro-overlay.js +1 -0
- package/dist/pets/react/components/loading-view.d.ts +4 -0
- package/dist/pets/react/components/loading-view.js +1 -0
- package/dist/pets/react/components/lounge-burst.css +38 -0
- package/dist/pets/react/components/onboarding-guide.d.ts +3 -0
- package/dist/pets/react/components/onboarding-guide.js +1 -0
- package/dist/pets/react/components/pet-bubble-background.d.ts +7 -0
- package/dist/pets/react/components/pet-bubble-background.js +1 -0
- package/dist/pets/react/components/pet-mode-button.d.ts +4 -0
- package/dist/pets/react/components/pet-mode-button.js +1 -0
- package/dist/pets/react/components/pet-window.d.ts +2 -0
- package/dist/pets/react/components/pet-window.js +1 -0
- package/dist/pets/react/components/pull-overlay.d.ts +9 -0
- package/dist/pets/react/components/pull-overlay.js +1 -0
- package/dist/pets/react/components/pull-video.d.ts +7 -0
- package/dist/pets/react/components/pull-video.js +1 -0
- package/dist/pets/react/components/pull-view.d.ts +16 -0
- package/dist/pets/react/components/pull-view.js +1 -0
- package/dist/pets/react/components/quick-reply.d.ts +3 -0
- package/dist/pets/react/components/quick-reply.js +2 -0
- package/dist/pets/react/components/session-icon.d.ts +6 -0
- package/dist/pets/react/components/session-icon.js +1 -0
- package/dist/pets/react/components/single-pet-toast.d.ts +6 -0
- package/dist/pets/react/components/single-pet-toast.js +1 -0
- package/dist/pets/react/components/sprite-renderer.d.ts +16 -0
- package/dist/pets/react/components/sprite-renderer.js +1 -0
- package/dist/pets/react/components/vibemon-empty-state.d.ts +3 -0
- package/dist/pets/react/components/vibemon-empty-state.js +1 -0
- package/dist/pets/react/components/vibemon-header.d.ts +16 -0
- package/dist/pets/react/components/vibemon-header.js +1 -0
- package/dist/pets/react/components/vibemon-page.d.ts +1 -0
- package/dist/pets/react/components/vibemon-page.js +1 -0
- package/dist/pets/react/components/vibemon-scene.d.ts +5 -0
- package/dist/pets/react/components/vibemon-scene.js +1 -0
- package/dist/pets/react/components/video-fader.d.ts +23 -0
- package/dist/pets/react/components/video-fader.js +1 -0
- package/dist/pets/react/components/wish-button.d.ts +4 -0
- package/dist/pets/react/components/wish-button.js +1 -0
- package/dist/pets/react/index.d.ts +4 -0
- package/dist/pets/react/index.js +1 -0
- package/dist/pets/react/lib/account-state.d.ts +2 -0
- package/dist/pets/react/lib/account-state.js +1 -0
- package/dist/pets/react/lib/card-image.d.ts +1 -0
- package/dist/pets/react/lib/card-image.js +1 -0
- package/dist/pets/react/lib/resource-sync.d.ts +5 -0
- package/dist/pets/react/lib/resource-sync.js +1 -0
- package/dist/pets/react/lib/utils.d.ts +1 -0
- package/dist/pets/react/lib/utils.js +1 -0
- package/dist/pets/react/locales.d.ts +144 -0
- package/dist/pets/react/locales.js +1 -0
- package/dist/pets/react/styles.css +15 -0
- package/dist/pets/react/ui/button.d.ts +8 -0
- package/dist/pets/react/ui/button.js +1 -0
- package/dist/pets/react/ui/card.d.ts +11 -0
- package/dist/pets/react/ui/card.js +1 -0
- package/dist/pets/react/ui/input-group.d.ts +16 -0
- package/dist/pets/react/ui/input-group.js +1 -0
- package/dist/pets/react/ui/textarea.d.ts +3 -0
- package/dist/pets/react/ui/textarea.js +1 -0
- package/dist/pets/resources.d.ts +30 -0
- package/dist/pets/resources.js +1 -0
- package/dist/pets/selection.d.ts +7 -0
- package/dist/pets/selection.js +1 -0
- package/dist/pets/types.d.ts +221 -0
- package/dist/pets/types.js +0 -0
- package/package.json +52 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type { RunState } from "../host.js";
|
|
File without changes
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type VibemonOnboardingStep = "home-wish" | "free-draw" | "view-album" | "album-equip" | "done";
|
|
2
|
+
export interface PetAccountState {
|
|
3
|
+
pet: string;
|
|
4
|
+
enabled: boolean;
|
|
5
|
+
position: {
|
|
6
|
+
x: number;
|
|
7
|
+
y: number;
|
|
8
|
+
} | null;
|
|
9
|
+
}
|
|
10
|
+
export interface Settings {
|
|
11
|
+
"vibemon.accounts": Record<string, PetAccountState>;
|
|
12
|
+
"vibemon.introSeen": Record<string, boolean>;
|
|
13
|
+
"vibemon.albumHasUnseen": Record<string, boolean>;
|
|
14
|
+
"vibemon.onboardingStep": Record<string, VibemonOnboardingStep>;
|
|
15
|
+
}
|
|
16
|
+
export declare function refreshSettings(): Promise<void>;
|
|
17
|
+
export declare function initializeSettings(): Promise<() => void>;
|
|
18
|
+
export declare const subscribeSettings: (listener: () => void) => () => void;
|
|
19
|
+
export declare const getSettingSync: <K extends keyof Settings>(key: K) => Settings[K];
|
|
20
|
+
export declare const getSetting: <K extends keyof Settings>(key: K) => Promise<Settings[K]>;
|
|
21
|
+
export declare function updateSettingCache<K extends keyof Settings>(key: K, value: Settings[K]): void;
|
|
22
|
+
export declare function setSetting<K extends keyof Settings>(key: K, value: Settings[K]): Promise<void>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{vibemonHost as s}from"../host.js";var e={"vibemon.accounts":{},"vibemon.introSeen":{},"vibemon.albumHasUnseen":{},"vibemon.onboardingStep":{}},i=new Set,r=0;async function c(){let t=++r,n=s(),a=await Promise.all(Object.keys(e).map(async(o)=>[o,await n.storage.get(o)??{}]));if(r!==t)return;e=Object.fromEntries(a);for(let o of i)o()}async function p(){let t=s().subscribeStorage(()=>{c().catch(s().onError)});return await c(),()=>{r++,t()}}var b=(t)=>(i.add(t),()=>{i.delete(t)}),u=(t)=>e[t],f=async(t)=>e[t];function S(t,n){r++,e={...e,[t]:n};for(let a of i)a()}async function m(t,n){await s().storage.set(t,n),await c()}export{f as getSetting,u as getSettingSync,p as initializeSettings,c as refreshSettings,m as setSetting,b as subscribeSettings,S as updateSettingCache};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { CachedPetMetadata, SheetLayout } from "../../index.js";
|
|
2
|
+
import type { VibemonSpriteConfig } from "../types.js";
|
|
3
|
+
export declare function createSpriteConfig(name: string, sheetName: string, layout: SheetLayout): VibemonSpriteConfig;
|
|
4
|
+
export declare function spriteConfig(id: string, resource: CachedPetMetadata): VibemonSpriteConfig;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var m={working:{fps:7,loop:!0},empty:{fps:6,loop:!0},done:{fps:7,loop:!1},wait:{fps:7,loop:!0},drag:{fps:7,loop:!0},error:{fps:7,loop:!0},hover:{fps:6,loop:!0}};function f(p,t,i){let n=i.states.map((o)=>o.id),e=(...o)=>o.find((a)=>n.includes(a))??n[0],s={idle:e("empty","working"),"idle-alt":e("empty","working"),groom:e("empty","working"),"groom-alt":e("empty","working"),run:e("drag","working"),sleep:e("empty","working"),sit:e("working","empty"),interact:e("done","hover","empty"),jump:e("done","empty"),scared:e("drag","empty"),wait:e("wait","empty"),error:e("error","wait","empty"),hover:e("hover","empty")},r=i.frameWidth;return{name:p,frameSize:r,renderSize:r,cropX:0,cropY:0,cropW:r,cropH:r,spritesheet:t,facing:"right",behaviorMap:s,states:i.states.map((o)=>({...o,...m[o.id]??{fps:6,loop:!0}}))}}function g(p,t){if(t.config!==void 0)return t.config;return f(t.name??p,t.sheetName,t.layout)}export{f as createSpriteConfig,g as spriteConfig};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{vibemonHost as c}from"../host.js";import{spriteConfig as a}from"./sprite-config.js";async function l(e){return await c().assets.resources.inspect(e)!==null}async function b(e){let o=c().assets,t=await o.resources.cached(e)??await o.ensureResource(e),s=t.sheet,n=s[0]===137&&s[1]===80,r=URL.createObjectURL(new Blob([s.slice().buffer],{type:n?"image/png":"image/webp"}));return{config:a(e,t),spriteUrl:r,dispose:()=>URL.revokeObjectURL(r)}}export{b as loadVibemonResource,l as verifyVibemonResource};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export type VibemonViewRequest = "auto" | "pull" | "equip";
|
|
2
|
+
export declare function requestVibemonView(request: VibemonViewRequest): void;
|
|
3
|
+
export declare function consumePendingVibemonView(): VibemonViewRequest | null;
|
|
4
|
+
export declare function onVibemonViewRequest(listener: (request: VibemonViewRequest) => void): () => void;
|
|
@@ -0,0 +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};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type Monitor } from "../host.js";
|
|
2
|
+
export declare const availableMonitors: () => Promise<Monitor[]>;
|
|
3
|
+
export declare const getCurrentWindow: () => {
|
|
4
|
+
outerPosition: () => Promise<{
|
|
5
|
+
x: number;
|
|
6
|
+
y: number;
|
|
7
|
+
}>;
|
|
8
|
+
outerSize: () => Promise<{
|
|
9
|
+
width: number;
|
|
10
|
+
height: number;
|
|
11
|
+
}>;
|
|
12
|
+
scaleFactor: () => Promise<number>;
|
|
13
|
+
};
|
|
14
|
+
export declare const moveVibemonWindow: (x: number, y: number) => Promise<void>;
|
|
@@ -0,0 +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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{vibemonHost as n}from"../host.js";var i=(o={})=>n().windows.openPet(o);export{i as openVibemonWindow};
|
|
@@ -0,0 +1,5 @@
|
|
|
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};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
export interface VibemonSpriteState {
|
|
2
|
+
id: string;
|
|
3
|
+
row: number;
|
|
4
|
+
frames: number;
|
|
5
|
+
fps: number;
|
|
6
|
+
loop: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface VibemonBehaviorMap {
|
|
9
|
+
idle: string;
|
|
10
|
+
"idle-alt": string;
|
|
11
|
+
groom: string;
|
|
12
|
+
"groom-alt": string;
|
|
13
|
+
run: string;
|
|
14
|
+
sleep: string;
|
|
15
|
+
sit: string;
|
|
16
|
+
interact: string;
|
|
17
|
+
jump: string;
|
|
18
|
+
scared: string;
|
|
19
|
+
wait: string;
|
|
20
|
+
error?: string;
|
|
21
|
+
hover?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare const DEFAULT_VIBEMON_WINDOW_SIZE = 200;
|
|
24
|
+
export declare const DEFAULT_VIBEMON_BUBBLE_HEIGHT = 320;
|
|
25
|
+
export interface VibemonSpriteConfig {
|
|
26
|
+
name: string;
|
|
27
|
+
frameSize: number;
|
|
28
|
+
renderSize: number;
|
|
29
|
+
cropX: number;
|
|
30
|
+
cropY: number;
|
|
31
|
+
cropW: number;
|
|
32
|
+
cropH: number;
|
|
33
|
+
spritesheet: string;
|
|
34
|
+
windowSize?: number;
|
|
35
|
+
bubbleAreaHeight?: number;
|
|
36
|
+
facing?: "left" | "right";
|
|
37
|
+
source?: string;
|
|
38
|
+
license?: string;
|
|
39
|
+
attribution?: string;
|
|
40
|
+
behaviorMap: VibemonBehaviorMap;
|
|
41
|
+
hatchSequence?: [
|
|
42
|
+
string,
|
|
43
|
+
number
|
|
44
|
+
][];
|
|
45
|
+
states: VibemonSpriteState[];
|
|
46
|
+
}
|
|
47
|
+
export interface VibemonNotification {
|
|
48
|
+
type: "task-complete" | "task-error" | "running" | "info" | "idle";
|
|
49
|
+
message: string;
|
|
50
|
+
sourceWindow: string;
|
|
51
|
+
}
|
|
52
|
+
export type VibemonTaskStatus = "running" | "done" | "requires_action";
|
|
53
|
+
export interface VibemonTask {
|
|
54
|
+
id: string;
|
|
55
|
+
sourceWindow: string;
|
|
56
|
+
title: string;
|
|
57
|
+
reasoning: string;
|
|
58
|
+
status: VibemonTaskStatus;
|
|
59
|
+
failed: boolean;
|
|
60
|
+
}
|
|
61
|
+
export interface VibemonTaskMeta {
|
|
62
|
+
id: string;
|
|
63
|
+
sourceWindow: string;
|
|
64
|
+
title?: string;
|
|
65
|
+
reasoning?: string;
|
|
66
|
+
error?: boolean;
|
|
67
|
+
}
|
|
68
|
+
export type VibemonBehavior = keyof VibemonBehaviorMap;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var E=200,_=320;export{_ as DEFAULT_VIBEMON_BUBBLE_HEIGHT,E as DEFAULT_VIBEMON_WINDOW_SIZE};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface PetAccount {
|
|
2
|
+
apiHost: string;
|
|
3
|
+
userId: string;
|
|
4
|
+
revision: number;
|
|
5
|
+
}
|
|
6
|
+
export interface PetStorage {
|
|
7
|
+
get<T>(key: string): Promise<T | null | undefined>;
|
|
8
|
+
set(key: string, value: unknown): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export interface PetResourceIO {
|
|
11
|
+
exists(path: string): Promise<boolean>;
|
|
12
|
+
read(path: string): Promise<Uint8Array | null>;
|
|
13
|
+
write(path: string, bytes: Uint8Array): Promise<void>;
|
|
14
|
+
replace(temporary: string, destination: string): Promise<void>;
|
|
15
|
+
remove(path: string): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
export interface PetAssetsHost {
|
|
18
|
+
account(): PetAccount | null;
|
|
19
|
+
request<T>(path: string, method: "GET" | "POST", body?: unknown): Promise<T>;
|
|
20
|
+
storage: PetStorage;
|
|
21
|
+
resources: PetResourceIO;
|
|
22
|
+
download(url: string, signal: AbortSignal): Promise<Uint8Array>;
|
|
23
|
+
}
|
|
24
|
+
export declare function accountKey(account: PetAccount): string;
|
|
25
|
+
export declare function assertAccount(host: Pick<PetAssetsHost, "account">, expected: PetAccount): void;
|
|
@@ -0,0 +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};
|
|
@@ -0,0 +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";
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export declare const homeHotspotAssets: {
|
|
2
|
+
readonly vibemon: {
|
|
3
|
+
readonly icon: string;
|
|
4
|
+
readonly hover: string;
|
|
5
|
+
readonly text: string;
|
|
6
|
+
};
|
|
7
|
+
readonly wish: {
|
|
8
|
+
readonly icon: string;
|
|
9
|
+
readonly hover: string;
|
|
10
|
+
readonly text: string;
|
|
11
|
+
};
|
|
12
|
+
readonly album: {
|
|
13
|
+
readonly icon: string;
|
|
14
|
+
readonly hover: string;
|
|
15
|
+
readonly text: string;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
export declare const proceedButtonAssets: {
|
|
19
|
+
readonly default: string;
|
|
20
|
+
readonly hover: string;
|
|
21
|
+
readonly active: string;
|
|
22
|
+
};
|
|
23
|
+
export declare const homeBackground: string;
|
|
24
|
+
export declare const introVideo: string;
|
|
25
|
+
export declare const pullVideoMp4: string;
|
|
26
|
+
export declare const pullVideoWebm: string;
|
|
27
|
+
export declare const guideArrow: string;
|
|
28
|
+
export declare const guideHomeTexture: string;
|
|
29
|
+
export declare const guidePullTexture: string;
|
|
30
|
+
export declare const guideMascot: string;
|
|
31
|
+
export declare const guideHand: string;
|
|
32
|
+
export declare const guideHandShape: string;
|
|
33
|
+
export declare const guideHandSheen: string;
|
|
34
|
+
export declare const guideRing: string;
|
|
35
|
+
export declare const albumArrow: string;
|
|
36
|
+
export declare const albumBook: string;
|
|
37
|
+
export declare const albumPageBackground: string;
|
|
38
|
+
export declare const equipPageBackground: string;
|
|
39
|
+
export declare const singlePetToast: string;
|
|
40
|
+
export declare const loadingBackground: string;
|
|
41
|
+
export declare const loadingLogo: string;
|
|
42
|
+
export declare const multiDrawSrBackground: string;
|
|
43
|
+
export declare const multiDrawSsrBackground: string;
|
|
44
|
+
export declare const wishHover: string;
|
|
45
|
+
export declare const wishDefault: string;
|
|
46
|
+
export declare const newTag: string;
|
|
47
|
+
export declare const insufficientPointsDialog: string;
|
|
48
|
+
export declare const dialogClose: string;
|
|
49
|
+
export declare const emptyPet: string;
|
|
50
|
+
export declare const gem: string;
|
|
51
|
+
export declare const gemPlus: string;
|
|
52
|
+
export declare const pullTexture: string;
|
|
53
|
+
export declare const pullGem: string;
|
|
54
|
+
export declare const pullPageBackground: string;
|
|
55
|
+
export declare const pullBack: string;
|
|
56
|
+
export declare const pullVibemonIcon: string;
|
|
57
|
+
export declare const pullAlbumIcon: string;
|
|
58
|
+
export declare const albumIcon: string;
|
|
59
|
+
export declare const placeholderCard: string;
|
|
60
|
+
export declare const resultAura: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import o from"../../../assets/pets/vibemon/home/home-bg.webp?url";import r from"../../../assets/pets/vibemon/home/intro.mp4?url&no-inline";import t from"../../../assets/pets/vibemon/home/pull.mp4?url&no-inline";import e from"../../../assets/pets/vibemon/home/pull.webm?url&no-inline";import m from"../../../assets/pets/vibemon/guide/arrow.svg?url";import p from"../../../assets/pets/vibemon/guide/bubble-texture-home.png?url";import i from"../../../assets/pets/vibemon/guide/bubble-texture-pull.png?url";import l from"../../../assets/pets/vibemon/guide/mascot.png?url";import n from"../../../assets/pets/vibemon/guide/hand.svg?url";import u from"../../../assets/pets/vibemon/guide/hand-shape.svg?url";import c from"../../../assets/pets/vibemon/guide/hand-sheen.png?url";import s from"../../../assets/pets/vibemon/guide/ring.svg?url";import a from"../../../assets/pets/vibemon/album/arrow.svg?url";import f from"../../../assets/pets/vibemon/album/book.webp?url";import d from"../../../assets/pets/vibemon/album/page-bg.webp?url";import g from"../../../assets/pets/vibemon/equip/page-bg.webp?url";import x from"../../../assets/pets/vibemon/equip/single-pet-toast.png?url";import U from"../../../assets/pets/vibemon/loading/background.webp?url";import h from"../../../assets/pets/vibemon/loading/logo.webp?url";import b from"../../../assets/pets/vibemon/multi-draw/bg-sr.png?url";import B from"../../../assets/pets/vibemon/multi-draw/bg-ssr.png?url";import k from"../../../assets/pets/card-draw/wish.webp?url";import P from"../../../assets/pets/card-draw/wish-default.png?url";import w from"../../../assets/pets/card-draw/new-tag.svg?url";import H from"../../../assets/pets/card-draw/not-enough-dialog.png?url";import A from"../../../assets/pets/card-draw/dialog-close.png?url";import v from"../../../assets/pets/card-draw/empty-pet.png?url";import T from"../../../assets/pets/card-draw/gem.svg?url";import I from"../../../assets/pets/card-draw/gem-plus.svg?url";import V from"../../../assets/pets/card-draw/pull-texture.png?url";import D from"../../../assets/pets/card-draw/pull-gem.svg?url";import S from"../../../assets/pets/card-draw/pull-page-background.png?url";import W from"../../../assets/pets/card-draw/pull-back-transparent.png?url";import C from"../../../assets/pets/card-draw/pull-vibemon-icon-transparent.png?url";import M from"../../../assets/pets/card-draw/pull-album-icon-transparent.png?url";import q from"../../../assets/pets/card-draw/album-icon.png?url";import y from"../../../assets/pets/card-draw/placeholder-card.png?url";import G from"../../../assets/pets/card-draw/result-aura.webp?url";import L from"../../../assets/pets/vibemon/home/vibemon-icon.png?url";import R from"../../../assets/pets/vibemon/home/vibemon-icon-hover.png?url";import j from"../../../assets/pets/vibemon/home/vibemon-text.png?url";import z from"../../../assets/pets/vibemon/home/wish-icon.png?url";import E from"../../../assets/pets/vibemon/home/wish-icon-hover.png?url";import F from"../../../assets/pets/vibemon/home/wish-text.png?url";import J from"../../../assets/pets/vibemon/home/album-icon.png?url";import K from"../../../assets/pets/vibemon/home/album-icon-hover.png?url";import N from"../../../assets/pets/vibemon/home/album-text.png?url";import O from"../../../assets/pets/card-draw/proceed-default.png?url";import Q from"../../../assets/pets/card-draw/proceed-hover.png?url";import X from"../../../assets/pets/card-draw/proceed-active.png?url";var Qo={vibemon:{icon:L,hover:R,text:j},wish:{icon:z,hover:E,text:F},album:{icon:J,hover:K,text:N}},Xo={default:O,hover:Q,active:X},Yo=o,Zo=r,_o=t,$o=e,or=m,rr=p,tr=i,er=l,mr=n,pr=u,ir=c,lr=s,nr=a,ur=f,cr=d,sr=g,ar=x,fr=U,dr=h,gr=b,xr=B,Ur=k,hr=P,br=w,Br=H,kr=A,Pr=v,wr=T,Hr=I,Ar=V,vr=D,Tr=S,Ir=W,Vr=C,Dr=M,Sr=q,Wr=y,Cr=G;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};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { MyVibemonItem } from "../../core/lib/endpoints.js";
|
|
2
|
+
export declare function AlbumView({ onBack, onWish, onEquip, ownedCards, ownedLoaded, availablePoints, pointsLoaded }: {
|
|
3
|
+
onBack: () => void;
|
|
4
|
+
onWish: () => void;
|
|
5
|
+
onEquip: () => void;
|
|
6
|
+
ownedCards: MyVibemonItem[];
|
|
7
|
+
ownedLoaded: boolean;
|
|
8
|
+
availablePoints: number;
|
|
9
|
+
pointsLoaded: boolean;
|
|
10
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as e,jsxs as i,Fragment as c}from"react/jsx-runtime";import{albumArrow as C,albumBook as x,albumPageBackground as k}from"../assets.js";import{Loader2 as y}from"lucide-react";import{useMemo as N,useState as V}from"react";import{Button as _}from"../ui/button.js";import{cardThumb as A}from"../lib/card-image.js";import{sortByRarityDesc as P}from"../../core/lib/rarity.js";import{cn as f}from"../lib/utils.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(_,{"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:C,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:x,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]=V(0),m=N(()=>P(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:k,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(y,{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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as e,jsxs as r}from"react/jsx-runtime";import{Button as i}from"../ui/button.js";import{cn as l}from"../lib/utils.js";function d({onClick:n,className:a,disabled:t=!1,label:o="Home",iconSrc:s}){return r(i,{variant:"ghost",className:l("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};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { MyVibemonItem } from "../../core/lib/endpoints.js";
|
|
2
|
+
export declare function EquipList({ items, currentId, downloaded, onSelectedClick, onEquip }: {
|
|
3
|
+
items: MyVibemonItem[];
|
|
4
|
+
currentId: string;
|
|
5
|
+
downloaded: Record<string, boolean>;
|
|
6
|
+
onSelectedClick: () => void;
|
|
7
|
+
onEquip: (uuid: string) => void;
|
|
8
|
+
}): import("react").JSX.Element;
|
|
9
|
+
export declare function EquipView({ onBack, onWish, onAlbum, albumHasUnseen, ownedCards, ownedLoaded, availablePoints, pointsLoaded }: {
|
|
10
|
+
onBack: () => void;
|
|
11
|
+
onWish: () => void;
|
|
12
|
+
onAlbum: () => void;
|
|
13
|
+
albumHasUnseen: boolean;
|
|
14
|
+
ownedCards: MyVibemonItem[];
|
|
15
|
+
ownedLoaded: boolean;
|
|
16
|
+
availablePoints: number;
|
|
17
|
+
pointsLoaded: boolean;
|
|
18
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t,jsxs as l,Fragment as V}from"react/jsx-runtime";import{equipPageBackground as j,pullTexture as P}from"../assets.js";import{Loader2 as w}from"lucide-react";import{useCallback as T,useEffect as R,useState as g}from"react";import{useTranslation as B}from"react-i18next";import{toast as y}from"sonner";import{Button as C}from"../ui/button.js";import{openVibemonWindow as D}from"../../core/lib/window-manager.js";import{getVibemonState as I,updateVibemonState as m,useVibemonState as z}from"../lib/account-state.js";import{cardThumb as L}from"../lib/card-image.js";import{sortByRarityDesc as O}from"../../core/lib/rarity.js";import{useVibemonSyncStore as U}from"../lib/resource-sync.js";import{verifyVibemonResource as W}from"../../core/lib/vibemon-resources.js";import{SinglePetToast as A}from"./single-pet-toast.js";import{VibemonEmptyState as G}from"./vibemon-empty-state.js";import{VibemonHeader as H}from"./vibemon-header.js";import{VibemonScene as Y}from"./vibemon-scene.js";async function J(e,i){let{pet:s}=await I();if(!s){if(e.length!==1)return;let n=e.find((a)=>i[a.vibemon_uuid]);if(n)await m({pet:n.vibemon_uuid});return}if(i[s])return;let r=e.find((n)=>i[n.vibemon_uuid]);if(r)await m({pet:r.vibemon_uuid})}function K(e){if(e.icon_url===null)throw Error(`[vibemon] owned Vibemon ${e.vibemon_uuid} is missing icon_url`);return e.icon_url}function M(e){if(e.background_url===null)throw Error(`[vibemon] owned Vibemon ${e.vibemon_uuid} is missing background_url`);return e.background_url}function Q({item:e,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:[t("img",{src:M(e),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:[t("div",{className:"truncate text-[1.875cqw] leading-[1.278] text-white",style:{fontFamily:"Outfit, system-ui, sans-serif",fontWeight:900},children:e.name}),t("div",{className:"mt-[0.104cqw] truncate text-[1.042cqw] leading-[1.25] font-medium text-white",style:{fontFamily:"Outfit, system-ui, sans-serif"},children:e.description===null?e.rarity_name:e.description})]}),l(C,{"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:[t("img",{src:P,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&&t("span",{"aria-hidden":!0,className:"pointer-events-none absolute inset-0 bg-[#5D508B]"}),t("span",{"aria-hidden":!0,className:"absolute inset-0 shadow-[inset_0_0.2cqh_0.07cqh_0_white]"}),t("span",{className:"relative text-[1.458cqw] leading-normal font-normal text-white",style:{fontFamily:'"Grow Year", system-ui, sans-serif'},children:i?"selected":"select"})]})]}),t("div",{className:"absolute top-0 left-0 size-[7.917cqw] overflow-hidden rounded-full",children:t("img",{src:L(K(e)),alt:`${e.name} portrait`,className:"h-full w-full object-cover select-none"})})]})}function X({items:e,currentId:i,downloaded:s,onSelectedClick:r,onEquip:n}){return t("div",{className:"flex flex-col gap-[0.833cqw]",children:O(e).map((a)=>t(Q,{item:a,isCurrent:a.vibemon_uuid===i,isDownloaded:s[a.vibemon_uuid],onSelectedClick:r,onEquip:()=>n(a.vibemon_uuid)},a.vibemon_uuid))})}function he({onBack:e,onWish:i,onAlbum:s,albumHasUnseen:r,ownedCards:n,ownedLoaded:a,availablePoints:_,pointsLoaded:x}){let{i18n:q}=B("common"),u=q.getFixedT("en","common"),{pet:N}=z(),d=U((o)=>o.status==="checking"||o.status==="updating"),[f,k]=g({}),[S,b]=g(0),p=T(()=>b(0),[]);R(()=>{let o=!1;return(async()=>{let c=await Promise.all(n.map(async(v)=>[v.vibemon_uuid,await W(v.vibemon_uuid)]));if(o)return;let h=Object.fromEntries(c);if(k(h),!d)await J(n,h)})(),()=>{o=!0}},[n,d]);let E=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"))}},F=n.some((o)=>f[o.vibemon_uuid]);return l(Y,{backdrop:l(V,{children:[t("img",{src:j,alt:"","aria-hidden":!0,className:"pointer-events-none absolute inset-0 h-full w-full object-cover opacity-10 select-none"}),t("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:[t(H,{onBack:e,onWish:i,sectionAction:{kind:"album",onClick:s,hasUnseen:r},availablePoints:_,pointsLoaded:x}),!a?t("div",{"data-testid":"vibemon-owned-loading",className:"absolute inset-0 flex items-center justify-center text-[#DCC9FF]",children:t(w,{className:"size-8 animate-spin"})}):n.length===0?t(G,{onWish:i}):d&&!F?l("div",{className:"absolute inset-0 flex flex-col items-center justify-center gap-3 text-[#DCC9FF]",children:[t(w,{className:"size-8 animate-spin"}),t("div",{className:"text-sm",children:u("vibemon.syncPreparing")})]}):t("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:t(X,{items:n,currentId:N,downloaded:f,onSelectedClick:()=>b((o)=>o+1),onEquip:(o)=>void E(o)})}),t(A,{requestId:S,onClose:p})]})}export{X as EquipList,he as EquipView};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as a,jsxs as m}from"react/jsx-runtime";import{gem as n,gemPlus as o}from"../assets.js";import{Loader2 as i}from"lucide-react";import{Button as d}from"../ui/button.js";import{Card as c}from"../ui/card.js";import{cn as p}from"../lib/utils.js";function N({amount:e,onAdd:s,loaded:t=!0,disabled:r=!1,className:l}){return m(c,{className:p("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:n,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(i,{className:"size-4 animate-spin text-[#2A3472]/50"})}),a(d,{"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:o,alt:"",className:"size-8"})})]})}export{N as GemBalance};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as l,jsxs as c}from"react/jsx-runtime";import{homeBackground as b,homeHotspotAssets as m}from"../assets.js";import{useLayoutEffect as p,useRef as g,useState as f}from"react";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 p(()=>{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=g(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:b,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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t,jsxs as a}from"react/jsx-runtime";import{dialogClose as i,insufficientPointsDialog as r,proceedButtonAssets as l}from"../assets.js";import{useState as c}from"react";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:r,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:i,alt:"",className:"max-w-none select-none",style:{width:26,height:26}})}),t(u,{onClick:o})]})})}function u({onClick:s}){let[o,e]=c("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:l[o],alt:"",className:"max-w-none select-none",style:{width:144,height:36}})})}export{d as InsufficientPointsDialog};
|
|
@@ -0,0 +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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as e,jsxs as a}from"react/jsx-runtime";import{loadingBackground as w,loadingLogo as h}from"../assets.js";import{useEffect as x,useRef as f,useState as b}from"react";import{advanceLoadingProgress as v}from"../../core/lib/loading-progress.js";import{VibemonScene as _}from"./vibemon-scene.js";var q=98.902;function j({progress:s,onFinished:i}){let[o,g]=b(0),l=f(s);l.current=s;let c=f(i);c.current=i,x(()=>{let r=0,m=performance.now(),t=0,d=(u)=>{let p=Math.min((u-m)/1000,0.1);if(m=u,t=v(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:w,alt:"","aria-hidden":!0,className:"pointer-events-none absolute inset-0 h-full w-full object-cover select-none"}),children:[e("img",{src:h,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};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
|
|
2
|
+
@keyframes alwith-vibemon-burst {
|
|
3
|
+
|
|
4
|
+
0% {
|
|
5
|
+
background-position-x: 0;
|
|
6
|
+
}
|
|
7
|
+
22.22% {
|
|
8
|
+
background-position-x: -280px;
|
|
9
|
+
}
|
|
10
|
+
33.33% {
|
|
11
|
+
background-position-x: -560px;
|
|
12
|
+
}
|
|
13
|
+
44.44% {
|
|
14
|
+
background-position-x: -840px;
|
|
15
|
+
}
|
|
16
|
+
55.56% {
|
|
17
|
+
background-position-x: -1120px;
|
|
18
|
+
}
|
|
19
|
+
66.67% {
|
|
20
|
+
background-position-x: -1400px;
|
|
21
|
+
}
|
|
22
|
+
77.78% {
|
|
23
|
+
background-position-x: -1680px;
|
|
24
|
+
}
|
|
25
|
+
88.89% {
|
|
26
|
+
background-position-x: -1960px;
|
|
27
|
+
}
|
|
28
|
+
100% {
|
|
29
|
+
background-position-x: -1960px;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.alwith-vibemon-burst {
|
|
34
|
+
background-image: url("../../../../assets/pets/vibemon/burst-sheet.png");
|
|
35
|
+
background-repeat: no-repeat;
|
|
36
|
+
background-size: 2240px 280px;
|
|
37
|
+
animation: alwith-vibemon-burst 450ms step-end forwards;
|
|
38
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as e,jsxs as o}from"react/jsx-runtime";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{motion as g,useReducedMotion as b}from"motion/react";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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as P}from"react/jsx-runtime";import{useEffect as k,useState as S}from"react";import{vibemonHost as q}from"../../core/host.js";import{backdropSvgPath as R,bubbleOutline as C,scaleBackdropPath as L}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 J({cardRef:a,opacity:c=0.65,radius:t=20,enabled:r=!0}){let e=q(),[x,O]=S([]);return k(()=>()=>{d(async()=>{await e.windows.call("bubble-blur",{enabled:!1,radius:1,path:null}).catch(e.onError)})},[]),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 B=getComputedStyle(n),f=Number.parseFloat(B.borderTopLeftRadius);if(!Number.isFinite(f))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=C(o.left+0.5,o.top+0.5,o.width-1,o.height-1,f-0.5,v);O(g);let y=r?L(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 p=new MutationObserver(s);for(let l of[document.documentElement,document.body,n])p.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(),p.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:R(x),fill:"var(--popover)",fillOpacity:c,stroke:"var(--border)",strokeOpacity:c,strokeWidth:1})})}export{J as PetBubbleBackground};
|
|
@@ -0,0 +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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as E,jsxs as A}from"react/jsx-runtime";import{useEffect as I,useRef as m,useState as l}from"react";import{vibemonHost as C}from"../../core/host.js";import{useVibemonState as N}from"../lib/account-state.js";import{loadVibemonResource as U}from"../../core/lib/vibemon-resources.js";import{PetAnimationSync as X}from"../../core/lib/pet-animation-sync.js";import{PetBubbleState as O}from"../../core/lib/pet-bubble-state.js";import{PresentationReadiness as W}from"../../core/lib/presentation-readiness.js";import{presentVibemon as B}from"../../core/lib/pet-presentation.js";import{dragPet as F}from"../../core/lib/pet-drag.js";import{DEFAULT_VIBEMON_WINDOW_SIZE as P}from"../../core/types.js";import{VibemonEngine as Y}from"../../core/engine.js";import{SpriteRenderer as H}from"./sprite-renderer.js";import"./lounge-burst.css";function ce(){let t=C(),u=N(),[a,x]=l(null),f=a?.resource??null,[g,S]=l({state:"idle",flipped:!1,tick:0}),[D,R]=l(!0),[k,v]=l(!1),[z,V]=l(0),s=m(null),h=m(0),[r]=l(()=>new W),[c]=l(()=>new X),[i]=l(()=>new O((e)=>{t.windows.call("bubble",{visible:e}).catch(t.onError)}));I(()=>{if(!u.pet)return;let e=u.pet,n=++h.current;r.begin(e,n),x(null);let d=!1,p=null;return(async()=>{if(p=await U(e),d){p.dispose();return}if(await t.windows.call("resize",{size:p.config.windowSize??P}),d)return;let o=new Y(p.config,(_,j,M)=>{if(d)return;S((T)=>({state:_,flipped:j,tick:T.tick+(M?1:0)}))},()=>{});if(s.current=o,c.attach(o),await o.start(u.position),d){o.destroy();return}if(r.positioned(e,n,o),x({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||h.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]),I(()=>{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]),I(()=>t.windows.commands(async(e)=>{if(e.type==="reload"){if(e.petId!==u.pet)throw Error("The selected pet changed");h.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?.destroy(),i.close(),v(!0),await t.windows.call("sound"),await new Promise((n)=>setTimeout(n,470)),await t.windows.call("hide");return}if(e.type==="bubble-close"){i.close();return}if(e.type==="suspend"){s.current?.suspend(),R(!1),i.close(),await t.windows.call("hide");return}R(!0),await B(r,t.windows,e.petId)}),[t,i,r,u.pet]);let w=m(0),b=m(null);if(f===null)return null;let y=f.config.windowSize??P;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");F(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:y,height:y,visibility:k?"hidden":"visible"},children:E(H,{config:f.config,spriteUrl:f.spriteUrl,stateId:g.state,flipped:g.flipped,animTick:g.tick,active:D,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}})}),k&&E("div",{className:"alwith-vibemon-burst pointer-events-none",style:{position:"fixed",left:"50%",bottom:0,width:280,height:280,transform:`translateX(-50%) scale(${y/280})`,transformOrigin:"center bottom",zIndex:20}})]})}export{ce as PetWindow};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { DrawRewardViewModel } from "../../core/lib/draw-result.js";
|
|
2
|
+
export declare function PullOverlay({ phase, drawnRewards, onVideoStarted, onPullDone, onPullFailed, onResultConfirmed }: {
|
|
3
|
+
phase: "idle" | "video-waiting" | "video-playing" | "result";
|
|
4
|
+
drawnRewards: DrawRewardViewModel[];
|
|
5
|
+
onVideoStarted: () => void;
|
|
6
|
+
onPullDone: () => void;
|
|
7
|
+
onPullFailed: () => void;
|
|
8
|
+
onResultConfirmed: (containsCard: boolean) => void;
|
|
9
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as n,jsxs as d,Fragment as M}from"react/jsx-runtime";import{multiDrawSrBackground as H,multiDrawSsrBackground as J,newTag as F,pullTexture as A,resultAura as Q}from"../assets.js";import{motion as y,useInView as X}from"motion/react";import{useEffect as E,useRef as L,useState as p}from"react";import{Button as O}from"../ui/button.js";import{cardThumb as D}from"../lib/card-image.js";import{cn as Z}from"../lib/utils.js";import{PULL_VIDEO_SOURCES as ee}from"./pull-video.js";import{VideoFader as te}from"./video-fader.js";var u=300,l=500,N=400,ne=1920,U=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,C=[12,14,16,18,20,18,16,14,12].map((e)=>e*ae),k=(P-C.reduce((e,t)=>e+t,0))/G.reduce((e,t)=>e+t,0),ie=(()=>{let e=0;return G.map((t,i)=>{let s=k*t,a=e+s/2-P/2;if(e+=s,i<C.length)e+=C[i];return{scale:t,x:a}})})(),I={R:null,SR:H,SSR:J},S=(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=L(null),g=X(r),[w,_]=p(document.visibilityState==="visible");E(()=>{let f=()=>_(document.visibilityState==="visible");return document.addEventListener("visibilitychange",f),()=>document.removeEventListener("visibilitychange",f)},[]);let[h,q]=p(!1),[x,v]=p("flat"),b=L(!1);E(()=>{if(e!=="idle")return;b.current=!1,q(!1),v("flat")},[e]);let m=t.length>1,c=m?null:t[0],T=m?W(t):null,V=m&&t.some((f)=>f.kind==="card"),R=c?c.kind==="white-card"?"white-card":B[c.rarity]:null,K=()=>{if(!m||x!=="flat"||b.current)return;if(b.current=!0,!V){v("fly"),setTimeout(()=>o(!1),u);return}v("gather"),setTimeout(()=>v("fly"),N),setTimeout(()=>o(!0),N+l)},j=()=>{if(!c||h||b.current)return;b.current=!0,q(!0);let f=c.kind==="card"?l:u;setTimeout(()=>o(c.kind==="card"),f)},Y=m?x!=="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)":T?re[T]:R?z[R].scrim:"rgba(1,10,21,0.82)",opacity:e==="result"&&Y?1:0}}),e==="result"&&(m?n(me,{rewards:t,stage:x,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&&w,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(O,{"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:A,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(O,{"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:A,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: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:Q,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(M,{children:[n("img",{src:D(e.singleImageUrl),alt:`${e.vibemonName} ${e.rarity} card`,className:"h-auto w-full max-w-none select-none"}),e.isNew&&n("img",{src:F,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: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!==U)throw Error(`[vibemon] ten-draw result must contain ${U} 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:S(r.x),y:"0cqh",scale:r.scale,opacity:1},w=a.kind==="card"?`${a.drawIndex}-${a.vibemonUuid}`:`${a.drawIndex}-white-card`,_=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:S(k),marginLeft:S(-k/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"?_:h,transition:t==="gather"?{duration:a.kind==="card"?N/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(M,{children:[I[a.rarity]!==null&&n("img",{src:I[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:D(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:F,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})})},w)})}),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};
|
|
@@ -0,0 +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};
|