Correcciones varias. Actualizacion de estilos. Mejoras para PWA
BIN
android/android-launchericon-144-144.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
android/android-launchericon-192-192.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
android/android-launchericon-48-48.png
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
BIN
android/android-launchericon-512-512.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
android/android-launchericon-72-72.png
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
BIN
android/android-launchericon-96-96.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
190
index.html
@@ -1,35 +1,184 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="es">
|
<html lang="es">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="theme-color" content="#4A90E2">
|
||||||
|
<meta name="theme-color" content="#ffffff" media="(prefers-color-scheme: light)">
|
||||||
|
<meta name="theme-color" content="#121212" media="(prefers-color-scheme: dark)">
|
||||||
|
<link rel="manifest" href="manifest.json">
|
||||||
<title>Audio Cutter Pro 2026</title>
|
<title>Audio Cutter Pro 2026</title>
|
||||||
<script src="wavesurfer.min.js"></script>
|
<script src="wavesurfer.min.js"></script>
|
||||||
<script src="plugins/regions.min.js"></script>
|
<script src="plugins/regions.min.js"></script>
|
||||||
|
<script>
|
||||||
|
if ('serviceWorker' in navigator) {
|
||||||
|
navigator.serviceWorker.register('./sw.js')
|
||||||
|
.then(reg => console.log('Registro exitoso', reg))
|
||||||
|
.catch(err => console.warn('Error al registrar', err));
|
||||||
|
}
|
||||||
|
|
||||||
|
if ('serviceWorker' in navigator) {
|
||||||
|
navigator.serviceWorker.register('./sw.js').then(reg => {
|
||||||
|
reg.onupdatefound = () => {
|
||||||
|
const installingWorker = reg.installing;
|
||||||
|
installingWorker.onstatechange = () => {
|
||||||
|
if (installingWorker.state === 'installed') {
|
||||||
|
if (navigator.serviceWorker.controller) {
|
||||||
|
// Aquí es donde le avisas al usuario
|
||||||
|
alert('Nueva versión disponible. Por favor, recarga la página.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if ('serviceWorker' in navigator) {
|
||||||
|
window.addEventListener('load', () => {
|
||||||
|
navigator.serviceWorker.register('./sw.js').then(reg => {
|
||||||
|
|
||||||
|
// Detecta si hay una actualización esperando
|
||||||
|
reg.addEventListener('updatefound', () => {
|
||||||
|
const newWorker = reg.installing;
|
||||||
|
|
||||||
|
newWorker.addEventListener('statechange', () => {
|
||||||
|
// Cuando el nuevo SW se ha instalado completamente
|
||||||
|
if (newWorker.state === 'installed' && navigator.serviceWorker.controller) {
|
||||||
|
|
||||||
|
// Crea una confirmación para el usuario
|
||||||
|
const r = confirm("¡Hay una nueva versión disponible! ¿Quieres actualizar ahora?");
|
||||||
|
if (r === true) {
|
||||||
|
window.location.reload(); // Recarga la página para aplicar cambios
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
<style>
|
<style>
|
||||||
:root { --bg: #0f172a; --card: #1e293b; --accent: #3b82f6; }
|
:root {
|
||||||
body { font-family: sans-serif; background: var(--bg); color: white; display: flex; flex-direction: column; align-items: center; padding: 20px; }
|
--bg: #ffffff;
|
||||||
.card { background: var(--card); padding: 20px; border-radius: 15px; width: 100%; max-width: 700px; box-shadow: 0 10px 30px rgba(0,0,0,0.5); }
|
--card: #1e293b;
|
||||||
#waveform { background: #000; border-radius: 10px; margin: 20px 0; border: 1px solid #334155; }
|
--accent: #3b82f6;
|
||||||
.info { display: flex; justify-content: space-between; font-family: monospace; color: #94a3b8; margin-bottom: 10px; }
|
--texto: #f8f7f7;
|
||||||
.controls { display: flex; gap: 8px; flex-wrap: wrap; justify-content: center; }
|
}
|
||||||
button { padding: 10px 16px; border: none; border-radius: 6px; cursor: pointer; font-weight: bold; transition: 0.2s; }
|
|
||||||
.btn-play { background: #10b981; color: white; }
|
/* Colores para Tema Oscuro */
|
||||||
.btn-stop { background: #ef4444; color: white; }
|
@media (prefers-color-scheme: dark) {
|
||||||
.btn-export { background: var(--accent); color: white; }
|
:root {
|
||||||
.btn-zoom { background: #475569; color: white; }
|
--fondo: #121212;
|
||||||
.btn-share { background: #f59e0b; color: white; display: none; }
|
--texto: #0c0c0c;
|
||||||
#status { font-size: 0.8rem; margin-top: 10px; text-align: center; color: #64748b; }
|
--primario: #1a73e8;
|
||||||
|
--card: #d6dbe4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Uso de las variables */
|
||||||
|
body {
|
||||||
|
background-color: var(--fondo);
|
||||||
|
color: var(--texto);
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: sans-serif;
|
||||||
|
background: var(--bg);
|
||||||
|
/*color: white;*/
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card {
|
||||||
|
background: var(--card);
|
||||||
|
padding: 20px;
|
||||||
|
border-radius: 15px;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 700px;
|
||||||
|
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
#waveform {
|
||||||
|
background: #000;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin: 20px 0;
|
||||||
|
border: 1px solid #334155;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
font-family: monospace;
|
||||||
|
color: #94a3b8;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.controls {
|
||||||
|
display: flex;
|
||||||
|
gap: 8px;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
padding: 10px 16px;
|
||||||
|
border: none;
|
||||||
|
border-radius: 6px;
|
||||||
|
cursor: pointer;
|
||||||
|
font-weight: bold;
|
||||||
|
transition: 0.2s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-play {
|
||||||
|
background: #10b981;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-stop {
|
||||||
|
background: #ef4444;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-export {
|
||||||
|
background: var(--accent);
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-zoom {
|
||||||
|
background: #475569;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-share {
|
||||||
|
background: #f59e0b;
|
||||||
|
color: white;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#status {
|
||||||
|
font-size: 0.8rem;
|
||||||
|
margin-top: 10px;
|
||||||
|
text-align: center;
|
||||||
|
color: #64748b;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h3>Cortador Pro (Misma Calidad)</h3>
|
<h3>Audio Cutter PWA</h3>
|
||||||
<input type="file" id="audioInput" accept="audio/*">
|
<input type="file" id="audioInput" accept="audio/*">
|
||||||
|
|
||||||
<div id="waveform"></div>
|
<div id="waveform"></div>
|
||||||
|
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<span id="totalTime">Total: 00:00</span>
|
<span id="totalTime">Total: 00:00</span>
|
||||||
<span id="selectionTime">Selección: 00:00 - 00:00</span>
|
<span id="selectionTime">Selección: 00:00 - 00:00</span>
|
||||||
@@ -86,7 +235,7 @@
|
|||||||
|
|
||||||
function updateSelectionLabel() {
|
function updateSelectionLabel() {
|
||||||
if (activeRegion) {
|
if (activeRegion) {
|
||||||
document.getElementById('selectionTime').innerText =
|
document.getElementById('selectionTime').innerText =
|
||||||
`Selección: ${formatTime(activeRegion.start)} - ${formatTime(activeRegion.end)}`;
|
`Selección: ${formatTime(activeRegion.start)} - ${formatTime(activeRegion.end)}`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -119,7 +268,7 @@
|
|||||||
source.start(0, activeRegion.start, duration);
|
source.start(0, activeRegion.start, duration);
|
||||||
|
|
||||||
const renderedBuffer = await offlineCtx.startRendering();
|
const renderedBuffer = await offlineCtx.startRendering();
|
||||||
|
|
||||||
// Grabación del Stream para comprimir
|
// Grabación del Stream para comprimir
|
||||||
const destination = audioCtx.createMediaStreamDestination();
|
const destination = audioCtx.createMediaStreamDestination();
|
||||||
const recorder = new MediaRecorder(destination.stream);
|
const recorder = new MediaRecorder(destination.stream);
|
||||||
@@ -140,7 +289,7 @@
|
|||||||
const playSource = audioCtx.createBufferSource();
|
const playSource = audioCtx.createBufferSource();
|
||||||
playSource.buffer = renderedBuffer;
|
playSource.buffer = renderedBuffer;
|
||||||
playSource.connect(destination);
|
playSource.connect(destination);
|
||||||
|
|
||||||
recorder.start();
|
recorder.start();
|
||||||
playSource.start();
|
playSource.start();
|
||||||
playSource.onended = () => recorder.stop();
|
playSource.onended = () => recorder.stop();
|
||||||
@@ -160,4 +309,5 @@
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
|
||||||
|
</html>
|
||||||
BIN
ios/100.png
Normal file
|
After Width: | Height: | Size: 9.1 KiB |
BIN
ios/1024.png
Normal file
|
After Width: | Height: | Size: 187 KiB |
BIN
ios/114.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
ios/120.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
ios/128.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
ios/144.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
ios/152.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
ios/16.png
Normal file
|
After Width: | Height: | Size: 747 B |
BIN
ios/167.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
ios/180.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
ios/192.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
ios/20.png
Normal file
|
After Width: | Height: | Size: 972 B |
BIN
ios/256.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
ios/29.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
ios/32.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
ios/40.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
ios/50.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
ios/512.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
ios/57.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
ios/58.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
ios/60.png
Normal file
|
After Width: | Height: | Size: 4.8 KiB |
BIN
ios/64.png
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
BIN
ios/72.png
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
BIN
ios/76.png
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
ios/80.png
Normal file
|
After Width: | Height: | Size: 7.1 KiB |
BIN
ios/87.png
Normal file
|
After Width: | Height: | Size: 7.9 KiB |
468
manifest.json
@@ -1,11 +1,460 @@
|
|||||||
{
|
{
|
||||||
"name": "Audio Cutter",
|
"name": "Audio Cutter PWA",
|
||||||
"short_name": "Cutter",
|
"short_name": "Cutter",
|
||||||
"start_url": "index.html",
|
"start_url": "index.html",
|
||||||
"display": "standalone",
|
"display": "standalone",
|
||||||
"background_color": "#121212",
|
"background_color": "#121212",
|
||||||
"theme_color": "#2196F3",
|
"theme_color": "#4A90E2",
|
||||||
"icons": [{ "src": "icon.png", "sizes": "512x512", "type": "image/png" }],
|
"icons": [
|
||||||
|
{
|
||||||
|
"src": "windows11/SmallTile.scale-100.png",
|
||||||
|
"sizes": "71x71"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/SmallTile.scale-125.png",
|
||||||
|
"sizes": "89x89"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/SmallTile.scale-150.png",
|
||||||
|
"sizes": "107x107"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/SmallTile.scale-200.png",
|
||||||
|
"sizes": "142x142"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/SmallTile.scale-400.png",
|
||||||
|
"sizes": "284x284"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square150x150Logo.scale-100.png",
|
||||||
|
"sizes": "150x150"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square150x150Logo.scale-125.png",
|
||||||
|
"sizes": "188x188"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square150x150Logo.scale-150.png",
|
||||||
|
"sizes": "225x225"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square150x150Logo.scale-200.png",
|
||||||
|
"sizes": "300x300"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square150x150Logo.scale-400.png",
|
||||||
|
"sizes": "600x600"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Wide310x150Logo.scale-100.png",
|
||||||
|
"sizes": "310x150"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Wide310x150Logo.scale-125.png",
|
||||||
|
"sizes": "388x188"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Wide310x150Logo.scale-150.png",
|
||||||
|
"sizes": "465x225"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Wide310x150Logo.scale-200.png",
|
||||||
|
"sizes": "620x300"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Wide310x150Logo.scale-400.png",
|
||||||
|
"sizes": "1240x600"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/LargeTile.scale-100.png",
|
||||||
|
"sizes": "310x310"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/LargeTile.scale-125.png",
|
||||||
|
"sizes": "388x388"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/LargeTile.scale-150.png",
|
||||||
|
"sizes": "465x465"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/LargeTile.scale-200.png",
|
||||||
|
"sizes": "620x620"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/LargeTile.scale-400.png",
|
||||||
|
"sizes": "1240x1240"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.scale-100.png",
|
||||||
|
"sizes": "44x44"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.scale-125.png",
|
||||||
|
"sizes": "55x55"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.scale-150.png",
|
||||||
|
"sizes": "66x66"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.scale-200.png",
|
||||||
|
"sizes": "88x88"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.scale-400.png",
|
||||||
|
"sizes": "176x176"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/StoreLogo.scale-100.png",
|
||||||
|
"sizes": "50x50"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/StoreLogo.scale-125.png",
|
||||||
|
"sizes": "63x63"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/StoreLogo.scale-150.png",
|
||||||
|
"sizes": "75x75"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/StoreLogo.scale-200.png",
|
||||||
|
"sizes": "100x100"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/StoreLogo.scale-400.png",
|
||||||
|
"sizes": "200x200"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/SplashScreen.scale-100.png",
|
||||||
|
"sizes": "620x300"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/SplashScreen.scale-125.png",
|
||||||
|
"sizes": "775x375"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/SplashScreen.scale-150.png",
|
||||||
|
"sizes": "930x450"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/SplashScreen.scale-200.png",
|
||||||
|
"sizes": "1240x600"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/SplashScreen.scale-400.png",
|
||||||
|
"sizes": "2480x1200"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.targetsize-16.png",
|
||||||
|
"sizes": "16x16"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.targetsize-20.png",
|
||||||
|
"sizes": "20x20"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.targetsize-24.png",
|
||||||
|
"sizes": "24x24"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.targetsize-30.png",
|
||||||
|
"sizes": "30x30"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.targetsize-32.png",
|
||||||
|
"sizes": "32x32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.targetsize-36.png",
|
||||||
|
"sizes": "36x36"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.targetsize-40.png",
|
||||||
|
"sizes": "40x40"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.targetsize-44.png",
|
||||||
|
"sizes": "44x44"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.targetsize-48.png",
|
||||||
|
"sizes": "48x48"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.targetsize-60.png",
|
||||||
|
"sizes": "60x60"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.targetsize-64.png",
|
||||||
|
"sizes": "64x64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.targetsize-72.png",
|
||||||
|
"sizes": "72x72"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.targetsize-80.png",
|
||||||
|
"sizes": "80x80"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.targetsize-96.png",
|
||||||
|
"sizes": "96x96"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.targetsize-256.png",
|
||||||
|
"sizes": "256x256"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-16.png",
|
||||||
|
"sizes": "16x16"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-20.png",
|
||||||
|
"sizes": "20x20"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-24.png",
|
||||||
|
"sizes": "24x24"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-30.png",
|
||||||
|
"sizes": "30x30"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-32.png",
|
||||||
|
"sizes": "32x32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-36.png",
|
||||||
|
"sizes": "36x36"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-40.png",
|
||||||
|
"sizes": "40x40"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-44.png",
|
||||||
|
"sizes": "44x44"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-48.png",
|
||||||
|
"sizes": "48x48"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-60.png",
|
||||||
|
"sizes": "60x60"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-64.png",
|
||||||
|
"sizes": "64x64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-72.png",
|
||||||
|
"sizes": "72x72"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-80.png",
|
||||||
|
"sizes": "80x80"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-96.png",
|
||||||
|
"sizes": "96x96"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-unplated_targetsize-256.png",
|
||||||
|
"sizes": "256x256"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-16.png",
|
||||||
|
"sizes": "16x16"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-20.png",
|
||||||
|
"sizes": "20x20"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-24.png",
|
||||||
|
"sizes": "24x24"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-30.png",
|
||||||
|
"sizes": "30x30"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-32.png",
|
||||||
|
"sizes": "32x32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-36.png",
|
||||||
|
"sizes": "36x36"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-40.png",
|
||||||
|
"sizes": "40x40"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-44.png",
|
||||||
|
"sizes": "44x44"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-48.png",
|
||||||
|
"sizes": "48x48"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-60.png",
|
||||||
|
"sizes": "60x60"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-64.png",
|
||||||
|
"sizes": "64x64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-72.png",
|
||||||
|
"sizes": "72x72"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-80.png",
|
||||||
|
"sizes": "80x80"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-96.png",
|
||||||
|
"sizes": "96x96"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-256.png",
|
||||||
|
"sizes": "256x256"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "android/android-launchericon-512-512.png",
|
||||||
|
"sizes": "512x512"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "android/android-launchericon-192-192.png",
|
||||||
|
"sizes": "192x192"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "android/android-launchericon-144-144.png",
|
||||||
|
"sizes": "144x144"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "android/android-launchericon-96-96.png",
|
||||||
|
"sizes": "96x96"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "android/android-launchericon-72-72.png",
|
||||||
|
"sizes": "72x72"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "android/android-launchericon-48-48.png",
|
||||||
|
"sizes": "48x48"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "ios/16.png",
|
||||||
|
"sizes": "16x16"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "ios/20.png",
|
||||||
|
"sizes": "20x20"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "ios/29.png",
|
||||||
|
"sizes": "29x29"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "ios/32.png",
|
||||||
|
"sizes": "32x32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "ios/40.png",
|
||||||
|
"sizes": "40x40"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "ios/50.png",
|
||||||
|
"sizes": "50x50"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "ios/57.png",
|
||||||
|
"sizes": "57x57"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "ios/58.png",
|
||||||
|
"sizes": "58x58"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "ios/60.png",
|
||||||
|
"sizes": "60x60"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "ios/64.png",
|
||||||
|
"sizes": "64x64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "ios/72.png",
|
||||||
|
"sizes": "72x72"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "ios/76.png",
|
||||||
|
"sizes": "76x76"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "ios/80.png",
|
||||||
|
"sizes": "80x80"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "ios/87.png",
|
||||||
|
"sizes": "87x87"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "ios/100.png",
|
||||||
|
"sizes": "100x100"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "ios/114.png",
|
||||||
|
"sizes": "114x114"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "ios/120.png",
|
||||||
|
"sizes": "120x120"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "ios/128.png",
|
||||||
|
"sizes": "128x128"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "ios/144.png",
|
||||||
|
"sizes": "144x144"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "ios/152.png",
|
||||||
|
"sizes": "152x152"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "ios/167.png",
|
||||||
|
"sizes": "167x167"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "ios/180.png",
|
||||||
|
"sizes": "180x180"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "ios/192.png",
|
||||||
|
"sizes": "192x192"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "ios/256.png",
|
||||||
|
"sizes": "256x256"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "ios/512.png",
|
||||||
|
"sizes": "512x512"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "ios/1024.png",
|
||||||
|
"sizes": "1024x1024"
|
||||||
|
}
|
||||||
|
],
|
||||||
"share_target": {
|
"share_target": {
|
||||||
"action": "/index.html",
|
"action": "/index.html",
|
||||||
"method": "POST",
|
"method": "POST",
|
||||||
@@ -18,5 +467,18 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"shortcuts": [
|
||||||
|
{
|
||||||
|
"name": "Nueva Tarea",
|
||||||
|
"url": "/nueva-tarea",
|
||||||
|
"icons": [{ "src": "icons/shortcut-icon.png", "sizes": "192x192" }]
|
||||||
|
},
|
||||||
|
"user_preferences": {
|
||||||
|
"color_scheme_dark": {
|
||||||
|
"theme_color": "#121212",
|
||||||
|
"background_color": "#121212"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
1
plugins/regions.min.js
vendored
Normal file
52
sw.js
@@ -1,6 +1,54 @@
|
|||||||
self.addEventListener('install', (e) => {
|
const CACHE_NAME = 'v1_cache_mi_pwa';
|
||||||
e.waitUntil(caches.open('v1').then(cache => cache.addAll(['index.html'])));
|
// Lista de archivos que quieres que funcionen sin internet
|
||||||
|
const urlsToCache = [
|
||||||
|
'/',
|
||||||
|
'/index.html',
|
||||||
|
'/plugins/regions.min.js',
|
||||||
|
'/wavesurfer.min.js'
|
||||||
|
];
|
||||||
|
|
||||||
|
// 1. Evento Install: Guarda los archivos en la caché al instalar la PWA
|
||||||
|
self.addEventListener('install', e => {
|
||||||
|
e.waitUntil(
|
||||||
|
caches.open(CACHE_NAME)
|
||||||
|
.then(cache => {
|
||||||
|
return cache.addAll(urlsToCache);
|
||||||
|
})
|
||||||
|
.then(() => self.skipWaiting()) // Fuerza la activación inmediata
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 2. Evento Activate: Limpia cachés antiguas para que siempre tengas la última versión
|
||||||
|
self.addEventListener('activate', e => {
|
||||||
|
const cacheWhitelist = [CACHE_NAME];
|
||||||
|
e.waitUntil(
|
||||||
|
caches.keys().then(cacheNames => {
|
||||||
|
return Promise.all(
|
||||||
|
cacheNames.map(cacheName => {
|
||||||
|
if (cacheWhitelist.indexOf(cacheName) === -1) {
|
||||||
|
return caches.delete(cacheName);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
|
})
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 3. Evento Fetch: Intercepta las peticiones y sirve desde la caché si existe
|
||||||
|
self.addEventListener('fetch', e => {
|
||||||
|
e.respondWith(
|
||||||
|
caches.match(e.request)
|
||||||
|
.then(res => {
|
||||||
|
if (res) {
|
||||||
|
// Si el archivo está en caché, lo devuelve sin ir a internet
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
// Si no está, lo busca en la red
|
||||||
|
return fetch(e.request);
|
||||||
|
})
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
self.addEventListener('fetch', (e) => {
|
self.addEventListener('fetch', (e) => {
|
||||||
e.respondWith(caches.match(e.request).then(res => res || fetch(e.request)));
|
e.respondWith(caches.match(e.request).then(res => res || fetch(e.request)));
|
||||||
});
|
});
|
||||||
|
|||||||
BIN
windows11/LargeTile.scale-100.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
windows11/LargeTile.scale-125.png
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
windows11/LargeTile.scale-150.png
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
windows11/LargeTile.scale-200.png
Normal file
|
After Width: | Height: | Size: 90 KiB |
BIN
windows11/LargeTile.scale-400.png
Normal file
|
After Width: | Height: | Size: 244 KiB |
BIN
windows11/SmallTile.scale-100.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
windows11/SmallTile.scale-125.png
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
BIN
windows11/SmallTile.scale-150.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
windows11/SmallTile.scale-200.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
windows11/SmallTile.scale-400.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
windows11/SplashScreen.scale-100.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
windows11/SplashScreen.scale-125.png
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
windows11/SplashScreen.scale-150.png
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
windows11/SplashScreen.scale-200.png
Normal file
|
After Width: | Height: | Size: 95 KiB |
BIN
windows11/SplashScreen.scale-400.png
Normal file
|
After Width: | Height: | Size: 259 KiB |
BIN
windows11/Square150x150Logo.scale-100.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
windows11/Square150x150Logo.scale-125.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
windows11/Square150x150Logo.scale-150.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
windows11/Square150x150Logo.scale-200.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
windows11/Square150x150Logo.scale-400.png
Normal file
|
After Width: | Height: | Size: 86 KiB |
|
After Width: | Height: | Size: 855 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 7.2 KiB |
|
After Width: | Height: | Size: 7.7 KiB |
|
After Width: | Height: | Size: 10 KiB |
BIN
windows11/Square44x44Logo.altform-unplated_targetsize-16.png
Normal file
|
After Width: | Height: | Size: 855 B |
BIN
windows11/Square44x44Logo.altform-unplated_targetsize-20.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
windows11/Square44x44Logo.altform-unplated_targetsize-24.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
windows11/Square44x44Logo.altform-unplated_targetsize-256.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
windows11/Square44x44Logo.altform-unplated_targetsize-30.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
windows11/Square44x44Logo.altform-unplated_targetsize-32.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
windows11/Square44x44Logo.altform-unplated_targetsize-36.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
windows11/Square44x44Logo.altform-unplated_targetsize-40.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
windows11/Square44x44Logo.altform-unplated_targetsize-44.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
windows11/Square44x44Logo.altform-unplated_targetsize-48.png
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
BIN
windows11/Square44x44Logo.altform-unplated_targetsize-60.png
Normal file
|
After Width: | Height: | Size: 5.6 KiB |
BIN
windows11/Square44x44Logo.altform-unplated_targetsize-64.png
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
BIN
windows11/Square44x44Logo.altform-unplated_targetsize-72.png
Normal file
|
After Width: | Height: | Size: 7.2 KiB |
BIN
windows11/Square44x44Logo.altform-unplated_targetsize-80.png
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
BIN
windows11/Square44x44Logo.altform-unplated_targetsize-96.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
windows11/Square44x44Logo.scale-100.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
windows11/Square44x44Logo.scale-125.png
Normal file
|
After Width: | Height: | Size: 5.1 KiB |
BIN
windows11/Square44x44Logo.scale-150.png
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
windows11/Square44x44Logo.scale-200.png
Normal file
|
After Width: | Height: | Size: 9.2 KiB |
BIN
windows11/Square44x44Logo.scale-400.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
windows11/Square44x44Logo.targetsize-16.png
Normal file
|
After Width: | Height: | Size: 855 B |
BIN
windows11/Square44x44Logo.targetsize-20.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
windows11/Square44x44Logo.targetsize-24.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
windows11/Square44x44Logo.targetsize-256.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
windows11/Square44x44Logo.targetsize-30.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
windows11/Square44x44Logo.targetsize-32.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
windows11/Square44x44Logo.targetsize-36.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
windows11/Square44x44Logo.targetsize-40.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
windows11/Square44x44Logo.targetsize-44.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |