From b1b079f321043776cb180611123cdae1fabc3142 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Valenta?= <git@imaniti.org>
Date: Tue, 25 Apr 2023 10:39:09 +0200
Subject: [PATCH] add url resize generator

---
 Makefile                                      |   1 -
 .../__init__.py                               |   0
 asset_server_resize/admin.py                  |   3 +
 asset_server_resize/apps.py                   |   6 +
 asset_server_resize/models.py                 |   3 +
 .../templates/asset_server_resize/index.html  |  95 ++
 asset_server_resize/tests.py                  |   3 +
 asset_server_resize/urls.py                   |   8 +
 asset_server_resize/views.py                  |  13 +
 .../templates/instagram_token/exchange.html   |   2 +-
 .../templates/instagram_token/index.html      |   2 +-
 mail_signature/migrations/__init__.py         |   0
 .../templates/mail_signature/index.html       |   2 +-
 member_group_size_calc/migrations/__init__.py |   0
 .../member_group_size_calc/index.html         |   2 +-
 package-lock.json                             | 835 ++++++++++++++----
 package.json                                  |   4 +-
 requirements/base.txt                         |   1 -
 rybicka/settings/base.py                      |   1 +
 rybicka/urls.py                               |   1 +
 shared/static/shared/image.webp               | Bin 0 -> 22906 bytes
 shared/templates/shared/base.html             |   2 +-
 shared/templates/shared/index.html            |  20 +
 static_src/asset_server_resize.js             |  43 +
 webpack.config.js                             |   4 +
 25 files changed, 857 insertions(+), 194 deletions(-)
 rename {instagram_token/migrations => asset_server_resize}/__init__.py (100%)
 create mode 100644 asset_server_resize/admin.py
 create mode 100644 asset_server_resize/apps.py
 create mode 100644 asset_server_resize/models.py
 create mode 100644 asset_server_resize/templates/asset_server_resize/index.html
 create mode 100644 asset_server_resize/tests.py
 create mode 100644 asset_server_resize/urls.py
 create mode 100644 asset_server_resize/views.py
 delete mode 100644 mail_signature/migrations/__init__.py
 delete mode 100644 member_group_size_calc/migrations/__init__.py
 create mode 100644 shared/static/shared/image.webp
 create mode 100644 static_src/asset_server_resize.js

diff --git a/Makefile b/Makefile
index 8a03c83..5de90eb 100644
--- a/Makefile
+++ b/Makefile
@@ -27,7 +27,6 @@ venv: .venv/bin/python
 
 install: venv
 	${VENV}/bin/pip install -r requirements/base.txt -r requirements/production.txt
-	${VENV}/bin/nodeenv --python-virtualenv --node=19.3.0
 	${VENV}/bin/npm install
 
 
