Compare commits

21 Commits

Author SHA1 Message Date
c2b11884e6 Merge pull request 'Update dependency katex to ^0.17.0' (#9) from renovate/katex-0.x into nuxt
Reviewed-on: #9
2026-06-06 15:12:42 +00:00
164aee574e Update dependency katex to ^0.17.0
Some checks failed
renovate/artifacts Artifact file update failure
2026-06-06 15:11:47 +00:00
e592334fb2 Merge pull request 'Update Rust crate serde_json to v1.0.150' (#7) from renovate/serde_json-1.x-lockfile into nuxt
Reviewed-on: #7
2026-05-30 08:50:54 +00:00
a832d5cf8f Merge pull request 'Update Rust crate tauri to v2.11.2' (#8) from renovate/tauri-2.x-lockfile into nuxt
Reviewed-on: #8
2026-05-30 08:50:45 +00:00
9c88cfa860 Update Rust crate tauri to v2.11.2 2026-05-30 08:39:34 +00:00
6ed630b37f Update Rust crate serde_json to v1.0.150 2026-05-30 08:39:11 +00:00
8ecb64b80a Update node Docker tag to v26 (#6) 2026-05-09 10:17:26 +00:00
2efef8c4aa Update node Docker tag to v26 2026-05-08 11:08:52 +00:00
a42226dc13 Update package-lock.json 2026-05-08 12:17:25 +02:00
9f51261e58 Merge pull request 'Update node Docker tag to v25' (#5) from renovate/node-25.x into nuxt
Reviewed-on: #5
2026-05-06 13:02:04 +00:00
28cf26c953 Update node Docker tag to v25 2026-05-06 13:01:49 +00:00
31ef7c245f Merge pull request 'Update Rust crate tauri to v2.11.1' (#3) from renovate/tauri-2.x-lockfile into nuxt
Reviewed-on: #3
2026-05-06 12:58:54 +00:00
1ed2efb52a Update Rust crate tauri to v2.11.1 2026-05-06 12:56:38 +00:00
8d7c0fbcc5 Merge pull request 'Update Rust crate serde_json to v1.0.149' (#2) from renovate/serde_json-1.x-lockfile into nuxt
Reviewed-on: #2
2026-05-06 12:55:04 +00:00
5dd1d0f88d Merge pull request 'Update Rust crate tauri-plugin-opener to v2.5.4' (#4) from renovate/tauri-plugin-opener-2.x-lockfile into nuxt
Reviewed-on: #4
2026-05-06 12:53:30 +00:00
358461c50a Merge pull request 'Update Rust crate serde to v1.0.228' (#1) from renovate/serde-1.x-lockfile into nuxt
Reviewed-on: #1
2026-05-06 12:52:58 +00:00
aa43d12787 Update Rust crate tauri-plugin-opener to v2.5.4 2026-05-06 12:48:27 +00:00
f9fe6e9639 Add bildschau and bildvorschau 2026-05-06 14:48:27 +02:00
48595fb8b2 Update Rust crate serde_json to v1.0.149 2026-05-06 11:58:21 +00:00
b4e7bbfa83 Update Rust crate serde to v1.0.228 2026-05-06 11:57:58 +00:00
8f8decf263 Fix Galerie 2026-05-05 12:29:21 +02:00
17 changed files with 1269 additions and 1165 deletions

View File

@@ -1,4 +1,4 @@
FROM node:20-alpine
FROM node:26-alpine
WORKDIR /app

View File

@@ -1,6 +0,0 @@
<template>
<div>
<NuxtRouteAnnouncer />
<NuxtWelcome />
</div>
</template>

View File

@@ -1,6 +1,5 @@
<script setup>
<script setup lang="ts">
import emblaCarouselVue from "embla-carousel-vue";
import RitzenbergenLib from "../ritzenbergenlib.ts";
import { onMounted, ref } from "vue";
import EmblaItem from "./EmblaItem.vue";
@@ -42,13 +41,22 @@ defineProps({
type: Array,
required: true,
},
jahre: {
type: Array,
required: false,
},
fontSize:{
type: Number,
required: false,
default: 100
}
});
</script>
<template>
<div class="embla" ref="emblaRef">
<div class="embla__container">
<EmblaItem v-for="el, i in src" :src="el" :link="links[i]" />
<EmblaItem v-for="el, i in src" :src="el" :jahr="jahre?jahre[i]:null" :link="links[i]" :font-size="fontSize"/>
</div>
<button class="embla__button embla__button--prev" @click="prev">
<span class="mobi-mbri mobi-mbri-arrow-prev" aria-hidden="true"></span>

View File

@@ -1,7 +1,5 @@
<script lang="ts">
export default {
props: ["src", "link"],
};
<script lang="ts" setup>
const {src, link, jahr, fontSize}=defineProps(["src", "link","jahr","fontSize"]);
</script>
<template>
<div
@@ -11,16 +9,31 @@ export default {
<div class="slide-content">
<div class="item-img">
<div class="item-wrapper">
<RouterLink :to="link">
<NuxtLink :to="link">
<img
:src="
src
"
/>
</RouterLink>
<span class="jahr-overlay" v-if="jahr" :style="{'font-size': fontSize+'px'}">
{{ jahr }}
</span>
</NuxtLink>
</div>
</div>
</div>
</div>
</template>
<style></style>
<style scoped>
.item-wrapper {
position: relative;
}
.jahr-overlay {
color: white;
mix-blend-mode: difference;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
}
</style>

View File

@@ -1,38 +1,37 @@
<script lang="ts" setup>
import RitzenbergenLib from "../../ritzenbergenlib.ts";
import {ref} from "vue";
async function loadImage(path: string) {
try{
const response = await fetch(RitzenbergenLib.RitzenbergenLib.api(path), {
headers: {
"Accept":"image/png"
}
});
if(!response.ok) return false;
const blob = await response.blob();
return URL.createObjectURL(blob);
// async function loadImage(path: string) {
// try{
// const response = await fetch(RitzenbergenLib.RitzenbergenLib.api(path), {
// headers: {
// "Accept":"image/png"
// }
// });
// if(!response.ok) return false;
// const blob = await response.blob();
// return URL.createObjectURL(blob);
}
catch(e){
console.warn(e);
}
}
// }
// catch(e){
// console.warn(e);
// }
// }
loadImage("randomimage.php?path=/doppelkopf&recursive=1&tn=1&color=white&text=Doppelkopf&size=3").then((url)=>{
images.value[0]=url;
});
loadImage("randomimage.php?path=/erntefest&recursive=1&tn=1&color=white&text=Erntefest&size=3").then((url)=>{
images.value[1]=url;
});
loadImage("randomimage.php?path=/fussball&recursive=1&tn=1&color=white&text=Fußballturnier&size=3").then((url)=>{
images.value[2]=url;
});
loadImage("randomimage.php?path=/osterfeuer&recursive=1&tn=1&color=white&text=Osterfeuer&size=3").then((url)=>{
images.value[3]=url;
});
// loadImage("randomimage.php?path=/doppelkopf&recursive=1&tn=1&color=white&text=Doppelkopf&size=3").then((url)=>{
// images.value[0]=url;
// });
// loadImage("randomimage.php?path=/erntefest&recursive=1&tn=1&color=white&text=Erntefest&size=3").then((url)=>{
// images.value[1]=url;
// });
// loadImage("randomimage.php?path=/fussball&recursive=1&tn=1&color=white&text=Fußballturnier&size=3").then((url)=>{
// images.value[2]=url;
// });
// loadImage("randomimage.php?path=/osterfeuer&recursive=1&tn=1&color=white&text=Osterfeuer&size=3").then((url)=>{
// images.value[3]=url;
// });
const images=ref([]);
const images=ref(["bild1","bild2","bild3","bild4"]);
</script>
<template>
<section
@@ -64,9 +63,9 @@ const images=ref([]);
>
<div class="item-wrapper">
<div class="item-img">
<RouterLink to="/galerie/doppelkopf"
<NuxtLink to="/galerie/#doppelkopf"
><img :src="images[0]"
/></RouterLink>
/></NuxtLink>
</div>
</div>
</div>
@@ -75,9 +74,9 @@ const images=ref([]);
>
<div class="item-wrapper">
<div class="item-img">
<RouterLink to="/galerie/erntefest"
<NuxtLink to="/galerie/#erntefest"
><img :src="images[1]"
/></RouterLink>
/></NuxtLink>
</div>
</div>
</div>
@@ -86,9 +85,9 @@ const images=ref([]);
>
<div class="item-wrapper">
<div class="item-img">
<RouterLink to="/galerie/fussball"
<NuxtLink to="/galerie/#fussball"
><img :src="images[2]"
/></RouterLink>
/></NuxtLink>
</div>
</div>
</div>
@@ -97,9 +96,9 @@ const images=ref([]);
>
<div class="item-wrapper">
<div class="item-img">
<RouterLink to="/galerie/osterfeuer"
<NuxtLink to="/galerie/#osterfeuer"
><img :src="images[3]"
/></RouterLink>
/></NuxtLink>
</div>
</div>
</div>

View File

@@ -5,7 +5,7 @@ import { ref } from "vue";
import Modal from "../Modal.vue";
import { Formular } from "../../dto/formular.dto";
const { $gql } = useNuxtApp();
const { $gql, $myfetch } = useNuxtApp();
const forms = await $gql.request<{formulare: Formular[] }>(`
{
@@ -35,26 +35,17 @@ const forms = await $gql.request<{formulare: Formular[] }>(`
).then(data=>data.formulare);
const props=defineProps({
formid: {
type: [Number, null],
required: false,
default: null
}
});
function submit($event: Event) {
/*const url = new URL(
RitzenbergenLib.RitzenbergenLib.api("/formulare/submit.php")
);
console.log($event);
if($event.target==null) return;
const formData = new FormData(<HTMLFormElement>$event.target);
fetch(url.toString(), {
const body = Object.fromEntries(formData);
$myfetch("/formulare/submit/"+(<HTMLFormElement>$event.target).dataset.formid,{
method: "POST",
body: formData
body
}).then(() => {
init();
values.value={};
});*/
});
}
const modalOpened=ref<boolean>(false);
@@ -102,9 +93,9 @@ const values=ref({});
data-form-title="Form Name"
:data-formid="form.id"
:data-i="i"
@submit.prevent="submit"
>
<!-- @submit.prevent="submit" -->
<div v-for="(field, j) in form.fields" :key="j">
<label
v-if="field.placeholder == null"
@@ -156,7 +147,6 @@ const values=ref({});
Absenden
</button>
</div>
<input type="hidden" :value="form.id" name="internalformid" />
</form>
</div>
</div>

Submodule app/dto updated: 12938c8125...78d9d15d64

View File

@@ -1,28 +1,71 @@
<script lang="ts">
import MyFooter from "../components/MyFooter.vue"; // Geändert von Footer auf MyFooter
import Navbar from "../components/Navbar.vue";
import RitzenbergenLib from "../ritzenbergenlib";
import $ from "jquery";
import type { JahrMitBild } from "~/dto/galerie.dto";
import MyFooter from "../../../../components/MyFooter.vue"; // Geändert von Footer auf MyFooter
import Navbar from "../../../../components/Navbar.vue";
import RitzenbergenLib from "../../../../ritzenbergenlib";
const route=useRoute();
const {$gql} = useNuxtApp();
export default {
components: {
Navbar,
MyFooter, // Geändert von Footer auf MyFooter
},
onMounted(){
console.log($gql.request<{bilder:JahrMitBild[]}>(`
{
bilder(event: "${route.params.ev}", jahr: ${route.params.jahr}) {
jahr
bild
}
}
`));
},
data() {
return {
bild: parseInt(<string>this.$route.params.bild),
ev: this.$route.params.ev,
jahr: this.$route.params.jahr,
bild: parseInt(<string>route.params.i),
ev: route.params.ev,
jahr: route.params.jahr,
RitzenbergenLib: RitzenbergenLib.RitzenbergenLib,
username: "",
kommentar: "",
reloader: false
reloader: false,
bilder: [],
};
},
asyncComputed: {
kommentare: {
get() {
},
default: null,
watch: ["bild", "ev", "jahr","reloader"],
},
bilder: {
get(){
// erwartete Rückgabe: ["/erntefest/2011/pi01.jpg"]
return $gql.request(`
{
bilder(event: "${route.params.event}", jahr: ${route.params.year})
}
`).then(()=>{
});
},
default: [],
watch: []
}
},
methods: {
getKommentare(){
const url = new URL(
RitzenbergenLib.RitzenbergenLib.api(
"/galerie/get_kommentare.php"
@@ -34,34 +77,8 @@ export default {
return fetch(url, {
method: "GET",
}).then((response) => response.json());
},
default: null,
watch: ["bild", "ev", "jahr","reloader"],
},
},
computed: {
bilder() {
let result: any[] = [];
$.ajax(
RitzenbergenLib.RitzenbergenLib.api("/galerie/get_bilder.php"),
{
async: false,
success(data: string) {
result = JSON.parse(data);
},
method: "GET",
data: {
ev: this.ev,
jahr: this.jahr,
},
}
);
return result;
},
},
methods: {
kommentarsubmit() {
const url = new URL(
RitzenbergenLib.RitzenbergenLib.api(
@@ -153,7 +170,7 @@ export default {
<MyFooter></MyFooter>
</template>
<style scoped lang="scss">
@import "../assets/bildschau/style.sass";
@import "../../../../assets/bildschau/style.sass";
.roboto-thin {
font-family: "Roboto", sans-serif;

View File

@@ -1,83 +1,76 @@
<script lang="ts">
import { RouterLink } from "vue-router";
import Navbar from "../components/Navbar.vue";
import RitzenbergenLib from "../ritzenbergenlib";
import Footer from "../components/MyFooter.vue";
import $ from "jquery";
<script lang="ts" setup>
import Navbar from "../../../components/Navbar.vue";
import Footer from "../../../components/MyFooter.vue";
import type { JahrMitBild } from "~/dto/galerie.dto";
export default {
data() {
return {
ev: this.$route.params.ev,
jahr: this.$route.params.jahr,
RitzenbergenLib: RitzenbergenLib.RitzenbergenLib,
};
},
computed: {
bilder() {
let result: any[] = [];
const route=useRoute();
$.ajax(RitzenbergenLib.RitzenbergenLib.api("/galerie/get_bilder.php"),{
async: false,
success(data: string) {
result=JSON.parse(data);
},
method: "GET",
data: {
ev: this.ev,
jahr: this.jahr
}
});
const {event, year} = route.params;
function capitalizeFirstLetter(str: string){
if (str.length === 0) return str;
return str[0].toUpperCase() + str.slice(1);
}
const {$gql} = useNuxtApp();
const bilder: string[]=(await $gql.request<{bilder:JahrMitBild[]}>(`
{
bilder(event: "${event}", jahr: ${year}) {
jahr
bild
}
}
`)).bilder[0].bild;
function toTable<T>(input: T[], columns: number = 5): T[][] {
if (columns <= 0) {
throw new Error("columns must be > 0");
}
const result: T[][] = [];
for (let i = 0; i < input.length; i += columns) {
const row = input.slice(i, i + columns);
result.push(row);
}
return result;
}
function getImg(filename){
return 'http://localhost:3000/api/galerie/bild/'+event+'/'+year+'/'+filename;
}
const bildersplitted=toTable<string>(bilder);
console.log(bildersplitted);;
return result;
},
bildersplitted() {
let result: any[] = [];
this.bilder.forEach((element, i) => {
if (i % 5 == 0) {
result.push([]);
}
result[result.length - 1].push(element);
});
return result;
},
einereihe() {
return this.bilder.length <= 5;
},
},
components: {
RouterLink,
Navbar,
Footer,
},
methods: {
capitalizeFirstLetter(str: string) {
return str.charAt(0).toUpperCase() + str.slice(1);
},
},
};
</script>
<template>
<Navbar />
<section class="galerie-section">
<div class="galerie-container">
<h2>{{ capitalizeFirstLetter(ev) }} {{ jahr }}</h2>
<h2>{{ capitalizeFirstLetter(<string>event) }} {{ year }}</h2>
Vorschaubilder <br />
{{ bilder.length }} Bilder
<table>
<tbody>
<tr v-for="row, i in bildersplitted">
<td v-for="column, j in row">
<RouterLink :to="jahr+'/'+(i*5+j).toString()"
><img :src="RitzenbergenLib.get_img(column)" alt="Vorschaubild"
/></RouterLink>
<NuxtLink :to="'/bildschau/'+event+'/'+year+'/'+(i*5+j)"
><img :src="getImg(column)" alt="Vorschaubild"
/></NuxtLink>
</td>
</tr>
</tbody>
</table>
</div>
</section>
<div class="platzhalter" v-if="einereihe"></div>
<div class="platzhalter" v-if="bilder.length<=5"></div> <!-- Eine Reihe -->
<Footer></Footer>
</template>
<style scoped>

View File

@@ -1,115 +1,82 @@
<script lang="js">
<script lang="ts" setup>
import Navbar from "../components/Navbar.vue";
import Embla from "../components/Embla.vue";
import RitzenbergenLib from "../ritzenbergenlib";
import MyFooter from "../components/MyFooter.vue"; // Geändert von Footer auf MyFooter
import MyFooter from "../components/MyFooter.vue";
export default {
components: {
Navbar,
Embla,
MyFooter, // Geändert von Footer auf MyFooter
},
computed: {
events() {
let erntefeste = this.get_jahre("erntefest");
let osterfeuer = this.get_jahre("osterfeuer");
let doppelkopf = this.get_jahre("doppelkopf");
let fussball = this.get_jahre("fussball");
if(erntefeste==undefined) return [];
let result = [
{
src: erntefeste.map((erntefest) =>
RitzenbergenLib.RitzenbergenLib.api(
"randomimage.php?path=/erntefest/" +
erntefest +
"&recursive=1&tn=1&text=" +
erntefest +
"&color=white"
)
),
title: "Erntefeste",
ev: "erntefest",
},
{
src: osterfeuer.map((osterfeuer) =>
RitzenbergenLib.RitzenbergenLib.api(
"randomimage.php?path=/osterfeuer/" +
osterfeuer +
"&recursive=1&tn=1&text=" +
osterfeuer +
"&color=white"
)
),
title: "Osterfeuer",
ev: "osterfeuer",
},
{
src: doppelkopf.map((doppelkopf) =>
RitzenbergenLib.RitzenbergenLib.api(
"randomimage.php?path=/doppelkopf/" +
doppelkopf +
"&recursive=1&tn=1&text=" +
doppelkopf +
"&color=white"
)
),
title: "Doppelkopf",
ev: "doppelkopf",
},
{
src: fussball.map((fussball) =>
RitzenbergenLib.RitzenbergenLib.api(
"randomimage.php?path=/fussball/" +
fussball +
"&recursive=1&tn=1&text=" +
fussball +
"&color=white"
)
),
title: "Fußballturniere",
ev: "fussball",
},
];
const { $gql } = useNuxtApp();
return result.map((ev) => {
let jahre = this.get_jahre(ev.ev);
ev.links = jahre.map((jahr) => {
return "/bild/" + ev.ev + "/" + jahr;
});
return ev;
});
},
},
methods: {
get_jahre(event) {
let result;
$.ajax(RitzenbergenLib.RitzenbergenLib.api("/galerie/get_jahre.php"), {
success(data) {
result = JSON.parse(data);
},
async: false,
data: { event },
});
return result;
},
},
mounted(){
if(this.$route.params.ev){
let ev = this.$route.params.ev;
if(this.$refs[ev]) this.$refs[ev][0].scrollIntoView();
this.$router.push("/galerie");
}
function mapperSrc(event:string, jahr:number){
return "http://localhost:3000/api/galerie/randomimage/"+event+"/"+jahr;
}
function mapperLink(event:string, jahr:number){
return "/bildvorschau/"+event+"/"+jahr;
}
const events = await $gql.request<{
erntefest: Array<{jahr:number}>,
osterfeuer: Array<{jahr:number}>,
fussball: Array<{jahr:number}>,
doppelkopf: Array<{jahr:number}>
}>(`
{
erntefest: bilder(event: "erntefest") {
jahr
}
};
osterfeuer: bilder(event: "osterfeuer") {
jahr
}
doppelkopf: bilder(event: "doppelkopf") {
jahr
}
fussball: bilder(event: "fussball") {
jahr
}
}
`);
const mappedEvents=[
{
"title":"Erntefest",
"src": events.erntefest.map((event)=>mapperSrc("erntefest",event.jahr)),
"links": events.erntefest.map((event)=>mapperLink("erntefest",event.jahr)),
"id":"erntefest",
"jahre": events.erntefest.map((event)=>event.jahr)
},
{
"title":"Osterfeuer",
"src": events.osterfeuer.map((event)=>mapperSrc("osterfeuer",event.jahr)),
"links": events.osterfeuer.map((event)=>mapperLink("osterfeuer",event.jahr)),
"id":"osterfeuer",
"jahre": events.osterfeuer.map((ev)=>ev.jahr),
},
{
"title":"Preisdoppelkopf",
"src": events.doppelkopf.map((event)=>mapperSrc("doppelkopf",event.jahr)),
"links": events.doppelkopf.map((event)=>mapperLink("doppelkopf",event.jahr)),
"id":"doppelkopf",
"jahre": events.doppelkopf.map((ev)=>ev.jahr),
},
{
"title":"Fußballturniere",
"src": events.fussball.map((event)=>mapperSrc("fussball",event.jahr)),
"links": events.fussball.map((event)=>mapperLink("fussball",event.jahr)),
"id":"fussball",
"jahre": events.fussball.map((ev)=>ev.jahr),
},
]
</script>
<template>
<Navbar :links="[
{ title: 'Erntefest', link: '/galerie/erntefest' },
{ title: 'Osterfeuer', link: '/galerie/osterfeuer' },
{ title: 'Doppelkopf', link: '/galerie/doppelkopf' },
{ title: 'Fußballturniere', link: '/galerie/fussball' },
{ title: 'Erntefest', link: '/galerie/#erntefest' },
{ title: 'Osterfeuer', link: '/galerie/#osterfeuer' },
{ title: 'Doppelkopf', link: '/galerie/#doppelkopf' },
{ title: 'Fußballturniere', link: '/galerie/#fussball' },
]" />
<br />
<br />
@@ -138,8 +105,8 @@ export default {
<br /><br />
<section
class="slider4 mbr-embla cid-u6k7q0yLdW"
:ref="event.ev"
v-for="event in events"
v-for="event in mappedEvents"
:id="event.id"
>
<div class="container-fluid">
<div class="row">
@@ -150,13 +117,14 @@ export default {
</h4>
<div class="col-12">
<br />
<Embla :src="event.src" :links="event.links" />
<!-- src: Link zum Randomimage, links: Link zur Bildschau -->
<Embla :src="event.src" :links="event.links" :jahre="event.jahre" />
</div>
</div>
</div>
<br /><br /><br />
</section>
<h1 v-if="events.length==0">Keine Internetverbindung!</h1>
<h1 v-if="mappedEvents.length==0">Keine Internetverbindung!</h1>
<br /><br /><br />
<MyFooter />
</template>

View File

@@ -1,10 +1,8 @@
<script lang="ts" setup>
import Navbar from "../components/Navbar.vue";
import Modal from "../components/Modal.vue";
import Embla from "../components/Embla.vue";
import Umgebung from "../components/startseite/Umgebung.vue";
import MyFooter from "../components/MyFooter.vue"; // Geändert von Footer auf MyFooter
import RitzenbergenLib from "../ritzenbergenlib";
import MyFooter from "../components/MyFooter.vue";
import WillkommenText from "../components/startseite/WillkommenText.vue";
import Bilderbuch from "../components/startseite/Bilderbuch.vue";
import Forms from "../components/startseite/Forms.vue";
@@ -13,35 +11,7 @@ import Willkommen from "../components/startseite/Willkommen.vue";
import { ref } from "vue";
const images=ref([]);
async function loadImage(path: string) {
try{
const response = await fetch(RitzenbergenLib.RitzenbergenLib.api(path), {
headers: {
"Accept":"image/png"
}
});
if(!response.ok) return false;
const blob = await response.blob();
return URL.createObjectURL(blob);
}catch(e){
console.warn(e);
}
}
// loadImage("randomimage.php?path=/doppelkopf&recursive=1&tn=1&color=white&text=Doppelkopf&size=3").then((url)=>{
// images.value[0]=url;
// });
// loadImage("randomimage.php?path=/erntefest&recursive=1&tn=1&color=white&text=Erntefest&size=3").then((url)=>{
// images.value[1]=url;
// });
// loadImage("randomimage.php?path=/fussball&recursive=1&tn=1&color=white&text=Fußballturnier&size=3").then((url)=>{
// images.value[2]=url;
// });
// loadImage("randomimage.php?path=/osterfeuer&recursive=1&tn=1&color=white&text=Osterfeuer&size=3").then((url)=>{
// images.value[3]=url;
// });
const images=ref(["http://localhost:3000/api/galerie/randomimage/erntefest","http://localhost:3000/api/galerie/randomimage/osterfeuer","http://localhost:3000/api/galerie/randomimage/doppelkopf","http://localhost:3000/api/galerie/randomimage/fussball","http://localhost:3000/api/galerie/bild/andere/0/hauptfoto.jpg"]);
</script>
<template>
@@ -50,29 +20,31 @@ async function loadImage(path: string) {
<Willkommen/>
<!-- <Events style="margin-top: 120px;"/> -->
<Events style="margin-top: 120px;"/>
<Forms/>
<!-- <Bilderbuch/> -->
<Bilderbuch/>
<!-- <section class="slider4 mbr-embla cid-u6k7q0yLdW" id="gallery-13-u6k7q0yLdW" v-if="images[0]">
<section class="slider4 mbr-embla cid-u6k7q0yLdW" id="gallery-13-u6k7q0yLdW" v-if="images[0]">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<Embla :src="images"
:font-size="49"
:links='[
"/galerie/erntefest",
"/galerie/osterfeuer",
"/galerie/doppelkopf",
"/galerie/fussball",
"/galerie/#erntefest",
"/galerie/#osterfeuer",
"/galerie/#doppelkopf",
"/galerie/#fussball",
""
]'
:jahre="['Erntefest','Osterfeuer','Doppelkopf', 'Fußball','']"
/>
</div>
</div>
@@ -86,7 +58,7 @@ async function loadImage(path: string) {
<br>
<br> -->
<br>
<Umgebung ref="umgebung" id="umgebung" />

View File

@@ -3,7 +3,7 @@ import { GraphQLClient } from "graphql-request";
export default defineNuxtPlugin(() => {
const config=useRuntimeConfig();
const endpoint = process.server
const endpoint = import.meta.server
? config.graphqlEndpoint
: config.public.graphqlEndpoint

15
app/plugins/my-fetch.ts Normal file
View File

@@ -0,0 +1,15 @@
export default defineNuxtPlugin(() => {
const config = useRuntimeConfig()
const myfetch = $fetch.create({
baseURL: import.meta.server ? config.apiBase : config.public.apiBase,
onRequest({ options }) {
},
})
return {
provide: {
myfetch: myfetch,
},
}
})

View File

@@ -11,8 +11,10 @@ export default defineNuxtConfig({
},
runtimeConfig: {
graphqlEndpoint: process.env.GRAPHQL_ENDPOINT_INTERNAL || "http://localhost:3000/graphql",
apiBase: process.env.API_BASE_INTERNAL || "http://localhost:3000/api",
public: {
graphqlEndpoint: process.env.GRAPHQL_ENDPOINT_PUBLIC || "http://backend:3000/graphql"
graphqlEndpoint: process.env.GRAPHQL_ENDPOINT_PUBLIC || "http://backend:3000/graphql",
apiBase: process.env.API_BASE_PUBLIC || "http://backend:3000/api"
}
},

467
package-lock.json generated
View File

@@ -8,18 +8,30 @@
"hasInstallScript": true,
"dependencies": {
"@formkit/nuxt": "^2.0.0",
"@formkit/themes": "^2.0.0",
"@formkit/vue": "^2.0.0",
"@nuxtjs/tailwindcss": "^6.14.0",
"@tauri-apps/api": "^2",
"@tauri-apps/plugin-opener": "^2",
"bcryptjs": "^3.0.3",
"crypto-js": "^4.2.0",
"embla-carousel-vue": "^8.6.0",
"graphql-request": "^7.4.0",
"jarallax": "^3.0.0",
"katex": "^0.16.45",
"moment": "^2.30.1",
"nuxt": "^4.4.2",
"process": "^0.11.10",
"sloc": "^0.3.2",
"striptags": "^3.2.0",
"vscode-langservers-extracted": "^4.10.0",
"vue": "^3.5.32",
"vue-renderer-markdown": "^0.0.62",
"vue-router": "^5.0.4"
},
"devDependencies": {
"@tauri-apps/cli": "^2.10.1",
"@types/markdown-it": "^14.1.2",
"sass-embedded": "^1.99.0"
}
},
@@ -3736,6 +3748,16 @@
"integrity": "sha512-BMq1K3DsElxDWawkX6eLg9+CKJrTVGCBAWVuHXVUV2u0s2711qiChLSId6ikYPfxhdYocLNt3wWwSvDiTvFabw==",
"license": "CC0-1.0"
},
"node_modules/@tauri-apps/api": {
"version": "2.11.0",
"resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.11.0.tgz",
"integrity": "sha512-7CinYODhky9lmO23xHnUFv0Xt43fbtWMyxZcLcRBlFkcgXKuEirBvHpmtJ89YMhyeGcq20Wuc47Fa4XjyniywA==",
"license": "Apache-2.0 OR MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/tauri"
}
},
"node_modules/@tauri-apps/cli": {
"version": "2.10.1",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-2.10.1.tgz",
@@ -3953,6 +3975,15 @@
"node": ">= 10"
}
},
"node_modules/@tauri-apps/plugin-opener": {
"version": "2.5.4",
"resolved": "https://registry.npmjs.org/@tauri-apps/plugin-opener/-/plugin-opener-2.5.4.tgz",
"integrity": "sha512-1HnPkb+AmgO29HBazm4uPLKB+r7zzcTBW1d0fyYp1uP+jwtpoiNDGKMMzz58SFp49nOIrxdE3aUJtT57lfO9CQ==",
"license": "MIT OR Apache-2.0",
"dependencies": {
"@tauri-apps/api": "^2.11.0"
}
},
"node_modules/@tybys/wasm-util": {
"version": "0.10.1",
"resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz",
@@ -3969,17 +4000,31 @@
"integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
"license": "MIT"
},
"node_modules/@types/node": {
"version": "25.6.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.0.tgz",
"integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==",
"node_modules/@types/linkify-it": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz",
"integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/markdown-it": {
"version": "14.1.2",
"resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz",
"integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==",
"dev": true,
"license": "MIT",
"optional": true,
"peer": true,
"dependencies": {
"undici-types": "~7.19.0"
"@types/linkify-it": "^5",
"@types/mdurl": "^2"
}
},
"node_modules/@types/mdurl": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz",
"integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/resolve": {
"version": "1.20.2",
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
@@ -4064,6 +4109,12 @@
"vue": "^3.0.0"
}
},
"node_modules/@vscode/l10n": {
"version": "0.0.18",
"resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.18.tgz",
"integrity": "sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==",
"license": "MIT"
},
"node_modules/@vue-macros/common": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/@vue-macros/common/-/common-3.1.2.tgz",
@@ -4807,6 +4858,15 @@
"node": ">=6.0.0"
}
},
"node_modules/bcryptjs": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-3.0.3.tgz",
"integrity": "sha512-GlF5wPWnSa/X5LKM1o0wz0suXIINz1iHRLvTS+sLyi7XPbe5ycmYI3DlZqVGZZtDgl4DmasFg7gOB3JYbphV5g==",
"license": "BSD-3-Clause",
"bin": {
"bcrypt": "bin/bcrypt"
}
},
"node_modules/binary-extensions": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
@@ -5168,6 +5228,17 @@
"integrity": "sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w==",
"license": "MIT"
},
"node_modules/cli-table": {
"version": "0.3.11",
"resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz",
"integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==",
"dependencies": {
"colors": "1.0.3"
},
"engines": {
"node": ">= 0.2.0"
}
},
"node_modules/cliui": {
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz",
@@ -5226,15 +5297,13 @@
"devOptional": true,
"license": "MIT"
},
"node_modules/commander": {
"version": "13.1.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz",
"integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==",
"node_modules/colors": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
"integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==",
"license": "MIT",
"optional": true,
"peer": true,
"engines": {
"node": ">=18"
"node": ">=0.1.90"
}
},
"node_modules/commondir": {
@@ -5344,6 +5413,17 @@
"node": ">= 0.8"
}
},
"node_modules/core-js": {
"version": "3.49.0",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.49.0.tgz",
"integrity": "sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==",
"hasInstallScript": true,
"license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/core-js"
}
},
"node_modules/core-util-is": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
@@ -5438,6 +5518,12 @@
"uncrypto": "^0.1.3"
}
},
"node_modules/crypto-js": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz",
"integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==",
"license": "MIT"
},
"node_modules/css-declaration-sorter": {
"version": "7.4.0",
"resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.4.0.tgz",
@@ -5938,6 +6024,34 @@
"integrity": "sha512-4MxfbmNDm+KPh066EZy+eUnkcDPcZ35wNmOWzFuh/ijvHsve6kbLTLURy88uCNK5FbpN+yk2nQY6BYh1GEt+wg==",
"license": "ISC"
},
"node_modules/embla-carousel": {
"version": "8.6.0",
"resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.6.0.tgz",
"integrity": "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==",
"license": "MIT"
},
"node_modules/embla-carousel-reactive-utils": {
"version": "8.6.0",
"resolved": "https://registry.npmjs.org/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.6.0.tgz",
"integrity": "sha512-fMVUDUEx0/uIEDM0Mz3dHznDhfX+znCCDCeIophYb1QGVM7YThSWX+wz11zlYwWFOr74b4QLGg0hrGPJeG2s4A==",
"license": "MIT",
"peerDependencies": {
"embla-carousel": "8.6.0"
}
},
"node_modules/embla-carousel-vue": {
"version": "8.6.0",
"resolved": "https://registry.npmjs.org/embla-carousel-vue/-/embla-carousel-vue-8.6.0.tgz",
"integrity": "sha512-v8UO5UsyLocZnu/LbfQA7Dn2QHuZKurJY93VUmZYP//QRWoCWOsionmvLLAlibkET3pGPs7++03VhJKbWD7vhQ==",
"license": "MIT",
"dependencies": {
"embla-carousel": "8.6.0",
"embla-carousel-reactive-utils": "8.6.0"
},
"peerDependencies": {
"vue": "^3.2.37"
}
},
"node_modules/emoji-regex": {
"version": "10.6.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
@@ -6651,6 +6765,15 @@
"node": ">= 0.4"
}
},
"node_modules/he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
"license": "MIT",
"bin": {
"he": "bin/he"
}
},
"node_modules/hookable": {
"version": "6.1.1",
"resolved": "https://registry.npmjs.org/hookable/-/hookable-6.1.1.tgz",
@@ -7176,6 +7299,12 @@
"node": ">=6"
}
},
"node_modules/jsonc-parser": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz",
"integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==",
"license": "MIT"
},
"node_modules/jsonfile": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz",
@@ -7941,6 +8070,15 @@
"integrity": "sha512-aF7yRQr/Q0O2/4pIXm6PZ5G+jAd7QS4Yu8m+WEeEHGnbo+7mE36CbLSDQiXYV8bVL3NfmdeqPJct0tUlnjVSnA==",
"license": "MIT"
},
"node_modules/moment": {
"version": "2.30.1",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz",
"integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==",
"license": "MIT",
"engines": {
"node": "*"
}
},
"node_modules/mrmime": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz",
@@ -8157,6 +8295,16 @@
"node-gyp-build-test": "build-test.js"
}
},
"node_modules/node-html-parser": {
"version": "6.1.13",
"resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-6.1.13.tgz",
"integrity": "sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==",
"license": "MIT",
"dependencies": {
"css-select": "^5.1.0",
"he": "1.2.0"
}
},
"node_modules/node-mock-http": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.4.tgz",
@@ -9545,6 +9693,12 @@
"node": ">=4"
}
},
"node_modules/regenerator-runtime": {
"version": "0.13.11",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
"integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
"license": "MIT"
},
"node_modules/regexp-tree": {
"version": "0.1.27",
"resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz",
@@ -9734,6 +9888,12 @@
"node": ">=12"
}
},
"node_modules/request-light": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/request-light/-/request-light-0.7.0.tgz",
"integrity": "sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==",
"license": "MIT"
},
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -10076,7 +10236,6 @@
"!riscv64",
"!x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
@@ -10090,7 +10249,6 @@
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -10107,7 +10265,6 @@
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -10124,7 +10281,6 @@
"cpu": [
"riscv64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -10141,7 +10297,6 @@
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -10158,7 +10313,6 @@
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -10175,7 +10329,6 @@
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -10192,7 +10345,6 @@
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -10209,7 +10361,6 @@
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -10226,7 +10377,6 @@
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -10243,7 +10393,6 @@
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -10260,7 +10409,6 @@
"cpu": [
"riscv64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -10277,7 +10425,6 @@
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -10294,7 +10441,6 @@
"cpu": [
"riscv64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -10311,7 +10457,6 @@
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -10325,7 +10470,6 @@
"version": "1.99.0",
"resolved": "https://registry.npmjs.org/sass-embedded-unknown-all/-/sass-embedded-unknown-all-1.99.0.tgz",
"integrity": "sha512-P7MxiUtL/XzGo3PX0CaB8lNNEFLQWKikPA8pbKytx9ZCLZSDkt2NJcdAbblB/sqMs4AV3EK2NadV8rI/diq3xg==",
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -10345,7 +10489,6 @@
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -10362,7 +10505,6 @@
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
@@ -10624,6 +10766,54 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/sloc": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/sloc/-/sloc-0.3.2.tgz",
"integrity": "sha512-tnB+gi6TiFpt3qmCGfaV+78dfKwLiH5HRohkW+PnJYHNAcEdk408uxWG+F/3pu4w1eyCO2NC5CpZKuiyMac5GQ==",
"license": "MIT",
"dependencies": {
"async": "^3.2.4",
"cli-table": "^0.3.11",
"commander": "^11.0.0",
"readdirp": "^3.3.0"
},
"bin": {
"sloc": "bin/sloc"
}
},
"node_modules/sloc/node_modules/commander": {
"version": "11.1.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz",
"integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==",
"license": "MIT",
"engines": {
"node": ">=16"
}
},
"node_modules/sloc/node_modules/picomatch": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
"integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
"license": "MIT",
"engines": {
"node": ">=8.6"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/sloc/node_modules/readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
"license": "MIT",
"dependencies": {
"picomatch": "^2.2.1"
},
"engines": {
"node": ">=8.10.0"
}
},
"node_modules/smob": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/smob/-/smob-1.6.1.tgz",
@@ -10866,6 +11056,12 @@
"integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==",
"license": "MIT"
},
"node_modules/striptags": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/striptags/-/striptags-3.2.0.tgz",
"integrity": "sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw==",
"license": "MIT"
},
"node_modules/structured-clone-es": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/structured-clone-es/-/structured-clone-es-2.0.0.tgz",
@@ -11474,21 +11670,6 @@
"integrity": "sha512-wTk4DH3cxwk196uGLK/E9pE45aLfeKJacKmcEgEOA/q5dnPGNxXt0cfYdFxb57L+sEpf1oJH4Dnx/pnRcku9jg==",
"license": "MIT"
},
"node_modules/typescript": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz",
"integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==",
"license": "Apache-2.0",
"optional": true,
"peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
"node": ">=14.17"
}
},
"node_modules/uc.micro": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz",
@@ -11549,14 +11730,6 @@
"node": ">=18.12.0"
}
},
"node_modules/undici-types": {
"version": "7.19.2",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz",
"integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==",
"license": "MIT",
"optional": true,
"peer": true
},
"node_modules/unenv": {
"version": "2.0.0-rc.24",
"resolved": "https://registry.npmjs.org/unenv/-/unenv-2.0.0-rc.24.tgz",
@@ -12311,6 +12484,190 @@
"@types/estree": "^1.0.0"
}
},
"node_modules/vscode-css-languageservice": {
"version": "6.3.10",
"resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-6.3.10.tgz",
"integrity": "sha512-eq5N9Er3fC4vA9zd9EFhyBG90wtCCuXgRSpAndaOgXMh1Wgep5lBgRIeDgjZBW9pa+332yC9+49cZMW8jcL3MA==",
"license": "MIT",
"dependencies": {
"@vscode/l10n": "^0.0.18",
"vscode-languageserver-textdocument": "^1.0.12",
"vscode-languageserver-types": "3.17.5",
"vscode-uri": "^3.1.0"
}
},
"node_modules/vscode-html-languageservice": {
"version": "5.6.2",
"resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-5.6.2.tgz",
"integrity": "sha512-ulCrSnFnfQ16YzvwnYUgEbUEl/ZG7u2eV27YhvLObSHKkb8fw1Z9cgsnUwjTEeDIdJDoTDTDpxuhQwoenoLNMg==",
"license": "MIT",
"dependencies": {
"@vscode/l10n": "^0.0.18",
"vscode-languageserver-textdocument": "^1.0.12",
"vscode-languageserver-types": "^3.17.5",
"vscode-uri": "^3.1.0"
}
},
"node_modules/vscode-json-languageservice": {
"version": "5.7.2",
"resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-5.7.2.tgz",
"integrity": "sha512-WtKRDtJfFEmLrgtu+ODexOHm/6/krRF0k6t+uvkKIKW1Jh9ZIyxZQwJJwB3qhrEgvAxa37zbUg+vn+UyUK/U2w==",
"license": "MIT",
"dependencies": {
"@vscode/l10n": "^0.0.18",
"jsonc-parser": "^3.3.1",
"vscode-languageserver-textdocument": "^1.0.12",
"vscode-languageserver-types": "^3.17.5",
"vscode-uri": "^3.1.0"
}
},
"node_modules/vscode-jsonrpc": {
"version": "9.0.0-next.11",
"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0-next.11.tgz",
"integrity": "sha512-u6LElQNbSiE9OugEEmrUKwH6+8BpPz2S5MDHvQUqHL//I4Q8GPikKLOUf856UnbLkZdhxaPrExac1lA3XwpIPA==",
"license": "MIT",
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/vscode-langservers-extracted": {
"version": "4.10.0",
"resolved": "https://registry.npmjs.org/vscode-langservers-extracted/-/vscode-langservers-extracted-4.10.0.tgz",
"integrity": "sha512-EFf9uQI4dAKbzMQFjDvVm1xJq1DXAQvBEuEfPGrK/xzfsL5xWTfIuRr90NgfmqwO+IEt6vLZm9EOj6R66xIifg==",
"license": "MIT",
"dependencies": {
"@vscode/l10n": "^0.0.18",
"core-js": "^3.20.1",
"jsonc-parser": "^3.2.1",
"regenerator-runtime": "^0.13.9",
"request-light": "^0.7.0",
"semver": "^7.6.1",
"typescript": "^4.0.5",
"vscode-css-languageservice": "^6.2.14",
"vscode-html-languageservice": "^5.2.0",
"vscode-json-languageservice": "^5.3.11",
"vscode-languageserver": "^10.0.0-next.3",
"vscode-languageserver-textdocument": "^1.0.11",
"vscode-languageserver-types": "^3.17.5",
"vscode-markdown-languageservice": "^0.5.0-alpha.6",
"vscode-nls": "^5.2.0",
"vscode-uri": "^3.0.8"
},
"bin": {
"vscode-css-language-server": "bin/vscode-css-language-server",
"vscode-eslint-language-server": "bin/vscode-eslint-language-server",
"vscode-html-language-server": "bin/vscode-html-language-server",
"vscode-json-language-server": "bin/vscode-json-language-server",
"vscode-markdown-language-server": "bin/vscode-markdown-language-server"
}
},
"node_modules/vscode-langservers-extracted/node_modules/typescript": {
"version": "4.9.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
"integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
"license": "Apache-2.0",
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
"node": ">=4.2.0"
}
},
"node_modules/vscode-languageserver": {
"version": "10.0.0-next.17",
"resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-10.0.0-next.17.tgz",
"integrity": "sha512-/bwO/E3RUzIkQ1BQ70gcLdZeM8xvK0JS7gMvtug7yiH0dzTjciqqQTUh3H9NEXsqYEjLzGwiXgRUkt6Z8fQV0Q==",
"license": "MIT",
"dependencies": {
"vscode-languageserver-protocol": "3.17.6-next.17"
},
"bin": {
"installServerIntoExtension": "bin/installServerIntoExtension"
}
},
"node_modules/vscode-languageserver-protocol": {
"version": "3.17.6-next.17",
"resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.6-next.17.tgz",
"integrity": "sha512-HW72YcFsuckfK6oPVuysRXhKiIFJoUvXgspPHvCMWpwe2x9aq2oGZDUSvKx4m/qUGB27+iu8ijAxsFlljYl2IQ==",
"license": "MIT",
"dependencies": {
"vscode-jsonrpc": "9.0.0-next.11",
"vscode-languageserver-types": "3.17.6-next.6"
}
},
"node_modules/vscode-languageserver-protocol/node_modules/vscode-languageserver-types": {
"version": "3.17.6-next.6",
"resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.6-next.6.tgz",
"integrity": "sha512-aiJY5/yW+xzw7KPNlwi3gQtddq/3EIn5z8X8nCgJfaiAij2R1APKePngv+MUdLdYJBVTLu+Qa0ODsT+pHgYguQ==",
"license": "MIT"
},
"node_modules/vscode-languageserver-textdocument": {
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz",
"integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==",
"license": "MIT"
},
"node_modules/vscode-languageserver-types": {
"version": "3.17.5",
"resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz",
"integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==",
"license": "MIT"
},
"node_modules/vscode-markdown-languageservice": {
"version": "0.5.0-alpha.13",
"resolved": "https://registry.npmjs.org/vscode-markdown-languageservice/-/vscode-markdown-languageservice-0.5.0-alpha.13.tgz",
"integrity": "sha512-uxEdsSXdh5Bi/q1kymcqv0JziAN4gi02YPOXhqlEahsgiVGd/5cWGSJIL6hIaRtql3wBgRDNqI7CrOsODh0Yqg==",
"license": "MIT",
"dependencies": {
"@vscode/l10n": "^0.0.18",
"node-html-parser": "^6.1.5",
"picomatch": "^2.3.1",
"vscode-languageserver-protocol": "^3.17.1",
"vscode-languageserver-textdocument": "^1.0.11",
"vscode-uri": "^3.0.7"
},
"engines": {
"node": ">=18"
}
},
"node_modules/vscode-markdown-languageservice/node_modules/picomatch": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
"integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
"license": "MIT",
"engines": {
"node": ">=8.6"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/vscode-markdown-languageservice/node_modules/vscode-jsonrpc": {
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz",
"integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==",
"license": "MIT",
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/vscode-markdown-languageservice/node_modules/vscode-languageserver-protocol": {
"version": "3.17.5",
"resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz",
"integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==",
"license": "MIT",
"dependencies": {
"vscode-jsonrpc": "8.2.0",
"vscode-languageserver-types": "3.17.5"
}
},
"node_modules/vscode-nls": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.2.0.tgz",
"integrity": "sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==",
"license": "MIT"
},
"node_modules/vscode-uri": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz",

