From 10f04c9315b1826500fa5b5e60c63b44b17a5d51 Mon Sep 17 00:00:00 2001 From: Dagger Date: Mon, 13 Jun 2022 14:29:13 -0400 Subject: [PATCH] init --- .gitlab-ci.yml | 16 +++++ app.py | 47 ++++++++++++++ models.py | 19 ++++++ requirements.txt | Bin 0 -> 718 bytes static/css/style-custom.css | 15 +++++ static/img/fav-icon-256x256.ico | Bin 0 -> 17522 bytes static/img/fav.ico | Bin 0 -> 898 bytes static/js/background.js | 106 ++++++++++++++++++++++++++++++++ static/js/htmx.js | 1 + static/js/particles.min.js | 9 +++ templates/base.html | 58 +++++++++++++++++ templates/html_response.html | 3 + 12 files changed, 274 insertions(+) create mode 100644 .gitlab-ci.yml create mode 100644 app.py create mode 100644 models.py create mode 100644 requirements.txt create mode 100644 static/css/style-custom.css create mode 100644 static/img/fav-icon-256x256.ico create mode 100644 static/img/fav.ico create mode 100644 static/js/background.js create mode 100644 static/js/htmx.js create mode 100644 static/js/particles.min.js create mode 100644 templates/base.html create mode 100644 templates/html_response.html diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..6c4fe4e --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,16 @@ +build-test: + image: python:3.9 + script: + - python --version + - pip --version + - pip install -r requirements.txt + - echo "pytest needs finishing" + +build-docker: + image: docker + services: + - docker:dind + script: + - echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER $CI_REGISTRY --password-stdin + - docker build -t $CI_REGISTRY_IMAGE . + - docker push $CI_REGISTRY_IMAGE \ No newline at end of file diff --git a/app.py b/app.py new file mode 100644 index 0000000..0ec66d3 --- /dev/null +++ b/app.py @@ -0,0 +1,47 @@ +from fastapi import FastAPI, File, UploadFile, Form, Request +from fastapi.staticfiles import StaticFiles +from starlette.templating import Jinja2Templates + +import shutil + +import models + +description = """ +Oki.cx is a API for uploading file to a Server to be shared via HTTP. + +## Response Types + +- HTML Response +- JSON Response +""" + +app = FastAPI( + title="Oki.cx - Fileshare", + description=description, + version="0.1", + terms_of_service="http://oki.cx/fileshare/tos", + contact={ + "name": "oki.cx", + "email": "cody@oki.cx", + }, + license_info={ + "name": "MIT License", + "url": "https://gitlab.oki.cx/mrpvtdagger/oki.cx-fileshare/-/raw/main/LICENSE", + }, +) + +templates = Jinja2Templates(directory="templates") + +app.mount("/static", StaticFiles(directory="static"), name="static") + +@app.get("/", include_in_schema=False) +def home(request: Request): + return templates.TemplateResponse("base.html",{"request": request, "is_hidden": "is-hidden"}) + +@app.post("/upload/{response_type}") +def file(request: Request, response_type: str, file: UploadFile = File(...)): + uploaded_file = models.UploadFile(file, file.filename, file.content_type) + if response_type.lower == "json": + return uploaded_file + else: + return templates.TemplateResponse("html_response.html",{"request": request, "uploaded_file": uploaded_file, "filename": file.filename}) \ No newline at end of file diff --git a/models.py b/models.py new file mode 100644 index 0000000..934c050 --- /dev/null +++ b/models.py @@ -0,0 +1,19 @@ +import random +import string +import os +import shutil + +def UploadFile(file, filename, content_type): + def randmname(size=6, chars=string.ascii_lowercase + string.digits): + return ''.join(random.choice(chars) for _ in range(size)) + split_filename = filename.split('.') + rand_filename = f"{randmname(25)}.{split_filename[1]}" + + with open(f'files/{rand_filename}','wb',100*(2**20)) as buffer: + shutil.copyfileobj(file.file, buffer) + + cdn_info = { + "url" : f"https://cdn.oki.cx/files/{rand_filename}", + "content_type" : content_type + } + return cdn_info \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..92eb5c4d20efc2ca4379324773b0bdb867f871ae GIT binary patch literal 718 zcmY+CQBT4^5QO*H#GfMJs(?Q5;H#0u#3!E&0<{QSNjU`ny!y=^t(fLW>CDdT?B37! z)S`Xa(rO#?TwBkEoM4xBVN=`LJ6K~2D?5AuUN}CpHR#M%j@^1)4-M7MP+W5wR5l!` z_hH=l5u5~x*)p*?XvAOn#gN9Gvy@GYWEH(dyMkNuZ^8Sg zb2W#;r;$7T&)(p^cIB;ile!w!4SX_B=)c&#P3+N8?JR5U=;-L*)KTzlwnzjkdD?B~ z+<%qYMT7SOclF!uB%CEnIBQ>#oACEJbGq2WJcOh@)fY%%9HLR6)n4N;pG4J*lACYGg literal 0 HcmV?d00001 diff --git a/static/css/style-custom.css b/static/css/style-custom.css new file mode 100644 index 0000000..c14b1ec --- /dev/null +++ b/static/css/style-custom.css @@ -0,0 +1,15 @@ + + #particles-js { + position: absolute; + width: 100%; + height: 100%; + background: rgb(21, 16, 25); + } + a, a:visited { + color: rgb(136, 200, 255); + transition: 0.25s; + } + a:hover, a:focus { + color: rgb(18, 144, 255); + } + \ No newline at end of file diff --git a/static/img/fav-icon-256x256.ico b/static/img/fav-icon-256x256.ico new file mode 100644 index 0000000000000000000000000000000000000000..c3520be8a0db145f661f7fe1ba14a8df1e1fa4c8 GIT binary patch literal 17522 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 literal 0 HcmV?d00001 diff --git a/static/img/fav.ico b/static/img/fav.ico new file mode 100644 index 0000000000000000000000000000000000000000..0411b750a94385d31d8595aa770feccb238e8884 GIT binary patch literal 898 zcmZQzU<5(|0R|wcz>vetz#zuJz|a}s=g!L|#RX*YdV0770coHL1_2JBJcEWVe=v|@ zEDmyaV!U}$ryj`REbxddW?v=)i zfkU$)N^+2naK?=CwBi?IPG&w<<)Q(zs_9mIduULHIY7T z1!?=Iw_M#iaoYB-RZC}o+O_rD`3371)=jNXotG3kd17@f(1r8+pKfpOn;)I}@bb;4 z4_>b;sa;i2HNWrPs+lK&vePF1xpv{*y{)_7JbC)=)$7McP9EKGufOZh$^|bze*6ej z&{_9o-|EY+A3Oqb-#vSN?&yP_mM^{Se?U@=zh}qKJ+gG|o7ZpNzkh%E@bM*CGdk