diff --git a/instagram_token/migrations/__init__.py b/asset_server_resize/__init__.py
similarity index 100%
rename from instagram_token/migrations/__init__.py
rename to asset_server_resize/__init__.py
diff --git a/asset_server_resize/admin.py b/asset_server_resize/admin.py
new file mode 100644
index 0000000..8c38f3f
--- /dev/null
+++ b/asset_server_resize/admin.py
@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.
diff --git a/asset_server_resize/apps.py b/asset_server_resize/apps.py
new file mode 100644
index 0000000..61081ab
--- /dev/null
+++ b/asset_server_resize/apps.py
@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class AutoServerResizeConfig(AppConfig):
+    default_auto_field = 'django.db.models.BigAutoField'
+    name = 'asset_server_resize'
diff --git a/asset_server_resize/models.py b/asset_server_resize/models.py
new file mode 100644
index 0000000..71a8362
--- /dev/null
+++ b/asset_server_resize/models.py
@@ -0,0 +1,3 @@
+from django.db import models
+
+# Create your models here.
diff --git a/asset_server_resize/templates/asset_server_resize/index.html b/asset_server_resize/templates/asset_server_resize/index.html
new file mode 100644
index 0000000..a59a44b
--- /dev/null
+++ b/asset_server_resize/templates/asset_server_resize/index.html
@@ -0,0 +1,95 @@
+{% extends "shared/base.html" %}
+
+{% load render_bundle from webpack_loader %}
+
+{% block title %}Generátor škálovaných odkazů na obrázky v Asset Serveru{% endblock %}
+{% block header_name %}Škálované obrázky{% endblock %}
+{% block description %}Vyplněním získáš odkaz na zmenšený obrázek z asset serveru, který se dá použít pro embedování.{% endblock %}
+
+{% block head %}
+    <link
+        rel="stylesheet"
+        href="https://styleguide.pirati.cz/2.12.x/css/styles.css"
+    >
+
+    {% render_bundle "asset_server_resize" %}
+{% endblock %}
+
+{% block content %}
+    <main>
+        <h1 class="text-6xl font-bebas mb-5">Generátor škálovaných odkazů na obrázky v Asset Serveru</h1>
+
+        <div class="grid grid-cols-2 gap-4">
+            <div class="flex flex-col gap-2">
+                <form class="flex flex-col gap-2 mb-4" id="asset-info-form">
+                    <input
+                        id="path"
+                        name="path"
+                        type="text"
+                        pattern="[^ :]+\.(jpg|jpeg|png|webp|gif)"
+                        class="text-input form-field__control"
+                        placeholder="Cesta k souboru"
+                        required
+                    >
+                    <small class="prose text-sm">
+                        <p>
+                            Například <code>/jihomoravsky/img/flags/gb.png</code>, pro soubor
+                            <a href="https://mrak.pirati.cz/f/475789" target="_blank">zde na
+                            Mraku</a>. Cestu najdeš nahoře, vynechej z ní <code>Assets</code>.
+                            Na konec dodej název souboru, na který chceš odkázat.
+                        </p>
+                    </small>
+
+                    <input
+                        id="height"
+                        name="height"
+                        type="number"
+                        class="text-input form-field__control"
+                        placeholder="Výška"
+                    >
+                    <input
+                        id="width"
+                        name="width"
+                        type="number"
+                        class="text-input form-field__control"
+                        placeholder="Šírka"
+                    >
+
+                    <small class="prose text-sm my-2">
+                        <p>
+                            Stačí vyplnit pouze jeden rozměr. Obrázek se mu přizpůsobí.
+                        </p>
+                    </small>
+
+                    <div>
+                        <button
+                            type="submit"
+                            class="btn btn--icon"
+                            id="generate-url"
+                        >
+                            <div class="btn__body-wrap">
+                                <div class="btn__body">Vygenerovat</div>
+                                <div class="btn__icon">
+                                    <i class="ico--chevron-right"></i>
+                                </div>
+                            </div>
+                        </button>
+                    </div>
+                </form>
+
+                <small class="prose text-sm">
+                    <p>
+                        Další informace o Asset serveru najdeš na <a
+                        href="https://wiki.pirati.cz/to/navody/asset-server" target="_blank">
+                        Wiki v návodu</a>.
+                    </p>
+                </small>
+            </div>
+            <div id="result-wrapper" class="flex flex-col gap-2 hidden">
+                <h3 class="head-alt-sm">Vygenerovaný odkaz</h3>
+
+                <a href="" id="result"></a>
+            </div>
+        </div>
+    </main>
+{% endblock %}
diff --git a/asset_server_resize/tests.py b/asset_server_resize/tests.py
new file mode 100644
index 0000000..7ce503c
--- /dev/null
+++ b/asset_server_resize/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/asset_server_resize/urls.py b/asset_server_resize/urls.py
new file mode 100644
index 0000000..574ce2d
--- /dev/null
+++ b/asset_server_resize/urls.py
@@ -0,0 +1,8 @@
+from django.urls import path
+
+from . import views
+
+app_name = "asset_server_resize"
+urlpatterns = [
+    path("", views.index, name="index"),
+]
diff --git a/asset_server_resize/views.py b/asset_server_resize/views.py
new file mode 100644
index 0000000..c2f44dc
--- /dev/null
+++ b/asset_server_resize/views.py
@@ -0,0 +1,13 @@
+from django.conf import settings
+from django.shortcuts import render
+from django_http_exceptions import HTTPExceptions
+
+# Create your views here.
+
+
+def index(request):
+    return render(
+        request,
+        "asset_server_resize/index.html",
+        {}
+    )
diff --git a/instagram_token/templates/instagram_token/exchange.html b/instagram_token/templates/instagram_token/exchange.html
index ba5d5ea..ae03e0d 100644
--- a/instagram_token/templates/instagram_token/exchange.html
+++ b/instagram_token/templates/instagram_token/exchange.html
@@ -9,7 +9,7 @@
 {% block head %}
     <link
         rel="stylesheet"
-        href="https://styleguide.pirati.cz/2.11.x/css/styles.css"
+        href="https://styleguide.pirati.cz/2.12.x/css/styles.css"
     >
 {% endblock %}
 
diff --git a/instagram_token/templates/instagram_token/index.html b/instagram_token/templates/instagram_token/index.html
index 8f658a0..1a84fb3 100644
--- a/instagram_token/templates/instagram_token/index.html
+++ b/instagram_token/templates/instagram_token/index.html
@@ -9,7 +9,7 @@
 {% block head %}
     <link
         rel="stylesheet"
-        href="https://styleguide.pirati.cz/2.11.x/css/styles.css"
+        href="https://styleguide.pirati.cz/2.12.x/css/styles.css"
     >
 {% endblock %}
 
diff --git a/mail_signature/migrations/__init__.py b/mail_signature/migrations/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/mail_signature/templates/mail_signature/index.html b/mail_signature/templates/mail_signature/index.html
index 700f1ff..d2f5807 100644
--- a/mail_signature/templates/mail_signature/index.html
+++ b/mail_signature/templates/mail_signature/index.html
@@ -9,7 +9,7 @@
 {% block head %}
     <link
         rel="stylesheet"
-        href="https://styleguide.pirati.cz/2.11.x/css/styles.css"
+        href="https://styleguide.pirati.cz/2.12.x/css/styles.css"
     >
 
     {% render_bundle "mail_signature" %}
diff --git a/member_group_size_calc/migrations/__init__.py b/member_group_size_calc/migrations/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/member_group_size_calc/templates/member_group_size_calc/index.html b/member_group_size_calc/templates/member_group_size_calc/index.html
index 965dae6..dd050a7 100644
--- a/member_group_size_calc/templates/member_group_size_calc/index.html
+++ b/member_group_size_calc/templates/member_group_size_calc/index.html
@@ -9,7 +9,7 @@
 {% block head %}
     <link
         rel="stylesheet"
