{"version":3,"file":"embedded-CtDLPbDE.js","sources":["../../src/shared/ui/icons/icon-arrow-right.vue","../../src/shared/ui/misc/embedded-dropdown-transition.vue","../../src/entities/chat/lib/use-fullscreen-chat-href.ts","../../src/widgets/alerts-dropdown/api/get-alerts.ts","../../src/widgets/alerts-dropdown/state/alerts-query.ts","../../src/widgets/alerts-dropdown/lib/use-alert-initiator.ts","../../src/widgets/alerts-dropdown/ui/alert-content-layout.vue","../../src/widgets/alerts-dropdown/ui/alert-message-content.vue","../../src/widgets/alerts-dropdown/ui/alert-reaction-content.vue","../../src/widgets/alerts-dropdown/ui/alert-reply-content.vue","../../src/widgets/alerts-dropdown/ui/alerts-dropdown-item.vue","../../src/widgets/alerts-dropdown/ui/alerts-dropdown.vue","../../src/widgets/alerts-dropdown/state/use-dynamic-alert-updates.ts","../../src/apps/embedded/ui/alerts.vue","../../src/widgets/conversations-dropdown/ui/conversations-dropdown-item.vue","../../src/widgets/conversations-dropdown/ui/conversations-dropdown.vue","../../src/apps/embedded/ui/conversations.vue","../../src/pages/embedded-chat/ui/embedded-chat-header.vue","../../src/apps/embedded/ui/app.vue","../../src/apps/embedded/main.ts"],"sourcesContent":["\n \n \n \n\n","\n \n \n \n\n\n\n","import { computed, unref, type MaybeRef } from 'vue'\nimport { getFullscreenChatHref } from './get-fullscreen-chat-href'\n\nexport function useFullscreenChatHref(chatId: MaybeRef) {\n const href = computed(() => getFullscreenChatHref(unref(chatId)))\n return href\n}\n","import { httpClient, type Cursor } from '#shared'\nimport type { GetAlertsResponse } from '../model/get-alerts-response'\n\ninterface GetAlertsOptions {\n count?: number\n after?: Cursor\n}\n\nexport async function getAlerts({ count = 20, after }: GetAlertsOptions = {}): Promise {\n const searchParams = new URLSearchParams([['count', count.toString()]])\n\n if (after) {\n searchParams.set('after', after.toString())\n }\n\n const response = await httpClient.get('alerts?' + searchParams.toString(), { requireAuth: true })\n const responseBody = await response.json()\n\n return responseBody\n}\n","import { infiniteQueryOptions } from '@tanstack/vue-query'\nimport { getAlerts } from '../api/get-alerts'\n\nexport const ALERTS_QUERY_KEY = ['alerts'] as const\n\nexport const alertsQueryOptions = infiniteQueryOptions({\n queryKey: ALERTS_QUERY_KEY,\n queryFn: ({ pageParam }) => getAlerts({ after: pageParam }),\n getNextPageParam: lastPage => (lastPage.hasNextPage ? lastPage.endCursor.toString() : undefined),\n initialPageParam: undefined as string | undefined,\n staleTime: 60_000,\n})\n","import { computed, type Ref } from 'vue'\nimport type { Alert } from '../model/alert'\n\nexport function useAlertInitiator(alert: Ref) {\n return computed(() => {\n const alertVal = alert.value\n\n if (alertVal.type === 'message') {\n return alertVal.message.sender\n }\n\n if (alertVal.type === 'reply') {\n return alertVal.reply.sender\n }\n\n if (alertVal.type === 'reaction') {\n return alertVal.reaction.sender\n }\n\n return null\n })\n}\n","\n\n\n \n \n {{ initiator.displayName }} \n \n \n \n \n \n {{ timeSinceCreatedString }}\n \n \n\n\n\n","\n\n\n \n sent you message:\n\n \n {{ messagePreview }}\n \n \n\n","\n\n\n \n added reaction {{ alert.reaction.char }} to your message:\n\n \n {{ messagePreview }}\n \n \n\n","\n\n\n \n sent reply to your message \"{{ messagePreview }}\":\n\n \n {{ replyPreview }}\n \n \n\n","\n\n\n \n \n \n \n \n\n \n \n \n \n \n \n \n\n\n\n","\n\n\n \n Alerts\n\n \n 0\" :class=\"$style.list\" ref=\"listEl\">\n \n \n\n \n\n \n \n \n\n\n\n","import { useQueryClient } from '@tanstack/vue-query'\nimport { onBeforeMount, onBeforeUnmount } from 'vue'\nimport { wsClient } from '#shared/api/ws-client'\nimport type { Alert } from '../model/alert'\nimport type { AlertsQueryData } from '../model/alerts-query-data'\nimport type { GetAlertsResponse } from '../model/get-alerts-response'\nimport { ALERTS_QUERY_KEY } from './alerts-query'\n\nexport function useDynamicAlertUpdates() {\n const queryClient = useQueryClient()\n\n const onNewAlert = (alert: Alert) => {\n queryClient.setQueryData(ALERTS_QUERY_KEY, (queryData: AlertsQueryData | undefined) => {\n if (!queryData) {\n queryData = {\n pageParams: [],\n pages: [],\n }\n }\n\n const newPageParams = [null, ...queryData.pageParams]\n const newPages: GetAlertsResponse[] = [\n {\n data: [alert],\n endCursor: alert.id.toString(),\n hasNextPage: true,\n status: 'ok',\n },\n ...queryData.pages,\n ]\n\n return {\n pageParams: newPageParams,\n pages: newPages,\n }\n })\n }\n\n onBeforeMount(() => {\n wsClient.on('alert', onNewAlert)\n })\n\n onBeforeUnmount(() => {\n wsClient.off('alert', onNewAlert)\n })\n}\n","\n\n\n \n \n \n \n \n\n\n\n","\n\n\n \n \n \n \n \n\n \n \n {{ chat.peer.displayName }}\n \n\n \n You: {{ lastMessagePreview }}\n\n \n {{ timeSinceLastMessage }}\n \n \n \n \n \n\n\n\n","\n\n\n \n Conversations \n\n \n 0\" :class=\"$style.list\" ref=\"listEl\">\n \n \n\n \n\n \n \n \n\n\n\n","\n\n\n \n \n \n \n \n\n\n\n","\n\n\n \n Chats\n \n Join conversations\n \n \n \n\n\n\n","\n\n\n \n \n \n\n","import { appTypeInjectionKey } from '#shared'\nimport { VueQueryPlugin, type VueQueryPluginOptions } from '@tanstack/vue-query'\nimport { createApp } from 'vue'\nimport { appChatIdInjectionKey } from '#entities/chat'\nimport '#shared/ui/styles/index.css'\nimport App from './ui/app.vue'\nimport './ui/style.css'\n\nasync function main() {\n const vueQueryPluginOptions: VueQueryPluginOptions = {\n queryClientConfig: {\n defaultOptions: {\n queries: {\n retry: false,\n },\n\n mutations: {\n retry: false,\n },\n },\n },\n }\n\n const container = document.createElement('div')\n const appChatId = Number(import.meta.env.VITE_MAIN_CHAT_ID)\n\n const app = createApp(App)\n\n app\n .use(VueQueryPlugin, vueQueryPluginOptions)\n .provide(appTypeInjectionKey, 'embedded')\n .provide(appChatIdInjectionKey, appChatId)\n .mount(container)\n}\n\nmain()\n"],"names":["_hoisted_1","_sfc_render","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","_createBlock","_Transition","$style","_withCtx","useFullscreenChatHref","chatId","computed","getFullscreenChatHref","unref","getAlerts","count","after","searchParams","httpClient","ALERTS_QUERY_KEY","alertsQueryOptions","infiniteQueryOptions","pageParam","lastPage","useAlertInitiator","alert","alertVal","timeSinceCreatedString","useTimeSinceString","toRef","__props","message","messagePreview","useMessagePreview","reply","replyPreview","href","initiator","alertsQuery","useInfiniteQuery","alerts","_a","page","listEl","useTemplateRef","useInfiniteScroll","useDynamicAlertUpdates","queryClient","useQueryClient","onNewAlert","queryData","newPageParams","newPages","onBeforeMount","wsClient","onBeforeUnmount","alertsToggleButtonEl","isAlertsShown","ref","hasNewAlerts","onAlertsToggle","watch","alertsDropdown","useClickOutside","lastMessagePreview","timeSinceLastMessage","personalChatsQuery","personalChatsQueryOptions","personalChats","conversationsToggleButton","isConversationsShown","hasUnreadMessages","chat","onUpdated","onConversationsToggle","conversationsDropdown","mainChatHref","useDynamicMessageUpdates","useDynamicChatUpdates","useDynamicUserUpdates","currentUser","useQuery","currentUserQueryOptions","provide","userInjectionKey","main","vueQueryPluginOptions","container","createApp","App","VueQueryPlugin","appTypeInjectionKey","appChatIdInjectionKey"],"mappings":"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"}