This commit is contained in:
2026-01-13 12:23:56 +00:00
parent 164c89d362
commit a2e703d88f
6 changed files with 85 additions and 8 deletions

View File

@@ -12,6 +12,7 @@
"axios": "^1.13.2", "axios": "^1.13.2",
"katex": "^0.16.27", "katex": "^0.16.27",
"markdown-it": "^14.1.0", "markdown-it": "^14.1.0",
"markdown-it-wikilinks": "^1.4.0",
"pinia": "^3.0.4", "pinia": "^3.0.4",
"vue": "^3.5.22", "vue": "^3.5.22",
"vue-router": "^4.6.3" "vue-router": "^4.6.3"
@@ -2113,6 +2114,12 @@
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
"license": "MIT"
},
"node_modules/fdir": { "node_modules/fdir": {
"version": "6.5.0", "version": "6.5.0",
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
@@ -2459,6 +2466,24 @@
"markdown-it": "bin/markdown-it.mjs" "markdown-it": "bin/markdown-it.mjs"
} }
}, },
"node_modules/markdown-it-regexp": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/markdown-it-regexp/-/markdown-it-regexp-0.4.0.tgz",
"integrity": "sha512-0XQmr46K/rMKnI93Y3CLXsHj4jIioRETTAiVnJnjrZCEkGaDOmUxTbZj/aZ17G5NlRcVpWBYjqpwSlQ9lj+Kxw==",
"license": "MIT"
},
"node_modules/markdown-it-wikilinks": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/markdown-it-wikilinks/-/markdown-it-wikilinks-1.4.0.tgz",
"integrity": "sha512-LJhRWett3Do9doMMkpodOV5pvAMZjOOODqcifPfd+jdobhdg3UY8i824L5657UBWx7HSbOqicwNUzcVjOiswgw==",
"license": "MIT",
"dependencies": {
"extend": "^3.0.2",
"markdown-it-regexp": "^0.4.0",
"reurl": "git+https://github.com/jsepia/reurl.git#commonjs",
"sanitize-filename": "^1.6.3"
}
},
"node_modules/math-intrinsics": { "node_modules/math-intrinsics": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
@@ -2656,6 +2681,15 @@
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/punycode": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
"integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
"license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/punycode.js": { "node_modules/punycode.js": {
"version": "2.3.1", "version": "2.3.1",
"resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz",
@@ -2665,6 +2699,14 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/reurl": {
"version": "1.0.0-rc.2",
"resolved": "git+ssh://git@github.com/jsepia/reurl.git#a3210117636c115fb139517fcfb2ea929025cded",
"license": "MIT",
"dependencies": {
"spec-url": "^2.0.0-dev.1"
}
},
"node_modules/rfdc": { "node_modules/rfdc": {
"version": "1.4.1", "version": "1.4.1",
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz",
@@ -2729,6 +2771,15 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/sanitize-filename": {
"version": "1.6.3",
"resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz",
"integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==",
"license": "WTFPL OR ISC",
"dependencies": {
"truncate-utf8-bytes": "^1.0.0"
}
},
"node_modules/semver": { "node_modules/semver": {
"version": "6.3.1", "version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
@@ -2772,6 +2823,15 @@
"node": ">=0.10.0" "node": ">=0.10.0"
} }
}, },
"node_modules/spec-url": {
"version": "2.0.0-dev.1",
"resolved": "https://registry.npmjs.org/spec-url/-/spec-url-2.0.0-dev.1.tgz",
"integrity": "sha512-NKE2wT6tsvYa4xfVFcnjxSDFJwDOwU1NU2NhfnxFksutZrOShZ2p7pgQWS98Evq0cHMGBBjGQlbwrcAHLDywfw==",
"license": "MIT",
"dependencies": {
"punycode": "^2.1.1"
}
},
"node_modules/superjson": { "node_modules/superjson": {
"version": "2.2.6", "version": "2.2.6",
"resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.6.tgz", "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.6.tgz",
@@ -2811,6 +2871,15 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/truncate-utf8-bytes": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz",
"integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==",
"license": "WTFPL",
"dependencies": {
"utf8-byte-length": "^1.0.1"
}
},
"node_modules/uc.micro": { "node_modules/uc.micro": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz",
@@ -2865,6 +2934,12 @@
"browserslist": ">= 4.21.0" "browserslist": ">= 4.21.0"
} }
}, },
"node_modules/utf8-byte-length": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz",
"integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==",
"license": "(WTFPL OR MIT)"
},
"node_modules/vite": { "node_modules/vite": {
"version": "7.3.1", "version": "7.3.1",
"resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz",

View File

@@ -16,6 +16,7 @@
"axios": "^1.13.2", "axios": "^1.13.2",
"katex": "^0.16.27", "katex": "^0.16.27",
"markdown-it": "^14.1.0", "markdown-it": "^14.1.0",
"markdown-it-wikilinks": "^1.4.0",
"pinia": "^3.0.4", "pinia": "^3.0.4",
"vue": "^3.5.22", "vue": "^3.5.22",
"vue-router": "^4.6.3" "vue-router": "^4.6.3"

View File

@@ -1,6 +1,7 @@
<script setup> <script setup>
import RouterTable from "@/components/quick/RouterTable.vue"; import RouterTable from "@/components/quick/RouterTable.vue";
import LinkTable from "@/components/quick/LinkTable.vue"; import LinkTable from "@/components/quick/LinkTable.vue";
import Markdown from "@/components/quick/Markdown.vue";
const site_links = [ const site_links = [
{ name: "CV", link: "/cv" }, { name: "CV", link: "/cv" },
@@ -21,6 +22,7 @@ const social_links = [
<div class="flex-col space-between"> <div class="flex-col space-between">
<div class="flex-col gap"> <div class="flex-col gap">
<RouterTable :linkArr="site_links" /> <RouterTable :linkArr="site_links" />
<Markdown :source="`[[Wiki Link]]`" />
</div> </div>
<div class="flex-col gap"> <div class="flex-col gap">
<LinkTable :linkArr="social_links" /> <LinkTable :linkArr="social_links" />

View File

@@ -4,6 +4,7 @@ import axios from "axios";
const song = ref(null); const song = ref(null);
const fetched = ref(false); const fetched = ref(false);
const intervalId = ref(null);
let songs = []; let songs = [];
const len = 3; const len = 3;
let idx = 0; let idx = 0;
@@ -20,14 +21,16 @@ async function fetchRecent() {
} }
function nextSong() { function nextSong() {
clearInterval(intervalId.value);
song.value = songs[idx]; song.value = songs[idx];
idx = (idx + 1) % len; idx = (idx + 1) % len;
intervalId.value = setInterval(nextSong, 5000);
} }
onMounted(() => { onMounted(() => {
fetchRecent(); fetchRecent();
setInterval(fetchRecent, 120000); setInterval(fetchRecent, 120000);
setInterval(nextSong, 5000); intervalId.value = setInterval(nextSong, 5000);
}); });
</script> </script>

View File

@@ -1,8 +1,10 @@
<script setup> <script setup>
import MarkdownIt from "markdown-it"; import MarkdownIt from "markdown-it";
import { katex } from "@mdit/plugin-katex"; import { katex } from "@mdit/plugin-katex";
import wiki from "markdown-it-wikilinks";
const mdIt = MarkdownIt().use(katex); const mdIt = MarkdownIt().use(katex);
//.use(wiki);
const props = defineProps({ const props = defineProps({
source: String, source: String,

View File

@@ -12,17 +12,11 @@ const router = createRouter({
{ {
path: "/cv", path: "/cv",
name: "cv", name: "cv",
// route level code-splitting
// this generates a separate chunk (About.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import("../views/CV.vue"), component: () => import("../views/CV.vue"),
}, },
{ {
path: "/admin", path: "/admin",
name: "admin", name: "admin",
// route level code-splitting
// this generates a separate chunk (About.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import("../views/Admin.vue"), component: () => import("../views/Admin.vue"),
}, },
{ {
@@ -31,7 +25,7 @@ const router = createRouter({
component: () => import("../views/Bookmarks.vue"), component: () => import("../views/Bookmarks.vue"),
}, },
{ {
path: "/notes", path: "/notes/:pathMatch(.*)*",
name: "notes", name: "notes",
component: () => import("../views/Notes.vue"), component: () => import("../views/Notes.vue"),
}, },