-        href="https://styleguide.pirati.cz/2.11.x/css/styles.css"
+        href="https://styleguide.pirati.cz/2.12.x/css/styles.css"
     >
 
     {% render_bundle "member_group_size_calc" %}
diff --git a/package-lock.json b/package-lock.json
index 4c5d785..1ffe846 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,19 +9,107 @@
       "version": "0.0.1",
       "license": "AGPL-3.0-or-later",
       "dependencies": {
-        "@tailwindcss/typography": "^0.5.9",
+        "@tailwindcss/typography": "^0.4.1",
         "alertifyjs": "^1.13.1",
         "css-loader": "^6.7.3",
         "jquery": "^3.6.4",
         "js-cookie": "^3.0.1",
         "select2": "^4.1.0-rc.0",
         "style-loader": "^3.3.2",
-        "tailwindcss": "^3.3.1",
+        "tailwindcss": "^2.2.2",
         "webpack": "^5.77.0",
         "webpack-bundle-tracker": "^1.8.1",
         "webpack-cli": "^5.0.1"
       }
     },
+    "node_modules/@babel/code-frame": {
+      "version": "7.21.4",
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz",
+      "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==",
+      "dependencies": {
+        "@babel/highlight": "^7.18.6"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-identifier": {
+      "version": "7.19.1",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
+      "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/highlight": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+      "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+      "dependencies": {
+        "@babel/helper-validator-identifier": "^7.18.6",
+        "chalk": "^2.0.0",
+        "js-tokens": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+    },
+    "node_modules/@babel/highlight/node_modules/has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
     "node_modules/@discoveryjs/json-ext": {
       "version": "0.5.7",
       "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
@@ -30,6 +118,17 @@
         "node": ">=10.0.0"
       }
     },
+    "node_modules/@fullhuman/postcss-purgecss": {
+      "version": "4.1.3",
+      "resolved": "https://registry.npmjs.org/@fullhuman/postcss-purgecss/-/postcss-purgecss-4.1.3.tgz",
+      "integrity": "sha512-jqcsyfvq09VOsMXxJMPLRF6Fhg/NNltzWKnC9qtzva+QKTxerCO4esG6je7hbnmkpZtaDyPTwMBj9bzfWorsrw==",
+      "dependencies": {
+        "purgecss": "^4.1.3"
+      },
+      "peerDependencies": {
+        "postcss": "^8.0.0"
+      }
+    },
     "node_modules/@jridgewell/gen-mapping": {
       "version": "0.3.2",
       "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
@@ -115,29 +214,17 @@
       }
     },
     "node_modules/@tailwindcss/typography": {
-      "version": "0.5.9",
-      "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.9.tgz",
-      "integrity": "sha512-t8Sg3DyynFysV9f4JDOVISGsjazNb48AeIYQwcL+Bsq5uf4RYL75C1giZ43KISjeDGBaTN3Kxh7Xj/vRSMJUUg==",
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.4.1.tgz",
+      "integrity": "sha512-ovPPLUhs7zAIJfr0y1dbGlyCuPhpuv/jpBoFgqAc658DWGGrOBWBMpAWLw2KlzbNeVk4YBJMzue1ekvIbdw6XA==",
       "dependencies": {
         "lodash.castarray": "^4.4.0",
         "lodash.isplainobject": "^4.0.6",
         "lodash.merge": "^4.6.2",
-        "postcss-selector-parser": "6.0.10"
+        "lodash.uniq": "^4.5.0"
       },
       "peerDependencies": {
-        "tailwindcss": ">=3.0.0 || insiders"
-      }
-    },
-    "node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser": {
-      "version": "6.0.10",
-      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
-      "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
-      "dependencies": {
-        "cssesc": "^3.0.0",
-        "util-deprecate": "^1.0.2"
-      },
-      "engines": {
-        "node": ">=4"
+        "tailwindcss": ">=2.0.0"
       }
     },
     "node_modules/@types/eslint": {
@@ -173,6 +260,11 @@
       "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
       "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA=="
     },
+    "node_modules/@types/parse-json": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
+      "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
+    },
     "node_modules/@webassemblyjs/ast": {
       "version": "1.11.1",
       "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz",
@@ -355,6 +447,35 @@
       "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
       "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ=="
     },
+    "node_modules/acorn": {
+      "version": "7.4.1",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+      "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/acorn-node": {
+      "version": "1.8.2",
+      "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
+      "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
+      "dependencies": {
+        "acorn": "^7.0.0",
+        "acorn-walk": "^7.0.0",
+        "xtend": "^4.0.2"
+      }
+    },
+    "node_modules/acorn-walk": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
+      "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
     "node_modules/ajv": {
       "version": "6.12.6",
       "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
@@ -391,10 +512,19 @@
         "node": ">=8"
       }
     },
-    "node_modules/any-promise": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
-      "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="
+    "node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
     },
     "node_modules/anymatch": {
       "version": "3.1.3",
@@ -413,6 +543,39 @@
       "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
       "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="
     },
