routie dev init since i didn't adhere to any proper guidance up until now
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
||||
@@ -0,0 +1,5 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class ApiConfig(AppConfig):
|
||||
name = 'api'
|
||||
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
from django.db import models
|
||||
|
||||
# Create your models here.
|
||||
@@ -0,0 +1,3 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
@@ -0,0 +1,33 @@
|
||||
from django.shortcuts import render
|
||||
from rest_framework.decorators import api_view
|
||||
from rest_framework.response import Response
|
||||
from django.utils import timezone
|
||||
from django.http import JsonResponse
|
||||
from datetime import timedelta
|
||||
|
||||
@api_view(['GET'])
|
||||
def hello(request):
|
||||
return Response({"message": "Hello from Django!"})
|
||||
|
||||
def accept_disclaimer(request):
|
||||
request.session['disclaimer_accepted_at'] = timezone.now().isoformat()
|
||||
return JsonResponse({'ok': True})
|
||||
|
||||
def check_disclaimer(request):
|
||||
accepted_at = request.session.get('disclaimer_accepted_at')
|
||||
|
||||
if not accepted_at:
|
||||
return JsonResponse({'accepted': False})
|
||||
|
||||
accepted_time = timezone.datetime.fromisoformat(accepted_at)
|
||||
if timezone.now() - accepted_time > timedelta(minutes=30):
|
||||
return JsonResponse({'accepted': False})
|
||||
|
||||
return JsonResponse({'accepted': True})
|
||||
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
|
||||
@csrf_exempt
|
||||
def accept_disclaimer(request):
|
||||
request.session['disclaimer_accepted_at'] = timezone.now().isoformat()
|
||||
return JsonResponse({'ok': True})
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,16 @@
|
||||
"""
|
||||
ASGI config for backend project.
|
||||
|
||||
It exposes the ASGI callable as a module-level variable named ``application``.
|
||||
|
||||
For more information on this file, see
|
||||
https://docs.djangoproject.com/en/6.0/howto/deployment/asgi/
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
from django.core.asgi import get_asgi_application
|
||||
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.settings')
|
||||
|
||||
application = get_asgi_application()
|
||||
@@ -0,0 +1,134 @@
|
||||
"""
|
||||
Django settings for backend project.
|
||||
|
||||
Generated by 'django-admin startproject' using Django 6.0.4.
|
||||
|
||||
For more information on this file, see
|
||||
https://docs.djangoproject.com/en/6.0/topics/settings/
|
||||
|
||||
For the full list of settings and their values, see
|
||||
https://docs.djangoproject.com/en/6.0/ref/settings/
|
||||
"""
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
||||
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||
|
||||
|
||||
# Quick-start development settings - unsuitable for production
|
||||
# See https://docs.djangoproject.com/en/6.0/howto/deployment/checklist/
|
||||
|
||||
# SECURITY WARNING: keep the secret key used in production secret!
|
||||
SECRET_KEY = 'django-insecure-m01q!i8-%3+jf0)98&a+-0gfvoas8lu+p(a3md^9l#c40$p=h6'
|
||||
|
||||
# SECURITY WARNING: don't run with debug turned on in production!
|
||||
DEBUG = True
|
||||
|
||||
ALLOWED_HOSTS = [
|
||||
"localhost",
|
||||
"127.0.0.1"
|
||||
]
|
||||
|
||||
CSRF_TRUSTED_ORIGINS = [
|
||||
"http://localhost:3000",
|
||||
]
|
||||
|
||||
|
||||
# Application definition
|
||||
|
||||
INSTALLED_APPS = [
|
||||
'django.contrib.admin',
|
||||
'django.contrib.auth',
|
||||
'django.contrib.contenttypes',
|
||||
'django.contrib.sessions',
|
||||
'django.contrib.messages',
|
||||
'django.contrib.staticfiles',
|
||||
'rest_framework',
|
||||
'corsheaders',
|
||||
'api'
|
||||
]
|
||||
|
||||
MIDDLEWARE = [
|
||||
'django.middleware.security.SecurityMiddleware',
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
'django.middleware.common.CommonMiddleware',
|
||||
'django.middleware.csrf.CsrfViewMiddleware',
|
||||
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||
'django.contrib.messages.middleware.MessageMiddleware',
|
||||
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||
'corsheaders.middleware.CorsMiddleware',
|
||||
]
|
||||
|
||||
ROOT_URLCONF = 'backend.urls'
|
||||
|
||||
TEMPLATES = [
|
||||
{
|
||||
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
||||
'DIRS': [],
|
||||
'APP_DIRS': True,
|
||||
'OPTIONS': {
|
||||
'context_processors': [
|
||||
'django.template.context_processors.request',
|
||||
'django.contrib.auth.context_processors.auth',
|
||||
'django.contrib.messages.context_processors.messages',
|
||||
],
|
||||
},
|
||||
},
|
||||
]
|
||||
|
||||
WSGI_APPLICATION = 'backend.wsgi.application'
|
||||
|
||||
|
||||
# Database
|
||||
# https://docs.djangoproject.com/en/6.0/ref/settings/#databases
|
||||
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.sqlite3',
|
||||
'NAME': BASE_DIR / 'db.sqlite3',
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Password validation
|
||||
# https://docs.djangoproject.com/en/6.0/ref/settings/#auth-password-validators
|
||||
|
||||
AUTH_PASSWORD_VALIDATORS = [
|
||||
{
|
||||
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
|
||||
},
|
||||
{
|
||||
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
|
||||
},
|
||||
{
|
||||
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
|
||||
},
|
||||
{
|
||||
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
# Internationalization
|
||||
# https://docs.djangoproject.com/en/6.0/topics/i18n/
|
||||
|
||||
LANGUAGE_CODE = 'en-us'
|
||||
|
||||
TIME_ZONE = 'UTC'
|
||||
|
||||
USE_I18N = True
|
||||
|
||||
USE_TZ = True
|
||||
|
||||
|
||||
# Static files (CSS, JavaScript, Images)
|
||||
# https://docs.djangoproject.com/en/6.0/howto/static-files/
|
||||
|
||||
STATIC_URL = 'static/'
|
||||
|
||||
# CUSTOM
|
||||
SESSION_COOKIE_AGE = 30 * 60
|
||||
SESSION_SAVE_EVERY_REQUEST = False
|
||||
CSRF_COOKIE_SAMESITE = 'None'
|
||||
CSRF_COOKIE_SECURE = False # True if using HTTPS
|
||||
@@ -0,0 +1,26 @@
|
||||
"""
|
||||
URL configuration for backend project.
|
||||
|
||||
The `urlpatterns` list routes URLs to views. For more information please see:
|
||||
https://docs.djangoproject.com/en/6.0/topics/http/urls/
|
||||
Examples:
|
||||
Function views
|
||||
1. Add an import: from my_app import views
|
||||
2. Add a URL to urlpatterns: path('', views.home, name='home')
|
||||
Class-based views
|
||||
1. Add an import: from other_app.views import Home
|
||||
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
|
||||
Including another URLconf
|
||||
1. Import the include() function: from django.urls import include, path
|
||||
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
|
||||
"""
|
||||
from django.contrib import admin
|
||||
from django.urls import path
|
||||
from api.views import hello, accept_disclaimer, check_disclaimer
|
||||
|
||||
urlpatterns = [
|
||||
path('admin/', admin.site.urls),
|
||||
path('api/hello/', hello),
|
||||
path('api/accept-disclaimer/', accept_disclaimer),
|
||||
path('api/check-disclaimer/', check_disclaimer)
|
||||
]
|
||||
@@ -0,0 +1,16 @@
|
||||
"""
|
||||
WSGI config for backend project.
|
||||
|
||||
It exposes the WSGI callable as a module-level variable named ``application``.
|
||||
|
||||
For more information on this file, see
|
||||
https://docs.djangoproject.com/en/6.0/howto/deployment/wsgi/
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
from django.core.wsgi import get_wsgi_application
|
||||
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.settings')
|
||||
|
||||
application = get_wsgi_application()
|
||||
Binary file not shown.
Executable
+22
@@ -0,0 +1,22 @@
|
||||
#!/usr/bin/env python
|
||||
"""Django's command-line utility for administrative tasks."""
|
||||
import os
|
||||
import sys
|
||||
|
||||
|
||||
def main():
|
||||
"""Run administrative tasks."""
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.settings')
|
||||
try:
|
||||
from django.core.management import execute_from_command_line
|
||||
except ImportError as exc:
|
||||
raise ImportError(
|
||||
"Couldn't import Django. Are you sure it's installed and "
|
||||
"available on your PYTHONPATH environment variable? Did you "
|
||||
"forget to activate a virtual environment?"
|
||||
) from exc
|
||||
execute_from_command_line(sys.argv)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@@ -0,0 +1,4 @@
|
||||
# Project Rules
|
||||
|
||||
## General
|
||||
- Follow the existing code style and patterns.
|
||||
@@ -0,0 +1,11 @@
|
||||
# For a complete example, see: https://okigu.com/ruler#complete-example
|
||||
|
||||
# List of agents to configure
|
||||
default_agents = ["copilot", "claude", "trae"]
|
||||
|
||||
[mcp_servers.vuetify]
|
||||
url = "https://mcp.vuetifyjs.com/mcp"
|
||||
|
||||
# https://github.com/vuetifyjs/mcp#authentication
|
||||
# [mcp_servers.vuetify.headers]
|
||||
# Authorization = "Bearer <YOUR_API_KEY>"
|
||||
Vendored
+6
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"recommendations": [
|
||||
"vuetifyjs.vuetify-vscode",
|
||||
"vue.volar"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
# Project Rules
|
||||
|
||||
## General
|
||||
- Follow the existing code style and patterns.
|
||||
- Use npm for running project commands.
|
||||
- Keep code in TypeScript unless migration is required.
|
||||
|
||||
## Stack
|
||||
- Framework: Vue 3 + Vite
|
||||
- UI Library: Vuetify
|
||||
- Enabled Features: ESLint, Vuetify MCP, Tailwind CSS
|
||||
@@ -0,0 +1,81 @@
|
||||
# vuetify-name
|
||||
|
||||
Scaffolded with Vuetify CLI.
|
||||
|
||||
## ❗️ Documentation
|
||||
|
||||
- Primary docs: https://vuetifyjs.com/
|
||||
- Getting started guide: https://vuetifyjs.com/en/getting-started/installation/
|
||||
- Community support: https://community.vuetifyjs.com/
|
||||
- Issue tracker: https://issues.vuetifyjs.com/
|
||||
|
||||
## 🧱 Stack
|
||||
|
||||
- Framework: Vue 3 + Vite
|
||||
- UI Library: Vuetify
|
||||
- Language: TypeScript
|
||||
- Package manager: npm
|
||||
|
||||
## 🧭 Start Here
|
||||
|
||||
- Main entry: `src/main.ts`
|
||||
- Main app component: `src/App.vue`
|
||||
- Main styles: `src/styles/`
|
||||
- Plugin setup: `src/plugins/`
|
||||
|
||||
## 📁 Project Structure
|
||||
|
||||
- `src/main.ts` — application entry point
|
||||
- `src/App.vue` — root component
|
||||
- `src/components/` — reusable Vue components
|
||||
- `src/plugins/` — plugin registration and setup
|
||||
- `src/styles/` — global styles and theme settings
|
||||
- `public/` — static public files
|
||||
|
||||
## ✨ Enabled Features
|
||||
|
||||
- ESLint
|
||||
- Vuetify MCP
|
||||
- Tailwind CSS
|
||||
|
||||
## 💿 Install
|
||||
|
||||
Use your selected package manager (npm) to install dependencies:
|
||||
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
## 🚀 Quick Start
|
||||
|
||||
```bash
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
||||
|
||||
## 🏗️ Build
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
## 🧪 Available Scripts
|
||||
|
||||
- `npm run dev`
|
||||
- `npm run build`
|
||||
- `npm run preview`
|
||||
- `npm run build-only`
|
||||
- `npm run type-check`
|
||||
- `npm run lint`
|
||||
- `npm run lint:fix`
|
||||
- `npm run mcp`
|
||||
- `npm run mcp:revert`
|
||||
|
||||
## 💪 Support Vuetify Development
|
||||
|
||||
This project uses Vuetify - an MIT licensed Open Source project. We are glad to welcome contributors and any support for ongoing development:
|
||||
|
||||
- Contribute to Vuetify and ecosystem projects: https://github.com/vuetifyjs
|
||||
- Request enterprise support: https://support.vuetifyjs.com/
|
||||
- Sponsor on GitHub: https://github.com/sponsors/vuetifyjs
|
||||
- Support on Open Collective: https://opencollective.com/vuetify
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
/// <reference types="vite/client" />
|
||||
/// <reference types="vite-plugin-vue-layouts-next/client" />
|
||||
@@ -0,0 +1,5 @@
|
||||
import vuetify from 'eslint-config-vuetify'
|
||||
|
||||
export default vuetify({
|
||||
ts: true,
|
||||
})
|
||||
@@ -0,0 +1,13 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="icon" href="/favicon.ico">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Welcome to Vuetify 4</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script type="module" src="/src/main.ts"></script>
|
||||
</body>
|
||||
</html>
|
||||
+1
@@ -0,0 +1 @@
|
||||
../acorn/bin/acorn
|
||||
+1
@@ -0,0 +1 @@
|
||||
../baseline-browser-mapping/dist/cli.cjs
|
||||
+1
@@ -0,0 +1 @@
|
||||
../browserslist/cli.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../cssesc/bin/cssesc
|
||||
+1
@@ -0,0 +1 @@
|
||||
../eslint/bin/eslint.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../eslint-config-vuetify/bin/cli.mjs
|
||||
+1
@@ -0,0 +1 @@
|
||||
../jiti/lib/jiti-cli.mjs
|
||||
+1
@@ -0,0 +1 @@
|
||||
../js-yaml/bin/js-yaml.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../jsesc/bin/jsesc
|
||||
+1
@@ -0,0 +1 @@
|
||||
../nanoid/bin/nanoid.cjs
|
||||
+1
@@ -0,0 +1 @@
|
||||
../which/bin/node-which
|
||||
+1
@@ -0,0 +1 @@
|
||||
../npm-run-all2/bin/npm-run-all/index.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../npm-run-all2/bin/npm-run-all/index.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../nypm/dist/cli.mjs
|
||||
+1
@@ -0,0 +1 @@
|
||||
../@babel/parser/bin/babel-parser.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../pidtree/bin/pidtree.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../regexp-tree/bin/regexp-tree
|
||||
+1
@@ -0,0 +1 @@
|
||||
../regjsparser/bin/parser
|
||||
+1
@@ -0,0 +1 @@
|
||||
../rolldown/bin/cli.mjs
|
||||
+1
@@ -0,0 +1 @@
|
||||
../@intellectronica/ruler/dist/cli/index.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../npm-run-all2/bin/run-p/index.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../npm-run-all2/bin/run-s/index.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../sass/sass.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../semver/bin/semver.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../typescript/bin/tsc
|
||||
+1
@@ -0,0 +1 @@
|
||||
../typescript/bin/tsserver
|
||||
+1
@@ -0,0 +1 @@
|
||||
../update-browserslist-db/cli.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../vite/bin/vite.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../vue-tsc/bin/vue-tsc.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../yaml/bin.mjs
|
||||
+4652
File diff suppressed because it is too large
Load Diff
+218
@@ -0,0 +1,218 @@
|
||||
import { C as vShow, Cn as withDirectives, Dt as mergeProps, U as computed, W as createBaseVNode, ar as normalizeClass, et as createVNode, sr as normalizeStyle } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { I as isObject, _ as convertToUnit, l as propsFactory, n as genericComponent, q as pickWithRest } from "./defineComponent-DB6xIcDy.js";
|
||||
import { t as makeComponentProps } from "./component-DdiwBe6i.js";
|
||||
import { t as useRender } from "./useRender-fVtVsZgv.js";
|
||||
import { r as useTextColor, t as useBackgroundColor } from "./color-B6vuQruj.js";
|
||||
import { a as useTheme, i as provideTheme, r as makeThemeProps } from "./theme-Cx5kFg0-.js";
|
||||
import { n as IconValue } from "./icons-k2ZLE_i8.js";
|
||||
import { r as useLocale } from "./locale-DDGMqzqb.js";
|
||||
import { t as makeTagProps } from "./tag-C_KkCPzB.js";
|
||||
import { t as VDefaultsProvider } from "./VDefaultsProvider-C09t4-My.js";
|
||||
import { n as useDimension, t as makeDimensionProps } from "./dimensions-BDdmuRdK.js";
|
||||
import { t as VImg } from "./VImg-DaEUT7gG.js";
|
||||
import { n as useRounded, t as makeRoundedProps } from "./rounded-BuPGKRa9.js";
|
||||
import { n as makeTransitionProps, t as MaybeTransition } from "./transition-DqoZ8fA1.js";
|
||||
import { n as useBorder, t as makeBorderProps } from "./border-jCmRyoxP.js";
|
||||
import { n as useLocation, t as makeLocationProps } from "./location-BIKTnDF4.js";
|
||||
import { n as useDensity, t as makeDensityProps } from "./density-CpKZ5PhP.js";
|
||||
import { n as makeVariantProps, r as useVariant, t as genOverlays } from "./variant-CqXtG9Ih.js";
|
||||
import { n as makeSizeProps, r as useSize, t as VIcon } from "./VIcon-1CJH_3Uo.js";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VAvatar/VAvatar.css";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VBadge/VBadge.css";
|
||||
//#region node_modules/vuetify/lib/components/VBadge/VBadge.js
|
||||
var makeVBadgeProps = propsFactory({
|
||||
bordered: Boolean,
|
||||
color: String,
|
||||
content: [Number, String],
|
||||
dot: Boolean,
|
||||
dotSize: [Number, String],
|
||||
floating: Boolean,
|
||||
icon: IconValue,
|
||||
inline: Boolean,
|
||||
label: {
|
||||
type: String,
|
||||
default: "$vuetify.badge"
|
||||
},
|
||||
max: [Number, String],
|
||||
modelValue: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
offsetX: [Number, String],
|
||||
offsetY: [Number, String],
|
||||
textColor: String,
|
||||
...makeComponentProps(),
|
||||
...makeLocationProps({ location: "top end" }),
|
||||
...makeRoundedProps(),
|
||||
...makeTagProps(),
|
||||
...makeThemeProps(),
|
||||
...makeTransitionProps({ transition: "scale-rotate-transition" }),
|
||||
...makeDimensionProps()
|
||||
}, "VBadge");
|
||||
var VBadge = genericComponent()({
|
||||
name: "VBadge",
|
||||
inheritAttrs: false,
|
||||
props: makeVBadgeProps(),
|
||||
setup(props, ctx) {
|
||||
const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => props.color);
|
||||
const { roundedClasses } = useRounded(props);
|
||||
const { t } = useLocale();
|
||||
const { textColorClasses, textColorStyles } = useTextColor(() => props.textColor);
|
||||
const { themeClasses } = useTheme();
|
||||
const { locationStyles } = useLocation(props, true, (side) => {
|
||||
return (props.floating ? props.dot ? 2 : 4 : props.dot ? Number(props.dotSize ?? 8) : 12) + (["top", "bottom"].includes(side) ? Number(props.offsetY ?? 0) : ["left", "right"].includes(side) ? Number(props.offsetX ?? 0) : 0);
|
||||
});
|
||||
const { dimensionStyles } = useDimension(props);
|
||||
useRender(() => {
|
||||
const value = Number(props.content);
|
||||
const content = !props.max || isNaN(value) ? props.content : value <= Number(props.max) ? value : `${props.max}+`;
|
||||
const [badgeAttrs, attrs] = pickWithRest(ctx.attrs, [
|
||||
"aria-atomic",
|
||||
"aria-label",
|
||||
"aria-live",
|
||||
"role",
|
||||
"title"
|
||||
]);
|
||||
return createVNode(props.tag, mergeProps({ "class": [
|
||||
"v-badge",
|
||||
{
|
||||
"v-badge--bordered": props.bordered,
|
||||
"v-badge--dot": props.dot,
|
||||
"v-badge--floating": props.floating,
|
||||
"v-badge--inline": props.inline
|
||||
},
|
||||
props.class
|
||||
] }, attrs, { "style": props.style }), { default: () => [createBaseVNode("div", { "class": "v-badge__wrapper" }, [ctx.slots.default?.(), createVNode(MaybeTransition, { "transition": props.transition }, { default: () => [withDirectives(createBaseVNode("span", mergeProps({
|
||||
"class": [
|
||||
"v-badge__badge",
|
||||
themeClasses.value,
|
||||
backgroundColorClasses.value,
|
||||
roundedClasses.value,
|
||||
textColorClasses.value
|
||||
],
|
||||
"style": [
|
||||
backgroundColorStyles.value,
|
||||
textColorStyles.value,
|
||||
dimensionStyles.value,
|
||||
props.inline ? {} : locationStyles.value,
|
||||
props.dot && props.dotSize ? {
|
||||
width: convertToUnit(props.dotSize),
|
||||
height: convertToUnit(props.dotSize)
|
||||
} : {}
|
||||
],
|
||||
"aria-atomic": "true",
|
||||
"aria-label": t(props.label, value),
|
||||
"aria-live": "polite",
|
||||
"role": "status"
|
||||
}, badgeAttrs), [props.dot ? void 0 : ctx.slots.badge ? ctx.slots.badge?.() : props.icon ? createVNode(VIcon, { "icon": props.icon }, null) : content]), [[vShow, props.modelValue]])] })])] });
|
||||
});
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/components/VAvatar/VAvatar.js
|
||||
var makeVAvatarProps = propsFactory({
|
||||
badge: {
|
||||
type: [Boolean, Object],
|
||||
default: false
|
||||
},
|
||||
start: Boolean,
|
||||
end: Boolean,
|
||||
icon: IconValue,
|
||||
image: String,
|
||||
text: String,
|
||||
...makeBorderProps(),
|
||||
...makeComponentProps(),
|
||||
...makeDensityProps(),
|
||||
...makeRoundedProps(),
|
||||
...makeSizeProps(),
|
||||
...makeTagProps(),
|
||||
...makeThemeProps(),
|
||||
...makeVariantProps({ variant: "flat" })
|
||||
}, "VAvatar");
|
||||
var VAvatar = genericComponent()({
|
||||
name: "VAvatar",
|
||||
props: makeVAvatarProps(),
|
||||
setup(props, { slots }) {
|
||||
const { themeClasses } = provideTheme(props);
|
||||
const { borderClasses } = useBorder(props);
|
||||
const { colorClasses, colorStyles, variantClasses } = useVariant(props);
|
||||
const { densityClasses } = useDensity(props);
|
||||
const { roundedClasses } = useRounded(props);
|
||||
const { sizeClasses, sizeStyles } = useSize(props);
|
||||
const badgeDotSize = computed(() => {
|
||||
switch (props.size) {
|
||||
case "x-small": return 8;
|
||||
case "small": return 10;
|
||||
case "large": return 14;
|
||||
case "x-large": return 16;
|
||||
default: return 12;
|
||||
}
|
||||
});
|
||||
const badgeOffset = computed(() => {
|
||||
const { floating } = isObject(props.badge) ? props.badge : {};
|
||||
return (floating ? badgeDotSize.value / 2 : 0) - 1.5;
|
||||
});
|
||||
const badgeProps = computed(() => {
|
||||
return {
|
||||
bordered: true,
|
||||
dot: !slots.badge,
|
||||
dotSize: badgeDotSize.value,
|
||||
offsetX: badgeOffset.value,
|
||||
offsetY: badgeOffset.value,
|
||||
color: typeof props.badge === "string" ? props.badge : "primary",
|
||||
...isObject(props.badge) ? props.badge : {}
|
||||
};
|
||||
});
|
||||
useRender(() => {
|
||||
const avatar = createVNode(props.tag, {
|
||||
"class": normalizeClass([
|
||||
"v-avatar",
|
||||
{
|
||||
"v-avatar--start": props.start,
|
||||
"v-avatar--end": props.end
|
||||
},
|
||||
themeClasses.value,
|
||||
borderClasses.value,
|
||||
colorClasses.value,
|
||||
densityClasses.value,
|
||||
roundedClasses.value,
|
||||
sizeClasses.value,
|
||||
variantClasses.value,
|
||||
props.class
|
||||
]),
|
||||
"style": normalizeStyle([
|
||||
colorStyles.value,
|
||||
sizeStyles.value,
|
||||
props.style
|
||||
])
|
||||
}, { default: () => [!slots.default ? props.image ? createVNode(VImg, {
|
||||
"key": "image",
|
||||
"src": props.image,
|
||||
"alt": "",
|
||||
"cover": true
|
||||
}, null) : props.icon ? createVNode(VIcon, {
|
||||
"key": "icon",
|
||||
"icon": props.icon
|
||||
}, null) : props.text : createVNode(VDefaultsProvider, {
|
||||
"key": "content-defaults",
|
||||
"defaults": {
|
||||
VImg: {
|
||||
cover: true,
|
||||
src: props.image
|
||||
},
|
||||
VIcon: { icon: props.icon }
|
||||
}
|
||||
}, { default: () => [slots.default()] }), genOverlays(false, "v-avatar")] });
|
||||
return props.badge ? createVNode(VBadge, badgeProps.value, {
|
||||
default: () => avatar,
|
||||
badge: slots.badge
|
||||
}) : avatar;
|
||||
});
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
export { VAvatar as t };
|
||||
|
||||
//# sourceMappingURL=VAvatar-CA-KqvIX.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+318
@@ -0,0 +1,318 @@
|
||||
import { Cn as withDirectives, Dt as mergeProps, Ot as nextTick, Qn as toRef, U as computed, W as createBaseVNode, ar as normalizeClass, cr as toDisplayString, et as createVNode, gn as watch, sr as normalizeStyle } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { a as provideDefaults, l as propsFactory, n as genericComponent } from "./defineComponent-DB6xIcDy.js";
|
||||
import { t as makeComponentProps } from "./component-DdiwBe6i.js";
|
||||
import { t as useRender } from "./useRender-fVtVsZgv.js";
|
||||
import { i as provideTheme, r as makeThemeProps } from "./theme-Cx5kFg0-.js";
|
||||
import { n as IconValue } from "./icons-k2ZLE_i8.js";
|
||||
import { t as makeTagProps } from "./tag-C_KkCPzB.js";
|
||||
import { t as VDefaultsProvider } from "./VDefaultsProvider-C09t4-My.js";
|
||||
import { n as useDimension, t as makeDimensionProps } from "./dimensions-BDdmuRdK.js";
|
||||
import { n as useRounded, t as makeRoundedProps } from "./rounded-BuPGKRa9.js";
|
||||
import { n as useBorder, t as makeBorderProps } from "./border-jCmRyoxP.js";
|
||||
import { n as useElevation, t as makeElevationProps } from "./elevation-B0TH2wU6.js";
|
||||
import { n as useLocation, t as makeLocationProps } from "./location-BIKTnDF4.js";
|
||||
import { n as useDensity, t as makeDensityProps } from "./density-CpKZ5PhP.js";
|
||||
import { n as makeVariantProps, r as useVariant, t as genOverlays } from "./variant-CqXtG9Ih.js";
|
||||
import { i as useGroupItem, n as makeGroupProps, r as useGroup, t as makeGroupItemProps } from "./group-Cm2viEWK.js";
|
||||
import { n as makeSizeProps, r as useSize, t as VIcon } from "./VIcon-1CJH_3Uo.js";
|
||||
import { n as makeLoaderProps, r as useLoader } from "./loader-CV4sMFhE.js";
|
||||
import { t as VProgressCircular } from "./VProgressCircular-yKv2qs75.js";
|
||||
import { n as usePosition, t as makePositionProps } from "./position-BCUsnxVO.js";
|
||||
import { r as useLink, t as makeRouterProps } from "./router-D_jP4Uwb.js";
|
||||
import { t as Ripple } from "./ripple-Z40rPDte.js";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VBtn/VBtn.css";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VBtnToggle/VBtnToggle.css";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VBtnGroup/VBtnGroup.css";
|
||||
//#region node_modules/vuetify/lib/components/VBtnGroup/VBtnGroup.js
|
||||
var makeVBtnGroupProps = propsFactory({
|
||||
baseColor: String,
|
||||
divided: Boolean,
|
||||
direction: {
|
||||
type: String,
|
||||
default: "horizontal"
|
||||
},
|
||||
...makeBorderProps(),
|
||||
...makeComponentProps(),
|
||||
...makeDensityProps(),
|
||||
...makeElevationProps(),
|
||||
...makeRoundedProps(),
|
||||
...makeTagProps(),
|
||||
...makeThemeProps(),
|
||||
...makeVariantProps()
|
||||
}, "VBtnGroup");
|
||||
var VBtnGroup = genericComponent()({
|
||||
name: "VBtnGroup",
|
||||
props: makeVBtnGroupProps(),
|
||||
setup(props, { slots }) {
|
||||
const { themeClasses } = provideTheme(props);
|
||||
const { densityClasses } = useDensity(props);
|
||||
const { borderClasses } = useBorder(props);
|
||||
const { elevationClasses } = useElevation(props);
|
||||
const { roundedClasses } = useRounded(props);
|
||||
provideDefaults({ VBtn: {
|
||||
height: toRef(() => props.direction === "horizontal" ? "auto" : null),
|
||||
baseColor: toRef(() => props.baseColor),
|
||||
color: toRef(() => props.color),
|
||||
density: toRef(() => props.density),
|
||||
flat: true,
|
||||
variant: toRef(() => props.variant)
|
||||
} });
|
||||
useRender(() => {
|
||||
return createVNode(props.tag, {
|
||||
"class": normalizeClass([
|
||||
"v-btn-group",
|
||||
`v-btn-group--${props.direction}`,
|
||||
{ "v-btn-group--divided": props.divided },
|
||||
themeClasses.value,
|
||||
borderClasses.value,
|
||||
densityClasses.value,
|
||||
elevationClasses.value,
|
||||
roundedClasses.value,
|
||||
props.class
|
||||
]),
|
||||
"style": normalizeStyle(props.style)
|
||||
}, slots);
|
||||
});
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/components/VBtnToggle/VBtnToggle.js
|
||||
var VBtnToggleSymbol = Symbol.for("vuetify:v-btn-toggle");
|
||||
var makeVBtnToggleProps = propsFactory({
|
||||
...makeVBtnGroupProps(),
|
||||
...makeGroupProps()
|
||||
}, "VBtnToggle");
|
||||
genericComponent()({
|
||||
name: "VBtnToggle",
|
||||
props: makeVBtnToggleProps(),
|
||||
emits: { "update:modelValue": (value) => true },
|
||||
setup(props, { slots }) {
|
||||
const { isSelected, next, prev, select, selected } = useGroup(props, VBtnToggleSymbol);
|
||||
useRender(() => {
|
||||
const btnGroupProps = VBtnGroup.filterProps(props);
|
||||
return createVNode(VBtnGroup, mergeProps({ "class": ["v-btn-toggle", props.class] }, btnGroupProps, { "style": props.style }), { default: () => [slots.default?.({
|
||||
isSelected,
|
||||
next,
|
||||
prev,
|
||||
select,
|
||||
selected
|
||||
})] });
|
||||
});
|
||||
return {
|
||||
next,
|
||||
prev,
|
||||
select
|
||||
};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/composables/selectLink.js
|
||||
function useSelectLink(link, select) {
|
||||
watch(() => link.isActive?.value, (isActive) => {
|
||||
if (link.isLink.value && isActive != null && select) nextTick(() => {
|
||||
select(isActive);
|
||||
});
|
||||
}, { immediate: true });
|
||||
}
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/components/VBtn/VBtn.js
|
||||
var makeVBtnProps = propsFactory({
|
||||
active: {
|
||||
type: Boolean,
|
||||
default: void 0
|
||||
},
|
||||
activeColor: String,
|
||||
baseColor: String,
|
||||
symbol: {
|
||||
type: null,
|
||||
default: VBtnToggleSymbol
|
||||
},
|
||||
flat: Boolean,
|
||||
icon: [
|
||||
Boolean,
|
||||
String,
|
||||
Function,
|
||||
Object
|
||||
],
|
||||
prependIcon: IconValue,
|
||||
appendIcon: IconValue,
|
||||
block: Boolean,
|
||||
readonly: Boolean,
|
||||
slim: Boolean,
|
||||
stacked: Boolean,
|
||||
spaced: String,
|
||||
ripple: {
|
||||
type: [Boolean, Object],
|
||||
default: true
|
||||
},
|
||||
text: {
|
||||
type: [
|
||||
String,
|
||||
Number,
|
||||
Boolean
|
||||
],
|
||||
default: void 0
|
||||
},
|
||||
...makeBorderProps(),
|
||||
...makeComponentProps(),
|
||||
...makeDensityProps(),
|
||||
...makeDimensionProps(),
|
||||
...makeElevationProps(),
|
||||
...makeGroupItemProps(),
|
||||
...makeLoaderProps(),
|
||||
...makeLocationProps(),
|
||||
...makePositionProps(),
|
||||
...makeRoundedProps(),
|
||||
...makeRouterProps(),
|
||||
...makeSizeProps(),
|
||||
...makeTagProps({ tag: "button" }),
|
||||
...makeThemeProps(),
|
||||
...makeVariantProps({ variant: "elevated" })
|
||||
}, "VBtn");
|
||||
var VBtn = genericComponent()({
|
||||
name: "VBtn",
|
||||
props: makeVBtnProps(),
|
||||
emits: { "group:selected": (val) => true },
|
||||
setup(props, { attrs, slots }) {
|
||||
const { themeClasses } = provideTheme(props);
|
||||
const { borderClasses } = useBorder(props);
|
||||
const { densityClasses } = useDensity(props);
|
||||
const { dimensionStyles } = useDimension(props);
|
||||
const { elevationClasses } = useElevation(props);
|
||||
const { loaderClasses } = useLoader(props);
|
||||
const { locationStyles } = useLocation(props);
|
||||
const { positionClasses } = usePosition(props);
|
||||
const { roundedClasses } = useRounded(props);
|
||||
const { sizeClasses, sizeStyles } = useSize(props);
|
||||
const group = useGroupItem(props, props.symbol, false);
|
||||
const link = useLink(props, attrs);
|
||||
const isActive = computed(() => {
|
||||
if (props.active !== void 0) return props.active;
|
||||
if (link.isRouterLink.value) return link.isActive?.value;
|
||||
return group?.isSelected.value;
|
||||
});
|
||||
const color = toRef(() => isActive.value ? props.activeColor ?? props.color : props.color);
|
||||
const { colorClasses, colorStyles, variantClasses } = useVariant(computed(() => {
|
||||
return {
|
||||
color: group?.isSelected.value && (!link.isLink.value || link.isActive?.value) || !group || link.isActive?.value ? color.value ?? props.baseColor : props.baseColor,
|
||||
variant: props.variant
|
||||
};
|
||||
}));
|
||||
const isDisabled = computed(() => group?.disabled.value || props.disabled);
|
||||
const isElevated = toRef(() => {
|
||||
return props.variant === "elevated" && !(props.disabled || props.flat || props.border);
|
||||
});
|
||||
const valueAttr = computed(() => {
|
||||
if (props.value === void 0 || typeof props.value === "symbol") return void 0;
|
||||
return Object(props.value) === props.value ? JSON.stringify(props.value, null, 0) : props.value;
|
||||
});
|
||||
function onClick(e) {
|
||||
if (isDisabled.value || link.isLink.value && (e.metaKey || e.ctrlKey || e.shiftKey || e.button !== 0 || attrs.target === "_blank")) return;
|
||||
if (link.isRouterLink.value) link.navigate.value?.(e);
|
||||
else group?.toggle();
|
||||
}
|
||||
useSelectLink(link, group?.select);
|
||||
useRender(() => {
|
||||
const Tag = link.isLink.value ? "a" : props.tag;
|
||||
const hasPrepend = !!(props.prependIcon || slots.prepend);
|
||||
const hasAppend = !!(props.appendIcon || slots.append);
|
||||
const hasIcon = !!(props.icon && props.icon !== true);
|
||||
return withDirectives(createVNode(Tag, mergeProps(link.linkProps, {
|
||||
"type": Tag === "a" ? void 0 : "button",
|
||||
"class": [
|
||||
"v-btn",
|
||||
group?.selectedClass.value,
|
||||
{
|
||||
"v-btn--active": isActive.value,
|
||||
"v-btn--block": props.block,
|
||||
"v-btn--disabled": isDisabled.value,
|
||||
"v-btn--elevated": isElevated.value,
|
||||
"v-btn--flat": props.flat,
|
||||
"v-btn--icon": !!props.icon,
|
||||
"v-btn--loading": props.loading,
|
||||
"v-btn--readonly": props.readonly,
|
||||
"v-btn--slim": props.slim,
|
||||
"v-btn--stacked": props.stacked
|
||||
},
|
||||
props.spaced ? ["v-btn--spaced", `v-btn--spaced-${props.spaced}`] : [],
|
||||
themeClasses.value,
|
||||
borderClasses.value,
|
||||
colorClasses.value,
|
||||
densityClasses.value,
|
||||
elevationClasses.value,
|
||||
loaderClasses.value,
|
||||
positionClasses.value,
|
||||
roundedClasses.value,
|
||||
sizeClasses.value,
|
||||
variantClasses.value,
|
||||
props.class
|
||||
],
|
||||
"style": [
|
||||
colorStyles.value,
|
||||
dimensionStyles.value,
|
||||
locationStyles.value,
|
||||
sizeStyles.value,
|
||||
props.style
|
||||
],
|
||||
"aria-busy": props.loading ? true : void 0,
|
||||
"disabled": isDisabled.value && Tag !== "a" || void 0,
|
||||
"tabindex": props.loading || props.readonly ? -1 : void 0,
|
||||
"onClick": onClick,
|
||||
"value": valueAttr.value
|
||||
}), { default: () => [
|
||||
genOverlays(true, "v-btn"),
|
||||
!props.icon && hasPrepend && createBaseVNode("span", {
|
||||
"key": "prepend",
|
||||
"class": "v-btn__prepend"
|
||||
}, [!slots.prepend ? createVNode(VIcon, {
|
||||
"key": "prepend-icon",
|
||||
"icon": props.prependIcon
|
||||
}, null) : createVNode(VDefaultsProvider, {
|
||||
"key": "prepend-defaults",
|
||||
"disabled": !props.prependIcon,
|
||||
"defaults": { VIcon: { icon: props.prependIcon } }
|
||||
}, slots.prepend)]),
|
||||
createBaseVNode("span", {
|
||||
"class": "v-btn__content",
|
||||
"data-no-activator": ""
|
||||
}, [!slots.default && hasIcon ? createVNode(VIcon, {
|
||||
"key": "content-icon",
|
||||
"icon": props.icon
|
||||
}, null) : createVNode(VDefaultsProvider, {
|
||||
"key": "content-defaults",
|
||||
"disabled": !hasIcon,
|
||||
"defaults": { VIcon: { icon: props.icon } }
|
||||
}, { default: () => [slots.default?.() ?? toDisplayString(props.text)] })]),
|
||||
!props.icon && hasAppend && createBaseVNode("span", {
|
||||
"key": "append",
|
||||
"class": "v-btn__append"
|
||||
}, [!slots.append ? createVNode(VIcon, {
|
||||
"key": "append-icon",
|
||||
"icon": props.appendIcon
|
||||
}, null) : createVNode(VDefaultsProvider, {
|
||||
"key": "append-defaults",
|
||||
"disabled": !props.appendIcon,
|
||||
"defaults": { VIcon: { icon: props.appendIcon } }
|
||||
}, slots.append)]),
|
||||
!!props.loading && createBaseVNode("span", {
|
||||
"key": "loader",
|
||||
"class": "v-btn__loader"
|
||||
}, [slots.loader?.() ?? createVNode(VProgressCircular, {
|
||||
"color": typeof props.loading === "boolean" ? void 0 : props.loading,
|
||||
"indeterminate": true,
|
||||
"width": "2"
|
||||
}, null)])
|
||||
] }), [[
|
||||
Ripple,
|
||||
!isDisabled.value && props.ripple,
|
||||
"",
|
||||
{ center: !!props.icon }
|
||||
]]);
|
||||
});
|
||||
return { group };
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
export { makeVBtnProps as n, VBtn as t };
|
||||
|
||||
//# sourceMappingURL=VBtn-BZzD9gwE.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+28
@@ -0,0 +1,28 @@
|
||||
import { $n as toRefs } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { a as provideDefaults, l as propsFactory, n as genericComponent } from "./defineComponent-DB6xIcDy.js";
|
||||
//#region node_modules/vuetify/lib/components/VDefaultsProvider/VDefaultsProvider.js
|
||||
var makeVDefaultsProviderProps = propsFactory({
|
||||
defaults: Object,
|
||||
disabled: Boolean,
|
||||
reset: [Number, String],
|
||||
root: [Boolean, String],
|
||||
scoped: Boolean
|
||||
}, "VDefaultsProvider");
|
||||
var VDefaultsProvider = genericComponent(false)({
|
||||
name: "VDefaultsProvider",
|
||||
props: makeVDefaultsProviderProps(),
|
||||
setup(props, { slots }) {
|
||||
const { defaults, disabled, reset, root, scoped } = toRefs(props);
|
||||
provideDefaults(defaults, {
|
||||
reset,
|
||||
root,
|
||||
scoped,
|
||||
disabled
|
||||
});
|
||||
return () => slots.default?.();
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
export { VDefaultsProvider as t };
|
||||
|
||||
//# sourceMappingURL=VDefaultsProvider-C09t4-My.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"VDefaultsProvider-C09t4-My.js","names":[],"sources":["../../vuetify/lib/components/VDefaultsProvider/VDefaultsProvider.js"],"sourcesContent":["// Composables\nimport { provideDefaults } from \"../../composables/defaults.js\"; // Utilities\nimport { toRefs } from 'vue';\nimport { genericComponent, propsFactory } from \"../../util/index.js\"; // Types\nexport const makeVDefaultsProviderProps = propsFactory({\n defaults: Object,\n disabled: Boolean,\n reset: [Number, String],\n root: [Boolean, String],\n scoped: Boolean\n}, 'VDefaultsProvider');\nexport const VDefaultsProvider = genericComponent(false)({\n name: 'VDefaultsProvider',\n props: makeVDefaultsProviderProps(),\n setup(props, {\n slots\n }) {\n const {\n defaults,\n disabled,\n reset,\n root,\n scoped\n } = toRefs(props);\n provideDefaults(defaults, {\n reset,\n root,\n scoped,\n disabled\n });\n return () => slots.default?.();\n }\n});\n//# sourceMappingURL=VDefaultsProvider.js.map"],"mappings":";;;AAIA,IAAa,6BAA6B,aAAa;CACrD,UAAU;CACV,UAAU;CACV,OAAO,CAAC,QAAQ,OAAO;CACvB,MAAM,CAAC,SAAS,OAAO;CACvB,QAAQ;CACT,EAAE,oBAAoB;AACvB,IAAa,oBAAoB,iBAAiB,MAAM,CAAC;CACvD,MAAM;CACN,OAAO,4BAA4B;CACnC,MAAM,OAAO,EACX,SACC;EACD,MAAM,EACJ,UACA,UACA,OACA,MACA,WACE,OAAO,MAAM;AACjB,kBAAgB,UAAU;GACxB;GACA;GACA;GACA;GACD,CAAC;AACF,eAAa,MAAM,WAAW;;CAEjC,CAAC"}
|
||||
+100
@@ -0,0 +1,100 @@
|
||||
import { Qn as toRef, U as computed, W as createBaseVNode, ar as normalizeClass, sr as normalizeStyle } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { _ as convertToUnit, l as propsFactory, n as genericComponent } from "./defineComponent-DB6xIcDy.js";
|
||||
import { t as makeComponentProps } from "./component-DdiwBe6i.js";
|
||||
import { t as useRender } from "./useRender-fVtVsZgv.js";
|
||||
import { r as useTextColor } from "./color-B6vuQruj.js";
|
||||
import { i as provideTheme, r as makeThemeProps } from "./theme-Cx5kFg0-.js";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VDivider/VDivider.css";
|
||||
//#region node_modules/vuetify/lib/components/VDivider/VDivider.js
|
||||
var allowedVariants = [
|
||||
"dotted",
|
||||
"dashed",
|
||||
"solid",
|
||||
"double"
|
||||
];
|
||||
var makeVDividerProps = propsFactory({
|
||||
color: String,
|
||||
contentOffset: [
|
||||
Number,
|
||||
String,
|
||||
Array
|
||||
],
|
||||
gradient: Boolean,
|
||||
inset: Boolean,
|
||||
length: [Number, String],
|
||||
opacity: [Number, String],
|
||||
thickness: [Number, String],
|
||||
vertical: Boolean,
|
||||
variant: {
|
||||
type: String,
|
||||
default: "solid",
|
||||
validator: (v) => allowedVariants.includes(v)
|
||||
},
|
||||
...makeComponentProps(),
|
||||
...makeThemeProps()
|
||||
}, "VDivider");
|
||||
var VDivider = genericComponent()({
|
||||
name: "VDivider",
|
||||
props: makeVDividerProps(),
|
||||
setup(props, { attrs, slots }) {
|
||||
const { themeClasses } = provideTheme(props);
|
||||
const { textColorClasses, textColorStyles } = useTextColor(() => props.color);
|
||||
const dividerStyles = computed(() => {
|
||||
const styles = {};
|
||||
if (props.length) styles[props.vertical ? "height" : "width"] = convertToUnit(props.length);
|
||||
if (props.thickness) styles[props.vertical ? "borderRightWidth" : "borderTopWidth"] = convertToUnit(props.thickness);
|
||||
return styles;
|
||||
});
|
||||
const contentStyles = toRef(() => {
|
||||
const margin = Array.isArray(props.contentOffset) ? props.contentOffset[0] : props.contentOffset;
|
||||
const shift = Array.isArray(props.contentOffset) ? props.contentOffset[1] : 0;
|
||||
return {
|
||||
marginBlock: props.vertical && margin ? convertToUnit(margin) : void 0,
|
||||
marginInline: !props.vertical && margin ? convertToUnit(margin) : void 0,
|
||||
transform: shift ? `translate${props.vertical ? "X" : "Y"}(${convertToUnit(shift)})` : void 0
|
||||
};
|
||||
});
|
||||
useRender(() => {
|
||||
const divider = createBaseVNode("hr", {
|
||||
"class": normalizeClass([
|
||||
{
|
||||
"v-divider": true,
|
||||
"v-divider--gradient": props.gradient && !slots.default,
|
||||
"v-divider--inset": props.inset,
|
||||
"v-divider--vertical": props.vertical
|
||||
},
|
||||
themeClasses.value,
|
||||
textColorClasses.value,
|
||||
props.class
|
||||
]),
|
||||
"style": normalizeStyle([
|
||||
dividerStyles.value,
|
||||
textColorStyles.value,
|
||||
{ "--v-border-opacity": props.opacity },
|
||||
{ "border-style": props.variant },
|
||||
props.style
|
||||
]),
|
||||
"aria-orientation": !attrs.role || attrs.role === "separator" ? props.vertical ? "vertical" : "horizontal" : void 0,
|
||||
"role": `${attrs.role || "separator"}`
|
||||
}, null);
|
||||
if (!slots.default) return divider;
|
||||
return createBaseVNode("div", { "class": normalizeClass(["v-divider__wrapper", {
|
||||
"v-divider__wrapper--gradient": props.gradient,
|
||||
"v-divider__wrapper--inset": props.inset,
|
||||
"v-divider__wrapper--vertical": props.vertical
|
||||
}]) }, [
|
||||
divider,
|
||||
createBaseVNode("div", {
|
||||
"class": "v-divider__content",
|
||||
"style": normalizeStyle(contentStyles.value)
|
||||
}, [slots.default()]),
|
||||
divider
|
||||
]);
|
||||
});
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
export { VDivider as t };
|
||||
|
||||
//# sourceMappingURL=VDivider-BJiijT0J.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+103
@@ -0,0 +1,103 @@
|
||||
import { L as Text, Yn as shallowRef, ar as normalizeClass, et as createVNode, sr as normalizeStyle } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { E as flattenFragments, P as includes, _ as convertToUnit, c as getCurrentInstanceName, l as propsFactory, n as genericComponent, x as destructComputed } from "./defineComponent-DB6xIcDy.js";
|
||||
import { t as makeComponentProps } from "./component-DdiwBe6i.js";
|
||||
import { t as useRender } from "./useRender-fVtVsZgv.js";
|
||||
import { r as useTextColor } from "./color-B6vuQruj.js";
|
||||
import { a as useTheme, r as makeThemeProps } from "./theme-Cx5kFg0-.js";
|
||||
import { n as IconValue, s as useIcon } from "./icons-k2ZLE_i8.js";
|
||||
import { t as makeTagProps } from "./tag-C_KkCPzB.js";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VIcon/VIcon.css";
|
||||
//#region node_modules/vuetify/lib/composables/size.js
|
||||
var predefinedSizes = [
|
||||
"x-small",
|
||||
"small",
|
||||
"default",
|
||||
"large",
|
||||
"x-large"
|
||||
];
|
||||
var makeSizeProps = propsFactory({ size: {
|
||||
type: [String, Number],
|
||||
default: "default"
|
||||
} }, "size");
|
||||
function useSize(props, name = getCurrentInstanceName()) {
|
||||
return destructComputed(() => {
|
||||
const size = props.size;
|
||||
let sizeClasses;
|
||||
let sizeStyles;
|
||||
if (includes(predefinedSizes, size)) sizeClasses = `${name}--size-${size}`;
|
||||
else if (size) sizeStyles = {
|
||||
width: convertToUnit(size),
|
||||
height: convertToUnit(size)
|
||||
};
|
||||
return {
|
||||
sizeClasses,
|
||||
sizeStyles
|
||||
};
|
||||
});
|
||||
}
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/components/VIcon/VIcon.js
|
||||
var makeVIconProps = propsFactory({
|
||||
color: String,
|
||||
disabled: Boolean,
|
||||
start: Boolean,
|
||||
end: Boolean,
|
||||
icon: IconValue,
|
||||
opacity: [String, Number],
|
||||
...makeComponentProps(),
|
||||
...makeSizeProps(),
|
||||
...makeTagProps({ tag: "i" }),
|
||||
...makeThemeProps()
|
||||
}, "VIcon");
|
||||
var VIcon = genericComponent()({
|
||||
name: "VIcon",
|
||||
props: makeVIconProps(),
|
||||
setup(props, { attrs, slots }) {
|
||||
const slotIcon = shallowRef();
|
||||
const { themeClasses } = useTheme();
|
||||
const { iconData } = useIcon(() => slotIcon.value || props.icon);
|
||||
const { sizeClasses } = useSize(props);
|
||||
const { textColorClasses, textColorStyles } = useTextColor(() => props.color);
|
||||
useRender(() => {
|
||||
const slotValue = slots.default?.();
|
||||
if (slotValue) slotIcon.value = flattenFragments(slotValue).filter((node) => node.type === Text && node.children && typeof node.children === "string")[0]?.children;
|
||||
const hasClick = !!(attrs.onClick || attrs.onClickOnce);
|
||||
return createVNode(iconData.value.component, {
|
||||
"tag": props.tag,
|
||||
"icon": iconData.value.icon,
|
||||
"class": normalizeClass([
|
||||
"v-icon",
|
||||
"notranslate",
|
||||
themeClasses.value,
|
||||
sizeClasses.value,
|
||||
textColorClasses.value,
|
||||
{
|
||||
"v-icon--clickable": hasClick,
|
||||
"v-icon--disabled": props.disabled,
|
||||
"v-icon--start": props.start,
|
||||
"v-icon--end": props.end
|
||||
},
|
||||
props.class
|
||||
]),
|
||||
"style": normalizeStyle([
|
||||
{ "--v-icon-opacity": props.opacity },
|
||||
!sizeClasses.value ? {
|
||||
fontSize: convertToUnit(props.size),
|
||||
height: convertToUnit(props.size),
|
||||
width: convertToUnit(props.size)
|
||||
} : void 0,
|
||||
textColorStyles.value,
|
||||
props.style
|
||||
]),
|
||||
"role": hasClick ? "button" : void 0,
|
||||
"aria-hidden": !hasClick,
|
||||
"tabindex": hasClick ? props.disabled ? -1 : 0 : void 0
|
||||
}, { default: () => [slotValue] });
|
||||
});
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
export { makeSizeProps as n, useSize as r, VIcon as t };
|
||||
|
||||
//# sourceMappingURL=VIcon-1CJH_3Uo.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+363
@@ -0,0 +1,363 @@
|
||||
import { At as onBeforeMount, C as vShow, Cn as withDirectives, Dt as mergeProps, Kn as ref, M as Fragment, Ot as nextTick, Qn as toRef, U as computed, W as createBaseVNode, Yn as shallowRef, ar as normalizeClass, et as createVNode, gn as watch, jt as onBeforeUnmount, sr as normalizeStyle } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { _ as convertToUnit, et as SUPPORTS_INTERSECTION, l as propsFactory, n as genericComponent, s as getCurrentInstance, w as filterInputAttrs } from "./defineComponent-DB6xIcDy.js";
|
||||
import { t as makeComponentProps } from "./component-DdiwBe6i.js";
|
||||
import { t as useRender } from "./useRender-fVtVsZgv.js";
|
||||
import { t as useBackgroundColor } from "./color-B6vuQruj.js";
|
||||
import { n as useDimension, t as makeDimensionProps } from "./dimensions-BDdmuRdK.js";
|
||||
import { n as useRounded, t as makeRoundedProps } from "./rounded-BuPGKRa9.js";
|
||||
import { n as makeTransitionProps, t as MaybeTransition } from "./transition-DqoZ8fA1.js";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VImg/VImg.css";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VResponsive/VResponsive.css";
|
||||
//#region node_modules/vuetify/lib/components/VResponsive/VResponsive.js
|
||||
function useAspectStyles(props) {
|
||||
return { aspectStyles: computed(() => {
|
||||
const ratio = Number(props.aspectRatio);
|
||||
return ratio ? { paddingBottom: String(1 / ratio * 100) + "%" } : void 0;
|
||||
}) };
|
||||
}
|
||||
var makeVResponsiveProps = propsFactory({
|
||||
aspectRatio: [String, Number],
|
||||
contentClass: null,
|
||||
inline: Boolean,
|
||||
...makeComponentProps(),
|
||||
...makeDimensionProps()
|
||||
}, "VResponsive");
|
||||
var VResponsive = genericComponent()({
|
||||
name: "VResponsive",
|
||||
props: makeVResponsiveProps(),
|
||||
setup(props, { slots }) {
|
||||
const { aspectStyles } = useAspectStyles(props);
|
||||
const { dimensionStyles } = useDimension(props);
|
||||
useRender(() => createBaseVNode("div", {
|
||||
"class": normalizeClass([
|
||||
"v-responsive",
|
||||
{ "v-responsive--inline": props.inline },
|
||||
props.class
|
||||
]),
|
||||
"style": normalizeStyle([dimensionStyles.value, props.style])
|
||||
}, [
|
||||
createBaseVNode("div", {
|
||||
"class": "v-responsive__sizer",
|
||||
"style": normalizeStyle(aspectStyles.value)
|
||||
}, null),
|
||||
slots.additional?.(),
|
||||
slots.default && createBaseVNode("div", { "class": normalizeClass(["v-responsive__content", props.contentClass]) }, [slots.default()])
|
||||
]));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/directives/intersect/index.js
|
||||
function mounted(el, binding) {
|
||||
if (!SUPPORTS_INTERSECTION) return;
|
||||
const modifiers = binding.modifiers || {};
|
||||
const value = binding.value;
|
||||
const { handler, options } = typeof value === "object" ? value : {
|
||||
handler: value,
|
||||
options: {}
|
||||
};
|
||||
const observer = new IntersectionObserver((entries = [], observer) => {
|
||||
const _observe = el._observe?.[binding.instance.$.uid];
|
||||
if (!_observe) return;
|
||||
const isIntersecting = entries.some((entry) => entry.isIntersecting);
|
||||
if (handler && (!modifiers.quiet || _observe.init) && (!modifiers.once || isIntersecting || _observe.init)) handler(isIntersecting, entries, observer);
|
||||
if (isIntersecting && modifiers.once) unmounted(el, binding);
|
||||
else _observe.init = true;
|
||||
}, options);
|
||||
el._observe = Object(el._observe);
|
||||
el._observe[binding.instance.$.uid] = {
|
||||
init: false,
|
||||
observer
|
||||
};
|
||||
observer.observe(el);
|
||||
}
|
||||
function unmounted(el, binding) {
|
||||
const observe = el._observe?.[binding.instance.$.uid];
|
||||
if (!observe) return;
|
||||
observe.observer.unobserve(el);
|
||||
delete el._observe[binding.instance.$.uid];
|
||||
}
|
||||
var Intersect = {
|
||||
mounted,
|
||||
unmounted,
|
||||
updated: (el, binding) => {
|
||||
if (el._observe?.[binding.instance.$.uid]) {
|
||||
unmounted(el, binding);
|
||||
mounted(el, binding);
|
||||
}
|
||||
}
|
||||
};
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/components/VImg/VImg.js
|
||||
var makeVImgProps = propsFactory({
|
||||
absolute: Boolean,
|
||||
alt: String,
|
||||
cover: Boolean,
|
||||
color: String,
|
||||
draggable: {
|
||||
type: [Boolean, String],
|
||||
default: void 0
|
||||
},
|
||||
eager: Boolean,
|
||||
gradient: String,
|
||||
imageClass: null,
|
||||
lazySrc: String,
|
||||
options: {
|
||||
type: Object,
|
||||
default: () => ({
|
||||
root: void 0,
|
||||
rootMargin: void 0,
|
||||
threshold: void 0
|
||||
})
|
||||
},
|
||||
sizes: String,
|
||||
src: {
|
||||
type: [String, Object],
|
||||
default: ""
|
||||
},
|
||||
crossorigin: String,
|
||||
referrerpolicy: String,
|
||||
srcset: String,
|
||||
position: String,
|
||||
...makeVResponsiveProps(),
|
||||
...makeComponentProps(),
|
||||
...makeRoundedProps(),
|
||||
...makeTransitionProps()
|
||||
}, "VImg");
|
||||
var VImg = genericComponent()({
|
||||
name: "VImg",
|
||||
directives: { vIntersect: Intersect },
|
||||
inheritAttrs: false,
|
||||
props: makeVImgProps(),
|
||||
emits: {
|
||||
loadstart: (value) => true,
|
||||
load: (value) => true,
|
||||
error: (value) => true
|
||||
},
|
||||
setup(props, { attrs, emit, slots }) {
|
||||
const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => props.color);
|
||||
const { roundedClasses } = useRounded(props);
|
||||
const vm = getCurrentInstance("VImg");
|
||||
const currentSrc = shallowRef("");
|
||||
const image = ref();
|
||||
const state = shallowRef(props.eager ? "loading" : "idle");
|
||||
const naturalWidth = shallowRef();
|
||||
const naturalHeight = shallowRef();
|
||||
const normalisedSrc = computed(() => {
|
||||
return props.src && typeof props.src === "object" ? {
|
||||
src: props.src.src,
|
||||
srcset: props.srcset || props.src.srcset,
|
||||
lazySrc: props.lazySrc || props.src.lazySrc,
|
||||
aspect: Number(props.aspectRatio || props.src.aspect || 0)
|
||||
} : {
|
||||
src: props.src,
|
||||
srcset: props.srcset,
|
||||
lazySrc: props.lazySrc,
|
||||
aspect: Number(props.aspectRatio || 0)
|
||||
};
|
||||
});
|
||||
const aspectRatio = computed(() => {
|
||||
return normalisedSrc.value.aspect || naturalWidth.value / naturalHeight.value || 0;
|
||||
});
|
||||
watch(() => props.src, () => {
|
||||
init(state.value !== "idle");
|
||||
});
|
||||
watch(aspectRatio, (val, oldVal) => {
|
||||
if (!val && oldVal && image.value) pollForSize(image.value);
|
||||
});
|
||||
onBeforeMount(() => init());
|
||||
function init(isIntersecting) {
|
||||
if (props.eager && isIntersecting) return;
|
||||
if (SUPPORTS_INTERSECTION && !isIntersecting && !props.eager) return;
|
||||
state.value = "loading";
|
||||
if (normalisedSrc.value.lazySrc) {
|
||||
const lazyImg = new Image();
|
||||
lazyImg.src = normalisedSrc.value.lazySrc;
|
||||
pollForSize(lazyImg, null);
|
||||
}
|
||||
if (!normalisedSrc.value.src) return;
|
||||
nextTick(() => {
|
||||
emit("loadstart", image.value?.currentSrc || normalisedSrc.value.src);
|
||||
setTimeout(() => {
|
||||
if (vm.isUnmounted) return;
|
||||
if (image.value?.complete) {
|
||||
if (!image.value.naturalWidth) onError();
|
||||
if (state.value === "error") return;
|
||||
if (!aspectRatio.value) pollForSize(image.value, null);
|
||||
if (state.value === "loading") onLoad();
|
||||
} else {
|
||||
if (!aspectRatio.value) pollForSize(image.value);
|
||||
getSrc();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
function onLoad() {
|
||||
if (vm.isUnmounted) return;
|
||||
getSrc();
|
||||
pollForSize(image.value);
|
||||
state.value = "loaded";
|
||||
emit("load", image.value?.currentSrc || normalisedSrc.value.src);
|
||||
}
|
||||
function onError() {
|
||||
if (vm.isUnmounted) return;
|
||||
state.value = "error";
|
||||
emit("error", image.value?.currentSrc || normalisedSrc.value.src);
|
||||
}
|
||||
function getSrc() {
|
||||
const img = image.value;
|
||||
if (img) currentSrc.value = img.currentSrc || img.src;
|
||||
}
|
||||
let timer = -1;
|
||||
onBeforeUnmount(() => {
|
||||
clearTimeout(timer);
|
||||
});
|
||||
function pollForSize(img, timeout = 100) {
|
||||
const poll = () => {
|
||||
clearTimeout(timer);
|
||||
if (vm.isUnmounted) return;
|
||||
const { naturalHeight: imgHeight, naturalWidth: imgWidth } = img;
|
||||
if (imgHeight || imgWidth) {
|
||||
naturalWidth.value = imgWidth;
|
||||
naturalHeight.value = imgHeight;
|
||||
} else if (!img.complete && state.value === "loading" && timeout != null) timer = window.setTimeout(poll, timeout);
|
||||
else if (img.currentSrc.endsWith(".svg") || img.currentSrc.startsWith("data:image/svg+xml")) {
|
||||
naturalWidth.value = 1;
|
||||
naturalHeight.value = 1;
|
||||
}
|
||||
};
|
||||
poll();
|
||||
}
|
||||
const containClasses = toRef(() => ({
|
||||
"v-img__img--cover": props.cover,
|
||||
"v-img__img--contain": !props.cover
|
||||
}));
|
||||
const __image = () => {
|
||||
if (!normalisedSrc.value.src || state.value === "idle") return null;
|
||||
const img = createBaseVNode("img", {
|
||||
"class": normalizeClass([
|
||||
"v-img__img",
|
||||
containClasses.value,
|
||||
props.imageClass
|
||||
]),
|
||||
"style": { objectPosition: props.position },
|
||||
"crossorigin": props.crossorigin,
|
||||
"src": normalisedSrc.value.src,
|
||||
"srcset": normalisedSrc.value.srcset,
|
||||
"alt": props.alt,
|
||||
"referrerpolicy": props.referrerpolicy,
|
||||
"draggable": props.draggable,
|
||||
"sizes": props.sizes,
|
||||
"ref": image,
|
||||
"onLoad": onLoad,
|
||||
"onError": onError
|
||||
}, null);
|
||||
const sources = slots.sources?.();
|
||||
return createVNode(MaybeTransition, {
|
||||
"transition": props.transition,
|
||||
"appear": true
|
||||
}, { default: () => [withDirectives(sources ? createBaseVNode("picture", { "class": "v-img__picture" }, [sources, img]) : img, [[vShow, state.value === "loaded"]])] });
|
||||
};
|
||||
const __preloadImage = () => createVNode(MaybeTransition, { "transition": props.transition }, { default: () => [normalisedSrc.value.lazySrc && state.value !== "loaded" && createBaseVNode("img", {
|
||||
"class": normalizeClass([
|
||||
"v-img__img",
|
||||
"v-img__img--preload",
|
||||
containClasses.value
|
||||
]),
|
||||
"style": { objectPosition: props.position },
|
||||
"crossorigin": props.crossorigin,
|
||||
"src": normalisedSrc.value.lazySrc,
|
||||
"alt": props.alt,
|
||||
"referrerpolicy": props.referrerpolicy,
|
||||
"draggable": props.draggable
|
||||
}, null)] });
|
||||
const __placeholder = () => {
|
||||
if (!slots.placeholder) return null;
|
||||
return createVNode(MaybeTransition, {
|
||||
"transition": props.transition,
|
||||
"appear": true
|
||||
}, { default: () => [(state.value === "loading" || state.value === "error" && !slots.error) && createBaseVNode("div", { "class": "v-img__placeholder" }, [slots.placeholder()])] });
|
||||
};
|
||||
const __error = () => {
|
||||
if (!slots.error) return null;
|
||||
return createVNode(MaybeTransition, {
|
||||
"transition": props.transition,
|
||||
"appear": true
|
||||
}, { default: () => [state.value === "error" && createBaseVNode("div", { "class": "v-img__error" }, [slots.error()])] });
|
||||
};
|
||||
const __gradient = () => {
|
||||
if (!props.gradient) return null;
|
||||
return createBaseVNode("div", {
|
||||
"class": "v-img__gradient",
|
||||
"style": { backgroundImage: `linear-gradient(${props.gradient})` }
|
||||
}, null);
|
||||
};
|
||||
const isBooted = shallowRef(false);
|
||||
{
|
||||
const stop = watch(aspectRatio, (val) => {
|
||||
if (val) {
|
||||
requestAnimationFrame(() => {
|
||||
requestAnimationFrame(() => {
|
||||
isBooted.value = true;
|
||||
});
|
||||
});
|
||||
stop();
|
||||
}
|
||||
});
|
||||
}
|
||||
useRender(() => {
|
||||
const responsiveProps = VResponsive.filterProps(props);
|
||||
const [rootAttrs, imageAttrs] = filterInputAttrs(attrs);
|
||||
return withDirectives(createVNode(VResponsive, mergeProps({
|
||||
"class": [
|
||||
"v-img",
|
||||
{
|
||||
"v-img--absolute": props.absolute,
|
||||
"v-img--booting": !isBooted.value,
|
||||
"v-img--fit-content": props.width === "fit-content"
|
||||
},
|
||||
backgroundColorClasses.value,
|
||||
roundedClasses.value,
|
||||
props.class
|
||||
],
|
||||
"style": [
|
||||
{ width: convertToUnit(props.width === "auto" ? naturalWidth.value : props.width) },
|
||||
backgroundColorStyles.value,
|
||||
props.style
|
||||
]
|
||||
}, responsiveProps, rootAttrs, {
|
||||
"aspectRatio": aspectRatio.value,
|
||||
"aria-label": props.alt,
|
||||
"role": props.alt ? "img" : void 0
|
||||
}), {
|
||||
additional: () => createBaseVNode(Fragment, null, [
|
||||
createVNode(__image, imageAttrs, null),
|
||||
createVNode(__preloadImage, null, null),
|
||||
createVNode(__gradient, null, null),
|
||||
createVNode(__placeholder, null, null),
|
||||
createVNode(__error, null, null)
|
||||
]),
|
||||
default: slots.default
|
||||
}), [[
|
||||
Intersect,
|
||||
{
|
||||
handler: init,
|
||||
options: props.options
|
||||
},
|
||||
null,
|
||||
{ once: true }
|
||||
]]);
|
||||
});
|
||||
return {
|
||||
currentSrc,
|
||||
image,
|
||||
state,
|
||||
naturalWidth,
|
||||
naturalHeight
|
||||
};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
export { Intersect as n, VImg as t };
|
||||
|
||||
//# sourceMappingURL=VImg-DaEUT7gG.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+720
@@ -0,0 +1,720 @@
|
||||
import { At as onBeforeMount, Cn as withDirectives, Dt as mergeProps, Ft as onMounted, Kn as ref, M as Fragment, Ot as nextTick, Qn as toRef, U as computed, Ut as provide, Vn as onScopeDispose, W as createBaseVNode, Yn as shallowRef, ar as normalizeClass, cn as useId, et as createVNode, gn as watch, jt as onBeforeUnmount, nr as unref, sr as normalizeStyle, xt as inject } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { B as matchesSelector, K as pick, Z as wrapInArray, a as provideDefaults, c as getCurrentInstanceName, d as EventProp, f as callEvent, l as propsFactory, n as genericComponent, s as getCurrentInstance, w as filterInputAttrs } from "./defineComponent-DB6xIcDy.js";
|
||||
import { a as VSlideYTransition } from "./transitions-DCQ3sjjZ.js";
|
||||
import { t as makeComponentProps } from "./component-DdiwBe6i.js";
|
||||
import { t as deepEqual } from "./deepEqual-DDqmGqyF.js";
|
||||
import { t as useRender } from "./useRender-fVtVsZgv.js";
|
||||
import { r as useTextColor, t as useBackgroundColor } from "./color-B6vuQruj.js";
|
||||
import { i as provideTheme, r as makeThemeProps } from "./theme-Cx5kFg0-.js";
|
||||
import { n as IconValue } from "./icons-k2ZLE_i8.js";
|
||||
import { n as useToggleScope, t as useProxiedModel } from "./proxiedModel-DSlSIQ0y.js";
|
||||
import { i as useRtl, r as useLocale } from "./locale-DDGMqzqb.js";
|
||||
import { n as useDimension, t as makeDimensionProps } from "./dimensions-BDdmuRdK.js";
|
||||
import { n as makeTransitionProps, t as MaybeTransition } from "./transition-DqoZ8fA1.js";
|
||||
import { n as useDensity, t as makeDensityProps } from "./density-CpKZ5PhP.js";
|
||||
import { t as VIcon } from "./VIcon-1CJH_3Uo.js";
|
||||
import { t as Ripple } from "./ripple-Z40rPDte.js";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VSelectionControl/VSelectionControl.css";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VLabel/VLabel.css";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VSelectionControlGroup/VSelectionControlGroup.css";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VInput/VInput.css";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VMessages/VMessages.css";
|
||||
//#region node_modules/vuetify/lib/components/VLabel/VLabel.js
|
||||
var makeVLabelProps = propsFactory({
|
||||
text: String,
|
||||
onClick: EventProp(),
|
||||
...makeComponentProps(),
|
||||
...makeThemeProps()
|
||||
}, "VLabel");
|
||||
var VLabel = genericComponent()({
|
||||
name: "VLabel",
|
||||
props: makeVLabelProps(),
|
||||
setup(props, { slots }) {
|
||||
useRender(() => createBaseVNode("label", {
|
||||
"class": normalizeClass([
|
||||
"v-label",
|
||||
{ "v-label--clickable": !!props.onClick },
|
||||
props.class
|
||||
]),
|
||||
"style": normalizeStyle(props.style),
|
||||
"onClick": props.onClick
|
||||
}, [props.text, slots.default?.()]));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/components/VSelectionControlGroup/VSelectionControlGroup.js
|
||||
var VSelectionControlGroupSymbol = Symbol.for("vuetify:selection-control-group");
|
||||
var makeSelectionControlGroupProps = propsFactory({
|
||||
color: String,
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
defaultsTarget: String,
|
||||
error: Boolean,
|
||||
id: String,
|
||||
inline: Boolean,
|
||||
falseIcon: IconValue,
|
||||
trueIcon: IconValue,
|
||||
ripple: {
|
||||
type: [Boolean, Object],
|
||||
default: true
|
||||
},
|
||||
multiple: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
name: String,
|
||||
readonly: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
modelValue: null,
|
||||
type: String,
|
||||
valueComparator: {
|
||||
type: Function,
|
||||
default: deepEqual
|
||||
},
|
||||
...makeComponentProps(),
|
||||
...makeDensityProps(),
|
||||
...makeThemeProps()
|
||||
}, "SelectionControlGroup");
|
||||
var makeVSelectionControlGroupProps = propsFactory({ ...makeSelectionControlGroupProps({ defaultsTarget: "VSelectionControl" }) }, "VSelectionControlGroup");
|
||||
genericComponent()({
|
||||
name: "VSelectionControlGroup",
|
||||
props: makeVSelectionControlGroupProps(),
|
||||
emits: { "update:modelValue": (value) => true },
|
||||
setup(props, { slots }) {
|
||||
const modelValue = useProxiedModel(props, "modelValue");
|
||||
const uid = useId();
|
||||
const id = toRef(() => props.id || `v-selection-control-group-${uid}`);
|
||||
const name = toRef(() => props.name || id.value);
|
||||
const updateHandlers = /* @__PURE__ */ new Set();
|
||||
provide(VSelectionControlGroupSymbol, {
|
||||
modelValue,
|
||||
forceUpdate: () => {
|
||||
updateHandlers.forEach((fn) => fn());
|
||||
},
|
||||
onForceUpdate: (cb) => {
|
||||
updateHandlers.add(cb);
|
||||
onScopeDispose(() => {
|
||||
updateHandlers.delete(cb);
|
||||
});
|
||||
}
|
||||
});
|
||||
provideDefaults({ [props.defaultsTarget]: {
|
||||
color: toRef(() => props.color),
|
||||
disabled: toRef(() => props.disabled),
|
||||
density: toRef(() => props.density),
|
||||
error: toRef(() => props.error),
|
||||
inline: toRef(() => props.inline),
|
||||
modelValue,
|
||||
multiple: toRef(() => !!props.multiple || props.multiple == null && Array.isArray(modelValue.value)),
|
||||
name,
|
||||
falseIcon: toRef(() => props.falseIcon),
|
||||
trueIcon: toRef(() => props.trueIcon),
|
||||
readonly: toRef(() => props.readonly),
|
||||
ripple: toRef(() => props.ripple),
|
||||
type: toRef(() => props.type),
|
||||
valueComparator: toRef(() => props.valueComparator)
|
||||
} });
|
||||
useRender(() => createBaseVNode("div", {
|
||||
"class": normalizeClass([
|
||||
"v-selection-control-group",
|
||||
{ "v-selection-control-group--inline": props.inline },
|
||||
props.class
|
||||
]),
|
||||
"style": normalizeStyle(props.style),
|
||||
"role": props.type === "radio" ? "radiogroup" : void 0
|
||||
}, [slots.default?.()]));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/components/VSelectionControl/VSelectionControl.js
|
||||
var makeVSelectionControlProps = propsFactory({
|
||||
label: String,
|
||||
baseColor: String,
|
||||
trueValue: null,
|
||||
falseValue: null,
|
||||
value: null,
|
||||
...makeComponentProps(),
|
||||
...makeSelectionControlGroupProps()
|
||||
}, "VSelectionControl");
|
||||
function useSelectionControl(props) {
|
||||
const group = inject(VSelectionControlGroupSymbol, void 0);
|
||||
const { densityClasses } = useDensity(props);
|
||||
const modelValue = useProxiedModel(props, "modelValue");
|
||||
const trueValue = computed(() => props.trueValue !== void 0 ? props.trueValue : props.value !== void 0 ? props.value : true);
|
||||
const falseValue = computed(() => props.falseValue !== void 0 ? props.falseValue : false);
|
||||
const isMultiple = computed(() => !!props.multiple || props.multiple == null && Array.isArray(modelValue.value));
|
||||
const model = computed({
|
||||
get() {
|
||||
const val = group ? group.modelValue.value : modelValue.value;
|
||||
return isMultiple.value ? wrapInArray(val).some((v) => props.valueComparator(v, trueValue.value)) : props.valueComparator(val, trueValue.value);
|
||||
},
|
||||
set(val) {
|
||||
if (props.readonly) return;
|
||||
const currentValue = val ? trueValue.value : falseValue.value;
|
||||
let newVal = currentValue;
|
||||
if (isMultiple.value) newVal = val ? [...wrapInArray(modelValue.value), currentValue] : wrapInArray(modelValue.value).filter((item) => !props.valueComparator(item, trueValue.value));
|
||||
if (group) group.modelValue.value = newVal;
|
||||
else modelValue.value = newVal;
|
||||
}
|
||||
});
|
||||
const { textColorClasses, textColorStyles } = useTextColor(() => {
|
||||
if (props.error || props.disabled) return void 0;
|
||||
return model.value ? props.color : props.baseColor;
|
||||
});
|
||||
const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => {
|
||||
return model.value && !props.error && !props.disabled ? props.color : props.baseColor;
|
||||
});
|
||||
return {
|
||||
group,
|
||||
densityClasses,
|
||||
trueValue,
|
||||
falseValue,
|
||||
model,
|
||||
textColorClasses,
|
||||
textColorStyles,
|
||||
backgroundColorClasses,
|
||||
backgroundColorStyles,
|
||||
icon: computed(() => model.value ? props.trueIcon : props.falseIcon)
|
||||
};
|
||||
}
|
||||
var VSelectionControl = genericComponent()({
|
||||
name: "VSelectionControl",
|
||||
directives: { vRipple: Ripple },
|
||||
inheritAttrs: false,
|
||||
props: makeVSelectionControlProps(),
|
||||
emits: { "update:modelValue": (value) => true },
|
||||
setup(props, { attrs, slots }) {
|
||||
const { group, densityClasses, icon, model, textColorClasses, textColorStyles, backgroundColorClasses, backgroundColorStyles, trueValue } = useSelectionControl(props);
|
||||
const uid = useId();
|
||||
const isFocused = shallowRef(false);
|
||||
const isFocusVisible = shallowRef(false);
|
||||
const input = ref();
|
||||
const id = toRef(() => props.id || `input-${uid}`);
|
||||
const isInteractive = toRef(() => !props.disabled && !props.readonly);
|
||||
group?.onForceUpdate(() => {
|
||||
if (input.value) input.value.checked = model.value;
|
||||
});
|
||||
function onFocus(e) {
|
||||
if (props.disabled) return;
|
||||
isFocused.value = true;
|
||||
if (matchesSelector(e.target, ":focus-visible") !== false) isFocusVisible.value = true;
|
||||
}
|
||||
function onBlur() {
|
||||
isFocused.value = false;
|
||||
isFocusVisible.value = false;
|
||||
}
|
||||
function onClickLabel(e) {
|
||||
e.stopPropagation();
|
||||
}
|
||||
function onInput(e) {
|
||||
if (!isInteractive.value) {
|
||||
if (input.value) input.value.checked = model.value;
|
||||
return;
|
||||
}
|
||||
if (props.readonly && group) nextTick(() => group.forceUpdate());
|
||||
model.value = e.target.checked;
|
||||
}
|
||||
useRender(() => {
|
||||
const label = slots.label ? slots.label({
|
||||
label: props.label,
|
||||
props: { for: id.value }
|
||||
}) : props.label;
|
||||
const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
|
||||
const inputNode = createBaseVNode("input", mergeProps({
|
||||
"ref": input,
|
||||
"checked": model.value,
|
||||
"disabled": !!props.disabled,
|
||||
"id": id.value,
|
||||
"onBlur": onBlur,
|
||||
"onFocus": onFocus,
|
||||
"onInput": onInput,
|
||||
"aria-disabled": !!props.disabled,
|
||||
"aria-label": props.label,
|
||||
"type": props.type,
|
||||
"value": trueValue.value,
|
||||
"name": props.name,
|
||||
"aria-checked": props.type === "checkbox" ? model.value : void 0
|
||||
}, inputAttrs), null);
|
||||
return createBaseVNode("div", mergeProps({ "class": [
|
||||
"v-selection-control",
|
||||
{
|
||||
"v-selection-control--dirty": model.value,
|
||||
"v-selection-control--disabled": props.disabled,
|
||||
"v-selection-control--error": props.error,
|
||||
"v-selection-control--focused": isFocused.value,
|
||||
"v-selection-control--focus-visible": isFocusVisible.value,
|
||||
"v-selection-control--inline": props.inline
|
||||
},
|
||||
densityClasses.value,
|
||||
props.class
|
||||
] }, rootAttrs, { "style": props.style }), [createBaseVNode("div", {
|
||||
"class": normalizeClass(["v-selection-control__wrapper", textColorClasses.value]),
|
||||
"style": normalizeStyle(textColorStyles.value)
|
||||
}, [slots.default?.({
|
||||
backgroundColorClasses,
|
||||
backgroundColorStyles
|
||||
}), withDirectives(createBaseVNode("div", { "class": normalizeClass(["v-selection-control__input"]) }, [slots.input?.({
|
||||
model,
|
||||
textColorClasses,
|
||||
textColorStyles,
|
||||
backgroundColorClasses,
|
||||
backgroundColorStyles,
|
||||
inputNode,
|
||||
icon: icon.value,
|
||||
props: {
|
||||
onFocus,
|
||||
onBlur,
|
||||
id: id.value
|
||||
}
|
||||
}) ?? createBaseVNode(Fragment, null, [icon.value && createVNode(VIcon, {
|
||||
"key": "icon",
|
||||
"icon": icon.value
|
||||
}, null), inputNode])]), [[
|
||||
Ripple,
|
||||
!props.disabled && !props.readonly && props.ripple,
|
||||
null,
|
||||
{
|
||||
center: true,
|
||||
circle: true
|
||||
}
|
||||
]])]), label && createVNode(VLabel, {
|
||||
"for": id.value,
|
||||
"onClick": onClickLabel
|
||||
}, { default: () => [label] })]);
|
||||
});
|
||||
return {
|
||||
isFocused,
|
||||
input
|
||||
};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/components/VInput/InputIcon.js
|
||||
function useInputIcon(props) {
|
||||
const { t } = useLocale();
|
||||
function InputIcon({ name, color, ...attrs }) {
|
||||
const localeKey = {
|
||||
prepend: "prependAction",
|
||||
prependInner: "prependAction",
|
||||
append: "appendAction",
|
||||
appendInner: "appendAction",
|
||||
clear: "clear"
|
||||
}[name];
|
||||
const listener = props[`onClick:${name}`];
|
||||
function onKeydown(e) {
|
||||
if (e.key !== "Enter" && e.key !== " ") return;
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
callEvent(listener, new PointerEvent("click", e));
|
||||
}
|
||||
const label = listener && localeKey ? t(`$vuetify.input.${localeKey}`, props.label ?? "") : void 0;
|
||||
return createVNode(VIcon, mergeProps({
|
||||
"icon": props[`${name}Icon`],
|
||||
"aria-label": label,
|
||||
"onClick": listener,
|
||||
"onKeydown": onKeydown,
|
||||
"color": color
|
||||
}, attrs), null);
|
||||
}
|
||||
return { InputIcon };
|
||||
}
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/components/VMessages/VMessages.js
|
||||
var makeVMessagesProps = propsFactory({
|
||||
active: Boolean,
|
||||
color: String,
|
||||
messages: {
|
||||
type: [Array, String],
|
||||
default: () => []
|
||||
},
|
||||
...makeComponentProps(),
|
||||
...makeTransitionProps({ transition: {
|
||||
component: VSlideYTransition,
|
||||
leaveAbsolute: true,
|
||||
group: true
|
||||
} })
|
||||
}, "VMessages");
|
||||
var VMessages = genericComponent()({
|
||||
name: "VMessages",
|
||||
props: makeVMessagesProps(),
|
||||
setup(props, { slots }) {
|
||||
const messages = computed(() => wrapInArray(props.messages));
|
||||
const { textColorClasses, textColorStyles } = useTextColor(() => props.color);
|
||||
useRender(() => createVNode(MaybeTransition, {
|
||||
"transition": props.transition,
|
||||
"tag": "div",
|
||||
"class": normalizeClass([
|
||||
"v-messages",
|
||||
textColorClasses.value,
|
||||
props.class
|
||||
]),
|
||||
"style": normalizeStyle([textColorStyles.value, props.style])
|
||||
}, { default: () => [props.active && messages.value.map((message, i) => createBaseVNode("div", {
|
||||
"class": "v-messages__message",
|
||||
"key": `${i}-${messages.value}`
|
||||
}, [slots.message ? slots.message({ message }) : message]))] }));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/composables/focus.js
|
||||
var makeFocusProps = propsFactory({
|
||||
focused: Boolean,
|
||||
"onUpdate:focused": EventProp()
|
||||
}, "focus");
|
||||
function useFocus(props, name = getCurrentInstanceName()) {
|
||||
const isFocused = useProxiedModel(props, "focused");
|
||||
const focusClasses = toRef(() => {
|
||||
return { [`${name}--focused`]: isFocused.value };
|
||||
});
|
||||
function focus() {
|
||||
isFocused.value = true;
|
||||
}
|
||||
function blur() {
|
||||
isFocused.value = false;
|
||||
}
|
||||
return {
|
||||
focusClasses,
|
||||
isFocused,
|
||||
focus,
|
||||
blur
|
||||
};
|
||||
}
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/composables/form.js
|
||||
var FormKey = Symbol.for("vuetify:form");
|
||||
propsFactory({
|
||||
disabled: Boolean,
|
||||
fastFail: Boolean,
|
||||
readonly: Boolean,
|
||||
modelValue: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
validateOn: {
|
||||
type: String,
|
||||
default: "input"
|
||||
}
|
||||
}, "form");
|
||||
function useForm(props) {
|
||||
const form = inject(FormKey, null);
|
||||
return {
|
||||
...form,
|
||||
isReadonly: computed(() => !!(props?.readonly ?? form?.isReadonly.value)),
|
||||
isDisabled: computed(() => !!(props?.disabled ?? form?.isDisabled.value))
|
||||
};
|
||||
}
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/labs/rules/rules.js
|
||||
var RulesSymbol = Symbol.for("vuetify:rules");
|
||||
function useRules(fn) {
|
||||
const rules = inject(RulesSymbol, null);
|
||||
if (!fn) {
|
||||
if (!rules) throw new Error("Could not find Vuetify rules injection");
|
||||
return rules.aliases;
|
||||
}
|
||||
return rules?.resolve(fn) ?? toRef(fn);
|
||||
}
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/composables/validation.js
|
||||
var makeValidationProps = propsFactory({
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
error: Boolean,
|
||||
errorMessages: {
|
||||
type: [Array, String],
|
||||
default: () => []
|
||||
},
|
||||
maxErrors: {
|
||||
type: [Number, String],
|
||||
default: 1
|
||||
},
|
||||
name: String,
|
||||
label: String,
|
||||
readonly: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
rules: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
modelValue: null,
|
||||
validateOn: String,
|
||||
validationValue: null,
|
||||
...makeFocusProps()
|
||||
}, "validation");
|
||||
function useValidation(props, name = getCurrentInstanceName(), id = useId()) {
|
||||
const model = useProxiedModel(props, "modelValue");
|
||||
const validationModel = computed(() => props.validationValue === void 0 ? model.value : props.validationValue);
|
||||
const form = useForm(props);
|
||||
const rules = useRules(() => props.rules);
|
||||
const internalErrorMessages = ref([]);
|
||||
const isPristine = shallowRef(true);
|
||||
const isDirty = computed(() => !!(wrapInArray(model.value === "" ? null : model.value).length || wrapInArray(validationModel.value === "" ? null : validationModel.value).length));
|
||||
const errorMessages = computed(() => {
|
||||
return props.errorMessages?.length ? wrapInArray(props.errorMessages).concat(internalErrorMessages.value).slice(0, Math.max(0, Number(props.maxErrors))) : internalErrorMessages.value;
|
||||
});
|
||||
const validateOn = computed(() => {
|
||||
let value = (props.validateOn ?? form.validateOn?.value) || "input";
|
||||
if (value === "lazy") value = "input lazy";
|
||||
if (value === "eager") value = "input eager";
|
||||
const set = new Set(value?.split(" ") ?? []);
|
||||
return {
|
||||
input: set.has("input"),
|
||||
blur: set.has("blur") || set.has("input") || set.has("invalid-input"),
|
||||
invalidInput: set.has("invalid-input"),
|
||||
lazy: set.has("lazy"),
|
||||
eager: set.has("eager")
|
||||
};
|
||||
});
|
||||
const isValid = computed(() => {
|
||||
if (props.error || props.errorMessages?.length) return false;
|
||||
if (!props.rules.length) return true;
|
||||
if (isPristine.value) return internalErrorMessages.value.length || validateOn.value.lazy ? null : true;
|
||||
else return !internalErrorMessages.value.length;
|
||||
});
|
||||
const isValidating = shallowRef(false);
|
||||
const validationClasses = computed(() => {
|
||||
return {
|
||||
[`${name}--error`]: isValid.value === false,
|
||||
[`${name}--dirty`]: isDirty.value,
|
||||
[`${name}--disabled`]: form.isDisabled.value,
|
||||
[`${name}--readonly`]: form.isReadonly.value
|
||||
};
|
||||
});
|
||||
const vm = getCurrentInstance("validation");
|
||||
const uid = computed(() => props.name ?? unref(id));
|
||||
onBeforeMount(() => {
|
||||
form.register?.({
|
||||
id: uid.value,
|
||||
vm,
|
||||
validate,
|
||||
reset,
|
||||
resetValidation
|
||||
});
|
||||
});
|
||||
onBeforeUnmount(() => {
|
||||
form.unregister?.(uid.value);
|
||||
});
|
||||
onMounted(async () => {
|
||||
if (!validateOn.value.lazy) await validate(!validateOn.value.eager);
|
||||
form.update?.(uid.value, isValid.value, errorMessages.value);
|
||||
});
|
||||
useToggleScope(() => validateOn.value.input || validateOn.value.invalidInput && isValid.value === false, () => {
|
||||
watch(validationModel, () => {
|
||||
if (validationModel.value != null) validate();
|
||||
else if (props.focused) {
|
||||
const unwatch = watch(() => props.focused, (val) => {
|
||||
if (!val) validate();
|
||||
unwatch();
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
useToggleScope(() => validateOn.value.blur, () => {
|
||||
watch(() => props.focused, (val) => {
|
||||
if (!val) validate();
|
||||
});
|
||||
});
|
||||
watch([isValid, errorMessages], () => {
|
||||
form.update?.(uid.value, isValid.value, errorMessages.value);
|
||||
});
|
||||
async function reset() {
|
||||
model.value = null;
|
||||
await nextTick();
|
||||
await resetValidation();
|
||||
}
|
||||
async function resetValidation() {
|
||||
isPristine.value = true;
|
||||
if (!validateOn.value.lazy) await validate(!validateOn.value.eager);
|
||||
else internalErrorMessages.value = [];
|
||||
}
|
||||
async function validate(silent = false) {
|
||||
const results = [];
|
||||
isValidating.value = true;
|
||||
for (const rule of rules.value) {
|
||||
if (results.length >= Number(props.maxErrors ?? 1)) break;
|
||||
const result = await (typeof rule === "function" ? rule : () => rule)(validationModel.value);
|
||||
if (result === true) continue;
|
||||
if (result !== false && typeof result !== "string") {
|
||||
console.warn(`${result} is not a valid value. Rule functions must return boolean true or a string.`);
|
||||
continue;
|
||||
}
|
||||
results.push(result || "");
|
||||
}
|
||||
internalErrorMessages.value = results;
|
||||
isValidating.value = false;
|
||||
isPristine.value = silent;
|
||||
return internalErrorMessages.value;
|
||||
}
|
||||
return {
|
||||
errorMessages,
|
||||
isDirty,
|
||||
isDisabled: form.isDisabled,
|
||||
isReadonly: form.isReadonly,
|
||||
isPristine,
|
||||
isValid,
|
||||
isValidating,
|
||||
reset,
|
||||
resetValidation,
|
||||
validate,
|
||||
validationClasses
|
||||
};
|
||||
}
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/components/VInput/VInput.js
|
||||
var makeVInputProps = propsFactory({
|
||||
id: String,
|
||||
appendIcon: IconValue,
|
||||
baseColor: String,
|
||||
centerAffix: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
color: String,
|
||||
glow: Boolean,
|
||||
iconColor: [Boolean, String],
|
||||
prependIcon: IconValue,
|
||||
hideDetails: [Boolean, String],
|
||||
hideSpinButtons: Boolean,
|
||||
hint: String,
|
||||
indentDetails: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
persistentHint: Boolean,
|
||||
messages: {
|
||||
type: [Array, String],
|
||||
default: () => []
|
||||
},
|
||||
direction: {
|
||||
type: String,
|
||||
default: "horizontal",
|
||||
validator: (v) => ["horizontal", "vertical"].includes(v)
|
||||
},
|
||||
"onClick:prepend": EventProp(),
|
||||
"onClick:append": EventProp(),
|
||||
...makeComponentProps(),
|
||||
...makeDensityProps(),
|
||||
...pick(makeDimensionProps(), [
|
||||
"maxWidth",
|
||||
"minWidth",
|
||||
"width"
|
||||
]),
|
||||
...makeThemeProps(),
|
||||
...makeValidationProps()
|
||||
}, "VInput");
|
||||
var VInput = genericComponent()({
|
||||
name: "VInput",
|
||||
props: { ...makeVInputProps() },
|
||||
emits: { "update:modelValue": (value) => true },
|
||||
setup(props, { attrs, slots, emit }) {
|
||||
const { densityClasses } = useDensity(props);
|
||||
const { dimensionStyles } = useDimension(props);
|
||||
const { themeClasses } = provideTheme(props);
|
||||
const { rtlClasses } = useRtl();
|
||||
const { InputIcon } = useInputIcon(props);
|
||||
const uid = useId();
|
||||
const id = computed(() => props.id || `input-${uid}`);
|
||||
const { errorMessages, isDirty, isDisabled, isReadonly, isPristine, isValid, isValidating, reset, resetValidation, validate, validationClasses } = useValidation(props, "v-input", id);
|
||||
const messages = computed(() => {
|
||||
if (props.errorMessages?.length || !isPristine.value && errorMessages.value.length) return errorMessages.value;
|
||||
else if (props.hint && (props.persistentHint || props.focused)) return props.hint;
|
||||
else return props.messages;
|
||||
});
|
||||
const hasMessages = toRef(() => messages.value.length > 0);
|
||||
const hasDetails = toRef(() => !props.hideDetails || props.hideDetails === "auto" && (hasMessages.value || !!slots.details));
|
||||
const messagesId = computed(() => hasDetails.value ? `${id.value}-messages` : void 0);
|
||||
const slotProps = computed(() => ({
|
||||
id,
|
||||
messagesId,
|
||||
isDirty,
|
||||
isDisabled,
|
||||
isReadonly,
|
||||
isPristine,
|
||||
isValid,
|
||||
isValidating,
|
||||
hasDetails,
|
||||
reset,
|
||||
resetValidation,
|
||||
validate
|
||||
}));
|
||||
const color = toRef(() => {
|
||||
return props.error || props.disabled ? void 0 : props.focused ? props.color : props.baseColor;
|
||||
});
|
||||
const iconColor = toRef(() => {
|
||||
if (!props.iconColor) return void 0;
|
||||
return props.iconColor === true ? color.value : props.iconColor;
|
||||
});
|
||||
useRender(() => {
|
||||
const hasPrepend = !!(slots.prepend || props.prependIcon);
|
||||
const hasAppend = !!(slots.append || props.appendIcon);
|
||||
return createBaseVNode("div", {
|
||||
"class": normalizeClass([
|
||||
"v-input",
|
||||
`v-input--${props.direction}`,
|
||||
{
|
||||
"v-input--center-affix": props.centerAffix,
|
||||
"v-input--focused": props.focused,
|
||||
"v-input--glow": props.glow,
|
||||
"v-input--hide-spin-buttons": props.hideSpinButtons,
|
||||
"v-input--indent-details": props.indentDetails
|
||||
},
|
||||
densityClasses.value,
|
||||
themeClasses.value,
|
||||
rtlClasses.value,
|
||||
validationClasses.value,
|
||||
props.class
|
||||
]),
|
||||
"style": normalizeStyle([dimensionStyles.value, props.style])
|
||||
}, [
|
||||
hasPrepend && createBaseVNode("div", {
|
||||
"key": "prepend",
|
||||
"class": "v-input__prepend"
|
||||
}, [slots.prepend ? slots.prepend(slotProps.value) : props.prependIcon && createVNode(InputIcon, {
|
||||
"key": "prepend-icon",
|
||||
"name": "prepend",
|
||||
"color": iconColor.value
|
||||
}, null)]),
|
||||
slots.default && createBaseVNode("div", { "class": "v-input__control" }, [slots.default?.(slotProps.value)]),
|
||||
hasAppend && createBaseVNode("div", {
|
||||
"key": "append",
|
||||
"class": "v-input__append"
|
||||
}, [slots.append ? slots.append(slotProps.value) : props.appendIcon && createVNode(InputIcon, {
|
||||
"key": "append-icon",
|
||||
"name": "append",
|
||||
"color": iconColor.value
|
||||
}, null)]),
|
||||
hasDetails.value && createBaseVNode("div", {
|
||||
"id": messagesId.value,
|
||||
"class": "v-input__details",
|
||||
"role": "alert",
|
||||
"aria-live": "polite"
|
||||
}, [createVNode(VMessages, {
|
||||
"active": hasMessages.value,
|
||||
"messages": messages.value
|
||||
}, { message: slots.message }), slots.details?.(slotProps.value)])
|
||||
]);
|
||||
});
|
||||
return {
|
||||
reset,
|
||||
resetValidation,
|
||||
validate,
|
||||
isValid,
|
||||
errorMessages
|
||||
};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
export { useFocus as a, makeVSelectionControlProps as c, makeFocusProps as i, VLabel as l, makeVInputProps as n, useInputIcon as o, useForm as r, VSelectionControl as s, VInput as t };
|
||||
|
||||
//# sourceMappingURL=VInput-BxI8SL-_.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+1677
File diff suppressed because it is too large
Load Diff
+1
File diff suppressed because one or more lines are too long
+140
@@ -0,0 +1,140 @@
|
||||
import { Dt as mergeProps, Kn as ref, Nt as onDeactivated, Qn as toRef, U as computed, Ut as provide, Yn as shallowRef, cn as useId, et as createVNode, gn as watch, jt as onBeforeUnmount, xt as inject } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { D as focusChild, F as isClickInsideElement, H as omit, O as focusableChildren, k as getNextElement, l as propsFactory, n as genericComponent } from "./defineComponent-DB6xIcDy.js";
|
||||
import { o as VDialogTransition } from "./transitions-DCQ3sjjZ.js";
|
||||
import { n as makeVOverlayProps, r as VMenuSymbol, t as VOverlay } from "./VOverlay-BS8OrX3g.js";
|
||||
import { t as useRender } from "./useRender-fVtVsZgv.js";
|
||||
import { t as useProxiedModel } from "./proxiedModel-DSlSIQ0y.js";
|
||||
import { i as useRtl } from "./locale-DDGMqzqb.js";
|
||||
import { t as VDefaultsProvider } from "./VDefaultsProvider-C09t4-My.js";
|
||||
import { t as useScopeId } from "./scopeId-CyMkmyzM.js";
|
||||
import { t as forwardRefs } from "./forwardRefs-CW3d8km7.js";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VMenu/VMenu.css";
|
||||
//#region node_modules/vuetify/lib/components/VMenu/VMenu.js
|
||||
var makeVMenuProps = propsFactory({
|
||||
id: String,
|
||||
submenu: Boolean,
|
||||
...omit(makeVOverlayProps({
|
||||
captureFocus: true,
|
||||
closeDelay: 250,
|
||||
closeOnContentClick: true,
|
||||
locationStrategy: "connected",
|
||||
location: void 0,
|
||||
openDelay: 300,
|
||||
scrim: false,
|
||||
scrollStrategy: "reposition",
|
||||
transition: { component: VDialogTransition }
|
||||
}), ["absolute"])
|
||||
}, "VMenu");
|
||||
var VMenu = genericComponent()({
|
||||
name: "VMenu",
|
||||
props: makeVMenuProps(),
|
||||
emits: { "update:modelValue": (value) => true },
|
||||
setup(props, { slots }) {
|
||||
const isActive = useProxiedModel(props, "modelValue");
|
||||
const { scopeId } = useScopeId();
|
||||
const { isRtl } = useRtl();
|
||||
const uid = useId();
|
||||
const id = toRef(() => props.id || `v-menu-${uid}`);
|
||||
const overlay = ref();
|
||||
const parent = inject(VMenuSymbol, null);
|
||||
const openChildren = shallowRef(/* @__PURE__ */ new Set());
|
||||
provide(VMenuSymbol, {
|
||||
register() {
|
||||
openChildren.value.add(uid);
|
||||
},
|
||||
unregister() {
|
||||
openChildren.value.delete(uid);
|
||||
},
|
||||
closeParents(e) {
|
||||
setTimeout(() => {
|
||||
if (!openChildren.value.size && !props.persistent && (e == null || overlay.value?.contentEl && !isClickInsideElement(e, overlay.value.contentEl))) {
|
||||
isActive.value = false;
|
||||
parent?.closeParents();
|
||||
}
|
||||
}, 40);
|
||||
}
|
||||
});
|
||||
onBeforeUnmount(() => parent?.unregister());
|
||||
onDeactivated(() => isActive.value = false);
|
||||
watch(isActive, (val) => {
|
||||
val ? parent?.register() : parent?.unregister();
|
||||
}, { immediate: true });
|
||||
function onClickOutside(e) {
|
||||
parent?.closeParents(e);
|
||||
}
|
||||
function onKeydown(e) {
|
||||
if (props.disabled) return;
|
||||
if (e.key === "Tab" || e.key === "Enter" && !props.closeOnContentClick) {
|
||||
if (e.key === "Enter" && (e.target instanceof HTMLTextAreaElement || e.target instanceof HTMLInputElement && !!e.target.closest("form"))) return;
|
||||
if (e.key === "Enter") e.preventDefault();
|
||||
if (!getNextElement(focusableChildren(overlay.value?.contentEl, false), e.shiftKey ? "prev" : "next", (el) => el.tabIndex >= 0) && !props.retainFocus) {
|
||||
isActive.value = false;
|
||||
overlay.value?.activatorEl?.focus();
|
||||
}
|
||||
} else if (props.submenu && e.key === (isRtl.value ? "ArrowRight" : "ArrowLeft")) {
|
||||
isActive.value = false;
|
||||
overlay.value?.activatorEl?.focus();
|
||||
}
|
||||
}
|
||||
function onActivatorKeydown(e) {
|
||||
if (props.disabled) return;
|
||||
const el = overlay.value?.contentEl;
|
||||
if (el && isActive.value) {
|
||||
if (e.key === "ArrowDown") {
|
||||
e.preventDefault();
|
||||
e.stopImmediatePropagation();
|
||||
focusChild(el, "next");
|
||||
} else if (e.key === "ArrowUp") {
|
||||
e.preventDefault();
|
||||
e.stopImmediatePropagation();
|
||||
focusChild(el, "prev");
|
||||
} else if (props.submenu) {
|
||||
if (e.key === (isRtl.value ? "ArrowRight" : "ArrowLeft")) isActive.value = false;
|
||||
else if (e.key === (isRtl.value ? "ArrowLeft" : "ArrowRight")) {
|
||||
e.preventDefault();
|
||||
focusChild(el, "first");
|
||||
}
|
||||
}
|
||||
} else if (props.submenu ? e.key === (isRtl.value ? "ArrowLeft" : "ArrowRight") : ["ArrowDown", "ArrowUp"].includes(e.key)) {
|
||||
isActive.value = true;
|
||||
e.preventDefault();
|
||||
setTimeout(() => setTimeout(() => onActivatorKeydown(e)));
|
||||
}
|
||||
}
|
||||
const activatorProps = computed(() => mergeProps({
|
||||
"aria-haspopup": "menu",
|
||||
"aria-expanded": String(isActive.value),
|
||||
"aria-controls": id.value,
|
||||
"aria-owns": id.value,
|
||||
onKeydown: onActivatorKeydown
|
||||
}, props.activatorProps));
|
||||
useRender(() => {
|
||||
const overlayProps = VOverlay.filterProps(props);
|
||||
return createVNode(VOverlay, mergeProps({
|
||||
"ref": overlay,
|
||||
"id": id.value,
|
||||
"class": ["v-menu", props.class],
|
||||
"style": props.style
|
||||
}, overlayProps, {
|
||||
"modelValue": isActive.value,
|
||||
"onUpdate:modelValue": ($event) => isActive.value = $event,
|
||||
"absolute": true,
|
||||
"activatorProps": activatorProps.value,
|
||||
"location": props.location ?? (props.submenu ? "end" : "bottom"),
|
||||
"onClick:outside": onClickOutside,
|
||||
"onKeydown": onKeydown
|
||||
}, scopeId), {
|
||||
activator: slots.activator,
|
||||
default: (...args) => createVNode(VDefaultsProvider, { "root": "VMenu" }, { default: () => [slots.default?.(...args)] })
|
||||
});
|
||||
});
|
||||
return forwardRefs({
|
||||
id,
|
||||
ΨopenChildren: openChildren
|
||||
}, overlay);
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
export { VMenu as t };
|
||||
|
||||
//# sourceMappingURL=VMenu-DCQFp-2Y.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+1203
File diff suppressed because it is too large
Load Diff
+1
File diff suppressed because one or more lines are too long
+149
@@ -0,0 +1,149 @@
|
||||
import { Ft as onMounted, Kn as ref, Qn as toRef, U as computed, W as createBaseVNode, Yn as shallowRef, _n as watchEffect, ar as normalizeClass, et as createVNode, sr as normalizeStyle } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { $ as PREFERS_REDUCED_MOTION, _ as convertToUnit, g as clamp, l as propsFactory, n as genericComponent } from "./defineComponent-DB6xIcDy.js";
|
||||
import { t as makeComponentProps } from "./component-DdiwBe6i.js";
|
||||
import { t as useRender } from "./useRender-fVtVsZgv.js";
|
||||
import { r as useTextColor } from "./color-B6vuQruj.js";
|
||||
import { i as provideTheme, r as makeThemeProps } from "./theme-Cx5kFg0-.js";
|
||||
import { t as useResizeObserver } from "./resizeObserver-C12jWpYk.js";
|
||||
import { t as makeTagProps } from "./tag-C_KkCPzB.js";
|
||||
import { n as makeSizeProps, r as useSize } from "./VIcon-1CJH_3Uo.js";
|
||||
import { i as useIntersectionObserver } from "./loader-CV4sMFhE.js";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VProgressCircular/VProgressCircular.css";
|
||||
//#region node_modules/vuetify/lib/composables/reveal.js
|
||||
var makeRevealProps = propsFactory({ reveal: {
|
||||
type: [Boolean, Object],
|
||||
default: false
|
||||
} }, "reveal");
|
||||
function useReveal(props) {
|
||||
const defaultDuration = 900;
|
||||
const duration = toRef(() => typeof props.reveal === "object" ? Math.max(0, Number(props.reveal.duration ?? defaultDuration)) : defaultDuration);
|
||||
const state = shallowRef(props.reveal ? "initial" : "disabled");
|
||||
onMounted(async () => {
|
||||
if (props.reveal) {
|
||||
state.value = "initial";
|
||||
await new Promise((resolve) => requestAnimationFrame(resolve));
|
||||
state.value = "pending";
|
||||
await new Promise((resolve) => setTimeout(resolve, duration.value));
|
||||
state.value = "done";
|
||||
}
|
||||
});
|
||||
return {
|
||||
duration,
|
||||
state
|
||||
};
|
||||
}
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/components/VProgressCircular/VProgressCircular.js
|
||||
var makeVProgressCircularProps = propsFactory({
|
||||
bgColor: String,
|
||||
color: String,
|
||||
indeterminate: [Boolean, String],
|
||||
rounded: Boolean,
|
||||
modelValue: {
|
||||
type: [Number, String],
|
||||
default: 0
|
||||
},
|
||||
rotate: {
|
||||
type: [Number, String],
|
||||
default: 0
|
||||
},
|
||||
width: {
|
||||
type: [Number, String],
|
||||
default: 4
|
||||
},
|
||||
...makeComponentProps(),
|
||||
...makeRevealProps(),
|
||||
...makeSizeProps(),
|
||||
...makeTagProps({ tag: "div" }),
|
||||
...makeThemeProps()
|
||||
}, "VProgressCircular");
|
||||
var VProgressCircular = genericComponent()({
|
||||
name: "VProgressCircular",
|
||||
props: makeVProgressCircularProps(),
|
||||
setup(props, { slots }) {
|
||||
const MAGIC_RADIUS_CONSTANT = 20;
|
||||
const CIRCUMFERENCE = 2 * Math.PI * MAGIC_RADIUS_CONSTANT;
|
||||
const root = ref();
|
||||
const { themeClasses } = provideTheme(props);
|
||||
const { sizeClasses, sizeStyles } = useSize(props);
|
||||
const { textColorClasses, textColorStyles } = useTextColor(() => props.color);
|
||||
const { textColorClasses: underlayColorClasses, textColorStyles: underlayColorStyles } = useTextColor(() => props.bgColor);
|
||||
const { intersectionRef, isIntersecting } = useIntersectionObserver();
|
||||
const { resizeRef, contentRect } = useResizeObserver();
|
||||
const { state: revealState, duration: revealDuration } = useReveal(props);
|
||||
const normalizedValue = toRef(() => revealState.value === "initial" ? 0 : clamp(parseFloat(props.modelValue), 0, 100));
|
||||
const width = toRef(() => Number(props.width));
|
||||
const size = toRef(() => {
|
||||
return sizeStyles.value ? Number(props.size) : contentRect.value ? contentRect.value.width : Math.max(width.value, 32);
|
||||
});
|
||||
const diameter = toRef(() => MAGIC_RADIUS_CONSTANT / (1 - width.value / size.value) * 2);
|
||||
const strokeWidth = toRef(() => width.value / size.value * diameter.value);
|
||||
const strokeDashOffset = toRef(() => {
|
||||
const baseLength = (100 - normalizedValue.value) / 100 * CIRCUMFERENCE;
|
||||
return props.rounded && normalizedValue.value > 0 && normalizedValue.value < 100 ? convertToUnit(Math.min(CIRCUMFERENCE - .01, baseLength + strokeWidth.value)) : convertToUnit(baseLength);
|
||||
});
|
||||
const startAngle = computed(() => {
|
||||
const baseAngle = Number(props.rotate);
|
||||
return props.rounded ? baseAngle + strokeWidth.value / 2 / CIRCUMFERENCE * 360 : baseAngle;
|
||||
});
|
||||
watchEffect(() => {
|
||||
intersectionRef.value = root.value;
|
||||
resizeRef.value = root.value;
|
||||
});
|
||||
useRender(() => createVNode(props.tag, {
|
||||
"ref": root,
|
||||
"class": normalizeClass([
|
||||
"v-progress-circular",
|
||||
{
|
||||
"v-progress-circular--indeterminate": !!props.indeterminate,
|
||||
"v-progress-circular--visible": isIntersecting.value,
|
||||
"v-progress-circular--disable-shrink": props.indeterminate && (props.indeterminate === "disable-shrink" || PREFERS_REDUCED_MOTION()),
|
||||
"v-progress-circular--revealing": ["initial", "pending"].includes(revealState.value)
|
||||
},
|
||||
themeClasses.value,
|
||||
sizeClasses.value,
|
||||
textColorClasses.value,
|
||||
props.class
|
||||
]),
|
||||
"style": normalizeStyle([
|
||||
sizeStyles.value,
|
||||
textColorStyles.value,
|
||||
{ "--progress-reveal-duration": `${revealDuration.value}ms` },
|
||||
props.style
|
||||
]),
|
||||
"role": "progressbar",
|
||||
"aria-valuemin": "0",
|
||||
"aria-valuemax": "100",
|
||||
"aria-valuenow": props.indeterminate ? void 0 : normalizedValue.value
|
||||
}, { default: () => [createBaseVNode("svg", {
|
||||
"style": { transform: `rotate(calc(-90deg + ${startAngle.value}deg))` },
|
||||
"xmlns": "http://www.w3.org/2000/svg",
|
||||
"viewBox": `0 0 ${diameter.value} ${diameter.value}`
|
||||
}, [createBaseVNode("circle", {
|
||||
"class": normalizeClass(["v-progress-circular__underlay", underlayColorClasses.value]),
|
||||
"style": normalizeStyle(underlayColorStyles.value),
|
||||
"fill": "transparent",
|
||||
"cx": "50%",
|
||||
"cy": "50%",
|
||||
"r": MAGIC_RADIUS_CONSTANT,
|
||||
"stroke-width": strokeWidth.value,
|
||||
"stroke-dasharray": CIRCUMFERENCE,
|
||||
"stroke-dashoffset": 0
|
||||
}, null), createBaseVNode("circle", {
|
||||
"class": "v-progress-circular__overlay",
|
||||
"fill": "transparent",
|
||||
"cx": "50%",
|
||||
"cy": "50%",
|
||||
"r": MAGIC_RADIUS_CONSTANT,
|
||||
"stroke-width": strokeWidth.value,
|
||||
"stroke-dasharray": CIRCUMFERENCE,
|
||||
"stroke-dashoffset": strokeDashOffset.value,
|
||||
"stroke-linecap": props.rounded ? "round" : void 0
|
||||
}, null)]), slots.default && createBaseVNode("div", { "class": "v-progress-circular__content" }, [slots.default({ value: normalizedValue.value })])] }));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
export { VProgressCircular as t };
|
||||
|
||||
//# sourceMappingURL=VProgressCircular-yKv2qs75.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+64
@@ -0,0 +1,64 @@
|
||||
import { ar as normalizeClass, et as createVNode, sr as normalizeStyle } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { l as propsFactory, n as genericComponent } from "./defineComponent-DB6xIcDy.js";
|
||||
import { t as makeComponentProps } from "./component-DdiwBe6i.js";
|
||||
import { t as useRender } from "./useRender-fVtVsZgv.js";
|
||||
import { t as useBackgroundColor } from "./color-B6vuQruj.js";
|
||||
import { i as provideTheme, r as makeThemeProps } from "./theme-Cx5kFg0-.js";
|
||||
import { t as makeTagProps } from "./tag-C_KkCPzB.js";
|
||||
import { n as useDimension, t as makeDimensionProps } from "./dimensions-BDdmuRdK.js";
|
||||
import { n as useRounded, t as makeRoundedProps } from "./rounded-BuPGKRa9.js";
|
||||
import { n as useBorder, t as makeBorderProps } from "./border-jCmRyoxP.js";
|
||||
import { n as useElevation, t as makeElevationProps } from "./elevation-B0TH2wU6.js";
|
||||
import { n as useLocation, t as makeLocationProps } from "./location-BIKTnDF4.js";
|
||||
import { n as usePosition, t as makePositionProps } from "./position-BCUsnxVO.js";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VSheet/VSheet.css";
|
||||
//#region node_modules/vuetify/lib/components/VSheet/VSheet.js
|
||||
var makeVSheetProps = propsFactory({
|
||||
color: String,
|
||||
...makeBorderProps(),
|
||||
...makeComponentProps(),
|
||||
...makeDimensionProps(),
|
||||
...makeElevationProps(),
|
||||
...makeLocationProps(),
|
||||
...makePositionProps(),
|
||||
...makeRoundedProps(),
|
||||
...makeTagProps(),
|
||||
...makeThemeProps()
|
||||
}, "VSheet");
|
||||
var VSheet = genericComponent()({
|
||||
name: "VSheet",
|
||||
props: makeVSheetProps(),
|
||||
setup(props, { slots }) {
|
||||
const { themeClasses } = provideTheme(props);
|
||||
const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => props.color);
|
||||
const { borderClasses } = useBorder(props);
|
||||
const { dimensionStyles } = useDimension(props);
|
||||
const { elevationClasses } = useElevation(props);
|
||||
const { locationStyles } = useLocation(props);
|
||||
const { positionClasses } = usePosition(props);
|
||||
const { roundedClasses } = useRounded(props);
|
||||
useRender(() => createVNode(props.tag, {
|
||||
"class": normalizeClass([
|
||||
"v-sheet",
|
||||
themeClasses.value,
|
||||
backgroundColorClasses.value,
|
||||
borderClasses.value,
|
||||
elevationClasses.value,
|
||||
positionClasses.value,
|
||||
roundedClasses.value,
|
||||
props.class
|
||||
]),
|
||||
"style": normalizeStyle([
|
||||
backgroundColorStyles.value,
|
||||
dimensionStyles.value,
|
||||
locationStyles.value,
|
||||
props.style
|
||||
])
|
||||
}, slots));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
export { VSheet as t };
|
||||
|
||||
//# sourceMappingURL=VSheet-CLHX3uIJ.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"VSheet-CLHX3uIJ.js","names":["_createVNode","_normalizeClass","_normalizeStyle"],"sources":["../../vuetify/lib/components/VSheet/VSheet.js"],"sourcesContent":["import { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VSheet.css\";\n\n// Composables\nimport { makeBorderProps, useBorder } from \"../../composables/border.js\";\nimport { useBackgroundColor } from \"../../composables/color.js\";\nimport { makeComponentProps } from \"../../composables/component.js\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.js\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.js\";\nimport { makeLocationProps, useLocation } from \"../../composables/location.js\";\nimport { makePositionProps, usePosition } from \"../../composables/position.js\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.js\";\nimport { makeTagProps } from \"../../composables/tag.js\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.js\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.js\";\nexport const makeVSheetProps = propsFactory({\n color: String,\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VSheet');\nexport const VSheet = genericComponent()({\n name: 'VSheet',\n props: makeVSheetProps(),\n setup(props, {\n slots\n }) {\n const {\n themeClasses\n } = provideTheme(props);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(() => props.color);\n const {\n borderClasses\n } = useBorder(props);\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n locationStyles\n } = useLocation(props);\n const {\n positionClasses\n } = usePosition(props);\n const {\n roundedClasses\n } = useRounded(props);\n useRender(() => _createVNode(props.tag, {\n \"class\": _normalizeClass(['v-sheet', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, props.class]),\n \"style\": _normalizeStyle([backgroundColorStyles.value, dimensionStyles.value, locationStyles.value, props.style])\n }, slots));\n return {};\n }\n});\n//# sourceMappingURL=VSheet.js.map"],"mappings":";;;;;;;;;;;;;;;AAgBA,IAAa,kBAAkB,aAAa;CAC1C,OAAO;CACP,GAAG,iBAAiB;CACpB,GAAG,oBAAoB;CACvB,GAAG,oBAAoB;CACvB,GAAG,oBAAoB;CACvB,GAAG,mBAAmB;CACtB,GAAG,mBAAmB;CACtB,GAAG,kBAAkB;CACrB,GAAG,cAAc;CACjB,GAAG,gBAAgB;CACpB,EAAE,SAAS;AACZ,IAAa,SAAS,kBAAkB,CAAC;CACvC,MAAM;CACN,OAAO,iBAAiB;CACxB,MAAM,OAAO,EACX,SACC;EACD,MAAM,EACJ,iBACE,aAAa,MAAM;EACvB,MAAM,EACJ,wBACA,0BACE,yBAAyB,MAAM,MAAM;EACzC,MAAM,EACJ,kBACE,UAAU,MAAM;EACpB,MAAM,EACJ,oBACE,aAAa,MAAM;EACvB,MAAM,EACJ,qBACE,aAAa,MAAM;EACvB,MAAM,EACJ,mBACE,YAAY,MAAM;EACtB,MAAM,EACJ,oBACE,YAAY,MAAM;EACtB,MAAM,EACJ,mBACE,WAAW,MAAM;AACrB,kBAAgBA,YAAa,MAAM,KAAK;GACtC,SAASC,eAAgB;IAAC;IAAW,aAAa;IAAO,uBAAuB;IAAO,cAAc;IAAO,iBAAiB;IAAO,gBAAgB;IAAO,eAAe;IAAO,MAAM;IAAM,CAAC;GAC9L,SAASC,eAAgB;IAAC,sBAAsB;IAAO,gBAAgB;IAAO,eAAe;IAAO,MAAM;IAAM,CAAC;GAClH,EAAE,MAAM,CAAC;AACV,SAAO,EAAE;;CAEZ,CAAC"}
|
||||
+320
@@ -0,0 +1,320 @@
|
||||
import { U as computed, W as createBaseVNode, Yn as shallowRef, ar as normalizeClass, et as createVNode, gn as watch, sr as normalizeStyle } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { O as focusableChildren, Q as IN_BROWSER, l as propsFactory, n as genericComponent } from "./defineComponent-DB6xIcDy.js";
|
||||
import { r as VFadeTransition } from "./transitions-DCQ3sjjZ.js";
|
||||
import { t as makeComponentProps } from "./component-DdiwBe6i.js";
|
||||
import { t as useRender } from "./useRender-fVtVsZgv.js";
|
||||
import { n as IconValue } from "./icons-k2ZLE_i8.js";
|
||||
import { i as useRtl } from "./locale-DDGMqzqb.js";
|
||||
import { a as useDisplay, i as makeDisplayProps } from "./display-DKaCj-_K.js";
|
||||
import { r as useGoTo } from "./goto-Bn-PzNUr.js";
|
||||
import { t as useResizeObserver } from "./resizeObserver-C12jWpYk.js";
|
||||
import { t as makeTagProps } from "./tag-C_KkCPzB.js";
|
||||
import { n as makeGroupProps, r as useGroup } from "./group-Cm2viEWK.js";
|
||||
import { t as VIcon } from "./VIcon-1CJH_3Uo.js";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VSlideGroup/VSlideGroup.css";
|
||||
//#region node_modules/vuetify/lib/components/VSlideGroup/helpers.js
|
||||
function calculateUpdatedTarget({ selectedElement, containerElement, isRtl, isHorizontal }) {
|
||||
const containerSize = getOffsetSize(isHorizontal, containerElement);
|
||||
const scrollPosition = getScrollPosition(isHorizontal, isRtl, containerElement);
|
||||
const childrenSize = getOffsetSize(isHorizontal, selectedElement);
|
||||
const childrenStartPosition = getOffsetPosition(isHorizontal, selectedElement);
|
||||
const additionalOffset = childrenSize * .4;
|
||||
if (scrollPosition > childrenStartPosition) return childrenStartPosition - additionalOffset;
|
||||
else if (scrollPosition + containerSize < childrenStartPosition + childrenSize) return childrenStartPosition - containerSize + childrenSize + additionalOffset;
|
||||
return scrollPosition;
|
||||
}
|
||||
function calculateCenteredTarget({ selectedElement, containerElement, isHorizontal }) {
|
||||
const containerOffsetSize = getOffsetSize(isHorizontal, containerElement);
|
||||
const childrenOffsetPosition = getOffsetPosition(isHorizontal, selectedElement);
|
||||
const childrenOffsetSize = getOffsetSize(isHorizontal, selectedElement);
|
||||
return childrenOffsetPosition - containerOffsetSize / 2 + childrenOffsetSize / 2;
|
||||
}
|
||||
function getScrollSize(isHorizontal, element) {
|
||||
return element?.[isHorizontal ? "scrollWidth" : "scrollHeight"] || 0;
|
||||
}
|
||||
function getScrollPosition(isHorizontal, rtl, element) {
|
||||
if (!element) return 0;
|
||||
const { scrollLeft, offsetWidth, scrollWidth } = element;
|
||||
if (isHorizontal) return rtl ? scrollWidth - offsetWidth + scrollLeft : scrollLeft;
|
||||
return element.scrollTop;
|
||||
}
|
||||
function getOffsetSize(isHorizontal, element) {
|
||||
return element?.[isHorizontal ? "offsetWidth" : "offsetHeight"] || 0;
|
||||
}
|
||||
function getOffsetPosition(isHorizontal, element) {
|
||||
return element?.[isHorizontal ? "offsetLeft" : "offsetTop"] || 0;
|
||||
}
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/components/VSlideGroup/VSlideGroup.js
|
||||
var VSlideGroupSymbol = Symbol.for("vuetify:v-slide-group");
|
||||
var makeVSlideGroupProps = propsFactory({
|
||||
centerActive: Boolean,
|
||||
scrollToActive: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
contentClass: null,
|
||||
direction: {
|
||||
type: String,
|
||||
default: "horizontal"
|
||||
},
|
||||
symbol: {
|
||||
type: null,
|
||||
default: VSlideGroupSymbol
|
||||
},
|
||||
nextIcon: {
|
||||
type: IconValue,
|
||||
default: "$next"
|
||||
},
|
||||
prevIcon: {
|
||||
type: IconValue,
|
||||
default: "$prev"
|
||||
},
|
||||
showArrows: {
|
||||
type: [Boolean, String],
|
||||
validator: (v) => typeof v === "boolean" || [
|
||||
"always",
|
||||
"desktop",
|
||||
"mobile",
|
||||
"never"
|
||||
].includes(v)
|
||||
},
|
||||
...makeComponentProps(),
|
||||
...makeDisplayProps({ mobile: null }),
|
||||
...makeTagProps(),
|
||||
...makeGroupProps({ selectedClass: "v-slide-group-item--active" })
|
||||
}, "VSlideGroup");
|
||||
var VSlideGroup = genericComponent()({
|
||||
name: "VSlideGroup",
|
||||
props: makeVSlideGroupProps(),
|
||||
emits: { "update:modelValue": (value) => true },
|
||||
setup(props, { slots }) {
|
||||
const { isRtl } = useRtl();
|
||||
const { displayClasses, mobile } = useDisplay(props);
|
||||
const group = useGroup(props, props.symbol);
|
||||
const isOverflowing = shallowRef(false);
|
||||
const scrollOffset = shallowRef(0);
|
||||
const containerSize = shallowRef(0);
|
||||
const contentSize = shallowRef(0);
|
||||
const isHorizontal = computed(() => props.direction === "horizontal");
|
||||
const { resizeRef: containerRef, contentRect: containerRect } = useResizeObserver();
|
||||
const { resizeRef: contentRef, contentRect } = useResizeObserver();
|
||||
const goTo = useGoTo();
|
||||
const goToOptions = computed(() => {
|
||||
return {
|
||||
container: containerRef.el,
|
||||
duration: 200,
|
||||
easing: "easeOutQuart"
|
||||
};
|
||||
});
|
||||
const firstSelectedIndex = computed(() => {
|
||||
if (!group.selected.value.length) return -1;
|
||||
return group.items.value.findIndex((item) => item.id === group.selected.value[0]);
|
||||
});
|
||||
const lastSelectedIndex = computed(() => {
|
||||
if (!group.selected.value.length) return -1;
|
||||
return group.items.value.findIndex((item) => item.id === group.selected.value[group.selected.value.length - 1]);
|
||||
});
|
||||
if (IN_BROWSER) {
|
||||
let frame = -1;
|
||||
watch(() => [
|
||||
group.selected.value,
|
||||
containerRect.value,
|
||||
contentRect.value,
|
||||
isHorizontal.value
|
||||
], () => {
|
||||
cancelAnimationFrame(frame);
|
||||
frame = requestAnimationFrame(() => {
|
||||
if (containerRect.value && contentRect.value) {
|
||||
const sizeProperty = isHorizontal.value ? "width" : "height";
|
||||
containerSize.value = containerRect.value[sizeProperty];
|
||||
contentSize.value = contentRect.value[sizeProperty];
|
||||
isOverflowing.value = containerSize.value + 1 < contentSize.value;
|
||||
}
|
||||
if (props.scrollToActive && firstSelectedIndex.value >= 0 && contentRef.el) {
|
||||
const selectedElement = contentRef.el.children[lastSelectedIndex.value];
|
||||
scrollToChildren(selectedElement, props.centerActive);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
const isFocused = shallowRef(false);
|
||||
function scrollToChildren(children, center) {
|
||||
let target = 0;
|
||||
if (center) target = calculateCenteredTarget({
|
||||
containerElement: containerRef.el,
|
||||
isHorizontal: isHorizontal.value,
|
||||
selectedElement: children
|
||||
});
|
||||
else target = calculateUpdatedTarget({
|
||||
containerElement: containerRef.el,
|
||||
isHorizontal: isHorizontal.value,
|
||||
isRtl: isRtl.value,
|
||||
selectedElement: children
|
||||
});
|
||||
scrollToPosition(target);
|
||||
}
|
||||
function scrollToPosition(newPosition) {
|
||||
if (!IN_BROWSER || !containerRef.el) return;
|
||||
const offsetSize = getOffsetSize(isHorizontal.value, containerRef.el);
|
||||
const scrollPosition = getScrollPosition(isHorizontal.value, isRtl.value, containerRef.el);
|
||||
if (getScrollSize(isHorizontal.value, containerRef.el) <= offsetSize || Math.abs(newPosition - scrollPosition) < 16) return;
|
||||
if (isHorizontal.value && isRtl.value && containerRef.el) {
|
||||
const { scrollWidth, offsetWidth: containerWidth } = containerRef.el;
|
||||
newPosition = scrollWidth - containerWidth - newPosition;
|
||||
}
|
||||
if (isHorizontal.value) goTo.horizontal(newPosition, goToOptions.value);
|
||||
else goTo(newPosition, goToOptions.value);
|
||||
}
|
||||
function onScroll(e) {
|
||||
const { scrollTop, scrollLeft } = e.target;
|
||||
scrollOffset.value = isHorizontal.value ? scrollLeft : scrollTop;
|
||||
}
|
||||
function onFocusin(e) {
|
||||
isFocused.value = true;
|
||||
if (!isOverflowing.value || !contentRef.el) return;
|
||||
for (const el of e.composedPath()) for (const item of contentRef.el.children) if (item === el) {
|
||||
scrollToChildren(item);
|
||||
return;
|
||||
}
|
||||
}
|
||||
function onFocusout(e) {
|
||||
isFocused.value = false;
|
||||
}
|
||||
let ignoreFocusEvent = false;
|
||||
function onFocus(e) {
|
||||
if (!ignoreFocusEvent && !isFocused.value && !(e.relatedTarget && contentRef.el?.contains(e.relatedTarget))) focus();
|
||||
ignoreFocusEvent = false;
|
||||
}
|
||||
function onFocusAffixes() {
|
||||
ignoreFocusEvent = true;
|
||||
}
|
||||
function onKeydown(e) {
|
||||
if (!contentRef.el) return;
|
||||
function toFocus(location) {
|
||||
e.preventDefault();
|
||||
focus(location);
|
||||
}
|
||||
if (isHorizontal.value) {
|
||||
if (e.key === "ArrowRight") toFocus(isRtl.value ? "prev" : "next");
|
||||
else if (e.key === "ArrowLeft") toFocus(isRtl.value ? "next" : "prev");
|
||||
} else if (e.key === "ArrowDown") toFocus("next");
|
||||
else if (e.key === "ArrowUp") toFocus("prev");
|
||||
if (e.key === "Home") toFocus("first");
|
||||
else if (e.key === "End") toFocus("last");
|
||||
}
|
||||
function getSiblingElement(el, location) {
|
||||
if (!el) return void 0;
|
||||
let sibling = el;
|
||||
do
|
||||
sibling = sibling?.[location === "next" ? "nextElementSibling" : "previousElementSibling"];
|
||||
while (sibling?.hasAttribute("disabled"));
|
||||
return sibling;
|
||||
}
|
||||
function focus(location) {
|
||||
if (!contentRef.el) return;
|
||||
let el;
|
||||
if (!location) el = focusableChildren(contentRef.el)[0];
|
||||
else if (location === "next") {
|
||||
el = getSiblingElement(contentRef.el.querySelector(":focus"), location);
|
||||
if (!el) return focus("first");
|
||||
} else if (location === "prev") {
|
||||
el = getSiblingElement(contentRef.el.querySelector(":focus"), location);
|
||||
if (!el) return focus("last");
|
||||
} else if (location === "first") {
|
||||
el = contentRef.el.firstElementChild;
|
||||
if (el?.hasAttribute("disabled")) el = getSiblingElement(el, "next");
|
||||
} else if (location === "last") {
|
||||
el = contentRef.el.lastElementChild;
|
||||
if (el?.hasAttribute("disabled")) el = getSiblingElement(el, "prev");
|
||||
}
|
||||
if (el) el.focus({ preventScroll: true });
|
||||
}
|
||||
function scrollTo(location) {
|
||||
const direction = isHorizontal.value && isRtl.value ? -1 : 1;
|
||||
const offsetStep = (location === "prev" ? -direction : direction) * containerSize.value;
|
||||
let newPosition = scrollOffset.value + offsetStep;
|
||||
if (isHorizontal.value && isRtl.value && containerRef.el) {
|
||||
const { scrollWidth, offsetWidth: containerWidth } = containerRef.el;
|
||||
newPosition += scrollWidth - containerWidth;
|
||||
}
|
||||
scrollToPosition(newPosition);
|
||||
}
|
||||
const slotProps = computed(() => ({
|
||||
next: group.next,
|
||||
prev: group.prev,
|
||||
select: group.select,
|
||||
isSelected: group.isSelected
|
||||
}));
|
||||
const hasOverflowOrScroll = computed(() => isOverflowing.value || Math.abs(scrollOffset.value) > 0);
|
||||
const hasAffixes = computed(() => {
|
||||
switch (props.showArrows) {
|
||||
case "never": return false;
|
||||
case "always": return true;
|
||||
case "desktop": return !mobile.value;
|
||||
case true: return hasOverflowOrScroll.value;
|
||||
case "mobile": return mobile.value || hasOverflowOrScroll.value;
|
||||
default: return !mobile.value && hasOverflowOrScroll.value;
|
||||
}
|
||||
});
|
||||
const hasPrev = computed(() => {
|
||||
return Math.abs(scrollOffset.value) > 1;
|
||||
});
|
||||
const hasNext = computed(() => {
|
||||
if (!hasOverflowOrScroll.value) return false;
|
||||
return contentSize.value - containerSize.value - Math.abs(scrollOffset.value) > 1;
|
||||
});
|
||||
useRender(() => createVNode(props.tag, {
|
||||
"class": normalizeClass([
|
||||
"v-slide-group",
|
||||
{
|
||||
"v-slide-group--vertical": !isHorizontal.value,
|
||||
"v-slide-group--has-affixes": hasAffixes.value,
|
||||
"v-slide-group--is-overflowing": isOverflowing.value
|
||||
},
|
||||
displayClasses.value,
|
||||
props.class
|
||||
]),
|
||||
"style": normalizeStyle(props.style),
|
||||
"tabindex": isFocused.value || group.selected.value.length ? -1 : 0,
|
||||
"onFocus": onFocus
|
||||
}, { default: () => [
|
||||
hasAffixes.value && createBaseVNode("div", {
|
||||
"key": "prev",
|
||||
"class": normalizeClass(["v-slide-group__prev", { "v-slide-group__prev--disabled": !hasPrev.value }]),
|
||||
"onMousedown": onFocusAffixes,
|
||||
"onClick": () => hasPrev.value && scrollTo("prev")
|
||||
}, [slots.prev?.(slotProps.value) ?? createVNode(VFadeTransition, null, { default: () => [createVNode(VIcon, { "icon": isRtl.value ? props.nextIcon : props.prevIcon }, null)] })]),
|
||||
createBaseVNode("div", {
|
||||
"key": "container",
|
||||
"ref": containerRef,
|
||||
"class": normalizeClass(["v-slide-group__container", props.contentClass]),
|
||||
"onScroll": onScroll
|
||||
}, [createBaseVNode("div", {
|
||||
"ref": contentRef,
|
||||
"class": "v-slide-group__content",
|
||||
"onFocusin": onFocusin,
|
||||
"onFocusout": onFocusout,
|
||||
"onKeydown": onKeydown
|
||||
}, [slots.default?.(slotProps.value)])]),
|
||||
hasAffixes.value && createBaseVNode("div", {
|
||||
"key": "next",
|
||||
"class": normalizeClass(["v-slide-group__next", { "v-slide-group__next--disabled": !hasNext.value }]),
|
||||
"onMousedown": onFocusAffixes,
|
||||
"onClick": () => hasNext.value && scrollTo("next")
|
||||
}, [slots.next?.(slotProps.value) ?? createVNode(VFadeTransition, null, { default: () => [createVNode(VIcon, { "icon": isRtl.value ? props.prevIcon : props.nextIcon }, null)] })])
|
||||
] }));
|
||||
return {
|
||||
selected: group.selected,
|
||||
scrollTo,
|
||||
scrollOffset,
|
||||
focus,
|
||||
hasPrev,
|
||||
hasNext
|
||||
};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
export { VSlideGroupSymbol as n, makeVSlideGroupProps as r, VSlideGroup as t };
|
||||
|
||||
//# sourceMappingURL=VSlideGroup-TpMGTwfd.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+170
@@ -0,0 +1,170 @@
|
||||
import { U as computed, W as createBaseVNode, Yn as shallowRef, ar as normalizeClass, et as createVNode, sr as normalizeStyle } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { _ as convertToUnit, a as provideDefaults, l as propsFactory, n as genericComponent } from "./defineComponent-DB6xIcDy.js";
|
||||
import { t as VExpandTransition } from "./transitions-DCQ3sjjZ.js";
|
||||
import { t as makeComponentProps } from "./component-DdiwBe6i.js";
|
||||
import { t as useRender } from "./useRender-fVtVsZgv.js";
|
||||
import { t as useBackgroundColor } from "./color-B6vuQruj.js";
|
||||
import { i as provideTheme, r as makeThemeProps } from "./theme-Cx5kFg0-.js";
|
||||
import { i as useRtl } from "./locale-DDGMqzqb.js";
|
||||
import { t as makeTagProps } from "./tag-C_KkCPzB.js";
|
||||
import { t as VDefaultsProvider } from "./VDefaultsProvider-C09t4-My.js";
|
||||
import { t as VImg } from "./VImg-DaEUT7gG.js";
|
||||
import { n as useRounded, t as makeRoundedProps } from "./rounded-BuPGKRa9.js";
|
||||
import { n as useBorder, t as makeBorderProps } from "./border-jCmRyoxP.js";
|
||||
import { n as useElevation, t as makeElevationProps } from "./elevation-B0TH2wU6.js";
|
||||
import { n as useLocation, t as makeLocationProps } from "./location-BIKTnDF4.js";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VToolbar/VToolbar.css";
|
||||
//#region node_modules/vuetify/lib/components/VToolbar/VToolbarTitle.js
|
||||
var makeVToolbarTitleProps = propsFactory({
|
||||
text: String,
|
||||
...makeComponentProps(),
|
||||
...makeTagProps()
|
||||
}, "VToolbarTitle");
|
||||
var VToolbarTitle = genericComponent()({
|
||||
name: "VToolbarTitle",
|
||||
props: makeVToolbarTitleProps(),
|
||||
setup(props, { slots }) {
|
||||
useRender(() => {
|
||||
const hasText = !!(slots.default || slots.text || props.text);
|
||||
return createVNode(props.tag, {
|
||||
"class": normalizeClass(["v-toolbar-title", props.class]),
|
||||
"style": normalizeStyle(props.style)
|
||||
}, { default: () => [hasText && createBaseVNode("div", { "class": "v-toolbar-title__placeholder" }, [slots.text ? slots.text() : props.text, slots.default?.()])] });
|
||||
});
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/components/VToolbar/VToolbar.js
|
||||
var allowedDensities = [
|
||||
null,
|
||||
"prominent",
|
||||
"default",
|
||||
"comfortable",
|
||||
"compact"
|
||||
];
|
||||
var makeVToolbarProps = propsFactory({
|
||||
absolute: Boolean,
|
||||
collapse: Boolean,
|
||||
collapsePosition: {
|
||||
type: String,
|
||||
default: "start"
|
||||
},
|
||||
color: String,
|
||||
density: {
|
||||
type: String,
|
||||
default: "default",
|
||||
validator: (v) => allowedDensities.includes(v)
|
||||
},
|
||||
extended: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
extensionHeight: {
|
||||
type: [Number, String],
|
||||
default: 48
|
||||
},
|
||||
flat: Boolean,
|
||||
floating: Boolean,
|
||||
height: {
|
||||
type: [Number, String],
|
||||
default: 64
|
||||
},
|
||||
image: String,
|
||||
title: String,
|
||||
...makeBorderProps(),
|
||||
...makeComponentProps(),
|
||||
...makeElevationProps(),
|
||||
...makeLocationProps(),
|
||||
...makeRoundedProps(),
|
||||
...makeTagProps({ tag: "header" }),
|
||||
...makeThemeProps()
|
||||
}, "VToolbar");
|
||||
var VToolbar = genericComponent()({
|
||||
name: "VToolbar",
|
||||
props: makeVToolbarProps(),
|
||||
setup(props, { slots }) {
|
||||
const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => props.color);
|
||||
const { borderClasses } = useBorder(props);
|
||||
const { elevationClasses } = useElevation(props);
|
||||
const { locationStyles } = useLocation(props);
|
||||
const { roundedClasses } = useRounded(props);
|
||||
const { themeClasses } = provideTheme(props);
|
||||
const { rtlClasses } = useRtl();
|
||||
const isExtended = shallowRef(props.extended === null ? !!slots.extension?.() : props.extended);
|
||||
const contentHeight = computed(() => parseInt(Number(props.height) + (props.density === "prominent" ? Number(props.height) : 0) - (props.density === "comfortable" ? 8 : 0) - (props.density === "compact" ? 16 : 0), 10));
|
||||
const extensionHeight = computed(() => isExtended.value ? parseInt(Number(props.extensionHeight) + (props.density === "prominent" ? Number(props.extensionHeight) : 0) - (props.density === "comfortable" ? 4 : 0) - (props.density === "compact" ? 8 : 0), 10) : 0);
|
||||
provideDefaults({ VBtn: { variant: "text" } });
|
||||
useRender(() => {
|
||||
const hasTitle = !!(props.title || slots.title);
|
||||
const hasImage = !!(slots.image || props.image);
|
||||
const extension = slots.extension?.();
|
||||
isExtended.value = props.extended === null ? !!extension : props.extended;
|
||||
return createVNode(props.tag, {
|
||||
"class": normalizeClass([
|
||||
"v-toolbar",
|
||||
`v-toolbar--collapse-${props.collapsePosition}`,
|
||||
{
|
||||
"v-toolbar--absolute": props.absolute,
|
||||
"v-toolbar--collapse": props.collapse,
|
||||
"v-toolbar--flat": props.flat,
|
||||
"v-toolbar--floating": props.floating,
|
||||
[`v-toolbar--density-${props.density}`]: true
|
||||
},
|
||||
backgroundColorClasses.value,
|
||||
borderClasses.value,
|
||||
elevationClasses.value,
|
||||
roundedClasses.value,
|
||||
themeClasses.value,
|
||||
rtlClasses.value,
|
||||
props.class
|
||||
]),
|
||||
"style": normalizeStyle([
|
||||
backgroundColorStyles.value,
|
||||
locationStyles.value,
|
||||
props.style
|
||||
])
|
||||
}, { default: () => [
|
||||
hasImage && createBaseVNode("div", {
|
||||
"key": "image",
|
||||
"class": "v-toolbar__image"
|
||||
}, [!slots.image ? createVNode(VImg, {
|
||||
"key": "image-img",
|
||||
"cover": true,
|
||||
"src": props.image
|
||||
}, null) : createVNode(VDefaultsProvider, {
|
||||
"key": "image-defaults",
|
||||
"disabled": !props.image,
|
||||
"defaults": { VImg: {
|
||||
cover: true,
|
||||
src: props.image
|
||||
} }
|
||||
}, slots.image)]),
|
||||
createVNode(VDefaultsProvider, { "defaults": { VTabs: { height: convertToUnit(contentHeight.value) } } }, { default: () => [createBaseVNode("div", {
|
||||
"class": "v-toolbar__content",
|
||||
"style": { height: convertToUnit(contentHeight.value) }
|
||||
}, [
|
||||
slots.prepend && createBaseVNode("div", { "class": "v-toolbar__prepend" }, [slots.prepend?.()]),
|
||||
hasTitle && createVNode(VToolbarTitle, {
|
||||
"key": "title",
|
||||
"text": props.title
|
||||
}, { text: slots.title }),
|
||||
slots.default?.(),
|
||||
slots.append && createBaseVNode("div", { "class": "v-toolbar__append" }, [slots.append?.()])
|
||||
])] }),
|
||||
createVNode(VDefaultsProvider, { "defaults": { VTabs: { height: convertToUnit(extensionHeight.value) } } }, { default: () => [createVNode(VExpandTransition, null, { default: () => [isExtended.value && createBaseVNode("div", {
|
||||
"class": "v-toolbar__extension",
|
||||
"style": { height: convertToUnit(extensionHeight.value) }
|
||||
}, [extension])] })] })
|
||||
] });
|
||||
});
|
||||
return {
|
||||
contentHeight,
|
||||
extensionHeight
|
||||
};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
export { makeVToolbarTitleProps as i, makeVToolbarProps as n, VToolbarTitle as r, VToolbar as t };
|
||||
|
||||
//# sourceMappingURL=VToolbar-XKeTy7Mr.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+370
@@ -0,0 +1,370 @@
|
||||
{
|
||||
"hash": "8e064f63",
|
||||
"configHash": "9602e671",
|
||||
"lockfileHash": "2af5d584",
|
||||
"browserHash": "42fe83ff",
|
||||
"optimized": {
|
||||
"vue-router": {
|
||||
"src": "../../vue-router/dist/vue-router.mjs",
|
||||
"file": "vue-router.js",
|
||||
"fileHash": "c505db30",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vue": {
|
||||
"src": "../../vue/dist/vue.runtime.esm-bundler.js",
|
||||
"file": "vue.js",
|
||||
"fileHash": "27ec1265",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify": {
|
||||
"src": "../../vuetify/lib/framework.js",
|
||||
"file": "vuetify.js",
|
||||
"fileHash": "f2f22051",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VApp": {
|
||||
"src": "../../vuetify/lib/components/VApp/index.js",
|
||||
"file": "vuetify_components_VApp.js",
|
||||
"fileHash": "7d5bc39c",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VAppBar": {
|
||||
"src": "../../vuetify/lib/components/VAppBar/index.js",
|
||||
"file": "vuetify_components_VAppBar.js",
|
||||
"fileHash": "52919531",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VAvatar": {
|
||||
"src": "../../vuetify/lib/components/VAvatar/index.js",
|
||||
"file": "vuetify_components_VAvatar.js",
|
||||
"fileHash": "affaa970",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VBtn": {
|
||||
"src": "../../vuetify/lib/components/VBtn/index.js",
|
||||
"file": "vuetify_components_VBtn.js",
|
||||
"fileHash": "bf1868e4",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VCard": {
|
||||
"src": "../../vuetify/lib/components/VCard/index.js",
|
||||
"file": "vuetify_components_VCard.js",
|
||||
"fileHash": "1d7888e1",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VCode": {
|
||||
"src": "../../vuetify/lib/components/VCode/index.js",
|
||||
"file": "vuetify_components_VCode.js",
|
||||
"fileHash": "3bb42ba7",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VDialog": {
|
||||
"src": "../../vuetify/lib/components/VDialog/index.js",
|
||||
"file": "vuetify_components_VDialog.js",
|
||||
"fileHash": "ab2af168",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VDivider": {
|
||||
"src": "../../vuetify/lib/components/VDivider/index.js",
|
||||
"file": "vuetify_components_VDivider.js",
|
||||
"fileHash": "94063435",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VExpansionPanel": {
|
||||
"src": "../../vuetify/lib/components/VExpansionPanel/index.js",
|
||||
"file": "vuetify_components_VExpansionPanel.js",
|
||||
"fileHash": "ec3b7564",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VGrid": {
|
||||
"src": "../../vuetify/lib/components/VGrid/index.js",
|
||||
"file": "vuetify_components_VGrid.js",
|
||||
"fileHash": "51bab3d5",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VIcon": {
|
||||
"src": "../../vuetify/lib/components/VIcon/index.js",
|
||||
"file": "vuetify_components_VIcon.js",
|
||||
"fileHash": "2b9944e9",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VImg": {
|
||||
"src": "../../vuetify/lib/components/VImg/index.js",
|
||||
"file": "vuetify_components_VImg.js",
|
||||
"fileHash": "9243aee4",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VList": {
|
||||
"src": "../../vuetify/lib/components/VList/index.js",
|
||||
"file": "vuetify_components_VList.js",
|
||||
"fileHash": "c02ef873",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VMain": {
|
||||
"src": "../../vuetify/lib/components/VMain/index.js",
|
||||
"file": "vuetify_components_VMain.js",
|
||||
"fileHash": "71aadc09",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VMenu": {
|
||||
"src": "../../vuetify/lib/components/VMenu/index.js",
|
||||
"file": "vuetify_components_VMenu.js",
|
||||
"fileHash": "d7a1339d",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VNavigationDrawer": {
|
||||
"src": "../../vuetify/lib/components/VNavigationDrawer/index.js",
|
||||
"file": "vuetify_components_VNavigationDrawer.js",
|
||||
"fileHash": "708ecbaa",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VSelect": {
|
||||
"src": "../../vuetify/lib/components/VSelect/index.js",
|
||||
"file": "vuetify_components_VSelect.js",
|
||||
"fileHash": "246963c8",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VSheet": {
|
||||
"src": "../../vuetify/lib/components/VSheet/index.js",
|
||||
"file": "vuetify_components_VSheet.js",
|
||||
"fileHash": "95c536e9",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VSwitch": {
|
||||
"src": "../../vuetify/lib/components/VSwitch/index.js",
|
||||
"file": "vuetify_components_VSwitch.js",
|
||||
"fileHash": "9703e7db",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VTabs": {
|
||||
"src": "../../vuetify/lib/components/VTabs/index.js",
|
||||
"file": "vuetify_components_VTabs.js",
|
||||
"fileHash": "3caec951",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VToolbar": {
|
||||
"src": "../../vuetify/lib/components/VToolbar/index.js",
|
||||
"file": "vuetify_components_VToolbar.js",
|
||||
"fileHash": "af8ddee1",
|
||||
"needsInterop": false
|
||||
}
|
||||
},
|
||||
"chunks": {
|
||||
"VAvatar-CA-KqvIX": {
|
||||
"file": "VAvatar-CA-KqvIX.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"VBtn-BZzD9gwE": {
|
||||
"file": "VBtn-BZzD9gwE.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"VDefaultsProvider-C09t4-My": {
|
||||
"file": "VDefaultsProvider-C09t4-My.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"VDivider-BJiijT0J": {
|
||||
"file": "VDivider-BJiijT0J.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"VIcon-1CJH_3Uo": {
|
||||
"file": "VIcon-1CJH_3Uo.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"VImg-DaEUT7gG": {
|
||||
"file": "VImg-DaEUT7gG.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"VInput-BxI8SL-_": {
|
||||
"file": "VInput-BxI8SL-_.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"VList-DkWOjB0M": {
|
||||
"file": "VList-DkWOjB0M.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"VMenu-DCQFp-2Y": {
|
||||
"file": "VMenu-DCQFp-2Y.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"VOverlay-BS8OrX3g": {
|
||||
"file": "VOverlay-BS8OrX3g.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"VProgressCircular-yKv2qs75": {
|
||||
"file": "VProgressCircular-yKv2qs75.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"VSheet-CLHX3uIJ": {
|
||||
"file": "VSheet-CLHX3uIJ.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"VSlideGroup-TpMGTwfd": {
|
||||
"file": "VSlideGroup-TpMGTwfd.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"VToolbar-XKeTy7Mr": {
|
||||
"file": "VToolbar-XKeTy7Mr.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"anchor-DB_quObT": {
|
||||
"file": "anchor-DB_quObT.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"border-jCmRyoxP": {
|
||||
"file": "border-jCmRyoxP.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"box-BNWMOtF7": {
|
||||
"file": "box-BNWMOtF7.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"color-B6vuQruj": {
|
||||
"file": "color-B6vuQruj.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"colorUtils-BE28T62U": {
|
||||
"file": "colorUtils-BE28T62U.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"component-DdiwBe6i": {
|
||||
"file": "component-DdiwBe6i.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"createSimpleFunctional-Cqw8cOWQ": {
|
||||
"file": "createSimpleFunctional-Cqw8cOWQ.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"deepEqual-DDqmGqyF": {
|
||||
"file": "deepEqual-DDqmGqyF.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"defineComponent-DB6xIcDy": {
|
||||
"file": "defineComponent-DB6xIcDy.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"density-CpKZ5PhP": {
|
||||
"file": "density-CpKZ5PhP.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"dimensions-BDdmuRdK": {
|
||||
"file": "dimensions-BDdmuRdK.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"display-DKaCj-_K": {
|
||||
"file": "display-DKaCj-_K.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"easing-DfcvkbkS": {
|
||||
"file": "easing-DfcvkbkS.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"elevation-B0TH2wU6": {
|
||||
"file": "elevation-B0TH2wU6.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"focusTrap-rHoJd0qS": {
|
||||
"file": "focusTrap-rHoJd0qS.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"forwardRefs-CW3d8km7": {
|
||||
"file": "forwardRefs-CW3d8km7.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"getScrollParent-DuXs8SPu": {
|
||||
"file": "getScrollParent-DuXs8SPu.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"goto-Bn-PzNUr": {
|
||||
"file": "goto-Bn-PzNUr.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"group-Cm2viEWK": {
|
||||
"file": "group-Cm2viEWK.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"icons-k2ZLE_i8": {
|
||||
"file": "icons-k2ZLE_i8.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"layout-C9QMoF7I": {
|
||||
"file": "layout-C9QMoF7I.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"lazy-DhsobH97": {
|
||||
"file": "lazy-DhsobH97.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"loader-CV4sMFhE": {
|
||||
"file": "loader-CV4sMFhE.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"locale-DDGMqzqb": {
|
||||
"file": "locale-DDGMqzqb.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"location-BIKTnDF4": {
|
||||
"file": "location-BIKTnDF4.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"position-BCUsnxVO": {
|
||||
"file": "position-BCUsnxVO.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"proxiedModel-DSlSIQ0y": {
|
||||
"file": "proxiedModel-DSlSIQ0y.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"resizeObserver-C12jWpYk": {
|
||||
"file": "resizeObserver-C12jWpYk.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"ripple-Z40rPDte": {
|
||||
"file": "ripple-Z40rPDte.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"rounded-BuPGKRa9": {
|
||||
"file": "rounded-BuPGKRa9.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"router-D_jP4Uwb": {
|
||||
"file": "router-D_jP4Uwb.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"scopeId-CyMkmyzM": {
|
||||
"file": "scopeId-CyMkmyzM.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"ssrBoot-CSc1_bcP": {
|
||||
"file": "ssrBoot-CSc1_bcP.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"tag-C_KkCPzB": {
|
||||
"file": "tag-C_KkCPzB.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"theme-Cx5kFg0-": {
|
||||
"file": "theme-Cx5kFg0-.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"transition-DqoZ8fA1": {
|
||||
"file": "transition-DqoZ8fA1.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"transitions-DCQ3sjjZ": {
|
||||
"file": "transitions-DCQ3sjjZ.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"useRender-fVtVsZgv": {
|
||||
"file": "useRender-fVtVsZgv.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"variant-CqXtG9Ih": {
|
||||
"file": "variant-CqXtG9Ih.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"vue.runtime.esm-bundler-BvoXUmaf": {
|
||||
"file": "vue.runtime.esm-bundler-BvoXUmaf.js",
|
||||
"isDynamicEntry": false
|
||||
}
|
||||
}
|
||||
}
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
import { P as includes } from "./defineComponent-DB6xIcDy.js";
|
||||
//#region node_modules/vuetify/lib/util/anchor.js
|
||||
var block = ["top", "bottom"];
|
||||
var inline = [
|
||||
"start",
|
||||
"end",
|
||||
"left",
|
||||
"right"
|
||||
];
|
||||
/** Parse a raw anchor string into an object */
|
||||
function parseAnchor(anchor, isRtl) {
|
||||
let [side, align] = anchor.split(" ");
|
||||
if (!align) align = includes(block, side) ? "start" : includes(inline, side) ? "top" : "center";
|
||||
return {
|
||||
side: toPhysical(side, isRtl),
|
||||
align: toPhysical(align, isRtl)
|
||||
};
|
||||
}
|
||||
function toPhysical(str, isRtl) {
|
||||
if (str === "start") return isRtl ? "right" : "left";
|
||||
if (str === "end") return isRtl ? "left" : "right";
|
||||
return str;
|
||||
}
|
||||
function flipSide(anchor) {
|
||||
return {
|
||||
side: {
|
||||
center: "center",
|
||||
top: "bottom",
|
||||
bottom: "top",
|
||||
left: "right",
|
||||
right: "left"
|
||||
}[anchor.side],
|
||||
align: anchor.align
|
||||
};
|
||||
}
|
||||
function flipAlign(anchor) {
|
||||
return {
|
||||
side: anchor.side,
|
||||
align: {
|
||||
center: "center",
|
||||
top: "bottom",
|
||||
bottom: "top",
|
||||
left: "right",
|
||||
right: "left"
|
||||
}[anchor.align]
|
||||
};
|
||||
}
|
||||
function flipCorner(anchor) {
|
||||
return {
|
||||
side: anchor.align,
|
||||
align: anchor.side
|
||||
};
|
||||
}
|
||||
function getAxis(anchor) {
|
||||
return includes(block, anchor.side) ? "y" : "x";
|
||||
}
|
||||
//#endregion
|
||||
export { parseAnchor as a, getAxis as i, flipCorner as n, toPhysical as o, flipSide as r, flipAlign as t };
|
||||
|
||||
//# sourceMappingURL=anchor-DB_quObT.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"anchor-DB_quObT.js","names":[],"sources":["../../vuetify/lib/util/anchor.js"],"sourcesContent":["// Utilities\nimport { includes } from \"./helpers.js\";\nconst block = ['top', 'bottom'];\nconst inline = ['start', 'end', 'left', 'right'];\n/** Parse a raw anchor string into an object */\nexport function parseAnchor(anchor, isRtl) {\n let [side, align] = anchor.split(' ');\n if (!align) {\n align = includes(block, side) ? 'start' : includes(inline, side) ? 'top' : 'center';\n }\n return {\n side: toPhysical(side, isRtl),\n align: toPhysical(align, isRtl)\n };\n}\nexport function toPhysical(str, isRtl) {\n if (str === 'start') return isRtl ? 'right' : 'left';\n if (str === 'end') return isRtl ? 'left' : 'right';\n return str;\n}\nexport function flipSide(anchor) {\n return {\n side: {\n center: 'center',\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n }[anchor.side],\n align: anchor.align\n };\n}\nexport function flipAlign(anchor) {\n return {\n side: anchor.side,\n align: {\n center: 'center',\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n }[anchor.align]\n };\n}\nexport function flipCorner(anchor) {\n return {\n side: anchor.align,\n align: anchor.side\n };\n}\nexport function getAxis(anchor) {\n return includes(block, anchor.side) ? 'y' : 'x';\n}\n//# sourceMappingURL=anchor.js.map"],"mappings":";;AAEA,IAAM,QAAQ,CAAC,OAAO,SAAS;AAC/B,IAAM,SAAS;CAAC;CAAS;CAAO;CAAQ;CAAQ;;AAEhD,SAAgB,YAAY,QAAQ,OAAO;CACzC,IAAI,CAAC,MAAM,SAAS,OAAO,MAAM,IAAI;AACrC,KAAI,CAAC,MACH,SAAQ,SAAS,OAAO,KAAK,GAAG,UAAU,SAAS,QAAQ,KAAK,GAAG,QAAQ;AAE7E,QAAO;EACL,MAAM,WAAW,MAAM,MAAM;EAC7B,OAAO,WAAW,OAAO,MAAM;EAChC;;AAEH,SAAgB,WAAW,KAAK,OAAO;AACrC,KAAI,QAAQ,QAAS,QAAO,QAAQ,UAAU;AAC9C,KAAI,QAAQ,MAAO,QAAO,QAAQ,SAAS;AAC3C,QAAO;;AAET,SAAgB,SAAS,QAAQ;AAC/B,QAAO;EACL,MAAM;GACJ,QAAQ;GACR,KAAK;GACL,QAAQ;GACR,MAAM;GACN,OAAO;GACR,CAAC,OAAO;EACT,OAAO,OAAO;EACf;;AAEH,SAAgB,UAAU,QAAQ;AAChC,QAAO;EACL,MAAM,OAAO;EACb,OAAO;GACL,QAAQ;GACR,KAAK;GACL,QAAQ;GACR,MAAM;GACN,OAAO;GACR,CAAC,OAAO;EACV;;AAEH,SAAgB,WAAW,QAAQ;AACjC,QAAO;EACL,MAAM,OAAO;EACb,OAAO,OAAO;EACf;;AAEH,SAAgB,QAAQ,QAAQ;AAC9B,QAAO,SAAS,OAAO,OAAO,KAAK,GAAG,MAAM"}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
import { U as computed } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { c as getCurrentInstanceName, l as propsFactory } from "./defineComponent-DB6xIcDy.js";
|
||||
//#region node_modules/vuetify/lib/composables/border.js
|
||||
var makeBorderProps = propsFactory({ border: [
|
||||
Boolean,
|
||||
Number,
|
||||
String
|
||||
] }, "border");
|
||||
function useBorder(props, name = getCurrentInstanceName()) {
|
||||
return { borderClasses: computed(() => {
|
||||
const border = props.border;
|
||||
if (border === true || border === "") return `${name}--border`;
|
||||
else if (typeof border === "string" || border === 0) return String(border).split(" ").map((v) => `border-${v}`);
|
||||
return [];
|
||||
}) };
|
||||
}
|
||||
//#endregion
|
||||
export { useBorder as n, makeBorderProps as t };
|
||||
|
||||
//# sourceMappingURL=border-jCmRyoxP.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"border-jCmRyoxP.js","names":[],"sources":["../../vuetify/lib/composables/border.js"],"sourcesContent":["// Utilities\nimport { computed } from 'vue';\nimport { getCurrentInstanceName, propsFactory } from \"../util/index.js\"; // Types\n// Composables\nexport const makeBorderProps = propsFactory({\n border: [Boolean, Number, String]\n}, 'border');\nexport function useBorder(props, name = getCurrentInstanceName()) {\n const borderClasses = computed(() => {\n const border = props.border;\n if (border === true || border === '') {\n return `${name}--border`;\n } else if (typeof border === 'string' || border === 0) {\n return String(border).split(' ').map(v => `border-${v}`);\n }\n return [];\n });\n return {\n borderClasses\n };\n}\n//# sourceMappingURL=border.js.map"],"mappings":";;;AAIA,IAAa,kBAAkB,aAAa,EAC1C,QAAQ;CAAC;CAAS;CAAQ;CAAO,EAClC,EAAE,SAAS;AACZ,SAAgB,UAAU,OAAO,OAAO,wBAAwB,EAAE;AAUhE,QAAO,EACL,eAVoB,eAAe;EACnC,MAAM,SAAS,MAAM;AACrB,MAAI,WAAW,QAAQ,WAAW,GAChC,QAAO,GAAG,KAAK;WACN,OAAO,WAAW,YAAY,WAAW,EAClD,QAAO,OAAO,OAAO,CAAC,MAAM,IAAI,CAAC,KAAI,MAAK,UAAU,IAAI;AAE1D,SAAO,EAAE;GAGI,EACd"}
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
//#region node_modules/vuetify/lib/util/box.js
|
||||
var Box = class {
|
||||
constructor(args) {
|
||||
const pageScale = document.body.currentCSSZoom ?? 1;
|
||||
const isElement = args instanceof Element;
|
||||
const factor = isElement ? 1 + (1 - pageScale) / pageScale : 1;
|
||||
const { x, y, width, height } = isElement ? args.getBoundingClientRect() : args;
|
||||
this.x = x * factor;
|
||||
this.y = y * factor;
|
||||
this.width = width * factor;
|
||||
this.height = height * factor;
|
||||
}
|
||||
get top() {
|
||||
return this.y;
|
||||
}
|
||||
get bottom() {
|
||||
return this.y + this.height;
|
||||
}
|
||||
get left() {
|
||||
return this.x;
|
||||
}
|
||||
get right() {
|
||||
return this.x + this.width;
|
||||
}
|
||||
};
|
||||
function getOverflow(a, b) {
|
||||
return {
|
||||
x: {
|
||||
before: Math.max(0, b.left - a.left),
|
||||
after: Math.max(0, a.right - b.right)
|
||||
},
|
||||
y: {
|
||||
before: Math.max(0, b.top - a.top),
|
||||
after: Math.max(0, a.bottom - b.bottom)
|
||||
}
|
||||
};
|
||||
}
|
||||
function getTargetBox(target) {
|
||||
if (Array.isArray(target)) {
|
||||
const pageScale = document.body.currentCSSZoom ?? 1;
|
||||
const factor = 1 + (1 - pageScale) / pageScale;
|
||||
return new Box({
|
||||
x: target[0] * factor,
|
||||
y: target[1] * factor,
|
||||
width: 0 * factor,
|
||||
height: 0 * factor
|
||||
});
|
||||
} else return new Box(target);
|
||||
}
|
||||
function getElementBox(el) {
|
||||
if (el === document.documentElement) if (!visualViewport) return new Box({
|
||||
x: 0,
|
||||
y: 0,
|
||||
width: document.documentElement.clientWidth,
|
||||
height: document.documentElement.clientHeight
|
||||
});
|
||||
else {
|
||||
const pageScale = document.body.currentCSSZoom ?? 1;
|
||||
return new Box({
|
||||
x: visualViewport.scale > 1 ? 0 : visualViewport.offsetLeft,
|
||||
y: visualViewport.scale > 1 ? 0 : visualViewport.offsetTop,
|
||||
width: visualViewport.width * visualViewport.scale / pageScale,
|
||||
height: visualViewport.height * visualViewport.scale / pageScale
|
||||
});
|
||||
}
|
||||
else return new Box(el);
|
||||
}
|
||||
//#endregion
|
||||
export { getTargetBox as i, getElementBox as n, getOverflow as r, Box as t };
|
||||
|
||||
//# sourceMappingURL=box-BNWMOtF7.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"box-BNWMOtF7.js","names":[],"sources":["../../vuetify/lib/util/box.js"],"sourcesContent":["export class Box {\n constructor(args) {\n const pageScale = document.body.currentCSSZoom ?? 1;\n const isElement = args instanceof Element;\n const factor = isElement ? 1 + (1 - pageScale) / pageScale : 1;\n const {\n x,\n y,\n width,\n height\n } = isElement ? args.getBoundingClientRect() : args;\n this.x = x * factor;\n this.y = y * factor;\n this.width = width * factor;\n this.height = height * factor;\n }\n get top() {\n return this.y;\n }\n get bottom() {\n return this.y + this.height;\n }\n get left() {\n return this.x;\n }\n get right() {\n return this.x + this.width;\n }\n}\nexport function getOverflow(a, b) {\n return {\n x: {\n before: Math.max(0, b.left - a.left),\n after: Math.max(0, a.right - b.right)\n },\n y: {\n before: Math.max(0, b.top - a.top),\n after: Math.max(0, a.bottom - b.bottom)\n }\n };\n}\nexport function getTargetBox(target) {\n if (Array.isArray(target)) {\n const pageScale = document.body.currentCSSZoom ?? 1;\n const factor = 1 + (1 - pageScale) / pageScale;\n return new Box({\n x: target[0] * factor,\n y: target[1] * factor,\n width: 0 * factor,\n height: 0 * factor\n });\n } else {\n return new Box(target);\n }\n}\nexport function getElementBox(el) {\n if (el === document.documentElement) {\n if (!visualViewport) {\n return new Box({\n x: 0,\n y: 0,\n width: document.documentElement.clientWidth,\n height: document.documentElement.clientHeight\n });\n } else {\n const pageScale = document.body.currentCSSZoom ?? 1;\n return new Box({\n x: visualViewport.scale > 1 ? 0 : visualViewport.offsetLeft,\n y: visualViewport.scale > 1 ? 0 : visualViewport.offsetTop,\n width: visualViewport.width * visualViewport.scale / pageScale,\n height: visualViewport.height * visualViewport.scale / pageScale\n });\n }\n } else {\n return new Box(el);\n }\n}\n//# sourceMappingURL=box.js.map"],"mappings":";AAAA,IAAa,MAAb,MAAiB;CACf,YAAY,MAAM;EAChB,MAAM,YAAY,SAAS,KAAK,kBAAkB;EAClD,MAAM,YAAY,gBAAgB;EAClC,MAAM,SAAS,YAAY,KAAK,IAAI,aAAa,YAAY;EAC7D,MAAM,EACJ,GACA,GACA,OACA,WACE,YAAY,KAAK,uBAAuB,GAAG;AAC/C,OAAK,IAAI,IAAI;AACb,OAAK,IAAI,IAAI;AACb,OAAK,QAAQ,QAAQ;AACrB,OAAK,SAAS,SAAS;;CAEzB,IAAI,MAAM;AACR,SAAO,KAAK;;CAEd,IAAI,SAAS;AACX,SAAO,KAAK,IAAI,KAAK;;CAEvB,IAAI,OAAO;AACT,SAAO,KAAK;;CAEd,IAAI,QAAQ;AACV,SAAO,KAAK,IAAI,KAAK;;;AAGzB,SAAgB,YAAY,GAAG,GAAG;AAChC,QAAO;EACL,GAAG;GACD,QAAQ,KAAK,IAAI,GAAG,EAAE,OAAO,EAAE,KAAK;GACpC,OAAO,KAAK,IAAI,GAAG,EAAE,QAAQ,EAAE,MAAM;GACtC;EACD,GAAG;GACD,QAAQ,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,IAAI;GAClC,OAAO,KAAK,IAAI,GAAG,EAAE,SAAS,EAAE,OAAO;GACxC;EACF;;AAEH,SAAgB,aAAa,QAAQ;AACnC,KAAI,MAAM,QAAQ,OAAO,EAAE;EACzB,MAAM,YAAY,SAAS,KAAK,kBAAkB;EAClD,MAAM,SAAS,KAAK,IAAI,aAAa;AACrC,SAAO,IAAI,IAAI;GACb,GAAG,OAAO,KAAK;GACf,GAAG,OAAO,KAAK;GACf,OAAO,IAAI;GACX,QAAQ,IAAI;GACb,CAAC;OAEF,QAAO,IAAI,IAAI,OAAO;;AAG1B,SAAgB,cAAc,IAAI;AAChC,KAAI,OAAO,SAAS,gBAClB,KAAI,CAAC,eACH,QAAO,IAAI,IAAI;EACb,GAAG;EACH,GAAG;EACH,OAAO,SAAS,gBAAgB;EAChC,QAAQ,SAAS,gBAAgB;EAClC,CAAC;MACG;EACL,MAAM,YAAY,SAAS,KAAK,kBAAkB;AAClD,SAAO,IAAI,IAAI;GACb,GAAG,eAAe,QAAQ,IAAI,IAAI,eAAe;GACjD,GAAG,eAAe,QAAQ,IAAI,IAAI,eAAe;GACjD,OAAO,eAAe,QAAQ,eAAe,QAAQ;GACrD,QAAQ,eAAe,SAAS,eAAe,QAAQ;GACxD,CAAC;;KAGJ,QAAO,IAAI,IAAI,GAAG"}
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
import { er as toValue } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { x as destructComputed } from "./defineComponent-DB6xIcDy.js";
|
||||
import { a as isCssColor, c as parseColor, i as hasLightForeground, o as isParsableColor } from "./colorUtils-BE28T62U.js";
|
||||
//#region node_modules/vuetify/lib/composables/color.js
|
||||
function useColor(colors) {
|
||||
return destructComputed(() => {
|
||||
const { class: colorClasses, style: colorStyles } = computeColor(colors);
|
||||
return {
|
||||
colorClasses,
|
||||
colorStyles
|
||||
};
|
||||
});
|
||||
}
|
||||
function useTextColor(color) {
|
||||
const { colorClasses: textColorClasses, colorStyles: textColorStyles } = useColor(() => ({ text: toValue(color) }));
|
||||
return {
|
||||
textColorClasses,
|
||||
textColorStyles
|
||||
};
|
||||
}
|
||||
function useBackgroundColor(color) {
|
||||
const { colorClasses: backgroundColorClasses, colorStyles: backgroundColorStyles } = useColor(() => ({ background: toValue(color) }));
|
||||
return {
|
||||
backgroundColorClasses,
|
||||
backgroundColorStyles
|
||||
};
|
||||
}
|
||||
function normalizeColors(colors) {
|
||||
return {
|
||||
text: typeof colors.text === "string" ? colors.text.replace(/^text-/, "") : colors.text,
|
||||
background: typeof colors.background === "string" ? colors.background.replace(/^bg-/, "") : colors.background
|
||||
};
|
||||
}
|
||||
function computeColor(colors) {
|
||||
const _colors = normalizeColors(toValue(colors));
|
||||
const classes = [];
|
||||
const styles = {};
|
||||
if (_colors.background) if (isCssColor(_colors.background)) {
|
||||
styles.backgroundColor = _colors.background;
|
||||
if (!_colors.text && isParsableColor(_colors.background)) {
|
||||
const backgroundColor = parseColor(_colors.background);
|
||||
if (backgroundColor.a == null || backgroundColor.a === 1) classes.push(hasLightForeground(backgroundColor) ? "v-theme-on-dark" : "v-theme-on-light");
|
||||
}
|
||||
} else classes.push(`bg-${_colors.background}`);
|
||||
if (_colors.text) if (isCssColor(_colors.text)) {
|
||||
styles.color = _colors.text;
|
||||
styles.caretColor = _colors.text;
|
||||
} else classes.push(`text-${_colors.text}`);
|
||||
return {
|
||||
class: classes,
|
||||
style: styles
|
||||
};
|
||||
}
|
||||
//#endregion
|
||||
export { useColor as n, useTextColor as r, useBackgroundColor as t };
|
||||
|
||||
//# sourceMappingURL=color-B6vuQruj.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"color-B6vuQruj.js","names":[],"sources":["../../vuetify/lib/composables/color.js"],"sourcesContent":["// Utilities\nimport { toValue } from 'vue';\nimport { destructComputed, hasLightForeground, isCssColor, isParsableColor, parseColor } from \"../util/index.js\"; // Types\n// Composables\nexport function useColor(colors) {\n return destructComputed(() => {\n const {\n class: colorClasses,\n style: colorStyles\n } = computeColor(colors);\n return {\n colorClasses,\n colorStyles\n };\n });\n}\nexport function useTextColor(color) {\n const {\n colorClasses: textColorClasses,\n colorStyles: textColorStyles\n } = useColor(() => ({\n text: toValue(color)\n }));\n return {\n textColorClasses,\n textColorStyles\n };\n}\nexport function useBackgroundColor(color) {\n const {\n colorClasses: backgroundColorClasses,\n colorStyles: backgroundColorStyles\n } = useColor(() => ({\n background: toValue(color)\n }));\n return {\n backgroundColorClasses,\n backgroundColorStyles\n };\n}\nfunction normalizeColors(colors) {\n return {\n text: typeof colors.text === 'string' ? colors.text.replace(/^text-/, '') : colors.text,\n background: typeof colors.background === 'string' ? colors.background.replace(/^bg-/, '') : colors.background\n };\n}\nexport function computeColor(colors) {\n const _colors = normalizeColors(toValue(colors));\n const classes = [];\n const styles = {};\n if (_colors.background) {\n if (isCssColor(_colors.background)) {\n styles.backgroundColor = _colors.background;\n if (!_colors.text && isParsableColor(_colors.background)) {\n const backgroundColor = parseColor(_colors.background);\n if (backgroundColor.a == null || backgroundColor.a === 1) {\n classes.push(hasLightForeground(backgroundColor) ? 'v-theme-on-dark' : 'v-theme-on-light');\n }\n }\n } else {\n classes.push(`bg-${_colors.background}`);\n }\n }\n if (_colors.text) {\n if (isCssColor(_colors.text)) {\n styles.color = _colors.text;\n styles.caretColor = _colors.text;\n } else {\n classes.push(`text-${_colors.text}`);\n }\n }\n return {\n class: classes,\n style: styles\n };\n}\n//# sourceMappingURL=color.js.map"],"mappings":";;;;AAIA,SAAgB,SAAS,QAAQ;AAC/B,QAAO,uBAAuB;EAC5B,MAAM,EACJ,OAAO,cACP,OAAO,gBACL,aAAa,OAAO;AACxB,SAAO;GACL;GACA;GACD;GACD;;AAEJ,SAAgB,aAAa,OAAO;CAClC,MAAM,EACJ,cAAc,kBACd,aAAa,oBACX,gBAAgB,EAClB,MAAM,QAAQ,MAAM,EACrB,EAAE;AACH,QAAO;EACL;EACA;EACD;;AAEH,SAAgB,mBAAmB,OAAO;CACxC,MAAM,EACJ,cAAc,wBACd,aAAa,0BACX,gBAAgB,EAClB,YAAY,QAAQ,MAAM,EAC3B,EAAE;AACH,QAAO;EACL;EACA;EACD;;AAEH,SAAS,gBAAgB,QAAQ;AAC/B,QAAO;EACL,MAAM,OAAO,OAAO,SAAS,WAAW,OAAO,KAAK,QAAQ,UAAU,GAAG,GAAG,OAAO;EACnF,YAAY,OAAO,OAAO,eAAe,WAAW,OAAO,WAAW,QAAQ,QAAQ,GAAG,GAAG,OAAO;EACpG;;AAEH,SAAgB,aAAa,QAAQ;CACnC,MAAM,UAAU,gBAAgB,QAAQ,OAAO,CAAC;CAChD,MAAM,UAAU,EAAE;CAClB,MAAM,SAAS,EAAE;AACjB,KAAI,QAAQ,WACV,KAAI,WAAW,QAAQ,WAAW,EAAE;AAClC,SAAO,kBAAkB,QAAQ;AACjC,MAAI,CAAC,QAAQ,QAAQ,gBAAgB,QAAQ,WAAW,EAAE;GACxD,MAAM,kBAAkB,WAAW,QAAQ,WAAW;AACtD,OAAI,gBAAgB,KAAK,QAAQ,gBAAgB,MAAM,EACrD,SAAQ,KAAK,mBAAmB,gBAAgB,GAAG,oBAAoB,mBAAmB;;OAI9F,SAAQ,KAAK,MAAM,QAAQ,aAAa;AAG5C,KAAI,QAAQ,KACV,KAAI,WAAW,QAAQ,KAAK,EAAE;AAC5B,SAAO,QAAQ,QAAQ;AACvB,SAAO,aAAa,QAAQ;OAE5B,SAAQ,KAAK,QAAQ,QAAQ,OAAO;AAGxC,QAAO;EACL,OAAO;EACP,OAAO;EACR"}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user