From 2174b10879603825e60842d6d826f9970e4903bf Mon Sep 17 00:00:00 2001 From: Fluffy-Bean Date: Wed, 12 Apr 2023 16:58:13 +0000 Subject: [PATCH 01/15] Rename the gallery to onlylegs in the files Im sorry --- {gallery => onlylegs}/__init__.py | 10 ++-- {gallery => onlylegs}/api.py | 8 ++-- {gallery => onlylegs}/auth.py | 4 +- {gallery => onlylegs}/config.py | 0 {gallery => onlylegs}/extensions.py | 0 {gallery => onlylegs}/langs/gb.json | 0 {gallery => onlylegs}/models.py | 2 +- .../048ab2d0afc0753b21fd37760d6336a9 | Bin 0 -> 23 bytes .../245b356d139a542e35f66e3a24abcd83 | Bin 0 -> 857 bytes .../2703fbc99768caa84c204331ae2d614f | Bin 0 -> 213 bytes .../3f5dd8900ac3b9691849ca7ae7dfb270 | Bin 0 -> 23 bytes .../4fc49eeb19703df20e8b664cbd5024ff | Bin 0 -> 17209 bytes .../616146e95f4b4f878d3737cf9fd1ea3c | Bin 0 -> 47 bytes .../695be00eadf74d7648f7b55cf5b436ec | Bin 0 -> 17225 bytes .../8af5c2621194ec42b82ffd3ae7011057 | Bin 0 -> 47 bytes .../8d5c5be1180b0291e9379c042289e36c | Bin 0 -> 32813 bytes .../9ba12571fa602e397529552be4012a96 | Bin 0 -> 41478 bytes .../f74d4479d7a0247efebd02e2d7c007bd | Bin 0 -> 17219 bytes {gallery => onlylegs}/static/error.png | Bin {gallery => onlylegs}/static/fonts/Rubik.ttf | Bin {gallery => onlylegs}/static/fonts/font.css | 0 onlylegs/static/gen/js.js | 45 ++++++++++++++++++ onlylegs/static/gen/styles.css | 1 + {gallery => onlylegs}/static/icon.png | Bin {gallery => onlylegs}/static/js/index.js | 0 {gallery => onlylegs}/static/js/login.js | 0 .../static/js/notifications.js | 0 {gallery => onlylegs}/static/js/popup.js | 0 {gallery => onlylegs}/static/js/uploadTab.js | 0 {gallery => onlylegs}/static/js/webp.js | 0 {gallery => onlylegs}/static/logo-black.svg | 0 {gallery => onlylegs}/static/logo-white.svg | 0 {gallery => onlylegs}/static/manifest.json | 0 .../static/sass/animations.sass | 0 .../static/sass/components/banner.sass | 0 .../static/sass/components/buttons/block.sass | 0 .../sass/components/buttons/info-button.sass | 0 .../static/sass/components/buttons/pill.sass | 0 .../sass/components/buttons/top-of-page.sass | 0 .../static/sass/components/gallery.sass | 0 .../components/image-view/background.sass | 0 .../sass/components/image-view/image.sass | 0 .../sass/components/image-view/info-tab.sass | 0 .../sass/components/image-view/view.sass | 0 .../static/sass/components/navigation.sass | 0 .../static/sass/components/notification.sass | 0 .../static/sass/components/pop-up.sass | 0 .../static/sass/components/tags.sass | 0 .../static/sass/components/upload-panel.sass | 0 {gallery => onlylegs}/static/sass/style.sass | 0 .../static/sass/variables.sass | 0 {gallery => onlylegs}/templates/error.html | 0 {gallery => onlylegs}/templates/group.html | 0 {gallery => onlylegs}/templates/image.html | 0 {gallery => onlylegs}/templates/index.html | 0 {gallery => onlylegs}/templates/layout.html | 0 {gallery => onlylegs}/templates/list.html | 0 {gallery => onlylegs}/templates/profile.html | 0 .../templates/settings/account.html | 0 .../templates/settings/general.html | 0 .../templates/settings/logs.html | 0 .../templates/settings/server.html | 0 .../templates/settings/settings_layout.html | 0 {gallery => onlylegs}/utils/__init__.py | 0 {gallery => onlylegs}/utils/contrast.py | 0 {gallery => onlylegs}/utils/generate_image.py | 0 .../utils/metadata/__init__.py | 0 .../utils/metadata/helpers.py | 0 .../utils/metadata/mapping.py | 0 {gallery => onlylegs}/views/__init__.py | 0 {gallery => onlylegs}/views/group.py | 6 +-- {gallery => onlylegs}/views/image.py | 4 +- {gallery => onlylegs}/views/index.py | 2 +- {gallery => onlylegs}/views/profile.py | 2 +- {gallery => onlylegs}/views/settings.py | 0 run.py | 2 +- 76 files changed, 66 insertions(+), 20 deletions(-) rename {gallery => onlylegs}/__init__.py (94%) rename {gallery => onlylegs}/api.py (96%) rename {gallery => onlylegs}/auth.py (97%) rename {gallery => onlylegs}/config.py (100%) rename {gallery => onlylegs}/extensions.py (100%) rename {gallery => onlylegs}/langs/gb.json (100%) rename {gallery => onlylegs}/models.py (98%) create mode 100644 onlylegs/static/.webassets-cache/048ab2d0afc0753b21fd37760d6336a9 create mode 100644 onlylegs/static/.webassets-cache/245b356d139a542e35f66e3a24abcd83 create mode 100644 onlylegs/static/.webassets-cache/2703fbc99768caa84c204331ae2d614f create mode 100644 onlylegs/static/.webassets-cache/3f5dd8900ac3b9691849ca7ae7dfb270 create mode 100644 onlylegs/static/.webassets-cache/4fc49eeb19703df20e8b664cbd5024ff create mode 100644 onlylegs/static/.webassets-cache/616146e95f4b4f878d3737cf9fd1ea3c create mode 100644 onlylegs/static/.webassets-cache/695be00eadf74d7648f7b55cf5b436ec create mode 100644 onlylegs/static/.webassets-cache/8af5c2621194ec42b82ffd3ae7011057 create mode 100644 onlylegs/static/.webassets-cache/8d5c5be1180b0291e9379c042289e36c create mode 100644 onlylegs/static/.webassets-cache/9ba12571fa602e397529552be4012a96 create mode 100644 onlylegs/static/.webassets-cache/f74d4479d7a0247efebd02e2d7c007bd rename {gallery => onlylegs}/static/error.png (100%) rename {gallery => onlylegs}/static/fonts/Rubik.ttf (100%) rename {gallery => onlylegs}/static/fonts/font.css (100%) create mode 100644 onlylegs/static/gen/js.js create mode 100644 onlylegs/static/gen/styles.css rename {gallery => onlylegs}/static/icon.png (100%) rename {gallery => onlylegs}/static/js/index.js (100%) rename {gallery => onlylegs}/static/js/login.js (100%) rename {gallery => onlylegs}/static/js/notifications.js (100%) rename {gallery => onlylegs}/static/js/popup.js (100%) rename {gallery => onlylegs}/static/js/uploadTab.js (100%) rename {gallery => onlylegs}/static/js/webp.js (100%) rename {gallery => onlylegs}/static/logo-black.svg (100%) rename {gallery => onlylegs}/static/logo-white.svg (100%) rename {gallery => onlylegs}/static/manifest.json (100%) rename {gallery => onlylegs}/static/sass/animations.sass (100%) rename {gallery => onlylegs}/static/sass/components/banner.sass (100%) rename {gallery => onlylegs}/static/sass/components/buttons/block.sass (100%) rename {gallery => onlylegs}/static/sass/components/buttons/info-button.sass (100%) rename {gallery => onlylegs}/static/sass/components/buttons/pill.sass (100%) rename {gallery => onlylegs}/static/sass/components/buttons/top-of-page.sass (100%) rename {gallery => onlylegs}/static/sass/components/gallery.sass (100%) rename {gallery => onlylegs}/static/sass/components/image-view/background.sass (100%) rename {gallery => onlylegs}/static/sass/components/image-view/image.sass (100%) rename {gallery => onlylegs}/static/sass/components/image-view/info-tab.sass (100%) rename {gallery => onlylegs}/static/sass/components/image-view/view.sass (100%) rename {gallery => onlylegs}/static/sass/components/navigation.sass (100%) rename {gallery => onlylegs}/static/sass/components/notification.sass (100%) rename {gallery => onlylegs}/static/sass/components/pop-up.sass (100%) rename {gallery => onlylegs}/static/sass/components/tags.sass (100%) rename {gallery => onlylegs}/static/sass/components/upload-panel.sass (100%) rename {gallery => onlylegs}/static/sass/style.sass (100%) rename {gallery => onlylegs}/static/sass/variables.sass (100%) rename {gallery => onlylegs}/templates/error.html (100%) rename {gallery => onlylegs}/templates/group.html (100%) rename {gallery => onlylegs}/templates/image.html (100%) rename {gallery => onlylegs}/templates/index.html (100%) rename {gallery => onlylegs}/templates/layout.html (100%) rename {gallery => onlylegs}/templates/list.html (100%) rename {gallery => onlylegs}/templates/profile.html (100%) rename {gallery => onlylegs}/templates/settings/account.html (100%) rename {gallery => onlylegs}/templates/settings/general.html (100%) rename {gallery => onlylegs}/templates/settings/logs.html (100%) rename {gallery => onlylegs}/templates/settings/server.html (100%) rename {gallery => onlylegs}/templates/settings/settings_layout.html (100%) rename {gallery => onlylegs}/utils/__init__.py (100%) rename {gallery => onlylegs}/utils/contrast.py (100%) rename {gallery => onlylegs}/utils/generate_image.py (100%) rename {gallery => onlylegs}/utils/metadata/__init__.py (100%) rename {gallery => onlylegs}/utils/metadata/helpers.py (100%) rename {gallery => onlylegs}/utils/metadata/mapping.py (100%) rename {gallery => onlylegs}/views/__init__.py (100%) rename {gallery => onlylegs}/views/group.py (96%) rename {gallery => onlylegs}/views/image.py (96%) rename {gallery => onlylegs}/views/index.py (97%) rename {gallery => onlylegs}/views/profile.py (96%) rename {gallery => onlylegs}/views/settings.py (100%) diff --git a/gallery/__init__.py b/onlylegs/__init__.py similarity index 94% rename from gallery/__init__.py rename to onlylegs/__init__.py index 42ff00b..66c34d0 100644 --- a/gallery/__init__.py +++ b/onlylegs/__init__.py @@ -16,11 +16,11 @@ from flask import Flask, render_template, abort from werkzeug.exceptions import HTTPException from werkzeug.security import generate_password_hash -from gallery.extensions import db, migrate, login_manager, assets, compress, cache -from gallery.views import index, image, group, settings, profile -from gallery.models import User -from gallery import api -from gallery import auth +from onlylegs.extensions import db, migrate, login_manager, assets, compress, cache +from onlylegs.views import index, image, group, settings, profile +from onlylegs.models import User +from onlylegs import api +from onlylegs import auth INSTACE_DIR = os.path.join(platformdirs.user_config_dir("onlylegs"), "instance") diff --git a/gallery/api.py b/onlylegs/api.py similarity index 96% rename from gallery/api.py rename to onlylegs/api.py index 379e5b1..3ddfc3b 100644 --- a/gallery/api.py +++ b/onlylegs/api.py @@ -13,10 +13,10 @@ from flask_login import login_required, current_user from colorthief import ColorThief -from gallery.extensions import db -from gallery.models import Post, Group, GroupJunction -from gallery.utils import metadata as mt -from gallery.utils.generate_image import generate_thumbnail +from onlylegs.extensions import db +from onlylegs.models import Post, Group, GroupJunction +from onlylegs.utils import metadata as mt +from onlylegs.utils.generate_image import generate_thumbnail blueprint = Blueprint("api", __name__, url_prefix="/api") diff --git a/gallery/auth.py b/onlylegs/auth.py similarity index 97% rename from gallery/auth.py rename to onlylegs/auth.py index 0973384..6b5884f 100644 --- a/gallery/auth.py +++ b/onlylegs/auth.py @@ -10,8 +10,8 @@ from werkzeug.security import check_password_hash, generate_password_hash from flask_login import login_user, logout_user, login_required -from gallery.extensions import db -from gallery.models import User +from onlylegs.extensions import db +from onlylegs.models import User blueprint = Blueprint("auth", __name__, url_prefix="/auth") diff --git a/gallery/config.py b/onlylegs/config.py similarity index 100% rename from gallery/config.py rename to onlylegs/config.py diff --git a/gallery/extensions.py b/onlylegs/extensions.py similarity index 100% rename from gallery/extensions.py rename to onlylegs/extensions.py diff --git a/gallery/langs/gb.json b/onlylegs/langs/gb.json similarity index 100% rename from gallery/langs/gb.json rename to onlylegs/langs/gb.json diff --git a/gallery/models.py b/onlylegs/models.py similarity index 98% rename from gallery/models.py rename to onlylegs/models.py index 3958f9c..ace0b67 100644 --- a/gallery/models.py +++ b/onlylegs/models.py @@ -3,7 +3,7 @@ OnlyLegs - Database models and ions for SQLAlchemy """ from uuid import uuid4 from flask_login import UserMixin -from .extensions import db +from onlylegs.extensions import db class GroupJunction(db.Model): # pylint: disable=too-few-public-methods, C0103 diff --git a/onlylegs/static/.webassets-cache/048ab2d0afc0753b21fd37760d6336a9 b/onlylegs/static/.webassets-cache/048ab2d0afc0753b21fd37760d6336a9 new file mode 100644 index 0000000000000000000000000000000000000000..0872bc81a4f1c35a117adac1490bc102492445e5 GIT binary patch literal 23 ZcmZo*naaZe0X-ba24?1#hL#pn^Z+gF1Xln6 literal 0 HcmV?d00001 diff --git a/onlylegs/static/.webassets-cache/245b356d139a542e35f66e3a24abcd83 b/onlylegs/static/.webassets-cache/245b356d139a542e35f66e3a24abcd83 new file mode 100644 index 0000000000000000000000000000000000000000..78379136832c5c264b245cdef9b3d78a24ecd756 GIT binary patch literal 857 zcmZ{j$!>!%5QZzYr#yv^iG*F7#i8^8dh5AYLtJ8o800|HMV0yx?fZ7T;BF}rBlth& zp9Ofk__#ekbI08cTvVp-NA$8l2;;iN8?~)xW#u#Z~Y0gNVe2bBCM>#2g#^~w&JR^m&EQE-T zTQ$m)Q$k+diDq|VJ6`@h{{L1+Zos8<^{H(l^YwcpbZe_KSTD-~T@{`@$*${>|`vP@^E>Rj%godt1)oXm%!`HlpXQx^W@MDFub3#N_PsqWsdl z6y1XS;>?oF{5&fKT@y2lf(iu#YlT{%T0;Z;su7BT%DIs2EG@`^Sm~3WUw~?DPHI{S T&>oP{7?wcfpi)31r|1CyrH?%t literal 0 HcmV?d00001 diff --git a/onlylegs/static/.webassets-cache/3f5dd8900ac3b9691849ca7ae7dfb270 b/onlylegs/static/.webassets-cache/3f5dd8900ac3b9691849ca7ae7dfb270 new file mode 100644 index 0000000000000000000000000000000000000000..2dd0d1f3ef4550986c1dc06d205269c0f675cab1 GIT binary patch literal 23 ZcmZo*naaZe0X-ZhmPsj=hNdP{^Z+jA1cCqn literal 0 HcmV?d00001 diff --git a/onlylegs/static/.webassets-cache/4fc49eeb19703df20e8b664cbd5024ff b/onlylegs/static/.webassets-cache/4fc49eeb19703df20e8b664cbd5024ff new file mode 100644 index 0000000000000000000000000000000000000000..62aea8f6c26ddb1114ed5e12d2224e25a5accc6b GIT binary patch literal 17209 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 literal 0 HcmV?d00001 diff --git a/onlylegs/static/.webassets-cache/8af5c2621194ec42b82ffd3ae7011057 b/onlylegs/static/.webassets-cache/8af5c2621194ec42b82ffd3ae7011057 new file mode 100644 index 0000000000000000000000000000000000000000..c1f36866fc9f02f4df33a51697f99eb8e4d8c9b8 GIT binary patch literal 47 wcmZo*nX1A70X+&vMkZ+{#uf%iX@)7LKu%(6a;l}FQJR^7S&CVjLGlzm0Pb-MVgLXD literal 0 HcmV?d00001 diff --git a/onlylegs/static/.webassets-cache/8d5c5be1180b0291e9379c042289e36c b/onlylegs/static/.webassets-cache/8d5c5be1180b0291e9379c042289e36c new file mode 100644 index 0000000000000000000000000000000000000000..751fcc9e0c618e4d073a79f5e856650da72f107b GIT binary patch literal 32813 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 literal 0 HcmV?d00001 diff --git a/onlylegs/static/.webassets-cache/9ba12571fa602e397529552be4012a96 b/onlylegs/static/.webassets-cache/9ba12571fa602e397529552be4012a96 new file mode 100644 index 0000000000000000000000000000000000000000..95e2e28b14fbbc9a6afb98acb6eefd20d32d2fd5 GIT binary patch literal 41478 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 literal 0 HcmV?d00001 diff --git a/onlylegs/static/.webassets-cache/f74d4479d7a0247efebd02e2d7c007bd b/onlylegs/static/.webassets-cache/f74d4479d7a0247efebd02e2d7c007bd new file mode 100644 index 0000000000000000000000000000000000000000..4954e4d0418c9c2b0cfbd29b6e1800e1fe15c029 GIT binary patch literal 17219 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 zJ0){if(!image.src&&webpSupport){image.src=image.getAttribute('data-src')+'&e=webp'}else if(!image.src){image.src=image.getAttribute('data-src')}}}} +window.onload=function(){loadOnView();let times=document.querySelectorAll('.time');for(let i=0;i300||document.documentElement.scrollTop>20){topOfPage.classList.add('show');}else{topOfPage.classList.remove('show');} +topOfPage.onclick=function(){document.body.scrollTop=0;document.documentElement.scrollTop=0;} +let infoButton=document.querySelector('.info-button');if(infoButton){if(document.body.scrollTop>300||document.documentElement.scrollTop>20){infoButton.classList.remove('show');}else{infoButton.classList.add('show');} +infoButton.onclick=function(){popUpShow('OnlyLegs','V23.04.10 '+ +'using Phosphoricons and Flask.'+ +'
Made by Fluffy and others with ❤️');}}};window.onscroll=function(){loadOnView();let topOfPage=document.querySelector('.top-of-page');if(document.body.scrollTop>300||document.documentElement.scrollTop>20){topOfPage.classList.add('show');}else{topOfPage.classList.remove('show');} +let infoButton=document.querySelector('.info-button');if(infoButton){if(document.body.scrollTop>300||document.documentElement.scrollTop>20){infoButton.classList.remove('show');}else{infoButton.classList.add('show');}}};window.onresize=function(){loadOnView();};function showLogin(){cancelBtn=document.createElement('button');cancelBtn.classList.add('btn-block');cancelBtn.innerHTML='nuuuuuuuu';cancelBtn.onclick=popupDissmiss;loginBtn=document.createElement('button');loginBtn.classList.add('btn-block');loginBtn.classList.add('primary');loginBtn.innerHTML='Login';loginBtn.type='submit';loginBtn.setAttribute('form','loginForm');loginForm=document.createElement('form');loginForm.id='loginForm';loginForm.setAttribute('onsubmit','return login(event);');usernameInput=document.createElement('input');usernameInput.classList.add('input-block');usernameInput.type='text';usernameInput.placeholder='Namey';usernameInput.id='username';passwordInput=document.createElement('input');passwordInput.classList.add('input-block');passwordInput.type='password';passwordInput.placeholder='Passywassy';passwordInput.id='password';rememberMeSpan=document.createElement('span');rememberMeSpan.classList.add('input-checkbox');rememberMeInput=document.createElement('input');rememberMeInput.type='checkbox';rememberMeInput.id='remember-me';rememberMeLabel=document.createElement('label');rememberMeLabel.innerHTML='No forgetty me pls';rememberMeLabel.setAttribute('for','remember-me');rememberMeSpan.appendChild(rememberMeInput);rememberMeSpan.appendChild(rememberMeLabel);loginForm.appendChild(usernameInput);loginForm.appendChild(passwordInput);loginForm.appendChild(rememberMeSpan);popUpShow('Login!','Need an account? Register!',loginForm,[cancelBtn,loginBtn]);} +function login(event){event.preventDefault();let formUsername=document.querySelector("#username").value;let formPassword=document.querySelector("#password").value;let formRememberMe=document.querySelector("#remember-me").checked;if(formUsername===""||formPassword===""){addNotification("Please fill in all fields!!!!",3);return;} +const formData=new FormData();formData.append("username",formUsername);formData.append("password",formPassword);formData.append("remember-me",formRememberMe);fetch('/auth/login',{method:'POST',body:formData}).then(response=>{if(response.ok){location.reload();}else{if(response.status===403){addNotification('None but devils play past here... Wrong information',2);}else if(response.status===500){addNotification('Server exploded, F\'s in chat',2);}else{addNotification('Error logging in, blame someone',2);}}}).catch(error=>{addNotification('Error logging in, blame someone',2);});} +function showRegister(){cancelBtn=document.createElement('button');cancelBtn.classList.add('btn-block');cancelBtn.innerHTML='nuuuuuuuu';cancelBtn.onclick=popupDissmiss;registerBtn=document.createElement('button');registerBtn.classList.add('btn-block');registerBtn.classList.add('primary');registerBtn.innerHTML='Register';registerBtn.type='submit';registerBtn.setAttribute('form','registerForm');registerForm=document.createElement('form');registerForm.id='registerForm';registerForm.setAttribute('onsubmit','return register(event);');usernameInput=document.createElement('input');usernameInput.classList.add('input-block');usernameInput.type='text';usernameInput.placeholder='Namey';usernameInput.id='username';emailInput=document.createElement('input');emailInput.classList.add('input-block');emailInput.type='text';emailInput.placeholder='E mail!';emailInput.id='email';passwordInput=document.createElement('input');passwordInput.classList.add('input-block');passwordInput.type='password';passwordInput.placeholder='Passywassy';passwordInput.id='password';passwordInputRepeat=document.createElement('input');passwordInputRepeat.classList.add('input-block');passwordInputRepeat.type='password';passwordInputRepeat.placeholder='Passywassy again!';passwordInputRepeat.id='password-repeat';registerForm.appendChild(usernameInput);registerForm.appendChild(emailInput);registerForm.appendChild(passwordInput);registerForm.appendChild(passwordInputRepeat);popUpShow('Who are you?','Already have an account? Login!',registerForm,[cancelBtn,registerBtn]);} +function register(event){event.preventDefault();let formUsername=document.querySelector("#username").value;let formEmail=document.querySelector("#email").value;let formPassword=document.querySelector("#password").value;let formPasswordRepeat=document.querySelector("#password-repeat").value;if(formUsername===""||formEmail===""||formPassword===""||formPasswordRepeat===""){addNotification("Please fill in all fields!!!!",3);return;} +const formData=new FormData();formData.append("username",formUsername);formData.append("email",formEmail);formData.append("password",formPassword);formData.append("password-repeat",formPasswordRepeat);fetch('/auth/register',{method:'POST',body:formData}).then(response=>{if(response.ok){addNotification('Registered successfully! Now please login to continue',1);showLogin();}else{if(response.status===400){response.json().then(data=>{for(let i=0;i{addNotification('Error logging in, blame someone',2);});} +function addNotification(notificationText,notificationLevel){const notificationContainer=document.querySelector('.notifications');const successIcon='';const criticalIcon='';const warningIcon='';const infoIcon='';const notification=document.createElement('div');notification.classList.add('sniffle__notification');notification.onclick=function(){if(notification){notification.classList.add('hide');setTimeout(function(){notificationContainer.removeChild(notification);},500);}};const iconElement=document.createElement('span');iconElement.classList.add('sniffle__notification-icon');notification.appendChild(iconElement);if(notificationLevel===1){notification.classList.add('success');iconElement.innerHTML=successIcon;}else if(notificationLevel===2){notification.classList.add('critical');iconElement.innerHTML=criticalIcon;}else if(notificationLevel===3){notification.classList.add('warning');iconElement.innerHTML=warningIcon;}else{notification.classList.add('info');iconElement.innerHTML=infoIcon;} +const description=document.createElement('span');description.classList.add('sniffle__notification-text');description.innerHTML=notificationText;notification.appendChild(description);notificationContainer.appendChild(notification);setTimeout(function(){notification.classList.add('show');},5);setTimeout(function(){if(notification){notification.classList.add('hide');setTimeout(function(){notificationContainer.removeChild(notification);},500);}},5000);} +function popUpShow(titleText,subtitleText,bodyContent=null,userActions=null){const popupSelector=document.querySelector('.pop-up');const headerSelector=document.querySelector('.pop-up-header');const actionsSelector=document.querySelector('.pop-up-controlls');headerSelector.innerHTML='';actionsSelector.innerHTML='';const titleElement=document.createElement('h2');titleElement.innerHTML=titleText;headerSelector.appendChild(titleElement);const subtitleElement=document.createElement('p');subtitleElement.innerHTML=subtitleText;headerSelector.appendChild(subtitleElement);if(bodyContent){headerSelector.appendChild(bodyContent);} +if(userActions){for(let i=0;iClose';} +document.querySelector("html").style.overflow="hidden";popupSelector.style.display='block';setTimeout(function(){popupSelector.classList.add('active')},5);} +function popupDissmiss(){const popupSelector=document.querySelector('.pop-up');document.querySelector("html").style.overflow="auto";popupSelector.classList.remove('active');setTimeout(function(){popupSelector.style.display='none';},200);} +window.addEventListener("dragover",(event)=>{event.preventDefault();},false);window.addEventListener("drop",(event)=>{event.preventDefault();},false);function openUploadTab(){let uploadTab=document.querySelector(".upload-panel");document.querySelector("html").style.overflow="hidden";uploadTab.style.display="block";setTimeout(function(){uploadTab.classList.add("open");},5);} +function closeUploadTab(){let uploadTab=document.querySelector(".upload-panel");let uploadTabContainer=document.querySelector(".upload-panel .container");document.querySelector("html").style.overflow="auto";uploadTab.classList.remove("open");setTimeout(function(){uploadTab.style.display="none";uploadTabContainer.style.transform="";uploadTab.dataset.lastY=0;},250);} +function toggleUploadTab(){let uploadTab=document.querySelector(".upload-panel");if(uploadTab.classList.contains("open")){closeUploadTab();}else{openUploadTab();}} +function tabDragStart(event){event.preventDefault();let uploadTab=document.querySelector(".upload-panel .container");let offset=uploadTab.getBoundingClientRect().y;uploadTab.classList.add("dragging");document.addEventListener('touchmove',event=>{if(uploadTab.classList.contains("dragging")){if(event.touches[0].clientY-offset>=0){uploadTab.dataset.lastY=event.touches[0].clientY;}else{uploadTab.dataset.lastY=offset;} +uploadTab.style.transform=`translateY(${uploadTab.dataset.lastY-offset}px)`;}});} +function tabDragStopped(event){event.preventDefault();let uploadTab=document.querySelector(".upload-panel .container");uploadTab.classList.remove("dragging");if(uploadTab.dataset.lastY>(screen.height*0.3)){closeUploadTab();}else{uploadTab.style.transition="transform 0.25s cubic-bezier(0.76, 0, 0.17, 1)";uploadTab.style.transform="translateY(0px)";setTimeout(function(){uploadTab.style.transition="";},250);}} +function fileActivate(event){event.preventDefault() +let fileDrop=document.querySelector('.fileDrop-block');let fileDropTitle=fileDrop.querySelector('.status');fileDrop.classList.remove('error');fileDrop.classList.add('edging');fileDropTitle.innerHTML='Drop to upload!';} +function fileDefault(){let fileDrop=document.querySelector('.fileDrop-block');let fileDropTitle=fileDrop.querySelector('.status');fileDrop.classList.remove('error');fileDrop.classList.remove('edging');fileDropTitle.innerHTML='Choose or Drop file';} +function fileDropHandle(event){event.preventDefault() +let fileDrop=document.querySelector('.fileDrop-block');let fileUpload=fileDrop.querySelector('#file');fileUpload.files=event.dataTransfer.files;fileDefault();fileChanged();} +function fileChanged(){let dropBlock=document.querySelector('.fileDrop-block');let dropBlockStatus=dropBlock.querySelector('.status');let dropBlockInput=dropBlock.querySelector('#file');if(dropBlockInput.value!==""){dropBlock.classList.add('active');dropBlockStatus.innerHTML=dropBlockInput.files[0].name;}else{fileDefault();}} +function clearUpload(){let fileDrop=document.querySelector('#uploadForm');let fileUpload=fileDrop.querySelector('#file');let fileAlt=fileDrop.querySelector('#alt');let fileDescription=fileDrop.querySelector('#description');let fileTags=fileDrop.querySelector('#tags');fileUpload.value="";fileAlt.value="";fileDescription.value="";fileTags.value="";} +document.addEventListener('DOMContentLoaded',()=>{let uploadTab=document.querySelector(".upload-panel");if(!uploadTab){return;} +let uploadTabDrag=uploadTab.querySelector("#dragIndicator");let uploadForm=uploadTab.querySelector('#uploadForm');let fileDrop=uploadForm.querySelector('.fileDrop-block');let fileDropTitle=fileDrop.querySelector('.status');let fileUpload=fileDrop.querySelector('#file');let fileAlt=uploadForm.querySelector('#alt');let fileDescription=uploadForm.querySelector('#description');let fileTags=uploadForm.querySelector('#tags');clearUpload();fileDefault();uploadTabDrag.addEventListener('touchstart',tabDragStart,false);uploadTabDrag.addEventListener('touchend',tabDragStopped,false);fileDrop.addEventListener('dragover',fileActivate,false);fileDrop.addEventListener('dragenter',fileActivate,false);fileDrop.addEventListener('dragleave',fileDefault,false);fileDrop.addEventListener('drop',fileDropHandle,false);fileUpload.addEventListener('change',fileChanged,false);fileUpload.addEventListener('click',fileDefault,false);uploadForm.addEventListener('submit',(event)=>{event.preventDefault() +if(fileUpload.value===""){fileDrop.classList.add('error');fileDropTitle.innerHTML='No file selected!';return;} +let formData=new FormData();formData.append("file",fileUpload.files[0]);formData.append("alt",fileAlt.value);formData.append("description",fileDescription.value);formData.append("tags",fileTags.value);fetch('/api/upload',{method:'POST',body:formData}) +.then(data=>{addNotification("Image uploaded successfully",1);}).catch(error=>{switch(response.status){case 500:addNotification("Server exploded, F's in chat",2) +break;case 400:case 404:addNotification("Error uploading. Blame yourself",2) +break;case 403:addNotification("None but devils play past here...",2) +break;case 413:addNotification("File too large!!!!!!",2);break;default:addNotification("Error uploading file, blame someone",2) +break;}});clearUpload();fileDrop.classList.remove('active');fileDropTitle.innerHTML='Choose or Drop file';});});function checkWebpSupport(){let webpSupport=false;try{webpSupport=document.createElement('canvas').toDataURL('image/webp').indexOf('data:image/webp')===0;}catch(e){webpSupport=false;} +return webpSupport;} \ No newline at end of file diff --git a/onlylegs/static/gen/styles.css b/onlylegs/static/gen/styles.css new file mode 100644 index 0000000..888b0a9 --- /dev/null +++ b/onlylegs/static/gen/styles.css @@ -0,0 +1 @@ +@keyframes imgLoading{0%{background-position:-468px 0}100%{background-position:468px 0}}@keyframes uploadingLoop{0%{left:-100%}100%{left:100%}}:root{--bg-dim:16,16,16;--bg-bright:232,227,227;--bg-100:21,21,21;--bg-200:26.1,26.1,26.1;--bg-300:31.2,31.2,31.2;--bg-400:36.3,36.3,36.3;--bg-500:41.4,41.4,41.4;--bg-600:46.5,46.5,46.5;--fg-dim:102,102,102;--fg-white:232,227,227;--fg-black:16,16,16;--black:21,21,21;--white:232,227,227;--red:182,100,103;--orange:217,140,95;--yellow:217,188,140;--green:140,151,125;--blue:141,163,185;--purple:169,136,176;--primary:var(--green);--warning:var(--orange);--critical:var(--red);--success:var(--green);--info:var(--blue);--rad:6px;--rad-inner:calc(var(--rad) / 2);--animation-smooth:cubic-bezier(0.76,0,0.17,1);--animation-bounce:cubic-bezier(.68,-0.55,.27,1.55);--breakpoint:800px}@keyframes imgLoading{0%{background-position:-468px 0}100%{background-position:468px 0}}@keyframes uploadingLoop{0%{left:-100%}100%{left:100%}}@keyframes notificationTimeout{0%{left:-100%;height:3px}90%{left:0;height:3px}95%{left:0;height:0}100%{left:0;height:0}}.notifications{margin:0;padding:0;width:450px;height:auto;position:fixed;top:.3rem;right:.3rem;display:flex;flex-direction:column;z-index:621}.sniffle__notification{margin:0 0 .3rem 0;padding:0;width:450px;height:auto;max-height:100px;display:flex;flex-direction:row;position:relative;background-color:RGB(var(--bg-300));border-radius:var(--rad-inner);color:RGB(var(--fg-white));opacity:0;transform:scale(0.8);box-sizing:border-box;overflow:hidden;transition:all .25s ease-in-out,opacity .2s ease-in-out,transform .2s cubic-bezier(0.68,-0.55,0.27,1.55)}.sniffle__notification::after{content:"";width:100%;height:3px;position:absolute;bottom:0;left:0;background-color:RGB(var(--fg-white));z-index:+2;animation:notificationTimeout 5.1s linear}.sniffle__notification.success{color:RGB(var(--success))}.sniffle__notification.success::after{background-color:RGB(var(--success))}.sniffle__notification.warning{color:RGB(var(--warning))}.sniffle__notification.warning::after{background-color:RGB(var(--warning))}.sniffle__notification.critical{color:RGB(var(--critical))}.sniffle__notification.critical::after{background-color:RGB(var(--critical))}.sniffle__notification.info{color:RGB(var(--info))}.sniffle__notification.info::after{background-color:RGB(var(--info))}.sniffle__notification.show{opacity:1;transform:scale(1)}.sniffle__notification.hide{margin:0;max-height:0;opacity:0;transform:translateX(100%);transition:all .4s ease-in-out,max-height .2s ease-in-out}.sniffle__notification-icon{margin:0;padding:1rem;width:auto;height:auto;display:flex;justify-content:center;align-items:center;background-color:RGB(var(--bg-200))}.sniffle__notification-icon svg{width:1.25rem;height:1.25rem}.sniffle__notification-text{margin:0;padding:1rem;width:auto;height:auto;display:flex;flex-direction:column;justify-self:center;align-self:center;font-size:1rem;font-weight:600;line-height:1;text-align:left}@media(max-width:800px){.notifications{width:calc(100vw - .6rem);height:auto}.sniffle__notification{width:100%}.sniffle__notification.hide{opacity:0;transform:translateY(-5rem)}.sniffle__notification-time{width:100%}}.pop-up{width:100%;height:100vh;position:fixed;inset:0;display:none;background-color:rgba(var(--bg-dim),0.8);opacity:0;z-index:101;transition:opacity .2s ease}.pop-up .pop-up__click-off{width:100%;height:100vh;position:absolute;top:0;left:0;z-index:+1}.pop-up .pop-up-wrapper{margin:0;padding:0;width:621px;height:auto;position:absolute;bottom:50%;left:50%;transform:translate(-50%,50%) scale(0.8);display:flex;flex-direction:column;background-color:RGB(var(--bg-200));border-radius:var(--rad);overflow:hidden;z-index:+2;transition:transform .2s var(--animation-smooth)}.pop-up .pop-up-header{margin:0;padding:1rem;width:100%;height:auto;display:flex;flex-direction:column;gap:.5rem;overflow-y:auto;overflow-x:hidden;text-size-adjust:auto;text-overflow:ellipsis}.pop-up .pop-up-header h2,.pop-up .pop-up-header h3{margin:0;width:100%;position:sticky;top:0;font-size:1.5rem;font-weight:700;text-align:left;color:RGB(var(--fg-white))}.pop-up .pop-up-header p{margin:0;width:100%;font-size:1rem;font-weight:400;text-align:left;color:RGB(var(--fg-white))}.pop-up .pop-up-header p svg{width:1rem;height:1rem;display:inline-block;vertical-align:middle}.pop-up .pop-up-header a,.pop-up .pop-up-header .link{color:RGB(var(--primary));cursor:pointer;text-decoration:none}.pop-up .pop-up-header a:hover,.pop-up .pop-up-header .link:hover{text-decoration:underline}.pop-up .pop-up-header img{margin:auto;padding:0;width:auto;height:auto;max-width:100%;max-height:40vh;border-radius:var(--rad-inner)}.pop-up .pop-up-header form{margin:0;padding:0;width:100%;height:auto;display:flex;flex-direction:column;gap:.5rem;justify-content:center}.pop-up .pop-up-controlls{margin:0;padding:.25rem;width:100%;height:auto;display:flex;flex-direction:row;justify-content:flex-end;gap:.25rem;background-color:RGB(var(--bg-100))}.pop-up.active{opacity:1}.pop-up.active .pop-up-wrapper{transform:translate(-50%,50%) scale(1)}@media(max-width:800px){.pop-up .pop-up-wrapper{width:calc(100% - .75rem);max-height:95vh}.pop-up .pop-up-content{max-height:100%}.pop-up .pop-up-content img{max-height:50vh}.pop-up .pop-up-controlls button{width:100%}.pop-up.active{opacity:1}}.upload-panel{position:fixed;left:3.5rem;bottom:0;display:none;width:calc(100% - 3.5rem);height:100vh;background-color:transparent;color:RGB(var(--fg-white));overflow:hidden;z-index:68;transition:background-color .25s cubic-bezier(0.76,0,0.17,1)}.upload-panel h3{margin:0;padding:0;font-size:1.5rem;font-weight:700}.upload-panel p{margin:0;padding:0;font-size:1rem;font-weight:400}.upload-panel form{margin:0;padding:0;width:100%;display:flex;flex-direction:column;align-items:center;gap:.5rem}.upload-panel form input,.upload-panel form button{width:100%}.upload-panel .click-off{position:absolute;top:0;left:0;width:100%;height:100%;z-index:+1}.upload-panel .container{padding:1rem;position:absolute;bottom:0;left:-27rem;width:27rem;height:100%;display:flex;flex-direction:column;gap:1rem;background-color:RGB(var(--bg-200));z-index:+2;transition:left .25s cubic-bezier(0.76,0,0.17,1),bottom .25s cubic-bezier(0.76,0,0.17,1)}.upload-panel .container #dragIndicator{display:none;position:absolute;top:0;left:0;width:100%;height:5rem;z-index:+1}.upload-panel .container #dragIndicator::after{content:'';width:8rem;height:3px;position:absolute;top:.5rem;left:50%;transform:translate(-50%,-50%);background-color:RGB(var(--bg-400));border-radius:var(--rad-inner)}.upload-panel .upload-jobs{display:flex;flex-direction:column;gap:.5rem;border-radius:var(--rad);overflow-y:auto}.upload-panel .upload-jobs .job{width:100%;height:5rem;min-height:5rem;position:relative;display:flex;align-items:center;gap:.5rem;background-color:RGB(var(--bg-200));border-radius:var(--rad);overflow:hidden}.upload-panel .upload-jobs .job img{position:absolute;top:0;left:0;width:100%;height:5rem;object-fit:cover}.upload-panel .upload-jobs .job .img-filter{position:absolute;top:0;left:0;width:100%;height:100%;background-image:linear-gradient(to right,RGB(var(--bg-100)),transparent)}.upload-panel .upload-jobs .job .job__status{margin:0;padding:0;position:absolute;top:.5rem;left:.5rem;font-size:1rem;font-weight:600;color:RGB(var(--fg-white));z-index:+3;transition:color .25s cubic-bezier(0.76,0,0.17,1)}.upload-panel .upload-jobs .job .progress{width:100%;height:var(--rad-inner);position:absolute;bottom:0;left:-100%;background-color:RGB(var(--primary));animation:uploadingLoop 1s cubic-bezier(0.76,0,0.17,1) infinite;z-index:+5;transition:left 1s cubic-bezier(0.76,0,0.17,1)}.upload-panel .upload-jobs .job.critical .job__status,.upload-panel .upload-jobs .job.critical .progress{color:RGB(var(--critical))}.upload-panel .upload-jobs .job.success .job__status{color:RGB(var(--success))}.upload-panel .upload-jobs .job.success .progress{height:0;animation:none}.upload-panel .upload-jobs .job.warning .job__status,.upload-panel .upload-jobs .job.warning .progress{color:RGB(var(--warning))}.upload-panel .upload-jobs .job.critical .progress,.upload-panel .upload-jobs .job.success .progress,.upload-panel .upload-jobs .job.warning .progress{height:0}.upload-panel.open{background-color:rgba(var(--bg-dim),0.8)}.upload-panel.open .container{left:0}@media(max-width:800px){.upload-panel{width:100%;height:calc(100vh - 3.5rem);height:calc(100dvh - 3.5rem);left:0;bottom:3.5rem}.upload-panel .container{width:100%;height:95%;left:0;bottom:-100vh;border-radius:var(--rad) var(--rad) 0 0}.upload-panel .container #dragIndicator{display:block}.upload-panel.open .container{left:0;bottom:0}}.tag-icon{margin:0;padding:.25rem .5rem;display:flex;align-items:center;justify-content:center;gap:.25rem;font-size:.9rem;font-weight:500;text-decoration:none;border-radius:var(--rad-inner);border:none;background-color:RGBA(var(--primary),0.1);color:RGB(var(--primary));cursor:pointer;transition:background-color .2s ease-in-out,color .2s ease-in-out}.tag-icon svg{width:1.15rem;height:1.15rem}.tag-icon:hover{background-color:RGBA(var(--primary),0.3)}.navigation{margin:0;padding:0;width:3.5rem;height:100%;height:100dvh;display:flex;flex-direction:column;justify-content:space-between;position:fixed;top:0;left:0;background-color:RGB(var(--bg-100));color:RGB(var(--fg-white));z-index:69}.navigation .logo{margin:0;padding:0;width:3.5rem;height:3.5rem;min-height:3.5rem;display:flex;flex-direction:row;align-items:center}.navigation-spacer{height:100%}.navigation-item{margin:0;padding:0;width:3.5rem;height:3.5rem;min-height:3.5rem;position:relative;display:flex;flex-direction:row;justify-content:center;align-items:center;background-color:transparent;border:none;text-decoration:none}.navigation-item>svg{margin:0;padding:.5rem;width:2.5rem;height:2.5rem;border-radius:var(--rad-inner);color:RGB(var(--fg-white));transition:color .2s ease-out,transform .2s ease-out}.navigation-item .tool-tip{margin:0;padding:.4rem .7rem;display:block;position:absolute;top:50%;left:3rem;transform:translateY(-50%);font-size:.9rem;font-weight:500;background-color:RGB(var(--bg-100));color:RGB(var(--fg-white));opacity:0;border-radius:var(--rad-inner);transition:opacity .2s cubic-bezier(0.76,0,0.17,1),left .2s cubic-bezier(0.76,0,0.17,1);pointer-events:none}.navigation-item .tool-tip>svg{margin:0;font-size:1rem;width:.75rem;height:.75rem;display:block;position:absolute;top:50%;left:-0.45rem;transform:translateY(-50%);color:RGB(var(--bg-100))}.navigation-item:hover>svg{background:RGBA(var(--fg-white),0.1)}.navigation-item:hover span{opacity:1;left:3.9rem}.navigation-item.selected>svg{color:RGB(var(--primary))}.navigation-item.selected::before{content:'';display:block;position:absolute;top:3px;left:0;width:3px;height:calc(100% - 6px);background-color:RGB(var(--primary));border-radius:var(--rad-inner)}@media(max-width:800px){.navigation{width:100vw;height:3.5rem;flex-direction:row;justify-content:space-around;position:fixed;top:unset;bottom:0;left:0}.navigation>span{display:none}.navigation .logo{display:none}.navigation-item{margin:.25rem;padding:0;width:3rem;height:3rem;min-height:3rem}.navigation-item .tool-tip{display:none}.navigation-item.selected::before{top:unset;bottom:0;left:0;width:100%;height:3px}}.banner,.banner-small{width:100%;position:relative;color:RGB(var(--fg-white))}.banner .link,.banner-small .link{padding:.1rem .3rem;text-decoration:none;font-weight:500;background-color:RGB(var(--fg-white));color:RGB(var(--fg-black));border-radius:var(--rad-inner);cursor:pointer}.banner .link:hover,.banner-small .link:hover{background-color:RGB(var(--fg-black));color:RGB(var(--fg-white))}.banner::after,.banner-small::after{content:'';width:var(--rad);height:calc(var(--rad) * 2);position:absolute;bottom:calc(var(--rad) * -2);left:0;background-color:RGB(var(--bg-bright));border-radius:var(--rad) 0 0 0;box-shadow:0 calc(var(--rad) * -1) 0 0 RGB(var(--bg-100))}.banner{height:30rem;background-color:RGB(var(--bg-300))}.banner img{position:absolute;inset:0;width:100%;height:100%;background-color:inherit;object-fit:cover;object-position:center center}.banner .banner-filter{position:absolute;inset:0;width:100%;height:100%;background:linear-gradient(to right,RGB(var(--primary)),transparent);z-index:+1}.banner .banner-content{padding:.5rem;width:100%;height:auto;position:absolute;left:0;bottom:0;display:grid;grid-template-columns:1fr auto;grid-template-rows:1fr auto auto;grid-template-areas:'info info' 'header header' 'subtitle options';z-index:+2}.banner .banner-content .banner-header,.banner .banner-content .banner-info,.banner .banner-content .banner-subtitle{margin:0;padding:0;width:100%}.banner .banner-content .banner-header{grid-area:header;margin:.5rem 0;text-align:left;font-size:6.9rem;font-weight:700;color:RGB(var(--primary))}.banner .banner-content .banner-info{grid-area:info;font-size:1rem;font-weight:400}.banner .banner-content .banner-subtitle{grid-area:subtitle;font-size:1rem;font-weight:400}.banner .banner-content .pill-row{margin-top:auto;grid-area:options}.banner-small{height:3.5rem;background-color:RGB(var(--bg-100))}.banner-small .banner-content{padding:0 .5rem;width:100%;height:100%;position:absolute;inset:0;display:flex;flex-direction:row;justify-content:flex-start;z-index:+2}.banner-small .banner-content .banner-header,.banner-small .banner-content .banner-info{margin:auto 0;padding:0;width:auto;height:auto;justify-self:flex-start}.banner-small .banner-content .banner-header{margin-right:.6rem;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;text-align:left;font-weight:700;font-size:1.5rem;color:RGB(var(--primary))}.banner-small .banner-content .banner-info{margin-right:.6rem;font-size:.9rem;font-weight:400}.banner-small .banner-content .pill-row{margin-left:auto;width:auto}@media(max-width:800px){.banner::after,.banner-small::after{display:none}.banner{min-height:17rem;height:auto}.banner .banner-content{padding:.5rem;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.banner .banner-content .banner-header{margin:1rem 0;text-align:center;font-size:2.5rem}.banner .banner-content .banner-info{font-size:1.1rem;text-align:center}.banner .banner-content .banner-subtitle{display:none}.banner .banner-content .pill-row{margin-top:0rem}.banner-small .banner-content .banner-info{display:none}}.gallery-grid{margin:0;padding:.35rem;width:100%;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.gallery-item{margin:.35rem;padding:0;height:auto;position:relative;border-radius:var(--rad-inner);box-shadow:0 .15rem .4rem .1rem RGBA(var(--bg-100),0.4);box-sizing:border-box;overflow:hidden;transition:box-shadow .2s cubic-bezier(0.79,0.14,0.15,0.86)}.gallery-item .image-filter{margin:0;padding:.5rem;width:100%;min-height:30%;height:auto;position:absolute;left:0;bottom:0;display:flex;flex-direction:column;justify-content:flex-end;background-image:linear-gradient(to top,rgba(var(--bg-100),0.69),transparent);opacity:0;z-index:+4;transition:opacity .2s cubic-bezier(0.79,0.14,0.15,0.86)}.gallery-item .image-filter .image-title,.gallery-item .image-filter .image-subtitle{margin:0;padding:0;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:RGB(var(--fg-white));text-shadow:0 0 2px RGB(var(--fg-black))}.gallery-item .image-filter .image-title{font-size:.9rem;font-weight:700}.gallery-item .image-filter .image-subtitle{font-size:.8rem;font-weight:400}.gallery-item img{width:100%;height:100%;position:absolute;inset:0;object-fit:cover;object-position:center;background-color:RGB(var(--bg-bright));filter:blur(0.5rem);opacity:0;transition:all .2s cubic-bezier(0.79,0.14,0.15,0.86)}.gallery-item img.loaded{filter:blur(0);opacity:1}.gallery-item:after{content:"";display:block;padding-bottom:100%}.gallery-item:hover{box-shadow:0 .2rem .4rem .1rem RGBA(var(--bg-100),0.6)}.gallery-item:hover .image-filter{opacity:1}.group-item{margin:.35rem;padding:0;height:auto;position:relative;border-radius:var(--rad-inner);box-sizing:border-box;overflow:hidden}.group-item .image-filter{margin:0;padding:.5rem;width:100%;min-height:30%;height:auto;position:absolute;left:0;bottom:0;display:flex;flex-direction:column;justify-content:flex-end;background-image:linear-gradient(to top,rgba(var(--bg-100),0.8),transparent);z-index:+4}.group-item .image-filter .image-title,.group-item .image-filter .image-subtitle{margin:0;padding:0;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:RGB(var(--fg-white));text-shadow:0 0 2px RGB(var(--fg-black))}.group-item .image-filter .image-title{font-size:.9rem;font-weight:700}.group-item .image-filter .image-subtitle{font-size:.8rem;font-weight:400}.group-item .images{margin:0;padding:0;width:100%;height:100%;position:absolute;inset:0;display:block}.group-item .images img{width:100%;height:100%;position:absolute;top:0;left:0;object-fit:cover;object-position:center;background-color:RGB(var(--bg-bright));border-radius:var(--rad-inner);box-shadow:0 0 .4rem .25rem RGBA(var(--bg-100),0.1);filter:blur(0.5rem);opacity:0;transition:all .2s cubic-bezier(0.79,0.14,0.15,0.86)}.group-item .images img.loaded{filter:blur(0);opacity:1}.group-item .images.size-1 .data-1{transform:scale(0.8) rotate(3deg)}.group-item .images.size-2 .data-1{transform:scale(0.7) rotate(-3deg) translate(10%,10%);z-index:+2}.group-item .images.size-2 .data-2{transform:scale(0.7) rotate(3deg) translate(-10%,-10%);z-index:+1}.group-item .images.size-3 .data-1{transform:scale(0.6) rotate(3deg) translate(-25%,25%);z-index:+3}.group-item .images.size-3 .data-2{transform:scale(0.6) rotate(-5deg) translate(25%,10%);z-index:+2}.group-item .images.size-3 .data-3{transform:scale(0.6) rotate(-1deg) translate(-15%,-23%);z-index:+1}.group-item:after{content:"";display:block;padding-bottom:100%}.group-item:hover .images.size-1 .data-1{transform:scale(0.9) rotate(0deg)}.group-item:hover .images.size-2 .data-1{transform:scale(0.75) rotate(-1deg) translate(12%,14%);z-index:+2}.group-item:hover .images.size-2 .data-2{transform:scale(0.75) rotate(1deg) translate(-12%,-10%);z-index:+1}.group-item:hover .images.size-3 .data-1{transform:scale(0.65) rotate(1deg) translate(-24%,24%);z-index:+3}.group-item:hover .images.size-3 .data-2{transform:scale(0.65) rotate(-2deg) translate(24%,10%);z-index:+2}.group-item:hover .images.size-3 .data-3{transform:scale(0.65) rotate(0deg) translate(-15%,-25%);z-index:+1}@media(max-width:800px){.gallery-grid{grid-template-columns:auto auto auto}}.top-of-page{margin:0;padding:0;width:auto;height:auto;position:fixed;bottom:.75rem;right:-3rem;display:flex;justify-content:center;align-items:center;background-color:RGB(var(--bg-300));color:RGB(var(--fg-white));border-radius:var(--rad);border:none;opacity:0;z-index:20;cursor:pointer;transition:all .2s cubic-bezier(0.86,0,0.07,1)}.top-of-page:hover{color:RGB(var(--primary))}.top-of-page svg{margin:.5rem;width:1.25rem;height:1.25rem}.top-of-page.show{right:.75rem;opacity:1}@media(max-width:800px){.top-of-page{bottom:4.25rem}}.info-button{margin:0;padding:0;width:auto;height:auto;position:fixed;bottom:.75rem;right:-3rem;display:flex;justify-content:center;align-items:center;background-color:RGB(var(--bg-300));color:RGB(var(--fg-white));border-radius:var(--rad);border:none;opacity:0;z-index:20;cursor:pointer;transition:all .2s cubic-bezier(0.86,0,0.07,1)}.info-button:hover{color:RGB(var(--info))}.info-button svg{margin:.5rem;width:1.25rem;height:1.25rem}.info-button.show{right:.75rem;opacity:1}@media(max-width:800px){.info-button{bottom:4.25rem}}.pill-row{margin:0;padding:0;width:100%;height:auto;display:flex;justify-content:center;align-items:center;gap:.5rem}.pill-row>div{margin:0;padding:0;display:flex;background-color:RGB(var(--bg-200));border-radius:var(--rad);box-shadow:0 1px 0 RGB(var(--bg-100)),0 -1px 0 RGB(var(--bg-300))}.pill-text{margin:0;padding:.5rem 1rem;width:auto;height:2.5rem;display:flex;justify-content:center;align-items:center;position:relative;text-align:center;font-size:1rem;font-weight:400;background-color:RGB(var(--bg-200));color:RGB(var(--fg-white));border-radius:var(--rad)}.pill-item{margin:0;padding:.5rem;width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;position:relative;border:none;background-color:transparent;color:RGB(var(--fg-white))}.pill-item svg{width:1.25rem;height:1.25rem}.pill-item:hover{cursor:pointer;color:RGB(var(--primary))}.pill__critical{color:RGB(var(--critical))}.pill__critical span{background:RGB(var(--critical));color:RGB(var(--fg-white))}.pill__critical span svg{color:RGB(var(--critical))}.pill__critical:hover{color:RGB(var(--fg-white))}.pill__info{color:RGB(var(--info))}.pill__info span{color:RGB(var(--info))}.pill__info:hover{color:RGB(var(--fg-white))}@media(max-width:800px){.tool-tip{display:none}}.btn-block{padding:.4rem .7rem;width:auto;min-height:2.3rem;display:flex;justify-content:center;align-items:center;gap:.5rem;position:relative;font-size:1rem;font-weight:400;text-align:center;background-color:RGBA(var(--white),0.1);color:RGB(var(--white));border:none;border-radius:var(--rad-inner);box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--white),0.2);outline:none;cursor:pointer;transition:background-color .15s ease-in-out,color .15s ease-in-out,box-shadow .15s ease-in-out}.btn-block:hover,.btn-block:focus-visible{background-color:RGBA(var(--white),0.2);box-shadow:0 1px 0 RGBA(var(--black),0.3),0 -1px 0 RGBA(var(--white),0.3)}.btn-block.primary{color:RGB(var(--primary));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--white),0.2)}.btn-block.primary:hover,.btn-block.primary:focus-visible{background-color:RGBA(var(--primary),0.1);color:RGB(var(--primary));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--primary),0.2)}.btn-block.critical{color:RGB(var(--critical));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--white),0.2)}.btn-block.critical:hover,.btn-block.critical:focus-visible{background-color:RGBA(var(--critical),0.1);color:RGB(var(--critical));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--critical),0.2)}.btn-block.warning{color:RGB(var(--warning));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--white),0.2)}.btn-block.warning:hover,.btn-block.warning:focus-visible{background-color:RGBA(var(--warning),0.1);color:RGB(var(--warning));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--warning),0.2)}.btn-block.success{color:RGB(var(--success));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--white),0.2)}.btn-block.success:hover,.btn-block.success:focus-visible{background-color:RGBA(var(--success),0.1);color:RGB(var(--success));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--success),0.2)}.btn-block.info{color:RGB(var(--info));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--white),0.2)}.btn-block.info:hover,.btn-block.info:focus-visible{background-color:RGBA(var(--info),0.1);color:RGB(var(--info));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--info),0.2)}.btn-block.black{color:RGB(var(--black));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--white),0.2)}.btn-block.black:hover,.btn-block.black:focus-visible{background-color:RGBA(var(--black),0.1);color:RGB(var(--black));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--black),0.2)}.input-checkbox{padding:0;display:flex;justify-content:flex-start;align-items:center;gap:.5rem;position:relative}.input-checkbox label{font-size:1rem;font-weight:400;text-align:left;color:RGB(var(--fg-white))}.input-block{padding:.4rem .7rem;width:auto;min-height:2.3rem;display:flex;justify-content:flex-start;align-items:center;position:relative;font-size:1rem;font-weight:400;text-align:left;background-color:RGBA(var(--white),0.1);color:RGB(var(--white));border:none;border-bottom:3px solid RGBA(var(--white),0.1);border-radius:var(--rad-inner);box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--white),0.2);outline:none;cursor:pointer;transition:background-color .2s ease-in-out,color .2s ease-in-out}.input-block:not(:focus):not([value=""]):not(:placeholder-shown){border-color:RGBA(var(--white),0.3)}.input-block:hover{border-color:RGBA(var(--white),0.3)}.input-block:focus{border-color:RGB(var(--primary))}.input-block.black{color:RGB(var(--black));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--white),0.2)}.input-block.black:hover,.input-block.black:focus-visible{background-color:RGBA(var(--black),0.1);color:RGB(var(--black));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--black),0.2)}.fileDrop-block{padding:1rem 1.25rem;width:100%;min-height:2.3rem;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:.5rem;position:relative;font-size:1rem;font-weight:400;text-align:center;background-color:RGBA(var(--white),0.1);color:RGB(var(--white));border:none;border-radius:var(--rad-inner);box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--white),0.2);outline:none;cursor:pointer;overflow:hidden;transition:background-color .2s ease-in-out,color .2s ease-in-out,box-shadow .15s ease-in-out}.fileDrop-block input{position:absolute;inset:0;opacity:0;cursor:pointer}.fileDrop-block .status{width:100%;white-space:nowrap;text-overflow:ellipsis;text-align:center;overflow:hidden}.fileDrop-block:hover,.fileDrop-block:focus-visible{background-color:RGBA(var(--white),0.2);color:RGB(var(--white));box-shadow:0 1px 0 RGBA(var(--black),0.3),0 -1px 0 RGBA(var(--white),0.3)}.fileDrop-block.active{background-color:RGBA(var(--primary),0.2);color:RGB(var(--primary));box-shadow:0 1px 0 RGBA(var(--black),0.3),0 -1px 0 RGBA(var(--primary),0.3)}.fileDrop-block.edging{background-color:RGBA(var(--white),0.2);color:RGB(var(--white));box-shadow:0 1px 0 RGBA(var(--black),0.3),0 -1px 0 RGBA(var(--white),0.3)}.fileDrop-block.edging input{display:none}.fileDrop-block.error{background-color:RGBA(var(--critical),0.2);color:RGB(var(--critical));box-shadow:0 1px 0 RGBA(var(--black),0.3),0 -1px 0 RGBA(var(--critical),0.3)}.background{width:100%;height:100vh;position:fixed;top:0;left:0;background-color:RGB(var(--bg-300));background-image:linear-gradient(to right,RGB(var(--bg-400)) 15%,RGB(var(--bg-200)) 35%,RGB(var(--bg-400)) 50%);background-size:1000px 640px;animation:imgLoading 1.8s linear infinite forwards;user-select:none;overflow:hidden;z-index:1}.background img{position:absolute;top:0;left:0;width:100%;height:100%;background-color:RGB(var(--fg-white));filter:blur(1rem) saturate(1.2);transform:scale(1.1);object-fit:cover;object-position:center center}.background span{position:absolute;top:0;left:0;width:100%;height:100%;z-index:+1}.info-container{width:27rem;height:100vh;position:absolute;top:0;left:0;display:flex;flex-direction:column;gap:0;background-color:RGB(var(--bg-200));overflow-y:auto;z-index:+4;transition:left .3s cubic-bezier(0.76,0,0.17,1)}.info-container.collapsed{left:-27rem}.info-tab{width:100%;display:flex;flex-direction:column;position:relative;background-color:RGB(var(--bg-200));border-radius:var(--rad);transition:max-height .3s cubic-bezier(0.79,0.14,0.15,0.86)}.info-tab.collapsed{height:2.5rem}.info-tab.collapsed .collapse-indicator{transform:rotate(90deg)}.info-tab.collapsed .info-table{height:0;padding:0}.collapse-indicator{margin:0;padding:0;width:1.25rem;height:1.25rem;position:absolute;top:.6rem;right:.6rem;background-color:transparent;color:RGB(var(--primary));border:none;z-index:+2;transition:transform .15s cubic-bezier(0.79,0.14,0.15,0.86);cursor:pointer}.info-header{margin:0;padding:.5rem;width:100%;height:2.5rem;display:flex;justify-content:start;align-items:center;gap:.5rem;position:sticky;top:0;z-index:+1;background-color:RGB(var(--bg-200))}.info-header svg{margin:0;padding:0;width:1.25rem;height:1.25rem;fill:RGB(var(--primary))}.info-header h2{margin:0;padding:0;font-size:1.1rem;font-weight:500;color:RGB(var(--primary));text-overflow:ellipsis;overflow:hidden}.info-table{margin:0;padding:.5rem;display:flex;flex-direction:column;gap:1rem;color:RGB(var(--fg-white));overflow-x:hidden}.info-table p{margin:0;padding:0;font-size:1rem;font-weight:400;text-overflow:ellipsis;overflow:hidden}.info-table .link{margin:0;padding:0;color:RGB(var(--primary));cursor:pointer;text-decoration:none}.info-table .link:hover{text-decoration:underline}.info-table table{margin:0;padding:0;width:100%;overflow-x:hidden;border-collapse:collapse}.info-table table tr{white-space:nowrap}.info-table table tr td{padding-bottom:.5rem;max-width:0;font-size:1rem;font-weight:400;vertical-align:top}.info-table table tr td:first-child{padding-right:.5rem;width:50%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.info-table table tr td:last-child{width:50%;white-space:normal;word-break:break-word}.info-table table tr:last-of-type td{padding-bottom:0}.img-colours{width:100%;display:flex;gap:.5rem}.img-colours span{margin:0;padding:0;width:1.5rem;height:1.5rem;display:flex;justify-content:center;align-items:center;border-radius:var(--rad-inner)}.img-groups{width:100%;display:flex;flex-wrap:wrap;gap:.5rem}@media(max-width:1100px){.info-container{width:100%;height:100%;position:relative;display:flex;flex-direction:column;gap:.5rem}.info-container.collapsed{left:unset}}.image-container{margin:auto;padding:.5rem;width:100%;height:100%;display:flex;overflow:hidden}.image-container img{margin:auto;padding:0;width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;object-position:center}.image-grid{padding:0;width:100%;height:100vh;position:relative;display:flex;flex-direction:column;gap:.5rem;z-index:3}.image-grid .image-block{margin:0 0 0 27rem;padding:0;width:calc(100% - 27rem);height:100vh;position:relative;display:flex;flex-direction:column;gap:0;z-index:3;transition:margin .3s cubic-bezier(0.76,0,0.17,1),width .3s cubic-bezier(0.76,0,0.17,1)}.image-grid .image-block .pill-row{margin-bottom:.5rem}.image-grid.collapsed .image-block{margin:0;width:100%}@media(max-width:1100px){.image-grid{padding:.5rem;height:auto}.image-grid .image-block{margin:0;width:100%;height:auto;gap:.5rem;transition:margin 0s,width 0s}.image-grid .image-block .image-container{margin:0 auto;padding:0;max-height:69vh}.image-grid .image-block .image-container img{max-height:69vh}.image-grid .image-block .pill-row{margin-bottom:0}.image-grid .image-block .pill-row #fullscreenImage{display:none}.info-container{background:transparent}.info-header{border-radius:var(--rad) var(--rad) 0 0}.info-tab.collapsed .info-header{border-radius:var(--rad)}}*{box-sizing:border-box;font-family:"Rubik",sans-serif;scrollbar-color:RGB(var(--primary)) transparent}* ::-webkit-scrollbar{width:.5rem}* ::-webkit-scrollbar-track{background:RGB(var(--bg-200))}* ::-webkit-scrollbar-thumb{background:RGB(var(--primary))}* ::-webkit-scrollbar-thumb:hover{background:RGB(var(--fg-white))}html,body{margin:0;padding:0;min-height:100vh;max-width:100vw;background-color:RGB(var(--fg-white));scroll-behavior:smooth;overflow-x:hidden}.wrapper{margin:0;padding:0 0 0 3.5rem;min-height:100vh;display:flex;flex-direction:column;background-color:RGB(var(--bg-bright));color:RGB(var(--bg-100))}.big-text{height:20rem;display:flex;flex-direction:column;justify-content:center;align-items:center;color:RGB(var(--bg-100))}.big-text h1{margin:0 2rem;font-size:4rem;font-weight:900;text-align:center}.big-text p{margin:0 2rem;max-width:40rem;font-size:1rem;font-weight:400;text-align:center}.error-page{width:100%;height:100vh;display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:RGB(var(--bg-bright))}.error-page h1{margin:0 2rem;font-size:6.9rem;font-weight:900;text-align:center;color:var(--primary)}.error-page p{margin:0 2rem;max-width:40rem;font-size:1.25rem;font-weight:400;text-align:center;color:var(--fg-black)}@media(max-width:800px){.wrapper{padding:0 0 3.5rem 0}.big-text{height:calc(75vh - 3.5rem)}.big-text h1{font-size:3.5rem}.error-page{height:calc(100vh - 3.5rem)}.error-page h1{font-size:4.5rem}.error-page p{max-width:100%;font-size:1rem}}:root{--bg-dim:16,16,16;--bg-bright:232,227,227;--bg-100:21,21,21;--bg-200:26.1,26.1,26.1;--bg-300:31.2,31.2,31.2;--bg-400:36.3,36.3,36.3;--bg-500:41.4,41.4,41.4;--bg-600:46.5,46.5,46.5;--fg-dim:102,102,102;--fg-white:232,227,227;--fg-black:16,16,16;--black:21,21,21;--white:232,227,227;--red:182,100,103;--orange:217,140,95;--yellow:217,188,140;--green:140,151,125;--blue:141,163,185;--purple:169,136,176;--primary:var(--green);--warning:var(--orange);--critical:var(--red);--success:var(--green);--info:var(--blue);--rad:6px;--rad-inner:calc(var(--rad) / 2);--animation-smooth:cubic-bezier(0.76,0,0.17,1);--animation-bounce:cubic-bezier(.68,-0.55,.27,1.55);--breakpoint:800px} \ No newline at end of file diff --git a/gallery/static/icon.png b/onlylegs/static/icon.png similarity index 100% rename from gallery/static/icon.png rename to onlylegs/static/icon.png diff --git a/gallery/static/js/index.js b/onlylegs/static/js/index.js similarity index 100% rename from gallery/static/js/index.js rename to onlylegs/static/js/index.js diff --git a/gallery/static/js/login.js b/onlylegs/static/js/login.js similarity index 100% rename from gallery/static/js/login.js rename to onlylegs/static/js/login.js diff --git a/gallery/static/js/notifications.js b/onlylegs/static/js/notifications.js similarity index 100% rename from gallery/static/js/notifications.js rename to onlylegs/static/js/notifications.js diff --git a/gallery/static/js/popup.js b/onlylegs/static/js/popup.js similarity index 100% rename from gallery/static/js/popup.js rename to onlylegs/static/js/popup.js diff --git a/gallery/static/js/uploadTab.js b/onlylegs/static/js/uploadTab.js similarity index 100% rename from gallery/static/js/uploadTab.js rename to onlylegs/static/js/uploadTab.js diff --git a/gallery/static/js/webp.js b/onlylegs/static/js/webp.js similarity index 100% rename from gallery/static/js/webp.js rename to onlylegs/static/js/webp.js diff --git a/gallery/static/logo-black.svg b/onlylegs/static/logo-black.svg similarity index 100% rename from gallery/static/logo-black.svg rename to onlylegs/static/logo-black.svg diff --git a/gallery/static/logo-white.svg b/onlylegs/static/logo-white.svg similarity index 100% rename from gallery/static/logo-white.svg rename to onlylegs/static/logo-white.svg diff --git a/gallery/static/manifest.json b/onlylegs/static/manifest.json similarity index 100% rename from gallery/static/manifest.json rename to onlylegs/static/manifest.json diff --git a/gallery/static/sass/animations.sass b/onlylegs/static/sass/animations.sass similarity index 100% rename from gallery/static/sass/animations.sass rename to onlylegs/static/sass/animations.sass diff --git a/gallery/static/sass/components/banner.sass b/onlylegs/static/sass/components/banner.sass similarity index 100% rename from gallery/static/sass/components/banner.sass rename to onlylegs/static/sass/components/banner.sass diff --git a/gallery/static/sass/components/buttons/block.sass b/onlylegs/static/sass/components/buttons/block.sass similarity index 100% rename from gallery/static/sass/components/buttons/block.sass rename to onlylegs/static/sass/components/buttons/block.sass diff --git a/gallery/static/sass/components/buttons/info-button.sass b/onlylegs/static/sass/components/buttons/info-button.sass similarity index 100% rename from gallery/static/sass/components/buttons/info-button.sass rename to onlylegs/static/sass/components/buttons/info-button.sass diff --git a/gallery/static/sass/components/buttons/pill.sass b/onlylegs/static/sass/components/buttons/pill.sass similarity index 100% rename from gallery/static/sass/components/buttons/pill.sass rename to onlylegs/static/sass/components/buttons/pill.sass diff --git a/gallery/static/sass/components/buttons/top-of-page.sass b/onlylegs/static/sass/components/buttons/top-of-page.sass similarity index 100% rename from gallery/static/sass/components/buttons/top-of-page.sass rename to onlylegs/static/sass/components/buttons/top-of-page.sass diff --git a/gallery/static/sass/components/gallery.sass b/onlylegs/static/sass/components/gallery.sass similarity index 100% rename from gallery/static/sass/components/gallery.sass rename to onlylegs/static/sass/components/gallery.sass diff --git a/gallery/static/sass/components/image-view/background.sass b/onlylegs/static/sass/components/image-view/background.sass similarity index 100% rename from gallery/static/sass/components/image-view/background.sass rename to onlylegs/static/sass/components/image-view/background.sass diff --git a/gallery/static/sass/components/image-view/image.sass b/onlylegs/static/sass/components/image-view/image.sass similarity index 100% rename from gallery/static/sass/components/image-view/image.sass rename to onlylegs/static/sass/components/image-view/image.sass diff --git a/gallery/static/sass/components/image-view/info-tab.sass b/onlylegs/static/sass/components/image-view/info-tab.sass similarity index 100% rename from gallery/static/sass/components/image-view/info-tab.sass rename to onlylegs/static/sass/components/image-view/info-tab.sass diff --git a/gallery/static/sass/components/image-view/view.sass b/onlylegs/static/sass/components/image-view/view.sass similarity index 100% rename from gallery/static/sass/components/image-view/view.sass rename to onlylegs/static/sass/components/image-view/view.sass diff --git a/gallery/static/sass/components/navigation.sass b/onlylegs/static/sass/components/navigation.sass similarity index 100% rename from gallery/static/sass/components/navigation.sass rename to onlylegs/static/sass/components/navigation.sass diff --git a/gallery/static/sass/components/notification.sass b/onlylegs/static/sass/components/notification.sass similarity index 100% rename from gallery/static/sass/components/notification.sass rename to onlylegs/static/sass/components/notification.sass diff --git a/gallery/static/sass/components/pop-up.sass b/onlylegs/static/sass/components/pop-up.sass similarity index 100% rename from gallery/static/sass/components/pop-up.sass rename to onlylegs/static/sass/components/pop-up.sass diff --git a/gallery/static/sass/components/tags.sass b/onlylegs/static/sass/components/tags.sass similarity index 100% rename from gallery/static/sass/components/tags.sass rename to onlylegs/static/sass/components/tags.sass diff --git a/gallery/static/sass/components/upload-panel.sass b/onlylegs/static/sass/components/upload-panel.sass similarity index 100% rename from gallery/static/sass/components/upload-panel.sass rename to onlylegs/static/sass/components/upload-panel.sass diff --git a/gallery/static/sass/style.sass b/onlylegs/static/sass/style.sass similarity index 100% rename from gallery/static/sass/style.sass rename to onlylegs/static/sass/style.sass diff --git a/gallery/static/sass/variables.sass b/onlylegs/static/sass/variables.sass similarity index 100% rename from gallery/static/sass/variables.sass rename to onlylegs/static/sass/variables.sass diff --git a/gallery/templates/error.html b/onlylegs/templates/error.html similarity index 100% rename from gallery/templates/error.html rename to onlylegs/templates/error.html diff --git a/gallery/templates/group.html b/onlylegs/templates/group.html similarity index 100% rename from gallery/templates/group.html rename to onlylegs/templates/group.html diff --git a/gallery/templates/image.html b/onlylegs/templates/image.html similarity index 100% rename from gallery/templates/image.html rename to onlylegs/templates/image.html diff --git a/gallery/templates/index.html b/onlylegs/templates/index.html similarity index 100% rename from gallery/templates/index.html rename to onlylegs/templates/index.html diff --git a/gallery/templates/layout.html b/onlylegs/templates/layout.html similarity index 100% rename from gallery/templates/layout.html rename to onlylegs/templates/layout.html diff --git a/gallery/templates/list.html b/onlylegs/templates/list.html similarity index 100% rename from gallery/templates/list.html rename to onlylegs/templates/list.html diff --git a/gallery/templates/profile.html b/onlylegs/templates/profile.html similarity index 100% rename from gallery/templates/profile.html rename to onlylegs/templates/profile.html diff --git a/gallery/templates/settings/account.html b/onlylegs/templates/settings/account.html similarity index 100% rename from gallery/templates/settings/account.html rename to onlylegs/templates/settings/account.html diff --git a/gallery/templates/settings/general.html b/onlylegs/templates/settings/general.html similarity index 100% rename from gallery/templates/settings/general.html rename to onlylegs/templates/settings/general.html diff --git a/gallery/templates/settings/logs.html b/onlylegs/templates/settings/logs.html similarity index 100% rename from gallery/templates/settings/logs.html rename to onlylegs/templates/settings/logs.html diff --git a/gallery/templates/settings/server.html b/onlylegs/templates/settings/server.html similarity index 100% rename from gallery/templates/settings/server.html rename to onlylegs/templates/settings/server.html diff --git a/gallery/templates/settings/settings_layout.html b/onlylegs/templates/settings/settings_layout.html similarity index 100% rename from gallery/templates/settings/settings_layout.html rename to onlylegs/templates/settings/settings_layout.html diff --git a/gallery/utils/__init__.py b/onlylegs/utils/__init__.py similarity index 100% rename from gallery/utils/__init__.py rename to onlylegs/utils/__init__.py diff --git a/gallery/utils/contrast.py b/onlylegs/utils/contrast.py similarity index 100% rename from gallery/utils/contrast.py rename to onlylegs/utils/contrast.py diff --git a/gallery/utils/generate_image.py b/onlylegs/utils/generate_image.py similarity index 100% rename from gallery/utils/generate_image.py rename to onlylegs/utils/generate_image.py diff --git a/gallery/utils/metadata/__init__.py b/onlylegs/utils/metadata/__init__.py similarity index 100% rename from gallery/utils/metadata/__init__.py rename to onlylegs/utils/metadata/__init__.py diff --git a/gallery/utils/metadata/helpers.py b/onlylegs/utils/metadata/helpers.py similarity index 100% rename from gallery/utils/metadata/helpers.py rename to onlylegs/utils/metadata/helpers.py diff --git a/gallery/utils/metadata/mapping.py b/onlylegs/utils/metadata/mapping.py similarity index 100% rename from gallery/utils/metadata/mapping.py rename to onlylegs/utils/metadata/mapping.py diff --git a/gallery/views/__init__.py b/onlylegs/views/__init__.py similarity index 100% rename from gallery/views/__init__.py rename to onlylegs/views/__init__.py diff --git a/gallery/views/group.py b/onlylegs/views/group.py similarity index 96% rename from gallery/views/group.py rename to onlylegs/views/group.py index 53557cd..7fe1bdc 100644 --- a/gallery/views/group.py +++ b/onlylegs/views/group.py @@ -5,9 +5,9 @@ sounds more limiting that it actually is in this gallery """ from flask import Blueprint, render_template, url_for -from gallery.models import Post, User, GroupJunction, Group -from gallery.extensions import db -from gallery.utils import contrast +from onlylegs.models import Post, User, GroupJunction, Group +from onlylegs.extensions import db +from onlylegs.utils import contrast blueprint = Blueprint("group", __name__, url_prefix="/group") diff --git a/gallery/views/image.py b/onlylegs/views/image.py similarity index 96% rename from gallery/views/image.py rename to onlylegs/views/image.py index b1de219..a192f15 100644 --- a/gallery/views/image.py +++ b/onlylegs/views/image.py @@ -3,8 +3,8 @@ Onlylegs - Image View """ from math import ceil from flask import Blueprint, render_template, url_for, current_app -from gallery.models import Post, GroupJunction, Group -from gallery.extensions import db +from onlylegs.models import Post, GroupJunction, Group +from onlylegs.extensions import db blueprint = Blueprint("image", __name__, url_prefix="/image") diff --git a/gallery/views/index.py b/onlylegs/views/index.py similarity index 97% rename from gallery/views/index.py rename to onlylegs/views/index.py index b676f1e..3cc0155 100644 --- a/gallery/views/index.py +++ b/onlylegs/views/index.py @@ -6,7 +6,7 @@ from math import ceil from flask import Blueprint, render_template, request, current_app from werkzeug.exceptions import abort -from gallery.models import Post +from onlylegs.models import Post blueprint = Blueprint("gallery", __name__) diff --git a/gallery/views/profile.py b/onlylegs/views/profile.py similarity index 96% rename from gallery/views/profile.py rename to onlylegs/views/profile.py index cfe7007..bde1330 100644 --- a/gallery/views/profile.py +++ b/onlylegs/views/profile.py @@ -5,7 +5,7 @@ from flask import Blueprint, render_template, request from werkzeug.exceptions import abort from flask_login import current_user -from gallery.models import Post, User +from onlylegs.models import Post, User blueprint = Blueprint("profile", __name__, url_prefix="/profile") diff --git a/gallery/views/settings.py b/onlylegs/views/settings.py similarity index 100% rename from gallery/views/settings.py rename to onlylegs/views/settings.py diff --git a/run.py b/run.py index b7efc15..28a7d1f 100644 --- a/run.py +++ b/run.py @@ -25,7 +25,7 @@ Configuration() if DEBUG: - from gallery import create_app + from onlylegs import create_app create_app().run(host=ADDRESS, port=PORT, debug=True, threaded=True) else: From 2ca022589a7a4706996596f2c676ed6a2a90ac60 Mon Sep 17 00:00:00 2001 From: Fluffy-Bean Date: Wed, 12 Apr 2023 17:25:08 +0000 Subject: [PATCH 02/15] Update version --- onlylegs/static/js/index.js | 2 +- pyproject.toml | 2 +- run.py | 2 +- setup/runner.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/onlylegs/static/js/index.js b/onlylegs/static/js/index.js index fdff447..9cae4bb 100644 --- a/onlylegs/static/js/index.js +++ b/onlylegs/static/js/index.js @@ -65,7 +65,7 @@ window.onload = function () { } infoButton.onclick = function () { popUpShow('OnlyLegs', - 'V23.04.10 ' + + 'V23.04.12 ' + 'using Phosphoricons and Flask.' + '
Made by Fluffy and others with ❤️'); } diff --git a/pyproject.toml b/pyproject.toml index e4c513a..6b2b85b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "onlylegs" -version = "23.04.10" +version = "23.04.12" description = "Gallery built for fast and simple image management" authors = ["Fluffy-Bean "] license = "MIT" diff --git a/run.py b/run.py index 28a7d1f..15b8f82 100644 --- a/run.py +++ b/run.py @@ -15,7 +15,7 @@ print( #+# #+# #+# #+#+# #+# #+# #+# #+# #+# #+# #+# #+# ######## ### #### ########## ### ########## ######### ######### ######## - Created by Fluffy Bean - Version 23.04.10 + Created by Fluffy Bean - Version 23.04.12 """ ) diff --git a/setup/runner.py b/setup/runner.py index 8a4f052..138c40c 100644 --- a/setup/runner.py +++ b/setup/runner.py @@ -31,4 +31,4 @@ class OnlyLegs(Application): return "OnlyLegs" def load(self): - return util.import_app("gallery:create_app()") + return util.import_app("onlylegs:create_app()") From ada415a369e58eac93de4dd8c29f3e4d949ce0e3 Mon Sep 17 00:00:00 2001 From: Fluffy-Bean Date: Fri, 14 Apr 2023 20:12:08 +0000 Subject: [PATCH 03/15] Fix login manager login view --- .gitignore | 4 ++-- onlylegs/__init__.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index c411669..1d90a84 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ -gallery/static/.webassets-cache -gallery/static/gen +onlylegs/static/.webassets-cache +onlylegs/static/gen instance/ migrations/ diff --git a/onlylegs/__init__.py b/onlylegs/__init__.py index 66c34d0..741a7e7 100644 --- a/onlylegs/__init__.py +++ b/onlylegs/__init__.py @@ -18,9 +18,9 @@ from werkzeug.security import generate_password_hash from onlylegs.extensions import db, migrate, login_manager, assets, compress, cache from onlylegs.views import index, image, group, settings, profile -from onlylegs.models import User from onlylegs import api from onlylegs import auth +from onlylegs.models import User INSTACE_DIR = os.path.join(platformdirs.user_config_dir("onlylegs"), "instance") @@ -78,7 +78,7 @@ def create_app(): # pylint: disable=R0914 # can also set session_protection to "strong" # this would protect against session hijacking login_manager.init_app(app) - login_manager.login_view = "gallery.index" + login_manager.login_view = "onlylegs.index" @login_manager.user_loader def load_user(user_id): From 6a8c22e8add0f06e49986f4ac834627abbcd983f Mon Sep 17 00:00:00 2001 From: Fluffy-Bean Date: Fri, 14 Apr 2023 20:13:32 +0000 Subject: [PATCH 04/15] :3 --- .../048ab2d0afc0753b21fd37760d6336a9 | Bin 23 -> 0 bytes .../245b356d139a542e35f66e3a24abcd83 | Bin 857 -> 0 bytes .../2703fbc99768caa84c204331ae2d614f | Bin 213 -> 0 bytes .../3f5dd8900ac3b9691849ca7ae7dfb270 | Bin 23 -> 0 bytes .../4fc49eeb19703df20e8b664cbd5024ff | Bin 17209 -> 0 bytes .../616146e95f4b4f878d3737cf9fd1ea3c | Bin 47 -> 0 bytes .../695be00eadf74d7648f7b55cf5b436ec | Bin 17225 -> 0 bytes .../8af5c2621194ec42b82ffd3ae7011057 | Bin 47 -> 0 bytes .../8d5c5be1180b0291e9379c042289e36c | Bin 32813 -> 0 bytes .../9ba12571fa602e397529552be4012a96 | Bin 41478 -> 0 bytes .../f74d4479d7a0247efebd02e2d7c007bd | Bin 17219 -> 0 bytes onlylegs/static/gen/js.js | 45 ------------------ onlylegs/static/gen/styles.css | 1 - 13 files changed, 46 deletions(-) delete mode 100644 onlylegs/static/.webassets-cache/048ab2d0afc0753b21fd37760d6336a9 delete mode 100644 onlylegs/static/.webassets-cache/245b356d139a542e35f66e3a24abcd83 delete mode 100644 onlylegs/static/.webassets-cache/2703fbc99768caa84c204331ae2d614f delete mode 100644 onlylegs/static/.webassets-cache/3f5dd8900ac3b9691849ca7ae7dfb270 delete mode 100644 onlylegs/static/.webassets-cache/4fc49eeb19703df20e8b664cbd5024ff delete mode 100644 onlylegs/static/.webassets-cache/616146e95f4b4f878d3737cf9fd1ea3c delete mode 100644 onlylegs/static/.webassets-cache/695be00eadf74d7648f7b55cf5b436ec delete mode 100644 onlylegs/static/.webassets-cache/8af5c2621194ec42b82ffd3ae7011057 delete mode 100644 onlylegs/static/.webassets-cache/8d5c5be1180b0291e9379c042289e36c delete mode 100644 onlylegs/static/.webassets-cache/9ba12571fa602e397529552be4012a96 delete mode 100644 onlylegs/static/.webassets-cache/f74d4479d7a0247efebd02e2d7c007bd delete mode 100644 onlylegs/static/gen/js.js delete mode 100644 onlylegs/static/gen/styles.css diff --git a/onlylegs/static/.webassets-cache/048ab2d0afc0753b21fd37760d6336a9 b/onlylegs/static/.webassets-cache/048ab2d0afc0753b21fd37760d6336a9 deleted file mode 100644 index 0872bc81a4f1c35a117adac1490bc102492445e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23 ZcmZo*naaZe0X-ba24?1#hL#pn^Z+gF1Xln6 diff --git a/onlylegs/static/.webassets-cache/245b356d139a542e35f66e3a24abcd83 b/onlylegs/static/.webassets-cache/245b356d139a542e35f66e3a24abcd83 deleted file mode 100644 index 78379136832c5c264b245cdef9b3d78a24ecd756..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 857 zcmZ{j$!>!%5QZzYr#yv^iG*F7#i8^8dh5AYLtJ8o800|HMV0yx?fZ7T;BF}rBlth& zp9Ofk__#ekbI08cTvVp-NA$8l2;;iN8?~)xW#u#Z~Y0gNVe2bBCM>#2g#^~w&JR^m&EQE-T zTQ$m)Q$k+diDq|VJ6`@h{{L1+Zos8<^{H(l^YwcpbZe_KSTD-~T@{`@$*${>|`vP@^E>Rj%godt1)oXm%!`HlpXQx^W@MDFub3#N_PsqWsdl z6y1XS;>?oF{5&fKT@y2lf(iu#YlT{%T0;Z;su7BT%DIs2EG@`^Sm~3WUw~?DPHI{S T&>oP{7?wcfpi)31r|1CyrH?%t diff --git a/onlylegs/static/.webassets-cache/3f5dd8900ac3b9691849ca7ae7dfb270 b/onlylegs/static/.webassets-cache/3f5dd8900ac3b9691849ca7ae7dfb270 deleted file mode 100644 index 2dd0d1f3ef4550986c1dc06d205269c0f675cab1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23 ZcmZo*naaZe0X-ZhmPsj=hNdP{^Z+jA1cCqn diff --git a/onlylegs/static/.webassets-cache/4fc49eeb19703df20e8b664cbd5024ff b/onlylegs/static/.webassets-cache/4fc49eeb19703df20e8b664cbd5024ff deleted file mode 100644 index 62aea8f6c26ddb1114ed5e12d2224e25a5accc6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17209 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 diff --git a/onlylegs/static/.webassets-cache/8af5c2621194ec42b82ffd3ae7011057 b/onlylegs/static/.webassets-cache/8af5c2621194ec42b82ffd3ae7011057 deleted file mode 100644 index c1f36866fc9f02f4df33a51697f99eb8e4d8c9b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 wcmZo*nX1A70X+&vMkZ+{#uf%iX@)7LKu%(6a;l}FQJR^7S&CVjLGlzm0Pb-MVgLXD diff --git a/onlylegs/static/.webassets-cache/8d5c5be1180b0291e9379c042289e36c b/onlylegs/static/.webassets-cache/8d5c5be1180b0291e9379c042289e36c deleted file mode 100644 index 751fcc9e0c618e4d073a79f5e856650da72f107b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32813 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 diff --git a/onlylegs/static/.webassets-cache/9ba12571fa602e397529552be4012a96 b/onlylegs/static/.webassets-cache/9ba12571fa602e397529552be4012a96 deleted file mode 100644 index 95e2e28b14fbbc9a6afb98acb6eefd20d32d2fd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41478 zcmeG_*={7saenaAd_`deVP{sXHk;RQC|HmU1BL)S34V}a7>nv=kt|KKyHVYoLjwc; z2>S#4kACxuBO>F-96bezm}> z`cvJd zdXCI~dlg38_uXUDf4-?cH2v$krorEYTOXT#+imaVRsfdot^4lSt(%S91PuAk;c2~Y z4+pv72kf?YJGqXq@*8~v)VbP!3bVprb+_HN{Y?equU`ka;Od*|@2WF?rP%`1$8NW+ z504ea8`x1aC&=CM6g-Q)dlcg-yji}dRB=k!litw4P4 zdzkCC-tP`Tu^lk3zPP&Hf2vM#kP2jB{AqhQne%DC2~+-dx7)|lZrVG5w8o*cNy0t8 zl?=Jv9lJZ=D#H0M-DA6Z3U)#v^aBIzRrSyYBXJ&RQdRGgX90qN2QP(4VbJu!oIJzN zAsP!0{DJ5Ja(&+c!A}u{eRGTa;lDn1w9WYy7uil@O{18JUwpl-9LhW-?pDX=+BlUN{hp` zyMyO{{Ly0(BT=35>|cY=WAmvN9D(-%=}CzD-N%?1eY*kS_|W22C)9L`)W0G1S?&7Uwy!~fyC<~@s^s)Y_CAHMGrFdZIt9~maKFv}p> zs^4N`mMnb(LxEXod8o+gRFyZpWWFjfD{Ridv6w-lU%|w-zkiL&PG*fCh)mT*VvlT= z%vg>1m%0N>LtsZhtEXJDt7G#czEO;i{GGXxKRg{Ej`&=w9b1DnYkMSZv+3@)HALKx z;0o;Wm>B|J0!f7kNSOfvlf#D)ewo1po6b0xi-+ukE>h4?^t<)3{S*S9m!->aKp+%5 zw3|Cmmq4!c>K*t8^mG`|GkSFCBL`!U3n8u1^qSMhD~MN3W8RP>Aldl!V|&{*)oYX? z<}}5)Z%8ra#l%T(&@V^}Pk2`y{b40(PsF@Y46wwwUG%pc~T5u5|t=15Z z^JvkMgg*~$12H^{$PjzP7Ac4Fc-0v6Ov2qalzf>r7Xs9f7TBnI6>=*J_1W;D#jKlK zw6*>nGK%uzO$BwAZhzZo4V{5l{B}XWyc$DxTez+~{hvTfY}rs|xZ-s(y(xeT1}f(@uy?Gbk|& znB%<)O~xTE(Lo3#Jbda8m~c}`Dg;)DAJOo(T|=QRR2<03FjEJq)Z9Fv^p6734B zb3u)(?U7a!RDe>M4kL183Y=SeWt)E}H~1ma77kGLg3$`fg;=o3GpF#sB(`CQIO0`^T0R7DGu+3L7xW?_XzBN_}}UE>Ho zL`$c`NDYdTNqI3{+6bJ8Xr&>DSXeehrp>`TdMB+EOq?{v6on}y8hFMG>S3dp1%rUX z_|C#kOpzHQ<+@qX)bs$~xE4QHlTf=u(H21nb|NA(!Pss0SS&8wiFBZ(1<_!OG!-*p zpP6Q5gmCiA{!oQaGqD5)@CFSyaf$U+U@W*F0xMEHNdW7!x5{+}&t1vkdnW71`59=b z{v=Bhp^QYf#^}JcY_EoBQf8^%3D?(WJsgBQ6`=(h+d%Q3-S*A>Z??C%0JjqcxD-=t z7)CEcOaOZlr43x}5857!Ako3%U!PMLb<{!5hC3}DqmAU{jPJh}I24j=l@7#8R_R{Pl<3NMM2k*spMYK#4oC&~VbR5^9jRPBCFmY^p=stl}VhF8XA9rDa{UlyghGE`7 zIn)JVnyAgd8Tj?%kB4J(d=kw=#FFR&FR9ma=uOkcX(SH9oK3F!h)We1ACF=puHfVK z$rv*{WG0(hi^4_k)F@JYmZO?M(S5&z{+@#;XTe&S{Aw?cWZ5d=W8_UD3&brDH*~n@ z7*4FRxIC+&fTfWhqMIrxG;|J7FAXePkB8h9tS)w2Sj93uHu_V`RZf3|xSAY!wgxX` z;k7~oBx0S0p_x&4uN8QgQB5Y1Y#Py$F+)}+f2l3h<$Mp9`jUb)CyVgUnxcS%xFDyx zj?qa)EDnBCv%Zj(e~-#EiS?}lbQy({CH^_s3sa!}%<4A{lk`|TOJaL;pA}|q% zVzRg{Q9`aN;FUpUGrzmkl4dj$#xlj9{{Bw^8)qxFRpB1+>+*q>AM2d$sYhwh%%Jjl^R5nUY1 zF=SRQ6xEji)%^`Rj(p8zYPgn^iPZr*7h7mbK7NFjZ5+(P94%m4VD0p}NCN8$pg0)E z%Qzp`A2lkuddJ*yq*`ot_tKOVkt`2@GqM>!jg)Z;=&xra%ojCuEuf^aWDpGUn#dX| zB#vLy>+FSr`i#C>A`Aha+1gcOrO#_KR8whTL^DybW~dSc(2Q6wIdk2mK`0BU5h)v_ zpm&a#*o;;E$}N=+%7U6%P4>>*CEHpBEy$}m@NxUVHOMbxNEgrH)q*)F(|iF^=< z#c{XWK*!Hy1$%K3yo;4EmAh^|*yJEinn|yrxP+{cghiUi87Bn!CS+N%yxv{6AD~764TL_L zcTON>vls3{zV9e)rDPRx*h*qf%*qM%XLaTy%I$Tc$H)nY9+>s)F^!+8We%e z-%}k)q&ufEh5@|gBM@C|i`GL-7&M_&grK34)2~&7TkuX^Ey6F*9*CP{5a{H6(;XiM zWm2x@L^=$^xWGAReL8_*IdG!IqV!oe)Bi$u=_KS=rP+0&M<6ap5oXW++7!1v{8d#BiTc9i~Da+vrVW! zz{bk(cp=6@>&y%!Wf3x*pR%o(fHv%!^K5ZlIHqcGIN=-2GySxXMN-_70Cn4k7IyRo zlaa40kzn#=gCe9XvW+7GT7)=SVzM`14E}j5N9tmer6WR1b7XCa5X}t#$~G4ErOp~z zsFv77qq#LL4j~^!6(aj=tTk4-?>p&*gWq6($|GzwJ+>H3KpP80!ppnfwL#@Yp>g1(XPOg-NK5k)Y< z$Y^ZT^s5VC8>4?CF!P>N_{6&=xolq9i1meJcp4xki%de~M)E<^IZ-O8kq<9WRK&c1 z(@yu{5E(eR3mbc`wAP3eihP-C^3FVzO8Q(r5Vs46;B`S`AVG?N(k`xP>SauF^pkrp zJ@vlZY-&&hR$^gIO-Z^bDU^RvbpkJ0#*va@(_I*(mR(CA6Qv;jVO-|v$!$(3n6RR2611z`5Mp#FR zZcAZPVRx*v6fMQ5X(?kx8YZHN!pa5fY6N>m0VXnqJ4!9nT**PcA{voEH z+tdd+KA3nQF-1hgN(!eJnM@0*f+M3OgW!=j%N|DVI=oXsg;8ED?jh%I`_Isp)!h=* zVs9xvH8Z<77YCID!a6FBfRaS+H4k6=cHcI~*Qk`(m9{y-ZbI0u@ETfn_n+VZjk`Xy zpcqWFZ1Dw#RG173gAC^s1rU`t|L7|gGjjPjFNC9oLR2Tq1XP@G>$F^n#ro+5WySRV zR~=AdGnb3yaHw4ygedT&iaS#^FfGz?V zXRnA1vkvUQ2=kbgl#X$7H2rjDf)eI?Clc_0{OHAFlq_p;6)B=F+gYu_;AvU#{~7#m zH5YhEDqU=X=aNee@Vt;iH^9tdNJipl65sDmHzXv}xF$xz8jCX(6m2uVZia2FzVf{4 zPLKkpMH%z58e6FO+*EMF8=l05Mv{wysn&QU;WL=>*30<{0>pxa0NAM>oE3V~7#0S@ zog5+O5qQ;!PMOhgN6unWm*$s%!`WiBly8V7!4F3R(?(mCJ~Qc9WQ28Vsu0ZZC1TkV zY2+Gl$-<}jf)jXoxtk>!R=SzDh0U5SdGE zX5!h*0wzrQOLsC8=!XL77j|Tk^_TWRvP`fmDmu4eE-NzfMpMjjFew7kzMt^PBEg_s zFXn*~6FP`EovW$NI-A}idvk%qAt%HXV>{ypyrOQhG2a^JozL=&xU@8R7$OQs;vB#| za4S-1cr7OxuG9JvBra8rA9ycqOi_>Jm`-dSi0k| zFy?}ea9LK1+veEROBD^*Cu2uKR{ajP`n0dlZ`*s_B{Vqb*_=V&zL7y|8r532;J7w8 zA_#sc56sHinn+HifRRjoHinT+p3V&oKQKA|EX+Pl&+|E`Un%O@>}QuSJNzh2ey+<9 zL#WH-qo~{D^(AuC(VZqQV?IrHnf!c=?r!pBGI_m3)a$eJ67CvWs%pG!U}?jKurhe+ zLs>@(8uCs#dTJWt^dkx=c~}utQN6;jZ!dM+I;Ge043*?UsFkV6%-Ka&#%E6_uW5Ft zB{qG5RRx-gw2UBsWyojKpIxAu6p&{nnLu7!9pU|_-KVYEOX0V5;(tacL(Q)+=sTnDA0++9F8)i zRwzlf{B2=?_PI&Y=Q=`pt*1Wc+OY;aQqmeJrk4uo;MOPN3_Wc*OV8ul%2514wmaOk zT_|z7t~@)V$YGtdH35ty6cd5OwVca-isvFrkrF~PVNlfTlwp%BLP0CHzF6vDFO)ES zr=M`w9SI7tj2m;|&WP0oJl7Ab6q+T*ZeVseB0Coh70WButu*O-%FW$^h;~LC&993SGJHf)~q5v?f8`TnX8!V_&`#ap81j@Ce#T%@e-5L zNGHN$gOr3Nd7?2yDcSM=f5<6fuFov7NXlzi%q)K;$!~h6c z&>)vdf_D;f(8G=t85sxOc@|(3eKN^5JJks8bs)W49k;NG2WP7iW=_?Tt#^s>^2^U> zx*b4g`1&y0yAafU{S1t^XEQBV+3cB6x~)L6xjB6FgqHCs!pYd?zKW6=g6Yy?Tvk*M zBeRF)RGj?`*S?((k|zwl(25V6Eb-(XOBp7zf)sg}YMFj@g>Ww2FzEBUq0Y2WaSCz_ z=VI8EyWRTfP=DwS-3l6*zmV>y@I*V{Qe+3+w@}CEcRoqKuyq~GrveB^b3lhe|CvF{ zSZ}FM06p5I@KbpyhAx99C#1l6QzGaXwp$D)@AG9{frI z&!$=N0pf9Ux3+ed3J=_bNRaU7l1N4}Z<(fRVe)U7)yyK@i={HyyNfKH89RqCBO}^$ zA|thNIAWoKPZ~l8x@&u|*gT9sRClZCOR{9oe{u|IbG}&e^Q?omoLt?&_ZDA=0Q?R8 z{%;=|_@3_HfA`(Lhre%Nf9Se>*lqCBo4AOv4WIKu?WYbDV~E7&hMwjoe#W?W@$1GQ z11G6h3P*CfnS_WAh6Nd(KcgYfU{O<^-}%cm=Fl_S{!Gz0BAgOJMAuX0& zQjSd2vCR0h(RJSV8S&vWs$4M+@poTFflmrIAi;%HNgm?7&4g^CS~P@!jE8ZxI>Q8o z_7=V^F5kx)MZp|vP{9HMe`@+eov{qQ*De>O+jhk4y}s9PQ;cGr7JSN_)2CjFbvmH& z4mapAD(Kzpbn-5!tvPX~-C>CiSS{AVT&9@LH@>8~@0W}IqcB#(%m#T;&3Qa}4< z6Xl$7=^Du-Crct`sFVd!; zH1X2*3)+I|0~Q1eO?lqdF5PHL-;EYi29D|8Y?}Q+ca;Ss`O8M&xtWy5CVVm_u`bV` zgR$MOHjc?Mbc`rXhEiaXQcn&03|yHe!>#^7W&qKQCL$^E&im5y`YNR6>8FmIl5z9? zJJ*{GPK-Dc&#%{XQO^v5ZgH@MWn6f8H3Y*z9}P;TaMjue1!b2F83S|mpwDCDNZLmz z2Z7`aCOV9Ca7cVYtWDQ}P0{JoR-W@pUk<)!ZSnw+3lTI6y*s&KfOy)1DHLQQE#!Mn z%gk4o2kpzcW~+=&bW~~1g~+uAH4AY%Ng-oyT_6$uzHJDZUJ@XaQzt^SMP}psRgBsB z><`inJ~6q^f8B`|QQ1=u6V9>&gMcs@O?kvJ>-U!<1IaoXL2J6HqVf!zNxnn+$1=!c zUoWuL_H}4SQZOq3-sGXsft#M7bE?QPwfnv_(bBH-F+LeU{v^zZZn=nM=qHRz)!4Y1 zouElzID-q6AwWV>%IP>)$oAoq(i4rs-eE9Kwm%veknQNkJn(!cmsm(YVkR^ z*4f5Jd3bu1k0yJrSsB67v8iFAG^;$AOKp(_564G1HF34O4gKTdzA5pDHP5fngI5kd zBlgtcDFa3{c(}|B!Che3x988y4**Mk(LPX8 zgj@AUqPAggJ%&zlhFKuPUsd z6AM~ghO`a+-c7@M!V?wmKPgY<3Ra+-gM2QJ{8{i3nZ~$85^Hj&dWG^L0JMbmFDqtCd~3q>W0 yWR^`*#?Hb7B!KQ)vND6Cy$V4z$Aybs0V4Oj@G68kiQr>s;gp-|qU56gYw`cy17*4Z diff --git a/onlylegs/static/.webassets-cache/f74d4479d7a0247efebd02e2d7c007bd b/onlylegs/static/.webassets-cache/f74d4479d7a0247efebd02e2d7c007bd deleted file mode 100644 index 4954e4d0418c9c2b0cfbd29b6e1800e1fe15c029..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17219 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 zJ0){if(!image.src&&webpSupport){image.src=image.getAttribute('data-src')+'&e=webp'}else if(!image.src){image.src=image.getAttribute('data-src')}}}} -window.onload=function(){loadOnView();let times=document.querySelectorAll('.time');for(let i=0;i300||document.documentElement.scrollTop>20){topOfPage.classList.add('show');}else{topOfPage.classList.remove('show');} -topOfPage.onclick=function(){document.body.scrollTop=0;document.documentElement.scrollTop=0;} -let infoButton=document.querySelector('.info-button');if(infoButton){if(document.body.scrollTop>300||document.documentElement.scrollTop>20){infoButton.classList.remove('show');}else{infoButton.classList.add('show');} -infoButton.onclick=function(){popUpShow('OnlyLegs','V23.04.10 '+ -'using Phosphoricons and Flask.'+ -'
Made by Fluffy and others with ❤️');}}};window.onscroll=function(){loadOnView();let topOfPage=document.querySelector('.top-of-page');if(document.body.scrollTop>300||document.documentElement.scrollTop>20){topOfPage.classList.add('show');}else{topOfPage.classList.remove('show');} -let infoButton=document.querySelector('.info-button');if(infoButton){if(document.body.scrollTop>300||document.documentElement.scrollTop>20){infoButton.classList.remove('show');}else{infoButton.classList.add('show');}}};window.onresize=function(){loadOnView();};function showLogin(){cancelBtn=document.createElement('button');cancelBtn.classList.add('btn-block');cancelBtn.innerHTML='nuuuuuuuu';cancelBtn.onclick=popupDissmiss;loginBtn=document.createElement('button');loginBtn.classList.add('btn-block');loginBtn.classList.add('primary');loginBtn.innerHTML='Login';loginBtn.type='submit';loginBtn.setAttribute('form','loginForm');loginForm=document.createElement('form');loginForm.id='loginForm';loginForm.setAttribute('onsubmit','return login(event);');usernameInput=document.createElement('input');usernameInput.classList.add('input-block');usernameInput.type='text';usernameInput.placeholder='Namey';usernameInput.id='username';passwordInput=document.createElement('input');passwordInput.classList.add('input-block');passwordInput.type='password';passwordInput.placeholder='Passywassy';passwordInput.id='password';rememberMeSpan=document.createElement('span');rememberMeSpan.classList.add('input-checkbox');rememberMeInput=document.createElement('input');rememberMeInput.type='checkbox';rememberMeInput.id='remember-me';rememberMeLabel=document.createElement('label');rememberMeLabel.innerHTML='No forgetty me pls';rememberMeLabel.setAttribute('for','remember-me');rememberMeSpan.appendChild(rememberMeInput);rememberMeSpan.appendChild(rememberMeLabel);loginForm.appendChild(usernameInput);loginForm.appendChild(passwordInput);loginForm.appendChild(rememberMeSpan);popUpShow('Login!','Need an account? Register!',loginForm,[cancelBtn,loginBtn]);} -function login(event){event.preventDefault();let formUsername=document.querySelector("#username").value;let formPassword=document.querySelector("#password").value;let formRememberMe=document.querySelector("#remember-me").checked;if(formUsername===""||formPassword===""){addNotification("Please fill in all fields!!!!",3);return;} -const formData=new FormData();formData.append("username",formUsername);formData.append("password",formPassword);formData.append("remember-me",formRememberMe);fetch('/auth/login',{method:'POST',body:formData}).then(response=>{if(response.ok){location.reload();}else{if(response.status===403){addNotification('None but devils play past here... Wrong information',2);}else if(response.status===500){addNotification('Server exploded, F\'s in chat',2);}else{addNotification('Error logging in, blame someone',2);}}}).catch(error=>{addNotification('Error logging in, blame someone',2);});} -function showRegister(){cancelBtn=document.createElement('button');cancelBtn.classList.add('btn-block');cancelBtn.innerHTML='nuuuuuuuu';cancelBtn.onclick=popupDissmiss;registerBtn=document.createElement('button');registerBtn.classList.add('btn-block');registerBtn.classList.add('primary');registerBtn.innerHTML='Register';registerBtn.type='submit';registerBtn.setAttribute('form','registerForm');registerForm=document.createElement('form');registerForm.id='registerForm';registerForm.setAttribute('onsubmit','return register(event);');usernameInput=document.createElement('input');usernameInput.classList.add('input-block');usernameInput.type='text';usernameInput.placeholder='Namey';usernameInput.id='username';emailInput=document.createElement('input');emailInput.classList.add('input-block');emailInput.type='text';emailInput.placeholder='E mail!';emailInput.id='email';passwordInput=document.createElement('input');passwordInput.classList.add('input-block');passwordInput.type='password';passwordInput.placeholder='Passywassy';passwordInput.id='password';passwordInputRepeat=document.createElement('input');passwordInputRepeat.classList.add('input-block');passwordInputRepeat.type='password';passwordInputRepeat.placeholder='Passywassy again!';passwordInputRepeat.id='password-repeat';registerForm.appendChild(usernameInput);registerForm.appendChild(emailInput);registerForm.appendChild(passwordInput);registerForm.appendChild(passwordInputRepeat);popUpShow('Who are you?','Already have an account? Login!',registerForm,[cancelBtn,registerBtn]);} -function register(event){event.preventDefault();let formUsername=document.querySelector("#username").value;let formEmail=document.querySelector("#email").value;let formPassword=document.querySelector("#password").value;let formPasswordRepeat=document.querySelector("#password-repeat").value;if(formUsername===""||formEmail===""||formPassword===""||formPasswordRepeat===""){addNotification("Please fill in all fields!!!!",3);return;} -const formData=new FormData();formData.append("username",formUsername);formData.append("email",formEmail);formData.append("password",formPassword);formData.append("password-repeat",formPasswordRepeat);fetch('/auth/register',{method:'POST',body:formData}).then(response=>{if(response.ok){addNotification('Registered successfully! Now please login to continue',1);showLogin();}else{if(response.status===400){response.json().then(data=>{for(let i=0;i{addNotification('Error logging in, blame someone',2);});} -function addNotification(notificationText,notificationLevel){const notificationContainer=document.querySelector('.notifications');const successIcon='';const criticalIcon='';const warningIcon='';const infoIcon='';const notification=document.createElement('div');notification.classList.add('sniffle__notification');notification.onclick=function(){if(notification){notification.classList.add('hide');setTimeout(function(){notificationContainer.removeChild(notification);},500);}};const iconElement=document.createElement('span');iconElement.classList.add('sniffle__notification-icon');notification.appendChild(iconElement);if(notificationLevel===1){notification.classList.add('success');iconElement.innerHTML=successIcon;}else if(notificationLevel===2){notification.classList.add('critical');iconElement.innerHTML=criticalIcon;}else if(notificationLevel===3){notification.classList.add('warning');iconElement.innerHTML=warningIcon;}else{notification.classList.add('info');iconElement.innerHTML=infoIcon;} -const description=document.createElement('span');description.classList.add('sniffle__notification-text');description.innerHTML=notificationText;notification.appendChild(description);notificationContainer.appendChild(notification);setTimeout(function(){notification.classList.add('show');},5);setTimeout(function(){if(notification){notification.classList.add('hide');setTimeout(function(){notificationContainer.removeChild(notification);},500);}},5000);} -function popUpShow(titleText,subtitleText,bodyContent=null,userActions=null){const popupSelector=document.querySelector('.pop-up');const headerSelector=document.querySelector('.pop-up-header');const actionsSelector=document.querySelector('.pop-up-controlls');headerSelector.innerHTML='';actionsSelector.innerHTML='';const titleElement=document.createElement('h2');titleElement.innerHTML=titleText;headerSelector.appendChild(titleElement);const subtitleElement=document.createElement('p');subtitleElement.innerHTML=subtitleText;headerSelector.appendChild(subtitleElement);if(bodyContent){headerSelector.appendChild(bodyContent);} -if(userActions){for(let i=0;iClose';} -document.querySelector("html").style.overflow="hidden";popupSelector.style.display='block';setTimeout(function(){popupSelector.classList.add('active')},5);} -function popupDissmiss(){const popupSelector=document.querySelector('.pop-up');document.querySelector("html").style.overflow="auto";popupSelector.classList.remove('active');setTimeout(function(){popupSelector.style.display='none';},200);} -window.addEventListener("dragover",(event)=>{event.preventDefault();},false);window.addEventListener("drop",(event)=>{event.preventDefault();},false);function openUploadTab(){let uploadTab=document.querySelector(".upload-panel");document.querySelector("html").style.overflow="hidden";uploadTab.style.display="block";setTimeout(function(){uploadTab.classList.add("open");},5);} -function closeUploadTab(){let uploadTab=document.querySelector(".upload-panel");let uploadTabContainer=document.querySelector(".upload-panel .container");document.querySelector("html").style.overflow="auto";uploadTab.classList.remove("open");setTimeout(function(){uploadTab.style.display="none";uploadTabContainer.style.transform="";uploadTab.dataset.lastY=0;},250);} -function toggleUploadTab(){let uploadTab=document.querySelector(".upload-panel");if(uploadTab.classList.contains("open")){closeUploadTab();}else{openUploadTab();}} -function tabDragStart(event){event.preventDefault();let uploadTab=document.querySelector(".upload-panel .container");let offset=uploadTab.getBoundingClientRect().y;uploadTab.classList.add("dragging");document.addEventListener('touchmove',event=>{if(uploadTab.classList.contains("dragging")){if(event.touches[0].clientY-offset>=0){uploadTab.dataset.lastY=event.touches[0].clientY;}else{uploadTab.dataset.lastY=offset;} -uploadTab.style.transform=`translateY(${uploadTab.dataset.lastY-offset}px)`;}});} -function tabDragStopped(event){event.preventDefault();let uploadTab=document.querySelector(".upload-panel .container");uploadTab.classList.remove("dragging");if(uploadTab.dataset.lastY>(screen.height*0.3)){closeUploadTab();}else{uploadTab.style.transition="transform 0.25s cubic-bezier(0.76, 0, 0.17, 1)";uploadTab.style.transform="translateY(0px)";setTimeout(function(){uploadTab.style.transition="";},250);}} -function fileActivate(event){event.preventDefault() -let fileDrop=document.querySelector('.fileDrop-block');let fileDropTitle=fileDrop.querySelector('.status');fileDrop.classList.remove('error');fileDrop.classList.add('edging');fileDropTitle.innerHTML='Drop to upload!';} -function fileDefault(){let fileDrop=document.querySelector('.fileDrop-block');let fileDropTitle=fileDrop.querySelector('.status');fileDrop.classList.remove('error');fileDrop.classList.remove('edging');fileDropTitle.innerHTML='Choose or Drop file';} -function fileDropHandle(event){event.preventDefault() -let fileDrop=document.querySelector('.fileDrop-block');let fileUpload=fileDrop.querySelector('#file');fileUpload.files=event.dataTransfer.files;fileDefault();fileChanged();} -function fileChanged(){let dropBlock=document.querySelector('.fileDrop-block');let dropBlockStatus=dropBlock.querySelector('.status');let dropBlockInput=dropBlock.querySelector('#file');if(dropBlockInput.value!==""){dropBlock.classList.add('active');dropBlockStatus.innerHTML=dropBlockInput.files[0].name;}else{fileDefault();}} -function clearUpload(){let fileDrop=document.querySelector('#uploadForm');let fileUpload=fileDrop.querySelector('#file');let fileAlt=fileDrop.querySelector('#alt');let fileDescription=fileDrop.querySelector('#description');let fileTags=fileDrop.querySelector('#tags');fileUpload.value="";fileAlt.value="";fileDescription.value="";fileTags.value="";} -document.addEventListener('DOMContentLoaded',()=>{let uploadTab=document.querySelector(".upload-panel");if(!uploadTab){return;} -let uploadTabDrag=uploadTab.querySelector("#dragIndicator");let uploadForm=uploadTab.querySelector('#uploadForm');let fileDrop=uploadForm.querySelector('.fileDrop-block');let fileDropTitle=fileDrop.querySelector('.status');let fileUpload=fileDrop.querySelector('#file');let fileAlt=uploadForm.querySelector('#alt');let fileDescription=uploadForm.querySelector('#description');let fileTags=uploadForm.querySelector('#tags');clearUpload();fileDefault();uploadTabDrag.addEventListener('touchstart',tabDragStart,false);uploadTabDrag.addEventListener('touchend',tabDragStopped,false);fileDrop.addEventListener('dragover',fileActivate,false);fileDrop.addEventListener('dragenter',fileActivate,false);fileDrop.addEventListener('dragleave',fileDefault,false);fileDrop.addEventListener('drop',fileDropHandle,false);fileUpload.addEventListener('change',fileChanged,false);fileUpload.addEventListener('click',fileDefault,false);uploadForm.addEventListener('submit',(event)=>{event.preventDefault() -if(fileUpload.value===""){fileDrop.classList.add('error');fileDropTitle.innerHTML='No file selected!';return;} -let formData=new FormData();formData.append("file",fileUpload.files[0]);formData.append("alt",fileAlt.value);formData.append("description",fileDescription.value);formData.append("tags",fileTags.value);fetch('/api/upload',{method:'POST',body:formData}) -.then(data=>{addNotification("Image uploaded successfully",1);}).catch(error=>{switch(response.status){case 500:addNotification("Server exploded, F's in chat",2) -break;case 400:case 404:addNotification("Error uploading. Blame yourself",2) -break;case 403:addNotification("None but devils play past here...",2) -break;case 413:addNotification("File too large!!!!!!",2);break;default:addNotification("Error uploading file, blame someone",2) -break;}});clearUpload();fileDrop.classList.remove('active');fileDropTitle.innerHTML='Choose or Drop file';});});function checkWebpSupport(){let webpSupport=false;try{webpSupport=document.createElement('canvas').toDataURL('image/webp').indexOf('data:image/webp')===0;}catch(e){webpSupport=false;} -return webpSupport;} \ No newline at end of file diff --git a/onlylegs/static/gen/styles.css b/onlylegs/static/gen/styles.css deleted file mode 100644 index 888b0a9..0000000 --- a/onlylegs/static/gen/styles.css +++ /dev/null @@ -1 +0,0 @@ -@keyframes imgLoading{0%{background-position:-468px 0}100%{background-position:468px 0}}@keyframes uploadingLoop{0%{left:-100%}100%{left:100%}}:root{--bg-dim:16,16,16;--bg-bright:232,227,227;--bg-100:21,21,21;--bg-200:26.1,26.1,26.1;--bg-300:31.2,31.2,31.2;--bg-400:36.3,36.3,36.3;--bg-500:41.4,41.4,41.4;--bg-600:46.5,46.5,46.5;--fg-dim:102,102,102;--fg-white:232,227,227;--fg-black:16,16,16;--black:21,21,21;--white:232,227,227;--red:182,100,103;--orange:217,140,95;--yellow:217,188,140;--green:140,151,125;--blue:141,163,185;--purple:169,136,176;--primary:var(--green);--warning:var(--orange);--critical:var(--red);--success:var(--green);--info:var(--blue);--rad:6px;--rad-inner:calc(var(--rad) / 2);--animation-smooth:cubic-bezier(0.76,0,0.17,1);--animation-bounce:cubic-bezier(.68,-0.55,.27,1.55);--breakpoint:800px}@keyframes imgLoading{0%{background-position:-468px 0}100%{background-position:468px 0}}@keyframes uploadingLoop{0%{left:-100%}100%{left:100%}}@keyframes notificationTimeout{0%{left:-100%;height:3px}90%{left:0;height:3px}95%{left:0;height:0}100%{left:0;height:0}}.notifications{margin:0;padding:0;width:450px;height:auto;position:fixed;top:.3rem;right:.3rem;display:flex;flex-direction:column;z-index:621}.sniffle__notification{margin:0 0 .3rem 0;padding:0;width:450px;height:auto;max-height:100px;display:flex;flex-direction:row;position:relative;background-color:RGB(var(--bg-300));border-radius:var(--rad-inner);color:RGB(var(--fg-white));opacity:0;transform:scale(0.8);box-sizing:border-box;overflow:hidden;transition:all .25s ease-in-out,opacity .2s ease-in-out,transform .2s cubic-bezier(0.68,-0.55,0.27,1.55)}.sniffle__notification::after{content:"";width:100%;height:3px;position:absolute;bottom:0;left:0;background-color:RGB(var(--fg-white));z-index:+2;animation:notificationTimeout 5.1s linear}.sniffle__notification.success{color:RGB(var(--success))}.sniffle__notification.success::after{background-color:RGB(var(--success))}.sniffle__notification.warning{color:RGB(var(--warning))}.sniffle__notification.warning::after{background-color:RGB(var(--warning))}.sniffle__notification.critical{color:RGB(var(--critical))}.sniffle__notification.critical::after{background-color:RGB(var(--critical))}.sniffle__notification.info{color:RGB(var(--info))}.sniffle__notification.info::after{background-color:RGB(var(--info))}.sniffle__notification.show{opacity:1;transform:scale(1)}.sniffle__notification.hide{margin:0;max-height:0;opacity:0;transform:translateX(100%);transition:all .4s ease-in-out,max-height .2s ease-in-out}.sniffle__notification-icon{margin:0;padding:1rem;width:auto;height:auto;display:flex;justify-content:center;align-items:center;background-color:RGB(var(--bg-200))}.sniffle__notification-icon svg{width:1.25rem;height:1.25rem}.sniffle__notification-text{margin:0;padding:1rem;width:auto;height:auto;display:flex;flex-direction:column;justify-self:center;align-self:center;font-size:1rem;font-weight:600;line-height:1;text-align:left}@media(max-width:800px){.notifications{width:calc(100vw - .6rem);height:auto}.sniffle__notification{width:100%}.sniffle__notification.hide{opacity:0;transform:translateY(-5rem)}.sniffle__notification-time{width:100%}}.pop-up{width:100%;height:100vh;position:fixed;inset:0;display:none;background-color:rgba(var(--bg-dim),0.8);opacity:0;z-index:101;transition:opacity .2s ease}.pop-up .pop-up__click-off{width:100%;height:100vh;position:absolute;top:0;left:0;z-index:+1}.pop-up .pop-up-wrapper{margin:0;padding:0;width:621px;height:auto;position:absolute;bottom:50%;left:50%;transform:translate(-50%,50%) scale(0.8);display:flex;flex-direction:column;background-color:RGB(var(--bg-200));border-radius:var(--rad);overflow:hidden;z-index:+2;transition:transform .2s var(--animation-smooth)}.pop-up .pop-up-header{margin:0;padding:1rem;width:100%;height:auto;display:flex;flex-direction:column;gap:.5rem;overflow-y:auto;overflow-x:hidden;text-size-adjust:auto;text-overflow:ellipsis}.pop-up .pop-up-header h2,.pop-up .pop-up-header h3{margin:0;width:100%;position:sticky;top:0;font-size:1.5rem;font-weight:700;text-align:left;color:RGB(var(--fg-white))}.pop-up .pop-up-header p{margin:0;width:100%;font-size:1rem;font-weight:400;text-align:left;color:RGB(var(--fg-white))}.pop-up .pop-up-header p svg{width:1rem;height:1rem;display:inline-block;vertical-align:middle}.pop-up .pop-up-header a,.pop-up .pop-up-header .link{color:RGB(var(--primary));cursor:pointer;text-decoration:none}.pop-up .pop-up-header a:hover,.pop-up .pop-up-header .link:hover{text-decoration:underline}.pop-up .pop-up-header img{margin:auto;padding:0;width:auto;height:auto;max-width:100%;max-height:40vh;border-radius:var(--rad-inner)}.pop-up .pop-up-header form{margin:0;padding:0;width:100%;height:auto;display:flex;flex-direction:column;gap:.5rem;justify-content:center}.pop-up .pop-up-controlls{margin:0;padding:.25rem;width:100%;height:auto;display:flex;flex-direction:row;justify-content:flex-end;gap:.25rem;background-color:RGB(var(--bg-100))}.pop-up.active{opacity:1}.pop-up.active .pop-up-wrapper{transform:translate(-50%,50%) scale(1)}@media(max-width:800px){.pop-up .pop-up-wrapper{width:calc(100% - .75rem);max-height:95vh}.pop-up .pop-up-content{max-height:100%}.pop-up .pop-up-content img{max-height:50vh}.pop-up .pop-up-controlls button{width:100%}.pop-up.active{opacity:1}}.upload-panel{position:fixed;left:3.5rem;bottom:0;display:none;width:calc(100% - 3.5rem);height:100vh;background-color:transparent;color:RGB(var(--fg-white));overflow:hidden;z-index:68;transition:background-color .25s cubic-bezier(0.76,0,0.17,1)}.upload-panel h3{margin:0;padding:0;font-size:1.5rem;font-weight:700}.upload-panel p{margin:0;padding:0;font-size:1rem;font-weight:400}.upload-panel form{margin:0;padding:0;width:100%;display:flex;flex-direction:column;align-items:center;gap:.5rem}.upload-panel form input,.upload-panel form button{width:100%}.upload-panel .click-off{position:absolute;top:0;left:0;width:100%;height:100%;z-index:+1}.upload-panel .container{padding:1rem;position:absolute;bottom:0;left:-27rem;width:27rem;height:100%;display:flex;flex-direction:column;gap:1rem;background-color:RGB(var(--bg-200));z-index:+2;transition:left .25s cubic-bezier(0.76,0,0.17,1),bottom .25s cubic-bezier(0.76,0,0.17,1)}.upload-panel .container #dragIndicator{display:none;position:absolute;top:0;left:0;width:100%;height:5rem;z-index:+1}.upload-panel .container #dragIndicator::after{content:'';width:8rem;height:3px;position:absolute;top:.5rem;left:50%;transform:translate(-50%,-50%);background-color:RGB(var(--bg-400));border-radius:var(--rad-inner)}.upload-panel .upload-jobs{display:flex;flex-direction:column;gap:.5rem;border-radius:var(--rad);overflow-y:auto}.upload-panel .upload-jobs .job{width:100%;height:5rem;min-height:5rem;position:relative;display:flex;align-items:center;gap:.5rem;background-color:RGB(var(--bg-200));border-radius:var(--rad);overflow:hidden}.upload-panel .upload-jobs .job img{position:absolute;top:0;left:0;width:100%;height:5rem;object-fit:cover}.upload-panel .upload-jobs .job .img-filter{position:absolute;top:0;left:0;width:100%;height:100%;background-image:linear-gradient(to right,RGB(var(--bg-100)),transparent)}.upload-panel .upload-jobs .job .job__status{margin:0;padding:0;position:absolute;top:.5rem;left:.5rem;font-size:1rem;font-weight:600;color:RGB(var(--fg-white));z-index:+3;transition:color .25s cubic-bezier(0.76,0,0.17,1)}.upload-panel .upload-jobs .job .progress{width:100%;height:var(--rad-inner);position:absolute;bottom:0;left:-100%;background-color:RGB(var(--primary));animation:uploadingLoop 1s cubic-bezier(0.76,0,0.17,1) infinite;z-index:+5;transition:left 1s cubic-bezier(0.76,0,0.17,1)}.upload-panel .upload-jobs .job.critical .job__status,.upload-panel .upload-jobs .job.critical .progress{color:RGB(var(--critical))}.upload-panel .upload-jobs .job.success .job__status{color:RGB(var(--success))}.upload-panel .upload-jobs .job.success .progress{height:0;animation:none}.upload-panel .upload-jobs .job.warning .job__status,.upload-panel .upload-jobs .job.warning .progress{color:RGB(var(--warning))}.upload-panel .upload-jobs .job.critical .progress,.upload-panel .upload-jobs .job.success .progress,.upload-panel .upload-jobs .job.warning .progress{height:0}.upload-panel.open{background-color:rgba(var(--bg-dim),0.8)}.upload-panel.open .container{left:0}@media(max-width:800px){.upload-panel{width:100%;height:calc(100vh - 3.5rem);height:calc(100dvh - 3.5rem);left:0;bottom:3.5rem}.upload-panel .container{width:100%;height:95%;left:0;bottom:-100vh;border-radius:var(--rad) var(--rad) 0 0}.upload-panel .container #dragIndicator{display:block}.upload-panel.open .container{left:0;bottom:0}}.tag-icon{margin:0;padding:.25rem .5rem;display:flex;align-items:center;justify-content:center;gap:.25rem;font-size:.9rem;font-weight:500;text-decoration:none;border-radius:var(--rad-inner);border:none;background-color:RGBA(var(--primary),0.1);color:RGB(var(--primary));cursor:pointer;transition:background-color .2s ease-in-out,color .2s ease-in-out}.tag-icon svg{width:1.15rem;height:1.15rem}.tag-icon:hover{background-color:RGBA(var(--primary),0.3)}.navigation{margin:0;padding:0;width:3.5rem;height:100%;height:100dvh;display:flex;flex-direction:column;justify-content:space-between;position:fixed;top:0;left:0;background-color:RGB(var(--bg-100));color:RGB(var(--fg-white));z-index:69}.navigation .logo{margin:0;padding:0;width:3.5rem;height:3.5rem;min-height:3.5rem;display:flex;flex-direction:row;align-items:center}.navigation-spacer{height:100%}.navigation-item{margin:0;padding:0;width:3.5rem;height:3.5rem;min-height:3.5rem;position:relative;display:flex;flex-direction:row;justify-content:center;align-items:center;background-color:transparent;border:none;text-decoration:none}.navigation-item>svg{margin:0;padding:.5rem;width:2.5rem;height:2.5rem;border-radius:var(--rad-inner);color:RGB(var(--fg-white));transition:color .2s ease-out,transform .2s ease-out}.navigation-item .tool-tip{margin:0;padding:.4rem .7rem;display:block;position:absolute;top:50%;left:3rem;transform:translateY(-50%);font-size:.9rem;font-weight:500;background-color:RGB(var(--bg-100));color:RGB(var(--fg-white));opacity:0;border-radius:var(--rad-inner);transition:opacity .2s cubic-bezier(0.76,0,0.17,1),left .2s cubic-bezier(0.76,0,0.17,1);pointer-events:none}.navigation-item .tool-tip>svg{margin:0;font-size:1rem;width:.75rem;height:.75rem;display:block;position:absolute;top:50%;left:-0.45rem;transform:translateY(-50%);color:RGB(var(--bg-100))}.navigation-item:hover>svg{background:RGBA(var(--fg-white),0.1)}.navigation-item:hover span{opacity:1;left:3.9rem}.navigation-item.selected>svg{color:RGB(var(--primary))}.navigation-item.selected::before{content:'';display:block;position:absolute;top:3px;left:0;width:3px;height:calc(100% - 6px);background-color:RGB(var(--primary));border-radius:var(--rad-inner)}@media(max-width:800px){.navigation{width:100vw;height:3.5rem;flex-direction:row;justify-content:space-around;position:fixed;top:unset;bottom:0;left:0}.navigation>span{display:none}.navigation .logo{display:none}.navigation-item{margin:.25rem;padding:0;width:3rem;height:3rem;min-height:3rem}.navigation-item .tool-tip{display:none}.navigation-item.selected::before{top:unset;bottom:0;left:0;width:100%;height:3px}}.banner,.banner-small{width:100%;position:relative;color:RGB(var(--fg-white))}.banner .link,.banner-small .link{padding:.1rem .3rem;text-decoration:none;font-weight:500;background-color:RGB(var(--fg-white));color:RGB(var(--fg-black));border-radius:var(--rad-inner);cursor:pointer}.banner .link:hover,.banner-small .link:hover{background-color:RGB(var(--fg-black));color:RGB(var(--fg-white))}.banner::after,.banner-small::after{content:'';width:var(--rad);height:calc(var(--rad) * 2);position:absolute;bottom:calc(var(--rad) * -2);left:0;background-color:RGB(var(--bg-bright));border-radius:var(--rad) 0 0 0;box-shadow:0 calc(var(--rad) * -1) 0 0 RGB(var(--bg-100))}.banner{height:30rem;background-color:RGB(var(--bg-300))}.banner img{position:absolute;inset:0;width:100%;height:100%;background-color:inherit;object-fit:cover;object-position:center center}.banner .banner-filter{position:absolute;inset:0;width:100%;height:100%;background:linear-gradient(to right,RGB(var(--primary)),transparent);z-index:+1}.banner .banner-content{padding:.5rem;width:100%;height:auto;position:absolute;left:0;bottom:0;display:grid;grid-template-columns:1fr auto;grid-template-rows:1fr auto auto;grid-template-areas:'info info' 'header header' 'subtitle options';z-index:+2}.banner .banner-content .banner-header,.banner .banner-content .banner-info,.banner .banner-content .banner-subtitle{margin:0;padding:0;width:100%}.banner .banner-content .banner-header{grid-area:header;margin:.5rem 0;text-align:left;font-size:6.9rem;font-weight:700;color:RGB(var(--primary))}.banner .banner-content .banner-info{grid-area:info;font-size:1rem;font-weight:400}.banner .banner-content .banner-subtitle{grid-area:subtitle;font-size:1rem;font-weight:400}.banner .banner-content .pill-row{margin-top:auto;grid-area:options}.banner-small{height:3.5rem;background-color:RGB(var(--bg-100))}.banner-small .banner-content{padding:0 .5rem;width:100%;height:100%;position:absolute;inset:0;display:flex;flex-direction:row;justify-content:flex-start;z-index:+2}.banner-small .banner-content .banner-header,.banner-small .banner-content .banner-info{margin:auto 0;padding:0;width:auto;height:auto;justify-self:flex-start}.banner-small .banner-content .banner-header{margin-right:.6rem;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;text-align:left;font-weight:700;font-size:1.5rem;color:RGB(var(--primary))}.banner-small .banner-content .banner-info{margin-right:.6rem;font-size:.9rem;font-weight:400}.banner-small .banner-content .pill-row{margin-left:auto;width:auto}@media(max-width:800px){.banner::after,.banner-small::after{display:none}.banner{min-height:17rem;height:auto}.banner .banner-content{padding:.5rem;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.banner .banner-content .banner-header{margin:1rem 0;text-align:center;font-size:2.5rem}.banner .banner-content .banner-info{font-size:1.1rem;text-align:center}.banner .banner-content .banner-subtitle{display:none}.banner .banner-content .pill-row{margin-top:0rem}.banner-small .banner-content .banner-info{display:none}}.gallery-grid{margin:0;padding:.35rem;width:100%;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.gallery-item{margin:.35rem;padding:0;height:auto;position:relative;border-radius:var(--rad-inner);box-shadow:0 .15rem .4rem .1rem RGBA(var(--bg-100),0.4);box-sizing:border-box;overflow:hidden;transition:box-shadow .2s cubic-bezier(0.79,0.14,0.15,0.86)}.gallery-item .image-filter{margin:0;padding:.5rem;width:100%;min-height:30%;height:auto;position:absolute;left:0;bottom:0;display:flex;flex-direction:column;justify-content:flex-end;background-image:linear-gradient(to top,rgba(var(--bg-100),0.69),transparent);opacity:0;z-index:+4;transition:opacity .2s cubic-bezier(0.79,0.14,0.15,0.86)}.gallery-item .image-filter .image-title,.gallery-item .image-filter .image-subtitle{margin:0;padding:0;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:RGB(var(--fg-white));text-shadow:0 0 2px RGB(var(--fg-black))}.gallery-item .image-filter .image-title{font-size:.9rem;font-weight:700}.gallery-item .image-filter .image-subtitle{font-size:.8rem;font-weight:400}.gallery-item img{width:100%;height:100%;position:absolute;inset:0;object-fit:cover;object-position:center;background-color:RGB(var(--bg-bright));filter:blur(0.5rem);opacity:0;transition:all .2s cubic-bezier(0.79,0.14,0.15,0.86)}.gallery-item img.loaded{filter:blur(0);opacity:1}.gallery-item:after{content:"";display:block;padding-bottom:100%}.gallery-item:hover{box-shadow:0 .2rem .4rem .1rem RGBA(var(--bg-100),0.6)}.gallery-item:hover .image-filter{opacity:1}.group-item{margin:.35rem;padding:0;height:auto;position:relative;border-radius:var(--rad-inner);box-sizing:border-box;overflow:hidden}.group-item .image-filter{margin:0;padding:.5rem;width:100%;min-height:30%;height:auto;position:absolute;left:0;bottom:0;display:flex;flex-direction:column;justify-content:flex-end;background-image:linear-gradient(to top,rgba(var(--bg-100),0.8),transparent);z-index:+4}.group-item .image-filter .image-title,.group-item .image-filter .image-subtitle{margin:0;padding:0;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:RGB(var(--fg-white));text-shadow:0 0 2px RGB(var(--fg-black))}.group-item .image-filter .image-title{font-size:.9rem;font-weight:700}.group-item .image-filter .image-subtitle{font-size:.8rem;font-weight:400}.group-item .images{margin:0;padding:0;width:100%;height:100%;position:absolute;inset:0;display:block}.group-item .images img{width:100%;height:100%;position:absolute;top:0;left:0;object-fit:cover;object-position:center;background-color:RGB(var(--bg-bright));border-radius:var(--rad-inner);box-shadow:0 0 .4rem .25rem RGBA(var(--bg-100),0.1);filter:blur(0.5rem);opacity:0;transition:all .2s cubic-bezier(0.79,0.14,0.15,0.86)}.group-item .images img.loaded{filter:blur(0);opacity:1}.group-item .images.size-1 .data-1{transform:scale(0.8) rotate(3deg)}.group-item .images.size-2 .data-1{transform:scale(0.7) rotate(-3deg) translate(10%,10%);z-index:+2}.group-item .images.size-2 .data-2{transform:scale(0.7) rotate(3deg) translate(-10%,-10%);z-index:+1}.group-item .images.size-3 .data-1{transform:scale(0.6) rotate(3deg) translate(-25%,25%);z-index:+3}.group-item .images.size-3 .data-2{transform:scale(0.6) rotate(-5deg) translate(25%,10%);z-index:+2}.group-item .images.size-3 .data-3{transform:scale(0.6) rotate(-1deg) translate(-15%,-23%);z-index:+1}.group-item:after{content:"";display:block;padding-bottom:100%}.group-item:hover .images.size-1 .data-1{transform:scale(0.9) rotate(0deg)}.group-item:hover .images.size-2 .data-1{transform:scale(0.75) rotate(-1deg) translate(12%,14%);z-index:+2}.group-item:hover .images.size-2 .data-2{transform:scale(0.75) rotate(1deg) translate(-12%,-10%);z-index:+1}.group-item:hover .images.size-3 .data-1{transform:scale(0.65) rotate(1deg) translate(-24%,24%);z-index:+3}.group-item:hover .images.size-3 .data-2{transform:scale(0.65) rotate(-2deg) translate(24%,10%);z-index:+2}.group-item:hover .images.size-3 .data-3{transform:scale(0.65) rotate(0deg) translate(-15%,-25%);z-index:+1}@media(max-width:800px){.gallery-grid{grid-template-columns:auto auto auto}}.top-of-page{margin:0;padding:0;width:auto;height:auto;position:fixed;bottom:.75rem;right:-3rem;display:flex;justify-content:center;align-items:center;background-color:RGB(var(--bg-300));color:RGB(var(--fg-white));border-radius:var(--rad);border:none;opacity:0;z-index:20;cursor:pointer;transition:all .2s cubic-bezier(0.86,0,0.07,1)}.top-of-page:hover{color:RGB(var(--primary))}.top-of-page svg{margin:.5rem;width:1.25rem;height:1.25rem}.top-of-page.show{right:.75rem;opacity:1}@media(max-width:800px){.top-of-page{bottom:4.25rem}}.info-button{margin:0;padding:0;width:auto;height:auto;position:fixed;bottom:.75rem;right:-3rem;display:flex;justify-content:center;align-items:center;background-color:RGB(var(--bg-300));color:RGB(var(--fg-white));border-radius:var(--rad);border:none;opacity:0;z-index:20;cursor:pointer;transition:all .2s cubic-bezier(0.86,0,0.07,1)}.info-button:hover{color:RGB(var(--info))}.info-button svg{margin:.5rem;width:1.25rem;height:1.25rem}.info-button.show{right:.75rem;opacity:1}@media(max-width:800px){.info-button{bottom:4.25rem}}.pill-row{margin:0;padding:0;width:100%;height:auto;display:flex;justify-content:center;align-items:center;gap:.5rem}.pill-row>div{margin:0;padding:0;display:flex;background-color:RGB(var(--bg-200));border-radius:var(--rad);box-shadow:0 1px 0 RGB(var(--bg-100)),0 -1px 0 RGB(var(--bg-300))}.pill-text{margin:0;padding:.5rem 1rem;width:auto;height:2.5rem;display:flex;justify-content:center;align-items:center;position:relative;text-align:center;font-size:1rem;font-weight:400;background-color:RGB(var(--bg-200));color:RGB(var(--fg-white));border-radius:var(--rad)}.pill-item{margin:0;padding:.5rem;width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;position:relative;border:none;background-color:transparent;color:RGB(var(--fg-white))}.pill-item svg{width:1.25rem;height:1.25rem}.pill-item:hover{cursor:pointer;color:RGB(var(--primary))}.pill__critical{color:RGB(var(--critical))}.pill__critical span{background:RGB(var(--critical));color:RGB(var(--fg-white))}.pill__critical span svg{color:RGB(var(--critical))}.pill__critical:hover{color:RGB(var(--fg-white))}.pill__info{color:RGB(var(--info))}.pill__info span{color:RGB(var(--info))}.pill__info:hover{color:RGB(var(--fg-white))}@media(max-width:800px){.tool-tip{display:none}}.btn-block{padding:.4rem .7rem;width:auto;min-height:2.3rem;display:flex;justify-content:center;align-items:center;gap:.5rem;position:relative;font-size:1rem;font-weight:400;text-align:center;background-color:RGBA(var(--white),0.1);color:RGB(var(--white));border:none;border-radius:var(--rad-inner);box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--white),0.2);outline:none;cursor:pointer;transition:background-color .15s ease-in-out,color .15s ease-in-out,box-shadow .15s ease-in-out}.btn-block:hover,.btn-block:focus-visible{background-color:RGBA(var(--white),0.2);box-shadow:0 1px 0 RGBA(var(--black),0.3),0 -1px 0 RGBA(var(--white),0.3)}.btn-block.primary{color:RGB(var(--primary));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--white),0.2)}.btn-block.primary:hover,.btn-block.primary:focus-visible{background-color:RGBA(var(--primary),0.1);color:RGB(var(--primary));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--primary),0.2)}.btn-block.critical{color:RGB(var(--critical));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--white),0.2)}.btn-block.critical:hover,.btn-block.critical:focus-visible{background-color:RGBA(var(--critical),0.1);color:RGB(var(--critical));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--critical),0.2)}.btn-block.warning{color:RGB(var(--warning));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--white),0.2)}.btn-block.warning:hover,.btn-block.warning:focus-visible{background-color:RGBA(var(--warning),0.1);color:RGB(var(--warning));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--warning),0.2)}.btn-block.success{color:RGB(var(--success));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--white),0.2)}.btn-block.success:hover,.btn-block.success:focus-visible{background-color:RGBA(var(--success),0.1);color:RGB(var(--success));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--success),0.2)}.btn-block.info{color:RGB(var(--info));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--white),0.2)}.btn-block.info:hover,.btn-block.info:focus-visible{background-color:RGBA(var(--info),0.1);color:RGB(var(--info));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--info),0.2)}.btn-block.black{color:RGB(var(--black));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--white),0.2)}.btn-block.black:hover,.btn-block.black:focus-visible{background-color:RGBA(var(--black),0.1);color:RGB(var(--black));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--black),0.2)}.input-checkbox{padding:0;display:flex;justify-content:flex-start;align-items:center;gap:.5rem;position:relative}.input-checkbox label{font-size:1rem;font-weight:400;text-align:left;color:RGB(var(--fg-white))}.input-block{padding:.4rem .7rem;width:auto;min-height:2.3rem;display:flex;justify-content:flex-start;align-items:center;position:relative;font-size:1rem;font-weight:400;text-align:left;background-color:RGBA(var(--white),0.1);color:RGB(var(--white));border:none;border-bottom:3px solid RGBA(var(--white),0.1);border-radius:var(--rad-inner);box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--white),0.2);outline:none;cursor:pointer;transition:background-color .2s ease-in-out,color .2s ease-in-out}.input-block:not(:focus):not([value=""]):not(:placeholder-shown){border-color:RGBA(var(--white),0.3)}.input-block:hover{border-color:RGBA(var(--white),0.3)}.input-block:focus{border-color:RGB(var(--primary))}.input-block.black{color:RGB(var(--black));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--white),0.2)}.input-block.black:hover,.input-block.black:focus-visible{background-color:RGBA(var(--black),0.1);color:RGB(var(--black));box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--black),0.2)}.fileDrop-block{padding:1rem 1.25rem;width:100%;min-height:2.3rem;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:.5rem;position:relative;font-size:1rem;font-weight:400;text-align:center;background-color:RGBA(var(--white),0.1);color:RGB(var(--white));border:none;border-radius:var(--rad-inner);box-shadow:0 1px 0 RGBA(var(--black),0.2),0 -1px 0 RGBA(var(--white),0.2);outline:none;cursor:pointer;overflow:hidden;transition:background-color .2s ease-in-out,color .2s ease-in-out,box-shadow .15s ease-in-out}.fileDrop-block input{position:absolute;inset:0;opacity:0;cursor:pointer}.fileDrop-block .status{width:100%;white-space:nowrap;text-overflow:ellipsis;text-align:center;overflow:hidden}.fileDrop-block:hover,.fileDrop-block:focus-visible{background-color:RGBA(var(--white),0.2);color:RGB(var(--white));box-shadow:0 1px 0 RGBA(var(--black),0.3),0 -1px 0 RGBA(var(--white),0.3)}.fileDrop-block.active{background-color:RGBA(var(--primary),0.2);color:RGB(var(--primary));box-shadow:0 1px 0 RGBA(var(--black),0.3),0 -1px 0 RGBA(var(--primary),0.3)}.fileDrop-block.edging{background-color:RGBA(var(--white),0.2);color:RGB(var(--white));box-shadow:0 1px 0 RGBA(var(--black),0.3),0 -1px 0 RGBA(var(--white),0.3)}.fileDrop-block.edging input{display:none}.fileDrop-block.error{background-color:RGBA(var(--critical),0.2);color:RGB(var(--critical));box-shadow:0 1px 0 RGBA(var(--black),0.3),0 -1px 0 RGBA(var(--critical),0.3)}.background{width:100%;height:100vh;position:fixed;top:0;left:0;background-color:RGB(var(--bg-300));background-image:linear-gradient(to right,RGB(var(--bg-400)) 15%,RGB(var(--bg-200)) 35%,RGB(var(--bg-400)) 50%);background-size:1000px 640px;animation:imgLoading 1.8s linear infinite forwards;user-select:none;overflow:hidden;z-index:1}.background img{position:absolute;top:0;left:0;width:100%;height:100%;background-color:RGB(var(--fg-white));filter:blur(1rem) saturate(1.2);transform:scale(1.1);object-fit:cover;object-position:center center}.background span{position:absolute;top:0;left:0;width:100%;height:100%;z-index:+1}.info-container{width:27rem;height:100vh;position:absolute;top:0;left:0;display:flex;flex-direction:column;gap:0;background-color:RGB(var(--bg-200));overflow-y:auto;z-index:+4;transition:left .3s cubic-bezier(0.76,0,0.17,1)}.info-container.collapsed{left:-27rem}.info-tab{width:100%;display:flex;flex-direction:column;position:relative;background-color:RGB(var(--bg-200));border-radius:var(--rad);transition:max-height .3s cubic-bezier(0.79,0.14,0.15,0.86)}.info-tab.collapsed{height:2.5rem}.info-tab.collapsed .collapse-indicator{transform:rotate(90deg)}.info-tab.collapsed .info-table{height:0;padding:0}.collapse-indicator{margin:0;padding:0;width:1.25rem;height:1.25rem;position:absolute;top:.6rem;right:.6rem;background-color:transparent;color:RGB(var(--primary));border:none;z-index:+2;transition:transform .15s cubic-bezier(0.79,0.14,0.15,0.86);cursor:pointer}.info-header{margin:0;padding:.5rem;width:100%;height:2.5rem;display:flex;justify-content:start;align-items:center;gap:.5rem;position:sticky;top:0;z-index:+1;background-color:RGB(var(--bg-200))}.info-header svg{margin:0;padding:0;width:1.25rem;height:1.25rem;fill:RGB(var(--primary))}.info-header h2{margin:0;padding:0;font-size:1.1rem;font-weight:500;color:RGB(var(--primary));text-overflow:ellipsis;overflow:hidden}.info-table{margin:0;padding:.5rem;display:flex;flex-direction:column;gap:1rem;color:RGB(var(--fg-white));overflow-x:hidden}.info-table p{margin:0;padding:0;font-size:1rem;font-weight:400;text-overflow:ellipsis;overflow:hidden}.info-table .link{margin:0;padding:0;color:RGB(var(--primary));cursor:pointer;text-decoration:none}.info-table .link:hover{text-decoration:underline}.info-table table{margin:0;padding:0;width:100%;overflow-x:hidden;border-collapse:collapse}.info-table table tr{white-space:nowrap}.info-table table tr td{padding-bottom:.5rem;max-width:0;font-size:1rem;font-weight:400;vertical-align:top}.info-table table tr td:first-child{padding-right:.5rem;width:50%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.info-table table tr td:last-child{width:50%;white-space:normal;word-break:break-word}.info-table table tr:last-of-type td{padding-bottom:0}.img-colours{width:100%;display:flex;gap:.5rem}.img-colours span{margin:0;padding:0;width:1.5rem;height:1.5rem;display:flex;justify-content:center;align-items:center;border-radius:var(--rad-inner)}.img-groups{width:100%;display:flex;flex-wrap:wrap;gap:.5rem}@media(max-width:1100px){.info-container{width:100%;height:100%;position:relative;display:flex;flex-direction:column;gap:.5rem}.info-container.collapsed{left:unset}}.image-container{margin:auto;padding:.5rem;width:100%;height:100%;display:flex;overflow:hidden}.image-container img{margin:auto;padding:0;width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;object-position:center}.image-grid{padding:0;width:100%;height:100vh;position:relative;display:flex;flex-direction:column;gap:.5rem;z-index:3}.image-grid .image-block{margin:0 0 0 27rem;padding:0;width:calc(100% - 27rem);height:100vh;position:relative;display:flex;flex-direction:column;gap:0;z-index:3;transition:margin .3s cubic-bezier(0.76,0,0.17,1),width .3s cubic-bezier(0.76,0,0.17,1)}.image-grid .image-block .pill-row{margin-bottom:.5rem}.image-grid.collapsed .image-block{margin:0;width:100%}@media(max-width:1100px){.image-grid{padding:.5rem;height:auto}.image-grid .image-block{margin:0;width:100%;height:auto;gap:.5rem;transition:margin 0s,width 0s}.image-grid .image-block .image-container{margin:0 auto;padding:0;max-height:69vh}.image-grid .image-block .image-container img{max-height:69vh}.image-grid .image-block .pill-row{margin-bottom:0}.image-grid .image-block .pill-row #fullscreenImage{display:none}.info-container{background:transparent}.info-header{border-radius:var(--rad) var(--rad) 0 0}.info-tab.collapsed .info-header{border-radius:var(--rad)}}*{box-sizing:border-box;font-family:"Rubik",sans-serif;scrollbar-color:RGB(var(--primary)) transparent}* ::-webkit-scrollbar{width:.5rem}* ::-webkit-scrollbar-track{background:RGB(var(--bg-200))}* ::-webkit-scrollbar-thumb{background:RGB(var(--primary))}* ::-webkit-scrollbar-thumb:hover{background:RGB(var(--fg-white))}html,body{margin:0;padding:0;min-height:100vh;max-width:100vw;background-color:RGB(var(--fg-white));scroll-behavior:smooth;overflow-x:hidden}.wrapper{margin:0;padding:0 0 0 3.5rem;min-height:100vh;display:flex;flex-direction:column;background-color:RGB(var(--bg-bright));color:RGB(var(--bg-100))}.big-text{height:20rem;display:flex;flex-direction:column;justify-content:center;align-items:center;color:RGB(var(--bg-100))}.big-text h1{margin:0 2rem;font-size:4rem;font-weight:900;text-align:center}.big-text p{margin:0 2rem;max-width:40rem;font-size:1rem;font-weight:400;text-align:center}.error-page{width:100%;height:100vh;display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:RGB(var(--bg-bright))}.error-page h1{margin:0 2rem;font-size:6.9rem;font-weight:900;text-align:center;color:var(--primary)}.error-page p{margin:0 2rem;max-width:40rem;font-size:1.25rem;font-weight:400;text-align:center;color:var(--fg-black)}@media(max-width:800px){.wrapper{padding:0 0 3.5rem 0}.big-text{height:calc(75vh - 3.5rem)}.big-text h1{font-size:3.5rem}.error-page{height:calc(100vh - 3.5rem)}.error-page h1{font-size:4.5rem}.error-page p{max-width:100%;font-size:1rem}}:root{--bg-dim:16,16,16;--bg-bright:232,227,227;--bg-100:21,21,21;--bg-200:26.1,26.1,26.1;--bg-300:31.2,31.2,31.2;--bg-400:36.3,36.3,36.3;--bg-500:41.4,41.4,41.4;--bg-600:46.5,46.5,46.5;--fg-dim:102,102,102;--fg-white:232,227,227;--fg-black:16,16,16;--black:21,21,21;--white:232,227,227;--red:182,100,103;--orange:217,140,95;--yellow:217,188,140;--green:140,151,125;--blue:141,163,185;--purple:169,136,176;--primary:var(--green);--warning:var(--orange);--critical:var(--red);--success:var(--green);--info:var(--blue);--rad:6px;--rad-inner:calc(var(--rad) / 2);--animation-smooth:cubic-bezier(0.76,0,0.17,1);--animation-bounce:cubic-bezier(.68,-0.55,.27,1.55);--breakpoint:800px} \ No newline at end of file From 48f6b027553e2149db18ca703850c7e6769848a4 Mon Sep 17 00:00:00 2001 From: Fluffy-Bean Date: Wed, 19 Apr 2023 15:05:21 +0000 Subject: [PATCH 05/15] Switch away from date-based versions --- onlylegs/static/js/index.js | 2 +- pyproject.toml | 2 +- run.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/onlylegs/static/js/index.js b/onlylegs/static/js/index.js index 9cae4bb..c460b0b 100644 --- a/onlylegs/static/js/index.js +++ b/onlylegs/static/js/index.js @@ -65,7 +65,7 @@ window.onload = function () { } infoButton.onclick = function () { popUpShow('OnlyLegs', - 'V23.04.12 ' + + 'v0.1.0 ' + 'using Phosphoricons and Flask.' + '
Made by Fluffy and others with ❤️'); } diff --git a/pyproject.toml b/pyproject.toml index 6b2b85b..7d70990 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "onlylegs" -version = "23.04.12" +version = "0.1.0" description = "Gallery built for fast and simple image management" authors = ["Fluffy-Bean "] license = "MIT" diff --git a/run.py b/run.py index 15b8f82..83b6fc6 100644 --- a/run.py +++ b/run.py @@ -15,7 +15,7 @@ print( #+# #+# #+# #+#+# #+# #+# #+# #+# #+# #+# #+# #+# ######## ### #### ########## ### ########## ######### ######### ######## - Created by Fluffy Bean - Version 23.04.12 + Created by Fluffy Bean - Version 0.1.0 """ ) From f0e586d0d58726f587111a7d2f72d78f62243ee0 Mon Sep 17 00:00:00 2001 From: Fluffy-Bean Date: Wed, 19 Apr 2023 15:05:54 +0000 Subject: [PATCH 06/15] Switch button and pop-up styling again --- onlylegs/static/js/login.js | 2 ++ onlylegs/static/js/popup.js | 2 +- onlylegs/static/sass/components/banner.sass | 2 +- .../static/sass/components/buttons/block.sass | 34 ++++++++++--------- .../static/sass/components/buttons/pill.sass | 2 +- onlylegs/static/sass/components/pop-up.sass | 28 +++++---------- 6 files changed, 32 insertions(+), 38 deletions(-) diff --git a/onlylegs/static/js/login.js b/onlylegs/static/js/login.js index db5ca13..77ec09a 100644 --- a/onlylegs/static/js/login.js +++ b/onlylegs/static/js/login.js @@ -3,6 +3,7 @@ function showLogin() { // Create elements cancelBtn = document.createElement('button'); cancelBtn.classList.add('btn-block'); + cancelBtn.classList.add('transparent'); cancelBtn.innerHTML = 'nuuuuuuuu'; cancelBtn.onclick = popupDissmiss; @@ -100,6 +101,7 @@ function showRegister() { // Create buttons cancelBtn = document.createElement('button'); cancelBtn.classList.add('btn-block'); + cancelBtn.classList.add('transparent'); cancelBtn.innerHTML = 'nuuuuuuuu'; cancelBtn.onclick = popupDissmiss; diff --git a/onlylegs/static/js/popup.js b/onlylegs/static/js/popup.js index bda748c..9438197 100644 --- a/onlylegs/static/js/popup.js +++ b/onlylegs/static/js/popup.js @@ -28,7 +28,7 @@ function popUpShow(titleText, subtitleText, bodyContent=null, userActions=null) actionsSelector.appendChild(userActions[i]); } } else { - actionsSelector.innerHTML = ''; + actionsSelector.innerHTML = ''; } // Stop scrolling and show popup diff --git a/onlylegs/static/sass/components/banner.sass b/onlylegs/static/sass/components/banner.sass index c9b4aca..f835868 100644 --- a/onlylegs/static/sass/components/banner.sass +++ b/onlylegs/static/sass/components/banner.sass @@ -57,7 +57,7 @@ width: 100% height: 100% - background: linear-gradient(to right, RGB($primary), transparent) + background: linear-gradient(to right, RGB($bg-100), transparent) z-index: +1 diff --git a/onlylegs/static/sass/components/buttons/block.sass b/onlylegs/static/sass/components/buttons/block.sass index 6dbe3c8..0fee205 100644 --- a/onlylegs/static/sass/components/buttons/block.sass +++ b/onlylegs/static/sass/components/buttons/block.sass @@ -1,11 +1,12 @@ @mixin btn-block($color) + background-color: RGBA($color, 0.1) color: RGB($color) - box-shadow: 0 1px 0 RGBA($black, 0.2), 0 -1px 0 RGBA($white, 0.2) + // box-shadow: 0 1px 0 RGBA($black, 0.2), 0 -1px 0 RGBA($white, 0.2) &:hover, &:focus-visible - background-color: RGBA($color, 0.1) + background-color: RGBA($color, 0.15) color: RGB($color) - box-shadow: 0 1px 0 RGBA($black, 0.2), 0 -1px 0 RGBA($color, 0.2) + // box-shadow: 0 1px 0 RGBA($black, 0.2), 0 -1px 0 RGBA($color, 0.2) .btn-block @@ -29,7 +30,7 @@ color: RGB($white) border: none border-radius: $rad-inner - box-shadow: 0 1px 0 RGBA($black, 0.2), 0 -1px 0 RGBA($white, 0.2) + // box-shadow: 0 1px 0 RGBA($black, 0.2), 0 -1px 0 RGBA($white, 0.2) outline: none cursor: pointer @@ -37,23 +38,24 @@ &:hover, &:focus-visible background-color: RGBA($white, 0.2) - box-shadow: 0 1px 0 RGBA($black, 0.3), 0 -1px 0 RGBA($white, 0.3) + // box-shadow: 0 1px 0 RGBA($black, 0.3), 0 -1px 0 RGBA($white, 0.3) + + &.transparent + background-color: transparent + + &:hover, &:focus-visible + text-decoration: underline &.primary @include btn-block($primary) - &.critical @include btn-block($critical) - &.warning @include btn-block($warning) - &.success @include btn-block($success) - &.info @include btn-block($info) - &.black @include btn-block($black) @@ -94,7 +96,7 @@ border: none border-bottom: 3px solid RGBA($white, 0.1) border-radius: $rad-inner - box-shadow: 0 1px 0 RGBA($black, 0.2), 0 -1px 0 RGBA($white, 0.2) + // box-shadow: 0 1px 0 RGBA($black, 0.2), 0 -1px 0 RGBA($white, 0.2) outline: none cursor: pointer @@ -134,7 +136,7 @@ color: RGB($white) border: none border-radius: $rad-inner - box-shadow: 0 1px 0 RGBA($black, 0.2), 0 -1px 0 RGBA($white, 0.2) + // box-shadow: 0 1px 0 RGBA($black, 0.2), 0 -1px 0 RGBA($white, 0.2) outline: none cursor: pointer @@ -157,17 +159,17 @@ &:hover, &:focus-visible background-color: RGBA($white, 0.2) color: RGB($white) - box-shadow: 0 1px 0 RGBA($black, 0.3), 0 -1px 0 RGBA($white, 0.3) + // box-shadow: 0 1px 0 RGBA($black, 0.3), 0 -1px 0 RGBA($white, 0.3) &.active background-color: RGBA($primary, 0.2) color: RGB($primary) - box-shadow: 0 1px 0 RGBA($black, 0.3), 0 -1px 0 RGBA($primary, 0.3) + // box-shadow: 0 1px 0 RGBA($black, 0.3), 0 -1px 0 RGBA($primary, 0.3) &.edging background-color: RGBA($white, 0.2) color: RGB($white) - box-shadow: 0 1px 0 RGBA($black, 0.3), 0 -1px 0 RGBA($white, 0.3) + // box-shadow: 0 1px 0 RGBA($black, 0.3), 0 -1px 0 RGBA($white, 0.3) input display: none // So it doesnt get in the way of the drop as that breaks things @@ -175,4 +177,4 @@ &.error background-color: RGBA($critical, 0.2) color: RGB($critical) - box-shadow: 0 1px 0 RGBA($black, 0.3), 0 -1px 0 RGBA($critical, 0.3) + // box-shadow: 0 1px 0 RGBA($black, 0.3), 0 -1px 0 RGBA($critical, 0.3) diff --git a/onlylegs/static/sass/components/buttons/pill.sass b/onlylegs/static/sass/components/buttons/pill.sass index cc30fc5..574476d 100644 --- a/onlylegs/static/sass/components/buttons/pill.sass +++ b/onlylegs/static/sass/components/buttons/pill.sass @@ -18,7 +18,7 @@ background-color: RGB($bg-200) border-radius: $rad - box-shadow: 0 1px 0 RGB($bg-100), 0 -1px 0 RGB($bg-300) + // box-shadow: 0 1px 0 RGB($bg-100), 0 -1px 0 RGB($bg-300) .pill-text margin: 0 diff --git a/onlylegs/static/sass/components/pop-up.sass b/onlylegs/static/sass/components/pop-up.sass index 2af9246..e495184 100644 --- a/onlylegs/static/sass/components/pop-up.sass +++ b/onlylegs/static/sass/components/pop-up.sass @@ -25,7 +25,7 @@ .pop-up-wrapper margin: 0 - padding: 0 + padding: 1rem width: 621px height: auto @@ -46,8 +46,8 @@ transition: transform 0.2s $animation-smooth .pop-up-header - margin: 0 - padding: 1rem + margin: 0 0 1rem 0 + padding: 0 width: 100% height: auto @@ -102,17 +102,6 @@ &:hover text-decoration: underline - img - margin: auto - padding: 0 - - width: auto - height: auto - max-width: 100% - max-height: 40vh - - border-radius: $rad-inner - form margin: 0 padding: 0 @@ -128,7 +117,7 @@ .pop-up-controlls margin: 0 - padding: 0.25rem + padding: 0 width: 100% height: auto @@ -136,9 +125,9 @@ display: flex flex-direction: row justify-content: flex-end - gap: 0.25rem + gap: 0.5rem - background-color: RGB($bg-100) + // background-color: RGB($bg-100) &.active opacity: 1 @@ -158,8 +147,9 @@ img max-height: 50vh - .pop-up-controlls button - width: 100% + .pop-up-controlls + button + width: 100% &.active opacity: 1 \ No newline at end of file From 8c2e0817839ca3195769b268a6cac6c394fce428 Mon Sep 17 00:00:00 2001 From: Fluffy-Bean Date: Wed, 19 Apr 2023 17:16:40 +0000 Subject: [PATCH 07/15] Fix popup styling across website --- onlylegs/static/sass/components/pop-up.sass | 4 ++-- onlylegs/static/sass/variables.sass | 3 +-- onlylegs/templates/group.html | 2 ++ onlylegs/templates/image.html | 1 + onlylegs/templates/list.html | 1 + 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/onlylegs/static/sass/components/pop-up.sass b/onlylegs/static/sass/components/pop-up.sass index e495184..6a7de6e 100644 --- a/onlylegs/static/sass/components/pop-up.sass +++ b/onlylegs/static/sass/components/pop-up.sass @@ -27,7 +27,7 @@ margin: 0 padding: 1rem - width: 621px + width: 460px height: auto position: absolute @@ -46,7 +46,7 @@ transition: transform 0.2s $animation-smooth .pop-up-header - margin: 0 0 1rem 0 + margin: 0 0 0.5rem 0 padding: 0 width: 100% diff --git a/onlylegs/static/sass/variables.sass b/onlylegs/static/sass/variables.sass index 537fab9..bc1bd9f 100644 --- a/onlylegs/static/sass/variables.sass +++ b/onlylegs/static/sass/variables.sass @@ -66,11 +66,10 @@ $breakpoint: 800px --success: var(--green) --info: var(--blue) - --rad: 6px + --rad: 8px --rad-inner: calc(var(--rad) / 2) --animation-smooth: cubic-bezier(0.76, 0, 0.17, 1) --animation-bounce: cubic-bezier(.68,-0.55,.27,1.55) --breakpoint: 800px - diff --git a/onlylegs/templates/group.html b/onlylegs/templates/group.html index a05a4b8..c2cc311 100644 --- a/onlylegs/templates/group.html +++ b/onlylegs/templates/group.html @@ -19,6 +19,7 @@ function groupDelete() { cancelBtn = document.createElement('button'); cancelBtn.classList.add('btn-block'); + cancelBtn.classList.add('transparent'); cancelBtn.innerHTML = 'AAAAAAAAAA'; cancelBtn.onclick = popupDissmiss; @@ -79,6 +80,7 @@ // Create elements cancelBtn = document.createElement('button'); cancelBtn.classList.add('btn-block'); + cancelBtn.classList.add('transparent'); cancelBtn.innerHTML = 'go baaaaack'; cancelBtn.onclick = popupDissmiss; diff --git a/onlylegs/templates/image.html b/onlylegs/templates/image.html index 8e4d7a0..28b63a2 100644 --- a/onlylegs/templates/image.html +++ b/onlylegs/templates/image.html @@ -31,6 +31,7 @@ function imageDelete() { cancelBtn = document.createElement('button'); cancelBtn.classList.add('btn-block'); + cancelBtn.classList.add('transparent'); cancelBtn.innerHTML = 'nuuuuuuuu'; cancelBtn.onclick = popupDissmiss; diff --git a/onlylegs/templates/list.html b/onlylegs/templates/list.html index 6cf3d6c..a66b609 100644 --- a/onlylegs/templates/list.html +++ b/onlylegs/templates/list.html @@ -11,6 +11,7 @@ // Create elements cancelBtn = document.createElement('button'); cancelBtn.classList.add('btn-block'); + cancelBtn.classList.add('transparent'); cancelBtn.innerHTML = 'nuuuuuuuu'; cancelBtn.onclick = popupDissmiss; From fa5fb3379303da5b303236d9cd82c1779b9f5217 Mon Sep 17 00:00:00 2001 From: Fluffy-Bean Date: Wed, 19 Apr 2023 17:18:49 +0000 Subject: [PATCH 08/15] Style checks --- poetry.lock | 100 +++++++++++++++++++++++++++++++++++++++++++++---- pyproject.toml | 3 +- 2 files changed, 95 insertions(+), 8 deletions(-) diff --git a/poetry.lock b/poetry.lock index fa80bad..9c99c59 100644 --- a/poetry.lock +++ b/poetry.lock @@ -24,14 +24,14 @@ tz = ["python-dateutil"] [[package]] name = "astroid" -version = "2.15.2" +version = "2.15.3" description = "An abstract syntax tree for Python with inference support." category = "main" optional = false python-versions = ">=3.7.2" files = [ - {file = "astroid-2.15.2-py3-none-any.whl", hash = "sha256:dea89d9f99f491c66ac9c04ebddf91e4acf8bd711722175fe6245c0725cc19bb"}, - {file = "astroid-2.15.2.tar.gz", hash = "sha256:6e61b85c891ec53b07471aec5878f4ac6446a41e590ede0f2ce095f39f7d49dd"}, + {file = "astroid-2.15.3-py3-none-any.whl", hash = "sha256:f11e74658da0f2a14a8d19776a8647900870a63de71db83713a8e77a6af52662"}, + {file = "astroid-2.15.3.tar.gz", hash = "sha256:44224ad27c54d770233751315fa7f74c46fa3ee0fab7beef1065f99f09897efe"}, ] [package.dependencies] @@ -42,6 +42,56 @@ wrapt = [ {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, ] +[[package]] +name = "black" +version = "23.3.0" +description = "The uncompromising code formatter." +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "black-23.3.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:0945e13506be58bf7db93ee5853243eb368ace1c08a24c65ce108986eac65915"}, + {file = "black-23.3.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:67de8d0c209eb5b330cce2469503de11bca4085880d62f1628bd9972cc3366b9"}, + {file = "black-23.3.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:7c3eb7cea23904399866c55826b31c1f55bbcd3890ce22ff70466b907b6775c2"}, + {file = "black-23.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32daa9783106c28815d05b724238e30718f34155653d4d6e125dc7daec8e260c"}, + {file = "black-23.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:35d1381d7a22cc5b2be2f72c7dfdae4072a3336060635718cc7e1ede24221d6c"}, + {file = "black-23.3.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:a8a968125d0a6a404842fa1bf0b349a568634f856aa08ffaff40ae0dfa52e7c6"}, + {file = "black-23.3.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:c7ab5790333c448903c4b721b59c0d80b11fe5e9803d8703e84dcb8da56fec1b"}, + {file = "black-23.3.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:a6f6886c9869d4daae2d1715ce34a19bbc4b95006d20ed785ca00fa03cba312d"}, + {file = "black-23.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f3c333ea1dd6771b2d3777482429864f8e258899f6ff05826c3a4fcc5ce3f70"}, + {file = "black-23.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:11c410f71b876f961d1de77b9699ad19f939094c3a677323f43d7a29855fe326"}, + {file = "black-23.3.0-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:1d06691f1eb8de91cd1b322f21e3bfc9efe0c7ca1f0e1eb1db44ea367dff656b"}, + {file = "black-23.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50cb33cac881766a5cd9913e10ff75b1e8eb71babf4c7104f2e9c52da1fb7de2"}, + {file = "black-23.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:e114420bf26b90d4b9daa597351337762b63039752bdf72bf361364c1aa05925"}, + {file = "black-23.3.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:48f9d345675bb7fbc3dd85821b12487e1b9a75242028adad0333ce36ed2a6d27"}, + {file = "black-23.3.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:714290490c18fb0126baa0fca0a54ee795f7502b44177e1ce7624ba1c00f2331"}, + {file = "black-23.3.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:064101748afa12ad2291c2b91c960be28b817c0c7eaa35bec09cc63aa56493c5"}, + {file = "black-23.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:562bd3a70495facf56814293149e51aa1be9931567474993c7942ff7d3533961"}, + {file = "black-23.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:e198cf27888ad6f4ff331ca1c48ffc038848ea9f031a3b40ba36aced7e22f2c8"}, + {file = "black-23.3.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:3238f2aacf827d18d26db07524e44741233ae09a584273aa059066d644ca7b30"}, + {file = "black-23.3.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:f0bd2f4a58d6666500542b26354978218a9babcdc972722f4bf90779524515f3"}, + {file = "black-23.3.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:92c543f6854c28a3c7f39f4d9b7694f9a6eb9d3c5e2ece488c327b6e7ea9b266"}, + {file = "black-23.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a150542a204124ed00683f0db1f5cf1c2aaaa9cc3495b7a3b5976fb136090ab"}, + {file = "black-23.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:6b39abdfb402002b8a7d030ccc85cf5afff64ee90fa4c5aebc531e3ad0175ddb"}, + {file = "black-23.3.0-py3-none-any.whl", hash = "sha256:ec751418022185b0c1bb7d7736e6933d40bbb14c14a0abcf9123d1b159f98dd4"}, + {file = "black-23.3.0.tar.gz", hash = "sha256:1c7b8d606e728a41ea1ccbd7264677e494e87cf630e399262ced92d4a8dac940"}, +] + +[package.dependencies] +click = ">=8.0.0" +mypy-extensions = ">=0.4.3" +packaging = ">=22.0" +pathspec = ">=0.9.0" +platformdirs = ">=2" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.7.4)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] + [[package]] name = "brotli" version = "1.0.9" @@ -431,14 +481,14 @@ tornado = ["tornado (>=0.2)"] [[package]] name = "importlib-metadata" -version = "6.2.1" +version = "6.5.0" description = "Read metadata from Python packages" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "importlib_metadata-6.2.1-py3-none-any.whl", hash = "sha256:f65e478a7c2177bd19517a3a15dac094d253446d8690c5f3e71e735a04312374"}, - {file = "importlib_metadata-6.2.1.tar.gz", hash = "sha256:5a66966b39ff1c14ef5b2d60c1d842b0141fefff0f4cc6365b4bc9446c652807"}, + {file = "importlib_metadata-6.5.0-py3-none-any.whl", hash = "sha256:03ba783c3a2c69d751b109fc0c94a62c51f581b3d6acf8ed1331b6d5729321ff"}, + {file = "importlib_metadata-6.5.0.tar.gz", hash = "sha256:7a8bdf1bc3a726297f5cfbc999e6e7ff6b4fa41b26bba4afc580448624460045"}, ] [package.dependencies] @@ -680,6 +730,42 @@ files = [ {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, ] +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +category = "main" +optional = false +python-versions = ">=3.5" +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] + +[[package]] +name = "packaging" +version = "23.1" +description = "Core utilities for Python packages" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, + {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, +] + +[[package]] +name = "pathspec" +version = "0.11.1" +description = "Utility library for gitignore style pattern matching of file paths." +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, + {file = "pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, +] + [[package]] name = "pillow" version = "9.5.0" @@ -1136,4 +1222,4 @@ testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "88387c49c901feebd4685ee75f6b79c0bbc8cc9c1a64798cd0394b140e165603" +content-hash = "7309b76a75c6ab11febc8d91b3e2c9bfe0adb656f06dcae9b602ce5dea1db35e" diff --git a/pyproject.toml b/pyproject.toml index 7d70990..70e5c2b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,10 +21,11 @@ pyyaml = "^6.0" colorthief = "^0.2.1" Pillow = "^9.4.0" platformdirs = "^3.0.0" -pylint = "^2.16.3" libsass = "^0.22.0" jsmin = "^3.0.1" cssmin = "^0.2.0" +pylint = "^2.16.3" +black = "^23.3.0" [build-system] requires = ["poetry-core"] From d5768cf101ca835b05c8c7c16eeb9a577774e6d6 Mon Sep 17 00:00:00 2001 From: Fluffy-Bean Date: Wed, 19 Apr 2023 17:36:31 +0000 Subject: [PATCH 09/15] Ignore non-issues --- .deepsource.toml | 3 --- onlylegs/__init__.py | 4 ++-- setup/runner.py | 4 ++-- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/.deepsource.toml b/.deepsource.toml index 08a3ea5..3e0e0ac 100644 --- a/.deepsource.toml +++ b/.deepsource.toml @@ -1,8 +1,5 @@ version = 1 -[[analyzers]] -name = "sql" - [[analyzers]] name = "python" diff --git a/onlylegs/__init__.py b/onlylegs/__init__.py index 741a7e7..4979132 100644 --- a/onlylegs/__init__.py +++ b/onlylegs/__init__.py @@ -85,14 +85,14 @@ def create_app(): # pylint: disable=R0914 return User.query.filter_by(alt_id=user_id).first() @login_manager.unauthorized_handler - def unauthorized(): + def unauthorized(): # skipcq: PTC-W0065 error = 401 msg = "You are not authorized to view this page!!!!" return render_template("error.html", error=error, msg=msg), error # ERROR HANDLERS @app.errorhandler(Exception) - def error_page(err): # noqa + def error_page(err): # skipcq: PTC-W0065 """ Error handlers, if the error is not a HTTP error, return 500 """ diff --git a/setup/runner.py b/setup/runner.py index 138c40c..11c1e10 100644 --- a/setup/runner.py +++ b/setup/runner.py @@ -10,7 +10,7 @@ class OnlyLegs(Application): Gunicorn application """ - def __init__(self, options={}): # pylint: disable=W0102, W0231 + def __init__(self, options={}): # pylint: disable=W0102 skipcq: PYL-W0231 self.usage = None self.callable = None self.options = options @@ -27,7 +27,7 @@ class OnlyLegs(Application): return cfg @staticmethod - def prog(): # pylint: disable=C0116, E0202 + def prog(): # pylint: disable=C0116 skipcq: PYL-E0202 return "OnlyLegs" def load(self): From 96f56a69b3db0ed25d7b49bff5c9253d4bb484ed Mon Sep 17 00:00:00 2001 From: Fluffy-Bean Date: Wed, 19 Apr 2023 17:38:46 +0000 Subject: [PATCH 10/15] Remove Black as dependency --- onlylegs/__init__.py | 2 +- poetry.lock | 88 +------------------------------------------- pyproject.toml | 1 - 3 files changed, 2 insertions(+), 89 deletions(-) diff --git a/onlylegs/__init__.py b/onlylegs/__init__.py index 4979132..568da74 100644 --- a/onlylegs/__init__.py +++ b/onlylegs/__init__.py @@ -81,7 +81,7 @@ def create_app(): # pylint: disable=R0914 login_manager.login_view = "onlylegs.index" @login_manager.user_loader - def load_user(user_id): + def load_user(user_id): # skipcq: PTC-W0065 return User.query.filter_by(alt_id=user_id).first() @login_manager.unauthorized_handler diff --git a/poetry.lock b/poetry.lock index 9c99c59..cfab855 100644 --- a/poetry.lock +++ b/poetry.lock @@ -42,56 +42,6 @@ wrapt = [ {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, ] -[[package]] -name = "black" -version = "23.3.0" -description = "The uncompromising code formatter." -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "black-23.3.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:0945e13506be58bf7db93ee5853243eb368ace1c08a24c65ce108986eac65915"}, - {file = "black-23.3.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:67de8d0c209eb5b330cce2469503de11bca4085880d62f1628bd9972cc3366b9"}, - {file = "black-23.3.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:7c3eb7cea23904399866c55826b31c1f55bbcd3890ce22ff70466b907b6775c2"}, - {file = "black-23.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32daa9783106c28815d05b724238e30718f34155653d4d6e125dc7daec8e260c"}, - {file = "black-23.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:35d1381d7a22cc5b2be2f72c7dfdae4072a3336060635718cc7e1ede24221d6c"}, - {file = "black-23.3.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:a8a968125d0a6a404842fa1bf0b349a568634f856aa08ffaff40ae0dfa52e7c6"}, - {file = "black-23.3.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:c7ab5790333c448903c4b721b59c0d80b11fe5e9803d8703e84dcb8da56fec1b"}, - {file = "black-23.3.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:a6f6886c9869d4daae2d1715ce34a19bbc4b95006d20ed785ca00fa03cba312d"}, - {file = "black-23.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f3c333ea1dd6771b2d3777482429864f8e258899f6ff05826c3a4fcc5ce3f70"}, - {file = "black-23.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:11c410f71b876f961d1de77b9699ad19f939094c3a677323f43d7a29855fe326"}, - {file = "black-23.3.0-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:1d06691f1eb8de91cd1b322f21e3bfc9efe0c7ca1f0e1eb1db44ea367dff656b"}, - {file = "black-23.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50cb33cac881766a5cd9913e10ff75b1e8eb71babf4c7104f2e9c52da1fb7de2"}, - {file = "black-23.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:e114420bf26b90d4b9daa597351337762b63039752bdf72bf361364c1aa05925"}, - {file = "black-23.3.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:48f9d345675bb7fbc3dd85821b12487e1b9a75242028adad0333ce36ed2a6d27"}, - {file = "black-23.3.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:714290490c18fb0126baa0fca0a54ee795f7502b44177e1ce7624ba1c00f2331"}, - {file = "black-23.3.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:064101748afa12ad2291c2b91c960be28b817c0c7eaa35bec09cc63aa56493c5"}, - {file = "black-23.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:562bd3a70495facf56814293149e51aa1be9931567474993c7942ff7d3533961"}, - {file = "black-23.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:e198cf27888ad6f4ff331ca1c48ffc038848ea9f031a3b40ba36aced7e22f2c8"}, - {file = "black-23.3.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:3238f2aacf827d18d26db07524e44741233ae09a584273aa059066d644ca7b30"}, - {file = "black-23.3.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:f0bd2f4a58d6666500542b26354978218a9babcdc972722f4bf90779524515f3"}, - {file = "black-23.3.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:92c543f6854c28a3c7f39f4d9b7694f9a6eb9d3c5e2ece488c327b6e7ea9b266"}, - {file = "black-23.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a150542a204124ed00683f0db1f5cf1c2aaaa9cc3495b7a3b5976fb136090ab"}, - {file = "black-23.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:6b39abdfb402002b8a7d030ccc85cf5afff64ee90fa4c5aebc531e3ad0175ddb"}, - {file = "black-23.3.0-py3-none-any.whl", hash = "sha256:ec751418022185b0c1bb7d7736e6933d40bbb14c14a0abcf9123d1b159f98dd4"}, - {file = "black-23.3.0.tar.gz", hash = "sha256:1c7b8d606e728a41ea1ccbd7264677e494e87cf630e399262ced92d4a8dac940"}, -] - -[package.dependencies] -click = ">=8.0.0" -mypy-extensions = ">=0.4.3" -packaging = ">=22.0" -pathspec = ">=0.9.0" -platformdirs = ">=2" -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} - -[package.extras] -colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.7.4)"] -jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] -uvloop = ["uvloop (>=0.15.2)"] - [[package]] name = "brotli" version = "1.0.9" @@ -730,42 +680,6 @@ files = [ {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, ] -[[package]] -name = "mypy-extensions" -version = "1.0.0" -description = "Type system extensions for programs checked with the mypy type checker." -category = "main" -optional = false -python-versions = ">=3.5" -files = [ - {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, - {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, -] - -[[package]] -name = "packaging" -version = "23.1" -description = "Core utilities for Python packages" -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, - {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, -] - -[[package]] -name = "pathspec" -version = "0.11.1" -description = "Utility library for gitignore style pattern matching of file paths." -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, - {file = "pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, -] - [[package]] name = "pillow" version = "9.5.0" @@ -1222,4 +1136,4 @@ testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "7309b76a75c6ab11febc8d91b3e2c9bfe0adb656f06dcae9b602ce5dea1db35e" +content-hash = "29248248759b9c46fefc4a7d964acdb125c6b27e199435d03b6f0a81bf527445" diff --git a/pyproject.toml b/pyproject.toml index 70e5c2b..82036e0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,7 +25,6 @@ libsass = "^0.22.0" jsmin = "^3.0.1" cssmin = "^0.2.0" pylint = "^2.16.3" -black = "^23.3.0" [build-system] requires = ["poetry-core"] From dc7f1ff1d4a700100d9d825a3f9f53e2621b8e46 Mon Sep 17 00:00:00 2001 From: Fluffy-Bean Date: Wed, 19 Apr 2023 17:44:45 +0000 Subject: [PATCH 11/15] Black was not what was breaking everything :3 --- poetry.lock | 88 +++++++++++++++++++++++++++++++++++++++++++++++++- pyproject.toml | 3 +- 2 files changed, 89 insertions(+), 2 deletions(-) diff --git a/poetry.lock b/poetry.lock index cfab855..9c99c59 100644 --- a/poetry.lock +++ b/poetry.lock @@ -42,6 +42,56 @@ wrapt = [ {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, ] +[[package]] +name = "black" +version = "23.3.0" +description = "The uncompromising code formatter." +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "black-23.3.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:0945e13506be58bf7db93ee5853243eb368ace1c08a24c65ce108986eac65915"}, + {file = "black-23.3.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:67de8d0c209eb5b330cce2469503de11bca4085880d62f1628bd9972cc3366b9"}, + {file = "black-23.3.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:7c3eb7cea23904399866c55826b31c1f55bbcd3890ce22ff70466b907b6775c2"}, + {file = "black-23.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32daa9783106c28815d05b724238e30718f34155653d4d6e125dc7daec8e260c"}, + {file = "black-23.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:35d1381d7a22cc5b2be2f72c7dfdae4072a3336060635718cc7e1ede24221d6c"}, + {file = "black-23.3.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:a8a968125d0a6a404842fa1bf0b349a568634f856aa08ffaff40ae0dfa52e7c6"}, + {file = "black-23.3.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:c7ab5790333c448903c4b721b59c0d80b11fe5e9803d8703e84dcb8da56fec1b"}, + {file = "black-23.3.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:a6f6886c9869d4daae2d1715ce34a19bbc4b95006d20ed785ca00fa03cba312d"}, + {file = "black-23.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f3c333ea1dd6771b2d3777482429864f8e258899f6ff05826c3a4fcc5ce3f70"}, + {file = "black-23.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:11c410f71b876f961d1de77b9699ad19f939094c3a677323f43d7a29855fe326"}, + {file = "black-23.3.0-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:1d06691f1eb8de91cd1b322f21e3bfc9efe0c7ca1f0e1eb1db44ea367dff656b"}, + {file = "black-23.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50cb33cac881766a5cd9913e10ff75b1e8eb71babf4c7104f2e9c52da1fb7de2"}, + {file = "black-23.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:e114420bf26b90d4b9daa597351337762b63039752bdf72bf361364c1aa05925"}, + {file = "black-23.3.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:48f9d345675bb7fbc3dd85821b12487e1b9a75242028adad0333ce36ed2a6d27"}, + {file = "black-23.3.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:714290490c18fb0126baa0fca0a54ee795f7502b44177e1ce7624ba1c00f2331"}, + {file = "black-23.3.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:064101748afa12ad2291c2b91c960be28b817c0c7eaa35bec09cc63aa56493c5"}, + {file = "black-23.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:562bd3a70495facf56814293149e51aa1be9931567474993c7942ff7d3533961"}, + {file = "black-23.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:e198cf27888ad6f4ff331ca1c48ffc038848ea9f031a3b40ba36aced7e22f2c8"}, + {file = "black-23.3.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:3238f2aacf827d18d26db07524e44741233ae09a584273aa059066d644ca7b30"}, + {file = "black-23.3.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:f0bd2f4a58d6666500542b26354978218a9babcdc972722f4bf90779524515f3"}, + {file = "black-23.3.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:92c543f6854c28a3c7f39f4d9b7694f9a6eb9d3c5e2ece488c327b6e7ea9b266"}, + {file = "black-23.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a150542a204124ed00683f0db1f5cf1c2aaaa9cc3495b7a3b5976fb136090ab"}, + {file = "black-23.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:6b39abdfb402002b8a7d030ccc85cf5afff64ee90fa4c5aebc531e3ad0175ddb"}, + {file = "black-23.3.0-py3-none-any.whl", hash = "sha256:ec751418022185b0c1bb7d7736e6933d40bbb14c14a0abcf9123d1b159f98dd4"}, + {file = "black-23.3.0.tar.gz", hash = "sha256:1c7b8d606e728a41ea1ccbd7264677e494e87cf630e399262ced92d4a8dac940"}, +] + +[package.dependencies] +click = ">=8.0.0" +mypy-extensions = ">=0.4.3" +packaging = ">=22.0" +pathspec = ">=0.9.0" +platformdirs = ">=2" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.7.4)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] + [[package]] name = "brotli" version = "1.0.9" @@ -680,6 +730,42 @@ files = [ {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, ] +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +category = "main" +optional = false +python-versions = ">=3.5" +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] + +[[package]] +name = "packaging" +version = "23.1" +description = "Core utilities for Python packages" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, + {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, +] + +[[package]] +name = "pathspec" +version = "0.11.1" +description = "Utility library for gitignore style pattern matching of file paths." +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, + {file = "pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, +] + [[package]] name = "pillow" version = "9.5.0" @@ -1136,4 +1222,4 @@ testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "29248248759b9c46fefc4a7d964acdb125c6b27e199435d03b6f0a81bf527445" +content-hash = "7309b76a75c6ab11febc8d91b3e2c9bfe0adb656f06dcae9b602ce5dea1db35e" diff --git a/pyproject.toml b/pyproject.toml index 82036e0..0724ddc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ version = "0.1.0" description = "Gallery built for fast and simple image management" authors = ["Fluffy-Bean "] license = "MIT" -readme = ".github/README.md" +readme = "README.md" [tool.poetry.dependencies] python = "^3.8" @@ -25,6 +25,7 @@ libsass = "^0.22.0" jsmin = "^3.0.1" cssmin = "^0.2.0" pylint = "^2.16.3" +black = "^23.3.0" [build-system] requires = ["poetry-core"] From 0cc5f70e4f74559ad325a7bf34ea1d2336569161 Mon Sep 17 00:00:00 2001 From: Fluffy-Bean Date: Wed, 19 Apr 2023 17:55:41 +0000 Subject: [PATCH 12/15] Follow JS errors from Deepsource Remove jsmin as it breaks code --- onlylegs/__init__.py | 2 +- onlylegs/static/js/index.js | 27 ++++++-------- onlylegs/static/js/login.js | 14 ++++---- onlylegs/static/js/uploadTab.js | 62 ++++++++++++++++----------------- 4 files changed, 50 insertions(+), 55 deletions(-) diff --git a/onlylegs/__init__.py b/onlylegs/__init__.py index 568da74..a0853e2 100644 --- a/onlylegs/__init__.py +++ b/onlylegs/__init__.py @@ -106,7 +106,7 @@ def create_app(): # pylint: disable=R0914 # ASSETS assets.init_app(app) - scripts = Bundle("js/*.js", filters="jsmin", output="gen/js.js", depends="js/*.js") + scripts = Bundle("js/*.js", output="gen/js.js", depends="js/*.js") # filter jsmin is broken :c styles = Bundle( "sass/*.sass", filters="libsass, cssmin", diff --git a/onlylegs/static/js/index.js b/onlylegs/static/js/index.js index c460b0b..7510a90 100644 --- a/onlylegs/static/js/index.js +++ b/onlylegs/static/js/index.js @@ -12,9 +12,9 @@ function loadOnView() { let image = lazyLoad[i]; if (image.getBoundingClientRect().top < window.innerHeight && image.getBoundingClientRect().bottom > 0) { if (!image.src && webpSupport) { - image.src = image.getAttribute('data-src') + '&e=webp' + image.src = `${image.getAttribute('data-src')}&e=webp`; } else if (!image.src) { - image.src = image.getAttribute('data-src') + image.src = image.getAttribute('data-src'); } } } @@ -23,27 +23,24 @@ function loadOnView() { window.onload = function () { loadOnView(); - let times = document.querySelectorAll('.time'); + const times = document.querySelectorAll('.time'); for (let i = 0; i < times.length; i++) { // Remove milliseconds const raw = times[i].innerHTML.split('.')[0]; // Parse YYYY-MM-DD HH:MM:SS to Date object - const time = raw.split(' ')[1] + const time = raw.split(' ')[1]; const date = raw.split(' ')[0].split('-'); - // Format to YYYY/MM/DD HH:MM:SS - let formatted = date[0] + '/' + date[1] + '/' + date[2] + ' ' + time + ' UTC'; - - // Convert to UTC Date object - let dateTime = new Date(formatted); + // Format to YYYY/MM/DD HH:MM:SS and convert to UTC Date object + const dateTime = new Date(`${date[0]}/${date[1]}/${date[2]} ${time} UTC`); // Convert to local time - times[i].innerHTML = dateTime.toLocaleDateString() + ' ' + dateTime.toLocaleTimeString(); + times[i].innerHTML = `${dateTime.toLocaleDateString()} ${dateTime.toLocaleTimeString()}`; } // Top Of Page button - let topOfPage = document.querySelector('.top-of-page'); + const topOfPage = document.querySelector('.top-of-page'); if (document.body.scrollTop > 300 || document.documentElement.scrollTop > 20) { topOfPage.classList.add('show'); } else { @@ -55,8 +52,7 @@ window.onload = function () { } // Info button - let infoButton = document.querySelector('.info-button'); - + const infoButton = document.querySelector('.info-button'); if (infoButton) { if (document.body.scrollTop > 300 || document.documentElement.scrollTop > 20) { infoButton.classList.remove('show'); @@ -75,7 +71,7 @@ window.onscroll = function () { loadOnView(); // Top Of Page button - let topOfPage = document.querySelector('.top-of-page'); + const topOfPage = document.querySelector('.top-of-page'); if (document.body.scrollTop > 300 || document.documentElement.scrollTop > 20) { topOfPage.classList.add('show'); } else { @@ -83,8 +79,7 @@ window.onscroll = function () { } // Info button - let infoButton = document.querySelector('.info-button'); - + const infoButton = document.querySelector('.info-button'); if (infoButton) { if (document.body.scrollTop > 300 || document.documentElement.scrollTop > 20) { infoButton.classList.remove('show'); diff --git a/onlylegs/static/js/login.js b/onlylegs/static/js/login.js index 77ec09a..1e2287a 100644 --- a/onlylegs/static/js/login.js +++ b/onlylegs/static/js/login.js @@ -62,9 +62,9 @@ function login(event) { // AJAX takes control of subby form :3 event.preventDefault(); - let formUsername = document.querySelector("#username").value; - let formPassword = document.querySelector("#password").value; - let formRememberMe = document.querySelector("#remember-me").checked; + const formUsername = document.querySelector("#username").value; + const formPassword = document.querySelector("#password").value; + const formRememberMe = document.querySelector("#remember-me").checked; if (formUsername === "" || formPassword === "") { addNotification("Please fill in all fields!!!!", 3); @@ -158,10 +158,10 @@ function register(event) { // AJAX takes control of subby form event.preventDefault(); - let formUsername = document.querySelector("#username").value; - let formEmail = document.querySelector("#email").value; - let formPassword = document.querySelector("#password").value; - let formPasswordRepeat = document.querySelector("#password-repeat").value; + const formUsername = document.querySelector("#username").value; + const formEmail = document.querySelector("#email").value; + const formPassword = document.querySelector("#password").value; + const formPasswordRepeat = document.querySelector("#password-repeat").value; if (formUsername === "" || formEmail === "" || formPassword === "" || formPasswordRepeat === "") { addNotification("Please fill in all fields!!!!", 3); diff --git a/onlylegs/static/js/uploadTab.js b/onlylegs/static/js/uploadTab.js index 6cf4016..cb3883b 100644 --- a/onlylegs/static/js/uploadTab.js +++ b/onlylegs/static/js/uploadTab.js @@ -9,7 +9,7 @@ window.addEventListener("drop", (event) => { // open upload tab function openUploadTab() { - let uploadTab = document.querySelector(".upload-panel"); + const uploadTab = document.querySelector(".upload-panel"); // Stop scrolling and open upload tab document.querySelector("html").style.overflow = "hidden"; @@ -19,8 +19,8 @@ function openUploadTab() { // close upload tab function closeUploadTab() { - let uploadTab = document.querySelector(".upload-panel"); - let uploadTabContainer = document.querySelector(".upload-panel .container"); + const uploadTab = document.querySelector(".upload-panel"); + const uploadTabContainer = document.querySelector(".upload-panel .container"); // un-Stop scrolling and close upload tab document.querySelector("html").style.overflow = "auto"; @@ -35,7 +35,7 @@ function closeUploadTab() { // toggle upload tab function toggleUploadTab() { - let uploadTab = document.querySelector(".upload-panel"); + const uploadTab = document.querySelector(".upload-panel"); if (uploadTab.classList.contains("open")) { closeUploadTab(); @@ -47,8 +47,8 @@ function toggleUploadTab() { function tabDragStart(event) { event.preventDefault(); - let uploadTab = document.querySelector(".upload-panel .container"); - let offset = uploadTab.getBoundingClientRect().y; + const uploadTab = document.querySelector(".upload-panel .container"); + const offset = uploadTab.getBoundingClientRect().y; uploadTab.classList.add("dragging"); @@ -67,7 +67,7 @@ function tabDragStart(event) { function tabDragStopped(event) { event.preventDefault(); - let uploadTab = document.querySelector(".upload-panel .container"); + const uploadTab = document.querySelector(".upload-panel .container"); uploadTab.classList.remove("dragging"); @@ -85,16 +85,16 @@ function tabDragStopped(event) { function fileActivate(event) { event.preventDefault() - let fileDrop = document.querySelector('.fileDrop-block'); - let fileDropTitle = fileDrop.querySelector('.status'); + const fileDrop = document.querySelector('.fileDrop-block'); + const fileDropTitle = fileDrop.querySelector('.status'); fileDrop.classList.remove('error'); fileDrop.classList.add('edging'); fileDropTitle.innerHTML = 'Drop to upload!'; } function fileDefault() { - let fileDrop = document.querySelector('.fileDrop-block'); - let fileDropTitle = fileDrop.querySelector('.status'); + const fileDrop = document.querySelector('.fileDrop-block'); + const fileDropTitle = fileDrop.querySelector('.status'); fileDrop.classList.remove('error'); fileDrop.classList.remove('edging'); @@ -104,8 +104,8 @@ function fileDefault() { function fileDropHandle(event) { event.preventDefault() - let fileDrop = document.querySelector('.fileDrop-block'); - let fileUpload = fileDrop.querySelector('#file'); + const fileDrop = document.querySelector('.fileDrop-block'); + const fileUpload = fileDrop.querySelector('#file'); fileUpload.files = event.dataTransfer.files; @@ -114,9 +114,9 @@ function fileDropHandle(event) { } function fileChanged() { - let dropBlock = document.querySelector('.fileDrop-block'); - let dropBlockStatus = dropBlock.querySelector('.status'); - let dropBlockInput = dropBlock.querySelector('#file'); + const dropBlock = document.querySelector('.fileDrop-block'); + const dropBlockStatus = dropBlock.querySelector('.status'); + const dropBlockInput = dropBlock.querySelector('#file'); if (dropBlockInput.value !== "") { dropBlock.classList.add('active'); @@ -127,12 +127,12 @@ function fileChanged() { } function clearUpload() { - let fileDrop = document.querySelector('#uploadForm'); + const fileDrop = document.querySelector('#uploadForm'); - let fileUpload = fileDrop.querySelector('#file'); - let fileAlt = fileDrop.querySelector('#alt'); - let fileDescription = fileDrop.querySelector('#description'); - let fileTags = fileDrop.querySelector('#tags'); + const fileUpload = fileDrop.querySelector('#file'); + const fileAlt = fileDrop.querySelector('#alt'); + const fileDescription = fileDrop.querySelector('#description'); + const fileTags = fileDrop.querySelector('#tags'); fileUpload.value = ""; fileAlt.value = ""; @@ -169,21 +169,21 @@ function clearUpload() { document.addEventListener('DOMContentLoaded', () => { // Function to upload images - let uploadTab = document.querySelector(".upload-panel"); + const uploadTab = document.querySelector(".upload-panel"); if (!uploadTab) { return; } // If upload tab doesn't exist, don't run this code :3 - let uploadTabDrag = uploadTab.querySelector("#dragIndicator"); - let uploadForm = uploadTab.querySelector('#uploadForm'); + const uploadTabDrag = uploadTab.querySelector("#dragIndicator"); + const uploadForm = uploadTab.querySelector('#uploadForm'); // let jobList = document.querySelector(".upload-jobs"); - let fileDrop = uploadForm.querySelector('.fileDrop-block'); - let fileDropTitle = fileDrop.querySelector('.status'); - let fileUpload = fileDrop.querySelector('#file'); + const fileDrop = uploadForm.querySelector('.fileDrop-block'); + const fileDropTitle = fileDrop.querySelector('.status'); + const fileUpload = fileDrop.querySelector('#file'); - let fileAlt = uploadForm.querySelector('#alt'); - let fileDescription = uploadForm.querySelector('#description'); - let fileTags = uploadForm.querySelector('#tags'); + const fileAlt = uploadForm.querySelector('#alt'); + const fileDescription = uploadForm.querySelector('#description'); + const fileTags = uploadForm.querySelector('#tags'); clearUpload(); @@ -221,7 +221,7 @@ document.addEventListener('DOMContentLoaded', () => { } // Make form - let formData = new FormData(); + const formData = new FormData(); formData.append("file", fileUpload.files[0]); formData.append("alt", fileAlt.value); From 9e788b0cec77ba05fec0905269af68eac0b048ba Mon Sep 17 00:00:00 2001 From: Fluffy-Bean Date: Wed, 19 Apr 2023 18:04:32 +0000 Subject: [PATCH 13/15] more JS :skull: --- onlylegs/static/js/index.js | 2 +- onlylegs/static/js/notifications.js | 13 ++++++------- onlylegs/static/js/uploadTab.js | 6 +++--- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/onlylegs/static/js/index.js b/onlylegs/static/js/index.js index 7510a90..a46cbe4 100644 --- a/onlylegs/static/js/index.js +++ b/onlylegs/static/js/index.js @@ -9,7 +9,7 @@ function loadOnView() { const webpSupport = checkWebpSupport(); for (let i = 0; i < lazyLoad.length; i++) { - let image = lazyLoad[i]; + const image = lazyLoad[i]; if (image.getBoundingClientRect().top < window.innerHeight && image.getBoundingClientRect().bottom > 0) { if (!image.src && webpSupport) { image.src = `${image.getAttribute('data-src')}&e=webp`; diff --git a/onlylegs/static/js/notifications.js b/onlylegs/static/js/notifications.js index 3674625..94309fa 100644 --- a/onlylegs/static/js/notifications.js +++ b/onlylegs/static/js/notifications.js @@ -10,11 +10,11 @@ function addNotification(notificationText, notificationLevel) { // Create notification element const notification = document.createElement('div'); notification.classList.add('sniffle__notification'); - notification.onclick = function() { + notification.onclick = () => { if (notification) { notification.classList.add('hide'); - setTimeout(function() { + setTimeout(() => { notificationContainer.removeChild(notification); }, 500); } @@ -48,15 +48,14 @@ function addNotification(notificationText, notificationLevel) { // Append notification to container notificationContainer.appendChild(notification); - setTimeout(function() { notification.classList.add('show'); }, 5); + setTimeout(() => { notification.classList.add('show'); }, 5); // Remove notification after 5 seconds - setTimeout(function() { + setTimeout(() => { if (notification) { notification.classList.add('hide'); - - setTimeout(function() { - notificationContainer.removeChild(notification); + setTimeout(() => { + notificationContainer.removeChild(notification); }, 500); } }, 5000); diff --git a/onlylegs/static/js/uploadTab.js b/onlylegs/static/js/uploadTab.js index cb3883b..bab2291 100644 --- a/onlylegs/static/js/uploadTab.js +++ b/onlylegs/static/js/uploadTab.js @@ -14,7 +14,7 @@ function openUploadTab() { // Stop scrolling and open upload tab document.querySelector("html").style.overflow = "hidden"; uploadTab.style.display = "block"; - setTimeout(function () { uploadTab.classList.add("open"); }, 5); + setTimeout(() => { uploadTab.classList.add("open"); }, 5); } // close upload tab @@ -25,7 +25,7 @@ function closeUploadTab() { // un-Stop scrolling and close upload tab document.querySelector("html").style.overflow = "auto"; uploadTab.classList.remove("open"); - setTimeout(function () { + setTimeout(() => { uploadTab.style.display = "none"; uploadTabContainer.style.transform = ""; @@ -76,7 +76,7 @@ function tabDragStopped(event) { } else { uploadTab.style.transition = "transform 0.25s cubic-bezier(0.76, 0, 0.17, 1)"; uploadTab.style.transform = "translateY(0px)"; - setTimeout(function () { uploadTab.style.transition = ""; }, 250); + setTimeout(() => { uploadTab.style.transition = ""; }, 250); } } From f26e76d822a327a9927de634cff9395e7b336c4c Mon Sep 17 00:00:00 2001 From: Fluffy-Bean Date: Wed, 19 Apr 2023 18:07:18 +0000 Subject: [PATCH 14/15] :a: --- setup/runner.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup/runner.py b/setup/runner.py index 11c1e10..ab8b617 100644 --- a/setup/runner.py +++ b/setup/runner.py @@ -10,7 +10,7 @@ class OnlyLegs(Application): Gunicorn application """ - def __init__(self, options={}): # pylint: disable=W0102 skipcq: PYL-W0231 + def __init__(self, options={}): # skipcq: PYL-W0231 # pylint: disable=W0231, W0102 self.usage = None self.callable = None self.options = options @@ -27,7 +27,7 @@ class OnlyLegs(Application): return cfg @staticmethod - def prog(): # pylint: disable=C0116 skipcq: PYL-E0202 + def prog(): # skipcq: PYL-E0202 # pylint: disable=E0202, C0116 return "OnlyLegs" def load(self): From 341d5b0ee8834b121128b35cadf04f20f5cbb255 Mon Sep 17 00:00:00 2001 From: Fluffy-Bean Date: Wed, 19 Apr 2023 18:11:19 +0000 Subject: [PATCH 15/15] Sometimes I hate coding --- onlylegs/static/js/popup.js | 4 ++-- onlylegs/static/js/uploadTab.js | 6 +++--- setup/runner.py | 3 ++- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/onlylegs/static/js/popup.js b/onlylegs/static/js/popup.js index 9438197..b0b19ac 100644 --- a/onlylegs/static/js/popup.js +++ b/onlylegs/static/js/popup.js @@ -34,7 +34,7 @@ function popUpShow(titleText, subtitleText, bodyContent=null, userActions=null) // Stop scrolling and show popup document.querySelector("html").style.overflow = "hidden"; popupSelector.style.display = 'block'; - setTimeout(function() { popupSelector.classList.add('active') }, 5); // 2ms delay to allow for css transition >:C + setTimeout(() => { popupSelector.classList.add('active') }, 5); // 2ms delay to allow for css transition >:C } function popupDissmiss() { @@ -42,5 +42,5 @@ function popupDissmiss() { document.querySelector("html").style.overflow = "auto"; popupSelector.classList.remove('active'); - setTimeout(function() { popupSelector.style.display = 'none'; }, 200); + setTimeout(() => { popupSelector.style.display = 'none'; }, 200); } diff --git a/onlylegs/static/js/uploadTab.js b/onlylegs/static/js/uploadTab.js index bab2291..1769fec 100644 --- a/onlylegs/static/js/uploadTab.js +++ b/onlylegs/static/js/uploadTab.js @@ -52,10 +52,10 @@ function tabDragStart(event) { uploadTab.classList.add("dragging"); - document.addEventListener('touchmove', event => { + document.addEventListener('touchmove', moving => { if (uploadTab.classList.contains("dragging")) { - if (event.touches[0].clientY - offset >= 0) { - uploadTab.dataset.lastY = event.touches[0].clientY; + if (moving.touches[0].clientY - offset >= 0) { + uploadTab.dataset.lastY = moving.touches[0].clientY; } else { uploadTab.dataset.lastY = offset; } diff --git a/setup/runner.py b/setup/runner.py index ab8b617..76a8a32 100644 --- a/setup/runner.py +++ b/setup/runner.py @@ -10,7 +10,8 @@ class OnlyLegs(Application): Gunicorn application """ - def __init__(self, options={}): # skipcq: PYL-W0231 # pylint: disable=W0231, W0102 + # TODO: Make this not shit, thanks + def __init__(self, options={}): # skipcq: PYL-W0231 # pylint: disable=W0231 self.usage = None self.callable = None self.options = options