+    "node_modules/autoprefixer": {
+      "version": "10.4.14",
+      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz",
+      "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==",
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/postcss/"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+        }
+      ],
+      "peer": true,
+      "dependencies": {
+        "browserslist": "^4.21.5",
+        "caniuse-lite": "^1.0.30001464",
+        "fraction.js": "^4.2.0",
+        "normalize-range": "^0.1.2",
+        "picocolors": "^1.0.0",
+        "postcss-value-parser": "^4.2.0"
+      },
+      "bin": {
+        "autoprefixer": "bin/autoprefixer"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >=14"
+      },
+      "peerDependencies": {
+        "postcss": "^8.1.0"
+      }
+    },
     "node_modules/balanced-match": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -447,9 +610,9 @@
       }
     },
     "node_modules/browserslist": {
-      "version": "4.21.4",
-      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
-      "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
+      "version": "4.21.5",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
+      "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
       "funding": [
         {
           "type": "opencollective",
@@ -461,10 +624,10 @@
         }
       ],
       "dependencies": {
-        "caniuse-lite": "^1.0.30001400",
-        "electron-to-chromium": "^1.4.251",
-        "node-releases": "^2.0.6",
-        "update-browserslist-db": "^1.0.9"
+        "caniuse-lite": "^1.0.30001449",
+        "electron-to-chromium": "^1.4.284",
+        "node-releases": "^2.0.8",
+        "update-browserslist-db": "^1.0.10"
       },
       "bin": {
         "browserslist": "cli.js"
@@ -478,6 +641,22 @@
       "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
       "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
     },
+    "node_modules/bytes": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+      "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/callsites": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+      "engines": {
+        "node": ">=6"
+      }
+    },
     "node_modules/camelcase-css": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
@@ -487,9 +666,9 @@
       }
     },
     "node_modules/caniuse-lite": {
-      "version": "1.0.30001445",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001445.tgz",
-      "integrity": "sha512-8sdQIdMztYmzfTMO6KfLny878Ln9c2M0fc7EH60IjlP4Dc4PiCy7K2Vl3ITmWgOyPgVQKa5x+UP/KqFsxj4mBg==",
+      "version": "1.0.30001481",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001481.tgz",
+      "integrity": "sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ==",
       "funding": [
         {
           "type": "opencollective",
@@ -498,9 +677,39 @@
         {
           "type": "tidelift",
           "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
         }
       ]
     },
+    "node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/chalk/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
     "node_modules/chokidar": {
       "version": "3.5.3",
       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
@@ -559,11 +768,53 @@
         "node": ">=6"
       }
     },
+    "node_modules/color": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz",
+      "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==",
+      "dependencies": {
+        "color-convert": "^1.9.3",
+        "color-string": "^1.6.0"
+      }
+    },
+    "node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
     "node_modules/color-name": {
       "version": "1.1.4",
       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
       "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
     },
+    "node_modules/color-string": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+      "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+      "dependencies": {
+        "color-name": "^1.0.0",
+        "simple-swizzle": "^0.2.2"
+      }
+    },
+    "node_modules/color/node_modules/color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/color/node_modules/color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+    },
     "node_modules/colorette": {
       "version": "2.0.19",
       "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz",
@@ -579,6 +830,21 @@
       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
       "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
     },
+    "node_modules/cosmiconfig": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
+      "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
+      "dependencies": {
+        "@types/parse-json": "^4.0.0",
+        "import-fresh": "^3.2.1",
+        "parse-json": "^5.0.0",
+        "path-type": "^4.0.0",
+        "yaml": "^1.10.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
     "node_modules/cross-spawn": {
       "version": "7.0.3",
       "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -617,6 +883,11 @@
         "webpack": "^5.0.0"
       }
     },
+    "node_modules/css-unit-converter": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz",
+      "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA=="
+    },
     "node_modules/cssesc": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
@@ -628,6 +899,30 @@
         "node": ">=4"
       }
     },
+    "node_modules/defined": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz",
+      "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==",
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/detective": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz",
+      "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==",
+      "dependencies": {
+        "acorn-node": "^1.8.2",
+        "defined": "^1.0.0",
+        "minimist": "^1.2.6"
+      },
+      "bin": {
+        "detective": "bin/detective.js"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
     "node_modules/didyoumean": {
       "version": "1.2.2",
       "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
@@ -666,6 +961,14 @@
         "node": ">=4"
       }
     },
+    "node_modules/error-ex": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+      "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+      "dependencies": {
+        "is-arrayish": "^0.2.1"
+      }
+    },
     "node_modules/es-module-lexer": {
       "version": "0.9.3",
       "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
@@ -679,6 +982,14 @@
         "node": ">=6"
       }
     },
+    "node_modules/escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
     "node_modules/eslint-scope": {
       "version": "5.1.1",
       "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
@@ -801,6 +1112,32 @@
         "node": ">=8"
       }
     },
+    "node_modules/fraction.js": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
+      "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
+      "peer": true,
+      "engines": {
+        "node": "*"
+      },
+      "funding": {
+        "type": "patreon",
+        "url": "https://www.patreon.com/infusion"
+      }
+    },
+    "node_modules/fs-extra": {
+      "version": "10.1.0",
+      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+      "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+      "dependencies": {
+        "graceful-fs": "^4.2.0",
+        "jsonfile": "^6.0.1",
+        "universalify": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
     "node_modules/fs.realpath": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -825,14 +1162,14 @@
       "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
     },
     "node_modules/glob": {
-      "version": "7.1.6",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
-      "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+      "version": "7.2.3",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
       "dependencies": {
         "fs.realpath": "^1.0.0",
         "inflight": "^1.0.4",
         "inherits": "2",
-        "minimatch": "^3.0.4",
+        "minimatch": "^3.1.1",
         "once": "^1.3.0",
         "path-is-absolute": "^1.0.0"
       },
@@ -883,6 +1220,17 @@
         "node": ">=8"
       }
     },
