{"version":3,"file":"index.c2691068.js","sources":["../../vite/modulepreload-polyfill","../../vite/preload-helper","../../src/router/router.js","../../plugin-vue:export-helper","../../src/components/SearchSuggestions.vue","../../../../../img/icons/logo.svg","../../src/components/NavBar.vue","../../src/App.vue","../../src/main.js"],"sourcesContent":["const p = function polyfill() {\n const relList = document.createElement('link').relList;\n if (relList && relList.supports && relList.supports('modulepreload')) {\n return;\n }\n for (const link of document.querySelectorAll('link[rel=\"modulepreload\"]')) {\n processPreload(link);\n }\n new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type !== 'childList') {\n continue;\n }\n for (const node of mutation.addedNodes) {\n if (node.tagName === 'LINK' && node.rel === 'modulepreload')\n processPreload(node);\n }\n }\n }).observe(document, { childList: true, subtree: true });\n function getFetchOpts(script) {\n const fetchOpts = {};\n if (script.integrity)\n fetchOpts.integrity = script.integrity;\n if (script.referrerpolicy)\n fetchOpts.referrerPolicy = script.referrerpolicy;\n if (script.crossorigin === 'use-credentials')\n fetchOpts.credentials = 'include';\n else if (script.crossorigin === 'anonymous')\n fetchOpts.credentials = 'omit';\n else\n fetchOpts.credentials = 'same-origin';\n return fetchOpts;\n }\n function processPreload(link) {\n if (link.ep)\n // ep marker = processed\n return;\n link.ep = true;\n // prepopulate the load record\n const fetchOpts = getFetchOpts(link);\n fetch(link.href, fetchOpts);\n }\n};__VITE_IS_MODERN__&&p();","const scriptRel = 'modulepreload';const seen = {};const base = '/';export const __vitePreload = function preload(baseModule, deps) {\n // @ts-ignore\n if (!__VITE_IS_MODERN__ || !deps || deps.length === 0) {\n return baseModule();\n }\n return Promise.all(deps.map((dep) => {\n // @ts-ignore\n dep = `${base}${dep}`;\n // @ts-ignore\n if (dep in seen)\n return;\n // @ts-ignore\n seen[dep] = true;\n const isCss = dep.endsWith('.css');\n const cssSelector = isCss ? '[rel=\"stylesheet\"]' : '';\n // @ts-ignore check if the file is already preloaded by SSR markup\n if (document.querySelector(`link[href=\"${dep}\"]${cssSelector}`)) {\n return;\n }\n // @ts-ignore\n const link = document.createElement('link');\n // @ts-ignore\n link.rel = isCss ? 'stylesheet' : scriptRel;\n if (!isCss) {\n link.as = 'script';\n link.crossOrigin = '';\n }\n link.href = dep;\n // @ts-ignore\n document.head.appendChild(link);\n if (isCss) {\n return new Promise((res, rej) => {\n link.addEventListener('load', res);\n link.addEventListener('error', rej);\n });\n }\n })).then(() => baseModule());\n}","import { createRouter, createWebHistory } from \"vue-router\";\n\nconst routes = [\n {\n path: \"/\",\n name: \"Trending\",\n component: () => import(\"../components/TrendingPage.vue\"),\n },\n {\n path: \"/preferences\",\n name: \"Preferences\",\n component: () => import(\"../components/PreferencesPage.vue\"),\n },\n {\n path: \"/results\",\n name: \"SearchResults\",\n component: () => import(\"../components/SearchResults.vue\"),\n },\n {\n path: \"/playlist\",\n name: \"Playlist\",\n component: () => import(\"../components/PlaylistPage.vue\"),\n },\n {\n path: \"/:path(v|w|embed|shorts|watch)/:v?\",\n name: \"WatchVideo\",\n component: () => import(\"../components/WatchVideo.vue\"),\n },\n {\n path: \"/clip/:clipId\",\n name: \"Clips\",\n component: () => import(\"../components/ClipsPage.vue\"),\n },\n {\n path: \"/:path(channel|user|c)/:channelId/:videos?\",\n name: \"Channel\",\n component: () => import(\"../components/ChannelPage.vue\"),\n },\n {\n path: \"/login\",\n name: \"Login\",\n component: () => import(\"../components/LoginPage.vue\"),\n },\n {\n path: \"/register\",\n name: \"Register\",\n component: () => import(\"../components/RegisterPage.vue\"),\n },\n {\n path: \"/feed\",\n name: \"Feed\",\n component: () => import(\"../components/FeedPage.vue\"),\n },\n {\n path: \"/import\",\n name: \"Import\",\n component: () => import(\"../components/ImportPage.vue\"),\n },\n {\n path: \"/:videoId([a-zA-Z0-9_-]{11})\",\n component: () => import(\"../components/VideoRedirect.vue\"),\n },\n {\n path: \"/subscriptions\",\n name: \"Subscriptions\",\n component: () => import(\"../components/SubscriptionsPage.vue\"),\n },\n {\n path: \"/history\",\n name: \"Watch History\",\n component: () => import(\"../components/HistoryPage.vue\"),\n },\n];\n\nconst router = createRouter({\n history: createWebHistory(),\n routes,\n scrollBehavior: function (_to, _from, savedPosition) {\n return savedPosition ? savedPosition : window.scrollTo(0, 0);\n },\n});\n\nexport default router;\n","\nexport default (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n}\n","\n \n\n\n\n\n\n","export default \"/img/icons/logo.svg\"","\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","import { createApp } from \"vue\";\nimport { library } from \"@fortawesome/fontawesome-svg-core\";\nimport {\n faThumbsUp,\n faThumbsDown,\n faEye,\n faThumbtack,\n faCheck,\n faHeart,\n faHeadphones,\n faRss,\n faChevronLeft,\n faLevelDownAlt,\n faTv,\n faLevelUpAlt,\n faBroadcastTower,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { faGithub, faBitcoin, faYoutube } from \"@fortawesome/free-brands-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nlibrary.add(\n faThumbsUp,\n faThumbsDown,\n faEye,\n faGithub,\n faBitcoin,\n faThumbtack,\n faCheck,\n faHeart,\n faHeadphones,\n faYoutube,\n faRss,\n faChevronLeft,\n faLevelDownAlt,\n faLevelUpAlt,\n faTv,\n faBroadcastTower,\n);\n\nimport router from \"@/router/router.js\";\nimport App from \"./App.vue\";\n\nimport DOMPurify from \"dompurify\";\n\nimport TimeAgo from \"javascript-time-ago\";\n\nimport en from \"javascript-time-ago/locale/en\";\n\nTimeAgo.addDefaultLocale(en);\n\nimport { createI18n } from \"vue-i18n\";\nimport enLocale from \"@/locales/en.json\";\nimport \"windi.css\";\n\nconst timeAgo = new TimeAgo(\"en-US\");\n\nimport(\"./registerServiceWorker\");\n\nconst mixin = {\n methods: {\n timeFormat: function (duration) {\n var pad = function (num, size) {\n return (\"000\" + num).slice(size * -1);\n };\n\n var time = parseFloat(duration).toFixed(3),\n hours = Math.floor(time / 60 / 60),\n minutes = Math.floor(time / 60) % 60,\n seconds = Math.floor(time - minutes * 60);\n\n var str = \"\";\n\n if (hours > 0) str += hours + \":\";\n\n str += pad(minutes, 2) + \":\" + pad(seconds, 2);\n\n return str;\n },\n numberFormat(num) {\n const digits = 2;\n const si = [\n { value: 1, symbol: \"\" },\n { value: 1e3, symbol: \"k\" },\n { value: 1e6, symbol: \"M\" },\n { value: 1e9, symbol: \"B\" },\n ];\n const rx = /\\.0+$|(\\.[0-9]*[1-9])0+$/;\n for (var i = si.length - 1; i > 0; i--) {\n if (num >= si[i].value) {\n break;\n }\n }\n return (num / si[i].value).toFixed(digits).replace(rx, \"$1\") + si[i].symbol;\n },\n addCommas(num) {\n num = parseInt(num);\n return num.toLocaleString(\"en-US\");\n },\n fetchJson: function (url, params, options) {\n if (params) {\n url = new URL(url);\n for (var param in params) url.searchParams.set(param, params[param]);\n }\n return fetch(url, options).then(response => {\n return response.json();\n });\n },\n purifyHTML(original) {\n return DOMPurify.sanitize(original);\n },\n setPreference(key, value) {\n if (localStorage) localStorage.setItem(key, value);\n },\n getPreferenceBoolean(key, defaultVal) {\n var value;\n if (\n (value = new URLSearchParams(window.location.search).get(key)) !== null ||\n (this.testLocalStorage && (value = localStorage.getItem(key)) !== null)\n ) {\n switch (String(value).toLowerCase()) {\n case \"true\":\n case \"1\":\n case \"on\":\n case \"yes\":\n return true;\n default:\n return false;\n }\n } else return defaultVal;\n },\n getPreferenceString(key, defaultVal) {\n var value;\n if (\n (value = new URLSearchParams(window.location.search).get(key)) !== null ||\n (this.testLocalStorage && (value = localStorage.getItem(key)) !== null)\n ) {\n return value;\n } else return defaultVal;\n },\n getPreferenceNumber(key, defaultVal) {\n var value;\n if (\n (value = new URLSearchParams(window.location.search).get(key)) !== null ||\n (this.testLocalStorage && (value = localStorage.getItem(key)) !== null)\n ) {\n return Number(value);\n } else return defaultVal;\n },\n apiUrl() {\n return this.getPreferenceString(\"instance\", \"https://pipedapi.kavin.rocks\");\n },\n getAuthToken() {\n return this.getPreferenceString(\"authToken\" + this.hashCode(this.apiUrl()));\n },\n hashCode(s) {\n return s.split(\"\").reduce(function (a, b) {\n a = (a << 5) - a + b.charCodeAt(0);\n return a & a;\n }, 0);\n },\n timeAgo(time) {\n return timeAgo.format(time);\n },\n urlify(string) {\n if (!string) return \"\";\n const urlRegex = /(((https?:\\/\\/)|(www\\.))[^\\s]+)/g;\n const emailRegex = /([\\w-\\\\.]+@(?:[\\w-]+\\.)+[\\w-]{2,4})/g;\n return string\n .replace(urlRegex, url => {\n return `${url}`;\n })\n .replace(emailRegex, email => {\n return `${email}`;\n });\n },\n async updateWatched(videos) {\n if (window.db) {\n var tx = window.db.transaction(\"watch_history\", \"readonly\");\n var store = tx.objectStore(\"watch_history\");\n videos.map(async video => {\n var request = store.get(video.url.substr(-11));\n request.onsuccess = function (event) {\n if (event.target.result) {\n video.watched = true;\n }\n };\n });\n }\n },\n },\n computed: {\n theme() {\n return this.getPreferenceString(\"theme\", \"dark\");\n },\n authenticated(_this) {\n return _this.getAuthToken() !== undefined;\n },\n testLocalStorage() {\n try {\n if (window.localStorage !== undefined) localStorage;\n return true;\n } catch {\n return false;\n }\n },\n defaultLangage() {\n const languages = window.navigator.languages;\n for (let i = 0; i < languages.length; i++) {\n try {\n require(\"@/locales/\" + languages[i] + \".json\");\n return languages[i];\n } catch {\n continue;\n }\n }\n return \"en\";\n },\n },\n data() {\n return {\n TimeAgo: TimeAgo,\n TimeAgoConfig: timeAgo,\n };\n },\n};\n\nconst i18n = createI18n({\n globalInjection: true,\n legacy: false,\n locale: \"en\",\n fallbackLocale: \"en\",\n messages: {\n en: enLocale,\n },\n});\n\nwindow.i18n = i18n;\n\nconst app = createApp(App);\napp.use(i18n);\napp.use(router);\napp.mixin(mixin);\napp.component(\"FontAwesomeIcon\", FontAwesomeIcon);\napp.mount(\"#app\");\n"],"names":["_createElementBlock","_openBlock","_withModifiers","_createVNode","library","en","DOMPurify"],"mappings":"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"}