update 2025-01-14 09:22:34

This commit is contained in:
kenzok8 2025-01-14 09:22:34 +08:00
parent f6dae5254d
commit 6e82afc48b
7 changed files with 647 additions and 66 deletions

View File

@ -603,6 +603,180 @@ $razordVersion = getRazordVersion();
</div>
</div>
</div>
<div class="modal fade" id="colorModal" tabindex="-1" aria-labelledby="colorModalLabel" aria-hidden="true" data-bs-backdrop="static" data-bs-keyboard="false">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="colorModalLabel">选择主题颜色</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<form method="POST" action="theme.php" id="themeForm" enctype="multipart/form-data">
<div class="mb-3">
<label for="primaryColor" class="form-label">主色:</label>
<input type="color" class="form-control" name="primaryColor" id="primaryColor" value="#ffcc00">
</div>
<div class="mb-3">
<label for="secondaryColor" class="form-label">副色:</label>
<input type="color" class="form-control" name="secondaryColor" id="secondaryColor" value="#00ffff">
</div>
<div class="mb-3">
<label for="bodyBgColor" class="form-label">背景色:</label>
<input type="color" class="form-control" name="bodyBgColor" id="bodyBgColor" value="#087990">
</div>
<div class="mb-3">
<label for="bodyColor" class="form-label">文本颜色:</label>
<input type="color" class="form-control" name="bodyColor" id="bodyColor" value="#ffff00">
</div>
<div class="mb-3">
<label for="infoBgSubtle" class="form-label">信息背景色:</label>
<input type="color" class="form-control" name="infoBgSubtle" id="infoBgSubtle" value="#6A5ACD">
</div>
<div class="mb-3">
<label for="primaryBorderSubtle" class="form-label">主边框颜色:</label>
<input type="color" class="form-control" name="primaryBorderSubtle" id="primaryBorderSubtle" value="#87ceeb">
</div>
<div class="mb-3">
<label for="tertiaryColor" class="form-label">文本字体颜色2</label>
<input type="color" class="form-control" name="tertiaryColor" id="tertiaryColor" value="#00ff00">
</div>
<div class="mb-3">
<label for="tertiaryRgbColor" class="form-label">文本字体颜色3</label>
<input type="color" class="form-control" name="tertiaryRgbColor" id="tertiaryRgbColor" value="#1e90ff">
</div>
<div class="mb-3">
<label for="heading1Color" class="form-label">标题颜色1</label>
<input type="color" class="form-control" name="heading1Color" id="heading1Color" value="#00a2e8">
</div>
<div class="mb-3">
<label for="heading2Color" class="form-label">标题颜色2</label>
<input type="color" class="form-control" name="heading2Color" id="heading2Color" value="#00a2e8">
</div>
<div class="mb-3">
<label for="heading3Color" class="form-label">标题颜色3</label>
<input type="color" class="form-control" name="heading3Color" id="heading3Color" value="#ffcc00">
</div>
<div class="mb-3">
<label for="heading4Color" class="form-label">标题颜色4</label>
<input type="color" class="form-control" name="heading4Color" id="heading4Color" value="#ff4500">
</div>
<div class="mb-3">
<label for="heading5Color" class="form-label">标题颜色5</label>
<input type="color" class="form-control" name="heading5Color" id="heading5Color" value="#7d5fff">
</div>
<div class="mb-3">
<label for="heading6Color" class="form-label">标题颜色6</label>
<input type="color" class="form-control" name="heading6Color" id="heading6Color" value="#00ffff">
</div>
<button type="submit" class="btn btn-success">保存主题</button>
<button type="button" class="btn btn-info" id="resetButton">恢复默认值</button>
</form>
</div>
</div>
</div>
</div>
<div class="mb-3">
<h2 class="mb-4">上传背景图片</h2>
<form method="POST" action="theme.php" enctype="multipart/form-data">
<input type="file" class="form-control mb-3" name="imageFile" id="imageFile">
<button type="submit" class="btn btn-success" id="submitBtn">上传图片</button>
</form>
</div>
<h2>上传的图片文件</h2>
<table class="table table-bordered">
<thead>
<tr>
<th>文件名</th>
<th>文件大小</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<?php
$picturesDir = $_SERVER['DOCUMENT_ROOT'] . '/nekobox/assets/Pictures/';
if (is_dir($picturesDir)) {
$files = array_diff(scandir($picturesDir), array('..', '.'));
foreach ($files as $file) {
$filePath = $picturesDir . $file;
if (is_file($filePath)) {
$fileSize = filesize($filePath);
echo "<tr>
<td>$file</td>
<td>" . formatSize($fileSize) . "</td>
<td><a href='?delete=$file' class='btn btn-danger btn-sm'>删除</a></td>
</tr>";
}
}
}
?>
</tbody>
</table>
<?php
if (isset($_GET['delete'])) {
$fileToDelete = $_GET['delete'];
$filePath = $picturesDir . $fileToDelete;
if (file_exists($filePath)) {
unlink($filePath);
echo '<script>window.location.href = "settings.php";</script>';
exit;
}
}
function formatSize($size) {
if ($size >= 1073741824) {
return number_format($size / 1073741824, 2) . ' GB';
} elseif ($size >= 1048576) {
return number_format($size / 1048576, 2) . ' MB';
} elseif ($size >= 1024) {
return number_format($size / 1024, 2) . ' KB';
} else {
return $size . ' bytes';
}
}
?>
</tbody>
</table>
<script>
document.addEventListener("DOMContentLoaded", function() {
const colorInputs = document.querySelectorAll('input[type="color"]');
colorInputs.forEach(input => {
if (localStorage.getItem(input.name)) {
input.value = localStorage.getItem(input.name);
}
input.addEventListener('input', function() {
localStorage.setItem(input.name, input.value);
});
});
document.getElementById('resetButton').addEventListener('click', function() {
document.getElementById('primaryColor').value = '#ffcc00';
document.getElementById('secondaryColor').value = '#00ffff';
document.getElementById('bodyBgColor').value = '#087990';
document.getElementById('bodyColor').value = '#ffff00';
document.getElementById('infoBgSubtle').value = '#6A5ACD';
document.getElementById('primaryBorderSubtle').value = '#87ceeb';
document.getElementById('tertiaryColor').value = '#00ff00';
document.getElementById('tertiaryRgbColor').value = '#1e90ff';
document.getElementById('heading1Color').value = '#00a2e8';
document.getElementById('heading2Color').value = '#00a2e8';
document.getElementById('heading3Color').value = '#ffcc00';
document.getElementById('heading4Color').value = '#ff4500';
document.getElementById('heading5Color').value = '#7d5fff';
document.getElementById('heading6Color').value = '#00ffff';
localStorage.clear();
});
});
</script>
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#colorModal">
主题编辑器
</button>
<style>
@media (max-width: 767px) {
.table td {

View File

@ -0,0 +1,407 @@
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$primaryColor = $_POST['primaryColor'] ?? '#ffcc00';
$secondaryColor = $_POST['secondaryColor'] ?? '#00ffff';
$bodyBgColor = $_POST['bodyBgColor'] ?? '#087990';
$bodyColor = $_POST['bodyColor'] ?? '#ffff00';
$infoBgSubtle = $_POST['infoBgSubtle'] ?? '#6A5ACD';
$primaryBorderSubtle = $_POST['primaryBorderSubtle'] ?? '#87ceeb';
$tertiaryColor = $_POST['tertiaryColor'] ?? '#00ff00';
$tertiaryRgbColor = $_POST['tertiaryRgbColor'] ?? '#1e90ff';
$heading1Color = $_POST['heading1Color'] ?? '#00a2e8';
$heading2Color = $_POST['heading2Color'] ?? '#00a2e8';
$heading3Color = $_POST['heading3Color'] ?? '#ffcc00';
$heading4Color = $_POST['heading4Color'] ?? '#ff4500';
$heading5Color = $_POST['heading5Color'] ?? '#7d5fff';
$heading6Color = $_POST['heading6Color'] ?? '#00ffff';
$uploadedImagePath = '';
if (isset($_FILES['imageFile']) && $_FILES['imageFile']['error'] === UPLOAD_ERR_OK) {
$targetDir = $_SERVER['DOCUMENT_ROOT'] . '/nekobox/assets/Pictures/';
if (!file_exists($targetDir)) {
mkdir($targetDir, 0777, true);
}
$targetFile = $targetDir . basename($_FILES['imageFile']['name']);
if (move_uploaded_file($_FILES['imageFile']['tmp_name'], $targetFile)) {
$uploadedImagePath = '/nekobox/assets/Pictures/' . basename($_FILES['imageFile']['name']);
}
}
$cssContent = "
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;700&family=Noto+Serif+SC:wght@400;700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&family=Roboto:wght@400;700&family=Cinzel+Decorative:wght@700;900&display=swap');
[data-bs-theme=transparent] {
color-scheme: dark;
--bs-primary: $primaryColor;
--bs-secondary: $secondaryColor;
--bs-body-bg: $bodyBgColor;
--bs-body-color: $bodyColor;
--bs-info-bg-subtle: $infoBgSubtle;
--bs-primary-border-subtle: $primaryBorderSubtle;
--bs-tertiary: $tertiaryColor;
--bs-tertiary-rgb: $tertiaryRgbColor;
--bs-tertiary-color: $primaryColor;
--bs-tertiary-color-rgb: $secondaryColor;
--bs-heading-1: $heading1Color;
--bs-heading-2: $heading2Color;
--bs-heading-3: $heading3Color;
--bs-heading-4: $heading4Color;
--bs-heading-5: $heading5Color;
--bs-heading-6: $heading6Color;
--bs-heading-font-family: 'Montserrat', sans-serif;
--bs-heading-font-weight: 700;
--bs-heading-letter-spacing: 0.05em;
--bs-heading-text-transform: uppercase;
--bs-shadow-light: 0 4px 8px rgba(255, 0, 124, 0.4);
--bs-shadow-medium: 0 8px 16px rgba(0, 255, 133, 0.3);
--bs-shadow-heavy: 0 12px 24px rgba(125, 95, 255, 0.5);
--bs-btn-color: #fff;
--bs-btn-hover-color: #fff;
--bs-btn-active-color: #fff;
--bs-btn-disabled-color: #fff;
--bs-body-font-family: 'Avant Garde', Avantgarde, 'Century Gothic', CenturyGothic, AppleGothic, sans-serif;
}
body {
background-color: var(--bs-body-bg);
color: var(--bs-body-color);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizeLegibility;
" . ($uploadedImagePath ? "background-image: url('$uploadedImagePath'); background-repeat: no-repeat; background-position: center center; background-attachment: fixed; background-size: cover;" : "") . "
}
h1 { color: var(--bs-heading-1); }
h2 { color: var(--bs-heading-2); }
h3 { color: var(--bs-heading-3); }
h4 { color: var(--bs-heading-4); }
h5 { color: var(--bs-heading-5); }
h6 { color: var(--bs-heading-6); }
input::placeholder { color: #ffffff !important; }
.table, .form-control, .card, button, label, li, td, th, blockquote, q, code, pre {
background-color: transparent;
color: #ffffff;
}
.form-control {
background-color: transparent;
border-color: #000000;
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2), 0 4px 6px rgba(0, 0, 0, 0.1);
color: #ffffff;
}
.table { --bs-table-bg: transparent; }
.table thead th {
color: var(--bs-tertiary-color) !important;
background-color: var(--bs-tertiary-color-rgb) !important;
}
table td:nth-child(1) {
color: var(--bs-tertiary) !important;
}
table td:nth-child(2) {
color: var(--bs-tertiary-rgb) !important;
}
button {
background-color: var(--bs-primary);
border: 1px solid rgba(255, 255, 255, 0.5);
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.08);
color: #ffffff;
}
.btn-warning {
color: #ffffff;
}
.btn-warning:hover, .btn-warning:focus, .btn-warning:active {
color: #ffffff;
}
.btn-info {
color: #ffffff;
}
.btn-info:hover,
.btn-info:focus,
.btn-info:active {
color: #ffffff;
}
button, .btn-warning, .btn-info, .card, .modal-content { transition: transform 0.2s ease, box-shadow 0.2s ease; }
button:active, .btn-warning:active, .btn-info:active, .card:active, .modal-content:active { transform: translateY(-6px); box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2); }
button:hover, .btn-warning:hover, .btn-info:hover, .card:hover, .modal-content:hover { transform: translateY(-6px); box-shadow: 0 6px 12px rgba(0, 0, 0, 0.1); }
a.btn { transition: transform 0.2s ease, box-shadow 0.2s ease; }
a.btn:active { transform: translateY(-5px); box-shadow: 0 12px 24px rgba(0, 0, 0, 0.3); }
a.btn:hover { transform: translateY(-3px); box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2); }
a.btn i { margin-right: 8px; }
button:hover { background-color: var(--bs-primary); }
button:disabled { background-color: rgba(128, 128, 128, 0.5); color: rgba(255, 255, 255, 0.5); }
.card { box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1), 0 6px 20px rgba(0, 0, 0, 0.1); }
.modal-content { color: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1); }
.modal-header { color: #fff; border-bottom: 1px solid #ccc; }
.modal-title { font-size: 1.25rem; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; }
.modal-body { color: #fff; }
button.btn-close { color: #000 !important; }
button.btn-close:hover { color: #333 !important; }
.form-group button { box-shadow: 0 2px 8px rgba(0, 123, 255, 0.2); }
.form-group button:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0, 123, 255, 0.3); }
.container-sm.container-bg.callout a { color: var(--bs-primary); font-weight: 500; text-transform: uppercase; letter-spacing: 0.5px; padding: 0.5rem 1rem; margin: 0 0.25rem; position: relative; transition: all var(--bs-transition-speed); text-decoration: none; }
.container-sm.container-bg.callout a::after { content: ''; position: absolute; bottom: 0; left: 0; width: 100%; height: 2px; background-color: var(--bs-primary); transform: scaleX(0); transition: transform var(--bs-transition-speed); }
.container-sm.container-bg.callout a:hover, .container-sm.container-bg.callout a:focus, .container-sm.container-bg.callout a.active { color: var(--bs-secondary); } .container-sm.container-bg.callout a:hover::after, .container-sm.container-bg.callout a:focus::after, .container-sm.container-bg.callout a.active::after { transform: scaleX(1); }
.royal-style { font-family: 'Cinzel Decorative', cursive; font-weight: 900; font-size: 80px; color: var(--bs-primary); text-shadow: 2px 2px 4px rgba(142, 68, 173, 0.7); letter-spacing: 4px; text-align: center; margin-top: 20px; }
.royal-style:hover { transform: skew(-5deg); }
@media (max-width: 991.98px) { .container-sm.container-bg.callout { flex-direction: column; align-items: center; } .container-sm.container-bg.callout a { margin: 0.5rem 0; } }
h1 { color: var(--bs-heading-1); font-size: 2.5rem; }
h2 { color: var(--bs-heading-2); font-size: 2rem; }
h3 { color: var(--bs-heading-3); font-size: 1.75rem; }
h4 { color: var(--bs-heading-4); font-size: 1.5rem; }
h5 { color: var(--bs-heading-5); font-size: 1.25rem; }
h6 { color: var(--bs-heading-6); font-size: 1rem; }
h1:hover, h2:hover, h3:hover, h4:hover, h5:hover, h6:hover { text-shadow: 2px 2px 4px rgba(0,0,0,0.1); transition: all 0.3s ease; }
.text-3d { display: inline-block; transition: transform 0.5s, text-shadow 0.5s; text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.2), 2px 2px 1px rgba(0, 0, 0, 0.15), 3px 3px 1px rgba(0, 0, 0, 0.1); }
.text-3d:hover { transform: rotateY(15deg) rotateX(15deg); text-shadow: 3px 3px 1px rgba(0, 0, 0, 0.3), 4px 4px 2px rgba(0, 0, 0, 0.25), 5px 5px 3px rgba(0, 0, 0, 0.2); }
.card { border-radius: 12px; overflow: hidden; box-shadow: var(--bs-shadow-medium); }
.card-header { background-color: var(--bs-primary); color: #fff; }
.royal-style { font-family: 'Cinzel Decorative', cursive; font-weight: 900; font-size: 80px; color: var(--bs-primary); text-shadow: 2px 2px 4px rgba(142, 68, 173, 0.7), 0 0 20px rgba(142, 68, 173, 0.3); letter-spacing: 4px; text-align: center; margin-top: 20px; transition: all var(-- bs-transition-speed); }
.royal-style:hover { transform: skew(-5deg); text-shadow: 3px 3px 6px rgba(0,0,0,0.2); }
@media (max-width: 991.98px) {
.container-sm.container-bg.callout {
flex-direction: column;
align-items: center;
}
.container-sm.container-bg.callout a {
margin: 0.5rem 0;
}
}
h1, h2, h3, h4, h5, h6 {
font-family: var(--bs-heading-font-family);
font-weight: var(--bs-heading-font-weight);
letter-spacing: var(--bs-heading-letter-spacing);
text-transform: var(--bs-heading-text-transform);
margin-bottom: 1rem;
}
h1 {
color: var(--bs-heading-1);
font-size: 2.5rem;
}
h2 {
color: var(--bs-secondary);
font-size: 2rem;
}
h3 {
color: #9c27b0;
font-size: 1.75rem;
}
h4 {
color: #9c27b0;
font-size: 1.5rem;
}
h5 {
color: #673ab7;
font-size: 1.25rem;
}
h6 {
color: #e91e63;
font-size: 1rem;
}
h1:hover, h2:hover, h3:hover, h4:hover, h5:hover, h6:hover {
text-shadow: 2px 2px 4px rgba(0,0,0,0.1);
transition: all 0.3s ease;
}
.text-3d {
display: inline-block;
transition: transform 0.5s, text-shadow 0.5s;
text-shadow:
1px 1px 1px rgba(0, 0, 0, 0.2),
2px 2px 1px rgba(0, 0, 0, 0.15),
3px 3px 1px rgba(0, 0, 0, 0.1);
}
.text-3d:hover {
transform: rotateY(15deg) rotateX(15deg);
text-shadow:
3px 3px 1px rgba(0, 0, 0, 0.3),
4px 4px 2px rgba(0, 0, 0, 0.25),
5px 5px 3px rgba(0, 0, 0, 0.2);
}
.card {
border-radius: 12px;
overflow: hidden;
box-shadow: var(--bs-shadow-medium);
}
.card-header {
background-color: var(--bs-primary);
color: #fff;
}
.royal-style {
font-family: 'Cinzel Decorative', cursive;
font-weight: 900;
font-size: 80px;
color: var(--bs-primary);
text-shadow:
2px 2px 4px rgba(142, 68, 173, 0.7),
0 0 20px rgba(142, 68, 173, 0.3);
letter-spacing: 4px;
text-align: center;
margin-top: 20px;
transition: all var(--bs-transition-speed);
}
.royal-style:hover {
transform: skew(-5deg);
text-shadow: 3px 3px 6px rgba(0,0,0,0.2);
}
@media (max-width: 767px) {
body {
font-size: 14px;
}
h1 { font-size: 2rem; }
h2 { font-size: 1.75rem; }
h3 { font-size: 1.5rem; }
h4 { font-size: 1.25rem; }
h5 { font-size: 1.1rem; }
h6 { font-size: 1rem; }
.royal-style {
font-size: 40px;
}
.btn {
padding: 8px 16px;
font-size: 14px;
}
.table-3d {
font-size: 14px;
}
.table-3d td,
.table-3d th {
padding: 10px;
}
.container-bg {
padding: 1rem;
margin-top: 1rem;
margin-bottom: 1rem;
}
@media (max-width: 575px) {
.container-sm.container-bg.callout {
flex-direction: column;
align-items: stretch;
}
.container-sm.container-bg.callout a {
margin: 0.25rem 0;
display: block;
text-align: center;
}
}
@media (min-width: 992px) {
.container-sm.container-bg.callout {
display: flex;
justify-content: center;
align-items: center;
}
.container-sm.container-bg.callout a {
margin: 0 0.5rem;
}
}
@media (max-width: 767px) {
.row.justify-content-md-center .col.input-group.mb-3.justify-content-md-center {
display: flex;
justify-content: center;
}
.row.justify-content-md-center .col.input-group.mb-3.justify-content-md-center .btn-info {
width: auto;
min-width: 200px;
}
}
.btn-info,
.btn-success,
.btn-danger {
color: #fff !important;
}
.btn-info:hover,
.btn-success:hover,
.btn-danger:hover,
.btn-info:focus,
.btn-success:focus,
.btn-danger:focus {
color: #fff !important;
}
@media (max-width: 767px) {
.btn {
font-size: 10px;
}
}
";
$filePath = $_SERVER['DOCUMENT_ROOT'] . '/nekobox/assets/theme/transparent.css';
file_put_contents($filePath, $cssContent);
echo "<script>
alert('自定义主题颜色已更新,名称为 transparent.css ,清除浏览器缓存已应用主题 ');
window.location.href = 'settings.php';
</script>";
} else {
echo "<script>alert('没有接收到数据。');</script>";
}
if (isset($_GET['delete'])) {
$fileToDelete = $_GET['delete'];
$filePath = $picturesDir . $fileToDelete;
if (file_exists($filePath)) {
unlink($filePath);
$cssFilePath = $_SERVER['DOCUMENT_ROOT'] . '/nekobox/assets/theme/transparent.css';
if (file_exists($cssFilePath)) {
$cssContent = file_get_contents($cssFilePath);
$cssContent = preg_replace('/background-image: url\(.*?\);.*?background-size: cover;/', '', $cssContent);
file_put_contents($cssFilePath, $cssContent);
}
echo "<script>
alert('图片已删除!');
window.location.href = 'settings.php';
</script>";
exit;
}
}
?>

View File

@ -30,8 +30,8 @@
name="theme-color"
content="#FFFFFF"
/>
<script type="module" crossorigin src="./assets/index-DtINbTFY.js"></script>
<link rel="stylesheet" crossorigin href="./assets/index-D89mDC6o.css">
<script type="module" crossorigin src="./assets/index-0PmD-pCq.js"></script>
<link rel="stylesheet" crossorigin href="./assets/index-D0PuVjwC.css">
<link rel="manifest" href="./manifest.webmanifest"><script id="vite-plugin-pwa:register-sw" src="./registerSW.js"></script></head>
<body>
<div id="app"></div>

View File

@ -1 +1 @@
if(!self.define){let e,i={};const s=(s,n)=>(s=new URL(s+".js",n).href,i[s]||new Promise((i=>{if("document"in self){const e=document.createElement("script");e.src=s,e.onload=i,document.head.appendChild(e)}else e=s,importScripts(s),i()})).then((()=>{let e=i[s];if(!e)throw new Error(`Module ${s} didnt register its module`);return e})));self.define=(n,r)=>{const f=e||("document"in self?document.currentScript.src:"")||location.href;if(i[f])return;let o={};const d=e=>s(e,f),t={module:{uri:f},exports:o,require:d};i[f]=Promise.all(n.map((e=>t[e]||d(e)))).then((e=>(r(...e),o)))}}define(["./workbox-3e8df8c8"],(function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"assets/index-D89mDC6o.css",revision:null},{url:"assets/index-DtINbTFY.js",revision:null},{url:"index.html",revision:"67f50dee51eadc375b79572e23a38e38"},{url:"registerSW.js",revision:"402b66900e731ca748771b6fc5e7a068"},{url:"favicon.svg",revision:"7f1c4521acc10694fefef8f72dd2ea5f"},{url:"pwa-192x192.png",revision:"021df52501f4357c03eebd808f40dc6a"},{url:"pwa-512x512.png",revision:"d2f759aaabcb2c44ff52b27fde3de6e0"},{url:"pwa-maskable-192x192.png",revision:"7cd11dc5f0490b349d23eef5591d10e5"},{url:"pwa-maskable-512x512.png",revision:"8c97dc367a85a5a1eba523b24f79d03b"},{url:"manifest.webmanifest",revision:"c452912633990899ffe790f985ad0db9"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))}));
if(!self.define){let e,i={};const s=(s,n)=>(s=new URL(s+".js",n).href,i[s]||new Promise((i=>{if("document"in self){const e=document.createElement("script");e.src=s,e.onload=i,document.head.appendChild(e)}else e=s,importScripts(s),i()})).then((()=>{let e=i[s];if(!e)throw new Error(`Module ${s} didnt register its module`);return e})));self.define=(n,r)=>{const f=e||("document"in self?document.currentScript.src:"")||location.href;if(i[f])return;let c={};const d=e=>s(e,f),o={module:{uri:f},exports:c,require:d};i[f]=Promise.all(n.map((e=>o[e]||d(e)))).then((e=>(r(...e),c)))}}define(["./workbox-3e8df8c8"],(function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"assets/index-0PmD-pCq.js",revision:null},{url:"assets/index-D0PuVjwC.css",revision:null},{url:"index.html",revision:"52366c25823272eeba3fdc1c7a82f1ed"},{url:"registerSW.js",revision:"402b66900e731ca748771b6fc5e7a068"},{url:"favicon.svg",revision:"7f1c4521acc10694fefef8f72dd2ea5f"},{url:"pwa-192x192.png",revision:"021df52501f4357c03eebd808f40dc6a"},{url:"pwa-512x512.png",revision:"d2f759aaabcb2c44ff52b27fde3de6e0"},{url:"pwa-maskable-192x192.png",revision:"7cd11dc5f0490b349d23eef5591d10e5"},{url:"pwa-maskable-512x512.png",revision:"8c97dc367a85a5a1eba523b24f79d03b"},{url:"manifest.webmanifest",revision:"c452912633990899ffe790f985ad0db9"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))}));

View File

@ -1 +1 @@
v1.49.0
v1.49.1