{"version":3,"file":"application-oeeZsy5D.js","sources":["../../../app/javascript/src/utils/metaContent.ts","../../../app/javascript/src/stores/flash.ts","../../../app/javascript/src/use/fetch.ts","../../../app/javascript/src/stores/click.ts","../../../app/javascript/src/components/PageTitle.vue","../../../app/javascript/src/components/LoadingAnimation.vue","../../../app/javascript/src/components/ClickButton.vue","../../../app/javascript/src/pages/HomePage.vue","../../../app/javascript/src/pages/AboutPage.vue","../../../app/javascript/src/router.ts","../../../app/javascript/src/components/AppBackground.vue","../../../app/javascript/images/logo.svg","../../../app/javascript/src/components/AppHeader.vue","../../../app/javascript/src/components/GitVersion.vue","../../../app/javascript/src/use/online-offline.ts","../../../app/javascript/src/components/AppFooter.vue","../../../app/javascript/src/components/AppFlash.vue","../../../app/javascript/src/plugins/plausible.js","../../../app/javascript/entrypoints/application.ts"],"sourcesContent":["export function metaContent(name: string): string | undefined {\n const element: HTMLMetaElement | null = document.head.querySelector(\n `meta[name=\"${name}\"]`,\n );\n\n if (element) return element.content;\n}\n\nexport function assetUrl(fileName: string): string {\n const assetHost = metaContent('asset-host') || '';\n\n return assetHost + fileName;\n}\n","import { defineStore } from 'pinia';\n\nexport const useFlashStore = defineStore('flash', {\n state: () => ({\n notice: '',\n alert: '',\n }),\n});\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { FetchRequest } from '@rails/request.js';\nimport { useFlashStore } from '@/stores/flash';\n\nexport function withFlash(request: Promise) {\n const flash = useFlashStore();\n\n return request.then(async (response: { json: any; ok: any }) => {\n const body = await response.json;\n\n if (response.ok) flash.notice = body.notice;\n else flash.alert = body.alert;\n\n setTimeout(() => flash.$reset(), 2000);\n\n return response;\n });\n}\n\nexport function get(url: string, options: any) {\n const request = new FetchRequest('get', url, options);\n return withFlash(request.perform());\n}\n\nexport function post(url: string, options: any) {\n const request = new FetchRequest('post', url, options);\n return withFlash(request.perform());\n}\n","import { defineStore } from 'pinia';\nimport { createConsumer, Subscription } from '@rails/actioncable';\nimport { get, post } from '@/use/fetch';\n\nexport type Click = {\n id: number;\n created_at: string;\n ip: string;\n user_agent: string;\n};\n\nlet channel: Subscription | null = null;\n\nexport const useClickStore = defineStore('click', {\n state: () => ({\n loaded: false,\n subscribed: false,\n total: 0,\n items: [] as Click[],\n }),\n\n actions: {\n sendClick() {\n post('/clicks', { responseKind: 'json' });\n },\n\n async getClicks() {\n const response = await get('/clicks', {\n responseKind: 'json',\n });\n const json = await response.json;\n\n this.total = json.total;\n this.items = json.items;\n this.loaded = true;\n },\n\n subscribe() {\n channel = createConsumer().subscriptions.create(\n {\n channel: 'ClicksChannel',\n },\n {\n received: (click: Click) => {\n this.total += 1;\n this.items.unshift(click);\n },\n },\n );\n this.subscribed = true;\n },\n\n unsubscribe() {\n if (channel) {\n channel.unsubscribe();\n channel.consumer.disconnect();\n }\n this.subscribed = false;\n },\n },\n});\n","\n","\n","\n\n\n","\n\n\n","\n\n\n","import { createWebHashHistory, createRouter, RouteRecordRaw } from 'vue-router';\nimport HomePage from '@/pages/HomePage.vue';\nimport AboutPage from '@/pages/AboutPage.vue';\nimport NotFound from '@/pages/NotFound.vue';\n\nconst routes: Array = [\n {\n path: '/',\n name: 'Home',\n component: HomePage,\n props: {\n name: 'Templatus',\n },\n },\n {\n path: '/about',\n name: 'About',\n component: AboutPage,\n },\n { path: '/:pathMatch(.*)', component: NotFound },\n];\n\nconst router = createRouter({\n history: createWebHashHistory(),\n routes,\n});\n\nexport default router;\n","\n","export default \"__VITE_ASSET__BPYvPCPi__\"","\n\n\n","\n\n\n","import { Ref, ref, onMounted, onUnmounted } from 'vue';\n\nexport default function useOnlineOffline(): { online: Ref } {\n const online = ref(navigator.onLine);\n\n function setOnline() {\n online.value = true;\n }\n\n function setOffline() {\n online.value = false;\n }\n\n onMounted(() => {\n window.addEventListener('online', setOnline);\n window.addEventListener('offline', setOffline);\n });\n\n onUnmounted(() => {\n window.removeEventListener('online', setOnline);\n window.removeEventListener('offline', setOffline);\n });\n\n return {\n online,\n };\n}\n","\n\n\n","\n\n\n","import Plausible from 'plausible-tracker';\n\nexport default {\n install: (app, options) => {\n const { enableAutoPageviews, enableAutoOutboundTracking } =\n Plausible(options);\n\n enableAutoPageviews();\n enableAutoOutboundTracking();\n\n app.provide('plausible');\n },\n};\n","import { createApp } from 'vue';\nimport { createPinia } from 'pinia';\nimport { metaContent } from '@/utils/metaContent';\nimport router from '@/router';\nimport App from '@/App.vue';\nimport HoneybadgerVue from '@honeybadger-io/vue';\nimport plausible from '@/plugins/plausible';\nimport { register } from 'register-service-worker';\n\nregister('/sw.js', {\n registrationOptions: { scope: './' },\n ready(_registration: ServiceWorkerRegistration) {\n console.log('Service worker is active.');\n },\n registered(_registration: ServiceWorkerRegistration) {\n console.log('Service worker has been registered.');\n },\n cached(_registration: ServiceWorkerRegistration) {\n console.log('Content has been cached for offline use.');\n },\n updatefound(_registration: ServiceWorkerRegistration) {\n console.log('New content is downloading.');\n },\n updated(_registration: ServiceWorkerRegistration) {\n console.log('New content is available; please refresh.');\n },\n offline() {\n console.log(\n 'No internet connection found. App is running in offline mode.',\n );\n },\n error(error) {\n console.error('Error during service worker registration:', error);\n },\n});\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const app = createApp(App);\n\n const honeybadgerApiKey = metaContent('honeybadger-api-key');\n if (honeybadgerApiKey) {\n const gitCommitVersion = metaContent('git-commit-version');\n\n app.use(HoneybadgerVue, {\n apiKey: honeybadgerApiKey,\n environment: 'production',\n revision: gitCommitVersion,\n });\n }\n\n app.use(router);\n app.use(createPinia());\n\n const plausibleUrl = metaContent('plausible-url');\n if (plausibleUrl)\n app.use(plausible, {\n domain: metaContent('app-host') || window.location.host,\n hashMode: true,\n apiHost: plausibleUrl,\n });\n\n app.mount('#vue-app');\n});\n"],"names":["metaContent","name","element","assetUrl","fileName","useFlashStore","defineStore","withFlash","request","flash","response","body","get","url","options","FetchRequest","post","channel","useClickStore","json","createConsumer","click","_sfc_render","_ctx","_cache","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","store","onMounted","onBeforeUnmount","features","Vue.version","routes","HomePage","AboutPage","NotFound","router","createRouter","createWebHashHistory","logoPath","tabs","timeElement","ref","timeago.render","timeago.cancel","useOnlineOffline","online","setOnline","setOffline","onUnmounted","git","text","backgroundClass","textClass","icon","ExclamationCircleIcon","CheckCircleIcon","iconClass","plausible","app","enableAutoPageviews","enableAutoOutboundTracking","Plausible","register","_registration","error","createApp","App","honeybadgerApiKey","gitCommitVersion","HoneybadgerVue","createPinia","plausibleUrl"],"mappings":"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"}