{"version":3,"sources":["../../../src/vue/auth/index.ts","../../../src/vue/auth/useContentstackUser.ts","../../../src/vue/auth/ContentstackLoginButton.ts","../../../src/vue/auth/ContentstackLogoutButton.ts","../../../src/vue/auth/ContentstackAuthGuard.ts"],"sourcesContent":["export { useContentstackUser, type UseContentstackUserReturn } from \"./useContentstackUser\"\nexport { ContentstackLoginButton } from \"./ContentstackLoginButton\"\nexport { ContentstackLogoutButton } from \"./ContentstackLogoutButton\"\nexport { ContentstackAuthGuard } from \"./ContentstackAuthGuard\"\n","import { type Ref, computed, onMounted, ref } from \"vue\"\nimport type { ContentstackUser } from \"../../index.js\"\n\nexport interface UseContentstackUserReturn {\n  user: Ref<ContentstackUser | null>\n  loading: Ref<boolean>\n  isAuthenticated: Ref<boolean>\n}\n\nexport function useContentstackUser(): UseContentstackUserReturn {\n  const user = ref<ContentstackUser | null>(null)\n  const loading = ref(true)\n  const isAuthenticated = computed(() => user.value !== null)\n\n  async function fetchSession() {\n    loading.value = true\n    try {\n      const res = await fetch(\"/api/auth/session\")\n      if (!res.ok) {\n        user.value = null\n        return\n      }\n      const data = await res.json()\n      if (data?.user) {\n        user.value = {\n          uid: data.user.uid ?? data.user.id ?? \"\",\n          email: data.user.email ?? \"\",\n          firstName: data.user.firstName ?? data.user.name?.split(\" \")[0],\n          lastName: data.user.lastName ?? data.user.name?.split(\" \").slice(1).join(\" \"),\n          username: data.user.username,\n          profileImage: data.user.profileImage ?? data.user.image,\n        }\n      } else {\n        user.value = null\n      }\n    } catch {\n      user.value = null\n    } finally {\n      loading.value = false\n    }\n  }\n\n  onMounted(() => {\n    fetchSession()\n  })\n\n  return { user, loading, isAuthenticated }\n}\n","import { type PropType, defineComponent, h } from \"vue\"\nimport type { ContentstackOAuthScope } from \"../../auth/scopes.js\"\n\nexport const ContentstackLoginButton = defineComponent({\n  name: \"ContentstackLoginButton\",\n  props: {\n    scopes: {\n      type: Array as PropType<ContentstackOAuthScope[]>,\n      default: undefined,\n    },\n    redirectTo: {\n      type: String,\n      default: undefined,\n    },\n    class: {\n      type: String,\n      default: undefined,\n    },\n  },\n  setup(props, { slots }) {\n    return () =>\n      h(\"form\", { action: \"/api/auth/signin/contentstack\", method: \"POST\" }, [\n        props.redirectTo\n          ? h(\"input\", { type: \"hidden\", name: \"callbackUrl\", value: props.redirectTo })\n          : null,\n        h(\n          \"button\",\n          { type: \"submit\", class: props.class },\n          slots.default?.() ?? \"Sign in with Contentstack\",\n        ),\n      ])\n  },\n})\n","import { defineComponent, h } from \"vue\"\n\nexport const ContentstackLogoutButton = defineComponent({\n  name: \"ContentstackLogoutButton\",\n  props: {\n    redirectTo: {\n      type: String,\n      default: undefined,\n    },\n    class: {\n      type: String,\n      default: undefined,\n    },\n  },\n  setup(props, { slots }) {\n    return () =>\n      h(\"form\", { action: \"/api/auth/signout\", method: \"POST\" }, [\n        props.redirectTo\n          ? h(\"input\", { type: \"hidden\", name: \"callbackUrl\", value: props.redirectTo })\n          : null,\n        h(\"button\", { type: \"submit\", class: props.class }, slots.default?.() ?? \"Sign out\"),\n      ])\n  },\n})\n","import { defineComponent, h } from \"vue\"\nimport { ContentstackLoginButton } from \"./ContentstackLoginButton\"\nimport { useContentstackUser } from \"./useContentstackUser\"\n\nexport const ContentstackAuthGuard = defineComponent({\n  name: \"ContentstackAuthGuard\",\n  setup(_props, { slots }) {\n    const { isAuthenticated, loading } = useContentstackUser()\n\n    return () => {\n      if (loading.value) return slots.loading?.() ?? null\n      if (isAuthenticated.value) return slots.default?.()\n      return slots.fallback?.() ?? h(ContentstackLoginButton)\n    }\n  },\n})\n"],"mappings":"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","names":["import_vue","import_vue","import_vue"]}