+    "node_modules/html-tags": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
+      "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
     "node_modules/icss-utils": {
       "version": "5.1.0",
       "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
@@ -894,6 +1242,29 @@
         "postcss": "^8.1.0"
       }
     },
+    "node_modules/import-fresh": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+      "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+      "dependencies": {
+        "parent-module": "^1.0.0",
+        "resolve-from": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/import-fresh/node_modules/resolve-from": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+      "engines": {
+        "node": ">=4"
+      }
+    },
     "node_modules/import-local": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
@@ -934,6 +1305,11 @@
         "node": ">=10.13.0"
       }
     },
+    "node_modules/is-arrayish": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+      "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
+    },
     "node_modules/is-binary-path": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
@@ -1020,14 +1396,6 @@
         "node": ">= 10.13.0"
       }
     },
-    "node_modules/jiti": {
-      "version": "1.18.2",
-      "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz",
-      "integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==",
-      "bin": {
-        "jiti": "bin/jiti.js"
-      }
-    },
     "node_modules/jquery": {
       "version": "3.6.4",
       "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.4.tgz",
@@ -1041,6 +1409,11 @@
         "node": ">=12"
       }
     },
+    "node_modules/js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+    },
     "node_modules/json-parse-even-better-errors": {
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
@@ -1051,6 +1424,17 @@
       "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
       "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
     },
+    "node_modules/jsonfile": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+      "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+      "dependencies": {
+        "universalify": "^2.0.0"
+      },
+      "optionalDependencies": {
+        "graceful-fs": "^4.1.6"
+      }
+    },
     "node_modules/kind-of": {
       "version": "6.0.3",
       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
@@ -1091,6 +1475,11 @@
         "node": ">=8"
       }
     },
+    "node_modules/lodash": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+    },
     "node_modules/lodash.assign": {
       "version": "4.2.0",
       "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
@@ -1136,6 +1525,16 @@
       "resolved": "https://registry.npmjs.org/lodash.topairs/-/lodash.topairs-4.3.0.tgz",
       "integrity": "sha512-qrRMbykBSEGdOgQLJJqVSdPWMD7Q+GJJ5jMRfQYb+LTLsw3tYVIabnCzRqTJb2WTo17PG5gNzXuFaZgYH/9SAQ=="
     },
+    "node_modules/lodash.topath": {
+      "version": "4.5.2",
+      "resolved": "https://registry.npmjs.org/lodash.topath/-/lodash.topath-4.5.2.tgz",
+      "integrity": "sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg=="
+    },
+    "node_modules/lodash.uniq": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+      "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ=="
+    },
     "node_modules/lru-cache": {
       "version": "6.0.0",
       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@@ -1202,14 +1601,23 @@
         "node": "*"
       }
     },
-    "node_modules/mz": {
-      "version": "2.7.0",
-      "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
-      "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
-      "dependencies": {
-        "any-promise": "^1.0.0",
-        "object-assign": "^4.0.1",
-        "thenify-all": "^1.0.0"
+    "node_modules/minimist": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+      "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/modern-normalize": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/modern-normalize/-/modern-normalize-1.1.0.tgz",
+      "integrity": "sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA==",
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
     "node_modules/nanoid": {
@@ -1228,6 +1636,14 @@
       "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
       "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
     },
+    "node_modules/node-emoji": {
+      "version": "1.11.0",
+      "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz",
+      "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==",
+      "dependencies": {
+        "lodash": "^4.17.21"
+      }
+    },
     "node_modules/node-releases": {
       "version": "2.0.8",
       "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz",
@@ -1241,18 +1657,19 @@
         "node": ">=0.10.0"
       }
     },
-    "node_modules/object-assign": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+    "node_modules/normalize-range": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+      "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+      "peer": true,
       "engines": {
         "node": ">=0.10.0"
       }
     },
     "node_modules/object-hash": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
-      "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz",
+      "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==",
       "engines": {
         "node": ">= 6"
       }
@@ -1298,6 +1715,34 @@
         "node": ">=6"
       }
     },
+    "node_modules/parent-module": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+      "dependencies": {
+        "callsites": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/parse-json": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+      "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+      "dependencies": {
+        "@babel/code-frame": "^7.0.0",
+        "error-ex": "^1.3.1",
+        "json-parse-even-better-errors": "^2.3.0",
+        "lines-and-columns": "^1.1.6"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
     "node_modules/path-exists": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -1327,6 +1772,14 @@
       "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
       "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
     },
+    "node_modules/path-type": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+      "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
     "node_modules/picocolors": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
@@ -1343,22 +1796,6 @@
         "url": "https://github.com/sponsors/jonschlinkert"
       }
     },
-    "node_modules/pify": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-      "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/pirates": {
-      "version": "4.0.5",
-      "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz",
-      "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==",
-      "engines": {
-        "node": ">= 6"
-      }
-    },
     "node_modules/pkg-dir": {
       "version": "4.2.0",
       "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
@@ -1393,38 +1830,20 @@
         "node": "^10 || ^12 || >=14"
       }
     },