View File

@@ -11,31 +11,30 @@
},
"dependencies": {
"@formkit/nuxt": "^2.0.0",
"@formkit/vue": "^2.0.0",
"@formkit/themes": "^2.0.0",
"@formkit/vue": "^2.0.0",
"@nuxtjs/tailwindcss": "^6.14.0",
"@tauri-apps/api": "^2",
"@tauri-apps/plugin-opener": "^2",
"bcryptjs": "^3.0.3",
"crypto-js": "^4.2.0",
"embla-carousel-vue": "^8.6.0",
"graphql-request": "^7.4.0",
"jarallax": "^3.0.0",
"katex": "^0.17.0",
"moment": "^2.30.1",
"nuxt": "^4.4.2",
"process": "^0.11.10",
"sloc": "^0.3.2",
"striptags": "^3.2.0",
"vscode-langservers-extracted": "^4.10.0",
"@nuxtjs/tailwindcss": "^6.14.0",
"graphql-request": "^7.4.0",
"jarallax": "^3.0.0",
"katex": "^0.16.45",
"nuxt": "^4.4.2",
"vue": "^3.5.32",
"vue-renderer-markdown": "^0.0.62",
"vue-router": "^5.0.4"
},
"devDependencies": {
"@tauri-apps/cli": "^2.10.1",
"sass-embedded": "^1.99.0",
"@types/markdown-it": "^14.1.2"
"@types/markdown-it": "^14.1.2",
"sass-embedded": "^1.99.0"
}
}

1343
src-tauri/Cargo.lock generated

File diff suppressed because it is too large Load Diff