Merge pull request #14 from Spythere/development

v1.5.0
This commit is contained in:
Spythere
2025-02-07 14:10:47 +01:00
committed by GitHub
16 changed files with 572 additions and 294 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "genera-tor", "name": "genera-tor",
"version": "1.4.3", "version": "1.5.0",
"private": true, "private": true,
"type": "module", "type": "module",
"scripts": { "scripts": {
-5
View File
@@ -36,16 +36,11 @@ export default defineComponent({
data() { data() {
return { return {
appVersion: packageInfo.version, appVersion: packageInfo.version,
needRefreshTest: false
}; };
}, },
created() { created() {
document.title = `GeneraTOR ${this.appVersion}`; document.title = `GeneraTOR ${this.appVersion}`;
setTimeout(() => {
this.needRefreshTest = true;
}, 500);
} }
}); });
</script> </script>
+90 -46
View File
@@ -1,5 +1,5 @@
<template> <template>
<div class="order"> <div class="order" :class="{ dark: store.orderDarkMode }">
<div class="order_content"> <div class="order_content">
<transition name="order-anim" mode="out-in"> <transition name="order-anim" mode="out-in">
<keep-alive> <keep-alive>
@@ -47,28 +47,18 @@ export default defineComponent({
<style lang="scss"> <style lang="scss">
@import '../styles/global.scss'; @import '../styles/global.scss';
// Order scrollbar $darkModeBgCol: $bgColDarker;
::-webkit-scrollbar { $darkModeTextCol: #eee;
width: 10px;
}
::-webkit-scrollbar-track {
background: #fff;
}
::-webkit-scrollbar-thumb {
background: #ccc;
}
::-webkit-scrollbar-thumb:hover {
background: #aaa;
}
.order { .order {
background-color: white; background-color: white;
color: black; color: black;
height: 925px; &.dark {
background-color: $darkModeBgCol;
color: $darkModeTextCol;
}
max-height: 95vh; max-height: 95vh;
overflow: auto; overflow: auto;
@@ -79,10 +69,28 @@ export default defineComponent({
padding: 0; padding: 0;
} }
.header { textarea:focus-visible {
padding: 0.5em; outline: 2px solid $accentCol;
border: 2px solid black; }
border-bottom: none;
input[type='checkbox']:focus-visible,
input[type='radio']:focus-visible {
outline: 2px solid $accentCol;
}
input[type='checkbox'],
input[type='radio'],
select {
margin-top: 0.5em;
margin-right: 0.5em;
font-size: 0.8em;
color: black;
}
textarea.others {
width: 100%;
min-height: 200px;
resize: vertical;
} }
@media screen and (max-width: 550px) { @media screen and (max-width: 550px) {
@@ -90,6 +98,12 @@ export default defineComponent({
} }
} }
.order_header {
padding: 0.5em;
border: 2px solid black;
border-bottom: none;
}
.order_content { .order_content {
padding: 0.5em; padding: 0.5em;
} }
@@ -112,16 +126,23 @@ export default defineComponent({
align-items: center; align-items: center;
} }
input { .horizontal-bar {
width: 100%;
height: 2px;
background-color: black;
margin: 0.5em 0;
}
.order input {
max-width: 100px; max-width: 100px;
background-color: transparent; background-color: transparent;
outline: none; outline: none;
border: none; border: none;
font-size: 1em;
border-bottom: 2px dotted black;
font-size: 0.9em;
text-align: center; text-align: center;
color: black; border-bottom: 2px dotted black;
&:focus-visible { &:focus-visible {
border-bottom: 2px solid $accentCol; border-bottom: 2px solid $accentCol;
@@ -132,23 +153,52 @@ input {
} }
} }
input[type='checkbox'], /* Dark mode */
input[type='radio'], .order.dark {
textarea, input {
select { border-color: $darkModeTextCol !important;
&:focus-visible { color: $darkModeTextCol !important;
outline: 2px solid $accentCol;
&:focus-visible {
border-bottom: 2px solid $accentCol !important;
}
&::placeholder {
color: #ccc !important;
}
}
select {
color: $darkModeTextCol !important;
border-color: $darkModeTextCol;
&:focus-visible {
border-color: $accentCol;
}
}
option,
textarea {
color: $darkModeTextCol !important;
border-color: $darkModeTextCol !important;
background-color: $bgColDarker !important;
}
.horizontal-bar {
background-color: white;
}
.order_header,
.order_other,
table,
tr,
td {
border-color: $darkModeTextCol !important;
} }
} }
select { .order_table-container {
margin-top: 0.5em; table {
margin-right: 0.5em;
font-size: 0.8em;
}
.table-section {
table.options-table {
width: 100%; width: 100%;
td:first-child { td:first-child {
@@ -186,10 +236,4 @@ select {
opacity: 0; opacity: 0;
} }
} }
textarea.others {
width: 100%;
min-height: 200px;
resize: vertical;
}
</style> </style>
+17 -4
View File
@@ -31,8 +31,8 @@
<hr /> <hr />
<div class="buttons"> <div class="buttons">
<button class="g-button action" @click="selectLocalOrder(order)">Wybierz</button> <button class="g-button" @click="selectLocalOrder(order)">Wybierz</button>
<button class="g-button action" @click="removeOrder(order)">Usuń</button> <button class="g-button" @click="removeOrder(order)">Usuń</button>
</div> </div>
</li> </li>
</transition-group> </transition-group>
@@ -146,7 +146,7 @@ h3 {
margin-bottom: 1em; margin-bottom: 1em;
text-align: center; text-align: center;
background-color: #222; background-color: $bgColDarker;
padding: 1em; padding: 1em;
margin-bottom: 0.5em; margin-bottom: 0.5em;
} }
@@ -155,7 +155,7 @@ li {
text-align: left; text-align: left;
padding: 1em; padding: 1em;
margin: 0.5em; margin: 0.5em;
background-color: #222; background-color: $bgColDarker;
cursor: pointer; cursor: pointer;
@@ -178,5 +178,18 @@ li {
.buttons { .buttons {
display: flex; display: flex;
gap: 0.5em; gap: 0.5em;
button {
padding: 0.5em;
background-color: $bgColLighter;
&:hover {
background-color: #666;
}
&:focus-visible {
outline: 2px solid $accentCol;
}
}
} }
</style> </style>
+22 -2
View File
@@ -24,6 +24,17 @@
</div> </div>
<div class="message_checkboxes"> <div class="message_checkboxes">
<label for="dark-mode" class="g-checkbox">
<input
type="checkbox"
name="dark-mode"
id="dark-mode"
v-model="store.orderDarkMode"
@change="onCheckboxChange"
/>
<span>Ciemny motyw rozkazu</span>
</label>
<label for="copy-increment" class="g-checkbox"> <label for="copy-increment" class="g-checkbox">
<input <input
type="checkbox" type="checkbox"
@@ -34,6 +45,7 @@
/> />
<span>Aktualizuj numer rozkazu po skopiowaniu</span> <span>Aktualizuj numer rozkazu po skopiowaniu</span>
</label> </label>
<label for="save-increment" class="g-checkbox"> <label for="save-increment" class="g-checkbox">
<input <input
type="checkbox" type="checkbox"
@@ -44,6 +56,7 @@
/> />
<span>Aktualizuj numer rozkazu po zapisaniu</span> <span>Aktualizuj numer rozkazu po zapisaniu</span>
</label> </label>
<label for="update-date" class="g-checkbox"> <label for="update-date" class="g-checkbox">
<input <input
type="checkbox" type="checkbox"
@@ -98,6 +111,8 @@ export default defineComponent({
this.incrementOnSave = this.getOrderSetting('save-increment') === 'true'; this.incrementOnSave = this.getOrderSetting('save-increment') === 'true';
this.incrementOnCopy = this.getOrderSetting('copy-increment') === 'true'; this.incrementOnCopy = this.getOrderSetting('copy-increment') === 'true';
this.updateDate = this.getOrderSetting('update-date') === 'true'; this.updateDate = this.getOrderSetting('update-date') === 'true';
this.store.orderDarkMode = this.getOrderSetting('dark-mode') === 'true';
}, },
computed: { computed: {
@@ -239,6 +254,8 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../styles/global.scss';
.order-message { .order-message {
h3 { h3 {
margin: 0; margin: 0;
@@ -254,11 +271,12 @@ export default defineComponent({
.message_body { .message_body {
height: 250px; height: 250px;
overflow: auto; overflow: auto;
background-color: $bgColLighter;
color: white;
text-align: justify; text-align: justify;
background-color: #fff;
border-radius: 0.5em; border-radius: 0.5em;
color: black;
padding: 0.5em; padding: 0.5em;
user-select: none; user-select: none;
-moz-user-select: none; -moz-user-select: none;
@@ -289,6 +307,8 @@ export default defineComponent({
} }
.message_checkboxes { .message_checkboxes {
display: flex;
flex-direction: column;
margin-top: 1em; margin-top: 1em;
} }
+5 -4
View File
@@ -1,8 +1,8 @@
<template> <template>
<section class="order-n"> <section class="order-n">
<section class="header" ref="header"> <section class="order_header" ref="header">
<h2 class="flex-center"> <h2 class="flex-center">
Rozkaz pisemny "N" nr Rozkaz pisemny "N" nr &nbsp;
<input type="number" v-model="order.header.orderNo" placeholder="nr rozkazu" min="1" /> <input type="number" v-model="order.header.orderNo" placeholder="nr rozkazu" min="1" />
</h2> </h2>
<div class="flex-row"> <div class="flex-row">
@@ -12,8 +12,9 @@
<input type="text" v-model="order.header.date" placeholder="data" /> <input type="text" v-model="order.header.date" placeholder="data" />
</div> </div>
</section> </section>
<section class="table-section">
<table class="options-table"> <section class="order_table-container">
<table>
<tbody> <tbody>
<tr> <tr>
<td> <td>
+1 -11
View File
@@ -2,7 +2,7 @@
<section class="order-o"> <section class="order-o">
<section class="order_header"> <section class="order_header">
<h2 class="flex-center" style="padding: 0 0.5em"> <h2 class="flex-center" style="padding: 0 0.5em">
Rozkaz pisemny "O" nr Rozkaz pisemny "O" nr &nbsp;
<input type="number" v-model="order.header.orderNo" placeholder="nr rozkazu" min="1" /> <input type="number" v-model="order.header.orderNo" placeholder="nr rozkazu" min="1" />
</h2> </h2>
@@ -159,16 +159,6 @@ th {
.order_header { .order_header {
padding: 0.5em 0; padding: 0.5em 0;
border: 2px solid black;
border-bottom: none;
}
.horizontal-bar {
width: 100%;
height: 2px;
background-color: black;
margin: 0.5em 0;
} }
.order_table { .order_table {
+5 -4
View File
@@ -1,8 +1,8 @@
<template> <template>
<section class="order-s"> <section class="order-s">
<section class="header"> <section class="order_header">
<h2 class="flex-center"> <h2 class="flex-center">
Rozkaz pisemny "S" nr Rozkaz pisemny "S" nr &nbsp;
<input type="number" v-model="order.header.orderNo" placeholder="nr rozkazu" min="1" /> <input type="number" v-model="order.header.orderNo" placeholder="nr rozkazu" min="1" />
</h2> </h2>
<div class="flex-row"> <div class="flex-row">
@@ -17,8 +17,9 @@
<input type="text" v-model="order.header.date" placeholder="data" /> <input type="text" v-model="order.header.date" placeholder="data" />
</div> </div>
</section> </section>
<section class="table-section">
<table class="options-table"> <section class="order_table-container">
<table>
<tbody> <tbody>
<tr> <tr>
<td> <td>
+147 -144
View File
@@ -1,46 +1,54 @@
<template> <template>
<div class="order-train-picker"> <div class="order-train-picker">
<div class="options"> <div class="options">
<label for="dispatcher-select"> <div class="options-top">
<select name="dispatcher-select" id="dispatcher-select" v-model="selectedDispatcherName">
<option :value="null" disabled>Nick dyżurnego</option>
<option
v-for="dispatcherName in dispatcherNameList"
:value="dispatcherName"
:key="dispatcherName"
>
{{ dispatcherName }}
</option>
</select>
</label>
<label for="scenery-select">
<select <select
name="scenery-select" name="dispatcher-select"
id="scenery-select" id="dispatcher-select"
v-model="selectedSceneryName" v-model="selectedSceneryId"
:disabled="!sceneryNameList || sceneryNameList.length == 0" @change="selectOption"
> >
<option :value="null" disabled>Sceneria</option> <option :value="null" disabled>Sceneria</option>
<option :value="sceneryName" v-for="sceneryName in sceneryNameList" :key="sceneryName"> <option
{{ sceneryName }} v-for="scenery in filteredSceneries"
:value="`${scenery.stationName}|${scenery.stationHash}|${scenery.dispatcherName}|${scenery.region}`"
:key="scenery.dispatcherName + scenery.stationName"
>
{{ scenery.stationName }} &bull; {{ scenery.dispatcherName }}
</option> </option>
</select> </select>
</label>
<label for="checkpoint-select">
<select <select
name="checkpoint-select" name="region-select"
id="checkpoint-select" id="region-select"
v-model="selectedCheckpointName" v-model="selectedRegion"
:disabled="!sceneryNameList || sceneryNameList.length == 0" @change="selectOption"
> >
<option :value="null" disabled>Posterunek</option> <option :value="null" disabled>Region</option>
<option :value="cp" v-for="cp in checkpointNameList" :key="cp"> <option v-for="region in regions" :value="region" :key="region">
{{ cp }} {{ getRegionNameById(region) }}
</option> </option>
<!-- <option
v-for="scenery in filteredSceneries"
:value="`${scenery.stationName}|${scenery.stationHash}|${scenery.dispatcherName}|${scenery.region}`"
:key="scenery.dispatcherName + scenery.stationName"
>
</option> -->
</select> </select>
</label> </div>
<select
name="checkpoint-select"
id="checkpoint-select"
v-model="selectedCheckpointName"
:disabled="!selectedScenery"
>
<option :value="null" disabled>Posterunek</option>
<option :value="cp" v-for="cp in checkpointNameList" :key="cp">
{{ cp }}
</option>
</select>
<label for="fill-checkpoint" class="g-checkbox"> <label for="fill-checkpoint" class="g-checkbox">
<input <input
@@ -49,47 +57,47 @@
id="fill-checkpoint" id="fill-checkpoint"
v-model="fillCheckpointName" v-model="fillCheckpointName"
/> />
<span> Uzupełniaj skrót post.</span> <span> Uzupełniaj skrót wybranego posterunku</span>
</label> </label>
</div> </div>
<div class="content"> <div class="content">
<b v-if="!selectedSceneryName" class="text--accent"> <b v-if="!selectedSceneryId" class="text--accent">
Wybierz dyżurnego oraz scenerię, aby zobaczyć pociągi Wybierz dyżurnego oraz scenerię, aby zobaczyć pociągi
</b> </b>
<div v-else> <div v-else>
<b class="text--accent">Kliknij na gracza, aby wypełnić obecny rozkaz jego danymi</b> <div style="margin-bottom: 0.5em">
<h3 style="margin-bottom: 0.5em">Aktywne RJ i gracze na scenerii</h3>
<b class="text--accent">Kliknij na gracza, aby wypełnić obecny rozkaz jego danymi</b>
</div>
<p>Gracze online bez RJ</p>
<ul class="train-list"> <ul class="train-list">
<li <li
v-for="train in sceneryTrains" v-for="train in sceneryTrains"
:key="train.trainNo + train.driverName" :key="train.trainNo + train.driverName"
@click="fillOrder(train.trainNo)" @click="fillOrder(train.trainNo)"
> >
<b>{{ train.trainNo }} | {{ train.driverName }}</b> <button class="g-button">
<span
v-if="train.currentStationName == selectedScenery?.stationName"
class="online-indicator"
></span>
<b>
{{ train.driverName }} &bull;
<span v-if="train.timetable" style="color: gold">{{
train.timetable.category
}}</span>
{{ train.trainNo }}
</b>
</button>
</li> </li>
<li class="no-trains" v-if="sceneryTrains?.length == 0 && selectedSceneryName"> <li class="no-trains" v-if="sceneryTrains?.length == 0 && selectedSceneryId">
Brak graczy Brak graczy
</li> </li>
</ul> </ul>
<p>Aktywne rozkłady jazdy</p>
<ul class="train-list">
<li
v-for="train in sceneryScheduledTrains"
:key="train.trainNo + train.driverName"
@click="fillOrder(train.trainNo)"
>
<b>{{ train.trainNo }} | {{ train.driverName }}</b>
</li>
<li class="no-trains" v-if="sceneryScheduledTrains?.length == 0">
Brak aktywnych rozkładów
</li>
</ul>
</div> </div>
</div> </div>
</div> </div>
@@ -106,6 +114,7 @@ import {
import http from '../http'; import http from '../http';
import { ISceneryData } from '../types/dataTypes'; import { ISceneryData } from '../types/dataTypes';
import { API } from '../types/apiTypes'; import { API } from '../types/apiTypes';
import { getRegionNameById } from '../utils/sceneryUtils';
export default defineComponent({ export default defineComponent({
name: 'order-train-picker', name: 'order-train-picker',
@@ -115,14 +124,16 @@ export default defineComponent({
sceneriesData: undefined as ISceneryData[] | undefined, sceneriesData: undefined as ISceneryData[] | undefined,
activeData: undefined as API.ActiveData.Response | undefined, activeData: undefined as API.ActiveData.Response | undefined,
selectedSceneryName: null as string | null, selectedSceneryId: null as string | null,
selectedDispatcherName: null as string | null,
selectedCheckpointName: null as string | null, selectedCheckpointName: null as string | null,
selectedRegion: 'eu',
fillCheckpointName: false, fillCheckpointName: false,
refreshInterval: -1, refreshInterval: -1,
store: useStore() store: useStore(),
regions: ['eu', 'cae', 'usw', 'us', 'ru']
}; };
}, },
@@ -137,7 +148,7 @@ export default defineComponent({
this.refreshInterval = window.setInterval(() => { this.refreshInterval = window.setInterval(() => {
this.fetchActiveData(); this.fetchActiveData();
}, 35 * 1000); }, 25 * 1000);
}, },
deactivated() { deactivated() {
@@ -145,82 +156,65 @@ export default defineComponent({
}, },
watch: { watch: {
selectedDispatcherName() {
if (!this.sceneryNameList) return null;
this.selectedSceneryName = this.sceneryNameList.length == 0 ? null : this.sceneryNameList[0];
},
selectedSceneryName() {
this.selectedCheckpointName =
this.checkpointNameList.length == 0 ? null : this.checkpointNameList[0];
},
fillCheckpointName(val: boolean) { fillCheckpointName(val: boolean) {
window.localStorage.setItem('fill-checkpoint', `${val}`); window.localStorage.setItem('fill-checkpoint', `${val}`);
} }
}, },
computed: { computed: {
selectedSceneryHash() { selectedScenery() {
return this.activeData?.activeSceneries?.find( return this.activeData?.activeSceneries?.find(
(s) => this.selectedSceneryName == s.stationName (scenery) =>
)?.stationHash; this.selectedSceneryId ==
}, `${scenery.stationName}|${scenery.stationHash}|${scenery.dispatcherName}|${scenery.region}` &&
this.selectedRegion == scenery.region
sceneriesOnlinePL1() {
return this.activeData?.activeSceneries?.filter((s) => s.region == 'eu' && s.isOnline);
},
dispatcherNameList() {
return [...new Set(this.sceneriesOnlinePL1?.map((s) => s.dispatcherName))].sort((a, b) =>
a.toLocaleLowerCase() < b.toLocaleLowerCase() ? -1 : 1
); );
}, },
sceneryNameList() { filteredSceneries() {
if (!this.sceneriesOnlinePL1) return []; return this.activeData?.activeSceneries
?.filter((s) => s.isOnline && s.region == this.selectedRegion)
return this.sceneriesOnlinePL1 .sort((s1, s2) => s1.stationName.localeCompare(s2.stationName));
.filter((s) => s.dispatcherName == this.selectedDispatcherName)
.map((s) => s.stationName)
.sort((a, b) => (a < b ? -1 : 1));
}, },
checkpointNameList() { checkpointNameList() {
if (!this.selectedSceneryName) return []; if (!this.selectedScenery) return [];
const name = this.selectedSceneryName; const checkpoints =
const checkpoints = this.sceneriesData?.find( this.sceneriesData?.find((s) => s.name == this.selectedScenery?.stationName)?.checkpoints ??
(s) => s.name.toLocaleLowerCase() == name.toLocaleLowerCase() '';
)?.checkpoints;
if (!checkpoints || checkpoints.length == 0) return [name]; if (checkpoints.length == 0) return [this.selectedScenery.stationName];
return checkpoints.split(';'); return checkpoints.split(';');
}, },
sceneryTrains() { sceneryTrains() {
return this.activeData?.trains?.filter( if (!this.selectedScenery || !this.activeData?.trains) return [];
(t) =>
t.online &&
t.currentStationName == this.selectedSceneryName &&
this.selectedSceneryName &&
!t.timetable
);
},
sceneryScheduledTrains() { const scenery = this.selectedScenery;
if (!this.selectedSceneryHash) return [];
const hash = this.selectedSceneryHash;
return this.activeData?.trains return this.activeData.trains
?.filter((t) => t.timetable?.sceneries.includes(hash)) ?.filter(
.sort((t1, t2) => t1.trainNo - t2.trainNo); (t) =>
(t.currentStationName == scenery.stationName &&
t.region == scenery.region &&
(t.online || t.lastSeen >= Date.now() - 60000)) ||
t.timetable?.path.includes(`${scenery.stationName} ${scenery.stationHash}.sc`)
)
.sort((t1, t2) => {
return (
(t2.currentStationName == scenery.stationName ? 1 : -1) -
(t1.currentStationName == scenery.stationName ? 1 : -1) ||
t1.driverName.localeCompare(t2.driverName)
);
});
} }
}, },
methods: { methods: {
getRegionNameById,
async fetchSceneriesData() { async fetchSceneriesData() {
const data: ISceneryData[] = (await http.get<ISceneryData[]>('api/getSceneries')).data; const data: ISceneryData[] = (await http.get<ISceneryData[]>('api/getSceneries')).data;
@@ -233,22 +227,27 @@ export default defineComponent({
this.activeData = data; this.activeData = data;
}, },
selectOption() {
this.selectedCheckpointName =
this.checkpointNameList.length == 0 ? null : this.checkpointNameList[0];
},
fillOrder(trainNo: number) { fillOrder(trainNo: number) {
if (!this.selectedDispatcherName || !this.selectedSceneryName) return; if (!this.selectedScenery) return;
const chosenOrder = this.store[this.store.chosenOrderType]; const chosenOrder = this.store[this.store.chosenOrderType];
chosenOrder.header.trainNo = trainNo.toString(); chosenOrder.header.trainNo = trainNo.toString();
chosenOrder.header.date = currentFormattedDate(); chosenOrder.header.date = currentFormattedDate();
this.store.orderFooter.dispatcherName = this.selectedDispatcherName; this.store.orderFooter.dispatcherName = this.selectedScenery.stationName;
this.store.orderFooter.stationName = this.store.orderFooter.stationName =
this.selectedCheckpointName?.split(',')[0] || this.selectedSceneryName; this.selectedCheckpointName?.split(',')[0] || this.selectedScenery.stationName;
this.store.orderFooter.hour = currentFormattedHours(); this.store.orderFooter.hour = currentFormattedHours();
this.store.orderFooter.minutes = currentFormattedMinutes(); this.store.orderFooter.minutes = currentFormattedMinutes();
if (this.fillCheckpointName) { if (this.fillCheckpointName) {
const sceneryAbbrev = this.sceneriesData?.find( const sceneryAbbrev = this.sceneriesData?.find(
({ name }) => name === this.selectedSceneryName ({ name }) => name === this.selectedSceneryId
)?.abbr; )?.abbr;
this.store.orderFooter.checkpointName = this.store.orderFooter.checkpointName =
sceneryAbbrev || this.store.orderFooter.stationName.slice(0, 2); sceneryAbbrev || this.store.orderFooter.stationName.slice(0, 2);
@@ -264,73 +263,77 @@ export default defineComponent({
@import '../styles/global.scss'; @import '../styles/global.scss';
.order-train-picker { .order-train-picker {
height: 90vh;
overflow-y: auto;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
overflow: auto;
padding: 0 0.5em;
} }
.options { .options {
display: flex; display: flex;
width: 100%;
justify-content: center;
gap: 1em;
flex-wrap: wrap; flex-wrap: wrap;
width: 100%;
label { gap: 0.5em;
width: 45%;
display: flex;
align-items: center;
}
select { select {
border: 2px solid white; background-color: $bgColDarker;
color: white;
font-size: 1em; font-size: 1em;
width: 100%; width: 100%;
margin: 0;
padding: 0.15em;
&[disabled] { &[disabled] {
color: gray; color: gray;
} }
} }
}
option { .options-top {
color: black; display: grid;
} grid-template-columns: 3fr auto;
gap: 0.5em;
width: 100%;
} }
.content { .content {
margin-top: 1em; margin-top: 1em;
width: 100%; width: 100%;
text-align: center; text-align: center;
p {
margin: 1em 0;
font-weight: bold;
font-size: 1.1em;
}
} }
ul.train-list { ul.train-list {
li { padding: 1px;
background-color: #111;
li.no-trains {
font-weight: bold;
background-color: $bgColDarker;
padding: 0.5em;
margin-top: 0.5em;
}
li > button {
width: 100%;
background-color: $bgColDarker;
padding: 0.5em; padding: 0.5em;
margin-top: 0.5em; margin-top: 0.5em;
cursor: pointer; &:hover {
background-color: $bgColLighter;
}
&.no-trains { &:focus-visible {
font-weight: bold; outline: 1px solid $accentCol;
background-color: #222;
cursor: default;
} }
} }
} }
.online-indicator {
display: inline-block;
width: 9px;
height: 9px;
vertical-align: middle;
background-color: greenyellow;
border-radius: 100%;
margin: 0 5px;
}
</style> </style>
+1 -1
View File
@@ -81,7 +81,7 @@ export default defineComponent({
align-items: center; align-items: center;
color: white; color: white;
background-color: #1d1d1d; background-color: $bgColDarker;
width: 50px; width: 50px;
height: 85px; height: 85px;
+1
View File
@@ -10,6 +10,7 @@ export const useStore = defineStore('store', {
state: () => { state: () => {
return { return {
helperModalOpen: false, helperModalOpen: false,
orderDarkMode: false,
chosenOrderType: 'orderN' as TOrder, chosenOrderType: 'orderN' as TOrder,
chosenLocalOrderId: '', chosenLocalOrderId: '',
+57 -32
View File
@@ -1,8 +1,28 @@
@import url('https://fonts.googleapis.com/css2?family=Libre+Franklin:wght@400;600&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Libre+Franklin:wght@400;600&display=swap');
$bgCol: #313638; $bgCol: #141414;
$bgColLighter: #292929;
$bgColDarker: #080808;
$accentCol: #ff6060; $accentCol: #ff6060;
$warnCol: #ffe02e; $warnCol: #ffe02e;
$whiteDimmerCol: #ccc;
// Global scrollbar style
::-webkit-scrollbar {
width: 15px;
}
::-webkit-scrollbar-track {
background: #333;
}
::-webkit-scrollbar-thumb {
background: #888;
}
::-webkit-scrollbar-thumb:hover {
background: #555;
}
body, body,
html { html {
@@ -15,7 +35,9 @@ html {
font-weight: 500; font-weight: 500;
} }
* { *,
*::before,
*::after {
box-sizing: border-box; box-sizing: border-box;
} }
@@ -45,18 +67,22 @@ button {
button.g-button { button.g-button {
text-align: center; text-align: center;
color: white; color: inherit;
transition:
color 100ms ease-in,
background-color 100ms ease-in;
&.action { &.action {
border: 2px solid white; background-color: $bgColDarker;
padding: 0.5em; padding: 0.5em;
&:focus-visible { &:focus-visible {
border: 2px solid $accentCol; outline: 2px solid $accentCol;
} }
&:hover { &:hover:not([data-disabled='true']) {
color: $accentCol; background-color: $bgColLighter;
} }
} }
@@ -82,7 +108,6 @@ button.g-button {
&.text { &.text {
padding: 0; padding: 0;
color: #000;
&:focus-visible { &:focus-visible {
color: $accentCol; color: $accentCol;
@@ -109,9 +134,24 @@ select {
border-radius: 0.3em; border-radius: 0.3em;
text-align: center; text-align: center;
&:hover { border: 2px solid #888;
border: 2px solid $accentCol; color: white;
outline: none;
margin: 0;
padding: 0.15em;
&[disabled] {
color: gray;
} }
&:focus-visible {
border-color: $accentCol;
}
}
option[disabled] {
color: #ccc;
} }
// List style // List style
@@ -123,23 +163,6 @@ ul {
text-align: center; text-align: center;
} }
// Global scrollbar style
::-webkit-scrollbar {
width: 10px;
}
::-webkit-scrollbar-track {
background: #333;
}
::-webkit-scrollbar-thumb {
background: #888;
}
::-webkit-scrollbar-thumb:hover {
background: #555;
}
// Modal // Modal
.g-modal { .g-modal {
position: fixed; position: fixed;
@@ -178,17 +201,18 @@ label.g-checkbox {
cursor: pointer; cursor: pointer;
color: #aaa; color: #aaa;
user-select: none;
-moz-user-select: none;
span { span {
transition: color 125ms ease; transition: color 125ms ease;
} }
span::before { span::before {
content: ''; content: '\2717';
display: inline-block; display: inline-block;
width: 1ch;
height: 1ch;
background-color: #aaa; // background-color: #aaa;
border-radius: 50%; border-radius: 50%;
margin-right: 0.25em; margin-right: 0.25em;
@@ -207,7 +231,8 @@ label.g-checkbox {
color: greenyellow; color: greenyellow;
&::before { &::before {
background-color: greenyellow; content: '\2713';
// background-color: greenyellow;
} }
} }
} }
+1
View File
@@ -100,6 +100,7 @@ export declare module API {
TWR: boolean; TWR: boolean;
SKR: boolean; SKR: boolean;
sceneries: string[]; sceneries: string[];
path: string;
} }
} }
} }
+21
View File
@@ -0,0 +1,21 @@
export const getRegionNameById = (id: string) => {
switch (id) {
case 'eu':
return 'PL1';
case 'cae':
return 'PL2';
case 'us':
return 'CZE';
case 'usw':
return 'DE';
case 'ru':
return 'ENG';
default:
return 'PL1';
}
};
+4 -4
View File
@@ -132,14 +132,14 @@ export default defineComponent({
} }
.message_container { .message_container {
width: 500px; width: 100%;
max-width: 500px;
display: grid; display: grid;
grid-template-rows: auto 1fr; grid-template-rows: auto 1fr;
overflow: hidden;
max-height: 95vh; height: 95vh;
min-height: 600px; overflow: auto;
} }
.message_nav { .message_nav {
+199 -36
View File
@@ -37,7 +37,7 @@
resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz" resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz"
integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==
"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.11.1", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0": "@babel/core@^7.11.1":
version "7.23.5" version "7.23.5"
resolved "https://registry.npmjs.org/@babel/core/-/core-7.23.5.tgz" resolved "https://registry.npmjs.org/@babel/core/-/core-7.23.5.tgz"
integrity sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g== integrity sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==
@@ -956,6 +956,111 @@
"@babel/helper-validator-identifier" "^7.22.20" "@babel/helper-validator-identifier" "^7.22.20"
to-fast-properties "^2.0.0" to-fast-properties "^2.0.0"
"@esbuild/android-arm64@0.19.8":
version "0.19.8"
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.8.tgz#fb7130103835b6d43ea499c3f30cfb2b2ed58456"
integrity sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==
"@esbuild/android-arm@0.19.8":
version "0.19.8"
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.8.tgz#b46e4d9e984e6d6db6c4224d72c86b7757e35bcb"
integrity sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==
"@esbuild/android-x64@0.19.8":
version "0.19.8"
resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.8.tgz#a13db9441b5a4f4e4fec4a6f8ffacfea07888db7"
integrity sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==
"@esbuild/darwin-arm64@0.19.8":
version "0.19.8"
resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.8.tgz#49f5718d36541f40dd62bfdf84da9c65168a0fc2"
integrity sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==
"@esbuild/darwin-x64@0.19.8":
version "0.19.8"
resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.8.tgz#75c5c88371eea4bfc1f9ecfd0e75104c74a481ac"
integrity sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==
"@esbuild/freebsd-arm64@0.19.8":
version "0.19.8"
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.8.tgz#9d7259fea4fd2b5f7437b52b542816e89d7c8575"
integrity sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==
"@esbuild/freebsd-x64@0.19.8":
version "0.19.8"
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.8.tgz#abac03e1c4c7c75ee8add6d76ec592f46dbb39e3"
integrity sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==
"@esbuild/linux-arm64@0.19.8":
version "0.19.8"
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.8.tgz#c577932cf4feeaa43cb9cec27b89cbe0df7d9098"
integrity sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==
"@esbuild/linux-arm@0.19.8":
version "0.19.8"
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.8.tgz#d6014d8b98b5cbc96b95dad3d14d75bb364fdc0f"
integrity sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==
"@esbuild/linux-ia32@0.19.8":
version "0.19.8"
resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.8.tgz#2379a0554307d19ac4a6cdc15b08f0ea28e7a40d"
integrity sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==
"@esbuild/linux-loong64@0.19.8":
version "0.19.8"
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.8.tgz#e2a5bbffe15748b49356a6cd7b2d5bf60c5a7123"
integrity sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==
"@esbuild/linux-mips64el@0.19.8":
version "0.19.8"
resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.8.tgz#1359331e6f6214f26f4b08db9b9df661c57cfa24"
integrity sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==
"@esbuild/linux-ppc64@0.19.8":
version "0.19.8"
resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.8.tgz#9ba436addc1646dc89dae48c62d3e951ffe70951"
integrity sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==
"@esbuild/linux-riscv64@0.19.8":
version "0.19.8"
resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.8.tgz#fbcf0c3a0b20f40b5fc31c3b7695f0769f9de66b"
integrity sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==
"@esbuild/linux-s390x@0.19.8":
version "0.19.8"
resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.8.tgz#989e8a05f7792d139d5564ffa7ff898ac6f20a4a"
integrity sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==
"@esbuild/linux-x64@0.19.8":
version "0.19.8"
resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.8.tgz#b187295393a59323397fe5ff51e769ec4e72212b"
integrity sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==
"@esbuild/netbsd-x64@0.19.8":
version "0.19.8"
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.8.tgz#c1ec0e24ea82313cb1c7bae176bd5acd5bde7137"
integrity sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==
"@esbuild/openbsd-x64@0.19.8":
version "0.19.8"
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.8.tgz#0c5b696ac66c6d70cf9ee17073a581a28af9e18d"
integrity sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==
"@esbuild/sunos-x64@0.19.8":
version "0.19.8"
resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.8.tgz#2a697e1f77926ff09fcc457d8f29916d6cd48fb1"
integrity sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==
"@esbuild/win32-arm64@0.19.8":
version "0.19.8"
resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.8.tgz#ec029e62a2fca8c071842ecb1bc5c2dd20b066f1"
integrity sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==
"@esbuild/win32-ia32@0.19.8":
version "0.19.8"
resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.8.tgz#cbb9a3146bde64dc15543e48afe418c7a3214851"
integrity sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==
"@esbuild/win32-x64@0.19.8": "@esbuild/win32-x64@0.19.8":
version "0.19.8" version "0.19.8"
resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.8.tgz" resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.8.tgz"
@@ -1060,7 +1165,7 @@
"@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/gen-mapping" "^0.3.0"
"@jridgewell/trace-mapping" "^0.3.9" "@jridgewell/trace-mapping" "^0.3.9"
"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@1.4.14": "@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10":
version "1.4.14" version "1.4.14"
resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz"
integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
@@ -1086,7 +1191,7 @@
"@nodelib/fs.stat" "2.0.5" "@nodelib/fs.stat" "2.0.5"
run-parallel "^1.1.9" run-parallel "^1.1.9"
"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
version "2.0.5" version "2.0.5"
resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
@@ -1148,6 +1253,66 @@
estree-walker "^1.0.1" estree-walker "^1.0.1"
picomatch "^2.2.2" picomatch "^2.2.2"
"@rollup/rollup-android-arm-eabi@4.7.0":
version "4.7.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.7.0.tgz#c144935afdf83e3da0ddea4d903360f99f69c79a"
integrity sha512-rGku10pL1StFlFvXX5pEv88KdGW6DHUghsxyP/aRYb9eH+74jTGJ3U0S/rtlsQ4yYq1Hcc7AMkoJOb1xu29Fxw==
"@rollup/rollup-android-arm64@4.7.0":
version "4.7.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.7.0.tgz#4e05031399a9c795612c9694827ec4ba55771bec"
integrity sha512-/EBw0cuJ/KVHiU2qyVYUhogXz7W2vXxBzeE9xtVIMC+RyitlY2vvaoysMUqASpkUtoNIHlnKTu/l7mXOPgnKOA==
"@rollup/rollup-darwin-arm64@4.7.0":
version "4.7.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.7.0.tgz#196018fa70b525a893a949fe8e1eeb797d9a7227"
integrity sha512-4VXG1bgvClJdbEYYjQ85RkOtwN8sqI3uCxH0HC5w9fKdqzRzgG39K7GAehATGS8jghA7zNoS5CjSKkDEqWmNZg==
"@rollup/rollup-darwin-x64@4.7.0":
version "4.7.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.7.0.tgz#484937c6b987bebaeccdae774977ad4bf7bcd940"
integrity sha512-/ImhO+T/RWJ96hUbxiCn2yWI0/MeQZV/aeukQQfhxiSXuZJfyqtdHPUPrc84jxCfXTxbJLmg4q+GBETeb61aNw==
"@rollup/rollup-linux-arm-gnueabihf@4.7.0":
version "4.7.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.7.0.tgz#c495ba7aa13427aaeb4ea0864ab9c2a3d5aa9c09"
integrity sha512-zhye8POvTyUXlKbfPBVqoHy3t43gIgffY+7qBFqFxNqVtltQLtWeHNAbrMnXiLIfYmxcoL/feuLDote2tx+Qbg==
"@rollup/rollup-linux-arm64-gnu@4.7.0":
version "4.7.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.7.0.tgz#0ef4ef25e83f610b56d94a5a1fffa27220d5224d"
integrity sha512-RAdr3OJnUum6Vs83cQmKjxdTg31zJnLLTkjhcFt0auxM6jw00GD6IPFF42uasYPr/wGC6TRm7FsQiJyk0qIEfg==
"@rollup/rollup-linux-arm64-musl@4.7.0":
version "4.7.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.7.0.tgz#d75add714d898cee4e4a5baeb2e30641e483b0e3"
integrity sha512-nhWwYsiJwZGq7SyR3afS3EekEOsEAlrNMpPC4ZDKn5ooYSEjDLe9W/xGvoIV8/F/+HNIY6jY8lIdXjjxfxopXw==
"@rollup/rollup-linux-riscv64-gnu@4.7.0":
version "4.7.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.7.0.tgz#b7ed4894b44a47f4145cce77175fe578d1379863"
integrity sha512-rlfy5RnQG1aop1BL/gjdH42M2geMUyVQqd52GJVirqYc787A/XVvl3kQ5NG/43KXgOgE9HXgCaEH05kzQ+hLoA==
"@rollup/rollup-linux-x64-gnu@4.7.0":
version "4.7.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.7.0.tgz#bccd53f20de2c1b1e7024898dc5b69375a5abe4e"
integrity sha512-cCkoGlGWfBobdDtiiypxf79q6k3/iRVGu1HVLbD92gWV5WZbmuWJCgRM4x2N6i7ljGn1cGytPn9ZAfS8UwF6vg==
"@rollup/rollup-linux-x64-musl@4.7.0":
version "4.7.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.7.0.tgz#554315d4f252f9f324da587fbf5048aaaf1da12e"
integrity sha512-R2oBf2p/Arc1m+tWmiWbpHBjEcJnHVnv6bsypu4tcKdrYTpDfl1UT9qTyfkIL1iiii5D4WHxUHCg5X0pzqmxFg==
"@rollup/rollup-win32-arm64-msvc@4.7.0":
version "4.7.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.7.0.tgz#95902325d07919e25dff32be9428acbc1b889101"
integrity sha512-CPtgaQL1aaPc80m8SCVEoxFGHxKYIt3zQYC3AccL/SqqiWXblo3pgToHuBwR8eCP2Toa+X1WmTR/QKFMykws7g==
"@rollup/rollup-win32-ia32-msvc@4.7.0":
version "4.7.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.7.0.tgz#f9ca12cc03ebca191ff6b832785c5a5e1974cf55"
integrity sha512-pmioUlttNh9GXF5x2CzNa7Z8kmRTyhEzzAC+2WOOapjewMbl+3tGuAnxbwc5JyG8Jsz2+hf/QD/n5VjimOZ63g==
"@rollup/rollup-win32-x64-msvc@4.7.0": "@rollup/rollup-win32-x64-msvc@4.7.0":
version "4.7.0" version "4.7.0"
resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.7.0.tgz" resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.7.0.tgz"
@@ -1173,7 +1338,7 @@
resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz"
integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
"@types/node@*", "@types/node@^18.0.0 || >=20.0.0": "@types/node@*":
version "18.11.9" version "18.11.9"
resolved "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz" resolved "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz"
integrity sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg== integrity sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==
@@ -1212,7 +1377,7 @@
semver "^7.5.4" semver "^7.5.4"
ts-api-utils "^1.0.1" ts-api-utils "^1.0.1"
"@typescript-eslint/parser@^6.0.0 || ^6.0.0-alpha", "@typescript-eslint/parser@^6.7.0": "@typescript-eslint/parser@^6.7.0":
version "6.13.2" version "6.13.2"
resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.13.2.tgz" resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.13.2.tgz"
integrity sha512-MUkcC+7Wt/QOGeVlM8aGGJZy1XV5YKjTpq9jK6r6/iLsGXhBVaGP5N0UYvFsu9BFlSpwY9kMretzdBH01rkRXg== integrity sha512-MUkcC+7Wt/QOGeVlM8aGGJZy1XV5YKjTpq9jK6r6/iLsGXhBVaGP5N0UYvFsu9BFlSpwY9kMretzdBH01rkRXg==
@@ -1290,14 +1455,14 @@
resolved "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.5.2.tgz" resolved "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.5.2.tgz"
integrity sha512-UGR3DlzLi/SaVBPX0cnSyE37vqxU3O6chn8l0HJNzQzDia6/Au2A4xKv+iIJW8w2daf80G7TYHhi1pAUjdZ0bQ== integrity sha512-UGR3DlzLi/SaVBPX0cnSyE37vqxU3O6chn8l0HJNzQzDia6/Au2A4xKv+iIJW8w2daf80G7TYHhi1pAUjdZ0bQ==
"@volar/language-core@~1.11.1", "@volar/language-core@1.11.1": "@volar/language-core@1.11.1", "@volar/language-core@~1.11.1":
version "1.11.1" version "1.11.1"
resolved "https://registry.npmjs.org/@volar/language-core/-/language-core-1.11.1.tgz" resolved "https://registry.npmjs.org/@volar/language-core/-/language-core-1.11.1.tgz"
integrity sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw== integrity sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==
dependencies: dependencies:
"@volar/source-map" "1.11.1" "@volar/source-map" "1.11.1"
"@volar/source-map@~1.11.1", "@volar/source-map@1.11.1": "@volar/source-map@1.11.1", "@volar/source-map@~1.11.1":
version "1.11.1" version "1.11.1"
resolved "https://registry.npmjs.org/@volar/source-map/-/source-map-1.11.1.tgz" resolved "https://registry.npmjs.org/@volar/source-map/-/source-map-1.11.1.tgz"
integrity sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg== integrity sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==
@@ -1322,7 +1487,7 @@
estree-walker "^2.0.2" estree-walker "^2.0.2"
source-map-js "^1.0.2" source-map-js "^1.0.2"
"@vue/compiler-dom@^3.3.0", "@vue/compiler-dom@3.3.11": "@vue/compiler-dom@3.3.11", "@vue/compiler-dom@^3.3.0":
version "3.3.11" version "3.3.11"
resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.11.tgz" resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.11.tgz"
integrity sha512-zoAiUIqSKqAJ81WhfPXYmFGwDRuO+loqLxvXmfUdR5fOitPoUiIeFI9cTTyv9MU5O1+ZZglJVTusWzy+wfk5hw== integrity sha512-zoAiUIqSKqAJ81WhfPXYmFGwDRuO+loqLxvXmfUdR5fOitPoUiIeFI9cTTyv9MU5O1+ZZglJVTusWzy+wfk5hw==
@@ -1434,7 +1599,7 @@
"@vue/compiler-ssr" "3.3.11" "@vue/compiler-ssr" "3.3.11"
"@vue/shared" "3.3.11" "@vue/shared" "3.3.11"
"@vue/shared@^3.3.0", "@vue/shared@3.3.11": "@vue/shared@3.3.11", "@vue/shared@^3.3.0":
version "3.3.11" version "3.3.11"
resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.3.11.tgz" resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.3.11.tgz"
integrity sha512-u2G8ZQ9IhMWTMXaWqZycnK4UthG1fA238CD+DP4Dm4WJi5hdUKKLg0RMRaRpDPNMdkTwIDkp7WtD0Rd9BH9fLw== integrity sha512-u2G8ZQ9IhMWTMXaWqZycnK4UthG1fA238CD+DP4Dm4WJi5hdUKKLg0RMRaRpDPNMdkTwIDkp7WtD0Rd9BH9fLw==
@@ -1444,7 +1609,7 @@ acorn-jsx@^5.3.2:
resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.5.0, acorn@^8.9.0: acorn@^8.5.0, acorn@^8.9.0:
version "8.11.2" version "8.11.2"
resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz" resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz"
integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==
@@ -1459,7 +1624,7 @@ ajv@^6.12.4:
json-schema-traverse "^0.4.1" json-schema-traverse "^0.4.1"
uri-js "^4.2.2" uri-js "^4.2.2"
ajv@^8.6.0, ajv@>=8: ajv@^8.6.0:
version "8.12.0" version "8.12.0"
resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz"
integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
@@ -1629,7 +1794,7 @@ braces@^3.0.2, braces@~3.0.2:
dependencies: dependencies:
fill-range "^7.0.1" fill-range "^7.0.1"
browserslist@^4.21.9, browserslist@^4.22.2, "browserslist@>= 4.21.0": browserslist@^4.21.9, browserslist@^4.22.2:
version "4.22.2" version "4.22.2"
resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz"
integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A== integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==
@@ -1721,16 +1886,16 @@ color-convert@^2.0.1:
dependencies: dependencies:
color-name "~1.1.4" color-name "~1.1.4"
color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
color-name@1.1.3: color-name@1.1.3:
version "1.1.3" version "1.1.3"
resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
combined-stream@^1.0.8: combined-stream@^1.0.8:
version "1.0.8" version "1.0.8"
resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz"
@@ -2007,7 +2172,7 @@ eslint-plugin-prettier@^5.0.0:
prettier-linter-helpers "^1.0.0" prettier-linter-helpers "^1.0.0"
synckit "^0.8.5" synckit "^0.8.5"
eslint-plugin-vue@^9.0.0, eslint-plugin-vue@^9.17.0: eslint-plugin-vue@^9.17.0:
version "9.19.2" version "9.19.2"
resolved "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.19.2.tgz" resolved "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.19.2.tgz"
integrity sha512-CPDqTOG2K4Ni2o4J5wixkLVNwgctKXFu6oBpVJlpNq7f38lh9I80pRTouZSJ2MAebPJlINU/KTFSXyQfBUlymA== integrity sha512-CPDqTOG2K4Ni2o4J5wixkLVNwgctKXFu6oBpVJlpNq7f38lh9I80pRTouZSJ2MAebPJlINU/KTFSXyQfBUlymA==
@@ -2033,7 +2198,7 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
"eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^6.2.0 || ^7.0.0 || ^8.0.0", "eslint@^7.0.0 || ^8.0.0", eslint@^8.49.0, "eslint@>= 8.0.0", eslint@>=6.0.0, eslint@>=7.0.0, eslint@>=8.0.0: eslint@^8.49.0:
version "8.55.0" version "8.55.0"
resolved "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz" resolved "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz"
integrity sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA== integrity sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==
@@ -2267,6 +2432,11 @@ fs.realpath@^1.0.0:
resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
fsevents@~2.3.2, fsevents@~2.3.3:
version "2.3.3"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
function-bind@^1.1.2: function-bind@^1.1.2:
version "1.1.2" version "1.1.2"
resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz"
@@ -2837,14 +3007,7 @@ lru-cache@^6.0.0:
dependencies: dependencies:
yallist "^4.0.0" yallist "^4.0.0"
magic-string@^0.25.0: magic-string@^0.25.0, magic-string@^0.25.7:
version "0.25.9"
resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz"
integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
dependencies:
sourcemap-codec "^1.4.8"
magic-string@^0.25.7:
version "0.25.9" version "0.25.9"
resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz" resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz"
integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
@@ -3136,7 +3299,7 @@ prettier-linter-helpers@^1.0.0:
dependencies: dependencies:
fast-diff "^1.1.2" fast-diff "^1.1.2"
prettier@^3.0.3, "prettier@>= 3.0.0", prettier@>=3.0.0: prettier@^3.0.3:
version "3.1.0" version "3.1.0"
resolved "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz" resolved "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz"
integrity sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw== integrity sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==
@@ -3273,7 +3436,7 @@ rollup-plugin-terser@^7.0.0:
serialize-javascript "^4.0.0" serialize-javascript "^4.0.0"
terser "^5.0.0" terser "^5.0.0"
"rollup@^1.20.0 || ^2.0.0", rollup@^1.20.0||^2.0.0, rollup@^2.0.0, rollup@^2.43.1: rollup@^2.43.1:
version "2.79.1" version "2.79.1"
resolved "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz" resolved "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz"
integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==
@@ -3338,7 +3501,7 @@ safe-regex-test@^1.0.0:
get-intrinsic "^1.1.3" get-intrinsic "^1.1.3"
is-regex "^1.1.4" is-regex "^1.1.4"
sass@*, sass@^1.69.5: sass@^1.69.5:
version "1.69.5" version "1.69.5"
resolved "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz" resolved "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz"
integrity sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ== integrity sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==
@@ -3416,7 +3579,7 @@ slash@^3.0.0:
resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz"
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
source-map-js@^1.0.2, "source-map-js@>=0.6.2 <2.0.0": "source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz"
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
@@ -3566,7 +3729,7 @@ tempy@^0.6.0:
type-fest "^0.16.0" type-fest "^0.16.0"
unique-string "^2.0.0" unique-string "^2.0.0"
terser@^5.0.0, terser@^5.4.0: terser@^5.0.0:
version "5.15.1" version "5.15.1"
resolved "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz" resolved "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz"
integrity sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw== integrity sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==
@@ -3671,7 +3834,7 @@ typed-array-length@^1.0.4:
for-each "^0.3.3" for-each "^0.3.3"
is-typed-array "^1.1.9" is-typed-array "^1.1.9"
typescript@*, typescript@^5.3.3, typescript@>=4.2.0, typescript@>=4.4.4: typescript@^5.3.3:
version "5.3.3" version "5.3.3"
resolved "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz" resolved "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz"
integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==
@@ -3762,7 +3925,7 @@ vite-plugin-pwa@^0.17.4:
workbox-build "^7.0.0" workbox-build "^7.0.0"
workbox-window "^7.0.0" workbox-window "^7.0.0"
"vite@^3.1.0 || ^4.0.0 || ^5.0.0", "vite@^4.0.0 || ^5.0.0", vite@^5.0.7: vite@^5.0.7:
version "5.0.7" version "5.0.7"
resolved "https://registry.npmjs.org/vite/-/vite-5.0.7.tgz" resolved "https://registry.npmjs.org/vite/-/vite-5.0.7.tgz"
integrity sha512-B4T4rJCDPihrQo2B+h1MbeGL/k/GMAHzhQ8S0LjQ142s6/+l3hHTT095ORvsshj4QCkoWu3Xtmob5mazvakaOw== integrity sha512-B4T4rJCDPihrQo2B+h1MbeGL/k/GMAHzhQ8S0LjQ142s6/+l3hHTT095ORvsshj4QCkoWu3Xtmob5mazvakaOw==
@@ -3824,7 +3987,7 @@ vue-tsc@^1.8.25:
"@vue/language-core" "1.8.25" "@vue/language-core" "1.8.25"
semver "^7.5.4" semver "^7.5.4"
"vue@^2.6.14 || ^3.3.0", vue@^3.0.0, "vue@^3.0.0-0 || ^2.6.0", vue@^3.2.0, vue@^3.2.25, vue@^3.3.11, vue@3.3.11: vue@^3.3.11:
version "3.3.11" version "3.3.11"
resolved "https://registry.npmjs.org/vue/-/vue-3.3.11.tgz" resolved "https://registry.npmjs.org/vue/-/vue-3.3.11.tgz"
integrity sha512-d4oBctG92CRO1cQfVBZp6WJAs0n8AK4Xf5fNjQCBeKCvMI1efGQ5E3Alt1slFJS9fZuPcFoiAiqFvQlv1X7t/w== integrity sha512-d4oBctG92CRO1cQfVBZp6WJAs0n8AK4Xf5fNjQCBeKCvMI1efGQ5E3Alt1slFJS9fZuPcFoiAiqFvQlv1X7t/w==
@@ -4028,7 +4191,7 @@ workbox-sw@7.0.0:
resolved "https://registry.npmjs.org/workbox-sw/-/workbox-sw-7.0.0.tgz" resolved "https://registry.npmjs.org/workbox-sw/-/workbox-sw-7.0.0.tgz"
integrity sha512-SWfEouQfjRiZ7GNABzHUKUyj8pCoe+RwjfOIajcx6J5mtgKkN+t8UToHnpaJL5UVVOf5YhJh+OHhbVNIHe+LVA== integrity sha512-SWfEouQfjRiZ7GNABzHUKUyj8pCoe+RwjfOIajcx6J5mtgKkN+t8UToHnpaJL5UVVOf5YhJh+OHhbVNIHe+LVA==
workbox-window@^7.0.0, workbox-window@7.0.0: workbox-window@7.0.0, workbox-window@^7.0.0:
version "7.0.0" version "7.0.0"
resolved "https://registry.npmjs.org/workbox-window/-/workbox-window-7.0.0.tgz" resolved "https://registry.npmjs.org/workbox-window/-/workbox-window-7.0.0.tgz"
integrity sha512-j7P/bsAWE/a7sxqTzXo3P2ALb1reTfZdvVp6OJ/uLr/C2kZAMvjeWGm8V4htQhor7DOvYg0sSbFN2+flT5U0qA== integrity sha512-j7P/bsAWE/a7sxqTzXo3P2ALb1reTfZdvVp6OJ/uLr/C2kZAMvjeWGm8V4htQhor7DOvYg0sSbFN2+flT5U0qA==