-    "node_modules/postcss-import": {
-      "version": "14.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz",
-      "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==",
-      "dependencies": {
-        "postcss-value-parser": "^4.0.0",
-        "read-cache": "^1.0.0",
-        "resolve": "^1.1.7"
-      },
-      "engines": {
-        "node": ">=10.0.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.0.0"
-      }
-    },
     "node_modules/postcss-js": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz",
-      "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==",
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-3.0.3.tgz",
+      "integrity": "sha512-gWnoWQXKFw65Hk/mi2+WTQTHdPD5UJdDXZmX073EY/B3BWnYjO4F4t0VneTCnCGQ5E5GsCdMkzPaTXwl3r5dJw==",
       "dependencies": {
-        "camelcase-css": "^2.0.1"
+        "camelcase-css": "^2.0.1",
+        "postcss": "^8.1.6"
       },
       "engines": {
-        "node": "^12 || ^14 || >= 16"
+        "node": ">=10.0"
       },
       "funding": {
         "type": "opencollective",
         "url": "https://opencollective.com/postcss/"
-      },
-      "peerDependencies": {
-        "postcss": "^8.3.3"
       }
     },
     "node_modules/postcss-load-config": {
@@ -1511,21 +1930,21 @@
       }
     },
     "node_modules/postcss-nested": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz",
-      "integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==",
+      "version": "5.0.5",
+      "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.5.tgz",
+      "integrity": "sha512-GSRXYz5bccobpTzLQZXOnSOfKl6TwVr5CyAQJUPub4nuRJSOECK5AqurxVgmtxP48p0Kc/ndY/YyS1yqldX0Ew==",
       "dependencies": {
-        "postcss-selector-parser": "^6.0.10"
+        "postcss-selector-parser": "^6.0.4"
       },
       "engines": {
-        "node": ">=12.0"
+        "node": ">=10.0"
       },
       "funding": {
         "type": "opencollective",
         "url": "https://opencollective.com/postcss/"
       },
       "peerDependencies": {
-        "postcss": "^8.2.14"
+        "postcss": "^8.1.13"
       }
     },
     "node_modules/postcss-selector-parser": {
@@ -1545,6 +1964,14 @@
       "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
       "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
     },
+    "node_modules/pretty-hrtime": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
+      "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
     "node_modules/punycode": {
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.2.0.tgz",
@@ -1553,6 +1980,28 @@
         "node": ">=6"
       }
     },
+    "node_modules/purgecss": {
+      "version": "4.1.3",
+      "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-4.1.3.tgz",
+      "integrity": "sha512-99cKy4s+VZoXnPxaoM23e5ABcP851nC2y2GROkkjS8eJaJtlciGavd7iYAw2V84WeBqggZ12l8ef44G99HmTaw==",
+      "dependencies": {
+        "commander": "^8.0.0",
+        "glob": "^7.1.7",
+        "postcss": "^8.3.5",
+        "postcss-selector-parser": "^6.0.6"
+      },
+      "bin": {
+        "purgecss": "bin/purgecss.js"
+      }
+    },
+    "node_modules/purgecss/node_modules/commander": {
+      "version": "8.3.0",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
+      "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
+      "engines": {
+        "node": ">= 12"
+      }
+    },
     "node_modules/queue-microtask": {
       "version": "1.2.3",
       "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -1591,14 +2040,6 @@
         "safe-buffer": "^5.1.0"
       }
     },
-    "node_modules/read-cache": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
-      "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
-      "dependencies": {
-        "pify": "^2.3.0"
-      }
-    },
     "node_modules/readdirp": {
       "version": "3.6.0",
       "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
@@ -1621,6 +2062,20 @@
         "node": ">= 10.13.0"
       }
     },
+    "node_modules/reduce-css-calc": {
+      "version": "2.1.8",
+      "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz",
+      "integrity": "sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==",
+      "dependencies": {
+        "css-unit-converter": "^1.1.1",
+        "postcss-value-parser": "^3.3.0"
+      }
+    },
+    "node_modules/reduce-css-calc/node_modules/postcss-value-parser": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ=="
+    },
     "node_modules/resolve": {
       "version": "1.22.1",
       "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
@@ -1665,6 +2120,20 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/rimraf": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+      "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
     "node_modules/run-parallel": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -1780,6 +2249,19 @@
         "node": ">=8"
       }
     },
+    "node_modules/simple-swizzle": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+      "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
+      "dependencies": {
+        "is-arrayish": "^0.3.1"
+      }
+    },
+    "node_modules/simple-swizzle/node_modules/is-arrayish": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+      "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
+    },
     "node_modules/source-map": {
       "version": "0.6.1",
       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -1831,34 +2313,6 @@
         "webpack": "^5.0.0"
       }
     },
-    "node_modules/sucrase": {
-      "version": "3.31.0",
-      "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.31.0.tgz",
-      "integrity": "sha512-6QsHnkqyVEzYcaiHsOKkzOtOgdJcb8i54x6AV2hDwyZcY9ZyykGZVw6L/YN98xC0evwTP6utsWWrKRaa8QlfEQ==",
-      "dependencies": {
-        "commander": "^4.0.0",
-        "glob": "7.1.6",
-        "lines-and-columns": "^1.1.6",
-        "mz": "^2.7.0",
-        "pirates": "^4.0.1",
-        "ts-interface-checker": "^0.1.9"
-      },
-      "bin": {
-        "sucrase": "bin/sucrase",
-        "sucrase-node": "bin/sucrase-node"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/sucrase/node_modules/commander": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
-      "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
-      "engines": {
-        "node": ">= 6"
-      }
-    },
     "node_modules/supports-color": {
       "version": "8.1.1",
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
@@ -1885,34 +2339,41 @@
       }
     },
     "node_modules/tailwindcss": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.1.tgz",
