mirror of
https://github.com/Spythere/genera-tor.git
synced 2026-05-03 13:38:12 +00:00
@@ -0,0 +1,23 @@
|
|||||||
|
name: Build & Deploy to VPS
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
env:
|
||||||
|
PROJECT_NAME: generator-td2
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build_and_deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Build the app
|
||||||
|
run: yarn && yarn build
|
||||||
|
- name: Setup SSH key for connection with the server
|
||||||
|
run: |
|
||||||
|
mkdir -p ~/.ssh
|
||||||
|
echo "${{ secrets.VPS_SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa && chmod 600 ~/.ssh/id_rsa
|
||||||
|
- name: Send new files
|
||||||
|
run: rsync -avP -e "ssh -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa -p 2022" ./dist/ ${{ secrets.VPS_USER }}@${{ secrets.VPS_HOST }}:/var/www/$PROJECT_NAME --delete
|
||||||
+64
-2
@@ -1,4 +1,4 @@
|
|||||||
<!DOCTYPE html>
|
<!doctype html>
|
||||||
<html lang="pl">
|
<html lang="pl">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
@@ -24,9 +24,71 @@
|
|||||||
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png" />
|
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png" />
|
||||||
<meta name="theme-color" content="#ffffff" />
|
<meta name="theme-color" content="#ffffff" />
|
||||||
|
|
||||||
|
<!-- Preloads -->
|
||||||
|
<link
|
||||||
|
rel="preload"
|
||||||
|
href="/fonts/libre-franklin-500.woff2"
|
||||||
|
as="font"
|
||||||
|
type="font/woff2"
|
||||||
|
crossorigin
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="preload"
|
||||||
|
href="/fonts/libre-franklin-700.woff2"
|
||||||
|
as="font"
|
||||||
|
type="font/woff2"
|
||||||
|
crossorigin
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="preload"
|
||||||
|
href="/fonts/libre-franklin-800.woff2"
|
||||||
|
as="font"
|
||||||
|
type="font/woff2"
|
||||||
|
crossorigin
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="preload"
|
||||||
|
href="/fonts/libre-franklin-regular.woff2"
|
||||||
|
as="font"
|
||||||
|
type="font/woff2"
|
||||||
|
crossorigin
|
||||||
|
/>
|
||||||
|
|
||||||
|
<link rel="preload" href="/favicon.ico" as="image" />
|
||||||
|
|
||||||
<title>GeneraTOR</title>
|
<title>GeneraTOR</title>
|
||||||
<meta name="description" content="Generator rozkazów pisemnych online" />
|
<meta name="description" content="Generator rozkazów pisemnych dla symulatora Train Driver 2" />
|
||||||
|
|
||||||
|
<!-- Static OpenGraph meta -->
|
||||||
|
<meta property="og:url" content="https://generator-td2.web.app/" />
|
||||||
|
<meta property="og:type" content="website" />
|
||||||
|
<meta property="og:title" content="GeneraTOR" />
|
||||||
|
<meta
|
||||||
|
property="og:description"
|
||||||
|
content="Generator rozkazów pisemnych dla symulatora Train Driver 2"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<meta
|
||||||
|
property="og:image"
|
||||||
|
content="https://raw.githubusercontent.com/Spythere/api/refs/heads/main/thumbnails/generator-banner.png"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<meta property="og:image:width" content="1200" />
|
||||||
|
<meta property="og:image:height" content="630" />
|
||||||
|
<meta property="og:site_name" content="GeneraTOR" />
|
||||||
|
|
||||||
|
<meta name="twitter:card" content="summary_large_image" />
|
||||||
|
<meta name="twitter:title" content="GeneraTOR" />
|
||||||
|
<meta
|
||||||
|
name="twitter:description"
|
||||||
|
content="Generator rozkazów pisemnych dla symulatora Train Driver 2"
|
||||||
|
/>
|
||||||
|
<meta
|
||||||
|
name="twitter:image"
|
||||||
|
content="https://raw.githubusercontent.com/Spythere/api/refs/heads/main/thumbnails/generator-banner.png"
|
||||||
|
/>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div id="app"></div>
|
<div id="app"></div>
|
||||||
<script type="module" src="/src/main.ts"></script>
|
<script type="module" src="/src/main.ts"></script>
|
||||||
|
|||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "genera-tor",
|
"name": "genera-tor",
|
||||||
"version": "1.6.0",
|
"version": "1.7.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^1.6.2",
|
"axios": "^1.6.2",
|
||||||
"lucide-vue-next": "^0.525.0",
|
"lucide-vue-next": "^0.562.0",
|
||||||
"pinia": "^2.1.7",
|
"pinia": "^2.1.7",
|
||||||
"showdown": "^2.1.0",
|
"showdown": "^2.1.0",
|
||||||
"vue": "^3.3.11",
|
"vue": "^3.3.11",
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+31
-48
@@ -1,47 +1,41 @@
|
|||||||
<template>
|
<template>
|
||||||
<div id="app_wrapper">
|
<div id="app_wrapper">
|
||||||
<UpdateCard />
|
|
||||||
|
|
||||||
<router-view />
|
|
||||||
|
|
||||||
<transition name="slide-anim">
|
<transition name="slide-anim">
|
||||||
<div v-if="needRefresh" class="update-prompt" @click="updateServiceWorker(true)">
|
<UpdateCard />
|
||||||
{{ $t('update.update-available-text') }}
|
|
||||||
<u>{{ $t('update.update-available-underline') }}</u>
|
|
||||||
</div>
|
|
||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
<footer>
|
<transition name="slide-anim">
|
||||||
© <a href="https://td2.info.pl/profile/?u=20777">Spythere</a>
|
<UpdatePrompt />
|
||||||
{{ new Date().getUTCFullYear() }} |
|
</transition>
|
||||||
<button class="g-button text" @click="store.updateCardOpen = true">v{{ appVersion }}</button>
|
|
||||||
</footer>
|
<div class="app-body">
|
||||||
|
<Navbar />
|
||||||
|
|
||||||
|
<main>
|
||||||
|
<RouterView />
|
||||||
|
</main>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { useRegisterSW } from 'virtual:pwa-register/vue';
|
|
||||||
import { defineComponent } from 'vue';
|
import { defineComponent } from 'vue';
|
||||||
import packageInfo from '../package.json';
|
import UpdateCard from './components/Global/UpdateCard.vue';
|
||||||
import { useStore } from './store/store';
|
|
||||||
import orderStorageMixin from './mixins/orderStorageMixin';
|
import orderStorageMixin from './mixins/orderStorageMixin';
|
||||||
import StorageManager from './managers/storageManager';
|
import { useStore } from './store/store';
|
||||||
|
import packageInfo from '../package.json';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import UpdateCard from './components/UpdateCard.vue';
|
import StorageManager from './managers/storageManager';
|
||||||
|
import Navbar from './components/App/Navbar.vue';
|
||||||
|
import UpdatePrompt from './components/Global/UpdatePrompt.vue';
|
||||||
|
|
||||||
const STORAGE_VERSION_KEY = 'app_version';
|
const STORAGE_VERSION_KEY = 'app_version';
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
components: { UpdateCard },
|
components: { UpdateCard, UpdatePrompt, Navbar },
|
||||||
|
|
||||||
mixins: [orderStorageMixin],
|
mixins: [orderStorageMixin],
|
||||||
|
|
||||||
setup() {
|
|
||||||
const { offlineReady, needRefresh, updateServiceWorker } = useRegisterSW({ immediate: true });
|
|
||||||
|
|
||||||
return { offlineReady, needRefresh, updateServiceWorker };
|
|
||||||
},
|
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
return { appVersion: packageInfo.version, store: useStore() };
|
return { appVersion: packageInfo.version, store: useStore() };
|
||||||
},
|
},
|
||||||
@@ -53,6 +47,7 @@ export default defineComponent({
|
|||||||
methods: {
|
methods: {
|
||||||
init() {
|
init() {
|
||||||
this.loadLang();
|
this.loadLang();
|
||||||
|
this.setupDarkMode();
|
||||||
this.loadSettings();
|
this.loadSettings();
|
||||||
this.checkAppVersion();
|
this.checkAppVersion();
|
||||||
this.handleQueries();
|
this.handleQueries();
|
||||||
@@ -60,7 +55,17 @@ export default defineComponent({
|
|||||||
|
|
||||||
loadSettings() {
|
loadSettings() {
|
||||||
document.title = `GeneraTOR ${this.appVersion}`;
|
document.title = `GeneraTOR ${this.appVersion}`;
|
||||||
|
},
|
||||||
|
|
||||||
|
setupDarkMode() {
|
||||||
|
if (this.getOrderSetting('dark-mode') === null) {
|
||||||
|
const prefersDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||||
|
|
||||||
|
this.saveOrderSetting('dark-mode', prefersDarkMode);
|
||||||
|
}
|
||||||
|
|
||||||
this.store.orderDarkMode = this.getOrderSetting('dark-mode') === 'true';
|
this.store.orderDarkMode = this.getOrderSetting('dark-mode') === 'true';
|
||||||
|
document.documentElement.setAttribute('data-theme', this.store.orderDarkMode ? 'dark' : 'light');
|
||||||
},
|
},
|
||||||
|
|
||||||
handleQueries() {
|
handleQueries() {
|
||||||
@@ -69,7 +74,7 @@ export default defineComponent({
|
|||||||
const id = query.get('sceneryId');
|
const id = query.get('sceneryId');
|
||||||
|
|
||||||
if (id != null) {
|
if (id != null) {
|
||||||
this.store.orderMode = 'OrderTrainPicker';
|
this.store.panelMode = 'OrderTrainPickerPanel';
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -130,31 +135,9 @@ export default defineComponent({
|
|||||||
|
|
||||||
#app {
|
#app {
|
||||||
color: white;
|
color: white;
|
||||||
|
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
.update-prompt {
|
|
||||||
position: fixed;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
padding: 0.5em;
|
|
||||||
|
|
||||||
font-weight: bold;
|
|
||||||
|
|
||||||
text-align: center;
|
|
||||||
|
|
||||||
width: 100%;
|
|
||||||
background-color: colors.$accentCol;
|
|
||||||
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
footer {
|
|
||||||
text-align: center;
|
|
||||||
padding: 0.5em 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 500px) {
|
@media screen and (max-width: 500px) {
|
||||||
#app {
|
#app {
|
||||||
font-size: calc(1vw + 0.65rem);
|
font-size: calc(1vw + 0.65rem);
|
||||||
|
|||||||
@@ -0,0 +1,85 @@
|
|||||||
|
<template>
|
||||||
|
<nav class="app-navbar">
|
||||||
|
<div class="navbar-brand">
|
||||||
|
<img src="/favicon.ico" alt="generator logo" width="30" />
|
||||||
|
<div>
|
||||||
|
<b>
|
||||||
|
Genera<span class="text--accent">TOR</span>
|
||||||
|
<sup class="text--grayed">v{{ version }}</sup>
|
||||||
|
</b>
|
||||||
|
|
||||||
|
<b class="brand-author"> by Spythere</b>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="navbar-actions">
|
||||||
|
<button class="g-button action icon" @click="switchDarkMode">
|
||||||
|
<LucideMoon :size="20" v-if="store.orderDarkMode" />
|
||||||
|
<LucideSun :size="20" v-else />
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<button class="g-button action icon" @click="switchLang">
|
||||||
|
<LucideGlobe :size="20" />
|
||||||
|
<span>{{ store.currentAppLocale == 'pl' ? 'POL' : 'ENG' }}</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { LucideGlobe, LucideMoon, LucideSun } from 'lucide-vue-next';
|
||||||
|
import { version } from '../../../package.json';
|
||||||
|
import { useStore } from '../../store/store';
|
||||||
|
|
||||||
|
const store = useStore();
|
||||||
|
|
||||||
|
function switchDarkMode() {
|
||||||
|
store.orderDarkMode = !store.orderDarkMode;
|
||||||
|
window.localStorage.setItem('dark-mode', `${store.orderDarkMode}`);
|
||||||
|
document.documentElement.setAttribute('data-theme', store.orderDarkMode ? 'dark' : 'light');
|
||||||
|
}
|
||||||
|
|
||||||
|
function switchLang() {
|
||||||
|
store.changeLang(store.currentAppLocale == 'pl' ? 'en' : 'pl');
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.app-navbar {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
width: 100%;
|
||||||
|
height: 40px;
|
||||||
|
padding: 0.25em;
|
||||||
|
background-color: #1c1c1c;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-brand {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.5em;
|
||||||
|
|
||||||
|
sup {
|
||||||
|
font-size: 0.75em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.brand-author {
|
||||||
|
font-size: 0.8em;
|
||||||
|
color: #aaa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-actions {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.5em;
|
||||||
|
|
||||||
|
button {
|
||||||
|
padding: 0.5em;
|
||||||
|
gap: 0.25em;
|
||||||
|
border-radius: 0.5em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -29,18 +29,17 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { defineComponent } from 'vue';
|
import { defineComponent } from 'vue';
|
||||||
import { useStore } from '../store/store';
|
import { useStore } from '../../store/store';
|
||||||
import orderHelperData from '../data/orderHelperData.json';
|
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
setup() {
|
setup() {
|
||||||
return { store: useStore(), orderHelperData };
|
return { store: useStore() };
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@use '../styles/colors';
|
@use '../../styles/colors';
|
||||||
|
|
||||||
.content {
|
.content {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { computed, ref, watch } from 'vue';
|
import { computed, ref, watch } from 'vue';
|
||||||
import { Converter } from 'showdown';
|
import { Converter } from 'showdown';
|
||||||
import { useStore } from '../store/store';
|
import { useStore } from '../../store/store';
|
||||||
|
|
||||||
const converter = new Converter();
|
const converter = new Converter();
|
||||||
const store = useStore();
|
const store = useStore();
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
<template>
|
||||||
|
<div v-if="needRefresh" class="update-prompt" @click="updateServiceWorker(true)">
|
||||||
|
{{ $t('update.update-available-text') }}
|
||||||
|
<u>{{ $t('update.update-available-underline') }}</u>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { useRegisterSW } from 'virtual:pwa-register/vue';
|
||||||
|
|
||||||
|
const { needRefresh, updateServiceWorker } = useRegisterSW({ immediate: true });
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@use '../../styles/colors';
|
||||||
|
|
||||||
|
.update-prompt {
|
||||||
|
position: fixed;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
padding: 0.5em;
|
||||||
|
|
||||||
|
z-index: 200;
|
||||||
|
|
||||||
|
font-weight: bold;
|
||||||
|
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
width: 100%;
|
||||||
|
background-color: colors.$accentCol;
|
||||||
|
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -1,4 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
|
<div class="order-container">
|
||||||
|
<OrderSideBar />
|
||||||
|
|
||||||
<div class="order" :class="{ dark: store.orderDarkMode }">
|
<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">
|
||||||
@@ -9,20 +12,22 @@
|
|||||||
<OrderFooter />
|
<OrderFooter />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { defineComponent } from 'vue';
|
import { defineComponent } from 'vue';
|
||||||
import { useStore } from '../store/store';
|
import { useStore } from '../../store/store';
|
||||||
import OrderNVue from './OrderN.vue';
|
import OrderN from './OrderN.vue';
|
||||||
import OrderSVue from './OrderS.vue';
|
import OrderS from './OrderS.vue';
|
||||||
|
import OrderO from './OrderO.vue';
|
||||||
import OrderFooter from './OrderFooter.vue';
|
import OrderFooter from './OrderFooter.vue';
|
||||||
import OrderOVue from './OrderO.vue';
|
import OrderSideBar from './OrderSideBar.vue';
|
||||||
|
|
||||||
const orderComponents = { orderN: OrderNVue, orderS: OrderSVue, orderO: OrderOVue };
|
const orderComponents = { orderN: OrderN, orderS: OrderS, orderO: OrderO };
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
components: { OrderNVue, OrderSVue, OrderFooter },
|
components: { OrderN, OrderO, OrderS, OrderFooter, OrderSideBar },
|
||||||
|
|
||||||
setup() {
|
setup() {
|
||||||
const store = useStore();
|
const store = useStore();
|
||||||
@@ -39,22 +44,32 @@ export default defineComponent({
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
@use '../styles/colors';
|
@use '../../styles/colors';
|
||||||
|
|
||||||
$darkModeTextCol: #eee;
|
$darkModeTextCol: #eee;
|
||||||
|
|
||||||
|
.order-container {
|
||||||
|
display: flex;
|
||||||
|
align-items: start;
|
||||||
|
max-width: 800px;
|
||||||
|
|
||||||
|
@media screen and (max-width: 1150px) {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.order {
|
.order {
|
||||||
background-color: white;
|
background-color: white;
|
||||||
color: black;
|
color: black;
|
||||||
|
|
||||||
|
max-height: calc(100vh - 5em);
|
||||||
|
overflow: auto;
|
||||||
|
|
||||||
&.dark {
|
&.dark {
|
||||||
background-color: colors.$bgColDarker;
|
background-color: colors.$bgColDarker;
|
||||||
color: $darkModeTextCol;
|
color: $darkModeTextCol;
|
||||||
}
|
}
|
||||||
|
|
||||||
max-height: 95vh;
|
|
||||||
overflow: auto;
|
|
||||||
|
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
@@ -52,8 +52,8 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { defineComponent } from 'vue';
|
import { defineComponent } from 'vue';
|
||||||
import orderFooterMixin from '../mixins/orderFooterMixin';
|
import orderFooterMixin from '../../mixins/orderFooterMixin';
|
||||||
import { useStore } from '../store/store';
|
import { useStore } from '../../store/store';
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
mixins: [orderFooterMixin],
|
mixins: [orderFooterMixin],
|
||||||
@@ -334,8 +334,8 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { defineComponent, reactive } from 'vue';
|
import { defineComponent, reactive } from 'vue';
|
||||||
import { useStore } from '../store/store';
|
import { handleOrderPlaceholders } from '../../handlers/orderPlaceholderHandler';
|
||||||
import { handleOrderPlaceholders } from '../handlers/orderPlaceholderHandler';
|
import { useStore } from '../../store/store';
|
||||||
|
|
||||||
type TOrderRows = 1 | 2 | 3 | 4 | 5;
|
type TOrderRows = 1 | 2 | 3 | 4 | 5;
|
||||||
|
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { defineComponent, reactive } from 'vue';
|
import { defineComponent, reactive } from 'vue';
|
||||||
import { useStore } from '../store/store';
|
import { useStore } from '../../store/store';
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: 'OrderO',
|
name: 'OrderO',
|
||||||
@@ -122,11 +122,10 @@ export default defineComponent({
|
|||||||
|
|
||||||
if (this.order.orderList.some((row) => row.name)) {
|
if (this.order.orderList.some((row) => row.name)) {
|
||||||
message += `\n--------\n<b>[ 1 ]</b>`;
|
message += `\n--------\n<b>[ 1 ]</b>`;
|
||||||
message += '\n1) zmniejszyć prędkość jazdy i zachować ostrożność'
|
message += '\n1) zmniejszyć prędkość jazdy i zachować ostrożność';
|
||||||
message += '\n2) jechać ostrożnie (j.o.)\n'
|
message += '\n2) jechać ostrożnie (j.o.)\n';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
for (let i = 0; i < this.order.orderList.length; i++) {
|
for (let i = 0; i < this.order.orderList.length; i++) {
|
||||||
const row = this.order.orderList[i];
|
const row = this.order.orderList[i];
|
||||||
if (!row.name) continue;
|
if (!row.name) continue;
|
||||||
@@ -60,7 +60,9 @@
|
|||||||
holder="nazwa sem."
|
holder="nazwa sem."
|
||||||
:radio-checked="order.rows[0].radio1 == 'radio-1a-1'"
|
:radio-checked="order.rows[0].radio1 == 'radio-1a-1'"
|
||||||
/>
|
/>
|
||||||
<span v-if="order.rows[0].optionSignal == 'drogowskazowego'"> (odnoszącego się do wyjazdu pociągu)</span>
|
<span v-if="order.rows[0].optionSignal == 'drogowskazowego'">
|
||||||
|
(odnoszącego się do wyjazdu pociągu)</span
|
||||||
|
>
|
||||||
<br />
|
<br />
|
||||||
</label>
|
</label>
|
||||||
<hr />
|
<hr />
|
||||||
@@ -284,8 +286,8 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { defineComponent, reactive } from 'vue';
|
import { defineComponent, reactive } from 'vue';
|
||||||
import { handleOrderPlaceholders } from '../handlers/orderPlaceholderHandler';
|
import { handleOrderPlaceholders } from '../../handlers/orderPlaceholderHandler';
|
||||||
import { useStore } from '../store/store';
|
import { useStore } from '../../store/store';
|
||||||
|
|
||||||
type TOrderRows = 1 | 2 | 3 | 4;
|
type TOrderRows = 1 | 2 | 3 | 4;
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { defineComponent } from 'vue';
|
import { defineComponent } from 'vue';
|
||||||
import { useStore } from '../store/store';
|
import { useStore } from '../../store/store';
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
data() {
|
data() {
|
||||||
@@ -61,11 +61,11 @@ export default defineComponent({
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@use '../styles/colors';
|
@use '../../styles/colors';
|
||||||
|
|
||||||
.sidebar_content {
|
.sidebar_content {
|
||||||
display: grid;
|
display: flex;
|
||||||
grid-template-rows: repeat(3, 1fr);
|
flex-direction: column;
|
||||||
gap: 0.25em;
|
gap: 0.25em;
|
||||||
|
|
||||||
font-size: 1.5em;
|
font-size: 1.5em;
|
||||||
@@ -126,10 +126,9 @@ button.option-save {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (max-width: 650px) {
|
@media screen and (max-width: 1150px) {
|
||||||
.sidebar_content {
|
.sidebar_content {
|
||||||
display: flex;
|
flex-direction: row;
|
||||||
justify-content: space-between;
|
|
||||||
|
|
||||||
& > button {
|
& > button {
|
||||||
height: 40px;
|
height: 40px;
|
||||||
@@ -50,9 +50,9 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { defineComponent } from 'vue';
|
import { defineComponent } from 'vue';
|
||||||
import orderStorageMixin from '../mixins/orderStorageMixin';
|
import orderStorageMixin from '../../mixins/orderStorageMixin';
|
||||||
import { useStore } from '../store/store';
|
import { useStore } from '../../store/store';
|
||||||
import { LocalStorageOrder } from '../types/orderTypes';
|
import { LocalStorageOrder } from '../../types/orderTypes';
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: 'OrderList',
|
name: 'OrderList',
|
||||||
@@ -114,7 +114,7 @@ export default defineComponent({
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@use '../styles/colors';
|
@use '../../styles/colors';
|
||||||
|
|
||||||
.list {
|
.list {
|
||||||
&-move,
|
&-move,
|
||||||
@@ -8,36 +8,35 @@
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="message_actions">
|
<div class="message_actions">
|
||||||
<button class="g-button action" @click="saveOrder">
|
<button class="g-button action icon" @click="saveOrder">
|
||||||
|
<LucideSave />
|
||||||
{{ $t('order-message.button-save') }}
|
{{ $t('order-message.button-save') }}
|
||||||
</button>
|
</button>
|
||||||
<button class="g-button action" @click="copyMessage">
|
|
||||||
|
<button class="g-button action icon" @click="copyMessage">
|
||||||
|
<LucideCopy />
|
||||||
{{ $t('order-message.button-copy') }}
|
{{ $t('order-message.button-copy') }}
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
class="g-button action"
|
class="g-button action icon"
|
||||||
:data-disabled="!store.chosenLocalOrderId"
|
:data-disabled="!store.chosenLocalOrderId"
|
||||||
@click="updateOrder"
|
@click="updateOrder"
|
||||||
>
|
>
|
||||||
|
<LucidePencil />
|
||||||
{{ $t('order-message.button-update') }}
|
{{ $t('order-message.button-update') }}
|
||||||
<span class="text--accent"
|
<span class="text--accent" v-if="store.chosenLocalOrderId"
|
||||||
>{{ store.chosenLocalOrderId && `#${store.chosenLocalOrderId.split('-')[1]}` }}
|
>#{{ store.chosenLocalOrderId.split('-')[1] }}
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
<button class="g-button action icon" @click="resetOrder">
|
||||||
|
<LucideRotateCcw />
|
||||||
|
{{ $t('order-message.button-reset') }}
|
||||||
|
</button>
|
||||||
</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>{{ $t('order-options.dark-mode') }}</span>
|
|
||||||
</label>
|
|
||||||
|
|
||||||
<label for="copy-increment" class="g-checkbox">
|
<label for="copy-increment" class="g-checkbox">
|
||||||
<input
|
<input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
@@ -80,23 +79,23 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { defineComponent } from 'vue';
|
import { defineComponent } from 'vue';
|
||||||
import { useStore } from '../store/store';
|
import orderStorageMixin from '../../mixins/orderStorageMixin';
|
||||||
|
import orderValidationMixin from '../../mixins/orderValidationMixin';
|
||||||
import saveIcon from '../assets/icon-save.svg';
|
import { useStore } from '../../store/store';
|
||||||
import orderStorageMixin from '../mixins/orderStorageMixin';
|
import { currentFormattedHours, currentFormattedMinutes } from '../../utils/dateUtils';
|
||||||
import orderValidationMixin from '../mixins/orderValidationMixin';
|
import { LucideCopy, LucidePencil, LucideRotateCcw, LucideSave } from 'lucide-vue-next';
|
||||||
import { currentFormattedHours, currentFormattedMinutes } from '../utils/dateUtils';
|
import { setOrderToDefault } from '../../utils/orderUtils';
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: 'OrderMessage',
|
name: 'OrderMessage',
|
||||||
|
components: { LucideCopy, LucidePencil, LucideRotateCcw, LucideSave },
|
||||||
|
|
||||||
mixins: [orderStorageMixin, orderValidationMixin],
|
mixins: [orderStorageMixin, orderValidationMixin],
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
saveIcon,
|
|
||||||
actionMonit: '',
|
actionMonit: '',
|
||||||
monitTimeout: undefined as number | undefined,
|
monitTimeout: null as number | null,
|
||||||
|
|
||||||
incrementOnSave: true,
|
incrementOnSave: true,
|
||||||
incrementOnCopy: true,
|
incrementOnCopy: true,
|
||||||
@@ -111,9 +110,9 @@ export default defineComponent({
|
|||||||
},
|
},
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
this.incrementOnSave = this.getOrderSetting('save-increment') === 'true';
|
this.incrementOnSave = this.getOrderSetting('save-increment') !== 'false';
|
||||||
this.incrementOnCopy = this.getOrderSetting('copy-increment') === 'true';
|
this.incrementOnCopy = this.getOrderSetting('copy-increment') !== 'false';
|
||||||
this.updateDate = this.getOrderSetting('update-date') === 'true';
|
this.updateDate = this.getOrderSetting('update-date') !== 'false';
|
||||||
},
|
},
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
@@ -143,25 +142,20 @@ export default defineComponent({
|
|||||||
},
|
},
|
||||||
|
|
||||||
showActionMonit(text: string) {
|
showActionMonit(text: string) {
|
||||||
if (this.monitTimeout) {
|
if (this.monitTimeout != null) {
|
||||||
this.actionMonit = '';
|
this.actionMonit = '';
|
||||||
clearTimeout(this.monitTimeout);
|
clearTimeout(this.monitTimeout);
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.actionMonit = text;
|
this.actionMonit = text;
|
||||||
|
}, 100);
|
||||||
this.monitTimeout = window.setTimeout(() => {
|
} else {
|
||||||
this.actionMonit = '';
|
this.actionMonit = text;
|
||||||
}, 5000);
|
|
||||||
}, 300);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.actionMonit = text;
|
|
||||||
|
|
||||||
this.monitTimeout = window.setTimeout(() => {
|
this.monitTimeout = window.setTimeout(() => {
|
||||||
this.actionMonit = '';
|
this.actionMonit = '';
|
||||||
|
this.monitTimeout = null;
|
||||||
}, 5000);
|
}, 5000);
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -248,15 +242,21 @@ export default defineComponent({
|
|||||||
this.showActionMonit(this.$t('order-message.success-update-html'));
|
this.showActionMonit(this.$t('order-message.success-update-html'));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
resetOrder() {
|
||||||
|
setOrderToDefault(this.store[this.store.chosenOrderType]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@use '../styles/colors';
|
@use '../../styles/colors';
|
||||||
|
|
||||||
.order-message {
|
.order-message {
|
||||||
|
overflow: auto;
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
margin-bottom: 1em;
|
margin-bottom: 1em;
|
||||||
@@ -269,8 +269,7 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
|
|
||||||
.message_body {
|
.message_body {
|
||||||
height: 250px;
|
height: 350px;
|
||||||
overflow: auto;
|
|
||||||
|
|
||||||
background-color: colors.$bgColLighter;
|
background-color: colors.$bgColLighter;
|
||||||
color: white;
|
color: white;
|
||||||
@@ -289,10 +288,13 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
|
|
||||||
.message_actions {
|
.message_actions {
|
||||||
display: flex;
|
display: grid;
|
||||||
align-items: center;
|
grid-template-columns: repeat(2, 1fr);
|
||||||
justify-content: center;
|
gap: 0.5em;
|
||||||
margin-top: 1em;
|
|
||||||
|
button.icon {
|
||||||
|
gap: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
button img {
|
button img {
|
||||||
height: 2ch;
|
height: 2ch;
|
||||||
+10
-10
@@ -111,16 +111,16 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { defineComponent } from 'vue';
|
import { defineComponent } from 'vue';
|
||||||
import { useStore } from '../store/store';
|
import http from '../../http';
|
||||||
|
import { useStore } from '../../store/store';
|
||||||
|
import { API } from '../../types/apiTypes';
|
||||||
|
import { ISceneryData } from '../../types/dataTypes';
|
||||||
import {
|
import {
|
||||||
currentFormattedDate,
|
currentFormattedDate,
|
||||||
currentFormattedHours,
|
currentFormattedHours,
|
||||||
currentFormattedMinutes
|
currentFormattedMinutes
|
||||||
} from '../utils/dateUtils';
|
} from '../../utils/dateUtils';
|
||||||
import http from '../http';
|
import { getRegionNameById } from '../../utils/sceneryUtils';
|
||||||
import { ISceneryData } from '../types/dataTypes';
|
|
||||||
import { API } from '../types/apiTypes';
|
|
||||||
import { getRegionNameById } from '../utils/sceneryUtils';
|
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: 'order-train-picker',
|
name: 'order-train-picker',
|
||||||
@@ -144,7 +144,7 @@ export default defineComponent({
|
|||||||
},
|
},
|
||||||
|
|
||||||
created() {
|
created() {
|
||||||
this.fillCheckpointName = window.localStorage.getItem('fill-checkpoint') == 'true';
|
this.fillCheckpointName = window.localStorage.getItem('fill-checkpoint') !== 'false';
|
||||||
|
|
||||||
this.fetchSceneriesData();
|
this.fetchSceneriesData();
|
||||||
},
|
},
|
||||||
@@ -261,7 +261,7 @@ export default defineComponent({
|
|||||||
sceneryAbbrev || this.store.orderFooter.stationName.slice(0, 2);
|
sceneryAbbrev || this.store.orderFooter.stationName.slice(0, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.store.orderMode = 'OrderMessage';
|
this.store.panelMode = 'OrderMessagePanel';
|
||||||
},
|
},
|
||||||
|
|
||||||
handleQueries() {
|
handleQueries() {
|
||||||
@@ -283,7 +283,7 @@ export default defineComponent({
|
|||||||
|
|
||||||
this.selectOption();
|
this.selectOption();
|
||||||
|
|
||||||
this.store.orderMode = 'OrderTrainPicker';
|
this.store.panelMode = 'OrderTrainPickerPanel';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -292,7 +292,7 @@ export default defineComponent({
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@use '../styles/colors';
|
@use '../../styles/colors';
|
||||||
|
|
||||||
.order-train-picker {
|
.order-train-picker {
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"orderS": ["D"]
|
|
||||||
}
|
|
||||||
+7
-6
@@ -4,9 +4,9 @@
|
|||||||
"en": "ENG"
|
"en": "ENG"
|
||||||
},
|
},
|
||||||
"navbar": {
|
"navbar": {
|
||||||
"order-message": "ORDER MESSAGE",
|
"OrderMessagePanel": "MESSAGE",
|
||||||
"order-list": "SAVED ORDERS",
|
"OrderListPanel": "SAVED",
|
||||||
"order-train-picker": "TRAINS"
|
"OrderTrainPickerPanel": "TRAINS"
|
||||||
},
|
},
|
||||||
"update": {
|
"update": {
|
||||||
"update-available-text": "New GeneraTOR version is available!",
|
"update-available-text": "New GeneraTOR version is available!",
|
||||||
@@ -20,9 +20,10 @@
|
|||||||
"order-message": {
|
"order-message": {
|
||||||
"title": "Message to display in the simulator's chatbox:",
|
"title": "Message to display in the simulator's chatbox:",
|
||||||
"info": "Copy or save the content of the generated train order using buttons below:",
|
"info": "Copy or save the content of the generated train order using buttons below:",
|
||||||
"button-save": "Save as new order",
|
"button-save": "Save as new",
|
||||||
"button-copy": "Copy the order message",
|
"button-copy": "Copy the message",
|
||||||
"button-update": "Update the order",
|
"button-update": "Update",
|
||||||
|
"button-reset": "Reset",
|
||||||
"warning-outdated-clipboard": "Oops! Your browser may be a little bit depraceted since it's not supporting saving data to the clipboard! :/",
|
"warning-outdated-clipboard": "Oops! Your browser may be a little bit depraceted since it's not supporting saving data to the clipboard! :/",
|
||||||
"warning-fill-inputs": "Fill all the empty fields before copying the order!",
|
"warning-fill-inputs": "Fill all the empty fields before copying the order!",
|
||||||
"warning-add-rows": "Add at least one row before copying the order!",
|
"warning-add-rows": "Add at least one row before copying the order!",
|
||||||
|
|||||||
+7
-6
@@ -13,16 +13,17 @@
|
|||||||
"info-2": "Pełny changelog dostępny na <a href='https://github.com/Spythere/genera-tor' target='_blank'>GitHubie projektu</a>"
|
"info-2": "Pełny changelog dostępny na <a href='https://github.com/Spythere/genera-tor' target='_blank'>GitHubie projektu</a>"
|
||||||
},
|
},
|
||||||
"navbar": {
|
"navbar": {
|
||||||
"order-message": "TREŚĆ ROZKAZU",
|
"OrderMessagePanel": "WIADOMOŚĆ",
|
||||||
"order-list": "ZAPISANE ROZ.",
|
"OrderListPanel": "ZAPISANE",
|
||||||
"order-train-picker": "POCIĄGI"
|
"OrderTrainPickerPanel": "POCIĄGI"
|
||||||
},
|
},
|
||||||
"order-message": {
|
"order-message": {
|
||||||
"title": "Wiadomość do wyświetlenia na czacie symulatora:",
|
"title": "Wiadomość do wyświetlenia na czacie symulatora:",
|
||||||
"info": "Po wygenerowaniu rozkazu skopiuj jego treść lub zapisz w pamięci przeglądarki za pomocą przycisków poniżej:",
|
"info": "Po wygenerowaniu rozkazu skopiuj jego treść lub zapisz w pamięci przeglądarki za pomocą przycisków poniżej:",
|
||||||
"button-save": "Zapisz nowy rozkaz",
|
"button-save": "Zapisz nowy",
|
||||||
"button-copy": "Kopiuj treść rozkazu",
|
"button-copy": "Skopiuj treść",
|
||||||
"button-update": "Zaktualizuj rozkaz",
|
"button-update": "Zaktualizuj",
|
||||||
|
"button-reset": "Zresetuj",
|
||||||
"warning-outdated-clipboard": "Ups! Twoja przeglądarka musi być dosyć przestarzała, ponieważ nie obsługuje zapisu do schowka! :/",
|
"warning-outdated-clipboard": "Ups! Twoja przeglądarka musi być dosyć przestarzała, ponieważ nie obsługuje zapisu do schowka! :/",
|
||||||
"warning-fill-inputs": "Wypełnij puste rubryki rozkazu przed jego skopiowaniem!",
|
"warning-fill-inputs": "Wypełnij puste rubryki rozkazu przed jego skopiowaniem!",
|
||||||
"warning-add-rows": "Dodaj co najmniej jedną działkę rozkazu przed jego skopiowaniem!",
|
"warning-add-rows": "Dodaj co najmniej jedną działkę rozkazu przed jego skopiowaniem!",
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ export default defineComponent({
|
|||||||
|
|
||||||
this.store.chosenOrderType = localOrder.orderType;
|
this.store.chosenOrderType = localOrder.orderType;
|
||||||
this.store.chosenLocalOrderId = localOrder.id;
|
this.store.chosenLocalOrderId = localOrder.id;
|
||||||
this.store.orderMode = 'OrderMessage';
|
this.store.panelMode = 'OrderMessagePanel';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
+12
-2
@@ -1,10 +1,12 @@
|
|||||||
import { defineStore } from 'pinia';
|
import { defineStore } from 'pinia';
|
||||||
import { IOrderN, IOrderO, IOrderS, TOrder } from '../types/orderTypes';
|
import { IOrderN, IOrderO, IOrderS, TOrder, TPanel } from '../types/orderTypes';
|
||||||
import {
|
import {
|
||||||
currentFormattedDate,
|
currentFormattedDate,
|
||||||
currentFormattedHours,
|
currentFormattedHours,
|
||||||
currentFormattedMinutes
|
currentFormattedMinutes
|
||||||
} from '../utils/dateUtils';
|
} from '../utils/dateUtils';
|
||||||
|
import i18n from '../i18n';
|
||||||
|
import StorageManager from '../managers/storageManager';
|
||||||
|
|
||||||
export const useStore = defineStore('store', {
|
export const useStore = defineStore('store', {
|
||||||
state: () => {
|
state: () => {
|
||||||
@@ -24,7 +26,7 @@ export const useStore = defineStore('store', {
|
|||||||
chosenOrderType: 'orderN' as TOrder,
|
chosenOrderType: 'orderN' as TOrder,
|
||||||
chosenLocalOrderId: '',
|
chosenLocalOrderId: '',
|
||||||
|
|
||||||
orderMode: 'OrderMessage',
|
panelMode: 'OrderMessagePanel' as TPanel,
|
||||||
|
|
||||||
orderFooter: {
|
orderFooter: {
|
||||||
stationName: '',
|
stationName: '',
|
||||||
@@ -214,5 +216,13 @@ export const useStore = defineStore('store', {
|
|||||||
]
|
]
|
||||||
} as IOrderS
|
} as IOrderS
|
||||||
};
|
};
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
changeLang(lang: string) {
|
||||||
|
i18n.global.locale.value = lang as typeof i18n.global.locale.value;
|
||||||
|
this.currentAppLocale = lang;
|
||||||
|
|
||||||
|
StorageManager.setStringValue('lang', lang);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
+18
-11
@@ -1,24 +1,31 @@
|
|||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Libre Franklin';
|
|
||||||
src: url('/fonts/LibreFranklin-Bold.woff2') format('woff2');
|
|
||||||
font-weight: 800;
|
|
||||||
font-style: normal;
|
|
||||||
font-display: swap;
|
font-display: swap;
|
||||||
|
font-family: 'Libre Franklin';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
src: url('/fonts/libre-franklin-regular.woff2') format('woff2');
|
||||||
}
|
}
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
|
font-display: swap;
|
||||||
font-family: 'Libre Franklin';
|
font-family: 'Libre Franklin';
|
||||||
src: url('/fonts/LibreFranklin-Regular.woff2') format('woff2');
|
font-style: normal;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
font-style: normal;
|
src: url('/fonts/libre-franklin-500.woff2') format('woff2');
|
||||||
font-display: swap;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Libre Franklin';
|
|
||||||
src: url('/fonts/LibreFranklin-SemiBold.woff2') format('woff2');
|
|
||||||
font-weight: 700;
|
|
||||||
font-style: normal;
|
|
||||||
font-display: swap;
|
font-display: swap;
|
||||||
|
font-family: 'Libre Franklin';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 700;
|
||||||
|
src: url('/fonts/libre-franklin-700.woff2') format('woff2');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-display: swap;
|
||||||
|
font-family: 'Libre Franklin';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 800;
|
||||||
|
src: url('/fonts/libre-franklin-800.woff2') format('woff2');
|
||||||
|
}
|
||||||
+2
-15
@@ -1,21 +1,8 @@
|
|||||||
@use 'fonts';
|
@use 'fonts';
|
||||||
@use 'colors';
|
@use 'colors';
|
||||||
|
|
||||||
// Global scrollbar style
|
[data-theme='dark'] {
|
||||||
::-webkit-scrollbar {
|
color-scheme: dark;
|
||||||
width: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-scrollbar-track {
|
|
||||||
background: #333;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-scrollbar-thumb {
|
|
||||||
background: #888;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-scrollbar-thumb:hover {
|
|
||||||
background: #555;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
body,
|
body,
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
export type TOrder = 'orderO' | 'orderS' | 'orderN';
|
export type TOrder = 'orderO' | 'orderS' | 'orderN';
|
||||||
|
export type TPanel = 'OrderMessagePanel' | 'OrderListPanel' | 'OrderTrainPickerPanel';
|
||||||
|
|
||||||
export interface LocalStorageOrder {
|
export interface LocalStorageOrder {
|
||||||
id: string;
|
id: string;
|
||||||
|
|||||||
@@ -0,0 +1,197 @@
|
|||||||
|
import { IOrderN, IOrderO, IOrderS, TOrder } from '../types/orderTypes';
|
||||||
|
import { currentFormattedDate } from './dateUtils';
|
||||||
|
|
||||||
|
const orderDefaults = {
|
||||||
|
orderN: {
|
||||||
|
header: {
|
||||||
|
orderNo: '1',
|
||||||
|
trainNo: '',
|
||||||
|
date: ''
|
||||||
|
},
|
||||||
|
|
||||||
|
rows: [
|
||||||
|
{
|
||||||
|
enabled: false,
|
||||||
|
from: '',
|
||||||
|
to: '',
|
||||||
|
trackNo: '',
|
||||||
|
trackNo2: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
enabled: false,
|
||||||
|
option1: 'sygnału "Nakaz Jazdy"',
|
||||||
|
option2: 'lewy',
|
||||||
|
option3: 'lewy',
|
||||||
|
signal1: '',
|
||||||
|
signal2: '',
|
||||||
|
signal3: '',
|
||||||
|
signalType: 'wyjazdowego',
|
||||||
|
checkbox: 'checkbox-2a',
|
||||||
|
direction1: '',
|
||||||
|
direction2: '',
|
||||||
|
trackNoFrom: '',
|
||||||
|
trackNoTo1: '',
|
||||||
|
trackNoTo2: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
enabled: false,
|
||||||
|
option1: 'Jazda',
|
||||||
|
option2: 'pociąg',
|
||||||
|
|
||||||
|
direction: '',
|
||||||
|
toKilometer: '',
|
||||||
|
trackNo: '',
|
||||||
|
untilHour: '',
|
||||||
|
untilMin: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
enabled: false,
|
||||||
|
trackNo: '',
|
||||||
|
optionStation: 'stację',
|
||||||
|
stationName: '',
|
||||||
|
checkbox: 'checkbox-4a',
|
||||||
|
side: 'lewej'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
enabled: false,
|
||||||
|
trackNo: '',
|
||||||
|
direction: '',
|
||||||
|
stationType: 'stację',
|
||||||
|
stationName: '',
|
||||||
|
on: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
enabled: false,
|
||||||
|
content: '',
|
||||||
|
twoWay: {
|
||||||
|
enabled: false,
|
||||||
|
from: '',
|
||||||
|
to: '',
|
||||||
|
trackNo: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
orderS: {
|
||||||
|
header: {
|
||||||
|
orderNo: '1',
|
||||||
|
trainNo: '',
|
||||||
|
for: 'pociągu',
|
||||||
|
date: ''
|
||||||
|
},
|
||||||
|
|
||||||
|
rows: [
|
||||||
|
{
|
||||||
|
enabled: false,
|
||||||
|
option1: 'sygnału "nakaz jazdy"',
|
||||||
|
optionSignal: 'wyjazdowego',
|
||||||
|
radio1: 'radio-1a-1',
|
||||||
|
signal1: '',
|
||||||
|
trackNo: ''
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
enabled: false,
|
||||||
|
signalType: 'wyjazdowego',
|
||||||
|
signal1: '',
|
||||||
|
signal2: '',
|
||||||
|
signal3: '',
|
||||||
|
trackNo: ''
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
enabled: false,
|
||||||
|
from: '',
|
||||||
|
to: '',
|
||||||
|
trackNo: '',
|
||||||
|
trainNo: '',
|
||||||
|
arrivedTo: '',
|
||||||
|
hour: ''
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
enabled: false,
|
||||||
|
content: '',
|
||||||
|
w5: {
|
||||||
|
enabled: false,
|
||||||
|
maxHour: '',
|
||||||
|
borderType: 'wskaźnik przetaczania W5',
|
||||||
|
tmName: '',
|
||||||
|
maxKm: '',
|
||||||
|
returnWay: 'sygnał ręczny "Do mnie"',
|
||||||
|
trackNo: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
orderO: {
|
||||||
|
header: {
|
||||||
|
orderNo: '1',
|
||||||
|
trainNo: '',
|
||||||
|
date: ''
|
||||||
|
},
|
||||||
|
|
||||||
|
orderList: [
|
||||||
|
{
|
||||||
|
name: '',
|
||||||
|
from: '',
|
||||||
|
to: '',
|
||||||
|
vmax: '',
|
||||||
|
jo: false,
|
||||||
|
reason: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '',
|
||||||
|
from: '',
|
||||||
|
to: '',
|
||||||
|
vmax: '',
|
||||||
|
jo: false,
|
||||||
|
reason: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '',
|
||||||
|
from: '',
|
||||||
|
to: '',
|
||||||
|
vmax: '',
|
||||||
|
jo: false,
|
||||||
|
reason: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '',
|
||||||
|
from: '',
|
||||||
|
to: '',
|
||||||
|
vmax: '',
|
||||||
|
jo: false,
|
||||||
|
reason: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '',
|
||||||
|
from: '',
|
||||||
|
to: '',
|
||||||
|
vmax: '',
|
||||||
|
jo: false,
|
||||||
|
reason: ''
|
||||||
|
}
|
||||||
|
],
|
||||||
|
other: ''
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export function getOrderType(order: IOrderN | IOrderO | IOrderS): TOrder {
|
||||||
|
if ('rows' in order && 'for' in order.header) return 'orderS';
|
||||||
|
else if ('rows' in order) return 'orderN';
|
||||||
|
|
||||||
|
return 'orderO';
|
||||||
|
}
|
||||||
|
|
||||||
|
export function setOrderToDefault(order: IOrderN | IOrderO | IOrderS) {
|
||||||
|
const orderType = getOrderType(order);
|
||||||
|
const defaultOrderObjectCopy = JSON.parse(JSON.stringify(orderDefaults[orderType]));
|
||||||
|
|
||||||
|
Object.assign(order, defaultOrderObjectCopy);
|
||||||
|
|
||||||
|
// Update date in the header
|
||||||
|
order.header.date = currentFormattedDate();
|
||||||
|
}
|
||||||
+84
-111
@@ -2,33 +2,45 @@
|
|||||||
<!-- <OrderHelper v-if="store.helperModalOpen" /> -->
|
<!-- <OrderHelper v-if="store.helperModalOpen" /> -->
|
||||||
|
|
||||||
<div class="home">
|
<div class="home">
|
||||||
<div class="home_container">
|
<div class="home-container">
|
||||||
<div class="order_container">
|
<Order />
|
||||||
<SideBar />
|
|
||||||
<OrderVue />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="message_container">
|
<div class="panel-container">
|
||||||
<div class="message_nav">
|
<div class="panel-nav">
|
||||||
<button class="g-button icon" @click="switchLanguages">
|
<button
|
||||||
<LanguagesIcon :size="18" />
|
key="OrderMessagePanel"
|
||||||
<span style="margin-left: 0.25em">{{ $t('locale.' + store.currentAppLocale) }}</span>
|
class="g-button"
|
||||||
|
:data-active="store.panelMode == 'OrderMessagePanel'"
|
||||||
|
@click="selectPanelMode('OrderMessagePanel')"
|
||||||
|
>
|
||||||
|
<MessageSquareTextIcon :size="20" />
|
||||||
|
{{ t(`navbar.OrderMessagePanel`) }}
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
v-for="(action, i) in navActions"
|
key="OrderListPanel"
|
||||||
:key="action.mode"
|
class="g-button"
|
||||||
class="g-button option"
|
:data-active="store.panelMode == 'OrderListPanel'"
|
||||||
:data-active="store.orderMode == action.mode"
|
@click="selectPanelMode('OrderListPanel')"
|
||||||
@click="selectOrderMode(action.mode)"
|
|
||||||
>
|
>
|
||||||
{{ $t(`navbar.${action.value}`) }}
|
<BookMarkedIcon :size="20" />
|
||||||
|
{{ t(`navbar.OrderListPanel`) }}
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<button
|
||||||
|
key="OrderTrainPickerPanel"
|
||||||
|
class="g-button"
|
||||||
|
:data-active="store.panelMode == 'OrderTrainPickerPanel'"
|
||||||
|
@click="selectPanelMode('OrderTrainPickerPanel')"
|
||||||
|
>
|
||||||
|
<TrainFrontIcon :size="20" />
|
||||||
|
{{ t(`navbar.OrderTrainPickerPanel`) }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<transition name="order-anim" mode="out-in">
|
<transition name="order-anim" mode="out-in">
|
||||||
<keep-alive>
|
<keep-alive>
|
||||||
<Component :is="orderModeComponent" />
|
<Component :is="panelComponent" />
|
||||||
</keep-alive>
|
</keep-alive>
|
||||||
</transition>
|
</transition>
|
||||||
</div>
|
</div>
|
||||||
@@ -36,74 +48,34 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts" setup>
|
||||||
import { defineComponent } from 'vue';
|
import { computed } from 'vue';
|
||||||
import OrderVue from '../components/Order.vue';
|
import { useI18n } from 'vue-i18n';
|
||||||
import SideBar from '../components/SideBar.vue';
|
|
||||||
import OrderMessage from '../components/OrderMessage.vue';
|
|
||||||
import OrderList from '../components/OrderList.vue';
|
|
||||||
import { useStore } from '../store/store';
|
import { useStore } from '../store/store';
|
||||||
import OrderHelper from '../components/OrderHelper.vue';
|
import OrderMessagePanel from '../components/Panels/OrderMessagePanel.vue';
|
||||||
import OrderTrainPicker from '../components/OrderTrainPicker.vue';
|
import OrderListPanel from '../components/Panels/OrderListPanel.vue';
|
||||||
import { LanguagesIcon } from 'lucide-vue-next';
|
import OrderTrainPickerPanel from '../components/Panels/OrderTrainPickerPanel.vue';
|
||||||
import StorageManager from '../managers/storageManager';
|
import SideBar from '../components/App/SideBar.vue';
|
||||||
|
import Order from '../components/Orders/Order.vue';
|
||||||
|
import { BookMarkedIcon, MessageSquareTextIcon, TrainFrontIcon } from 'lucide-vue-next';
|
||||||
|
import { TPanel } from '../types/orderTypes';
|
||||||
|
|
||||||
export default defineComponent({
|
const store = useStore();
|
||||||
components: { OrderVue, SideBar, OrderHelper, LanguagesIcon },
|
const { t } = useI18n();
|
||||||
|
|
||||||
data() {
|
function selectPanelMode(mode: TPanel) {
|
||||||
return {
|
store.panelMode = mode;
|
||||||
navActions: [
|
|
||||||
{
|
|
||||||
mode: 'OrderMessage',
|
|
||||||
value: 'order-message'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
mode: 'OrderList',
|
|
||||||
value: 'order-list'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
mode: 'OrderTrainPicker',
|
|
||||||
value: 'order-train-picker'
|
|
||||||
}
|
}
|
||||||
]
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
methods: {
|
const panelComponent = computed(() => {
|
||||||
selectOrderMode(mode: string) {
|
switch (store.panelMode) {
|
||||||
this.store.orderMode = mode;
|
case 'OrderListPanel':
|
||||||
},
|
return OrderListPanel;
|
||||||
|
case 'OrderTrainPickerPanel':
|
||||||
switchLanguages() {
|
return OrderTrainPickerPanel;
|
||||||
const lang = this.store.currentAppLocale == 'pl' ? 'en' : 'pl';
|
case 'OrderMessagePanel':
|
||||||
|
|
||||||
this.$i18n.locale = lang;
|
|
||||||
this.store.currentAppLocale = lang;
|
|
||||||
|
|
||||||
StorageManager.setStringValue('lang', lang);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
setup() {
|
|
||||||
return {
|
|
||||||
store: useStore()
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
computed: {
|
|
||||||
orderModeComponent() {
|
|
||||||
switch (this.store.orderMode) {
|
|
||||||
case 'OrderMessage':
|
|
||||||
return OrderMessage;
|
|
||||||
case 'OrderList':
|
|
||||||
return OrderList;
|
|
||||||
case 'OrderTrainPicker':
|
|
||||||
return OrderTrainPicker;
|
|
||||||
default:
|
default:
|
||||||
return OrderMessage;
|
return OrderMessagePanel;
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
@@ -112,7 +84,6 @@ export default defineComponent({
|
|||||||
@use '../styles/colors';
|
@use '../styles/colors';
|
||||||
|
|
||||||
.home {
|
.home {
|
||||||
min-height: 100vh;
|
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
|
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -122,63 +93,61 @@ export default defineComponent({
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.home_container {
|
.home-container {
|
||||||
display: flex;
|
display: grid;
|
||||||
flex-wrap: wrap;
|
grid-template-columns: 600px 500px;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
gap: 2em 1em;
|
gap: 2em 1em;
|
||||||
padding: 0.5em;
|
padding: 1em;
|
||||||
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
@media screen and (max-width: 650px) {
|
@media screen and (max-width: 1150px) {
|
||||||
|
grid-template-columns: auto;
|
||||||
padding: 1em 0.5em;
|
padding: 1em 0.5em;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.order_container {
|
.panel-container {
|
||||||
width: 100%;
|
|
||||||
max-width: 600px;
|
|
||||||
|
|
||||||
display: flex;
|
|
||||||
align-items: start;
|
|
||||||
|
|
||||||
@media screen and (max-width: 650px) {
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.message_container {
|
|
||||||
padding: 2px;
|
|
||||||
|
|
||||||
width: 100%;
|
|
||||||
max-width: 500px;
|
|
||||||
|
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-rows: auto auto 1fr;
|
grid-template-rows: auto auto 1fr;
|
||||||
|
color-scheme: dark;
|
||||||
|
|
||||||
height: 95vh;
|
padding: 2px;
|
||||||
|
max-width: 800px;
|
||||||
|
height: calc(100vh - 5em);
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.message_nav {
|
.panel-nav {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
gap: 0.25em;
|
align-items: center;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
gap: 0.25em;
|
||||||
margin-bottom: 1.5em;
|
margin-bottom: 1.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.message_nav > button {
|
.panel-nav > button {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.5em;
|
||||||
|
min-width: 8em;
|
||||||
|
padding: 0.25em 0.5em;
|
||||||
|
|
||||||
|
&:focus-visible {
|
||||||
|
outline: 1px solid white;
|
||||||
|
}
|
||||||
|
|
||||||
&::before {
|
&::before {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
content: '';
|
content: '';
|
||||||
bottom: -3px;
|
bottom: -3px;
|
||||||
left: 0;
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
|
||||||
width: 0;
|
width: 0;
|
||||||
height: 3px;
|
height: 3px;
|
||||||
|
|
||||||
@@ -187,6 +156,10 @@ export default defineComponent({
|
|||||||
background-color: colors.$accentCol;
|
background-color: colors.$accentCol;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&[data-active='true'] {
|
||||||
|
color: colors.$accentCol;
|
||||||
|
}
|
||||||
|
|
||||||
&[data-active='true']::before {
|
&[data-active='true']::before {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -23,7 +23,7 @@ export default defineConfig({
|
|||||||
VitePWA({
|
VitePWA({
|
||||||
registerType: 'prompt',
|
registerType: 'prompt',
|
||||||
workbox: {
|
workbox: {
|
||||||
globPatterns: ['**/*.{js,css,html,png,svg,img}'],
|
globPatterns: ['**/*.{js,css,html,png,svg,img,woff2,ico}'],
|
||||||
runtimeCaching: [
|
runtimeCaching: [
|
||||||
{
|
{
|
||||||
urlPattern: /^https:\/\/stacjownik.spythere.eu\/\/api\/getSceneries/i,
|
urlPattern: /^https:\/\/stacjownik.spythere.eu\/\/api\/getSceneries/i,
|
||||||
|
|||||||
@@ -963,26 +963,26 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3"
|
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3"
|
||||||
integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==
|
integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==
|
||||||
|
|
||||||
"@intlify/core-base@11.1.7":
|
"@intlify/core-base@11.2.8":
|
||||||
version "11.1.7"
|
version "11.2.8"
|
||||||
resolved "https://registry.yarnpkg.com/@intlify/core-base/-/core-base-11.1.7.tgz#497280e4774011cf0d42eaedb20e9cd4594c0a3f"
|
resolved "https://registry.yarnpkg.com/@intlify/core-base/-/core-base-11.2.8.tgz#083551bdd79b415476f282ded84f5ddc5fad75c1"
|
||||||
integrity sha512-gYiGnQeJVp3kNBeXQ73m1uFOak0ry4av8pn+IkEWigyyPWEMGzB+xFeQdmGMFn49V+oox6294oGVff8bYOhtOw==
|
integrity sha512-nBq6Y1tVkjIUsLsdOjDSJj4AsjvD0UG3zsg9Fyc+OivwlA/oMHSKooUy9tpKj0HqZ+NWFifweHavdljlBLTwdA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@intlify/message-compiler" "11.1.7"
|
"@intlify/message-compiler" "11.2.8"
|
||||||
"@intlify/shared" "11.1.7"
|
"@intlify/shared" "11.2.8"
|
||||||
|
|
||||||
"@intlify/message-compiler@11.1.7":
|
"@intlify/message-compiler@11.2.8":
|
||||||
version "11.1.7"
|
version "11.2.8"
|
||||||
resolved "https://registry.yarnpkg.com/@intlify/message-compiler/-/message-compiler-11.1.7.tgz#047ba659cfd34b0f630dddf73c3f9224bd3af7f8"
|
resolved "https://registry.yarnpkg.com/@intlify/message-compiler/-/message-compiler-11.2.8.tgz#3d967c07a36a8d6060730c1d3a2d40e3caaf07b3"
|
||||||
integrity sha512-0ezkep1AT30NyuKj8QbRlmvMORCCRlOIIu9v8RNU8SwDjjTiFCZzczCORMns2mCH4HZ1nXgrfkKzYUbfjNRmng==
|
integrity sha512-A5n33doOjmHsBtCN421386cG1tWp5rpOjOYPNsnpjIJbQ4POF0QY2ezhZR9kr0boKwaHjbOifvyQvHj2UTrDFQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@intlify/shared" "11.1.7"
|
"@intlify/shared" "11.2.8"
|
||||||
source-map-js "^1.0.2"
|
source-map-js "^1.0.2"
|
||||||
|
|
||||||
"@intlify/shared@11.1.7":
|
"@intlify/shared@11.2.8":
|
||||||
version "11.1.7"
|
version "11.2.8"
|
||||||
resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-11.1.7.tgz#54e60d52b73fb25019e2689d6531a54928b40194"
|
resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-11.2.8.tgz#30815afda2acd859cefdbb97cf59e7f819f32611"
|
||||||
integrity sha512-4yZeMt2Aa/7n5Ehy4KalUlvt3iRLcg1tq9IBVfOgkyWFArN4oygn6WxgGIFibP3svpaH8DarbNaottq+p0gUZQ==
|
integrity sha512-l6e4NZyUgv8VyXXH4DbuucFOBmxLF56C/mqh2tvApbzl2Hrhi1aTDcuv5TKdxzfHYmpO3UB0Cz04fgDT9vszfw==
|
||||||
|
|
||||||
"@jridgewell/gen-mapping@^0.3.5":
|
"@jridgewell/gen-mapping@^0.3.5":
|
||||||
version "0.3.8"
|
version "0.3.8"
|
||||||
@@ -1045,94 +1045,94 @@
|
|||||||
"@nodelib/fs.scandir" "2.1.5"
|
"@nodelib/fs.scandir" "2.1.5"
|
||||||
fastq "^1.6.0"
|
fastq "^1.6.0"
|
||||||
|
|
||||||
"@parcel/watcher-android-arm64@2.5.1":
|
"@parcel/watcher-android-arm64@2.5.4":
|
||||||
version "2.5.1"
|
version "2.5.4"
|
||||||
resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz#507f836d7e2042f798c7d07ad19c3546f9848ac1"
|
resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.4.tgz#88c67bde2c3efa997a0b1fea540080c6ade0322c"
|
||||||
integrity sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==
|
integrity sha512-hoh0vx4v+b3BNI7Cjoy2/B0ARqcwVNrzN/n7DLq9ZB4I3lrsvhrkCViJyfTj/Qi5xM9YFiH4AmHGK6pgH1ss7g==
|
||||||
|
|
||||||
"@parcel/watcher-darwin-arm64@2.5.1":
|
"@parcel/watcher-darwin-arm64@2.5.4":
|
||||||
version "2.5.1"
|
version "2.5.4"
|
||||||
resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz#3d26dce38de6590ef79c47ec2c55793c06ad4f67"
|
resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.4.tgz#d9dc037cff8a4ab7839a79c5287a6e6660f7ab27"
|
||||||
integrity sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==
|
integrity sha512-kphKy377pZiWpAOyTgQYPE5/XEKVMaj6VUjKT5VkNyUJlr2qZAn8gIc7CPzx+kbhvqHDT9d7EqdOqRXT6vk0zw==
|
||||||
|
|
||||||
"@parcel/watcher-darwin-x64@2.5.1":
|
"@parcel/watcher-darwin-x64@2.5.4":
|
||||||
version "2.5.1"
|
version "2.5.4"
|
||||||
resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz#99f3af3869069ccf774e4ddfccf7e64fd2311ef8"
|
resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.4.tgz#da0e13e16ee6d378242e2cfb469d72667624383a"
|
||||||
integrity sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==
|
integrity sha512-UKaQFhCtNJW1A9YyVz3Ju7ydf6QgrpNQfRZ35wNKUhTQ3dxJ/3MULXN5JN/0Z80V/KUBDGa3RZaKq1EQT2a2gg==
|
||||||
|
|
||||||
"@parcel/watcher-freebsd-x64@2.5.1":
|
"@parcel/watcher-freebsd-x64@2.5.4":
|
||||||
version "2.5.1"
|
version "2.5.4"
|
||||||
resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz#14d6857741a9f51dfe51d5b08b7c8afdbc73ad9b"
|
resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.4.tgz#feb7cc9ec680bae3e91dddcdb4fe1c399ed52cc1"
|
||||||
integrity sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==
|
integrity sha512-Dib0Wv3Ow/m2/ttvLdeI2DBXloO7t3Z0oCp4bAb2aqyqOjKPPGrg10pMJJAQ7tt8P4V2rwYwywkDhUia/FgS+Q==
|
||||||
|
|
||||||
"@parcel/watcher-linux-arm-glibc@2.5.1":
|
"@parcel/watcher-linux-arm-glibc@2.5.4":
|
||||||
version "2.5.1"
|
version "2.5.4"
|
||||||
resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz#43c3246d6892381db473bb4f663229ad20b609a1"
|
resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.4.tgz#fa4e9cf8228c8c433e2f035e8b16aa299d892a78"
|
||||||
integrity sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==
|
integrity sha512-I5Vb769pdf7Q7Sf4KNy8Pogl/URRCKu9ImMmnVKYayhynuyGYMzuI4UOWnegQNa2sGpsPSbzDsqbHNMyeyPCgw==
|
||||||
|
|
||||||
"@parcel/watcher-linux-arm-musl@2.5.1":
|
"@parcel/watcher-linux-arm-musl@2.5.4":
|
||||||
version "2.5.1"
|
version "2.5.4"
|
||||||
resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz#663750f7090bb6278d2210de643eb8a3f780d08e"
|
resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.4.tgz#9ee6792e2d8810af9871ee5bbc2aa04e0b079d62"
|
||||||
integrity sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==
|
integrity sha512-kGO8RPvVrcAotV4QcWh8kZuHr9bXi9a3bSZw7kFarYR0+fGliU7hd/zevhjw8fnvIKG3J9EO5G6sXNGCSNMYPQ==
|
||||||
|
|
||||||
"@parcel/watcher-linux-arm64-glibc@2.5.1":
|
"@parcel/watcher-linux-arm64-glibc@2.5.4":
|
||||||
version "2.5.1"
|
version "2.5.4"
|
||||||
resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz#ba60e1f56977f7e47cd7e31ad65d15fdcbd07e30"
|
resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.4.tgz#624c6d874d99afa79305720f96a0c233d4ad7fde"
|
||||||
integrity sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==
|
integrity sha512-KU75aooXhqGFY2W5/p8DYYHt4hrjHZod8AhcGAmhzPn/etTa+lYCDB2b1sJy3sWJ8ahFVTdy+EbqSBvMx3iFlw==
|
||||||
|
|
||||||
"@parcel/watcher-linux-arm64-musl@2.5.1":
|
"@parcel/watcher-linux-arm64-musl@2.5.4":
|
||||||
version "2.5.1"
|
version "2.5.4"
|
||||||
resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz#f7fbcdff2f04c526f96eac01f97419a6a99855d2"
|
resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.4.tgz#5341e88b9e645d31c015ed40f384e60e49bd74d2"
|
||||||
integrity sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==
|
integrity sha512-Qx8uNiIekVutnzbVdrgSanM+cbpDD3boB1f8vMtnuG5Zau4/bdDbXyKwIn0ToqFhIuob73bcxV9NwRm04/hzHQ==
|
||||||
|
|
||||||
"@parcel/watcher-linux-x64-glibc@2.5.1":
|
"@parcel/watcher-linux-x64-glibc@2.5.4":
|
||||||
version "2.5.1"
|
version "2.5.4"
|
||||||
resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz#4d2ea0f633eb1917d83d483392ce6181b6a92e4e"
|
resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.4.tgz#be5bcc49d3f6d21cc81bb531970a05d3721e385c"
|
||||||
integrity sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==
|
integrity sha512-UYBQvhYmgAv61LNUn24qGQdjtycFBKSK3EXr72DbJqX9aaLbtCOO8+1SkKhD/GNiJ97ExgcHBrukcYhVjrnogA==
|
||||||
|
|
||||||
"@parcel/watcher-linux-x64-musl@2.5.1":
|
"@parcel/watcher-linux-x64-musl@2.5.4":
|
||||||
version "2.5.1"
|
version "2.5.4"
|
||||||
resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz#277b346b05db54f55657301dd77bdf99d63606ee"
|
resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.4.tgz#bffd3895b1f0cc8fd1436e409fd65d0a901281c0"
|
||||||
integrity sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==
|
integrity sha512-YoRWCVgxv8akZrMhdyVi6/TyoeeMkQ0PGGOf2E4omODrvd1wxniXP+DBynKoHryStks7l+fDAMUBRzqNHrVOpg==
|
||||||
|
|
||||||
"@parcel/watcher-win32-arm64@2.5.1":
|
"@parcel/watcher-win32-arm64@2.5.4":
|
||||||
version "2.5.1"
|
version "2.5.4"
|
||||||
resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz#7e9e02a26784d47503de1d10e8eab6cceb524243"
|
resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.4.tgz#7fb8aedea5b34ba97a01e1555929d01f4eb72fe4"
|
||||||
integrity sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==
|
integrity sha512-iby+D/YNXWkiQNYcIhg8P5hSjzXEHaQrk2SLrWOUD7VeC4Ohu0WQvmV+HDJokZVJ2UjJ4AGXW3bx7Lls9Ln4TQ==
|
||||||
|
|
||||||
"@parcel/watcher-win32-ia32@2.5.1":
|
"@parcel/watcher-win32-ia32@2.5.4":
|
||||||
version "2.5.1"
|
version "2.5.4"
|
||||||
resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz#2d0f94fa59a873cdc584bf7f6b1dc628ddf976e6"
|
resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.4.tgz#f7f94ebdb21dedf37b12e030a82d4211798a1c26"
|
||||||
integrity sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==
|
integrity sha512-vQN+KIReG0a2ZDpVv8cgddlf67J8hk1WfZMMP7sMeZmJRSmEax5xNDNWKdgqSe2brOKTQQAs3aCCUal2qBHAyg==
|
||||||
|
|
||||||
"@parcel/watcher-win32-x64@2.5.1":
|
"@parcel/watcher-win32-x64@2.5.4":
|
||||||
version "2.5.1"
|
version "2.5.4"
|
||||||
resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz#ae52693259664ba6f2228fa61d7ee44b64ea0947"
|
resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.4.tgz#8d895c9723f7fffdf4b360fd1becf1b6bcb571df"
|
||||||
integrity sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==
|
integrity sha512-3A6efb6BOKwyw7yk9ro2vus2YTt2nvcd56AuzxdMiVOxL9umDyN5PKkKfZ/gZ9row41SjVmTVQNWQhaRRGpOKw==
|
||||||
|
|
||||||
"@parcel/watcher@^2.4.1":
|
"@parcel/watcher@^2.4.1":
|
||||||
version "2.5.1"
|
version "2.5.4"
|
||||||
resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.1.tgz#342507a9cfaaf172479a882309def1e991fb1200"
|
resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.4.tgz#a6575b0a018b4e263589c1e7bc2ceb73c1ee84de"
|
||||||
integrity sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==
|
integrity sha512-WYa2tUVV5HiArWPB3ydlOc4R2ivq0IDrlqhMi3l7mVsFEXNcTfxYFPIHXHXIh/ca/y/V5N4E1zecyxdIBjYnkQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
detect-libc "^1.0.3"
|
detect-libc "^2.0.3"
|
||||||
is-glob "^4.0.3"
|
is-glob "^4.0.3"
|
||||||
micromatch "^4.0.5"
|
|
||||||
node-addon-api "^7.0.0"
|
node-addon-api "^7.0.0"
|
||||||
|
picomatch "^4.0.3"
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
"@parcel/watcher-android-arm64" "2.5.1"
|
"@parcel/watcher-android-arm64" "2.5.4"
|
||||||
"@parcel/watcher-darwin-arm64" "2.5.1"
|
"@parcel/watcher-darwin-arm64" "2.5.4"
|
||||||
"@parcel/watcher-darwin-x64" "2.5.1"
|
"@parcel/watcher-darwin-x64" "2.5.4"
|
||||||
"@parcel/watcher-freebsd-x64" "2.5.1"
|
"@parcel/watcher-freebsd-x64" "2.5.4"
|
||||||
"@parcel/watcher-linux-arm-glibc" "2.5.1"
|
"@parcel/watcher-linux-arm-glibc" "2.5.4"
|
||||||
"@parcel/watcher-linux-arm-musl" "2.5.1"
|
"@parcel/watcher-linux-arm-musl" "2.5.4"
|
||||||
"@parcel/watcher-linux-arm64-glibc" "2.5.1"
|
"@parcel/watcher-linux-arm64-glibc" "2.5.4"
|
||||||
"@parcel/watcher-linux-arm64-musl" "2.5.1"
|
"@parcel/watcher-linux-arm64-musl" "2.5.4"
|
||||||
"@parcel/watcher-linux-x64-glibc" "2.5.1"
|
"@parcel/watcher-linux-x64-glibc" "2.5.4"
|
||||||
"@parcel/watcher-linux-x64-musl" "2.5.1"
|
"@parcel/watcher-linux-x64-musl" "2.5.4"
|
||||||
"@parcel/watcher-win32-arm64" "2.5.1"
|
"@parcel/watcher-win32-arm64" "2.5.4"
|
||||||
"@parcel/watcher-win32-ia32" "2.5.1"
|
"@parcel/watcher-win32-ia32" "2.5.4"
|
||||||
"@parcel/watcher-win32-x64" "2.5.1"
|
"@parcel/watcher-win32-x64" "2.5.4"
|
||||||
|
|
||||||
"@pkgr/utils@^2.4.2":
|
"@pkgr/utils@^2.4.2":
|
||||||
version "2.4.2"
|
version "2.4.2"
|
||||||
@@ -1321,9 +1321,9 @@
|
|||||||
integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
|
integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
|
||||||
|
|
||||||
"@types/node@^22.13.10":
|
"@types/node@^22.13.10":
|
||||||
version "22.15.34"
|
version "22.19.7"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-22.15.34.tgz#3995a6461d2cfc51c81907da0065fc328f6a459e"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-22.19.7.tgz#434094ee1731ae76c16083008590a5835a8c39c1"
|
||||||
integrity sha512-8Y6E5WUupYy1Dd0II32BsWAx5MWdcnRd8L84Oys3veg1YrYtNtzgO4CFhiBg6MDSjk7Ay36HYOnU7/tuOzIzcw==
|
integrity sha512-MciR4AKGHWl7xwxkBa6xUGxQJ4VBOmPTF7sL+iGzuahOFaO0jHCsuEfS80pan1ef4gWId1oWOweIhrDEYLuaOw==
|
||||||
dependencies:
|
dependencies:
|
||||||
undici-types "~6.21.0"
|
undici-types "~6.21.0"
|
||||||
|
|
||||||
@@ -1693,12 +1693,12 @@ available-typed-arrays@^1.0.7:
|
|||||||
possible-typed-array-names "^1.0.0"
|
possible-typed-array-names "^1.0.0"
|
||||||
|
|
||||||
axios@^1.6.2:
|
axios@^1.6.2:
|
||||||
version "1.10.0"
|
version "1.13.2"
|
||||||
resolved "https://registry.yarnpkg.com/axios/-/axios-1.10.0.tgz#af320aee8632eaf2a400b6a1979fa75856f38d54"
|
resolved "https://registry.yarnpkg.com/axios/-/axios-1.13.2.tgz#9ada120b7b5ab24509553ec3e40123521117f687"
|
||||||
integrity sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==
|
integrity sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==
|
||||||
dependencies:
|
dependencies:
|
||||||
follow-redirects "^1.15.6"
|
follow-redirects "^1.15.6"
|
||||||
form-data "^4.0.0"
|
form-data "^4.0.4"
|
||||||
proxy-from-env "^1.1.0"
|
proxy-from-env "^1.1.0"
|
||||||
|
|
||||||
babel-plugin-polyfill-corejs2@^0.4.10:
|
babel-plugin-polyfill-corejs2@^0.4.10:
|
||||||
@@ -2021,10 +2021,10 @@ delayed-stream@~1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
||||||
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
|
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
|
||||||
|
|
||||||
detect-libc@^1.0.3:
|
detect-libc@^2.0.3:
|
||||||
version "1.0.3"
|
version "2.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
|
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.1.2.tgz#689c5dcdc1900ef5583a4cb9f6d7b473742074ad"
|
||||||
integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==
|
integrity sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==
|
||||||
|
|
||||||
dir-glob@^3.0.1:
|
dir-glob@^3.0.1:
|
||||||
version "3.0.1"
|
version "3.0.1"
|
||||||
@@ -2453,9 +2453,9 @@ flatted@^3.2.9:
|
|||||||
integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==
|
integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==
|
||||||
|
|
||||||
follow-redirects@^1.15.6:
|
follow-redirects@^1.15.6:
|
||||||
version "1.15.9"
|
version "1.15.11"
|
||||||
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1"
|
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340"
|
||||||
integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==
|
integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==
|
||||||
|
|
||||||
for-each@^0.3.3, for-each@^0.3.5:
|
for-each@^0.3.3, for-each@^0.3.5:
|
||||||
version "0.3.5"
|
version "0.3.5"
|
||||||
@@ -2464,10 +2464,10 @@ for-each@^0.3.3, for-each@^0.3.5:
|
|||||||
dependencies:
|
dependencies:
|
||||||
is-callable "^1.2.7"
|
is-callable "^1.2.7"
|
||||||
|
|
||||||
form-data@^4.0.0:
|
form-data@^4.0.4:
|
||||||
version "4.0.3"
|
version "4.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.3.tgz#608b1b3f3e28be0fccf5901fc85fb3641e5cf0ae"
|
resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053"
|
||||||
integrity sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==
|
integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==
|
||||||
dependencies:
|
dependencies:
|
||||||
asynckit "^0.4.0"
|
asynckit "^0.4.0"
|
||||||
combined-stream "^1.0.8"
|
combined-stream "^1.0.8"
|
||||||
@@ -2712,9 +2712,9 @@ ignore@^5.2.4:
|
|||||||
integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==
|
integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==
|
||||||
|
|
||||||
immutable@^5.0.2:
|
immutable@^5.0.2:
|
||||||
version "5.1.3"
|
version "5.1.4"
|
||||||
resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.1.3.tgz#e6486694c8b76c37c063cca92399fa64098634d4"
|
resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.1.4.tgz#e3f8c1fe7b567d56cf26698f31918c241dae8c1f"
|
||||||
integrity sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==
|
integrity sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==
|
||||||
|
|
||||||
import-fresh@^3.2.1:
|
import-fresh@^3.2.1:
|
||||||
version "3.3.1"
|
version "3.3.1"
|
||||||
@@ -3122,10 +3122,10 @@ lru-cache@^5.1.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
yallist "^3.0.2"
|
yallist "^3.0.2"
|
||||||
|
|
||||||
lucide-vue-next@^0.525.0:
|
lucide-vue-next@^0.562.0:
|
||||||
version "0.525.0"
|
version "0.562.0"
|
||||||
resolved "https://registry.yarnpkg.com/lucide-vue-next/-/lucide-vue-next-0.525.0.tgz#94bafb8dcb6b6344dbbd8a00d8230cf5478e444e"
|
resolved "https://registry.yarnpkg.com/lucide-vue-next/-/lucide-vue-next-0.562.0.tgz#a4cc08c2d00b9664c768e5da76e6634212a02a23"
|
||||||
integrity sha512-Xf8+x8B2DrnGDV/rxylS+KBp2FIe6ljwDn2JsGTZZvXIfhmm/q+nv8RuGO1OyoMjOVkkz7CqtUqJfwtFPRbB2w==
|
integrity sha512-LN0BLGKMFulv0lnfK29r14DcngRUhIqdcaL0zXTt2o0oS9odlrjCGaU3/X9hIihOjjN8l8e+Y9G/famcNYaI7Q==
|
||||||
|
|
||||||
magic-string@^0.25.0, magic-string@^0.25.7:
|
magic-string@^0.25.0, magic-string@^0.25.7:
|
||||||
version "0.25.9"
|
version "0.25.9"
|
||||||
@@ -3156,7 +3156,7 @@ merge2@^1.3.0, merge2@^1.4.1:
|
|||||||
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
|
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
|
||||||
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
|
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
|
||||||
|
|
||||||
micromatch@^4.0.4, micromatch@^4.0.5, micromatch@^4.0.8:
|
micromatch@^4.0.4, micromatch@^4.0.8:
|
||||||
version "4.0.8"
|
version "4.0.8"
|
||||||
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
|
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
|
||||||
integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
|
integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
|
||||||
@@ -3403,6 +3403,11 @@ picomatch@^4.0.2:
|
|||||||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab"
|
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab"
|
||||||
integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==
|
integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==
|
||||||
|
|
||||||
|
picomatch@^4.0.3:
|
||||||
|
version "4.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042"
|
||||||
|
integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==
|
||||||
|
|
||||||
pinia@^2.1.7:
|
pinia@^2.1.7:
|
||||||
version "2.3.1"
|
version "2.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/pinia/-/pinia-2.3.1.tgz#54c476675b72f5abcfafa24a7582531ea8c23d94"
|
resolved "https://registry.yarnpkg.com/pinia/-/pinia-2.3.1.tgz#54c476675b72f5abcfafa24a7582531ea8c23d94"
|
||||||
@@ -3446,9 +3451,9 @@ prettier-linter-helpers@^1.0.0:
|
|||||||
fast-diff "^1.1.2"
|
fast-diff "^1.1.2"
|
||||||
|
|
||||||
prettier@^3.0.3:
|
prettier@^3.0.3:
|
||||||
version "3.6.2"
|
version "3.8.1"
|
||||||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.6.2.tgz#ccda02a1003ebbb2bfda6f83a074978f608b9393"
|
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.8.1.tgz#edf48977cf991558f4fcbd8a3ba6015ba2a3a173"
|
||||||
integrity sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==
|
integrity sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==
|
||||||
|
|
||||||
pretty-bytes@^5.3.0:
|
pretty-bytes@^5.3.0:
|
||||||
version "5.6.0"
|
version "5.6.0"
|
||||||
@@ -3675,9 +3680,9 @@ safe-regex-test@^1.1.0:
|
|||||||
is-regex "^1.2.1"
|
is-regex "^1.2.1"
|
||||||
|
|
||||||
sass@^1.69.5:
|
sass@^1.69.5:
|
||||||
version "1.89.2"
|
version "1.97.2"
|
||||||
resolved "https://registry.yarnpkg.com/sass/-/sass-1.89.2.tgz#a771716aeae774e2b529f72c0ff2dfd46c9de10e"
|
resolved "https://registry.yarnpkg.com/sass/-/sass-1.97.2.tgz#e515a319092fd2c3b015228e3094b40198bff0da"
|
||||||
integrity sha512-xCmtksBKd/jdJ9Bt9p7nPKiuqrlBMBuuGkQlkhZjjQk3Ty48lv93k5Dq6OPkKt4XwxDJ7tvlfrTa1MPA9bf+QA==
|
integrity sha512-y5LWb0IlbO4e97Zr7c3mlpabcbBtS+ieiZ9iwDooShpFKWXf62zz5pEPdwrLYm+Bxn1fnbwFGzHuCLSA9tBmrw==
|
||||||
dependencies:
|
dependencies:
|
||||||
chokidar "^4.0.0"
|
chokidar "^4.0.0"
|
||||||
immutable "^5.0.2"
|
immutable "^5.0.2"
|
||||||
@@ -4066,9 +4071,9 @@ typed-array-length@^1.0.7:
|
|||||||
reflect.getprototypeof "^1.0.6"
|
reflect.getprototypeof "^1.0.6"
|
||||||
|
|
||||||
typescript@^5.3.3:
|
typescript@^5.3.3:
|
||||||
version "5.8.2"
|
version "5.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.2.tgz#8170b3702f74b79db2e5a96207c15e65807999e4"
|
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.3.tgz#5b4f59e15310ab17a216f5d6cf53ee476ede670f"
|
||||||
integrity sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==
|
integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==
|
||||||
|
|
||||||
unbox-primitive@^1.1.0:
|
unbox-primitive@^1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
@@ -4196,18 +4201,18 @@ vue-eslint-parser@^9.3.1, vue-eslint-parser@^9.4.3:
|
|||||||
semver "^7.3.6"
|
semver "^7.3.6"
|
||||||
|
|
||||||
vue-i18n@11:
|
vue-i18n@11:
|
||||||
version "11.1.7"
|
version "11.2.8"
|
||||||
resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-11.1.7.tgz#a26c0224d1311ac89b82ff6d0ee45f68b5099237"
|
resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-11.2.8.tgz#f431b583134776dcf59e59250c5231e4eaed8404"
|
||||||
integrity sha512-CDrU7Cmyh1AxJjerQmipV9nVa//exVBdhTcWGlbfcDCN8bKp/uAe7Le6IoN4//5emIikbsSKe9Uofmf/xXkhOA==
|
integrity sha512-vJ123v/PXCZntd6Qj5Jumy7UBmIuE92VrtdX+AXr+1WzdBHojiBxnAxdfctUFL+/JIN+VQH4BhsfTtiGsvVObg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@intlify/core-base" "11.1.7"
|
"@intlify/core-base" "11.2.8"
|
||||||
"@intlify/shared" "11.1.7"
|
"@intlify/shared" "11.2.8"
|
||||||
"@vue/devtools-api" "^6.5.0"
|
"@vue/devtools-api" "^6.5.0"
|
||||||
|
|
||||||
vue-router@^4.2.5:
|
vue-router@^4.2.5:
|
||||||
version "4.5.0"
|
version "4.6.4"
|
||||||
resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.5.0.tgz#58fc5fe374e10b6018f910328f756c3dae081f14"
|
resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.6.4.tgz#a0a9cb9ef811a106d249e4bb9313d286718020d8"
|
||||||
integrity sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==
|
integrity sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@vue/devtools-api" "^6.6.4"
|
"@vue/devtools-api" "^6.6.4"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user