{"file":"mypage-vk-a1u-8.js","mappings":"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","names":["_unref","_push","_parent","_","_scopeId","_createVNode","_createBlock","useRoute","_ssrRenderComponent","AnimatePresence","_renderSlot"],"sources":["../../../../components/layout/MyPageNav.vue","../../../../layouts/mypage.vue"],"sourcesContent":["<script setup>\nimport { motion, AnimatePresence } from \"motion-v\";\nimport { useDevice } from \"~/composables/useDevice\";\n\nconst { isMobile } = useDevice();\n\nconst isActive = ref(false);\nconst navRef = ref(null);\nconst route = useRoute();\n\nconst showMenu = computed(() => !isMobile.value || isActive.value);\n\nconst currentLabel = computed(() => {\n  const path = route.path;\n  if (path.startsWith(\"/mypage/billing\")) return \"입/출금\";\n  if (path.startsWith(\"/mypage/history\")) return \"배팅내역\";\n  return \"프로필\";\n});\n\nconst currentIcon = computed(() => {\n  const path = route.path;\n  if (path.startsWith(\"/mypage/billing\")) return \"ico-prefix\";\n  if (path.startsWith(\"/mypage/history\")) return \"ico-history\";\n  return \"ico-user-thin\";\n});\n\nconst handleOutsideClick = (event) => {\n  if (!isMobile.value) return;\n  const navEl = navRef.value;\n  if (!navEl) return;\n\n  if (!navEl.contains(event.target)) {\n    isActive.value = false;\n  }\n};\n\nonMounted(() => {\n  if (typeof window !== \"undefined\") {\n    window.addEventListener(\"click\", handleOutsideClick);\n  }\n});\n\nonBeforeUnmount(() => {\n  if (typeof window !== \"undefined\") {\n    window.removeEventListener(\"click\", handleOutsideClick);\n  }\n});\n\nwatch(\n  () => route.fullPath,\n  () => {\n    if (isMobile.value) {\n      isActive.value = false;\n    }\n  }\n);\n\n// 네비게이션 메뉴 애니메이션 설정 함수\nconst getNavMenuAnimation = () => ({\n  initial: {\n    height: 0,\n    opacity: 0,\n  },\n  animate: {\n    height: \"auto\",\n    opacity: 1,\n  },\n  exit: {\n    height: 0,\n    opacity: 0,\n  },\n  transition: {\n    height: {\n      duration: 0.28,\n      ease: [0.22, 0.61, 0.36, 1],\n    },\n    opacity: {\n      duration: 0.22,\n      ease: [0.22, 0.61, 0.36, 1],\n    },\n  },\n});\n</script>\n\n<template>\n  <nav ref=\"navRef\" class=\"mypage__nav\" :class=\"{ active: showMenu }\">\n    <div class=\"mypage__nav-title\">\n      <button\n        type=\"button\"\n        class=\"mypage__nav-btn ico-after ico-down-thin\"\n        @click=\"isActive = !isActive\"\n      >\n        <i :class=\"currentIcon\"></i>\n        {{ currentLabel }}\n      </button>\n    </div>\n    <AnimatePresence>\n      <motion.ul\n        v-if=\"showMenu\"\n        key=\"nav-menu\"\n        class=\"mypage__nav-menu\"\n        :initial=\"getNavMenuAnimation().initial\"\n        :animate=\"getNavMenuAnimation().animate\"\n        :exit=\"getNavMenuAnimation().exit\"\n        :transition=\"getNavMenuAnimation().transition\"\n        style=\"overflow: hidden\"\n      >\n        <li class=\"mypage__nav-item\">\n          <NuxtLink\n            to=\"/mypage\"\n            class=\"mypage__nav-link ico-before ico-user-thin\"\n            active-class=\"active\"\n            exact\n            >프로필</NuxtLink\n          >\n        </li>\n        <li class=\"mypage__nav-item\">\n          <NuxtLink\n            to=\"/mypage/billing\"\n            class=\"mypage__nav-link ico-before ico-prefix\"\n            active-class=\"active\"\n            >입/출금</NuxtLink\n          >\n        </li>\n        <li class=\"mypage__nav-item\">\n          <NuxtLink\n            to=\"/mypage/history\"\n            class=\"mypage__nav-link ico-before ico-history\"\n            active-class=\"active\"\n            >배팅내역</NuxtLink\n          >\n        </li>\n      </motion.ul>\n    </AnimatePresence>\n  </nav>\n</template>\n\n<style scoped>\n</style>\n","<script setup>\nimport { ref, computed, watch, nextTick } from \"vue\";\nimport { useChat } from \"@/composables/useSidebar\";\nimport { motion, AnimatePresence } from \"motion-v\";\nimport { useRoute } from \"vue-router\";\nimport { useDevice } from \"@/composables/useDevice\";\n\nuseHead({\n  title: \"UpBit | My Page\",\n  bodyAttrs: {\n    class: \"overflow-visible\",\n  },\n});\n\n// ===== Composables =====\nconst { isNotificationOpen, closeNotification, isChatOpen, closeChat } =\n  useChat();\nconst route = useRoute();\nconst { isMobile } = useDevice();\n\n// ===== 상태 관리 =====\n// 모바일에서 PC로 전환되었는지 추적\nconst wasMobileBefore = ref(isMobile.value);\n// 초기 애니메이션 건너뛰기 여부\nconst skipInitialAnimation = ref(false);\n\n// ===== 계산된 값 =====\n// 페이지 전환 모션 설정 (데스크톱 전용)\nconst pageTransition = computed(() => {\n  return {\n    // 모바일→PC 전환 시에는 initial 건너뛰기\n    initial: skipInitialAnimation.value \n      ? false \n      : { opacity: 0, scale: 0.98, y: 10 },\n    animate: {\n      opacity: 1,\n      scale: 1,\n      y: 0,\n      transition: {\n        type: \"spring\",\n        stiffness: 300,\n        damping: 22,\n        mass: 0.8,\n      },\n    },\n    exit: {\n      opacity: 0,\n      scale: 1.01,\n      transition: { duration: 0.15, ease: \"easeIn\" },\n    },\n  };\n});\n\n// ===== Watchers =====\n// isMobile 변경 감지\nwatch(isMobile, (newValue, oldValue) => {\n  // 모바일에서 PC로 전환된 경우\n  if (oldValue && !newValue) {\n    skipInitialAnimation.value = true;\n  }\n  wasMobileBefore.value = newValue;\n});\n\n// route.path 변경 시 skipInitialAnimation 리셋\nwatch(() => route.path, () => {\n  if (skipInitialAnimation.value) {\n    skipInitialAnimation.value = false;\n  }\n});\n</script>\n\n<template>\n  <LayoutHeader />\n  <main class=\"mypage__main\">\n    <div class=\"mypage__inner\">\n      <h2 class=\"mypage__title\">마이페이지</h2>\n      <div class=\"mypage__wrap\">\n        <LayoutMyPageNav />\n        <AnimatePresence v-if=\"!isMobile\" mode=\"wait\">\n          <motion.section\n            class=\"mypage\"\n            :key=\"route.path\"\n            :initial=\"pageTransition.initial\"\n            :animate=\"pageTransition.animate\"\n            :exit=\"pageTransition.exit\"\n          >\n            <slot />\n          </motion.section>\n        </AnimatePresence>\n        <template v-else>\n          <section class=\"mypage\" :key=\"route.path\">\n            <slot />\n          </section>\n        </template>\n      </div>\n    </div>\n  </main>\n  <CommonNotification\n    :is-open=\"isNotificationOpen\"\n    variant=\"sub\"\n    @close=\"closeNotification\"\n  />\n  <CommonChatSection :is-open=\"isChatOpen\" variant=\"sub\" @close=\"closeChat\" />\n</template>\n\n<style>\n@import \"@/assets/scss/pages/mypage.scss\";\n</style>\n"],"version":3}