-      "integrity": "sha512-Vkiouc41d4CEq0ujXl6oiGFQ7bA3WEhUZdTgXAhtKxSy49OmKs8rEfQmupsfF0IGW8fv2iQkp1EVUuapCFrZ9g==",
-      "dependencies": {
-        "arg": "^5.0.2",
-        "chokidar": "^3.5.3",
-        "color-name": "^1.1.4",
-        "didyoumean": "^1.2.2",
+      "version": "2.2.2",
+      "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-2.2.2.tgz",
+      "integrity": "sha512-OzFWhlnfrO3JXZKHQiqZcb0Wwl3oJSmQ7PvT2jdIgCjV5iUoAyql9bb9ZLCSBI5TYXmawujXAoNxXVfP5Auy/Q==",
+      "dependencies": {
+        "@fullhuman/postcss-purgecss": "^4.0.3",
+        "arg": "^5.0.0",
+        "bytes": "^3.0.0",
+        "chalk": "^4.1.1",
+        "chokidar": "^3.5.1",
+        "color": "^3.1.3",
+        "cosmiconfig": "^7.0.0",
+        "detective": "^5.2.0",
+        "didyoumean": "^1.2.1",
         "dlv": "^1.1.3",
-        "fast-glob": "^3.2.12",
-        "glob-parent": "^6.0.2",
-        "is-glob": "^4.0.3",
-        "jiti": "^1.17.2",
-        "lilconfig": "^2.0.6",
-        "micromatch": "^4.0.5",
+        "fast-glob": "^3.2.5",
+        "fs-extra": "^10.0.0",
+        "glob-parent": "^6.0.0",
+        "html-tags": "^3.1.0",
+        "is-glob": "^4.0.1",
+        "lodash": "^4.17.21",
+        "lodash.topath": "^4.5.2",
+        "modern-normalize": "^1.1.0",
+        "node-emoji": "^1.8.1",
         "normalize-path": "^3.0.0",
-        "object-hash": "^3.0.0",
-        "picocolors": "^1.0.0",
-        "postcss": "^8.0.9",
-        "postcss-import": "^14.1.0",
-        "postcss-js": "^4.0.0",
-        "postcss-load-config": "^3.1.4",
-        "postcss-nested": "6.0.0",
-        "postcss-selector-parser": "^6.0.11",
-        "postcss-value-parser": "^4.2.0",
+        "object-hash": "^2.2.0",
+        "postcss-js": "^3.0.3",
+        "postcss-load-config": "^3.0.1",
+        "postcss-nested": "5.0.5",
+        "postcss-selector-parser": "^6.0.6",
+        "postcss-value-parser": "^4.1.0",
+        "pretty-hrtime": "^1.0.3",
         "quick-lru": "^5.1.1",
-        "resolve": "^1.22.1",
-        "sucrase": "^3.29.0"
+        "reduce-css-calc": "^2.1.8",
+        "resolve": "^1.20.0",
+        "tmp": "^0.2.1"
       },
       "bin": {
         "tailwind": "lib/cli.js",
@@ -1922,6 +2383,7 @@
         "node": ">=12.13.0"
       },
       "peerDependencies": {
+        "autoprefixer": "^10.0.2",
         "postcss": "^8.0.9"
       }
     },
@@ -1994,23 +2456,15 @@
         "node": ">=0.4.0"
       }
     },
-    "node_modules/thenify": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
-      "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
+    "node_modules/tmp": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
+      "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
       "dependencies": {
-        "any-promise": "^1.0.0"
-      }
-    },
-    "node_modules/thenify-all": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
-      "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
-      "dependencies": {
-        "thenify": ">= 3.1.0 < 4"
+        "rimraf": "^3.0.0"
       },
       "engines": {
-        "node": ">=0.8"
+        "node": ">=8.17.0"
       }
     },
     "node_modules/to-regex-range": {
@@ -2024,10 +2478,13 @@
         "node": ">=8.0"
       }
     },
-    "node_modules/ts-interface-checker": {
-      "version": "0.1.13",
-      "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
-      "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="
+    "node_modules/universalify": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+      "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+      "engines": {
+        "node": ">= 10.0.0"
+      }
     },
     "node_modules/update-browserslist-db": {
       "version": "1.0.10",
@@ -2254,6 +2711,14 @@
       "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
       "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
     },
+    "node_modules/xtend": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+      "engines": {
+        "node": ">=0.4"
+      }
+    },
     "node_modules/yallist": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