DT)KAg z>D9~g6EaeAm_!Urjkj;uvT57Kt((gWSfn2vdHv?mt7q>XzC8MxSM0;XuU|j&bMSES zJ>=zO=4|=w=Hlk+e*DO>kH?x>g(`$6PYMpYe95@Nc=Lg@48f4Jwyj&YZ{bF%cYBvTn|5v6w?01wVFo2TjWxR4Jgxyf$KdJe K=d#Wzp$Pzoe%Gu3 literal 0 HcmV?d00001 diff --git a/static/js/background.js b/static/js/background.js new file mode 100644 index 0000000..bcc8285 --- /dev/null +++ b/static/js/background.js @@ -0,0 +1,106 @@ +// ParticlesJS Config. +particlesJS("particles-js", { + "particles": { + "number": { + "value": 100, + "density": { + "enable": true, + "value_area": 700 + } + }, + "color": { + "value": "#91c9ff" + }, + "shape": { + "type": "circle", + "stroke": { + "width": 0, + "color": "#000000" + }, + "polygon": { + "nb_sides": 5 + }, + }, + "opacity": { + "value": 0.5, + "random": false, + "anim": { + "enable": false, + "speed": 0.1, + "opacity_min": 0.1, + "sync": false + } + }, + "size": { + "value": 3, + "random": true, + "anim": { + "enable": false, + "speed": 10, + "size_min": 0.1, + "sync": false + } + }, + "line_linked": { + "enable": true, + "distance": 150, + "color": "#91c9ff", + "opacity": 0.4, + "width": 1 + }, + "move": { + "enable": true, + "speed": 1, + "direction": "none", + "random": false, + "straight": false, + "out_mode": "out", + "bounce": false, + "attract": { + "enable": false, + "rotateX": 600, + "rotateY": 1200 + } + } + }, + "interactivity": { + "detect_on": "canvas", + "events": { + "onhover": { + "enable": false, + "mode": "grab" + }, + "onclick": { + "enable": false, + "mode": "push" + }, + "resize": true + }, + "modes": { + "grab": { + "distance": 140, + "line_linked": { + "opacity": 1 + } + }, + "bubble": { + "distance": 400, + "size": 40, + "duration": 2, + "opacity": 8, + "speed": 3 + }, + "repulse": { + "distance": 200, + "duration": 0.4 + }, + "push": { + "particles_nb": 4 + }, + "remove": { + "particles_nb": 2 + } + } + }, + "retina_detect": true + }); \ No newline at end of file diff --git a/static/js/htmx.js b/static/js/htmx.js new file mode 100644 index 0000000..998414c --- /dev/null +++ b/static/js/htmx.js @@ -0,0 +1 @@ +(function(e,t){if(typeof define==="function"&&define.amd){define([],t)}else{e.htmx=t()}})(typeof self!=="undefined"?self:this,function(){return function(){"use strict";var U={onLoad:t,process:ct,on:M,off:D,trigger:$,ajax:er,find:C,findAll:R,closest:H,values:function(e,t){var r=Mt(e,t||"post");return r.values},remove:O,addClass:L,removeClass:q,toggleClass:A,takeClass:T,defineExtension:or,removeExtension:ar,logAll:E,logger:null,config:{historyEnabled:true,historyCacheSize:10,refreshOnHistoryMiss:false,defaultSwapStyle:"innerHTML",defaultSwapDelay:0,defaultSettleDelay:20,includeIndicatorStyles:true,indicatorClass:"htmx-indicator",requestClass:"htmx-request",addedClass:"htmx-added",settlingClass:"htmx-settling",swappingClass:"htmx-swapping",allowEval:true,inlineScriptNonce:"",attributesToSettle:["class","style","width","height"],withCredentials:false,timeout:0,wsReconnectDelay:"full-jitter",disableSelector:"[hx-disable], [data-hx-disable]",useTemplateFragments:false,scrollBehavior:"smooth",defaultFocusScroll:false},parseInterval:v,_:e,createEventSource:function(e){return new EventSource(e,{withCredentials:true})},createWebSocket:function(e){return new WebSocket(e,[])},version:"1.7.0"};var r={bodyContains:Y,filterValues:jt,hasAttribute:s,getAttributeValue:V,getClosestMatch:h,getExpressionVars:Gt,getHeaders:Xt,getInputValues:Mt,getInternalData:_,getSwapSpecification:Ut,getTriggerSpecs:ke,getTarget:ne,makeFragment:g,mergeObjects:Q,makeSettleInfo:zt,oobSwap:B,selectAndSwap:we,settleImmediately:Ct,shouldCancel:Pe,triggerEvent:$,triggerErrorEvent:J,withExtensions:gt};var n=["get","post","put","delete","patch"];var i=n.map(function(e){return"[hx-"+e+"], [data-hx-"+e+"]"}).join(", ");function v(e){if(e==undefined){return undefined}if(e.slice(-2)=="ms"){return parseFloat(e.slice(0,-2))||undefined}if(e.slice(-1)=="s"){return parseFloat(e.slice(0,-1))*1e3||undefined}return parseFloat(e)||undefined}function f(e,t){return e.getAttribute&&e.getAttribute(t)}function s(e,t){return e.hasAttribute&&(e.hasAttribute(t)||e.hasAttribute("data-"+t))}function V(e,t){return f(e,t)||f(e,"data-"+t)}function u(e){return e.parentElement}function z(){return document}function h(e,t){if(t(e)){return e}else if(u(e)){return h(u(e),t)}else{return null}}function o(e,t,r){var n=V(t,r);var i=V(t,"hx-disinherit");if(e!==t&&i&&(i==="*"||i.split(" ").indexOf(r)>=0)){return"unset"}else{return n}}function G(t,r){var n=null;h(t,function(e){return n=o(t,e,r)});if(n!=="unset"){return n}}function d(e,t){var r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.oMatchesSelector;return r&&r.call(e,t)}function a(e){var t=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i;var r=t.exec(e);if(r){return r[1].toLowerCase()}else{return""}}function l(e,t){var r=new DOMParser;var n=r.parseFromString(e,"text/html");var i=n.body;while(t>0){t--;i=i.firstChild}if(i==null){i=z().createDocumentFragment()}return i}function g(e){if(U.config.useTemplateFragments){var t=l("",0);return t.querySelector("template").content}else{var r=a(e);switch(r){case"thead":case"tbody":case"tfoot":case"colgroup":case"caption":return l(""+e+"
",1);case"col":return l(""+e+"
",2);case"tr":return l(""+e+"
",2);case"td":case"th":return l(""+e+"
",3);case"script":return l("

"+e+"
",1);default:return l(e,0)}}}function K(e){if(e){e()}}function p(e,t){return Object.prototype.toString.call(e)==="[object "+t+"]"}function m(e){return p(e,"Function")}function x(e){return p(e,"Object")}function _(e){var t="htmx-internal-data";var r=e[t];if(!r){r=e[t]={}}return r}function y(e){var t=[];if(e){for(var r=0;r=0}function Y(e){if(e.getRootNode()instanceof ShadowRoot){return z().body.contains(e.getRootNode().host)}else{return z().body.contains(e)}}function w(e){return e.trim().split(/\s+/)}function Q(e,t){for(var r in t){if(t.hasOwnProperty(r)){e[r]=t[r]}}return e}function S(e){try{return JSON.parse(e)}catch(e){pt(e);return null}}function e(e){return Jt(z().body,function(){return eval(e)})}function t(t){var e=U.on("htmx:load",function(e){t(e.detail.elt)});return e}function E(){U.logger=function(e,t,r){if(console){console.log(t,e,r)}}}function C(e,t){if(t){return e.querySelector(t)}else{return C(z(),e)}}function R(e,t){if(t){return e.querySelectorAll(t)}else{return R(z(),e)}}function O(e,t){e=k(e);if(t){setTimeout(function(){O(e)},t)}else{e.parentElement.removeChild(e)}}function L(e,t,r){e=k(e);if(r){setTimeout(function(){L(e,t)},r)}else{e.classList&&e.classList.add(t)}}function q(e,t,r){e=k(e);if(r){setTimeout(function(){q(e,t)},r)}else{if(e.classList){e.classList.remove(t);if(e.classList.length===0){e.removeAttribute("class")}}}}function A(e,t){e=k(e);e.classList.toggle(t)}function T(e,t){e=k(e);W(e.parentElement.children,function(e){q(e,t)});L(e,t)}function H(e,t){e=k(e);if(e.closest){return e.closest(t)}else{do{if(e==null||d(e,t)){return e}}while(e=e&&u(e))}}function N(e,t){if(t.indexOf("closest ")===0){return[H(e,t.substr(8))]}else if(t.indexOf("find ")===0){return[C(e,t.substr(5))]}else if(t==="document"){return[document]}else if(t==="window"){return[window]}else{return z().querySelectorAll(t)}}function ee(e,t){if(t){return N(e,t)[0]}else{return N(z().body,e)[0]}}function k(e){if(p(e,"String")){return C(e)}else{return e}}function I(e,t,r){if(m(t)){return{target:z().body,event:e,listener:t}}else{return{target:k(e),event:t,listener:r}}}function M(t,r,n){lr(function(){var e=I(t,r,n);e.target.addEventListener(e.event,e.listener)});var e=m(r);return e?r:n}function D(t,r,n){lr(function(){var e=I(t,r,n);e.target.removeEventListener(e.event,e.listener)});return m(r)?r:n}var te=z().createElement("output");function F(e,t){var r=G(e,t);if(r){if(r==="this"){return[re(e,t)]}else{var n=N(e,r);if(n.length===0){pt('The selector "'+r+'" on '+t+" returned no matches!");return[te]}else{return n}}}}function re(e,t){return h(e,function(e){return V(e,t)!=null})}function ne(e){var t=G(e,"hx-target");if(t){if(t==="this"){return re(e,"hx-target")}else{return ee(e,t)}}else{var r=_(e);if(r.boosted){return z().body}else{return e}}}function P(e){var t=U.config.attributesToSettle;for(var r=0;r0){a=e.substr(0,e.indexOf(":"));t=e.substr(e.indexOf(":")+1,e.length)}else{a=e}var r=z().querySelectorAll(t);if(r){W(r,function(e){var t;var r=i.cloneNode(true);t=z().createDocumentFragment();t.appendChild(r);if(!j(a,e)){t=r}var n={shouldSwap:true,target:e,fragment:t};if(!$(e,"htmx:oobBeforeSwap",n))return;e=n.target;if(n["shouldSwap"]){ye(a,e,e,t,o)}W(o.elts,function(e){$(e,"htmx:oobAfterSwap",n)})});i.parentNode.removeChild(i)}else{i.parentNode.removeChild(i);J(z().body,"htmx:oobErrorNoTarget",{content:i})}return e}function ie(e,r){W(R(e,"[hx-swap-oob], [data-hx-swap-oob]"),function(e){var t=V(e,"hx-swap-oob");if(t!=null){B(t,e,r)}})}function oe(e){W(R(e,"[hx-preserve], [data-hx-preserve]"),function(e){var t=V(e,"id");var r=z().getElementById(t);if(r!=null){e.parentNode.replaceChild(r,e)}})}function ae(n,e,i){W(e.querySelectorAll("[id]"),function(e){if(e.id&&e.id.length>0){var t=n.querySelector(e.tagName+"[id='"+e.id+"']");if(t&&t!==n){var r=e.cloneNode();X(e,t);i.tasks.push(function(){X(e,r)})}}})}function se(e){return function(){q(e,U.config.addedClass);ct(e);at(e);le(e);$(e,"htmx:load")}}function le(e){var t="[autofocus]";var r=d(e,t)?e:e.querySelector(t);if(r!=null){r.focus()}}function ue(e,t,r,n){ae(e,r,n);while(r.childNodes.length>0){var i=r.firstChild;L(i,U.config.addedClass);e.insertBefore(i,t);if(i.nodeType!==Node.TEXT_NODE&&i.nodeType!==Node.COMMENT_NODE){n.tasks.push(se(i))}}}function fe(t){var e=_(t);if(e.webSocket){e.webSocket.close()}if(e.sseEventSource){e.sseEventSource.close()}$(t,"htmx:beforeCleanupElement");if(e.listenerInfos){W(e.listenerInfos,function(e){if(t!==e.on){e.on.removeEventListener(e.trigger,e.listener)}})}if(t.children){W(t.children,function(e){fe(e)})}}function ce(e,t,r){if(e.tagName==="BODY"){return me(e,t,r)}else{var n;var i=e.previousSibling;ue(u(e),e,t,r);if(i==null){n=u(e).firstChild}else{n=i.nextSibling}_(e).replacedWith=n;r.elts=[];while(n&&n!==e){if(n.nodeType===Node.ELEMENT_NODE){r.elts.push(n)}n=n.nextElementSibling}fe(e);u(e).removeChild(e)}}function he(e,t,r){return ue(e,e.firstChild,t,r)}function de(e,t,r){return ue(u(e),e,t,r)}function ve(e,t,r){return ue(e,null,t,r)}function ge(e,t,r){return ue(u(e),e.nextSibling,t,r)}function pe(e,t,r){fe(e);return u(e).removeChild(e)}function me(e,t,r){var n=e.firstChild;ue(e,n,t,r);if(n){while(n.nextSibling){fe(n.nextSibling);e.removeChild(n.nextSibling)}fe(n);e.removeChild(n)}}function xe(e,t){var r=G(e,"hx-select");if(r){var n=z().createDocumentFragment();W(t.querySelectorAll(r),function(e){n.appendChild(e)});t=n}return t}function ye(e,t,r,n,i){switch(e){case"none":return;case"outerHTML":ce(r,n,i);return;case"afterbegin":he(r,n,i);return;case"beforebegin":de(r,n,i);return;case"beforeend":ve(r,n,i);return;case"afterend":ge(r,n,i);return;case"delete":pe(r,n,i);return;default:var o=sr(t);for(var a=0;a-1){var t=e.replace(/]*>|>)([\s\S]*?)<\/svg>/gim,"");var r=t.match(/]*>|>)([\s\S]*?)<\/title>/im);if(r){return r[2]}}}function we(e,t,r,n,i){i.title=be(n);var o=g(n);if(o){ie(o,i);o=xe(r,o);oe(o);return ye(e,r,t,o,i)}}function Se(e,t,r){var n=e.getResponseHeader(t);if(n.indexOf("{")===0){var i=S(n);for(var o in i){if(i.hasOwnProperty(o)){var a=i[o];if(!x(a)){a={value:a}}$(r,o,a)}}}else{$(r,n,[])}}var Ee=/\s/;var Ce=/[\s,]/;var Re=/[_$a-zA-Z]/;var Oe=/[_$a-zA-Z0-9]/;var Le=['"',"'","/"];var qe=/[^\s]/;function Ae(e){var t=[];var r=0;while(r0){var a=t[0];if(a==="]"){n--;if(n===0){if(o===null){i=i+"true"}t.shift();i+=")})";try{var s=Jt(e,function(){return Function(i)()},function(){return true});s.source=i;return s}catch(e){J(z().body,"htmx:syntax:error",{error:e,source:i});return null}}}else if(a==="["){n++}if(Te(a,o,r)){i+="(("+r+"."+a+") ? ("+r+"."+a+") : (window."+a+"))"}else{i=i+a}o=t.shift()}}}function c(e,t){var r="";while(e.length>0&&!e[0].match(t)){r+=e.shift()}return r}var Ne="input, textarea, select";function ke(e){var t=V(e,"hx-trigger");var r=[];if(t){var n=Ae(t);do{c(n,qe);var f=n.length;var i=c(n,/[,\[\s]/);if(i!==""){if(i==="every"){var o={trigger:"every"};c(n,qe);o.pollInterval=v(c(n,/[,\[\s]/));c(n,qe);var a=He(e,n,"event");if(a){o.eventFilter=a}r.push(o)}else if(i.indexOf("sse:")===0){r.push({trigger:"sse",sseEvent:i.substr(4)})}else{var s={trigger:i};var a=He(e,n,"event");if(a){s.eventFilter=a}while(n.length>0&&n[0]!==","){c(n,qe);var l=n.shift();if(l==="changed"){s.changed=true}else if(l==="once"){s.once=true}else if(l==="consume"){s.consume=true}else if(l==="delay"&&n[0]===":"){n.shift();s.delay=v(c(n,Ce))}else if(l==="from"&&n[0]===":"){n.shift();var u=c(n,Ce);if(u==="closest"||u==="find"){n.shift();u+=" "+c(n,Ce)}s.from=u}else if(l==="target"&&n[0]===":"){n.shift();s.target=c(n,Ce)}else if(l==="throttle"&&n[0]===":"){n.shift();s.throttle=v(c(n,Ce))}else if(l==="queue"&&n[0]===":"){n.shift();s.queue=c(n,Ce)}else if((l==="root"||l==="threshold")&&n[0]===":"){n.shift();s[l]=c(n,Ce)}else{J(e,"htmx:syntax:error",{token:n.shift()})}}r.push(s)}}if(n.length===f){J(e,"htmx:syntax:error",{token:n.shift()})}c(n,qe)}while(n[0]===","&&n.shift())}if(r.length>0){return r}else if(d(e,"form")){return[{trigger:"submit"}]}else if(d(e,Ne)){return[{trigger:"change"}]}else{return[{trigger:"click"}]}}function Ie(e){_(e).cancelled=true}function Me(e,t,r,n){var i=_(e);i.timeout=setTimeout(function(){if(Y(e)&&i.cancelled!==true){if(!je(n,dt("hx:poll:trigger",{triggerSpec:n,target:e}))){Z(t,r,e)}Me(e,t,V(e,"hx-"+t),n)}},n.pollInterval)}function De(e){return location.hostname===e.hostname&&f(e,"href")&&f(e,"href").indexOf("#")!==0}function Fe(t,r,e){if(t.tagName==="A"&&De(t)&&t.target===""||t.tagName==="FORM"){r.boosted=true;var n,i;if(t.tagName==="A"){n="get";i=f(t,"href");r.pushURL=true}else{var o=f(t,"method");n=o?o.toLowerCase():"get";if(n==="get"){r.pushURL=true}i=f(t,"action")}e.forEach(function(e){Be(t,n,i,r,e,true)})}}function Pe(e,t){if(e.type==="submit"||e.type==="click"){if(t.tagName==="FORM"){return true}if(d(t,'input[type="submit"], button')&&H(t,"form")!==null){return true}if(t.tagName==="A"&&t.href&&(t.getAttribute("href")==="#"||t.getAttribute("href").indexOf("#")!==0)){return true}}return false}function Xe(e,t){return _(e).boosted&&e.tagName==="A"&&t.type==="click"&&(t.ctrlKey||t.metaKey)}function je(e,t){var r=e.eventFilter;if(r){try{return r(t)!==true}catch(e){J(z().body,"htmx:eventFilter:error",{error:e,source:r.source});return true}}return false}function Be(o,a,s,e,l,u){var t;if(l.from){t=N(o,l.from)}else{t=[o]}W(t,function(n){var i=function(e){if(!Y(o)){n.removeEventListener(l.trigger,i);return}if(Xe(o,e)){return}if(u||Pe(e,o)){e.preventDefault()}if(je(l,e)){return}var t=_(e);t.triggerSpec=l;if(t.handledFor==null){t.handledFor=[]}var r=_(o);if(t.handledFor.indexOf(o)<0){t.handledFor.push(o);if(l.consume){e.stopPropagation()}if(l.target&&e.target){if(!d(e.target,l.target)){return}}if(l.once){if(r.triggeredOnce){return}else{r.triggeredOnce=true}}if(l.changed){if(r.lastValue===o.value){return}else{r.lastValue=o.value}}if(r.delayed){clearTimeout(r.delayed)}if(r.throttle){return}if(l.throttle){if(!r.throttle){Z(a,s,o,e);r.throttle=setTimeout(function(){r.throttle=null},l.throttle)}}else if(l.delay){r.delayed=setTimeout(function(){Z(a,s,o,e)},l.delay)}else{Z(a,s,o,e)}}};if(e.listenerInfos==null){e.listenerInfos=[]}e.listenerInfos.push({trigger:l.trigger,listener:i,on:n});n.addEventListener(l.trigger,i)})}var Ue=false;var Ve=null;function ze(){if(!Ve){Ve=function(){Ue=true};window.addEventListener("scroll",Ve);setInterval(function(){if(Ue){Ue=false;W(z().querySelectorAll("[hx-trigger='revealed'],[data-hx-trigger='revealed']"),function(e){_e(e)})}},200)}}function _e(e){if(!s(e,"data-hx-revealed")&&b(e)){e.setAttribute("data-hx-revealed","true");var t=_(e);if(t.initialized){Z(t.verb,t.path,e)}else{e.addEventListener("htmx:afterProcessNode",function(){Z(t.verb,t.path,e)},{once:true})}}}function We(e,t,r){var n=w(r);for(var i=0;i=0){var t=Ge(n);setTimeout(function(){Je(s,r,n+1)},t)}};t.onopen=function(e){n=0};_(s).webSocket=t;t.addEventListener("message",function(e){if($e(s)){return}var t=e.data;gt(s,function(e){t=e.transformResponse(t,null,s)});var r=zt(s);var n=g(t);var i=y(n.children);for(var o=0;o0){$(u,"htmx:validation:halted",i);return}t.send(JSON.stringify(l));if(Pe(e,u)){e.preventDefault()}})}else{J(u,"htmx:noWebSocketSourceError")}}function Ge(e){var t=U.config.wsReconnectDelay;if(typeof t==="function"){return t(e)}if(t==="full-jitter"){var r=Math.min(e,6);var n=1e3*Math.pow(2,r);return n*Math.random()}pt('htmx.config.wsReconnectDelay must either be a function or the string "full-jitter"')}function Ke(e,t,r){var n=w(r);for(var i=0;iU.config.historyCacheSize){i.shift()}while(i.length>0){try{localStorage.setItem("htmx-history-cache",JSON.stringify(i));break}catch(e){J(z().body,"htmx:historyCacheError",{cause:e,cache:i});i.shift()}}}function bt(e){var t=S(localStorage.getItem("htmx-history-cache"))||[];for(var r=0;r=200&&this.status<400){$(z().body,"htmx:historyCacheMissLoad",i);var e=g(this.response);e=e.querySelector("[hx-history-elt],[data-hx-history-elt]")||e;var t=xt();var r=zt(t);me(t,e,r);Ct(r.tasks);mt=n;$(z().body,"htmx:historyRestore",{path:n})}else{J(z().body,"htmx:historyCacheMissLoadError",i)}};e.send()}function Ot(e){St();e=e||location.pathname+location.search;var t=bt(e);if(t){var r=g(t.content);var n=xt();var i=zt(n);me(n,r,i);Ct(i.tasks);document.title=t.title;window.scrollTo(0,t.scroll);mt=e;$(z().body,"htmx:historyRestore",{path:e})}else{if(U.config.refreshOnHistoryMiss){window.location.reload(true)}else{Rt(e)}}}function Lt(e){var t=G(e,"hx-push-url");return t&&t!=="false"||_(e).boosted&&_(e).pushURL}function qt(e){var t=G(e,"hx-push-url");return t==="true"||t==="false"?null:t}function At(e){var t=F(e,"hx-indicator");if(t==null){t=[e]}W(t,function(e){e.classList["add"].call(e.classList,U.config.requestClass)});return t}function Tt(e){W(e,function(e){e.classList["remove"].call(e.classList,U.config.requestClass)})}function Ht(e,t){for(var r=0;r=0}function Ut(e,t){var r=t?t:G(e,"hx-swap");var n={swapStyle:_(e).boosted?"innerHTML":U.config.defaultSwapStyle,swapDelay:U.config.defaultSwapDelay,settleDelay:U.config.defaultSettleDelay};if(_(e).boosted&&!Bt(e)){n["show"]="top"}if(r){var i=w(r);if(i.length>0){n["swapStyle"]=i[0];for(var o=1;o0?l.join(":"):null;n["scroll"]=f;n["scrollTarget"]=u}if(a.indexOf("show:")===0){var c=a.substr(5);var l=c.split(":");var h=l.pop();var u=l.length>0?l.join(":"):null;n["show"]=h;n["showTarget"]=u}if(a.indexOf("focus-scroll:")===0){var d=a.substr("focus-scroll:".length);n["focusScroll"]=d=="true"}}}}return n}function Vt(t,r,n){var i=null;gt(r,function(e){if(i==null){i=e.encodeParameters(t,n,r)}});if(i!=null){return i}else{if(G(r,"hx-encoding")==="multipart/form-data"||d(r,"form")&&f(r,"enctype")==="multipart/form-data"){return Pt(n)}else{return Ft(n)}}}function zt(e){return{tasks:[],elts:[e]}}function _t(e,t){var r=e[0];var n=e[e.length-1];if(t.scroll){var i=null;if(t.scrollTarget){i=ee(r,t.scrollTarget)}if(t.scroll==="top"&&(r||i)){i=i||r;i.scrollTop=0}if(t.scroll==="bottom"&&(n||i)){i=i||n;i.scrollTop=i.scrollHeight}}if(t.show){var i=null;if(t.showTarget){var o=t.showTarget;if(t.showTarget==="window"){o="body"}i=ee(r,o)}if(t.show==="top"&&(r||i)){i=i||r;i.scrollIntoView({block:"start",behavior:U.config.scrollBehavior})}if(t.show==="bottom"&&(n||i)){i=i||n;i.scrollIntoView({block:"end",behavior:U.config.scrollBehavior})}}}function Wt(e,t,r,n){if(n==null){n={}}if(e==null){return n}var i=V(e,t);if(i){var o=i.trim();var a=r;if(o.indexOf("javascript:")===0){o=o.substr(11);a=true}else if(o.indexOf("js:")===0){o=o.substr(3);a=true}if(o.indexOf("{")!==0){o="{"+o+"}"}var s;if(a){s=Jt(e,function(){return Function("return ("+o+")")()},{})}else{s=S(o)}for(var l in s){if(s.hasOwnProperty(l)){if(n[l]==null){n[l]=s[l]}}}}return Wt(u(e),t,r,n)}function Jt(e,t,r){if(U.config.allowEval){return t()}else{J(e,"htmx:evalDisallowedError");return r}}function $t(e,t){return Wt(e,"hx-vars",true,t)}function Zt(e,t){return Wt(e,"hx-vals",false,t)}function Gt(e){return Q($t(e),Zt(e))}function Kt(t,r,n){if(n!==null){try{t.setRequestHeader(r,n)}catch(e){t.setRequestHeader(r,encodeURIComponent(n));t.setRequestHeader(r+"-URI-AutoEncoded","true")}}}function Yt(t){if(t.responseURL&&typeof URL!=="undefined"){try{var e=new URL(t.responseURL);return e.pathname+e.search}catch(e){J(z().body,"htmx:badResponseUrl",{url:t.responseURL})}}}function Qt(e,t){return e.getAllResponseHeaders().match(t)}function er(e,t,r){e=e.toLowerCase();if(r){if(r instanceof Element||p(r,"String")){return Z(e,t,null,null,{targetOverride:k(r),returnPromise:true})}else{return Z(e,t,k(r.source),r.event,{handler:r.handler,headers:r.headers,values:r.values,targetOverride:k(r.target),swapOverride:r.swap,returnPromise:true})}}else{return Z(e,t,null,null,{returnPromise:true})}}function tr(e){var t=[];while(e){t.push(e);e=e.parentElement}return t}function Z(e,t,n,f,r){var c=null;var h=null;r=r!=null?r:{};if(r.returnPromise&&typeof Promise!=="undefined"){var d=new Promise(function(e,t){c=e;h=t})}if(n==null){n=z().body}var v=r.handler||rr;if(!Y(n)){return}var g=r.targetOverride||ne(n);if(g==null||g==te){J(n,"htmx:targetError",{target:V(n,"hx-target")});return}var p=n;var i=_(n);var o=G(n,"hx-sync");var m=null;var x=false;if(o){var y=o.split(":");var b=y[0].trim();if(b==="this"){p=re(n,"hx-sync")}else{p=ee(n,b)}o=(y[1]||"drop").trim();i=_(p);if(o==="drop"&&i.xhr&&i.abortable!==true){return}else if(o==="abort"){if(i.xhr){return}else{x=true}}else if(o==="replace"){$(p,"htmx:abort")}else if(o.indexOf("queue")===0){var w=o.split(" ");m=(w[1]||"last").trim()}}if(i.xhr){if(i.abortable){$(p,"htmx:abort")}else{if(m==null){if(f){var S=_(f);if(S&&S.triggerSpec&&S.triggerSpec.queue){m=S.triggerSpec.queue}}if(m==null){m="last"}}if(i.queuedRequests==null){i.queuedRequests=[]}if(m==="first"&&i.queuedRequests.length===0){i.queuedRequests.push(function(){Z(e,t,n,f,r)})}else if(m==="all"){i.queuedRequests.push(function(){Z(e,t,n,f,r)})}else if(m==="last"){i.queuedRequests=[];i.queuedRequests.push(function(){Z(e,t,n,f,r)})}return}}var a=new XMLHttpRequest;i.xhr=a;i.abortable=x;var s=function(){i.xhr=null;i.abortable=false;if(i.queuedRequests!=null&&i.queuedRequests.length>0){var e=i.queuedRequests.shift();e()}};var E=G(n,"hx-prompt");if(E){var C=prompt(E);if(C===null||!$(n,"htmx:prompt",{prompt:C,target:g})){K(c);s();return d}}var R=G(n,"hx-confirm");if(R){if(!confirm(R)){K(c);s();return d}}var O=Xt(n,g,C);if(r.headers){O=Q(O,r.headers)}var L=Mt(n,e);var q=L.errors;var A=L.values;if(r.values){A=Q(A,r.values)}var T=Gt(n);var H=Q(A,T);var N=jt(H,n);if(e!=="get"&&G(n,"hx-encoding")==null){O["Content-Type"]="application/x-www-form-urlencoded"}if(t==null||t===""){t=z().location.href}var k=Wt(n,"hx-request");var l={parameters:N,unfilteredParameters:H,headers:O,target:g,verb:e,errors:q,withCredentials:r.credentials||k.credentials||U.config.withCredentials,timeout:r.timeout||k.timeout||U.config.timeout,path:t,triggeringEvent:f};if(!$(n,"htmx:configRequest",l)){K(c);s();return d}t=l.path;e=l.verb;O=l.headers;N=l.parameters;q=l.errors;if(q&&q.length>0){$(n,"htmx:validation:halted",l);K(c);s();return d}var I=t.split("#");var M=I[0];var D=I[1];if(e==="get"){var F=M;var P=Object.keys(N).length!==0;if(P){if(F.indexOf("?")<0){F+="?"}else{F+="&"}F+=Ft(N);if(D){F+="#"+D}}a.open("GET",F,true)}else{a.open(e.toUpperCase(),t,true)}a.overrideMimeType("text/html");a.withCredentials=l.withCredentials;a.timeout=l.timeout;if(k.noHeaders){}else{for(var X in O){if(O.hasOwnProperty(X)){var j=O[X];Kt(a,X,j)}}}var u={xhr:a,target:g,requestConfig:l,etc:r,pathInfo:{path:t,finalPath:F,anchor:D}};a.onload=function(){try{var e=tr(n);v(n,u);Tt(B);$(n,"htmx:afterRequest",u);$(n,"htmx:afterOnLoad",u);if(!Y(n)){var t=null;while(e.length>0&&t==null){var r=e.shift();if(Y(r)){t=r}}if(t){$(t,"htmx:afterRequest",u);$(t,"htmx:afterOnLoad",u)}}K(c);s()}catch(e){J(n,"htmx:onLoadError",Q({error:e},u));throw e}};a.onerror=function(){Tt(B);J(n,"htmx:afterRequest",u);J(n,"htmx:sendError",u);K(h);s()};a.onabort=function(){Tt(B);J(n,"htmx:afterRequest",u);J(n,"htmx:sendAbort",u);K(h);s()};a.ontimeout=function(){Tt(B);J(n,"htmx:afterRequest",u);J(n,"htmx:timeout",u);K(h);s()};if(!$(n,"htmx:beforeRequest",u)){K(c);s();return d}var B=At(n);W(["loadstart","loadend","progress","abort"],function(t){W([a,a.upload],function(e){e.addEventListener(t,function(e){$(n,"htmx:xhr:"+t,{lengthComputable:e.lengthComputable,loaded:e.loaded,total:e.total})})})});$(n,"htmx:beforeSend",u);a.send(e==="get"?null:Vt(a,n,N));return d}function rr(s,l){var u=l.xhr;var f=l.target;var r=l.etc;if(!$(s,"htmx:beforeOnLoad",l))return;if(Qt(u,/HX-Trigger:/i)){Se(u,"HX-Trigger",s)}if(Qt(u,/HX-Push:/i)){var c=u.getResponseHeader("HX-Push")}if(Qt(u,/HX-Redirect:/i)){window.location.href=u.getResponseHeader("HX-Redirect");return}if(Qt(u,/HX-Refresh:/i)){if("true"===u.getResponseHeader("HX-Refresh")){location.reload();return}}if(Qt(u,/HX-Retarget:/i)){l.target=z().querySelector(u.getResponseHeader("HX-Retarget"))}var h;if(c=="false"){h=false}else{h=Lt(s)||c}var n=u.status>=200&&u.status<400&&u.status!==204;var d=u.response;var e=u.status>=400;var t=Q({shouldSwap:n,serverResponse:d,isError:e},l);if(!$(f,"htmx:beforeSwap",t))return;f=t.target;d=t.serverResponse;e=t.isError;l.failed=e;l.successful=!e;if(t.shouldSwap){if(u.status===286){Ie(s)}gt(s,function(e){d=e.transformResponse(d,u,s)});if(h){St()}var i=r.swapOverride;var v=Ut(s,i);f.classList.add(U.config.swappingClass);var o=function(){try{var e=document.activeElement;var t={};try{t={elt:e,start:e?e.selectionStart:null,end:e?e.selectionEnd:null}}catch(e){}var n=zt(f);we(v.swapStyle,f,s,d,n);if(t.elt&&!Y(t.elt)&&t.elt.id){var r=document.getElementById(t.elt.id);var i={preventScroll:v.focusScroll!==undefined?!v.focusScroll:!U.config.defaultFocusScroll};if(r){if(t.start&&r.setSelectionRange){r.setSelectionRange(t.start,t.end)}r.focus(i)}}f.classList.remove(U.config.swappingClass);W(n.elts,function(e){if(e.classList){e.classList.add(U.config.settlingClass)}$(e,"htmx:afterSwap",l)});if(l.pathInfo.anchor){location.hash=l.pathInfo.anchor}if(Qt(u,/HX-Trigger-After-Swap:/i)){var o=s;if(!Y(s)){o=z().body}Se(u,"HX-Trigger-After-Swap",o)}var a=function(){W(n.tasks,function(e){e.call()});W(n.elts,function(e){if(e.classList){e.classList.remove(U.config.settlingClass)}$(e,"htmx:afterSettle",l)});if(h){var e=c||qt(s)||Yt(u)||l.pathInfo.finalPath||l.pathInfo.path;Et(e);$(z().body,"htmx:pushedIntoHistory",{path:e})}if(n.title){var t=C("title");if(t){t.innerHTML=n.title}else{window.document.title=n.title}}_t(n.elts,v);if(Qt(u,/HX-Trigger-After-Settle:/i)){var r=s;if(!Y(s)){r=z().body}Se(u,"HX-Trigger-After-Settle",r)}};if(v.settleDelay>0){setTimeout(a,v.settleDelay)}else{a()}}catch(e){J(s,"htmx:swapError",l);throw e}};if(v.swapDelay>0){setTimeout(o,v.swapDelay)}else{o()}}if(e){J(s,"htmx:responseError",Q({error:"Response Status Error Code "+u.status+" from "+l.pathInfo.path},l))}}var nr={};function ir(){return{init:function(e){return null},onEvent:function(e,t){return true},transformResponse:function(e,t,r){return e},isInlineSwap:function(e){return false},handleSwap:function(e,t,r,n){return false},encodeParameters:function(e,t,r){return null}}}function or(e,t){if(t.init){t.init(r)}nr[e]=Q(ir(),t)}function ar(e){delete nr[e]}function sr(e,r,n){if(e==undefined){return r}if(r==undefined){r=[]}if(n==undefined){n=[]}var t=V(e,"hx-ext");if(t){W(t.split(","),function(e){e=e.replace(/ /g,"");if(e.slice(0,7)=="ignore:"){n.push(e.slice(7));return}if(n.indexOf(e)<0){var t=nr[e];if(t&&r.indexOf(t)<0){r.push(t)}}})}return sr(u(e),r,n)}function lr(e){if(z().readyState!=="loading"){e()}else{z().addEventListener("DOMContentLoaded",e)}}function ur(){if(U.config.includeIndicatorStyles!==false){z().head.insertAdjacentHTML("beforeend","")}}function fr(){var e=z().querySelector('meta[name="htmx-config"]');if(e){return S(e.content)}else{return null}}function cr(){var e=fr();if(e){U.config=Q(U.config,e)}}lr(function(){cr();ur();var e=z().body;ct(e);var t=z().querySelectorAll("[hx-trigger='restored'],[data-hx-trigger='restored']");e.addEventListener("htmx:abort",function(e){var t=e.target;var r=_(t);if(r&&r.xhr){r.xhr.abort()}});window.onpopstate=function(e){if(e.state&&e.state.htmx){Ot();W(t,function(e){$(e,"htmx:restored",{document:z(),triggerEvent:$})})}};setTimeout(function(){$(e,"htmx:load",{})},0)});return U}()}); \ No newline at end of file diff --git a/static/js/particles.min.js b/static/js/particles.min.js new file mode 100644 index 0000000..b3d46d1 --- /dev/null +++ b/static/js/particles.min.js @@ -0,0 +1,9 @@ +/* ----------------------------------------------- +/* Author : Vincent Garreau - vincentgarreau.com +/* MIT license: http://opensource.org/licenses/MIT +/* Demo / Generator : vincentgarreau.com/particles.js +/* GitHub : github.com/VincentGarreau/particles.js +/* How to use? : Check the GitHub README +/* v2.0.0 +/* ----------------------------------------------- */ +function hexToRgb(e){var a=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;e=e.replace(a,function(e,a,t,i){return a+a+t+t+i+i});var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null}function clamp(e,a,t){return Math.min(Math.max(e,a),t)}function isInArray(e,a){return a.indexOf(e)>-1}var pJS=function(e,a){var t=document.querySelector("#"+e+" > .particles-js-canvas-el");this.pJS={canvas:{el:t,w:t.offsetWidth,h:t.offsetHeight},particles:{number:{value:400,density:{enable:!0,value_area:800}},color:{value:"#fff"},shape:{type:"circle",stroke:{width:0,color:"#ff0000"},polygon:{nb_sides:5},image:{src:"",width:100,height:100}},opacity:{value:1,random:!1,anim:{enable:!1,speed:2,opacity_min:0,sync:!1}},size:{value:20,random:!1,anim:{enable:!1,speed:20,size_min:0,sync:!1}},line_linked:{enable:!0,distance:100,color:"#fff",opacity:1,width:1},move:{enable:!0,speed:2,direction:"none",random:!1,straight:!1,out_mode:"out",bounce:!1,attract:{enable:!1,rotateX:3e3,rotateY:3e3}},array:[]},interactivity:{detect_on:"canvas",events:{onhover:{enable:!0,mode:"grab"},onclick:{enable:!0,mode:"push"},resize:!0},modes:{grab:{distance:100,line_linked:{opacity:1}},bubble:{distance:200,size:80,duration:.4},repulse:{distance:200,duration:.4},push:{particles_nb:4},remove:{particles_nb:2}},mouse:{}},retina_detect:!1,fn:{interact:{},modes:{},vendors:{}},tmp:{}};var i=this.pJS;a&&Object.deepExtend(i,a),i.tmp.obj={size_value:i.particles.size.value,size_anim_speed:i.particles.size.anim.speed,move_speed:i.particles.move.speed,line_linked_distance:i.particles.line_linked.distance,line_linked_width:i.particles.line_linked.width,mode_grab_distance:i.interactivity.modes.grab.distance,mode_bubble_distance:i.interactivity.modes.bubble.distance,mode_bubble_size:i.interactivity.modes.bubble.size,mode_repulse_distance:i.interactivity.modes.repulse.distance},i.fn.retinaInit=function(){i.retina_detect&&window.devicePixelRatio>1?(i.canvas.pxratio=window.devicePixelRatio,i.tmp.retina=!0):(i.canvas.pxratio=1,i.tmp.retina=!1),i.canvas.w=i.canvas.el.offsetWidth*i.canvas.pxratio,i.canvas.h=i.canvas.el.offsetHeight*i.canvas.pxratio,i.particles.size.value=i.tmp.obj.size_value*i.canvas.pxratio,i.particles.size.anim.speed=i.tmp.obj.size_anim_speed*i.canvas.pxratio,i.particles.move.speed=i.tmp.obj.move_speed*i.canvas.pxratio,i.particles.line_linked.distance=i.tmp.obj.line_linked_distance*i.canvas.pxratio,i.interactivity.modes.grab.distance=i.tmp.obj.mode_grab_distance*i.canvas.pxratio,i.interactivity.modes.bubble.distance=i.tmp.obj.mode_bubble_distance*i.canvas.pxratio,i.particles.line_linked.width=i.tmp.obj.line_linked_width*i.canvas.pxratio,i.interactivity.modes.bubble.size=i.tmp.obj.mode_bubble_size*i.canvas.pxratio,i.interactivity.modes.repulse.distance=i.tmp.obj.mode_repulse_distance*i.canvas.pxratio},i.fn.canvasInit=function(){i.canvas.ctx=i.canvas.el.getContext("2d")},i.fn.canvasSize=function(){i.canvas.el.width=i.canvas.w,i.canvas.el.height=i.canvas.h,i&&i.interactivity.events.resize&&window.addEventListener("resize",function(){i.canvas.w=i.canvas.el.offsetWidth,i.canvas.h=i.canvas.el.offsetHeight,i.tmp.retina&&(i.canvas.w*=i.canvas.pxratio,i.canvas.h*=i.canvas.pxratio),i.canvas.el.width=i.canvas.w,i.canvas.el.height=i.canvas.h,i.particles.move.enable||(i.fn.particlesEmpty(),i.fn.particlesCreate(),i.fn.particlesDraw(),i.fn.vendors.densityAutoParticles()),i.fn.vendors.densityAutoParticles()})},i.fn.canvasPaint=function(){i.canvas.ctx.fillRect(0,0,i.canvas.w,i.canvas.h)},i.fn.canvasClear=function(){i.canvas.ctx.clearRect(0,0,i.canvas.w,i.canvas.h)},i.fn.particle=function(e,a,t){if(this.radius=(i.particles.size.random?Math.random():1)*i.particles.size.value,i.particles.size.anim.enable&&(this.size_status=!1,this.vs=i.particles.size.anim.speed/100,i.particles.size.anim.sync||(this.vs=this.vs*Math.random())),this.x=t?t.x:Math.random()*i.canvas.w,this.y=t?t.y:Math.random()*i.canvas.h,this.x>i.canvas.w-2*this.radius?this.x=this.x-this.radius:this.x<2*this.radius&&(this.x=this.x+this.radius),this.y>i.canvas.h-2*this.radius?this.y=this.y-this.radius:this.y<2*this.radius&&(this.y=this.y+this.radius),i.particles.move.bounce&&i.fn.vendors.checkOverlap(this,t),this.color={},"object"==typeof e.value)if(e.value instanceof Array){var s=e.value[Math.floor(Math.random()*i.particles.color.value.length)];this.color.rgb=hexToRgb(s)}else void 0!=e.value.r&&void 0!=e.value.g&&void 0!=e.value.b&&(this.color.rgb={r:e.value.r,g:e.value.g,b:e.value.b}),void 0!=e.value.h&&void 0!=e.value.s&&void 0!=e.value.l&&(this.color.hsl={h:e.value.h,s:e.value.s,l:e.value.l});else"random"==e.value?this.color.rgb={r:Math.floor(256*Math.random())+0,g:Math.floor(256*Math.random())+0,b:Math.floor(256*Math.random())+0}:"string"==typeof e.value&&(this.color=e,this.color.rgb=hexToRgb(this.color.value));this.opacity=(i.particles.opacity.random?Math.random():1)*i.particles.opacity.value,i.particles.opacity.anim.enable&&(this.opacity_status=!1,this.vo=i.particles.opacity.anim.speed/100,i.particles.opacity.anim.sync||(this.vo=this.vo*Math.random()));var n={};switch(i.particles.move.direction){case"top":n={x:0,y:-1};break;case"top-right":n={x:.5,y:-.5};break;case"right":n={x:1,y:-0};break;case"bottom-right":n={x:.5,y:.5};break;case"bottom":n={x:0,y:1};break;case"bottom-left":n={x:-.5,y:1};break;case"left":n={x:-1,y:0};break;case"top-left":n={x:-.5,y:-.5};break;default:n={x:0,y:0}}i.particles.move.straight?(this.vx=n.x,this.vy=n.y,i.particles.move.random&&(this.vx=this.vx*Math.random(),this.vy=this.vy*Math.random())):(this.vx=n.x+Math.random()-.5,this.vy=n.y+Math.random()-.5),this.vx_i=this.vx,this.vy_i=this.vy;var r=i.particles.shape.type;if("object"==typeof r){if(r instanceof Array){var c=r[Math.floor(Math.random()*r.length)];this.shape=c}}else this.shape=r;if("image"==this.shape){var o=i.particles.shape;this.img={src:o.image.src,ratio:o.image.width/o.image.height},this.img.ratio||(this.img.ratio=1),"svg"==i.tmp.img_type&&void 0!=i.tmp.source_svg&&(i.fn.vendors.createSvgImg(this),i.tmp.pushing&&(this.img.loaded=!1))}},i.fn.particle.prototype.draw=function(){function e(){i.canvas.ctx.drawImage(r,a.x-t,a.y-t,2*t,2*t/a.img.ratio)}var a=this;if(void 0!=a.radius_bubble)var t=a.radius_bubble;else var t=a.radius;if(void 0!=a.opacity_bubble)var s=a.opacity_bubble;else var s=a.opacity;if(a.color.rgb)var n="rgba("+a.color.rgb.r+","+a.color.rgb.g+","+a.color.rgb.b+","+s+")";else var n="hsla("+a.color.hsl.h+","+a.color.hsl.s+"%,"+a.color.hsl.l+"%,"+s+")";switch(i.canvas.ctx.fillStyle=n,i.canvas.ctx.beginPath(),a.shape){case"circle":i.canvas.ctx.arc(a.x,a.y,t,0,2*Math.PI,!1);break;case"edge":i.canvas.ctx.rect(a.x-t,a.y-t,2*t,2*t);break;case"triangle":i.fn.vendors.drawShape(i.canvas.ctx,a.x-t,a.y+t/1.66,2*t,3,2);break;case"polygon":i.fn.vendors.drawShape(i.canvas.ctx,a.x-t/(i.particles.shape.polygon.nb_sides/3.5),a.y-t/.76,2.66*t/(i.particles.shape.polygon.nb_sides/3),i.particles.shape.polygon.nb_sides,1);break;case"star":i.fn.vendors.drawShape(i.canvas.ctx,a.x-2*t/(i.particles.shape.polygon.nb_sides/4),a.y-t/1.52,2*t*2.66/(i.particles.shape.polygon.nb_sides/3),i.particles.shape.polygon.nb_sides,2);break;case"image":if("svg"==i.tmp.img_type)var r=a.img.obj;else var r=i.tmp.img_obj;r&&e()}i.canvas.ctx.closePath(),i.particles.shape.stroke.width>0&&(i.canvas.ctx.strokeStyle=i.particles.shape.stroke.color,i.canvas.ctx.lineWidth=i.particles.shape.stroke.width,i.canvas.ctx.stroke()),i.canvas.ctx.fill()},i.fn.particlesCreate=function(){for(var e=0;e=i.particles.opacity.value&&(a.opacity_status=!1),a.opacity+=a.vo):(a.opacity<=i.particles.opacity.anim.opacity_min&&(a.opacity_status=!0),a.opacity-=a.vo),a.opacity<0&&(a.opacity=0)),i.particles.size.anim.enable&&(1==a.size_status?(a.radius>=i.particles.size.value&&(a.size_status=!1),a.radius+=a.vs):(a.radius<=i.particles.size.anim.size_min&&(a.size_status=!0),a.radius-=a.vs),a.radius<0&&(a.radius=0)),"bounce"==i.particles.move.out_mode)var s={x_left:a.radius,x_right:i.canvas.w,y_top:a.radius,y_bottom:i.canvas.h};else var s={x_left:-a.radius,x_right:i.canvas.w+a.radius,y_top:-a.radius,y_bottom:i.canvas.h+a.radius};switch(a.x-a.radius>i.canvas.w?(a.x=s.x_left,a.y=Math.random()*i.canvas.h):a.x+a.radius<0&&(a.x=s.x_right,a.y=Math.random()*i.canvas.h),a.y-a.radius>i.canvas.h?(a.y=s.y_top,a.x=Math.random()*i.canvas.w):a.y+a.radius<0&&(a.y=s.y_bottom,a.x=Math.random()*i.canvas.w),i.particles.move.out_mode){case"bounce":a.x+a.radius>i.canvas.w?a.vx=-a.vx:a.x-a.radius<0&&(a.vx=-a.vx),a.y+a.radius>i.canvas.h?a.vy=-a.vy:a.y-a.radius<0&&(a.vy=-a.vy)}if(isInArray("grab",i.interactivity.events.onhover.mode)&&i.fn.modes.grabParticle(a),(isInArray("bubble",i.interactivity.events.onhover.mode)||isInArray("bubble",i.interactivity.events.onclick.mode))&&i.fn.modes.bubbleParticle(a),(isInArray("repulse",i.interactivity.events.onhover.mode)||isInArray("repulse",i.interactivity.events.onclick.mode))&&i.fn.modes.repulseParticle(a),i.particles.line_linked.enable||i.particles.move.attract.enable)for(var n=e+1;n0){var c=i.particles.line_linked.color_rgb_line;i.canvas.ctx.strokeStyle="rgba("+c.r+","+c.g+","+c.b+","+r+")",i.canvas.ctx.lineWidth=i.particles.line_linked.width,i.canvas.ctx.beginPath(),i.canvas.ctx.moveTo(e.x,e.y),i.canvas.ctx.lineTo(a.x,a.y),i.canvas.ctx.stroke(),i.canvas.ctx.closePath()}}},i.fn.interact.attractParticles=function(e,a){var t=e.x-a.x,s=e.y-a.y,n=Math.sqrt(t*t+s*s);if(n<=i.particles.line_linked.distance){var r=t/(1e3*i.particles.move.attract.rotateX),c=s/(1e3*i.particles.move.attract.rotateY);e.vx-=r,e.vy-=c,a.vx+=r,a.vy+=c}},i.fn.interact.bounceParticles=function(e,a){var t=e.x-a.x,i=e.y-a.y,s=Math.sqrt(t*t+i*i),n=e.radius+a.radius;n>=s&&(e.vx=-e.vx,e.vy=-e.vy,a.vx=-a.vx,a.vy=-a.vy)},i.fn.modes.pushParticles=function(e,a){i.tmp.pushing=!0;for(var t=0;e>t;t++)i.particles.array.push(new i.fn.particle(i.particles.color,i.particles.opacity.value,{x:a?a.pos_x:Math.random()*i.canvas.w,y:a?a.pos_y:Math.random()*i.canvas.h})),t==e-1&&(i.particles.move.enable||i.fn.particlesDraw(),i.tmp.pushing=!1)},i.fn.modes.removeParticles=function(e){i.particles.array.splice(0,e),i.particles.move.enable||i.fn.particlesDraw()},i.fn.modes.bubbleParticle=function(e){function a(){e.opacity_bubble=e.opacity,e.radius_bubble=e.radius}function t(a,t,s,n,c){if(a!=t)if(i.tmp.bubble_duration_end){if(void 0!=s){var o=n-p*(n-a)/i.interactivity.modes.bubble.duration,l=a-o;d=a+l,"size"==c&&(e.radius_bubble=d),"opacity"==c&&(e.opacity_bubble=d)}}else if(r<=i.interactivity.modes.bubble.distance){if(void 0!=s)var v=s;else var v=n;if(v!=a){var d=n-p*(n-a)/i.interactivity.modes.bubble.duration;"size"==c&&(e.radius_bubble=d),"opacity"==c&&(e.opacity_bubble=d)}}else"size"==c&&(e.radius_bubble=void 0),"opacity"==c&&(e.opacity_bubble=void 0)}if(i.interactivity.events.onhover.enable&&isInArray("bubble",i.interactivity.events.onhover.mode)){var s=e.x-i.interactivity.mouse.pos_x,n=e.y-i.interactivity.mouse.pos_y,r=Math.sqrt(s*s+n*n),c=1-r/i.interactivity.modes.bubble.distance;if(r<=i.interactivity.modes.bubble.distance){if(c>=0&&"mousemove"==i.interactivity.status){if(i.interactivity.modes.bubble.size!=i.particles.size.value)if(i.interactivity.modes.bubble.size>i.particles.size.value){var o=e.radius+i.interactivity.modes.bubble.size*c;o>=0&&(e.radius_bubble=o)}else{var l=e.radius-i.interactivity.modes.bubble.size,o=e.radius-l*c;o>0?e.radius_bubble=o:e.radius_bubble=0}if(i.interactivity.modes.bubble.opacity!=i.particles.opacity.value)if(i.interactivity.modes.bubble.opacity>i.particles.opacity.value){var v=i.interactivity.modes.bubble.opacity*c;v>e.opacity&&v<=i.interactivity.modes.bubble.opacity&&(e.opacity_bubble=v)}else{var v=e.opacity-(i.particles.opacity.value-i.interactivity.modes.bubble.opacity)*c;v=i.interactivity.modes.bubble.opacity&&(e.opacity_bubble=v)}}}else a();"mouseleave"==i.interactivity.status&&a()}else if(i.interactivity.events.onclick.enable&&isInArray("bubble",i.interactivity.events.onclick.mode)){if(i.tmp.bubble_clicking){var s=e.x-i.interactivity.mouse.click_pos_x,n=e.y-i.interactivity.mouse.click_pos_y,r=Math.sqrt(s*s+n*n),p=((new Date).getTime()-i.interactivity.mouse.click_time)/1e3;p>i.interactivity.modes.bubble.duration&&(i.tmp.bubble_duration_end=!0),p>2*i.interactivity.modes.bubble.duration&&(i.tmp.bubble_clicking=!1,i.tmp.bubble_duration_end=!1)}i.tmp.bubble_clicking&&(t(i.interactivity.modes.bubble.size,i.particles.size.value,e.radius_bubble,e.radius,"size"),t(i.interactivity.modes.bubble.opacity,i.particles.opacity.value,e.opacity_bubble,e.opacity,"opacity"))}},i.fn.modes.repulseParticle=function(e){function a(){var a=Math.atan2(d,p);if(e.vx=u*Math.cos(a),e.vy=u*Math.sin(a),"bounce"==i.particles.move.out_mode){var t={x:e.x+e.vx,y:e.y+e.vy};t.x+e.radius>i.canvas.w?e.vx=-e.vx:t.x-e.radius<0&&(e.vx=-e.vx),t.y+e.radius>i.canvas.h?e.vy=-e.vy:t.y-e.radius<0&&(e.vy=-e.vy)}}if(i.interactivity.events.onhover.enable&&isInArray("repulse",i.interactivity.events.onhover.mode)&&"mousemove"==i.interactivity.status){var t=e.x-i.interactivity.mouse.pos_x,s=e.y-i.interactivity.mouse.pos_y,n=Math.sqrt(t*t+s*s),r={x:t/n,y:s/n},c=i.interactivity.modes.repulse.distance,o=100,l=clamp(1/c*(-1*Math.pow(n/c,2)+1)*c*o,0,50),v={x:e.x+r.x*l,y:e.y+r.y*l};"bounce"==i.particles.move.out_mode?(v.x-e.radius>0&&v.x+e.radius0&&v.y+e.radius=m&&a()}else 0==i.tmp.repulse_clicking&&(e.vx=e.vx_i,e.vy=e.vy_i)},i.fn.modes.grabParticle=function(e){if(i.interactivity.events.onhover.enable&&"mousemove"==i.interactivity.status){var a=e.x-i.interactivity.mouse.pos_x,t=e.y-i.interactivity.mouse.pos_y,s=Math.sqrt(a*a+t*t);if(s<=i.interactivity.modes.grab.distance){var n=i.interactivity.modes.grab.line_linked.opacity-s/(1/i.interactivity.modes.grab.line_linked.opacity)/i.interactivity.modes.grab.distance;if(n>0){var r=i.particles.line_linked.color_rgb_line;i.canvas.ctx.strokeStyle="rgba("+r.r+","+r.g+","+r.b+","+n+")",i.canvas.ctx.lineWidth=i.particles.line_linked.width,i.canvas.ctx.beginPath(),i.canvas.ctx.moveTo(e.x,e.y),i.canvas.ctx.lineTo(i.interactivity.mouse.pos_x,i.interactivity.mouse.pos_y),i.canvas.ctx.stroke(),i.canvas.ctx.closePath()}}}},i.fn.vendors.eventsListeners=function(){"window"==i.interactivity.detect_on?i.interactivity.el=window:i.interactivity.el=i.canvas.el,(i.interactivity.events.onhover.enable||i.interactivity.events.onclick.enable)&&(i.interactivity.el.addEventListener("mousemove",function(e){if(i.interactivity.el==window)var a=e.clientX,t=e.clientY;else var a=e.offsetX||e.clientX,t=e.offsetY||e.clientY;i.interactivity.mouse.pos_x=a,i.interactivity.mouse.pos_y=t,i.tmp.retina&&(i.interactivity.mouse.pos_x*=i.canvas.pxratio,i.interactivity.mouse.pos_y*=i.canvas.pxratio),i.interactivity.status="mousemove"}),i.interactivity.el.addEventListener("mouseleave",function(e){i.interactivity.mouse.pos_x=null,i.interactivity.mouse.pos_y=null,i.interactivity.status="mouseleave"})),i.interactivity.events.onclick.enable&&i.interactivity.el.addEventListener("click",function(){if(i.interactivity.mouse.click_pos_x=i.interactivity.mouse.pos_x,i.interactivity.mouse.click_pos_y=i.interactivity.mouse.pos_y,i.interactivity.mouse.click_time=(new Date).getTime(),i.interactivity.events.onclick.enable)switch(i.interactivity.events.onclick.mode){case"push":i.particles.move.enable?i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb,i.interactivity.mouse):1==i.interactivity.modes.push.particles_nb?i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb,i.interactivity.mouse):i.interactivity.modes.push.particles_nb>1&&i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb);break;case"remove":i.fn.modes.removeParticles(i.interactivity.modes.remove.particles_nb);break;case"bubble":i.tmp.bubble_clicking=!0;break;case"repulse":i.tmp.repulse_clicking=!0,i.tmp.repulse_count=0,i.tmp.repulse_finish=!1,setTimeout(function(){i.tmp.repulse_clicking=!1},1e3*i.interactivity.modes.repulse.duration)}})},i.fn.vendors.densityAutoParticles=function(){if(i.particles.number.density.enable){var e=i.canvas.el.width*i.canvas.el.height/1e3;i.tmp.retina&&(e/=2*i.canvas.pxratio);var a=e*i.particles.number.value/i.particles.number.density.value_area,t=i.particles.array.length-a;0>t?i.fn.modes.pushParticles(Math.abs(t)):i.fn.modes.removeParticles(t)}},i.fn.vendors.checkOverlap=function(e,a){for(var t=0;tv;v++)e.lineTo(i,0),e.translate(i,0),e.rotate(l);e.fill(),e.restore()},i.fn.vendors.exportImg=function(){window.open(i.canvas.el.toDataURL("image/png"),"_blank")},i.fn.vendors.loadImg=function(e){if(i.tmp.img_error=void 0,""!=i.particles.shape.image.src)if("svg"==e){var a=new XMLHttpRequest;a.open("GET",i.particles.shape.image.src),a.onreadystatechange=function(e){4==a.readyState&&(200==a.status?(i.tmp.source_svg=e.currentTarget.response,i.fn.vendors.checkBeforeDraw()):(console.log("Error pJS - Image not found"),i.tmp.img_error=!0))},a.send()}else{var t=new Image;t.addEventListener("load",function(){i.tmp.img_obj=t,i.fn.vendors.checkBeforeDraw()}),t.src=i.particles.shape.image.src}else console.log("Error pJS - No image.src"),i.tmp.img_error=!0},i.fn.vendors.draw=function(){"image"==i.particles.shape.type?"svg"==i.tmp.img_type?i.tmp.count_svg>=i.particles.number.value?(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame)):i.tmp.img_error||(i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw)):void 0!=i.tmp.img_obj?(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame)):i.tmp.img_error||(i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw)):(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame))},i.fn.vendors.checkBeforeDraw=function(){"image"==i.particles.shape.type?"svg"==i.tmp.img_type&&void 0==i.tmp.source_svg?i.tmp.checkAnimFrame=requestAnimFrame(check):(cancelRequestAnimFrame(i.tmp.checkAnimFrame),i.tmp.img_error||(i.fn.vendors.init(),i.fn.vendors.draw())):(i.fn.vendors.init(),i.fn.vendors.draw())},i.fn.vendors.init=function(){i.fn.retinaInit(),i.fn.canvasInit(),i.fn.canvasSize(),i.fn.canvasPaint(),i.fn.particlesCreate(),i.fn.vendors.densityAutoParticles(),i.particles.line_linked.color_rgb_line=hexToRgb(i.particles.line_linked.color)},i.fn.vendors.start=function(){isInArray("image",i.particles.shape.type)?(i.tmp.img_type=i.particles.shape.image.src.substr(i.particles.shape.image.src.length-3),i.fn.vendors.loadImg(i.tmp.img_type)):i.fn.vendors.checkBeforeDraw()},i.fn.vendors.eventsListeners(),i.fn.vendors.start()};Object.deepExtend=function(e,a){for(var t in a)a[t]&&a[t].constructor&&a[t].constructor===Object?(e[t]=e[t]||{},arguments.callee(e[t],a[t])):e[t]=a[t];return e},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(e){window.setTimeout(e,1e3/60)}}(),window.cancelRequestAnimFrame=function(){return window.cancelAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelRequestAnimationFrame||window.oCancelRequestAnimationFrame||window.msCancelRequestAnimationFrame||clearTimeout}(),window.pJSDom=[],window.particlesJS=function(e,a){"string"!=typeof e&&(a=e,e="particles-js"),e||(e="particles-js");var t=document.getElementById(e),i="particles-js-canvas-el",s=t.getElementsByClassName(i);if(s.length)for(;s.length>0;)t.removeChild(s[0]);var n=document.createElement("canvas");n.className=i,n.style.width="100%",n.style.height="100%";var r=document.getElementById(e).appendChild(n);null!=r&&pJSDom.push(new pJS(e,a))},window.particlesJS.load=function(e,a,t){var i=new XMLHttpRequest;i.open("GET",a),i.onreadystatechange=function(a){if(4==i.readyState)if(200==i.status){var s=JSON.parse(a.currentTarget.response);window.particlesJS(e,s),t&&t()}else console.log("Error pJS - XMLHttpRequest status: "+i.status),console.log("Error pJS - File config not found")},i.send()}; \ No newline at end of file diff --git a/templates/base.html b/templates/base.html new file mode 100644 index 0000000..04aad70 --- /dev/null +++ b/templates/base.html @@ -0,0 +1,58 @@ + + + + + + Oki.cx - File Share + + + + + + + + +
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+

By clicking "upload" you agree to using this for personal use only.

+
+ + + + + \ No newline at end of file diff --git a/templates/html_response.html b/templates/html_response.html new file mode 100644 index 0000000..3edc7bd --- /dev/null +++ b/templates/html_response.html @@ -0,0 +1,3 @@ +