diff --git a/package.json b/package.json
index 9ccce29..a372dd6 100644
--- a/package.json
+++ b/package.json
@@ -4,14 +4,14 @@
   "description": "",
   "private": true,
   "dependencies": {
-    "@tailwindcss/typography": "^0.5.9",
+    "@tailwindcss/typography": "^0.4.1",
     "alertifyjs": "^1.13.1",
     "css-loader": "^6.7.3",
     "jquery": "^3.6.4",
     "js-cookie": "^3.0.1",
     "select2": "^4.1.0-rc.0",
     "style-loader": "^3.3.2",
-    "tailwindcss": "^3.3.1",
+    "tailwindcss": "^2.2.2",
     "webpack": "^5.77.0",
     "webpack-bundle-tracker": "^1.8.1",
     "webpack-cli": "^5.0.1"
diff --git a/requirements/base.txt b/requirements/base.txt
index fe6b002..287bf10 100644
--- a/requirements/base.txt
+++ b/requirements/base.txt
@@ -4,6 +4,5 @@ django-environ==0.9.0
 django-webpack-loader==1.8.0
 django-http-exceptions==1.4.0
 gql[requests]==3.4.0
-nodeenv==1.7.0
 psycopg2-binary==2.9.5
 requests==2.28.2
diff --git a/rybicka/settings/base.py b/rybicka/settings/base.py
index f27cfaf..ba1cefd 100644
--- a/rybicka/settings/base.py
+++ b/rybicka/settings/base.py
@@ -54,6 +54,7 @@ INSTALLED_APPS = [
     "rv_voting_calc",
     "mail_signature",
     "instagram_token",
+    "asset_server_resize",
 ]
 
 MIDDLEWARE = [
diff --git a/rybicka/urls.py b/rybicka/urls.py
index 85428a7..55d8d71 100644
--- a/rybicka/urls.py
+++ b/rybicka/urls.py
@@ -20,5 +20,6 @@ urlpatterns = [
     path("hlasovani-rv/", include("rv_voting_calc.urls")),
     path("emailove-podpisy/", include("mail_signature.urls")),
     path("instagram/", include("instagram_token.urls")),
+    path("asset-server/", include("asset_server_resize.urls")),
     path("", include("shared.urls")),
 ]
diff --git a/shared/static/shared/image.webp b/shared/static/shared/image.webp
new file mode 100644
index 0000000000000000000000000000000000000000..62a9c7433a220288ee6fd07caaada27693e49e87
GIT binary patch
literal 22906
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
ABme*a

literal 0
HcmV?d00001

diff --git a/shared/templates/shared/base.html b/shared/templates/shared/base.html
index 5026bba..47bb0c8 100644
--- a/shared/templates/shared/base.html
+++ b/shared/templates/shared/base.html
@@ -64,7 +64,7 @@
                 </ui-navbar>
             </ui-app>
         </nav>
-        <div class="container container--default py-8 lg:py-24 {% if page.root_page.narrow_layout %}max-w-screen-lg{% endif%}">
+        <div class="container container--default py-8 lg:py-24">
             {% block content %}{% endblock %}
         </div>
         <footer class="footer bg-grey-700 text-white __js-root hidden lg:block">
diff --git a/shared/templates/shared/index.html b/shared/templates/shared/index.html
index 2a62c24..721aebe 100644
--- a/shared/templates/shared/index.html
+++ b/shared/templates/shared/index.html
@@ -97,6 +97,26 @@
                         </div>
                     </div>
                 </li>
+
+                <li class="card">
+                    <a href="{% url "asset_server_resize:index" %}">
+                        <img
+                            src="{% static "shared/calculator.webp" %}"
+                            alt="Kalkulačka velikosti skupiny členů"
+                            class="w-full h-48 object-cover"
+                        >
+                    </a>
+                    <div class="p-4">
+                        <h2 class="mb-2 text-xl font-bold">
+                            <a href="{% url "asset_server_resize:index" %}">
+                                Generátor škálovaných odkazů na obrázky v Asset Serveru
+                            </a>
+                        </h2>
+                        <div class="font-light text-sm break-words">
+                            Vyplněním získáš odkaz na zmenšený obrázek z asset serveru, který se dá použít pro embedování.
+                        </div>
+                    </div>
+                </li>
             </ul>
         </section>
 
diff --git a/static_src/asset_server_resize.js b/static_src/asset_server_resize.js
new file mode 100644
index 0000000..275bb40
--- /dev/null
+++ b/static_src/asset_server_resize.js
@@ -0,0 +1,43 @@
+import $ from "jquery";
+
+$(window).ready(
+    () => {
+        $("#generate-url").on(
+            "click",
+            event => {
+                event.preventDefault();
+
+                const form = $("#asset-info-form")[0];
+                
+                if (!form.checkValidity()) {
+                    form.reportValidity();
+                    return;
+                }
+
+                let width = $("#width").val();
+                let height = $("#height").val();
+
+                if (width === "" && height === "") {
+                    alert("Prosím, vyplň aspoň jeden rozměr.");
+                    return;
+                }
+
+                let path = $("#path").val();
+
+                if (!path.startsWith("/")) {
+                    path = `/${path}`;
+                }
+
+                if (width === "") { width = "-" }
+                if (height === "") { height = "-" }
+
+                const url = `https://a.pirati.cz/resize/${width}x${height}${path}`;
+
+                $("#result").attr("href", url);
+                $("#result").html(url);
+
+                $("#result-wrapper").removeClass("hidden");
+            }
+        );
+    }
+)
diff --git a/webpack.config.js b/webpack.config.js
index c67bb03..64386cc 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -21,6 +21,10 @@ module.exports = {
       import: path.resolve("static_src", "mail_signature.js"),
       dependOn: "shared",
     },
+    asset_server_resize: {
+      import: path.resolve("static_src", "asset_server_resize.js"),
+      dependOn: "shared",
+    },
     shared: ["jquery"],
   },
   output: {
-- 
GitLab