From f08043a5f3b75659365cbfee1a3e3afb2541d846 Mon Sep 17 00:00:00 2001 From: Kamil Kuzminski Date: Fri, 6 Mar 2026 13:15:07 +0100 Subject: [PATCH 01/28] Prepare for Contao 5.7 --- .github/workflows/ci.yml | 11 + .gitignore | 1 - composer.json | 25 +- {src/Resources/config => config}/listener.yml | 0 {src/Resources/config => config}/services.yml | 0 .../contao => contao}/config/config.php | 0 .../contao => contao}/dca/tl_cfg_tag.php | 0 .../languages/de/default.php | 0 .../languages/de/modules.php | 0 .../languages/de/tl_cfg_tag.php | 0 .../languages/en/default.php | 0 .../languages/en/modules.php | 0 .../languages/en/tl_cfg_tag.php | 0 .../templates/be_cfg_tags_widget.html5 | 0 ecs.php | 16 - gulpfile.js | 33 - package.json | 37 +- {src/Resources/public => public}/backend.css | 0 {src/Resources/public => public}/backend.js | 0 .../public => public}/backend.min.css | 0 .../public => public}/backend.min.js | 0 .../Resources/public => public}/jquery-ui.css | 0 {src/Resources/public => public}/jquery-ui.js | 0 .../public => public}/jquery-ui.min.css | 0 .../public => public}/jquery-ui.min.js | 0 .../Resources/public => public}/selectize.css | 0 {src/Resources/public => public}/selectize.js | 0 .../public => public}/selectize.min.css | 0 .../public => public}/selectize.min.js | 0 {src/Resources/public => public}/widget.js | 0 .../Resources/public => public}/widget.min.js | 0 src/CodefogTagsBundle.php | 6 + webpack.config.js | 9 + yarn.lock | 6453 +++++++++++++++++ 34 files changed, 6507 insertions(+), 84 deletions(-) create mode 100644 .github/workflows/ci.yml rename {src/Resources/config => config}/listener.yml (100%) rename {src/Resources/config => config}/services.yml (100%) rename {src/Resources/contao => contao}/config/config.php (100%) rename {src/Resources/contao => contao}/dca/tl_cfg_tag.php (100%) rename {src/Resources/contao => contao}/languages/de/default.php (100%) rename {src/Resources/contao => contao}/languages/de/modules.php (100%) rename {src/Resources/contao => contao}/languages/de/tl_cfg_tag.php (100%) rename {src/Resources/contao => contao}/languages/en/default.php (100%) rename {src/Resources/contao => contao}/languages/en/modules.php (100%) rename {src/Resources/contao => contao}/languages/en/tl_cfg_tag.php (100%) rename {src/Resources/contao => contao}/templates/be_cfg_tags_widget.html5 (100%) delete mode 100644 ecs.php delete mode 100644 gulpfile.js rename {src/Resources/public => public}/backend.css (100%) rename {src/Resources/public => public}/backend.js (100%) rename {src/Resources/public => public}/backend.min.css (100%) rename {src/Resources/public => public}/backend.min.js (100%) rename {src/Resources/public => public}/jquery-ui.css (100%) rename {src/Resources/public => public}/jquery-ui.js (100%) rename {src/Resources/public => public}/jquery-ui.min.css (100%) rename {src/Resources/public => public}/jquery-ui.min.js (100%) rename {src/Resources/public => public}/selectize.css (100%) rename {src/Resources/public => public}/selectize.js (100%) rename {src/Resources/public => public}/selectize.min.css (100%) rename {src/Resources/public => public}/selectize.min.js (100%) rename {src/Resources/public => public}/widget.js (100%) rename {src/Resources/public => public}/widget.min.js (100%) create mode 100644 webpack.config.js create mode 100644 yarn.lock diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..ce7790d --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,11 @@ +name: CI + +on: + push: ~ + pull_request: ~ + +permissions: read-all + +jobs: + ci: + uses: 'terminal42/contao-build-tools/.github/workflows/build-tools.yml@main' diff --git a/.gitignore b/.gitignore index cd36e15..61a9d7e 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,3 @@ /build /node_modules /vendor -/yarn.lock diff --git a/composer.json b/composer.json index 883897d..6ab0fdd 100644 --- a/composer.json +++ b/composer.json @@ -11,19 +11,17 @@ } ], "require": { - "php": "^8.0", - "ext-pdo": "*", - "contao/core-bundle": "^4.13 || ^5.0", - "codefog/contao-haste": "^5.0", - "doctrine/dbal": "^2.12 || ^3.0", - "symfony/config": "^5.4 || ^6.4 || ^7.0" + "php": "^8.3", + "contao/core-bundle": "^5.7", + "codefog/contao-haste": "^5.4", + "doctrine/dbal": "^3.7 || ^4.3", + "symfony/config": "^7.4 || ^8.0" }, "require-dev": { "contao/manager-plugin": "^2.0", - "contao/easy-coding-standard": "^5.3", - "phpunit/phpunit": "^7.0 || ^9.3", - "contao/test-case": "^4.13", - "php-coveralls/php-coveralls": "^2.2" + "contao/test-case": "^5.7", + "php-coveralls/php-coveralls": "^2.9", + "terminal42/contao-build-tools": "dev-main" }, "conflict": { "contao/manager-plugin": "<2.0 || >=3.0" @@ -43,10 +41,9 @@ }, "config": { "allow-plugins": { - "dealerdirect/phpcodesniffer-composer-installer": true + "dealerdirect/phpcodesniffer-composer-installer": true, + "php-http/discovery": true, + "terminal42/contao-build-tools": true } - }, - "scripts": { - "cs-fixer": "vendor/bin/ecs check src tests --fix --ansi" } } diff --git a/src/Resources/config/listener.yml b/config/listener.yml similarity index 100% rename from src/Resources/config/listener.yml rename to config/listener.yml diff --git a/src/Resources/config/services.yml b/config/services.yml similarity index 100% rename from src/Resources/config/services.yml rename to config/services.yml diff --git a/src/Resources/contao/config/config.php b/contao/config/config.php similarity index 100% rename from src/Resources/contao/config/config.php rename to contao/config/config.php diff --git a/src/Resources/contao/dca/tl_cfg_tag.php b/contao/dca/tl_cfg_tag.php similarity index 100% rename from src/Resources/contao/dca/tl_cfg_tag.php rename to contao/dca/tl_cfg_tag.php diff --git a/src/Resources/contao/languages/de/default.php b/contao/languages/de/default.php similarity index 100% rename from src/Resources/contao/languages/de/default.php rename to contao/languages/de/default.php diff --git a/src/Resources/contao/languages/de/modules.php b/contao/languages/de/modules.php similarity index 100% rename from src/Resources/contao/languages/de/modules.php rename to contao/languages/de/modules.php diff --git a/src/Resources/contao/languages/de/tl_cfg_tag.php b/contao/languages/de/tl_cfg_tag.php similarity index 100% rename from src/Resources/contao/languages/de/tl_cfg_tag.php rename to contao/languages/de/tl_cfg_tag.php diff --git a/src/Resources/contao/languages/en/default.php b/contao/languages/en/default.php similarity index 100% rename from src/Resources/contao/languages/en/default.php rename to contao/languages/en/default.php diff --git a/src/Resources/contao/languages/en/modules.php b/contao/languages/en/modules.php similarity index 100% rename from src/Resources/contao/languages/en/modules.php rename to contao/languages/en/modules.php diff --git a/src/Resources/contao/languages/en/tl_cfg_tag.php b/contao/languages/en/tl_cfg_tag.php similarity index 100% rename from src/Resources/contao/languages/en/tl_cfg_tag.php rename to contao/languages/en/tl_cfg_tag.php diff --git a/src/Resources/contao/templates/be_cfg_tags_widget.html5 b/contao/templates/be_cfg_tags_widget.html5 similarity index 100% rename from src/Resources/contao/templates/be_cfg_tags_widget.html5 rename to contao/templates/be_cfg_tags_widget.html5 diff --git a/ecs.php b/ecs.php deleted file mode 100644 index 8af1a0f..0000000 --- a/ecs.php +++ /dev/null @@ -1,16 +0,0 @@ -import(__DIR__.'/tools/ecs/vendor/contao/easy-coding-standard/config/self.php'); - - $parameters = $containerConfigurator->parameters(); - $parameters->set(Option::SKIP, [ - HeaderCommentFixer::class => null, - ]); -}; diff --git a/gulpfile.js b/gulpfile.js deleted file mode 100644 index a464488..0000000 --- a/gulpfile.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -const gulp = require('gulp'); -const uglify = require('gulp-uglify'); -const rename = require('gulp-rename'); -const cleanCSS = require('gulp-clean-css'); -const pjson = require('./package.json'); -const config = pjson.config || {}; - -gulp.task('scripts', function () { - return gulp.src(config.scripts) - .pipe(uglify()) - .pipe(rename(function(path) { - path.extname = '.min' + path.extname; - })) - .pipe(gulp.dest(config.targetFolder)); -}); - -gulp.task('styles', function () { - return gulp.src(config.styles) - .pipe(cleanCSS({restructuring: false})) - .pipe(rename(function(path) { - path.extname = '.min' + path.extname; - })) - .pipe(gulp.dest(config.targetFolder)); -}); - -gulp.task('vendors', function () { - return gulp.src(config.vendors) - .pipe(gulp.dest(config.targetFolder)); -}); - -gulp.task('default', gulp.series('vendors', gulp.parallel('scripts', 'styles'))); diff --git a/package.json b/package.json index c062c49..d9fca12 100644 --- a/package.json +++ b/package.json @@ -1,25 +1,22 @@ { - "config": { - "targetFolder": "src/Resources/public", - "styles": [ - "src/Resources/public/backend.css", - "src/Resources/public/selectize.css" - ], - "scripts": [ - "src/Resources/public/backend.js", - "src/Resources/public/widget.js" - ], - "vendors": [ - "node_modules/selectize/dist/css/selectize.css", - "node_modules/selectize/dist/js/standalone/selectize.js", - "node_modules/selectize/dist/js/standalone/selectize.min.js" - ] + "name": "@terminal42/contao-dcawizard", + "description": "DCAWizard for Contao Open Source CMS", + "author": "terminal42 gmbh ", + "license": "LGPL-3.0-or-later", + "scripts": { + "dev-server": "encore dev-server", + "dev": "encore dev", + "watch": "encore dev --watch", + "build": "encore production --progress" }, + "devDependencies": { + "@terminal42/contao-build-tools": "./vendor/terminal42/contao-build-tools/webpack" + }, + "browserslist": [ + "defaults" + ], + "packageManager": "yarn@1.22.22+sha1.ac34549e6aa8e7ead463a7407e1c7390f61a6610", "dependencies": { - "gulp": "^4.0.2", - "gulp-clean-css": "^3.0.3", - "gulp-rename": "^1.2.2", - "gulp-uglify": "^2.1.0", - "selectize": "^0.12.4" + "@hotwired/stimulus": "^3.2.2" } } diff --git a/src/Resources/public/backend.css b/public/backend.css similarity index 100% rename from src/Resources/public/backend.css rename to public/backend.css diff --git a/src/Resources/public/backend.js b/public/backend.js similarity index 100% rename from src/Resources/public/backend.js rename to public/backend.js diff --git a/src/Resources/public/backend.min.css b/public/backend.min.css similarity index 100% rename from src/Resources/public/backend.min.css rename to public/backend.min.css diff --git a/src/Resources/public/backend.min.js b/public/backend.min.js similarity index 100% rename from src/Resources/public/backend.min.js rename to public/backend.min.js diff --git a/src/Resources/public/jquery-ui.css b/public/jquery-ui.css similarity index 100% rename from src/Resources/public/jquery-ui.css rename to public/jquery-ui.css diff --git a/src/Resources/public/jquery-ui.js b/public/jquery-ui.js similarity index 100% rename from src/Resources/public/jquery-ui.js rename to public/jquery-ui.js diff --git a/src/Resources/public/jquery-ui.min.css b/public/jquery-ui.min.css similarity index 100% rename from src/Resources/public/jquery-ui.min.css rename to public/jquery-ui.min.css diff --git a/src/Resources/public/jquery-ui.min.js b/public/jquery-ui.min.js similarity index 100% rename from src/Resources/public/jquery-ui.min.js rename to public/jquery-ui.min.js diff --git a/src/Resources/public/selectize.css b/public/selectize.css similarity index 100% rename from src/Resources/public/selectize.css rename to public/selectize.css diff --git a/src/Resources/public/selectize.js b/public/selectize.js similarity index 100% rename from src/Resources/public/selectize.js rename to public/selectize.js diff --git a/src/Resources/public/selectize.min.css b/public/selectize.min.css similarity index 100% rename from src/Resources/public/selectize.min.css rename to public/selectize.min.css diff --git a/src/Resources/public/selectize.min.js b/public/selectize.min.js similarity index 100% rename from src/Resources/public/selectize.min.js rename to public/selectize.min.js diff --git a/src/Resources/public/widget.js b/public/widget.js similarity index 100% rename from src/Resources/public/widget.js rename to public/widget.js diff --git a/src/Resources/public/widget.min.js b/public/widget.min.js similarity index 100% rename from src/Resources/public/widget.min.js rename to public/widget.min.js diff --git a/src/CodefogTagsBundle.php b/src/CodefogTagsBundle.php index d09ae8f..6f82ec6 100644 --- a/src/CodefogTagsBundle.php +++ b/src/CodefogTagsBundle.php @@ -18,6 +18,12 @@ class CodefogTagsBundle extends Bundle { + #[\Override] + public function getPath(): string + { + return \dirname(__DIR__); + } + /** * {@inheritdoc} */ diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..6795330 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,9 @@ +const Encore = require('@terminal42/contao-build-tools'); + +module.exports = Encore() + .setOutputPath('public/') + .setPublicPath('/bundles/codefogtags') + .addEntry('dcawizard', './assets/dcawizard.js') + .getWebpackConfig() +; +o diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..cbec42b --- /dev/null +++ b/yarn.lock @@ -0,0 +1,6453 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.28.6", "@babel/code-frame@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.0.tgz#7cd7a59f15b3cc0dcd803038f7792712a7d0b15c" + integrity sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw== + dependencies: + "@babel/helper-validator-identifier" "^7.28.5" + js-tokens "^4.0.0" + picocolors "^1.1.1" + +"@babel/compat-data@^7.28.6", "@babel/compat-data@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.0.tgz#00d03e8c0ac24dd9be942c5370990cbe1f17d88d" + integrity sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg== + +"@babel/core@^7.24.9": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.0.tgz#5286ad785df7f79d656e88ce86e650d16ca5f322" + integrity sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA== + dependencies: + "@babel/code-frame" "^7.29.0" + "@babel/generator" "^7.29.0" + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-module-transforms" "^7.28.6" + "@babel/helpers" "^7.28.6" + "@babel/parser" "^7.29.0" + "@babel/template" "^7.28.6" + "@babel/traverse" "^7.29.0" + "@babel/types" "^7.29.0" + "@jridgewell/remapping" "^2.3.5" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.29.0": + version "7.29.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.1.tgz#d09876290111abbb00ef962a7b83a5307fba0d50" + integrity sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw== + dependencies: + "@babel/parser" "^7.29.0" + "@babel/types" "^7.29.0" + "@jridgewell/gen-mapping" "^0.3.12" + "@jridgewell/trace-mapping" "^0.3.28" + jsesc "^3.0.2" + +"@babel/helper-annotate-as-pure@^7.27.1", "@babel/helper-annotate-as-pure@^7.27.3": + version "7.27.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz#f31fd86b915fc4daf1f3ac6976c59be7084ed9c5" + integrity sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg== + dependencies: + "@babel/types" "^7.27.3" + +"@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz#32c4a3f41f12ed1532179b108a4d746e105c2b25" + integrity sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA== + dependencies: + "@babel/compat-data" "^7.28.6" + "@babel/helper-validator-option" "^7.27.1" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz#611ff5482da9ef0db6291bcd24303400bca170fb" + integrity sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.3" + "@babel/helper-member-expression-to-functions" "^7.28.5" + "@babel/helper-optimise-call-expression" "^7.27.1" + "@babel/helper-replace-supers" "^7.28.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/traverse" "^7.28.6" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.27.1", "@babel/helper-create-regexp-features-plugin@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz#7c1ddd64b2065c7f78034b25b43346a7e19ed997" + integrity sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.3" + regexpu-core "^6.3.1" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.6.6": + version "0.6.6" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.6.tgz#714dfe33d8bd710f556df59953720f6eeb6c1a14" + integrity sha512-mOAsxeeKkUKayvZR3HeTYD/fICpCPLJrU5ZjelT/PA6WHtNDBOE436YiaEUvHN454bRM3CebhDsIpieCc4texA== + dependencies: + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + debug "^4.4.3" + lodash.debounce "^4.0.8" + resolve "^1.22.11" + +"@babel/helper-globals@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" + integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== + +"@babel/helper-member-expression-to-functions@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz#f3e07a10be37ed7a63461c63e6929575945a6150" + integrity sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg== + dependencies: + "@babel/traverse" "^7.28.5" + "@babel/types" "^7.28.5" + +"@babel/helper-module-imports@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz#60632cbd6ffb70b22823187201116762a03e2d5c" + integrity sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw== + dependencies: + "@babel/traverse" "^7.28.6" + "@babel/types" "^7.28.6" + +"@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz#9312d9d9e56edc35aeb6e95c25d4106b50b9eb1e" + integrity sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA== + dependencies: + "@babel/helper-module-imports" "^7.28.6" + "@babel/helper-validator-identifier" "^7.28.5" + "@babel/traverse" "^7.28.6" + +"@babel/helper-optimise-call-expression@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz#c65221b61a643f3e62705e5dd2b5f115e35f9200" + integrity sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw== + dependencies: + "@babel/types" "^7.27.1" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz#6f13ea251b68c8532e985fd532f28741a8af9ac8" + integrity sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug== + +"@babel/helper-remap-async-to-generator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz#4601d5c7ce2eb2aea58328d43725523fcd362ce6" + integrity sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-wrap-function" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/helper-replace-supers@^7.27.1", "@babel/helper-replace-supers@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz#94aa9a1d7423a00aead3f204f78834ce7d53fe44" + integrity sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.28.5" + "@babel/helper-optimise-call-expression" "^7.27.1" + "@babel/traverse" "^7.28.6" + +"@babel/helper-skip-transparent-expression-wrappers@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz#62bb91b3abba8c7f1fec0252d9dbea11b3ee7a56" + integrity sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== + +"@babel/helper-validator-identifier@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" + integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== + +"@babel/helper-validator-option@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" + integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== + +"@babel/helper-wrap-function@^7.27.1": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz#4e349ff9222dab69a93a019cc296cdd8442e279a" + integrity sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ== + dependencies: + "@babel/template" "^7.28.6" + "@babel/traverse" "^7.28.6" + "@babel/types" "^7.28.6" + +"@babel/helpers@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.28.6.tgz#fca903a313ae675617936e8998b814c415cbf5d7" + integrity sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw== + dependencies: + "@babel/template" "^7.28.6" + "@babel/types" "^7.28.6" + +"@babel/parser@^7.28.6", "@babel/parser@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.0.tgz#669ef345add7d057e92b7ed15f0bac07611831b6" + integrity sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww== + dependencies: + "@babel/types" "^7.29.0" + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz#fbde57974707bbfa0376d34d425ff4fa6c732421" + integrity sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.28.5" + +"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz#43f70a6d7efd52370eefbdf55ae03d91b293856d" + integrity sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz#beb623bd573b8b6f3047bd04c32506adc3e58a72" + integrity sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz#e134a5479eb2ba9c02714e8c1ebf1ec9076124fd" + integrity sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/plugin-transform-optional-chaining" "^7.27.1" + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz#0e8289cec28baaf05d54fd08d81ae3676065f69f" + integrity sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g== + dependencies: + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/traverse" "^7.28.6" + +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== + +"@babel/plugin-syntax-import-assertions@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz#ae9bc1923a6ba527b70104dd2191b0cd872c8507" + integrity sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw== + dependencies: + "@babel/helper-plugin-utils" "^7.28.6" + +"@babel/plugin-syntax-import-attributes@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz#b71d5914665f60124e133696f17cd7669062c503" + integrity sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw== + dependencies: + "@babel/helper-plugin-utils" "^7.28.6" + +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz#6e2061067ba3ab0266d834a9f94811196f2aba9a" + integrity sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-async-generator-functions@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz#63ed829820298f0bf143d5a4a68fb8c06ffd742f" + integrity sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w== + dependencies: + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-remap-async-to-generator" "^7.27.1" + "@babel/traverse" "^7.29.0" + +"@babel/plugin-transform-async-to-generator@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz#bd97b42237b2d1bc90d74bcb486c39be5b4d7e77" + integrity sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g== + dependencies: + "@babel/helper-module-imports" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-remap-async-to-generator" "^7.27.1" + +"@babel/plugin-transform-block-scoped-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz#558a9d6e24cf72802dd3b62a4b51e0d62c0f57f9" + integrity sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-block-scoping@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz#e1ef5633448c24e76346125c2534eeb359699a99" + integrity sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw== + dependencies: + "@babel/helper-plugin-utils" "^7.28.6" + +"@babel/plugin-transform-class-properties@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz#d274a4478b6e782d9ea987fda09bdb6d28d66b72" + integrity sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + +"@babel/plugin-transform-class-static-block@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz#1257491e8259c6d125ac4d9a6f39f9d2bf3dba70" + integrity sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + +"@babel/plugin-transform-classes@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz#8f6fb79ba3703978e701ce2a97e373aae7dda4b7" + integrity sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.3" + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-globals" "^7.28.0" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-replace-supers" "^7.28.6" + "@babel/traverse" "^7.28.6" + +"@babel/plugin-transform-computed-properties@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz#936824fc71c26cb5c433485776d79c8e7b0202d2" + integrity sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ== + dependencies: + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/template" "^7.28.6" + +"@babel/plugin-transform-destructuring@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz#b8402764df96179a2070bb7b501a1586cf8ad7a7" + integrity sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.28.5" + +"@babel/plugin-transform-dotall-regex@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz#def31ed84e0fb6e25c71e53c124e7b76a4ab8e61" + integrity sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" + +"@babel/plugin-transform-duplicate-keys@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz#f1fbf628ece18e12e7b32b175940e68358f546d1" + integrity sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz#8014b8a6cfd0e7b92762724443bf0d2400f26df1" + integrity sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" + +"@babel/plugin-transform-dynamic-import@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz#4c78f35552ac0e06aa1f6e3c573d67695e8af5a4" + integrity sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-explicit-resource-management@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz#dd6788f982c8b77e86779d1d029591e39d9d8be7" + integrity sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg== + dependencies: + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/plugin-transform-destructuring" "^7.28.5" + +"@babel/plugin-transform-exponentiation-operator@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz#5e477eb7eafaf2ab5537a04aaafcf37e2d7f1091" + integrity sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw== + dependencies: + "@babel/helper-plugin-utils" "^7.28.6" + +"@babel/plugin-transform-export-namespace-from@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz#71ca69d3471edd6daa711cf4dfc3400415df9c23" + integrity sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-for-of@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz#bc24f7080e9ff721b63a70ac7b2564ca15b6c40a" + integrity sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + +"@babel/plugin-transform-function-name@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz#4d0bf307720e4dce6d7c30fcb1fd6ca77bdeb3a7" + integrity sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ== + dependencies: + "@babel/helper-compilation-targets" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/plugin-transform-json-strings@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz#4c8c15b2dc49e285d110a4cf3dac52fd2dfc3038" + integrity sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw== + dependencies: + "@babel/helper-plugin-utils" "^7.28.6" + +"@babel/plugin-transform-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz#baaefa4d10a1d4206f9dcdda50d7d5827bb70b24" + integrity sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-logical-assignment-operators@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz#53028a3d77e33c50ef30a8fce5ca17065936e605" + integrity sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A== + dependencies: + "@babel/helper-plugin-utils" "^7.28.6" + +"@babel/plugin-transform-member-expression-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz#37b88ba594d852418e99536f5612f795f23aeaf9" + integrity sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-modules-amd@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz#a4145f9d87c2291fe2d05f994b65dba4e3e7196f" + integrity sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA== + dependencies: + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-modules-commonjs@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz#c0232e0dfe66a734cc4ad0d5e75fc3321b6fdef1" + integrity sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA== + dependencies: + "@babel/helper-module-transforms" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + +"@babel/plugin-transform-modules-systemjs@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz#e458a95a17807c415924106a3ff188a3b8dee964" + integrity sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ== + dependencies: + "@babel/helper-module-transforms" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-validator-identifier" "^7.28.5" + "@babel/traverse" "^7.29.0" + +"@babel/plugin-transform-modules-umd@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz#63f2cf4f6dc15debc12f694e44714863d34cd334" + integrity sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w== + dependencies: + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz#a26cd51e09c4718588fc4cce1c5d1c0152102d6a" + integrity sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" + +"@babel/plugin-transform-new-target@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz#259c43939728cad1706ac17351b7e6a7bea1abeb" + integrity sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-nullish-coalescing-operator@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz#9bc62096e90ab7a887f3ca9c469f6adec5679757" + integrity sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg== + dependencies: + "@babel/helper-plugin-utils" "^7.28.6" + +"@babel/plugin-transform-numeric-separator@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz#1310b0292762e7a4a335df5f580c3320ee7d9e9f" + integrity sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w== + dependencies: + "@babel/helper-plugin-utils" "^7.28.6" + +"@babel/plugin-transform-object-rest-spread@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz#fdd4bc2d72480db6ca42aed5c051f148d7b067f7" + integrity sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA== + dependencies: + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/plugin-transform-destructuring" "^7.28.5" + "@babel/plugin-transform-parameters" "^7.27.7" + "@babel/traverse" "^7.28.6" + +"@babel/plugin-transform-object-super@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz#1c932cd27bf3874c43a5cac4f43ebf970c9871b5" + integrity sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" + +"@babel/plugin-transform-optional-catch-binding@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz#75107be14c78385978201a49c86414a150a20b4c" + integrity sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ== + dependencies: + "@babel/helper-plugin-utils" "^7.28.6" + +"@babel/plugin-transform-optional-chaining@^7.27.1", "@babel/plugin-transform-optional-chaining@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz#926cf150bd421fc8362753e911b4a1b1ce4356cd" + integrity sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w== + dependencies: + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + +"@babel/plugin-transform-parameters@^7.27.7": + version "7.27.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz#1fd2febb7c74e7d21cf3b05f7aebc907940af53a" + integrity sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-private-methods@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz#c76fbfef3b86c775db7f7c106fff544610bdb411" + integrity sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + +"@babel/plugin-transform-private-property-in-object@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz#4fafef1e13129d79f1d75ac180c52aafefdb2811" + integrity sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.3" + "@babel/helper-create-class-features-plugin" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + +"@babel/plugin-transform-property-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz#07eafd618800591e88073a0af1b940d9a42c6424" + integrity sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-regenerator@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz#dec237cec1b93330876d6da9992c4abd42c9d18b" + integrity sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog== + dependencies: + "@babel/helper-plugin-utils" "^7.28.6" + +"@babel/plugin-transform-regexp-modifiers@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz#7ef0163bd8b4a610481b2509c58cf217f065290b" + integrity sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" + +"@babel/plugin-transform-reserved-words@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz#40fba4878ccbd1c56605a4479a3a891ac0274bb4" + integrity sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-shorthand-properties@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz#532abdacdec87bfee1e0ef8e2fcdee543fe32b90" + integrity sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-spread@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz#40a2b423f6db7b70f043ad027a58bcb44a9757b6" + integrity sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA== + dependencies: + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + +"@babel/plugin-transform-sticky-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz#18984935d9d2296843a491d78a014939f7dcd280" + integrity sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-template-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz#1a0eb35d8bb3e6efc06c9fd40eb0bcef548328b8" + integrity sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-typeof-symbol@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz#70e966bb492e03509cf37eafa6dcc3051f844369" + integrity sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-unicode-escapes@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz#3e3143f8438aef842de28816ece58780190cf806" + integrity sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-unicode-property-regex@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz#63a7a6c21a0e75dae9b1861454111ea5caa22821" + integrity sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" + +"@babel/plugin-transform-unicode-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz#25948f5c395db15f609028e370667ed8bae9af97" + integrity sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-unicode-sets-regex@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz#924912914e5df9fe615ec472f88ff4788ce04d4e" + integrity sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" + +"@babel/preset-env@^7.24.8": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.29.0.tgz#c55db400c515a303662faaefd2d87e796efa08d0" + integrity sha512-fNEdfc0yi16lt6IZo2Qxk3knHVdfMYX33czNb4v8yWhemoBhibCpQK/uYHtSKIiO+p/zd3+8fYVXhQdOVV608w== + dependencies: + "@babel/compat-data" "^7.29.0" + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-validator-option" "^7.27.1" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.28.5" + "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.27.1" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.27.1" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.27.1" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.28.6" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-import-assertions" "^7.28.6" + "@babel/plugin-syntax-import-attributes" "^7.28.6" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.27.1" + "@babel/plugin-transform-async-generator-functions" "^7.29.0" + "@babel/plugin-transform-async-to-generator" "^7.28.6" + "@babel/plugin-transform-block-scoped-functions" "^7.27.1" + "@babel/plugin-transform-block-scoping" "^7.28.6" + "@babel/plugin-transform-class-properties" "^7.28.6" + "@babel/plugin-transform-class-static-block" "^7.28.6" + "@babel/plugin-transform-classes" "^7.28.6" + "@babel/plugin-transform-computed-properties" "^7.28.6" + "@babel/plugin-transform-destructuring" "^7.28.5" + "@babel/plugin-transform-dotall-regex" "^7.28.6" + "@babel/plugin-transform-duplicate-keys" "^7.27.1" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.29.0" + "@babel/plugin-transform-dynamic-import" "^7.27.1" + "@babel/plugin-transform-explicit-resource-management" "^7.28.6" + "@babel/plugin-transform-exponentiation-operator" "^7.28.6" + "@babel/plugin-transform-export-namespace-from" "^7.27.1" + "@babel/plugin-transform-for-of" "^7.27.1" + "@babel/plugin-transform-function-name" "^7.27.1" + "@babel/plugin-transform-json-strings" "^7.28.6" + "@babel/plugin-transform-literals" "^7.27.1" + "@babel/plugin-transform-logical-assignment-operators" "^7.28.6" + "@babel/plugin-transform-member-expression-literals" "^7.27.1" + "@babel/plugin-transform-modules-amd" "^7.27.1" + "@babel/plugin-transform-modules-commonjs" "^7.28.6" + "@babel/plugin-transform-modules-systemjs" "^7.29.0" + "@babel/plugin-transform-modules-umd" "^7.27.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.29.0" + "@babel/plugin-transform-new-target" "^7.27.1" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.28.6" + "@babel/plugin-transform-numeric-separator" "^7.28.6" + "@babel/plugin-transform-object-rest-spread" "^7.28.6" + "@babel/plugin-transform-object-super" "^7.27.1" + "@babel/plugin-transform-optional-catch-binding" "^7.28.6" + "@babel/plugin-transform-optional-chaining" "^7.28.6" + "@babel/plugin-transform-parameters" "^7.27.7" + "@babel/plugin-transform-private-methods" "^7.28.6" + "@babel/plugin-transform-private-property-in-object" "^7.28.6" + "@babel/plugin-transform-property-literals" "^7.27.1" + "@babel/plugin-transform-regenerator" "^7.29.0" + "@babel/plugin-transform-regexp-modifiers" "^7.28.6" + "@babel/plugin-transform-reserved-words" "^7.27.1" + "@babel/plugin-transform-shorthand-properties" "^7.27.1" + "@babel/plugin-transform-spread" "^7.28.6" + "@babel/plugin-transform-sticky-regex" "^7.27.1" + "@babel/plugin-transform-template-literals" "^7.27.1" + "@babel/plugin-transform-typeof-symbol" "^7.27.1" + "@babel/plugin-transform-unicode-escapes" "^7.27.1" + "@babel/plugin-transform-unicode-property-regex" "^7.28.6" + "@babel/plugin-transform-unicode-regex" "^7.27.1" + "@babel/plugin-transform-unicode-sets-regex" "^7.28.6" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.15" + babel-plugin-polyfill-corejs3 "^0.14.0" + babel-plugin-polyfill-regenerator "^0.6.6" + core-js-compat "^3.48.0" + semver "^6.3.1" + +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/template@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.28.6.tgz#0e7e56ecedb78aeef66ce7972b082fce76a23e57" + integrity sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ== + dependencies: + "@babel/code-frame" "^7.28.6" + "@babel/parser" "^7.28.6" + "@babel/types" "^7.28.6" + +"@babel/traverse@^7.27.1", "@babel/traverse@^7.28.5", "@babel/traverse@^7.28.6", "@babel/traverse@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.0.tgz#f323d05001440253eead3c9c858adbe00b90310a" + integrity sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA== + dependencies: + "@babel/code-frame" "^7.29.0" + "@babel/generator" "^7.29.0" + "@babel/helper-globals" "^7.28.0" + "@babel/parser" "^7.29.0" + "@babel/template" "^7.28.6" + "@babel/types" "^7.29.0" + debug "^4.3.1" + +"@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.5", "@babel/types@^7.28.6", "@babel/types@^7.29.0", "@babel/types@^7.4.4": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7" + integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A== + dependencies: + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" + +"@borewit/text-codec@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@borewit/text-codec/-/text-codec-0.2.1.tgz#5d171538907a8cb395fdc2eb5e8f7947d96c7f2f" + integrity sha512-k7vvKPbf7J2fZ5klGRD9AeKfUvojuZIQ3BT5u7Jfv+puwXkUBUT5PVyMDfJZpy30CBDXGMgw7fguK/lpOMBvgw== + +"@discoveryjs/json-ext@^0.5.0": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + +"@hotwired/stimulus@^3.2.2": + version "3.2.2" + resolved "https://registry.yarnpkg.com/@hotwired/stimulus/-/stimulus-3.2.2.tgz#071aab59c600fed95b97939e605ff261a4251608" + integrity sha512-eGeIqNOQpXoPAIP7tC1+1Yc1yl1xnwYqg+3mzqxyrbE5pg5YFBZcA6YoTiByJB6DKAEsiWtl6tjTJS4IYtbB7A== + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.5": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f" + integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/remapping@^2.3.5": + version "2.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/remapping/-/remapping-2.3.5.tgz#375c476d1972947851ba1e15ae8f123047445aa1" + integrity sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/source-map@^0.3.3": + version "0.3.11" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.11.tgz#b21835cbd36db656b857c2ad02ebd413cc13a9ba" + integrity sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + +"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" + integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== + +"@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28": + version "0.3.31" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0" + integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" + integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@nuxt/friendly-errors-webpack-plugin@^2.5.1": + version "2.6.0" + resolved "https://registry.yarnpkg.com/@nuxt/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-2.6.0.tgz#bd0cf6cd73b6e1d3e7c7f1c0de43333e69cc660c" + integrity sha512-3IZj6MXbzlvUxDncAxgBMLQwGPY/JlNhy2i+AGyOHCAReR5HcBxYjVRBvyaKM9R3s5k4OODYKeHAbrToZH/47w== + dependencies: + chalk "^2.4.2" + consola "^3.2.3" + error-stack-parser "^2.1.4" + string-width "^4.2.3" + +"@parcel/watcher-android-arm64@2.5.6": + version "2.5.6" + resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz#5f32e0dba356f4ac9a11068d2a5c134ca3ba6564" + integrity sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A== + +"@parcel/watcher-darwin-arm64@2.5.6": + version "2.5.6" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz#88d3e720b59b1eceffce98dac46d7c40e8be5e8e" + integrity sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA== + +"@parcel/watcher-darwin-x64@2.5.6": + version "2.5.6" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz#bf05d76a78bc15974f15ec3671848698b0838063" + integrity sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg== + +"@parcel/watcher-freebsd-x64@2.5.6": + version "2.5.6" + resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz#8bc26e9848e7303ac82922a5ae1b1ef1bdb48a53" + integrity sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng== + +"@parcel/watcher-linux-arm-glibc@2.5.6": + version "2.5.6" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz#1328fee1deb0c2d7865079ef53a2ba4cc2f8b40a" + integrity sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ== + +"@parcel/watcher-linux-arm-musl@2.5.6": + version "2.5.6" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz#bad0f45cb3e2157746db8b9d22db6a125711f152" + integrity sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg== + +"@parcel/watcher-linux-arm64-glibc@2.5.6": + version "2.5.6" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz#b75913fbd501d9523c5f35d420957bf7d0204809" + integrity sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA== + +"@parcel/watcher-linux-arm64-musl@2.5.6": + version "2.5.6" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz#da5621a6a576070c8c0de60dea8b46dc9c3827d4" + integrity sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA== + +"@parcel/watcher-linux-x64-glibc@2.5.6": + version "2.5.6" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz#ce437accdc4b30f93a090b4a221fd95cd9b89639" + integrity sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ== + +"@parcel/watcher-linux-x64-musl@2.5.6": + version "2.5.6" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz#02400c54b4a67efcc7e2327b249711920ac969e2" + integrity sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg== + +"@parcel/watcher-win32-arm64@2.5.6": + version "2.5.6" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz#caae3d3c7583ca0a7171e6bd142c34d20ea1691e" + integrity sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q== + +"@parcel/watcher-win32-ia32@2.5.6": + version "2.5.6" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz#9ac922550896dfe47bfc5ae3be4f1bcaf8155d6d" + integrity sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g== + +"@parcel/watcher-win32-x64@2.5.6": + version "2.5.6" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz#73fdafba2e21c448f0e456bbe13178d8fe11739d" + integrity sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw== + +"@parcel/watcher@^2.4.1": + version "2.5.6" + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.6.tgz#3f932828c894f06d0ad9cfefade1756ecc6ef1f1" + integrity sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ== + dependencies: + detect-libc "^2.0.3" + is-glob "^4.0.3" + node-addon-api "^7.0.0" + picomatch "^4.0.3" + optionalDependencies: + "@parcel/watcher-android-arm64" "2.5.6" + "@parcel/watcher-darwin-arm64" "2.5.6" + "@parcel/watcher-darwin-x64" "2.5.6" + "@parcel/watcher-freebsd-x64" "2.5.6" + "@parcel/watcher-linux-arm-glibc" "2.5.6" + "@parcel/watcher-linux-arm-musl" "2.5.6" + "@parcel/watcher-linux-arm64-glibc" "2.5.6" + "@parcel/watcher-linux-arm64-musl" "2.5.6" + "@parcel/watcher-linux-x64-glibc" "2.5.6" + "@parcel/watcher-linux-x64-musl" "2.5.6" + "@parcel/watcher-win32-arm64" "2.5.6" + "@parcel/watcher-win32-ia32" "2.5.6" + "@parcel/watcher-win32-x64" "2.5.6" + +"@sec-ant/readable-stream@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz#60de891bb126abfdc5410fdc6166aca065f10a0c" + integrity sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg== + +"@sinclair/typebox@^0.27.8": + version "0.27.10" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.10.tgz#beefe675f1853f73676aecc915b2bd2ac98c4fc6" + integrity sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA== + +"@sindresorhus/is@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" + integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow== + +"@sindresorhus/is@^6.3.0": + version "6.3.1" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-6.3.1.tgz#43bbe2a94de0d7a11b95b7fc8100fa0e4694bbe0" + integrity sha512-FX4MfcifwJyFOI2lPoX7PQxCqx8BG1HCho7WdiXwpEQx1Ycij0JxkfYtGK7yqNScrZGSlt6RE6sw8QYoH7eKnQ== + +"@sindresorhus/merge-streams@^2.1.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz#719df7fb41766bc143369eaa0dd56d8dc87c9958" + integrity sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg== + +"@symfony/webpack-encore@^4.6.1": + version "4.7.0" + resolved "https://registry.yarnpkg.com/@symfony/webpack-encore/-/webpack-encore-4.7.0.tgz#d8f9ddc28ddb4175d65e3dd9de3a86e38e6fff52" + integrity sha512-vlvg1mYLVSaujTEUmkd/ucwK7LG7+89PHfOwfz/sJ53n2IFGtuAXyPyXL0igJ0tMcKvDuCShiWTX1nfnzT/Srw== + dependencies: + "@nuxt/friendly-errors-webpack-plugin" "^2.5.1" + assets-webpack-plugin "7.0.*" + babel-loader "^9.1.3" + chalk "^4.0.0" + clean-webpack-plugin "^4.0.0" + css-loader "^6.7.0" + css-minimizer-webpack-plugin "^5.0.0" + fastest-levenshtein "^1.0.16" + mini-css-extract-plugin "^2.6.0" + pretty-error "^4.0.0" + resolve-url-loader "^5.0.0" + semver "^7.3.2" + style-loader "^3.3.0" + sync-rpc "^1.3.6" + tapable "^2.2.1" + terser-webpack-plugin "^5.3.0" + tmp "^0.2.1" + webpack-dev-server "^4.8.0" + yargs-parser "^21.0.0" + +"@terminal42/contao-build-tools@./vendor/terminal42/contao-build-tools/webpack": + version "0.2.0" + dependencies: + "@babel/core" "^7.24.9" + "@babel/preset-env" "^7.24.8" + "@symfony/webpack-encore" "^4.6.1" + autoprefixer "^10.4.19" + cssnano "^7.0.2" + file-loader "^6.2.0" + image-minimizer-webpack-plugin "^4.0.2" + imagemin "^9.0.0" + imagemin-gifsicle "^7.0.0" + imagemin-mozjpeg "^10.0.0" + imagemin-pngquant "^10.0.0" + imagemin-svgo "^11.0.1" + imagemin-webp "^8.0.0" + postcss "^8.4.39" + postcss-loader "^8.1.1" + postcss-minify "^1.1.0" + sass "^1.77.8" + sass-loader "^14.2.1" + webpack "^5.93.0" + webpack-cli "^5.1.4" + +"@tokenizer/token@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" + integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A== + +"@types/body-parser@*": + version "1.19.6" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.6.tgz#1859bebb8fd7dac9918a45d54c1971ab8b5af474" + integrity sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bonjour@^3.5.9": + version "3.5.13" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956" + integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== + dependencies: + "@types/node" "*" + +"@types/connect-history-api-fallback@^1.3.5": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" + integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.38" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + +"@types/eslint-scope@^3.7.7": + version "3.7.7" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" + integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "9.6.1" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-9.6.1.tgz#d5795ad732ce81715f27f75da913004a56751584" + integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== + +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^5.0.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz#1a77faffee9572d39124933259be2523837d7eaa" + integrity sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express-serve-static-core@^4.17.33": + version "4.19.8" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz#99b960322a4d576b239a640ab52ef191989b036f" + integrity sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@*": + version "5.0.6" + resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.6.tgz#2d724b2c990dcb8c8444063f3580a903f6d500cc" + integrity sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^5.0.0" + "@types/serve-static" "^2" + +"@types/express@^4.17.13": + version "4.17.25" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.25.tgz#070c8c73a6fee6936d65c195dbbfb7da5026649b" + integrity sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "^1" + +"@types/glob@^7.1.1": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/http-errors@*": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.5.tgz#5b749ab2b16ba113423feb1a64a95dcd30398472" + integrity sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg== + +"@types/http-proxy@^1.17.8": + version "1.17.17" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.17.tgz#d9e2c4571fe3507343cb210cd41790375e59a533" + integrity sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== + +"@types/istanbul-lib-report@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/json-schema@*", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/mime@^1": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" + integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== + +"@types/minimatch@*": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-6.0.0.tgz#4d207b1cc941367bdcd195a3a781a7e4fc3b1e03" + integrity sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA== + dependencies: + minimatch "*" + +"@types/node-forge@^1.3.0": + version "1.3.14" + resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.14.tgz#006c2616ccd65550560c2757d8472eb6d3ecea0b" + integrity sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw== + dependencies: + "@types/node" "*" + +"@types/node@*": + version "25.3.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-25.3.5.tgz#beccb5915561f7a9970ace547ad44d6cdbf39b46" + integrity sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA== + dependencies: + undici-types "~7.18.0" + +"@types/qs@*": + version "6.15.0" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.15.0.tgz#963ab61779843fe910639a50661b48f162bc7f79" + integrity sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow== + +"@types/range-parser@*": + version "1.2.7" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" + integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== + +"@types/retry@0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== + +"@types/send@*": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@types/send/-/send-1.2.1.tgz#6a784e45543c18c774c049bff6d3dbaf045c9c74" + integrity sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ== + dependencies: + "@types/node" "*" + +"@types/send@<1": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.6.tgz#aeb5385be62ff58a52cd5459daa509ae91651d25" + integrity sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-index@^1.9.1": + version "1.9.4" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" + integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== + dependencies: + "@types/express" "*" + +"@types/serve-static@^1", "@types/serve-static@^1.13.10": + version "1.15.10" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.10.tgz#768169145a778f8f5dfcb6360aead414a3994fee" + integrity sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + "@types/send" "<1" + +"@types/serve-static@^2": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-2.2.0.tgz#d4a447503ead0d1671132d1ab6bd58b805d8de6a" + integrity sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + +"@types/sockjs@^0.3.33": + version "0.3.36" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" + integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== + dependencies: + "@types/node" "*" + +"@types/ws@^8.5.5": + version "8.18.1" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.18.1.tgz#48464e4bf2ddfd17db13d845467f6070ffea4aa9" + integrity sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg== + dependencies: + "@types/node" "*" + +"@types/yargs-parser@*": + version "21.0.3" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== + +"@types/yargs@^17.0.8": + version "17.0.35" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.35.tgz#07013e46aa4d7d7d50a49e15604c1c5340d4eb24" + integrity sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg== + dependencies: + "@types/yargs-parser" "*" + +"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.14.1.tgz#a9f6a07f2b03c95c8d38c4536a1fdfb521ff55b6" + integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== + dependencies: + "@webassemblyjs/helper-numbers" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + +"@webassemblyjs/floating-point-hex-parser@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz#fcca1eeddb1cc4e7b6eed4fc7956d6813b21b9fb" + integrity sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA== + +"@webassemblyjs/helper-api-error@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz#e0a16152248bc38daee76dd7e21f15c5ef3ab1e7" + integrity sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ== + +"@webassemblyjs/helper-buffer@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz#822a9bc603166531f7d5df84e67b5bf99b72b96b" + integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA== + +"@webassemblyjs/helper-numbers@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz#dbd932548e7119f4b8a7877fd5a8d20e63490b2d" + integrity sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.13.2" + "@webassemblyjs/helper-api-error" "1.13.2" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz#e556108758f448aae84c850e593ce18a0eb31e0b" + integrity sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA== + +"@webassemblyjs/helper-wasm-section@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz#9629dda9c4430eab54b591053d6dc6f3ba050348" + integrity sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/wasm-gen" "1.14.1" + +"@webassemblyjs/ieee754@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz#1c5eaace1d606ada2c7fd7045ea9356c59ee0dba" + integrity sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.13.2.tgz#57c5c3deb0105d02ce25fa3fd74f4ebc9fd0bbb0" + integrity sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.13.2.tgz#917a20e93f71ad5602966c2d685ae0c6c21f60f1" + integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== + +"@webassemblyjs/wasm-edit@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz#ac6689f502219b59198ddec42dcd496b1004d597" + integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/helper-wasm-section" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-opt" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + "@webassemblyjs/wast-printer" "1.14.1" + +"@webassemblyjs/wasm-gen@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz#991e7f0c090cb0bb62bbac882076e3d219da9570" + integrity sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wasm-opt@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz#e6f71ed7ccae46781c206017d3c14c50efa8106b" + integrity sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + +"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz#b3e13f1893605ca78b52c68e54cf6a865f90b9fb" + integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-api-error" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wast-printer@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz#3bb3e9638a8ae5fdaf9610e7a06b4d9f9aa6fe07" + integrity sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@xtuc/long" "4.2.2" + +"@webpack-cli/configtest@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646" + integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== + +"@webpack-cli/info@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd" + integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== + +"@webpack-cli/serve@^2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" + integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-import-phases@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz#16eb850ba99a056cb7cbfe872ffb8972e18c8bd7" + integrity sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ== + +acorn@^8.15.0, acorn@^8.16.0: + version "8.16.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.16.0.tgz#4ce79c89be40afe7afe8f3adb902a1f1ce9ac08a" + integrity sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw== + +adjust-sourcemap-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz#fc4a0fd080f7d10471f30a7320f25560ade28c99" + integrity sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A== + dependencies: + loader-utils "^2.0.0" + regex-parser "^2.2.11" + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^6.12.5: + version "6.14.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.14.0.tgz#fd067713e228210636ebb08c60bd3765d6dbe73a" + integrity sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0, ajv@^8.9.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.18.0.tgz#8864186b6738d003eb3a933172bb3833e10cefbc" + integrity sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + +ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arch@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" + integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== + +archive-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/archive-type/-/archive-type-4.0.0.tgz#f92e72233056dfc6969472749c267bdb046b1d70" + integrity sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA== + dependencies: + file-type "^4.2.0" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== + +assets-webpack-plugin@7.0.*: + version "7.0.0" + resolved "https://registry.yarnpkg.com/assets-webpack-plugin/-/assets-webpack-plugin-7.0.0.tgz#c61ed7466f35ff7a4d90d7070948736f471b8804" + integrity sha512-DMZ9r6HFxynWeONRMhSOFTvTrmit5dovdoUKdJgCG03M6CC7XiwNImPH+Ad1jaVrQ2n59e05lBhte52xPt4MSA== + dependencies: + camelcase "^6.0.0" + escape-string-regexp "^4.0.0" + lodash "^4.17.20" + +autoprefixer@^10.4.19: + version "10.4.27" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.27.tgz#51ea301a5c3c5f8642f8e564759c4f573be486f2" + integrity sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA== + dependencies: + browserslist "^4.28.1" + caniuse-lite "^1.0.30001774" + fraction.js "^5.3.4" + picocolors "^1.1.1" + postcss-value-parser "^4.2.0" + +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + +babel-loader@^9.1.3: + version "9.2.1" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.2.1.tgz#04c7835db16c246dd19ba0914418f3937797587b" + integrity sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA== + dependencies: + find-cache-dir "^4.0.0" + schema-utils "^4.0.0" + +babel-plugin-polyfill-corejs2@^0.4.15: + version "0.4.15" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.15.tgz#808fa349686eea4741807cfaaa2aa3aa57ce120a" + integrity sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw== + dependencies: + "@babel/compat-data" "^7.28.6" + "@babel/helper-define-polyfill-provider" "^0.6.6" + semver "^6.3.1" + +babel-plugin-polyfill-corejs3@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.0.tgz#65b06cda48d6e447e1e926681f5a247c6ae2b9cf" + integrity sha512-AvDcMxJ34W4Wgy4KBIIePQTAOP1Ie2WFwkQp3dB7FQ/f0lI5+nM96zUnYEOE1P9sEg0es5VCP0HxiWu5fUHZAQ== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.6" + core-js-compat "^3.48.0" + +babel-plugin-polyfill-regenerator@^0.6.6: + version "0.6.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.6.tgz#69f5dd263cab933c42fe5ea05e83443b374bd4bf" + integrity sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.6" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +balanced-match@^4.0.2: + version "4.0.4" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-4.0.4.tgz#bfb10662feed8196a2c62e7c68e17720c274179a" + integrity sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA== + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +baseline-browser-mapping@^2.9.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz#5b09935025bf8a80e29130251e337c6a7fc8cbb9" + integrity sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA== + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +bin-build@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bin-build/-/bin-build-3.0.0.tgz#c5780a25a8a9f966d8244217e6c1f5082a143861" + integrity sha512-jcUOof71/TNAI2uM5uoUaDq2ePcVBQ3R/qhxAz1rX7UfvduAL/RXD3jXzvn8cVcDJdGVkiR1shal3OH0ImpuhA== + dependencies: + decompress "^4.0.0" + download "^6.2.2" + execa "^0.7.0" + p-map-series "^1.0.0" + tempfile "^2.0.0" + +bin-check@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bin-check/-/bin-check-4.1.0.tgz#fc495970bdc88bb1d5a35fc17e65c4a149fc4a49" + integrity sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA== + dependencies: + execa "^0.7.0" + executable "^4.1.0" + +bin-version-check@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/bin-version-check/-/bin-version-check-4.0.0.tgz#7d819c62496991f80d893e6e02a3032361608f71" + integrity sha512-sR631OrhC+1f8Cvs8WyVWOA33Y8tgwjETNPyyD/myRBXLkfS/vl74FmH/lFcRl9KY3zwGh7jFhvyk9vV3/3ilQ== + dependencies: + bin-version "^3.0.0" + semver "^5.6.0" + semver-truncate "^1.1.2" + +bin-version@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bin-version/-/bin-version-3.1.0.tgz#5b09eb280752b1bd28f0c9db3f96f2f43b6c0839" + integrity sha512-Mkfm4iE1VFt4xd4vH+gx+0/71esbfus2LsnCGe8Pi4mndSPyT+NGES/Eg99jx8/lUGWfu3z2yuB/bt5UB+iVbQ== + dependencies: + execa "^1.0.0" + find-versions "^3.0.0" + +bin-wrapper@^4.0.0, bin-wrapper@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bin-wrapper/-/bin-wrapper-4.1.0.tgz#99348f2cf85031e3ef7efce7e5300aeaae960605" + integrity sha512-hfRmo7hWIXPkbpi0ZltboCMVrU+0ClXR/JgbCKKjlDjQf6igXa7OwdqNcFWQZPZTgiY7ZpzE3+LjjkLiTN2T7Q== + dependencies: + bin-check "^4.1.0" + bin-version-check "^4.0.0" + download "^7.1.0" + import-lazy "^3.1.0" + os-filter-obj "^2.0.0" + pify "^4.0.1" + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +bl@^1.0.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" + integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + +body-parser@~1.20.3: + version "1.20.4" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.4.tgz#f8e20f4d06ca8a50a71ed329c15dccad1cdc547f" + integrity sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA== + dependencies: + bytes "~3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "~1.2.0" + http-errors "~2.0.1" + iconv-lite "~0.4.24" + on-finished "~2.4.1" + qs "~6.14.0" + raw-body "~2.5.3" + type-is "~1.6.18" + unpipe "~1.0.0" + +bonjour-service@^1.0.11: + version "1.3.0" + resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.3.0.tgz#80d867430b5a0da64e82a8047fc1e355bdb71722" + integrity sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA== + dependencies: + fast-deep-equal "^3.1.3" + multicast-dns "^7.2.5" + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +brace-expansion@^1.1.7: + version "1.1.12" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" + integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^5.0.2: + version "5.0.4" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-5.0.4.tgz#614daaecd0a688f660bbbc909a8748c3d80d4336" + integrity sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg== + dependencies: + balanced-match "^4.0.2" + +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browserslist@^4.0.0, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.27.0, browserslist@^4.28.1: + version "4.28.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.1.tgz#7f534594628c53c63101079e27e40de490456a95" + integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA== + dependencies: + baseline-browser-mapping "^2.9.0" + caniuse-lite "^1.0.30001759" + electron-to-chromium "^1.5.263" + node-releases "^2.0.27" + update-browserslist-db "^1.2.0" + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer@^5.2.1: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +bytes@3.1.2, bytes@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +cacheable-request@^2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" + integrity sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ== + dependencies: + clone-response "1.0.2" + get-stream "3.0.0" + http-cache-semantics "3.8.1" + keyv "3.0.0" + lowercase-keys "1.0.0" + normalize-url "2.0.1" + responselike "1.0.2" + +call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + +call-bind@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" + integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== + dependencies: + call-bind-apply-helpers "^1.0.0" + es-define-property "^1.0.0" + get-intrinsic "^1.2.4" + set-function-length "^1.2.2" + +call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== + dependencies: + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +callsites@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-4.2.0.tgz#98761d5be3ce092e4b9c92f7fb8c8eb9b83cadc8" + integrity sha512-kfzR4zzQtAE9PC7CzZsjl3aBNbXWuXiSeOCdLcPpBfGW8YuCqQHcRPFDbr/BPVmd3EEPVpuFzLyuT/cUhPr4OQ== + +camelcase@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001759, caniuse-lite@^1.0.30001774: + version "1.0.30001777" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001777.tgz#028f21e4b2718d138b55e692583e6810ccf60691" + integrity sha512-tmN+fJxroPndC74efCdp12j+0rk0RHwV5Jwa1zWaFVyw2ZxAuPeG8ZgWC3Wz7uSjT3qMRQ5XHZ4COgQmsCMJAQ== + +caw@^2.0.0, caw@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/caw/-/caw-2.0.1.tgz#6c3ca071fc194720883c2dc5da9b074bfc7e9e95" + integrity sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA== + dependencies: + get-proxy "^2.0.0" + isurl "^1.0.0-alpha5" + tunnel-agent "^0.6.0" + url-to-options "^1.0.1" + +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + 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" + +chalk@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +change-file-extension@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/change-file-extension/-/change-file-extension-0.1.1.tgz#46a342c4f327cdc0578ac7fc8412c364561da677" + integrity sha512-lB0j9teu8JtDPDHRfU8pNH33w4wMu5bOaKoT4PxH+AKugBrIfpiJMTTKIm0TErNeJPkeQEgvH31YpccTwOKPRg== + +chokidar@^3.5.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chokidar@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.3.tgz#7be37a4c03c9aee1ecfe862a4a23b2c70c205d30" + integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA== + dependencies: + readdirp "^4.0.1" + +chrome-trace-event@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b" + integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== + +ci-info@^3.2.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + +clean-webpack-plugin@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz#72947d4403d452f38ed61a9ff0ada8122aacd729" + integrity sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w== + dependencies: + del "^4.1.1" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone-response@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q== + dependencies: + mimic-response "^1.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colord@^2.9.3: + version "2.9.3" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" + integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== + +colorette@^2.0.10, colorette@^2.0.14: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +commander@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + +commander@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-11.1.0.tgz#62fdce76006a68e5c1ab3314dc92e800eb83d906" + integrity sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ== + +commander@^2.20.0, commander@^2.8.1: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +common-path-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" + integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== + +compressible@~2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.8.1" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.8.1.tgz#4a45d909ac16509195a9a28bd91094889c180d79" + integrity sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w== + dependencies: + bytes "3.1.2" + compressible "~2.0.18" + debug "2.6.9" + negotiator "~0.6.4" + on-headers "~1.1.0" + safe-buffer "5.2.1" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +config-chain@^1.1.11: + version "1.1.13" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +connect-history-api-fallback@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" + integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== + +consola@^3.2.3: + version "3.4.2" + resolved "https://registry.yarnpkg.com/consola/-/consola-3.4.2.tgz#5af110145397bb67afdab77013fdc34cae590ea7" + integrity sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA== + +content-disposition@^0.5.2, content-disposition@~0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4, content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +convert-hrtime@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/convert-hrtime/-/convert-hrtime-5.0.0.tgz#f2131236d4598b95de856926a67100a0a97e9fa3" + integrity sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg== + +convert-source-map@^1.7.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +cookie-signature@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.7.tgz#ab5dd7ab757c54e60f37ef6550f481c426d10454" + integrity sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA== + +cookie@~0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" + integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== + +core-js-compat@^3.48.0: + version "3.48.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.48.0.tgz#7efbe1fc1cbad44008190462217cc5558adaeaa6" + integrity sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q== + dependencies: + browserslist "^4.28.1" + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-9.0.1.tgz#df110631a8547b5d1a98915271986f06e3011379" + integrity sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ== + dependencies: + env-paths "^2.2.1" + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A== + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^6.0.0: + version "6.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.6.tgz#30d0efa0712ddb7eb5a76e1e8721bffafa6b5d57" + integrity sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.3: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +css-declaration-sorter@^7.2.0: + version "7.3.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-7.3.1.tgz#acd204976d7ca5240b5579bfe6e73d4d088fd568" + integrity sha512-gz6x+KkgNCjxq3Var03pRYLhyNfwhkKF1g/yoLgDNtFvVu0/fOLV9C8fFEZRjACp/XQLumjAYo7JVjzH3wLbxA== + +css-loader@^6.7.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.11.0.tgz#33bae3bf6363d0a7c2cf9031c96c744ff54d85ba" + integrity sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g== + dependencies: + icss-utils "^5.1.0" + postcss "^8.4.33" + postcss-modules-extract-imports "^3.1.0" + postcss-modules-local-by-default "^4.0.5" + postcss-modules-scope "^3.2.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.2.0" + semver "^7.5.4" + +css-minimizer-webpack-plugin@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz#33effe662edb1a0bf08ad633c32fa75d0f7ec565" + integrity sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg== + dependencies: + "@jridgewell/trace-mapping" "^0.3.18" + cssnano "^6.0.1" + jest-worker "^29.4.3" + postcss "^8.4.24" + schema-utils "^4.0.1" + serialize-javascript "^6.0.1" + +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-select@^5.1.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.2.2.tgz#01b6e8d163637bb2dd6c982ca4ed65863682786e" + integrity sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw== + dependencies: + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" + +css-tree@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" + integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== + dependencies: + mdn-data "2.0.30" + source-map-js "^1.0.1" + +css-tree@^3.0.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-3.2.1.tgz#86cac7011561272b30e6b1e042ba6ce047aa7518" + integrity sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA== + dependencies: + mdn-data "2.27.1" + source-map-js "^1.2.1" + +css-tree@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.2.1.tgz#36115d382d60afd271e377f9c5f67d02bd48c032" + integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== + dependencies: + mdn-data "2.0.28" + source-map-js "^1.0.1" + +css-what@^6.0.1, css-what@^6.1.0: + version "6.2.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.2.2.tgz#cdcc8f9b6977719fdfbd1de7aec24abf756b9dea" + integrity sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz#adf4b89b975aa775f2750c89dbaf199bbd9da35e" + integrity sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg== + dependencies: + browserslist "^4.23.0" + css-declaration-sorter "^7.2.0" + cssnano-utils "^4.0.2" + postcss-calc "^9.0.1" + postcss-colormin "^6.1.0" + postcss-convert-values "^6.1.0" + postcss-discard-comments "^6.0.2" + postcss-discard-duplicates "^6.0.3" + postcss-discard-empty "^6.0.3" + postcss-discard-overridden "^6.0.2" + postcss-merge-longhand "^6.0.5" + postcss-merge-rules "^6.1.1" + postcss-minify-font-values "^6.1.0" + postcss-minify-gradients "^6.0.3" + postcss-minify-params "^6.1.0" + postcss-minify-selectors "^6.0.4" + postcss-normalize-charset "^6.0.2" + postcss-normalize-display-values "^6.0.2" + postcss-normalize-positions "^6.0.2" + postcss-normalize-repeat-style "^6.0.2" + postcss-normalize-string "^6.0.2" + postcss-normalize-timing-functions "^6.0.2" + postcss-normalize-unicode "^6.1.0" + postcss-normalize-url "^6.0.2" + postcss-normalize-whitespace "^6.0.2" + postcss-ordered-values "^6.0.2" + postcss-reduce-initial "^6.1.0" + postcss-reduce-transforms "^6.0.2" + postcss-svgo "^6.0.3" + postcss-unique-selectors "^6.0.4" + +cssnano-preset-default@^7.0.10: + version "7.0.10" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-7.0.10.tgz#4fb6ee962c0852a03084e8c7a4b60fb0e2db45e0" + integrity sha512-6ZBjW0Lf1K1Z+0OKUAUpEN62tSXmYChXWi2NAA0afxEVsj9a+MbcB1l5qel6BHJHmULai2fCGRthCeKSFbScpA== + dependencies: + browserslist "^4.27.0" + css-declaration-sorter "^7.2.0" + cssnano-utils "^5.0.1" + postcss-calc "^10.1.1" + postcss-colormin "^7.0.5" + postcss-convert-values "^7.0.8" + postcss-discard-comments "^7.0.5" + postcss-discard-duplicates "^7.0.2" + postcss-discard-empty "^7.0.1" + postcss-discard-overridden "^7.0.1" + postcss-merge-longhand "^7.0.5" + postcss-merge-rules "^7.0.7" + postcss-minify-font-values "^7.0.1" + postcss-minify-gradients "^7.0.1" + postcss-minify-params "^7.0.5" + postcss-minify-selectors "^7.0.5" + postcss-normalize-charset "^7.0.1" + postcss-normalize-display-values "^7.0.1" + postcss-normalize-positions "^7.0.1" + postcss-normalize-repeat-style "^7.0.1" + postcss-normalize-string "^7.0.1" + postcss-normalize-timing-functions "^7.0.1" + postcss-normalize-unicode "^7.0.5" + postcss-normalize-url "^7.0.1" + postcss-normalize-whitespace "^7.0.1" + postcss-ordered-values "^7.0.2" + postcss-reduce-initial "^7.0.5" + postcss-reduce-transforms "^7.0.1" + postcss-svgo "^7.1.0" + postcss-unique-selectors "^7.0.4" + +cssnano-utils@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-4.0.2.tgz#56f61c126cd0f11f2eef1596239d730d9fceff3c" + integrity sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ== + +cssnano-utils@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-5.0.1.tgz#f529e9aa0d7930512ca45b9e2ddb8d6b9092eb30" + integrity sha512-ZIP71eQgG9JwjVZsTPSqhc6GHgEr53uJ7tK5///VfyWj6Xp2DBmixWHqJgPno+PqATzn48pL42ww9x5SSGmhZg== + +cssnano@^6.0.1: + version "6.1.2" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-6.1.2.tgz#4bd19e505bd37ee7cf0dc902d3d869f6d79c66b8" + integrity sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA== + dependencies: + cssnano-preset-default "^6.1.2" + lilconfig "^3.1.1" + +cssnano@^7.0.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-7.1.2.tgz#a8a533a8f509d74b2d22e73d80ec1294f65fdc70" + integrity sha512-HYOPBsNvoiFeR1eghKD5C3ASm64v9YVyJB4Ivnl2gqKoQYvjjN/G0rztvKQq8OxocUtC6sjqY8jwYngIB4AByA== + dependencies: + cssnano-preset-default "^7.0.10" + lilconfig "^3.1.3" + +csso@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6" + integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== + dependencies: + css-tree "~2.2.0" + +cwebp-bin@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/cwebp-bin/-/cwebp-bin-8.0.0.tgz#00fac9a3778fd6d27df4d52fedbe2d895de14223" + integrity sha512-j2s6jA84aG20lB0i/FBwqZGc8nHx4VASUK8OTDxy3xoUHoX/+pP6T15/TnWwhMcD0pZ05y5GgRPkurufOC8tnQ== + dependencies: + bin-build "^3.0.0" + bin-wrapper "^4.0.1" + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^4.1.0, debug@^4.3.1, debug@^4.4.3: + version "4.4.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" + integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== + dependencies: + ms "^2.1.3" + +decode-uri-component@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== + +decompress-response@^3.2.0, decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== + dependencies: + mimic-response "^1.0.0" + +decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1" + integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ== + dependencies: + file-type "^5.2.0" + is-stream "^1.1.0" + tar-stream "^1.5.2" + +decompress-tarbz2@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b" + integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A== + dependencies: + decompress-tar "^4.1.0" + file-type "^6.1.0" + is-stream "^1.1.0" + seek-bzip "^1.0.5" + unbzip2-stream "^1.0.9" + +decompress-targz@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee" + integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w== + dependencies: + decompress-tar "^4.1.1" + file-type "^5.2.0" + is-stream "^1.1.0" + +decompress-unzip@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69" + integrity sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw== + dependencies: + file-type "^3.8.0" + get-stream "^2.2.0" + pify "^2.3.0" + yauzl "^2.4.2" + +decompress@^4.0.0, decompress@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.1.tgz#007f55cc6a62c055afa37c07eb6a4ee1b773f118" + integrity sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ== + dependencies: + decompress-tar "^4.0.0" + decompress-tarbz2 "^4.0.0" + decompress-targz "^4.0.0" + decompress-unzip "^4.0.1" + graceful-fs "^4.1.10" + make-dir "^1.0.0" + pify "^2.3.0" + strip-dirs "^2.0.0" + +default-gateway@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" + integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== + dependencies: + execa "^5.0.0" + +define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +del@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== + dependencies: + "@types/glob" "^7.1.1" + globby "^6.1.0" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" + +depd@2.0.0, depd@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +destroy@1.2.0, destroy@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-libc@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.1.2.tgz#689c5dcdc1900ef5583a4cb9f6d7b473742074ad" + integrity sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ== + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +dns-packet@^5.2.2: + version "5.6.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" + integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== + dependencies: + "@leichtgewicht/ip-codec" "^2.0.1" + +dom-converter@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + +domutils@^2.5.2, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +domutils@^3.0.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.2.2.tgz#edbfe2b668b0c1d97c24baf0f1062b132221bc78" + integrity sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + +dot-prop@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-8.0.2.tgz#afda6866610684dd155a96538f8efcdf78a27f18" + integrity sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ== + dependencies: + type-fest "^3.8.0" + +download@^6.2.2: + version "6.2.5" + resolved "https://registry.yarnpkg.com/download/-/download-6.2.5.tgz#acd6a542e4cd0bb42ca70cfc98c9e43b07039714" + integrity sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA== + dependencies: + caw "^2.0.0" + content-disposition "^0.5.2" + decompress "^4.0.0" + ext-name "^5.0.0" + file-type "5.2.0" + filenamify "^2.0.0" + get-stream "^3.0.0" + got "^7.0.0" + make-dir "^1.0.0" + p-event "^1.0.0" + pify "^3.0.0" + +download@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/download/-/download-7.1.0.tgz#9059aa9d70b503ee76a132897be6dec8e5587233" + integrity sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ== + dependencies: + archive-type "^4.0.0" + caw "^2.0.1" + content-disposition "^0.5.2" + decompress "^4.2.0" + ext-name "^5.0.0" + file-type "^8.1.0" + filenamify "^2.0.0" + get-stream "^3.0.0" + got "^8.3.1" + make-dir "^1.2.0" + p-event "^2.1.0" + pify "^3.0.0" + +dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + +duplexer3@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" + integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +electron-to-chromium@^1.5.263: + version "1.5.307" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.307.tgz#09f8973100c39fb0d003b890393cd1d58932b1c8" + integrity sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.5" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.5.tgz#7344d711dea40e0b74abc2ed49778743ccedb08c" + integrity sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg== + dependencies: + once "^1.4.0" + +enhanced-resolve@^5.20.0: + version "5.20.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.20.0.tgz#323c2a70d2aa7fb4bdfd6d3c24dfc705c581295d" + integrity sha512-/ce7+jQ1PQ6rVXwe+jKEg5hW5ciicHwIQUagZkp6IufBoY3YDgdTTY1azVs0qoRgVmvsNB+rbjLJxDAeHHtwsQ== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.3.0" + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +entities@^4.2.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +env-paths@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +envinfo@^7.7.3: + version "7.21.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.21.0.tgz#04a251be79f92548541f37d13c8b6f22940c3bae" + integrity sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow== + +environment@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/environment/-/environment-1.1.0.tgz#8e86c66b180f363c7ab311787e0259665f45a9f1" + integrity sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q== + +error-ex@^1.3.1: + version "1.3.4" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.4.tgz#b3a8d8bb6f92eecc1629e3e27d3c8607a8a32414" + integrity sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" + integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== + dependencies: + stackframe "^1.3.4" + +es-define-property@^1.0.0, es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-module-lexer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-2.0.0.tgz#f657cd7a9448dcdda9c070a3cb75e5dc1e85f5b1" + integrity sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw== + +es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + +escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +exec-buffer@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/exec-buffer/-/exec-buffer-3.2.0.tgz#b1686dbd904c7cf982e652c1f5a79b1e5573082b" + integrity sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA== + dependencies: + execa "^0.7.0" + p-finally "^1.0.0" + pify "^3.0.0" + rimraf "^2.5.4" + tempfile "^2.0.0" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + integrity sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw== + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +execa@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-6.1.0.tgz#cea16dee211ff011246556388effa0818394fb20" + integrity sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^3.0.1" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" + +execa@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" + integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^8.0.1" + human-signals "^5.0.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^4.1.0" + strip-final-newline "^3.0.0" + +executable@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" + integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg== + dependencies: + pify "^2.2.0" + +express@^4.17.3: + version "4.22.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.22.1.tgz#1de23a09745a4fffdb39247b344bb5eaff382069" + integrity sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "~1.20.3" + content-disposition "~0.5.4" + content-type "~1.0.4" + cookie "~0.7.1" + cookie-signature "~1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~2.0.0" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.3.1" + fresh "~0.5.2" + http-errors "~2.0.0" + merge-descriptors "1.0.3" + methods "~1.1.2" + on-finished "~2.4.1" + parseurl "~1.3.3" + path-to-regexp "~0.1.12" + proxy-addr "~2.0.7" + qs "~6.14.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "~0.19.0" + serve-static "~1.16.2" + setprototypeof "1.2.0" + statuses "~2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +ext-list@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/ext-list/-/ext-list-2.2.2.tgz#0b98e64ed82f5acf0f2931babf69212ef52ddd37" + integrity sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA== + dependencies: + mime-db "^1.28.0" + +ext-name@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ext-name/-/ext-name-5.0.0.tgz#70781981d183ee15d13993c8822045c506c8f0a6" + integrity sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ== + dependencies: + ext-list "^2.0.0" + sort-keys-length "^1.0.0" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-equals@^5.0.1: + version "5.4.0" + resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-5.4.0.tgz#b60073b8764f27029598447f05773c7534ba7f1e" + integrity sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw== + +fast-glob@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" + integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.8" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-uri@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.0.tgz#66eecff6c764c0df9b762e62ca7edcfb53b4edfa" + integrity sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA== + +fast-xml-parser@^4.4.1: + version "4.5.4" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.5.4.tgz#64e52ddf1308001893bd225d5b1768840511c797" + integrity sha512-jE8ugADnYOBsu1uaoayVl1tVKAMNOXyjwvv2U6udEA2ORBhDooJDWoGxTkhd4Qn4yh59JVVt/pKXtjPwx9OguQ== + dependencies: + strnum "^1.0.5" + +fastest-levenshtein@^1.0.12, fastest-levenshtein@^1.0.16: + version "1.0.16" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== + +fastq@^1.6.0: + version "1.20.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.20.1.tgz#ca750a10dc925bc8b18839fd203e3ef4b3ced675" + integrity sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.11.3: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== + dependencies: + pend "~1.2.0" + +file-loader@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" + integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + +file-type@5.2.0, file-type@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6" + integrity sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ== + +file-type@^10.4.0, file-type@^10.5.0: + version "10.11.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-10.11.0.tgz#2961d09e4675b9fb9a3ee6b69e9cd23f43fd1890" + integrity sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw== + +file-type@^19.0.0: + version "19.6.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-19.6.0.tgz#b43d8870453363891884cf5e79bb3e4464f2efd3" + integrity sha512-VZR5I7k5wkD0HgFnMsq5hOsSc710MJMu5Nc5QYsbe38NN5iPV/XTObYLc/cpttRTf6lX538+5uO1ZQRhYibiZQ== + dependencies: + get-stream "^9.0.1" + strtok3 "^9.0.1" + token-types "^6.0.0" + uint8array-extras "^1.3.0" + +file-type@^3.8.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" + integrity sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA== + +file-type@^4.2.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-4.4.0.tgz#1b600e5fca1fbdc6e80c0a70c71c8dba5f7906c5" + integrity sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ== + +file-type@^6.1.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" + integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg== + +file-type@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-8.1.0.tgz#244f3b7ef641bbe0cca196c7276e4b332399f68c" + integrity sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ== + +filename-reserved-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229" + integrity sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ== + +filenamify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-2.1.0.tgz#88faf495fb1b47abfd612300002a16228c677ee9" + integrity sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA== + dependencies: + filename-reserved-regex "^2.0.0" + strip-outer "^1.0.0" + trim-repeated "^1.0.0" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@~1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.2.tgz#1ebc2228fc7673aac4a472c310cc05b77d852b88" + integrity sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg== + dependencies: + debug "2.6.9" + encodeurl "~2.0.0" + escape-html "~1.0.3" + on-finished "~2.4.1" + parseurl "~1.3.3" + statuses "~2.0.2" + unpipe "~1.0.0" + +find-cache-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-4.0.0.tgz#a30ee0448f81a3990708f6453633c733e2f6eec2" + integrity sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg== + dependencies: + common-path-prefix "^3.0.0" + pkg-dir "^7.0.0" + +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790" + integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw== + dependencies: + locate-path "^7.1.0" + path-exists "^5.0.0" + +find-versions@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" + integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== + dependencies: + semver-regex "^2.0.0" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +follow-redirects@^1.0.0: + version "1.15.11" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" + integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== + +for-each@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.5.tgz#d650688027826920feeb0af747ee7b9421a41d47" + integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg== + dependencies: + is-callable "^1.2.7" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fraction.js@^5.3.4: + version "5.3.4" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-5.3.4.tgz#8c0fcc6a9908262df4ed197427bdeef563e0699a" + integrity sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ== + +fresh@~0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +from2@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g== + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-monkey@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.1.0.tgz#632aa15a20e71828ed56b24303363fb1414e5997" + integrity sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +function-timeout@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/function-timeout/-/function-timeout-1.0.2.tgz#e5a7b6ffa523756ff20e1231bbe37b5f373aadd5" + integrity sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + +get-port@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" + integrity sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg== + +get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + +get-proxy@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-2.1.0.tgz#349f2b4d91d44c4d4d4e9cba2ad90143fac5ef93" + integrity sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw== + dependencies: + npm-conf "^1.1.0" + +get-stream@3.0.0, get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ== + +get-stream@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" + integrity sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA== + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^6.0.0, get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-stream@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" + integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== + +get-stream@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-9.0.1.tgz#95157d21df8eb90d1647102b63039b1df60ebd27" + integrity sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA== + dependencies: + "@sec-ant/readable-stream" "^0.4.1" + is-stream "^4.0.1" + +gifsicle@^5.0.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/gifsicle/-/gifsicle-5.3.0.tgz#499713c6f1e89ebbc3630da3a74fdb4697913b4e" + integrity sha512-FJTpgdj1Ow/FITB7SVza5HlzXa+/lqEY0tHQazAJbuAdvyJtkH4wIdsR2K414oaTwRXHFLLF+tYbipj+OpYg+Q== + dependencies: + bin-build "^3.0.0" + bin-wrapper "^4.0.0" + execa "^5.0.0" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^7.0.3, glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globby@^14.0.1: + version "14.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-14.1.0.tgz#138b78e77cf5a8d794e327b15dce80bf1fb0a73e" + integrity sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA== + dependencies: + "@sindresorhus/merge-streams" "^2.1.0" + fast-glob "^3.3.3" + ignore "^7.0.3" + path-type "^6.0.0" + slash "^5.1.0" + unicorn-magic "^0.3.0" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw== + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +gopd@^1.0.1, gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + +got@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" + integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== + dependencies: + decompress-response "^3.2.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-plain-obj "^1.1.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + p-cancelable "^0.3.0" + p-timeout "^1.1.1" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + url-parse-lax "^1.0.0" + url-to-options "^1.0.1" + +got@^8.3.1: + version "8.3.2" + resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937" + integrity sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw== + dependencies: + "@sindresorhus/is" "^0.7.0" + cacheable-request "^2.1.1" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + into-stream "^3.1.0" + is-retry-allowed "^1.1.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + mimic-response "^1.0.0" + p-cancelable "^0.4.0" + p-timeout "^2.0.1" + pify "^3.0.0" + safe-buffer "^5.1.1" + timed-out "^4.0.1" + url-parse-lax "^3.0.0" + url-to-options "^1.0.1" + +graceful-fs@^4.1.10, graceful-fs@^4.1.2, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-symbol-support-x@^1.4.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" + integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== + +has-symbols@^1.0.3, has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + +has-to-string-tag-x@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" + integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== + dependencies: + has-symbol-support-x "^1.4.1" + +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-entities@^2.3.2: + version "2.6.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.6.0.tgz#7c64f1ea3b36818ccae3d3fb48b6974208e984f8" + integrity sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ== + +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + +http-cache-semantics@3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== + +http-errors@~1.8.0: + version "1.8.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.1" + +http-errors@~2.0.0, http-errors@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.1.tgz#36d2f65bc909c8790018dd36fb4d93da6caae06b" + integrity sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ== + dependencies: + depd "~2.0.0" + inherits "~2.0.4" + setprototypeof "~1.2.0" + statuses "~2.0.2" + toidentifier "~1.0.1" + +http-parser-js@>=0.5.1: + version "0.5.10" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.10.tgz#b3277bd6d7ed5588e20ea73bf724fcbe44609075" + integrity sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA== + +http-proxy-middleware@^2.0.3: + version "2.0.9" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz#e9e63d68afaa4eee3d147f39149ab84c0c2815ef" + integrity sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q== + dependencies: + "@types/http-proxy" "^1.17.8" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +human-signals@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-3.0.1.tgz#c740920859dafa50e5a3222da9d3bf4bb0e5eef5" + integrity sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ== + +human-signals@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" + integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== + +iconv-lite@~0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +identifier-regex@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/identifier-regex/-/identifier-regex-1.0.1.tgz#65fc1c16eebad54adcbec7eb9c99e8a926adfd29" + integrity sha512-ZrYyM0sozNPZlvBvE7Oq9Bn44n0qKGrYu5sQ0JzMUnjIhpgWYE2JB6aBoFwEYdPjqj7jPyxXTMJiHDOxDfd8yw== + dependencies: + reserved-identifiers "^1.0.0" + +ieee754@^1.1.13, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^7.0.3: + version "7.0.5" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.5.tgz#4cb5f6cd7d4c7ab0365738c7aea888baa6d7efd9" + integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== + +image-dimensions@^2.3.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/image-dimensions/-/image-dimensions-2.5.0.tgz#57476c343228fb73beccdfd2686d2633f35f382b" + integrity sha512-CKZPHjAEtSg9lBV9eER0bhNn/yrY7cFEQEhkwjLhqLY+Na8lcP1pEyWsaGMGc8t2qbKWA/tuqbhFQpOKGN72Yw== + +image-minimizer-webpack-plugin@^4.0.2: + version "4.1.4" + resolved "https://registry.yarnpkg.com/image-minimizer-webpack-plugin/-/image-minimizer-webpack-plugin-4.1.4.tgz#9070cad04a9d19df96c3f724ce7f3fb4e24d8604" + integrity sha512-A2DLYuCyu7icbGdv8OMGFQKPXvsztWAueBkT3yQ7KVW1YGnAJKtgLYELkN7/aUday05DzEdKRaLE5Bnh/9S2UQ== + dependencies: + schema-utils "^4.2.0" + serialize-javascript "^6.0.2" + +imagemin-gifsicle@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/imagemin-gifsicle/-/imagemin-gifsicle-7.0.0.tgz#1a7ab136a144c4678657ba3b6c412f80805d26b0" + integrity sha512-LaP38xhxAwS3W8PFh4y5iQ6feoTSF+dTAXFRUEYQWYst6Xd+9L/iPk34QGgK/VO/objmIlmq9TStGfVY2IcHIA== + dependencies: + execa "^1.0.0" + gifsicle "^5.0.0" + is-gif "^3.0.0" + +imagemin-mozjpeg@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/imagemin-mozjpeg/-/imagemin-mozjpeg-10.0.0.tgz#d6771d1ce05ee15e2f6f34a9878c7266abccd9ee" + integrity sha512-DK85QNOjS3/GzWYfNB3CACMZD10sIQgFDv1+WTOnZljgltQTEyATjdyUVyjKu5q4sCESQdwvwq7WEZzJ5fFjlg== + dependencies: + execa "^6.0.0" + is-jpg "^3.0.0" + mozjpeg "^8.0.0" + +imagemin-pngquant@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/imagemin-pngquant/-/imagemin-pngquant-10.0.0.tgz#f6b233077ea53127a1e2eff5f89691fdc8ef9c4e" + integrity sha512-kt0LFxyv7sBxUbZyvt+JXoU0HvSnmTJkEW32rZPQ9d7AQJPVh0vkz9mGkvbX0yntY2zW/3N20Yw69PBSt1UQzw== + dependencies: + environment "^1.0.0" + execa "^8.0.1" + is-png "^3.0.1" + ow "^2.0.0" + pngquant-bin "^9.0.0" + uint8array-extras "^1.1.0" + +imagemin-svgo@^11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/imagemin-svgo/-/imagemin-svgo-11.0.1.tgz#e33379cca496c5eae321a911f7a1e31d735be104" + integrity sha512-sUZdlXFXZkPt61nzVXbt7EzYjjevPkNuZmAw0VjEm085PRrK5AHSF+1myF0NKtE+ZhY2Vf6W3CEoRqAgksruWQ== + dependencies: + is-svg "^5.0.1" + svgo "^3.3.2" + +imagemin-webp@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/imagemin-webp/-/imagemin-webp-8.0.0.tgz#5e227f4ae5eb2e8ee657a144bc2c1693a77280b1" + integrity sha512-yN6kNKir6T/U3AtP3uLHrLn9XYafk2m49EbUqLCQ3GPRRLRs+4pUQxxaHz+lnTDM+LQpkSjGQaFVcSgYqvW3dQ== + dependencies: + cwebp-bin "^8.0.0" + exec-buffer "^3.2.0" + is-cwebp-readable "^3.0.0" + +imagemin@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/imagemin/-/imagemin-9.0.1.tgz#637214985aeb365e8f80e57b15ddeaa91e78ef8b" + integrity sha512-UoHOfynN8QeqRoUGunn6ilMnLpJ+utbmleP2ufcFqaGal8mY/PeOpV43N31uqtb+CBMFqQ7hxgKzIaAAnmcrdA== + dependencies: + change-file-extension "^0.1.1" + environment "^1.0.0" + file-type "^19.0.0" + globby "^14.0.1" + image-dimensions "^2.3.0" + junk "^4.0.1" + ow "^2.0.0" + p-pipe "^4.0.0" + slash "^5.1.0" + uint8array-extras "^1.1.0" + +immutable@^5.0.2: + version "5.1.5" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.1.5.tgz#93ee4db5c2a9ab42a4a783069f3c5d8847d40165" + integrity sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A== + +import-fresh@^3.3.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf" + integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-lazy@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-3.1.0.tgz#891279202c8a2280fdbd6674dbd8da1a1dfc67cc" + integrity sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ== + +import-local@^3.0.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" + integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3, inherits@~2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@^1.3.4: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +interpret@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" + integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== + +into-stream@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" + integrity sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ== + dependencies: + from2 "^2.1.1" + p-is-promise "^1.1.0" + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +ipaddr.js@^2.0.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.3.0.tgz#71dce70e1398122208996d1c22f2ba46a24b1abc" + integrity sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.16.1: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" + +is-cwebp-readable@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-cwebp-readable/-/is-cwebp-readable-3.0.0.tgz#0554aaa400977a2fc4de366d8c0244f13cde58cb" + integrity sha512-bpELc7/Q1/U5MWHn4NdHI44R3jxk0h9ew9ljzabiRl70/UIjL/ZAqRMb52F5+eke/VC8yTiv4Ewryo1fPWidvA== + dependencies: + file-type "^10.5.0" + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-gif@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-gif/-/is-gif-3.0.0.tgz#c4be60b26a301d695bb833b20d9b5d66c6cf83b1" + integrity sha512-IqJ/jlbw5WJSNfwQ/lHEDXF8rxhRgF6ythk2oiEvhpG29F704eX9NO6TvPfMiq9DrbwgcEDnETYNcZDPewQoVw== + dependencies: + file-type "^10.4.0" + +is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-identifier@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-identifier/-/is-identifier-1.0.1.tgz#76d66e7813e37cc85cc8263f04eaa558d1a5d2dc" + integrity sha512-HQ5v4rEJ7REUV54bCd2l5FaD299SGDEn2UPoVXaTHAyGviLq2menVUD2udi3trQ32uvB6LdAh/0ck2EuizrtpA== + dependencies: + identifier-regex "^1.0.0" + super-regex "^1.0.0" + +is-jpg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-jpg/-/is-jpg-3.0.0.tgz#f97b4ab6de92401650cb4f54ec0a6ad79c51367f" + integrity sha512-Vcd67KWHZblEKEBrtP25qLZ8wN9ICoAhl1pKUqD7SM7hf2qtuRl7loDgP5Zigh2oN/+7uj+KVyC0eRJvgOEFeQ== + +is-natural-number@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" + integrity sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" + integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== + +is-path-cwd@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== + dependencies: + is-path-inside "^2.1.0" + +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== + +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-png@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/is-png/-/is-png-3.0.1.tgz#423643ad42bf9420a8ccfb4c1dc6c15fac31710b" + integrity sha512-8TqC8+bdsm3YkpI2aECCDycFDl1hTB0HMVRnP3xRRa3Tqx2oVE7sBi1G6CuO9IqEyWSzbBZr1mGqdb3it9h/pg== + +is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" + integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== + +is-stream@^1.0.0, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + +is-stream@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-4.0.1.tgz#375cf891e16d2e4baec250b85926cffc14720d9b" + integrity sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A== + +is-svg@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-5.1.0.tgz#fdeeea1dc28b72f1cb5d36f44dfd8f6ad1e05caa" + integrity sha512-uVg5yifaTxHoefNf5Jcx+i9RZe2OBYd/UStp1umx+EERa4xGRa3LLGXjoEph43qUORC0qkafUgrXZ6zzK89yGA== + dependencies: + fast-xml-parser "^4.4.1" + +is-typed-array@^1.1.14: + version "1.1.15" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b" + integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== + dependencies: + which-typed-array "^1.1.16" + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +isurl@^1.0.0-alpha5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" + integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== + dependencies: + has-to-string-tag-x "^1.2.0" + is-object "^1.0.1" + +jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest-worker@^29.4.3: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jiti@^2.5.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-2.6.1.tgz#178ef2fc9a1a594248c20627cd820187a4d78d92" + integrity sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ== + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.1.tgz#854c292467705b699476e1a2decc0c8a3458806b" + integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA== + dependencies: + argparse "^2.0.1" + +jsesc@^3.0.2, jsesc@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" + integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== + +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json5@^2.1.2, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +junk@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/junk/-/junk-4.0.1.tgz#7ee31f876388c05177fe36529ee714b07b50fbed" + integrity sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ== + +keyv@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" + integrity sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA== + dependencies: + json-buffer "3.0.0" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +launch-editor@^2.6.0: + version "2.13.1" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.13.1.tgz#d96ae376a282011661a112479a4bc2b8c1d914be" + integrity sha512-lPSddlAAluRKJ7/cjRFoXUFzaX7q/YKI7yPHuEvSJVqoXvFnJov1/Ud87Aa4zULIbA9Nja4mSPK8l0z/7eV2wA== + dependencies: + picocolors "^1.1.1" + shell-quote "^1.8.3" + +lilconfig@^3.1.1, lilconfig@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.3.tgz#a1bcfd6257f9585bf5ae14ceeebb7b559025e4c4" + integrity sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +loader-runner@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.1.tgz#6c76ed29b0ccce9af379208299f07f876de737e3" + integrity sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q== + +loader-utils@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a" + integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== + dependencies: + p-locate "^6.0.0" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash@^4.17.20, lodash@^4.17.21: + version "4.17.23" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.23.tgz#f113b0378386103be4f6893388c73d0bde7f2c5a" + integrity sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w== + +lowercase-keys@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + integrity sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A== + +lowercase-keys@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +make-asynchronous@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/make-asynchronous/-/make-asynchronous-1.1.0.tgz#6225f7f1ccaab9acaac5e2fcd0b075afefff19aa" + integrity sha512-ayF7iT+44LXdxJLTrTd3TLQpFDDvPCBxXxbv+pMUSuHA5Q8zyAfwkRP6aHHwNVFBUFWtxAHqwNJxF8vMZLAbVg== + dependencies: + p-event "^6.0.0" + type-fest "^4.6.0" + web-worker "^1.5.0" + +make-dir@^1.0.0, make-dir@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== + dependencies: + pify "^3.0.0" + +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + +mdn-data@2.0.28: + version "2.0.28" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba" + integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== + +mdn-data@2.0.30: + version "2.0.30" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" + integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== + +mdn-data@2.27.1: + version "2.27.1" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.27.1.tgz#e37b9c50880b75366c4d40ac63d9bbcacdb61f0e" + integrity sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memfs@^3.4.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" + integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== + dependencies: + fs-monkey "^1.0.4" + +merge-descriptors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^4.0.2, micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +"mime-db@>= 1.43.0 < 2", mime-db@^1.28.0: + version "1.54.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5" + integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== + +mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.24, mime-types@~2.1.34, mime-types@~2.1.35: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mini-css-extract-plugin@^2.6.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.0.tgz#d801a1f388f8fac7333c01b7c15c9222c811def4" + integrity sha512-540P2c5dYnJlyJxTaSloliZexv8rji6rY8FhQN+WF/82iHQfA23j/xtJx97L+mXOML27EqksSek/g4eK7jaL3g== + dependencies: + schema-utils "^4.0.0" + tapable "^2.2.1" + +minimalistic-assert@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimatch@*: + version "10.2.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.2.4.tgz#465b3accbd0218b8281f5301e27cedc697f96fde" + integrity sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg== + dependencies: + brace-expansion "^5.0.2" + +minimatch@^3.1.1: + version "3.1.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.5.tgz#580c88f8d5445f2bd6aa8f3cadefa0de79fbd69e" + integrity sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w== + dependencies: + brace-expansion "^1.1.7" + +mozjpeg@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/mozjpeg/-/mozjpeg-8.0.0.tgz#cd990d96581626ca64b877146ce22ba00b3b308c" + integrity sha512-Ca2Yhah9hG0Iutgsn8MOrAl37P9ThnKsJatjXoWdUO+8X8GeG/6ahvHZrTyqvbs6leMww1SauWUCao/L9qBuFQ== + dependencies: + bin-build "^3.0.0" + bin-wrapper "^4.0.0" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.3, ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multicast-dns@^7.2.5: + version "7.2.5" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" + integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== + dependencies: + dns-packet "^5.2.2" + thunky "^1.0.2" + +nanoid@^3.3.11: + version "3.3.11" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" + integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +negotiator@~0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.4.tgz#777948e2452651c570b712dd01c23e262713fff7" + integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-addon-api@^7.0.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558" + integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ== + +node-forge@^1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.3.tgz#0ad80f6333b3a0045e827ac20b7f735f93716751" + integrity sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg== + +node-releases@^2.0.27: + version "2.0.36" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.36.tgz#99fd6552aaeda9e17c4713b57a63964a2e325e9d" + integrity sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-url@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" + integrity sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw== + dependencies: + prepend-http "^2.0.0" + query-string "^5.0.1" + sort-keys "^2.0.0" + +npm-conf@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9" + integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw== + dependencies: + config-chain "^1.1.11" + pify "^3.0.0" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== + dependencies: + path-key "^2.0.0" + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +npm-run-path@^5.1.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f" + integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== + dependencies: + path-key "^4.0.0" + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.13.3: + version "1.13.4" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" + integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-headers@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.1.0.tgz#59da4f91c45f5f989c6e4bcedc5a3b0aed70ff65" + integrity sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + +open@^8.0.9: + version "8.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +os-filter-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/os-filter-obj/-/os-filter-obj-2.0.0.tgz#1c0b62d5f3a2442749a2d139e6dddee6e81d8d16" + integrity sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg== + dependencies: + arch "^2.1.0" + +ow@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ow/-/ow-2.0.0.tgz#07690490ac9783b37241c4ebee32dfcab1b20ee1" + integrity sha512-ESUigmGrdhUZ2nQSFNkeKSl6ZRPupXzprMs3yF9DYlNVpJ8XAjM/fI9RUZxA7PI1K9HQDCCvBo1jr/GEIo9joQ== + dependencies: + "@sindresorhus/is" "^6.3.0" + callsites "^4.1.0" + dot-prop "^8.0.2" + environment "^1.0.0" + fast-equals "^5.0.1" + is-identifier "^1.0.0" + +p-cancelable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" + integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== + +p-cancelable@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" + integrity sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ== + +p-event@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-event/-/p-event-1.3.0.tgz#8e6b4f4f65c72bc5b6fe28b75eda874f96a4a085" + integrity sha512-hV1zbA7gwqPVFcapfeATaNjQ3J0NuzorHPyG8GPL9g/Y/TplWVBVoCKCXL6Ej2zscrCEv195QNWJXuBH6XZuzA== + dependencies: + p-timeout "^1.1.1" + +p-event@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/p-event/-/p-event-2.3.1.tgz#596279ef169ab2c3e0cae88c1cfbb08079993ef6" + integrity sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA== + dependencies: + p-timeout "^2.0.1" + +p-event@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/p-event/-/p-event-6.0.1.tgz#8f62a1e3616d4bc01fce3abda127e0383ef4715b" + integrity sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w== + dependencies: + p-timeout "^6.1.2" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + +p-is-promise@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" + integrity sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg== + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" + integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== + dependencies: + yocto-queue "^1.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f" + integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== + dependencies: + p-limit "^4.0.0" + +p-map-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-1.0.0.tgz#bf98fe575705658a9e1351befb85ae4c1f07bdca" + integrity sha512-4k9LlvY6Bo/1FcIdV33wqZQES0Py+iKISU9Uc8p8AjWoZPnFKMpVIVD3s0EYn4jzLh1I+WeUZkJ0Yoa4Qfw3Kg== + dependencies: + p-reduce "^1.0.0" + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-pipe@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-4.0.0.tgz#7e5424569351b2ab452a47826acb93ce09ad6a2c" + integrity sha512-HkPfFklpZQPUKBFXzKFB6ihLriIHxnmuQdK9WmLDwe4hf2PdhhfWT/FJa+pc3bA1ywvKXtedxIRmd4Y7BTXE4w== + +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + integrity sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ== + +p-retry@^4.5.0: + version "4.6.2" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" + integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== + dependencies: + "@types/retry" "0.12.0" + retry "^0.13.1" + +p-timeout@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" + integrity sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA== + dependencies: + p-finally "^1.0.0" + +p-timeout@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038" + integrity sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA== + dependencies: + p-finally "^1.0.0" + +p-timeout@^6.1.2: + version "6.1.4" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-6.1.4.tgz#418e1f4dd833fa96a2e3f532547dd2abdb08dbc2" + integrity sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg== + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + 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" + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-exists@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" + integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@~0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7" + integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ== + +path-type@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-6.0.0.tgz#2f1bb6791a91ce99194caede5d6c5920ed81eb51" + integrity sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ== + +peek-readable@^5.3.1: + version "5.4.2" + resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-5.4.2.tgz#aff1e1ba27a7d6911ddb103f35252ffc1787af49" + integrity sha512-peBp3qZyuS6cNIJ2akRNG1uo1WJ1d0wTxg/fxMdZ0BqCVhx242bSFHM9eNqflfJVS9SsgkzgT/1UgnsurBOTMg== + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== + +picocolors@^1.0.0, picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +picomatch@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + +pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-dir@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-7.0.0.tgz#8f0c08d6df4476756c5ff29b3282d0bab7517d11" + integrity sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA== + dependencies: + find-up "^6.3.0" + +pngquant-bin@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/pngquant-bin/-/pngquant-bin-9.0.0.tgz#51f5840e254a53972f78dd80540f5f7ed4e5e559" + integrity sha512-jlOKfIQBTNJwQn2JKK5xLmwrsi/NwVTmHRvbrknCjdWxfX1/c/+yP4Jmp9jRZWedft/vnhh+rGbvl/kUmesurg== + dependencies: + bin-build "^3.0.0" + bin-wrapper "^4.0.1" + execa "^8.0.1" + +possible-typed-array-names@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz#93e3582bc0e5426586d9d07b79ee40fc841de4ae" + integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg== + +postcss-calc@^10.1.1: + version "10.1.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-10.1.1.tgz#52b385f2e628239686eb6e3a16207a43f36064ca" + integrity sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw== + dependencies: + postcss-selector-parser "^7.0.0" + postcss-value-parser "^4.2.0" + +postcss-calc@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-9.0.1.tgz#a744fd592438a93d6de0f1434c572670361eb6c6" + integrity sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ== + dependencies: + postcss-selector-parser "^6.0.11" + postcss-value-parser "^4.2.0" + +postcss-colormin@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-6.1.0.tgz#076e8d3fb291fbff7b10e6b063be9da42ff6488d" + integrity sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw== + dependencies: + browserslist "^4.23.0" + caniuse-api "^3.0.0" + colord "^2.9.3" + postcss-value-parser "^4.2.0" + +postcss-colormin@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-7.0.5.tgz#0c7526289ab3f0daf96a376fd7430fae7258d5cf" + integrity sha512-ekIBP/nwzRWhEMmIxHHbXHcMdzd1HIUzBECaj5KEdLz9DVP2HzT065sEhvOx1dkLjYW7jyD0CngThx6bpFi2fA== + dependencies: + browserslist "^4.27.0" + caniuse-api "^3.0.0" + colord "^2.9.3" + postcss-value-parser "^4.2.0" + +postcss-convert-values@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz#3498387f8efedb817cbc63901d45bd1ceaa40f48" + integrity sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w== + dependencies: + browserslist "^4.23.0" + postcss-value-parser "^4.2.0" + +postcss-convert-values@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-7.0.8.tgz#0c599dc29891d47d7b4d6db399c402cf3ba8efc3" + integrity sha512-+XNKuPfkHTCEo499VzLMYn94TiL3r9YqRE3Ty+jP7UX4qjewUONey1t7CG21lrlTLN07GtGM8MqFVp86D4uKJg== + dependencies: + browserslist "^4.27.0" + postcss-value-parser "^4.2.0" + +postcss-discard-comments@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz#e768dcfdc33e0216380623652b0a4f69f4678b6c" + integrity sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw== + +postcss-discard-comments@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-7.0.5.tgz#0a95aa4d229a021bc441861d4773d57145ee15dd" + integrity sha512-IR2Eja8WfYgN5n32vEGSctVQ1+JARfu4UH8M7bgGh1bC+xI/obsPJXaBpQF7MAByvgwZinhpHpdrmXtvVVlKcQ== + dependencies: + postcss-selector-parser "^7.1.0" + +postcss-discard-duplicates@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz#d121e893c38dc58a67277f75bb58ba43fce4c3eb" + integrity sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw== + +postcss-discard-duplicates@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.2.tgz#9cf3e659d4f94b046eef6f93679490c0250a8e4e" + integrity sha512-eTonaQvPZ/3i1ASDHOKkYwAybiM45zFIc7KXils4mQmHLqIswXD9XNOKEVxtTFnsmwYzF66u4LMgSr0abDlh5w== + +postcss-discard-empty@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz#ee39c327219bb70473a066f772621f81435a79d9" + integrity sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ== + +postcss-discard-empty@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-7.0.1.tgz#b6c57e8b5c69023169abea30dceb93f98a2ffd9f" + integrity sha512-cFrJKZvcg/uxB6Ijr4l6qmn3pXQBna9zyrPC+sK0zjbkDUZew+6xDltSF7OeB7rAtzaaMVYSdbod+sZOCWnMOg== + +postcss-discard-overridden@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz#4e9f9c62ecd2df46e8fdb44dc17e189776572e2d" + integrity sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ== + +postcss-discard-overridden@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-7.0.1.tgz#bd9c9bc5e4548d3b6e67e7f8d64f2c9d745ae2a0" + integrity sha512-7c3MMjjSZ/qYrx3uc1940GSOzN1Iqjtlqe8uoSg+qdVPYyRb0TILSqqmtlSFuE4mTDECwsm397Ya7iXGzfF7lg== + +postcss-loader@^8.1.1: + version "8.2.1" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-8.2.1.tgz#c3d9b35498af906fe6c25eb62583c06f619f92fc" + integrity sha512-k98jtRzthjj3f76MYTs9JTpRqV1RaaMhEU0Lpw9OTmQZQdppg4B30VZ74BojuBHt3F4KyubHJoXCMUeM8Bqeow== + dependencies: + cosmiconfig "^9.0.0" + jiti "^2.5.1" + semver "^7.6.2" + +postcss-merge-longhand@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz#ba8a8d473617c34a36abbea8dda2b215750a065a" + integrity sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w== + dependencies: + postcss-value-parser "^4.2.0" + stylehacks "^6.1.1" + +postcss-merge-longhand@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-7.0.5.tgz#e1b126e92f583815482e8b1e82c47d2435a20421" + integrity sha512-Kpu5v4Ys6QI59FxmxtNB/iHUVDn9Y9sYw66D6+SZoIk4QTz1prC4aYkhIESu+ieG1iylod1f8MILMs1Em3mmIw== + dependencies: + postcss-value-parser "^4.2.0" + stylehacks "^7.0.5" + +postcss-merge-rules@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz#7aa539dceddab56019469c0edd7d22b64c3dea9d" + integrity sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ== + dependencies: + browserslist "^4.23.0" + caniuse-api "^3.0.0" + cssnano-utils "^4.0.2" + postcss-selector-parser "^6.0.16" + +postcss-merge-rules@^7.0.7: + version "7.0.7" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-7.0.7.tgz#f49537e5029ce0e655c2f31fdb205f14575c7334" + integrity sha512-njWJrd/Ms6XViwowaaCc+/vqhPG3SmXn725AGrnl+BgTuRPEacjiLEaGq16J6XirMJbtKkTwnt67SS+e2WGoew== + dependencies: + browserslist "^4.27.0" + caniuse-api "^3.0.0" + cssnano-utils "^5.0.1" + postcss-selector-parser "^7.1.0" + +postcss-minify-font-values@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz#a0e574c02ee3f299be2846369211f3b957ea4c59" + integrity sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-minify-font-values@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-7.0.1.tgz#6fb4770131b31fd5a2014bd84e32f386a3406664" + integrity sha512-2m1uiuJeTplll+tq4ENOQSzB8LRnSUChBv7oSyFLsJRtUgAAJGP6LLz0/8lkinTgxrmJSPOEhgY1bMXOQ4ZXhQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-minify-gradients@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz#ca3eb55a7bdb48a1e187a55c6377be918743dbd6" + integrity sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q== + dependencies: + colord "^2.9.3" + cssnano-utils "^4.0.2" + postcss-value-parser "^4.2.0" + +postcss-minify-gradients@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-7.0.1.tgz#933cb642dd00df397237c17194f37dcbe4cad739" + integrity sha512-X9JjaysZJwlqNkJbUDgOclyG3jZEpAMOfof6PUZjPnPrePnPG62pS17CjdM32uT1Uq1jFvNSff9l7kNbmMSL2A== + dependencies: + colord "^2.9.3" + cssnano-utils "^5.0.1" + postcss-value-parser "^4.2.0" + +postcss-minify-params@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz#54551dec77b9a45a29c3cb5953bf7325a399ba08" + integrity sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA== + dependencies: + browserslist "^4.23.0" + cssnano-utils "^4.0.2" + postcss-value-parser "^4.2.0" + +postcss-minify-params@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-7.0.5.tgz#4a0d15e312252e41d0c8504227d43538e3f607a2" + integrity sha512-FGK9ky02h6Ighn3UihsyeAH5XmLEE2MSGH5Tc4tXMFtEDx7B+zTG6hD/+/cT+fbF7PbYojsmmWjyTwFwW1JKQQ== + dependencies: + browserslist "^4.27.0" + cssnano-utils "^5.0.1" + postcss-value-parser "^4.2.0" + +postcss-minify-selectors@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz#197f7d72e6dd19eed47916d575d69dc38b396aff" + integrity sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ== + dependencies: + postcss-selector-parser "^6.0.16" + +postcss-minify-selectors@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-7.0.5.tgz#d8c89eeeb208705ab4127a464d1f54a3bc22cae3" + integrity sha512-x2/IvofHcdIrAm9Q+p06ZD1h6FPcQ32WtCRVodJLDR+WMn8EVHI1kvLxZuGKz/9EY5nAmI6lIQIrpo4tBy5+ug== + dependencies: + cssesc "^3.0.0" + postcss-selector-parser "^7.1.0" + +postcss-minify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-minify/-/postcss-minify-1.2.0.tgz#77b037d491b40c398dfcecf5ba2fd9e877fd3192" + integrity sha512-Cvyz+hW5eBG0okSSOGDeussQy4v9mZHRhMevP2jwADqDS1v2gfoLo94+g4fCeVYtESZKqr+ViMPv3yPkWZFmFQ== + dependencies: + postcss-selector-parser "^6.0 || ^7.0" + postcss-value-parser "^4.1" + +postcss-modules-extract-imports@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#b4497cb85a9c0c4b5aabeb759bb25e8d89f15002" + integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== + +postcss-modules-local-by-default@^4.0.5: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz#d150f43837831dae25e4085596e84f6f5d6ec368" + integrity sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^7.0.0" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz#1bbccddcb398f1d7a511e0a2d1d047718af4078c" + integrity sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA== + dependencies: + postcss-selector-parser "^7.0.0" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-normalize-charset@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz#1ec25c435057a8001dac942942a95ffe66f721e1" + integrity sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ== + +postcss-normalize-charset@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-7.0.1.tgz#bccc3f7c5f4440883608eea8b444c8f41ce55ff6" + integrity sha512-sn413ofhSQHlZFae//m9FTOfkmiZ+YQXsbosqOWRiVQncU2BA3daX3n0VF3cG6rGLSFVc5Di/yns0dFfh8NFgQ== + +postcss-normalize-display-values@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz#54f02764fed0b288d5363cbb140d6950dbbdd535" + integrity sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-display-values@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.1.tgz#feb40277d89a7f677b67a84cac999f0306e38235" + integrity sha512-E5nnB26XjSYz/mGITm6JgiDpAbVuAkzXwLzRZtts19jHDUBFxZ0BkXAehy0uimrOjYJbocby4FVswA/5noOxrQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-positions@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz#e982d284ec878b9b819796266f640852dbbb723a" + integrity sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-positions@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-7.0.1.tgz#c771c0d33034455205f060b999d8557c2308d22c" + integrity sha512-pB/SzrIP2l50ZIYu+yQZyMNmnAcwyYb9R1fVWPRxm4zcUFCY2ign7rcntGFuMXDdd9L2pPNUgoODDk91PzRZuQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-repeat-style@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz#f8006942fd0617c73f049dd8b6201c3a3040ecf3" + integrity sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-repeat-style@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.1.tgz#05fe4d838eedbd996436c5cab78feef9bb1ae57b" + integrity sha512-NsSQJ8zj8TIDiF0ig44Byo3Jk9e4gNt9x2VIlJudnQQ5DhWAHJPF4Tr1ITwyHio2BUi/I6Iv0HRO7beHYOloYQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-string@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz#e3cc6ad5c95581acd1fc8774b309dd7c06e5e363" + integrity sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-string@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-7.0.1.tgz#0f111e7b5dfb6de6ab19f09d9e1c16fabeee232f" + integrity sha512-QByrI7hAhsoze992kpbMlJSbZ8FuCEc1OT9EFbZ6HldXNpsdpZr+YXC5di3UEv0+jeZlHbZcoCADgb7a+lPmmQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-timing-functions@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz#40cb8726cef999de984527cbd9d1db1f3e9062c0" + integrity sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-timing-functions@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.1.tgz#7b645a36f113fec49d95d56386c9980316c71216" + integrity sha512-bHifyuuSNdKKsnNJ0s8fmfLMlvsQwYVxIoUBnowIVl2ZAdrkYQNGVB4RxjfpvkMjipqvbz0u7feBZybkl/6NJg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-unicode@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz#aaf8bbd34c306e230777e80f7f12a4b7d27ce06e" + integrity sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg== + dependencies: + browserslist "^4.23.0" + postcss-value-parser "^4.2.0" + +postcss-normalize-unicode@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.5.tgz#d47a3cc40529d7eeb18d7f7a8a215c38c54455cd" + integrity sha512-X6BBwiRxVaFHrb2WyBMddIeB5HBjJcAaUHyhLrM2FsxSq5TFqcHSsK7Zu1otag+o0ZphQGJewGH1tAyrD0zX1Q== + dependencies: + browserslist "^4.27.0" + postcss-value-parser "^4.2.0" + +postcss-normalize-url@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz#292792386be51a8de9a454cb7b5c58ae22db0f79" + integrity sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-url@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-7.0.1.tgz#d6471a22b6747ce93d7038c16eb9f1ba8b307e25" + integrity sha512-sUcD2cWtyK1AOL/82Fwy1aIVm/wwj5SdZkgZ3QiUzSzQQofrbq15jWJ3BA7Z+yVRwamCjJgZJN0I9IS7c6tgeQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-whitespace@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz#fbb009e6ebd312f8b2efb225c2fcc7cf32b400cd" + integrity sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-whitespace@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.1.tgz#ab8e9ff1f3213f3f3851c0a7d0e4ce4716777cea" + integrity sha512-vsbgFHMFQrJBJKrUFJNZ2pgBeBkC2IvvoHjz1to0/0Xk7sII24T0qFOiJzG6Fu3zJoq/0yI4rKWi7WhApW+EFA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-ordered-values@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz#366bb663919707093451ab70c3f99c05672aaae5" + integrity sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q== + dependencies: + cssnano-utils "^4.0.2" + postcss-value-parser "^4.2.0" + +postcss-ordered-values@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-7.0.2.tgz#0e803fbb9601e254270481772252de9a8c905f48" + integrity sha512-AMJjt1ECBffF7CEON/Y0rekRLS6KsePU6PRP08UqYW4UGFRnTXNrByUzYK1h8AC7UWTZdQ9O3Oq9kFIhm0SFEw== + dependencies: + cssnano-utils "^5.0.1" + postcss-value-parser "^4.2.0" + +postcss-reduce-initial@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz#4401297d8e35cb6e92c8e9586963e267105586ba" + integrity sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw== + dependencies: + browserslist "^4.23.0" + caniuse-api "^3.0.0" + +postcss-reduce-initial@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-7.0.5.tgz#cf74bb747dfa003cd3d5372081f6157e6d8e1545" + integrity sha512-RHagHLidG8hTZcnr4FpyMB2jtgd/OcyAazjMhoy5qmWJOx1uxKh4ntk0Pb46ajKM0rkf32lRH4C8c9qQiPR6IA== + dependencies: + browserslist "^4.27.0" + caniuse-api "^3.0.0" + +postcss-reduce-transforms@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz#6fa2c586bdc091a7373caeee4be75a0f3e12965d" + integrity sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-reduce-transforms@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.1.tgz#f87111264b0dfa07e1f708d7e6401578707be5d6" + integrity sha512-MhyEbfrm+Mlp/36hvZ9mT9DaO7dbncU0CvWI8V93LRkY6IYlu38OPg3FObnuKTUxJ4qA8HpurdQOo5CyqqO76g== + dependencies: + postcss-value-parser "^4.2.0" + +"postcss-selector-parser@^6.0 || ^7.0", postcss-selector-parser@^7.0.0, postcss-selector-parser@^7.1.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz#e75d2e0d843f620e5df69076166f4e16f891cb9f" + integrity sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.16: + version "6.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" + integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-svgo@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-6.0.3.tgz#1d6e180d6df1fa8a3b30b729aaa9161e94f04eaa" + integrity sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g== + dependencies: + postcss-value-parser "^4.2.0" + svgo "^3.2.0" + +postcss-svgo@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-7.1.0.tgz#7eb6764a643ac2699bf56eef6d2676d428ed4542" + integrity sha512-KnAlfmhtoLz6IuU3Sij2ycusNs4jPW+QoFE5kuuUOK8awR6tMxZQrs5Ey3BUz7nFCzT3eqyFgqkyrHiaU2xx3w== + dependencies: + postcss-value-parser "^4.2.0" + svgo "^4.0.0" + +postcss-unique-selectors@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz#983ab308896b4bf3f2baaf2336e14e52c11a2088" + integrity sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg== + dependencies: + postcss-selector-parser "^6.0.16" + +postcss-unique-selectors@^7.0.4: + version "7.0.4" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-7.0.4.tgz#625ad1c808bdf322fab6c027ae8d4f2637140995" + integrity sha512-pmlZjsmEAG7cHd7uK3ZiNSW6otSZ13RHuZ/4cDN/bVglS5EpF2r2oxY99SuOHa8m7AWoBCelTS3JPpzsIs8skQ== + dependencies: + postcss-selector-parser "^7.1.0" + +postcss-value-parser@^4.1, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^8.2.14, postcss@^8.4.24, postcss@^8.4.33, postcss@^8.4.39: + version "8.5.8" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.8.tgz#6230ecc8fb02e7a0f6982e53990937857e13f399" + integrity sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg== + dependencies: + nanoid "^3.3.11" + picocolors "^1.1.1" + source-map-js "^1.2.1" + +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg== + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== + +pretty-error@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" + integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== + dependencies: + lodash "^4.17.20" + renderkid "^3.0.0" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== + +pump@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.4.tgz#1f313430527fa8b905622ebd22fe1444e757ab3c" + integrity sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +qs@~6.14.0: + version "6.14.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.2.tgz#b5634cf9d9ad9898e31fba3504e866e8efb6798c" + integrity sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q== + dependencies: + side-channel "^1.1.0" + +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@~2.5.3: + version "2.5.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.3.tgz#11c6650ee770a7de1b494f197927de0c923822e2" + integrity sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA== + dependencies: + bytes "~3.1.2" + http-errors "~2.0.1" + iconv-lite "~0.4.24" + unpipe "~1.0.0" + +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.3.0, readable-stream@^2.3.5: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^4.0.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.1.2.tgz#eb85801435fbf2a7ee58f19e0921b068fc69948d" + integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg== + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +rechoir@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== + dependencies: + resolve "^1.20.0" + +regenerate-unicode-properties@^10.2.2: + version "10.2.2" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz#aa113812ba899b630658c7623466be71e1f86f66" + integrity sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regex-parser@^2.2.11: + version "2.3.1" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.3.1.tgz#ee3f70e50bdd81a221d505242cb9a9c275a2ad91" + integrity sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ== + +regexpu-core@^6.3.1: + version "6.4.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.4.0.tgz#3580ce0c4faedef599eccb146612436b62a176e5" + integrity sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^10.2.2" + regjsgen "^0.8.0" + regjsparser "^0.13.0" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.2.1" + +regjsgen@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.8.0.tgz#df23ff26e0c5b300a6470cad160a9d090c3a37ab" + integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q== + +regjsparser@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.13.0.tgz#01f8351335cf7898d43686bc74d2dd71c847ecc0" + integrity sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q== + dependencies: + jsesc "~3.1.0" + +renderkid@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" + integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== + dependencies: + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^6.0.1" + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +reserved-identifiers@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/reserved-identifiers/-/reserved-identifiers-1.2.0.tgz#d2982cd698e317dd3dced1ee1c52412dbd64fc64" + integrity sha512-yE7KUfFvaBFzGPs5H3Ops1RevfUEsDc5Iz65rOwWg4lE8HJSYtle77uul3+573457oHvBKuHYDl/xqUkKpEEdw== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-url-loader@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz#ee3142fb1f1e0d9db9524d539cfa166e9314f795" + integrity sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg== + dependencies: + adjust-sourcemap-loader "^4.0.0" + convert-source-map "^1.7.0" + loader-utils "^2.0.0" + postcss "^8.2.14" + source-map "0.6.1" + +resolve@^1.20.0, resolve@^1.22.11: + version "1.22.11" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.11.tgz#aad857ce1ffb8bfa9b0b1ac29f1156383f68c262" + integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ== + dependencies: + is-core-module "^2.16.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +responselike@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== + dependencies: + lowercase-keys "^1.0.0" + +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +reusify@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" + integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== + +rimraf@^2.5.4, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.2.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sass-loader@^14.2.1: + version "14.2.1" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-14.2.1.tgz#db9ad96b56dc1c1ea546101e76375d5b008fec70" + integrity sha512-G0VcnMYU18a4N7VoNDegg2OuMjYtxnqzQWARVWCIVSZwJeiL9kg8QMsuIZOplsJgTzZLF6jGxI3AClj8I9nRdQ== + dependencies: + neo-async "^2.6.2" + +sass@^1.77.8: + version "1.97.3" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.97.3.tgz#9cb59339514fa7e2aec592b9700953ac6e331ab2" + integrity sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg== + dependencies: + chokidar "^4.0.0" + immutable "^5.0.2" + source-map-js ">=0.6.2 <2.0.0" + optionalDependencies: + "@parcel/watcher" "^2.4.1" + +sax@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.5.0.tgz#b5549b671069b7aa392df55ec7574cf411179eb8" + integrity sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA== + +schema-utils@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^4.0.0, schema-utils@^4.0.1, schema-utils@^4.2.0, schema-utils@^4.3.0, schema-utils@^4.3.3: + version "4.3.3" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.3.3.tgz#5b1850912fa31df90716963d45d9121fdfc09f46" + integrity sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + +seek-bzip@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.6.tgz#35c4171f55a680916b52a07859ecf3b5857f21c4" + integrity sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ== + dependencies: + commander "^2.8.1" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== + +selfsigned@^2.1.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" + integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== + dependencies: + "@types/node-forge" "^1.3.0" + node-forge "^1" + +semver-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" + integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== + +semver-truncate@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/semver-truncate/-/semver-truncate-1.1.2.tgz#57f41de69707a62709a7e0104ba2117109ea47e8" + integrity sha512-V1fGg9i4CL3qesB6U0L6XAm4xOJiHmt4QAacazumuasc03BvtFGIMCduv01JWQ69Nv+JST9TqhSCiJoxoY031w== + dependencies: + semver "^5.3.0" + +semver@^5.3.0, semver@^5.5.0, semver@^5.6.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.2, semver@^7.5.4, semver@^7.6.2: + version "7.7.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a" + integrity sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA== + +send@~0.19.0, send@~0.19.1: + version "0.19.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.19.2.tgz#59bc0da1b4ea7ad42736fd642b1c4294e114ff29" + integrity sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~2.0.0" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "~0.5.2" + http-errors "~2.0.1" + mime "1.6.0" + ms "2.1.3" + on-finished "~2.4.1" + range-parser "~1.2.1" + statuses "~2.0.2" + +serialize-javascript@^6.0.1, serialize-javascript@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.2" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.2.tgz#2988e3612106d78a5e4849ddff552ce7bd3d9bcb" + integrity sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ== + dependencies: + accepts "~1.3.8" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.8.0" + mime-types "~2.1.35" + parseurl "~1.3.3" + +serve-static@~1.16.2: + version "1.16.3" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.3.tgz#a97b74d955778583f3862a4f0b841eb4d5d78cf9" + integrity sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA== + dependencies: + encodeurl "~2.0.0" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "~0.19.1" + +set-function-length@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +setprototypeof@1.2.0, setprototypeof@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.3.tgz#55e40ef33cf5c689902353a3d8cd1a6725f08b4b" + integrity sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw== + +side-channel-list@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" + integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + +side-channel-map@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" + integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + +side-channel-weakmap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" + integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + side-channel-map "^1.0.1" + +side-channel@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" + integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + side-channel-list "^1.0.0" + side-channel-map "^1.0.1" + side-channel-weakmap "^1.0.2" + +signal-exit@^3.0.0, signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signal-exit@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +slash@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-5.1.0.tgz#be3adddcdf09ac38eebe8dcdc7b1a57a75b095ce" + integrity sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg== + +sockjs@^0.3.24: + version "0.3.24" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== + dependencies: + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" + +sort-keys-length@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sort-keys-length/-/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188" + integrity sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw== + dependencies: + sort-keys "^1.0.0" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg== + dependencies: + is-plain-obj "^1.0.0" + +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg== + dependencies: + is-plain-obj "^1.0.0" + +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@0.6.1, source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +stackframe@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" + integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== + +"statuses@>= 1.5.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +statuses@~2.0.1, statuses@~2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.2.tgz#8f75eecef765b5e1cfcdc080da59409ed424e382" + integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== + +string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-dirs@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" + integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g== + dependencies: + is-natural-number "^4.0.1" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + +strip-outer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631" + integrity sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg== + dependencies: + escape-string-regexp "^1.0.2" + +strnum@^1.0.5: + version "1.1.2" + resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.1.2.tgz#57bca4fbaa6f271081715dbc9ed7cee5493e28e4" + integrity sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA== + +strtok3@^9.0.1: + version "9.1.1" + resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-9.1.1.tgz#f8feb188b3fcdbf9b8819cc9211a824c3731df38" + integrity sha512-FhwotcEqjr241ZbjFzjlIYg6c5/L/s4yBGWSMvJ9UoExiSqL+FnFA/CaeZx17WGaZMS/4SOZp8wH18jSS4R4lw== + dependencies: + "@tokenizer/token" "^0.3.0" + peek-readable "^5.3.1" + +style-loader@^3.3.0: + version "3.3.4" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.4.tgz#f30f786c36db03a45cbd55b6a70d930c479090e7" + integrity sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w== + +stylehacks@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-6.1.1.tgz#543f91c10d17d00a440430362d419f79c25545a6" + integrity sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg== + dependencies: + browserslist "^4.23.0" + postcss-selector-parser "^6.0.16" + +stylehacks@^7.0.5: + version "7.0.7" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-7.0.7.tgz#12b0dd1eceee4d564aae6da0632804ef0004a5be" + integrity sha512-bJkD0JkEtbRrMFtwgpJyBbFIwfDDONQ1Ov3sDLZQP8HuJ73kBOyx66H4bOcAbVWmnfLdvQ0AJwXxOMkpujcO6g== + dependencies: + browserslist "^4.27.0" + postcss-selector-parser "^7.1.0" + +super-regex@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/super-regex/-/super-regex-1.1.0.tgz#14b69b6374f7b3338db52ecd511dae97c27acf75" + integrity sha512-WHkws2ZflZe41zj6AolvvmaTrWds/VuyeYr9iPVv/oQeaIoVxMKaushfFWpOGDT+GuBrM/sVqF8KUCYQlSSTdQ== + dependencies: + function-timeout "^1.0.1" + make-asynchronous "^1.0.1" + time-span "^5.1.0" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svgo@^3.2.0, svgo@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.3.3.tgz#8246aee0b08791fde3b0ed22b5661b471fadf58e" + integrity sha512-+wn7I4p7YgJhHs38k2TNjy1vCfPIfLIJWR5MnCStsN8WuuTcBnRKcMHQLMM2ijxGZmDoZwNv8ipl5aTTen62ng== + dependencies: + commander "^7.2.0" + css-select "^5.1.0" + css-tree "^2.3.1" + css-what "^6.1.0" + csso "^5.0.5" + picocolors "^1.0.0" + sax "^1.5.0" + +svgo@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-4.0.1.tgz#c82dacd04ee9f1d55cd4e0b7f9a214c86670e3ee" + integrity sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w== + dependencies: + commander "^11.1.0" + css-select "^5.1.0" + css-tree "^3.0.1" + css-what "^6.1.0" + csso "^5.0.5" + picocolors "^1.1.1" + sax "^1.5.0" + +sync-rpc@^1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/sync-rpc/-/sync-rpc-1.3.6.tgz#b2e8b2550a12ccbc71df8644810529deb68665a7" + integrity sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw== + dependencies: + get-port "^3.1.0" + +tapable@^2.2.1, tapable@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.3.0.tgz#7e3ea6d5ca31ba8e078b560f0d83ce9a14aa8be6" + integrity sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg== + +tar-stream@^1.5.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" + integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== + dependencies: + bl "^1.0.0" + buffer-alloc "^1.2.0" + end-of-stream "^1.0.0" + fs-constants "^1.0.0" + readable-stream "^2.3.0" + to-buffer "^1.1.1" + xtend "^4.0.0" + +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== + +tempfile@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-2.0.0.tgz#6b0446856a9b1114d1856ffcbe509cccb0977265" + integrity sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA== + dependencies: + temp-dir "^1.0.0" + uuid "^3.0.1" + +terser-webpack-plugin@^5.3.0, terser-webpack-plugin@^5.3.17: + version "5.3.17" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.17.tgz#75ea98876297fbb190d2fbb395e982582b859a67" + integrity sha512-YR7PtUp6GMU91BgSJmlaX/rS2lGDbAF7D+Wtq7hRO+MiljNmodYvqslzCFiYVAgW+Qoaaia/QUIP4lGXufjdZw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.25" + jest-worker "^27.4.5" + schema-utils "^4.3.0" + terser "^5.31.1" + +terser@^5.31.1: + version "5.46.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.46.0.tgz#1b81e560d584bbdd74a8ede87b4d9477b0ff9695" + integrity sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.15.0" + commander "^2.20.0" + source-map-support "~0.5.20" + +through@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +time-span@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/time-span/-/time-span-5.1.0.tgz#80c76cf5a0ca28e0842d3f10a4e99034ce94b90d" + integrity sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA== + dependencies: + convert-hrtime "^5.0.0" + +timed-out@^4.0.0, timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== + +tmp@^0.2.1: + version "0.2.5" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.5.tgz#b06bcd23f0f3c8357b426891726d16015abfd8f8" + integrity sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow== + +to-buffer@^1.1.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.2.2.tgz#ffe59ef7522ada0a2d1cb5dfe03bb8abc3cdc133" + integrity sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw== + dependencies: + isarray "^2.0.5" + safe-buffer "^5.2.1" + typed-array-buffer "^1.0.3" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1, toidentifier@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +token-types@^6.0.0: + version "6.1.2" + resolved "https://registry.yarnpkg.com/token-types/-/token-types-6.1.2.tgz#18d0fd59b996d421f9f83914d6101c201bd08129" + integrity sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww== + dependencies: + "@borewit/text-codec" "^0.2.1" + "@tokenizer/token" "^0.3.0" + ieee754 "^1.2.1" + +trim-repeated@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" + integrity sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg== + dependencies: + escape-string-regexp "^1.0.2" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +type-fest@^3.8.0: + version "3.13.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.13.1.tgz#bb744c1f0678bea7543a2d1ec24e83e68e8c8706" + integrity sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g== + +type-fest@^4.6.0: + version "4.41.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.41.0.tgz#6ae1c8e5731273c2bf1f58ad39cbae2c91a46c58" + integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typed-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536" + integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-typed-array "^1.1.14" + +uint8array-extras@^1.1.0, uint8array-extras@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/uint8array-extras/-/uint8array-extras-1.5.0.tgz#10d2a85213de3ada304fea1c454f635c73839e86" + integrity sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A== + +unbzip2-stream@^1.0.9: + version "1.4.3" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" + integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== + dependencies: + buffer "^5.2.1" + through "^2.3.8" + +undici-types@~7.18.0: + version "7.18.2" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.18.2.tgz#29357a89e7b7ca4aef3bf0fd3fd0cd73884229e9" + integrity sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w== + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz#cb3173fe47ca743e228216e4a3ddc4c84d628cc2" + integrity sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz#65a7adfad8574c219890e219285ce4c64ed67eaa" + integrity sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz#301d4f8a43d2b75c97adfad87c9dd5350c9475d1" + integrity sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ== + +unicorn-magic@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/unicorn-magic/-/unicorn-magic-0.3.0.tgz#4efd45c85a69e0dd576d25532fbfa22aa5c8a104" + integrity sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA== + +unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +update-browserslist-db@^1.2.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz#64d76db58713136acbeb4c49114366cc6cc2e80d" + integrity sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.1" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + integrity sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA== + dependencies: + prepend-http "^1.0.1" + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== + dependencies: + prepend-http "^2.0.0" + +url-to-options@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" + integrity sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A== + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@^3.0.1: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +watchpack@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.5.1.tgz#dd38b601f669e0cbf567cb802e75cead82cde102" + integrity sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +web-worker@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.5.0.tgz#71b2b0fbcc4293e8f0aa4f6b8a3ffebff733dcc5" + integrity sha512-RiMReJrTAiA+mBjGONMnjVDP2u3p9R1vkcGz6gDIrOMT3oGuYwX2WRMYI9ipkphSuE5XKEhydbhNEJh4NY9mlw== + +webpack-cli@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.4.tgz#c8e046ba7eaae4911d7e71e2b25b776fcc35759b" + integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^2.1.1" + "@webpack-cli/info" "^2.0.2" + "@webpack-cli/serve" "^2.0.5" + colorette "^2.0.14" + commander "^10.0.1" + cross-spawn "^7.0.3" + envinfo "^7.7.3" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^3.1.1" + rechoir "^0.8.0" + webpack-merge "^5.7.3" + +webpack-dev-middleware@^5.3.4: + version "5.3.4" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz#eb7b39281cbce10e104eb2b8bf2b63fce49a3517" + integrity sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q== + dependencies: + colorette "^2.0.10" + memfs "^3.4.3" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" + +webpack-dev-server@^4.8.0: + version "4.15.2" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz#9e0c70a42a012560860adb186986da1248333173" + integrity sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g== + dependencies: + "@types/bonjour" "^3.5.9" + "@types/connect-history-api-fallback" "^1.3.5" + "@types/express" "^4.17.13" + "@types/serve-index" "^1.9.1" + "@types/serve-static" "^1.13.10" + "@types/sockjs" "^0.3.33" + "@types/ws" "^8.5.5" + ansi-html-community "^0.0.8" + bonjour-service "^1.0.11" + chokidar "^3.5.3" + colorette "^2.0.10" + compression "^1.7.4" + connect-history-api-fallback "^2.0.0" + default-gateway "^6.0.3" + express "^4.17.3" + graceful-fs "^4.2.6" + html-entities "^2.3.2" + http-proxy-middleware "^2.0.3" + ipaddr.js "^2.0.1" + launch-editor "^2.6.0" + open "^8.0.9" + p-retry "^4.5.0" + rimraf "^3.0.2" + schema-utils "^4.0.0" + selfsigned "^2.1.1" + serve-index "^1.9.1" + sockjs "^0.3.24" + spdy "^4.0.2" + webpack-dev-middleware "^5.3.4" + ws "^8.13.0" + +webpack-merge@^5.7.3: + version "5.10.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" + integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== + dependencies: + clone-deep "^4.0.1" + flat "^5.0.2" + wildcard "^2.0.0" + +webpack-sources@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.3.4.tgz#a338b95eb484ecc75fbb196cbe8a2890618b4891" + integrity sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q== + +webpack@^5.93.0: + version "5.105.4" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.105.4.tgz#1b77fcd55a985ac7ca9de80a746caffa38220169" + integrity sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw== + dependencies: + "@types/eslint-scope" "^3.7.7" + "@types/estree" "^1.0.8" + "@types/json-schema" "^7.0.15" + "@webassemblyjs/ast" "^1.14.1" + "@webassemblyjs/wasm-edit" "^1.14.1" + "@webassemblyjs/wasm-parser" "^1.14.1" + acorn "^8.16.0" + acorn-import-phases "^1.0.3" + browserslist "^4.28.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.20.0" + es-module-lexer "^2.0.0" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.11" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.3.1" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^4.3.3" + tapable "^2.3.0" + terser-webpack-plugin "^5.3.17" + watchpack "^2.5.1" + webpack-sources "^3.3.4" + +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +which-typed-array@^1.1.16: + version "1.1.20" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.20.tgz#3fdb7adfafe0ea69157b1509f3a1cd892bd1d122" + integrity sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" + for-each "^0.3.5" + get-proto "^1.0.1" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wildcard@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" + integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@^8.13.0: + version "8.19.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.19.0.tgz#ddc2bdfa5b9ad860204f5a72a4863a8895fd8c8b" + integrity sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg== + +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yargs-parser@^21.0.0: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yauzl@^2.4.2: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + +yocto-queue@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.2.2.tgz#3e09c95d3f1aa89a58c114c99223edf639152c00" + integrity sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ== From 0c009ab8ceadd6fdb67e7cdc64f9c8da1516d325 Mon Sep 17 00:00:00 2001 From: Kamil Kuzminski Date: Fri, 6 Mar 2026 13:16:27 +0100 Subject: [PATCH 02/28] CS --- contao/config/config.php | 7 +- contao/dca/tl_cfg_tag.php | 4 +- contao/languages/de/default.php | 8 -- contao/languages/de/modules.php | 8 -- contao/languages/de/tl_cfg_tag.php | 8 -- contao/languages/en/default.php | 8 -- contao/languages/en/modules.php | 8 -- contao/languages/en/tl_cfg_tag.php | 8 -- src/CodefogTagsBundle.php | 11 -- src/ContaoManager/Plugin.php | 11 -- .../CodefogTagsExtension.php | 13 +-- .../Compiler/ManagerPass.php | 13 +-- src/DependencyInjection/Configuration.php | 15 +-- src/Driver.php | 8 -- .../DataContainer/TagListener.php | 18 +-- src/EventListener/InsertTagsListener.php | 8 -- src/EventListener/TagManagerListener.php | 4 +- src/Exception/NoTagsException.php | 8 -- src/Finder/SourceCriteria.php | 14 +-- src/Finder/SourceFinder.php | 15 ++- src/Finder/TagCriteria.php | 8 -- src/Finder/TagFinder.php | 6 +- src/Manager/DcaAwareInterface.php | 8 -- src/Manager/DefaultManager.php | 48 ++------ src/Manager/InsertTagsAwareInterface.php | 8 -- src/Manager/ManagerInterface.php | 4 +- src/ManagerRegistry.php | 10 +- src/Model/TagModel.php | 8 -- src/Tag.php | 8 -- src/Widget/TagsWidget.php | 51 +++------ tests/CodefogTagsBundleTest.php | 6 +- tests/ContaoManager/PluginTest.php | 6 +- .../CodefogTagsExtensionTest.php | 46 ++++---- .../Compiler/ManagerPassTest.php | 11 +- .../EventListener/InsertTagsListenerTest.php | 12 +- .../EventListener/TagManagerListenerTest.php | 58 ++++++---- tests/Finder/SourceCriteriaTest.php | 24 ++-- tests/Finder/TagCriteriaTest.php | 32 +++--- tests/Fixtures/DummyManager.php | 28 +---- tests/Fixtures/Model/TagModel.php | 4 +- tests/Manager/DefaultManagerTest.php | 107 +++++++++--------- tests/ManagerRegistryTest.php | 10 +- tests/TagTest.php | 16 +-- tests/bootstrap.php | 14 +-- 44 files changed, 252 insertions(+), 478 deletions(-) diff --git a/contao/config/config.php b/contao/config/config.php index b141920..fbe4d0d 100644 --- a/contao/config/config.php +++ b/contao/config/config.php @@ -2,6 +2,9 @@ declare(strict_types=1); +use Codefog\TagsBundle\Model\TagModel; +use Codefog\TagsBundle\Widget\TagsWidget; + /* * Tags Bundle for Contao Open Source CMS. * @@ -17,12 +20,12 @@ /* * Backend widgets */ -$GLOBALS['BE_FFL']['cfgTags'] = Codefog\TagsBundle\Widget\TagsWidget::class; +$GLOBALS['BE_FFL']['cfgTags'] = TagsWidget::class; /* * Models */ -$GLOBALS['TL_MODELS']['tl_cfg_tag'] = \Codefog\TagsBundle\Model\TagModel::class; +$GLOBALS['TL_MODELS']['tl_cfg_tag'] = TagModel::class; /* * Hooks diff --git a/contao/dca/tl_cfg_tag.php b/contao/dca/tl_cfg_tag.php index 0bda333..b7312c7 100644 --- a/contao/dca/tl_cfg_tag.php +++ b/contao/dca/tl_cfg_tag.php @@ -2,6 +2,8 @@ declare(strict_types=1); +use Codefog\TagsBundle\Driver; + /* * Tags Bundle for Contao Open Source CMS. * @@ -13,7 +15,7 @@ $GLOBALS['TL_DCA']['tl_cfg_tag'] = [ // Config 'config' => [ - 'dataContainer' => \Codefog\TagsBundle\Driver::class, + 'dataContainer' => Driver::class, 'enableVersioning' => true, 'notCopyable' => true, 'onload_callback' => [ diff --git a/contao/languages/de/default.php b/contao/languages/de/default.php index b745857..61fa8d2 100644 --- a/contao/languages/de/default.php +++ b/contao/languages/de/default.php @@ -2,12 +2,4 @@ declare(strict_types=1); -/* - * Tags Bundle for Contao Open Source CMS. - * - * @copyright Copyright (c) 2020, Codefog - * @author Codefog - * @license MIT - */ - $GLOBALS['TL_LANG']['MSC']['cfg_tags.add'] = 'Hinzufügen'; diff --git a/contao/languages/de/modules.php b/contao/languages/de/modules.php index 54befae..3899021 100644 --- a/contao/languages/de/modules.php +++ b/contao/languages/de/modules.php @@ -2,12 +2,4 @@ declare(strict_types=1); -/* - * Tags Bundle for Contao Open Source CMS. - * - * @copyright Copyright (c) 2020, Codefog - * @author Codefog - * @license MIT - */ - $GLOBALS['TL_LANG']['MOD']['cfg_tags'] = ['Schlagworte']; diff --git a/contao/languages/de/tl_cfg_tag.php b/contao/languages/de/tl_cfg_tag.php index 9a94334..f2f19a2 100644 --- a/contao/languages/de/tl_cfg_tag.php +++ b/contao/languages/de/tl_cfg_tag.php @@ -2,14 +2,6 @@ declare(strict_types=1); -/* - * Tags Bundle for Contao Open Source CMS. - * - * @copyright Copyright (c) 2020, Codefog - * @author Codefog - * @license MIT - */ - $GLOBALS['TL_LANG']['tl_cfg_tag']['name'] = ['Name', 'Geben Sie hier einen Namen ein.']; $GLOBALS['TL_LANG']['tl_cfg_tag']['alias'] = ['Alias', 'Der Alias ist eine eindeutige Referenz, die anstelle der numerischen ID aufgerufen werden kann.']; $GLOBALS['TL_LANG']['tl_cfg_tag']['source'] = ['Quelle', 'Wählen Sie hier eine Quelle aus.']; diff --git a/contao/languages/en/default.php b/contao/languages/en/default.php index 18b58f8..ba36e0a 100644 --- a/contao/languages/en/default.php +++ b/contao/languages/en/default.php @@ -2,12 +2,4 @@ declare(strict_types=1); -/* - * Tags Bundle for Contao Open Source CMS. - * - * @copyright Copyright (c) 2020, Codefog - * @author Codefog - * @license MIT - */ - $GLOBALS['TL_LANG']['MSC']['cfg_tags.add'] = 'Add'; diff --git a/contao/languages/en/modules.php b/contao/languages/en/modules.php index 43cf391..86285a7 100644 --- a/contao/languages/en/modules.php +++ b/contao/languages/en/modules.php @@ -2,12 +2,4 @@ declare(strict_types=1); -/* - * Tags Bundle for Contao Open Source CMS. - * - * @copyright Copyright (c) 2020, Codefog - * @author Codefog - * @license MIT - */ - $GLOBALS['TL_LANG']['MOD']['cfg_tags'] = ['Tags']; diff --git a/contao/languages/en/tl_cfg_tag.php b/contao/languages/en/tl_cfg_tag.php index 260d27a..fc96551 100644 --- a/contao/languages/en/tl_cfg_tag.php +++ b/contao/languages/en/tl_cfg_tag.php @@ -2,14 +2,6 @@ declare(strict_types=1); -/* - * Tags Bundle for Contao Open Source CMS. - * - * @copyright Copyright (c) 2020, Codefog - * @author Codefog - * @license MIT - */ - $GLOBALS['TL_LANG']['tl_cfg_tag']['name'] = ['Name', 'Please enter the tag name.']; $GLOBALS['TL_LANG']['tl_cfg_tag']['alias'] = ['Alias', 'The alias is a unique reference which can be called instead of its numeric ID.']; $GLOBALS['TL_LANG']['tl_cfg_tag']['source'] = ['Source', 'Please choose the tag source.']; diff --git a/src/CodefogTagsBundle.php b/src/CodefogTagsBundle.php index 6f82ec6..72ca8c7 100644 --- a/src/CodefogTagsBundle.php +++ b/src/CodefogTagsBundle.php @@ -2,14 +2,6 @@ declare(strict_types=1); -/* - * Tags Bundle for Contao Open Source CMS. - * - * @copyright Copyright (c) 2020, Codefog - * @author Codefog - * @license MIT - */ - namespace Codefog\TagsBundle; use Codefog\TagsBundle\DependencyInjection\Compiler\ManagerPass; @@ -24,9 +16,6 @@ public function getPath(): string return \dirname(__DIR__); } - /** - * {@inheritdoc} - */ public function build(ContainerBuilder $container): void { $container->addCompilerPass(new ManagerPass('codefog_tags.manager_registry')); diff --git a/src/ContaoManager/Plugin.php b/src/ContaoManager/Plugin.php index 4aa706d..2c568aa 100644 --- a/src/ContaoManager/Plugin.php +++ b/src/ContaoManager/Plugin.php @@ -2,14 +2,6 @@ declare(strict_types=1); -/* - * Tags Bundle for Contao Open Source CMS. - * - * @copyright Copyright (c) 2020, Codefog - * @author Codefog - * @license MIT - */ - namespace Codefog\TagsBundle\ContaoManager; use Codefog\HasteBundle\CodefogHasteBundle; @@ -21,9 +13,6 @@ class Plugin implements BundlePluginInterface { - /** - * {@inheritdoc} - */ public function getBundles(ParserInterface $parser) { return [ diff --git a/src/DependencyInjection/CodefogTagsExtension.php b/src/DependencyInjection/CodefogTagsExtension.php index d649e9b..b84614a 100755 --- a/src/DependencyInjection/CodefogTagsExtension.php +++ b/src/DependencyInjection/CodefogTagsExtension.php @@ -2,14 +2,6 @@ declare(strict_types=1); -/* - * Tags Bundle for Contao Open Source CMS. - * - * @copyright Copyright (c) 2020, Codefog - * @author Codefog - * @license MIT - */ - namespace Codefog\TagsBundle\DependencyInjection; use Codefog\TagsBundle\DependencyInjection\Compiler\ManagerPass; @@ -21,9 +13,6 @@ class CodefogTagsExtension extends ConfigurableExtension { - /** - * {@inheritdoc} - */ protected function loadInternal(array $mergedConfig, ContainerBuilder $container): void { $loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); @@ -40,7 +29,7 @@ protected function loadInternal(array $mergedConfig, ContainerBuilder $container */ private function createManager(string $name, array $config, ContainerBuilder $container): void { - $id = sprintf('codefog_tags.manager.%s', $name); + $id = \sprintf('codefog_tags.manager.%s', $name); $container ->setDefinition($id, new ChildDefinition($config['service'])) diff --git a/src/DependencyInjection/Compiler/ManagerPass.php b/src/DependencyInjection/Compiler/ManagerPass.php index 73219f7..22541b2 100644 --- a/src/DependencyInjection/Compiler/ManagerPass.php +++ b/src/DependencyInjection/Compiler/ManagerPass.php @@ -2,14 +2,6 @@ declare(strict_types=1); -/* - * Tags Bundle for Contao Open Source CMS. - * - * @copyright Copyright (c) 2020, Codefog - * @author Codefog - * @license MIT - */ - namespace Codefog\TagsBundle\DependencyInjection\Compiler; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; @@ -35,13 +27,10 @@ public function __construct($registryName) $this->registryName = $registryName; } - /** - * {@inheritdoc} - */ public function process(ContainerBuilder $container): void { if (!$container->hasDefinition($this->registryName)) { - throw new \RuntimeException(sprintf('The registry service "%s" does not exist', $this->registryName)); + throw new \RuntimeException(\sprintf('The registry service "%s" does not exist', $this->registryName)); } $definition = $container->getDefinition($this->registryName); diff --git a/src/DependencyInjection/Configuration.php b/src/DependencyInjection/Configuration.php index ab60720..9c06cfe 100644 --- a/src/DependencyInjection/Configuration.php +++ b/src/DependencyInjection/Configuration.php @@ -2,14 +2,6 @@ declare(strict_types=1); -/* - * Tags Bundle for Contao Open Source CMS. - * - * @copyright Copyright (c) 2020, Codefog - * @author Codefog - * @license MIT - */ - namespace Codefog\TagsBundle\DependencyInjection; use Symfony\Component\Config\Definition\Builder\TreeBuilder; @@ -17,9 +9,6 @@ class Configuration implements ConfigurationInterface { - /** - * {@inheritdoc} - */ public function getConfigTreeBuilder(): TreeBuilder { $treeBuilder = new TreeBuilder('codefog_tags'); @@ -42,9 +31,7 @@ public function getConfigTreeBuilder(): TreeBuilder ->validate() ->ifString() ->then( - static function (string $value): array { - return [$value]; - } + static fn (string $value): array => [$value], ) ->end() ->end() diff --git a/src/Driver.php b/src/Driver.php index 951514f..e082381 100644 --- a/src/Driver.php +++ b/src/Driver.php @@ -2,14 +2,6 @@ declare(strict_types=1); -/* - * Tags Bundle for Contao Open Source CMS. - * - * @copyright Copyright (c) 2020, Codefog - * @author Codefog - * @license MIT - */ - namespace Codefog\TagsBundle; use Contao\DC_Table; diff --git a/src/EventListener/DataContainer/TagListener.php b/src/EventListener/DataContainer/TagListener.php index a7c32e2..3f034cf 100644 --- a/src/EventListener/DataContainer/TagListener.php +++ b/src/EventListener/DataContainer/TagListener.php @@ -2,14 +2,6 @@ declare(strict_types=1); -/* - * Tags Bundle for Contao Open Source CMS. - * - * @copyright Copyright (c) 2020, Codefog - * @author Codefog - * @license MIT - */ - namespace Codefog\TagsBundle\EventListener\DataContainer; use Codefog\TagsBundle\Driver; @@ -142,11 +134,11 @@ public function onPanelCallback(DataContainer $dc): string // Generate the markup options foreach ($sorting as $option) { - $options[] = sprintf( + $options[] = \sprintf( '', StringUtil::specialchars($option), - ($session['sorting'][$dc->table] === $option) ? ' selected="selected"' : '', - ('_default' === $option) ? $GLOBALS['TL_DCA'][$dc->table]['fields'][$GLOBALS['TL_DCA'][$dc->table]['list']['sorting']['fields'][0]]['label'][0] : $GLOBALS['TL_LANG'][$dc->table]['sortRef'][$option] + $session['sorting'][$dc->table] === $option ? ' selected="selected"' : '', + '_default' === $option ? $GLOBALS['TL_DCA'][$dc->table]['fields'][$GLOBALS['TL_DCA'][$dc->table]['list']['sorting']['fields'][0]]['label'][0] : $GLOBALS['TL_LANG'][$dc->table]['sortRef'][$option], ); } @@ -230,7 +222,7 @@ public function onButtonsCallback(array $buttons, DataContainer $dc) } // Add the button - $buttons['alias'] = sprintf(' ', $GLOBALS['TL_LANG']['MSC']['aliasSelected']); + $buttons['alias'] = \sprintf(' ', $GLOBALS['TL_LANG']['MSC']['aliasSelected']); return $buttons; } @@ -270,7 +262,7 @@ public function onAliasSaveCallback(string $value, DataContainer $dc): string // Check whether the record alias exists if ($existingAliases > 1 && !$autoAlias) { - throw new \RuntimeException(sprintf($GLOBALS['TL_LANG']['ERR']['aliasExists'], $value)); + throw new \RuntimeException(\sprintf($GLOBALS['TL_LANG']['ERR']['aliasExists'], $value)); } // Add ID to alias diff --git a/src/EventListener/InsertTagsListener.php b/src/EventListener/InsertTagsListener.php index 0297da9..f6df5bf 100644 --- a/src/EventListener/InsertTagsListener.php +++ b/src/EventListener/InsertTagsListener.php @@ -2,14 +2,6 @@ declare(strict_types=1); -/* - * Tags Bundle for Contao Open Source CMS. - * - * @copyright Copyright (c) 2020, Codefog - * @author Codefog - * @license MIT - */ - namespace Codefog\TagsBundle\EventListener; use Codefog\TagsBundle\Manager\InsertTagsAwareInterface; diff --git a/src/EventListener/TagManagerListener.php b/src/EventListener/TagManagerListener.php index 3335fc3..b536816 100644 --- a/src/EventListener/TagManagerListener.php +++ b/src/EventListener/TagManagerListener.php @@ -101,7 +101,7 @@ public function onOptionsCallback(DataContainer $dc): array /** * Get the manager from DCA. */ - private function getManagerFromDca(DataContainer $dc): ?DcaAwareInterface + private function getManagerFromDca(DataContainer $dc): DcaAwareInterface|null { if (!isset($GLOBALS['TL_DCA'][$dc->table]['fields'][$dc->field]['eval']['tagsManager'])) { return null; @@ -125,7 +125,7 @@ private function addAssets(): void $GLOBALS['TL_CSS'][] = 'bundles/codefogtags/backend.min.css'; // Add the jQuery - if (!isset($GLOBALS['TL_JAVASCRIPT']) || !preg_grep("/^assets\/jquery\/js\/jquery(\.min)?\.js$/", $GLOBALS['TL_JAVASCRIPT'])) { + if (!isset($GLOBALS['TL_JAVASCRIPT']) || !preg_grep('/^assets\\/jquery\\/js\\/jquery(\\.min)?\\.js$/', $GLOBALS['TL_JAVASCRIPT'])) { $GLOBALS['TL_JAVASCRIPT'][] = 'assets/jquery/js/jquery.min.js'; } diff --git a/src/Exception/NoTagsException.php b/src/Exception/NoTagsException.php index 237a659..0440dc8 100644 --- a/src/Exception/NoTagsException.php +++ b/src/Exception/NoTagsException.php @@ -2,14 +2,6 @@ declare(strict_types=1); -/* - * Tags Bundle for Contao Open Source CMS. - * - * @copyright Copyright (c) 2020, Codefog - * @author Codefog - * @license MIT - */ - namespace Codefog\TagsBundle\Exception; class NoTagsException extends \RuntimeException diff --git a/src/Finder/SourceCriteria.php b/src/Finder/SourceCriteria.php index d460212..b0cb258 100644 --- a/src/Finder/SourceCriteria.php +++ b/src/Finder/SourceCriteria.php @@ -2,14 +2,6 @@ declare(strict_types=1); -/* - * Tags Bundle for Contao Open Source CMS. - * - * @copyright Copyright (c) 2020, Codefog - * @author Codefog - * @license MIT - */ - namespace Codefog\TagsBundle\Finder; use Codefog\TagsBundle\Tag; @@ -32,7 +24,7 @@ class SourceCriteria protected $ids = []; /** - * @var Tag[] + * @var array */ protected $tags = []; @@ -83,7 +75,7 @@ public function setIds(array $ids): self } /** - * @return Tag[] + * @return array */ public function getTags(): array { @@ -91,7 +83,7 @@ public function getTags(): array } /** - * @param Tag[] $tags + * @param array $tags */ public function setTags(array $tags): self { diff --git a/src/Finder/SourceFinder.php b/src/Finder/SourceFinder.php index 6ef11fa..a76b43f 100644 --- a/src/Finder/SourceFinder.php +++ b/src/Finder/SourceFinder.php @@ -21,8 +21,7 @@ class SourceFinder public function __construct( private Connection $connection, private DcaRelationsManager $dcaRelationsManager, - ) - { + ) { } /** @@ -56,14 +55,14 @@ public function findMultiple(SourceCriteria $criteria): array * * @throws \RuntimeException */ - public function findRelatedSourceRecords(SourceCriteria $criteria, ?int $limit = null): array + public function findRelatedSourceRecords(SourceCriteria $criteria, int|null $limit = null): array { if (0 === \count($criteria->getIds())) { throw new \RuntimeException('No IDs have been provided'); } if (false === ($relation = $this->dcaRelationsManager->getRelation($criteria->getSourceTable(), $criteria->getSourceField()))) { - throw new \RuntimeException(sprintf('The field %s.%s is not related', $criteria->getSourceTable(), $criteria->getSourceField())); + throw new \RuntimeException(\sprintf('The field %s.%s is not related', $criteria->getSourceTable(), $criteria->getSourceField())); } $tagIds = DcaRelationsModel::getRelatedValues($criteria->getSourceTable(), $criteria->getSourceField(), $criteria->getIds()); @@ -74,7 +73,7 @@ public function findRelatedSourceRecords(SourceCriteria $criteria, ?int $limit = return []; } - $query = sprintf( + $query = \sprintf( 'SELECT %s, COUNT(*) AS relevance FROM %s WHERE %s IN (%s) AND %s NOT IN (%s) GROUP BY %s ORDER BY relevance DESC', $relation['reference_field'], $relation['table'], @@ -82,12 +81,12 @@ public function findRelatedSourceRecords(SourceCriteria $criteria, ?int $limit = implode(',', $tagIds), $relation['reference_field'], implode(',', $criteria->getIds()), - $relation['reference_field'] + $relation['reference_field'], ); // Set the limit if ($limit > 0) { - $query .= sprintf(' LIMIT %s', $limit); + $query .= \sprintf(' LIMIT %s', $limit); } $related = []; @@ -98,7 +97,7 @@ public function findRelatedSourceRecords(SourceCriteria $criteria, ?int $limit = $related[$record[$relation['reference_field']]] = [ 'total' => \count($tagIds), 'found' => $record['relevance'], - 'prcnt' => ($record['relevance'] / \count($tagIds)) * 100, + 'prcnt' => $record['relevance'] / \count($tagIds) * 100, ]; } diff --git a/src/Finder/TagCriteria.php b/src/Finder/TagCriteria.php index 6b3eb8b..3dff802 100644 --- a/src/Finder/TagCriteria.php +++ b/src/Finder/TagCriteria.php @@ -2,14 +2,6 @@ declare(strict_types=1); -/* - * Tags Bundle for Contao Open Source CMS. - * - * @copyright Copyright (c) 2020, Codefog - * @author Codefog - * @license MIT - */ - namespace Codefog\TagsBundle\Finder; class TagCriteria diff --git a/src/Finder/TagFinder.php b/src/Finder/TagFinder.php index 7acbc44..1558519 100644 --- a/src/Finder/TagFinder.php +++ b/src/Finder/TagFinder.php @@ -40,7 +40,7 @@ public function count(TagCriteria $criteria): int /** * Find a single tag by criteria. */ - public function findSingle(TagCriteria $criteria): ?Tag + public function findSingle(TagCriteria $criteria): Tag|null { try { [$columns, $values, $options] = $this->parseCriteria($criteria); @@ -89,7 +89,7 @@ public function findMultiple(TagCriteria $criteria): array /** * Get the top tags. The tag count will be part of tag's data ($tag->getData()['count']). */ - public function getTopTags(TagCriteria $criteria, ?int $limit = null, bool $withCount = false): array + public function getTopTags(TagCriteria $criteria, int|null $limit = null, bool $withCount = false): array { if (0 === \count($tagIds = $this->getTopTagIds($criteria, $limit, $withCount))) { return []; @@ -111,7 +111,7 @@ public function getTopTags(TagCriteria $criteria, ?int $limit = null, bool $with /** * Get the top tag IDs. */ - public function getTopTagIds(TagCriteria $criteria, ?int $limit = null, bool $withCount = false): array + public function getTopTagIds(TagCriteria $criteria, int|null $limit = null, bool $withCount = false): array { // No array_unique() here! $tagIds = DcaRelationsModel::getRelatedValues($criteria->getSourceTable(), $criteria->getSourceField(), $criteria->getSourceIds()); diff --git a/src/Manager/DcaAwareInterface.php b/src/Manager/DcaAwareInterface.php index 380274e..fd6d133 100644 --- a/src/Manager/DcaAwareInterface.php +++ b/src/Manager/DcaAwareInterface.php @@ -2,14 +2,6 @@ declare(strict_types=1); -/* - * Tags Bundle for Contao Open Source CMS. - * - * @copyright Copyright (c) 2020, Codefog - * @author Codefog - * @license MIT - */ - namespace Codefog\TagsBundle\Manager; use Contao\DataContainer; diff --git a/src/Manager/DefaultManager.php b/src/Manager/DefaultManager.php index b43c427..c9d05f0 100644 --- a/src/Manager/DefaultManager.php +++ b/src/Manager/DefaultManager.php @@ -68,18 +68,12 @@ public function setSourceFinder(SourceFinder $sourceFinder): void $this->sourceFinder = $sourceFinder; } - /** - * {@inheritdoc} - */ - public function getAllTags(?string $source = null): array + public function getAllTags(string|null $source = null): array { return $this->tagFinder->findMultiple($this->createTagCriteria($source)); } - /** - * {@inheritdoc} - */ - public function getFilteredTags(array $values, ?string $source = null): array + public function getFilteredTags(array $values, string|null $source = null): array { $criteria = $this->createTagCriteria($source); $criteria->setValues(\count($values) ? $values : [0]); @@ -87,9 +81,6 @@ public function getFilteredTags(array $values, ?string $source = null): array return $this->tagFinder->findMultiple($criteria); } - /** - * {@inheritdoc} - */ public function updateDcaField(string $table, string $field, array &$config): void { $config['eval']['tagsCreate'] = $config['eval']['tagsCreate'] ?? true; @@ -97,8 +88,8 @@ public function updateDcaField(string $table, string $field, array &$config): vo // Set the relation if (!isset($config['sql'])) { $config['relation'] = array_merge( - (isset($config['relation']) && \is_array($config['relation'])) ? $config['relation'] : [], - ['type' => 'haste-ManyToMany', 'load' => 'lazy', 'table' => 'tl_cfg_tag'] + isset($config['relation']) && \is_array($config['relation']) ? $config['relation'] : [], + ['type' => 'haste-ManyToMany', 'load' => 'lazy', 'table' => 'tl_cfg_tag'], ); } @@ -122,9 +113,6 @@ public function updateDcaField(string $table, string $field, array &$config): vo } } - /** - * {@inheritdoc} - */ public function saveDcaField(string $value, DataContainer $dc): string { $value = StringUtil::deserialize($value, true); @@ -153,9 +141,6 @@ public function saveDcaField(string $value, DataContainer $dc): string return serialize($value); } - /** - * {@inheritdoc} - */ public function getFilterOptions(DataContainer $dc): array { $options = []; @@ -176,9 +161,6 @@ public function getFilterOptions(DataContainer $dc): array return $options; } - /** - * {@inheritdoc} - */ public function getSourceRecordsCount(array $data, DataContainer $dc): int { if (isset($GLOBALS['TL_DCA'][$dc->table]['fields'][$dc->field]['eval']['tagsSource'])) { @@ -200,13 +182,10 @@ public function getSourceRecordsCount(array $data, DataContainer $dc): int return $total; } - /** - * {@inheritdoc} - */ - public function getTopTagIds(?string $source = null): array + public function getTopTagIds(string|null $source = null): array { $ids = []; - $sources = (null !== $source) ? [$source] : $this->sources; + $sources = null !== $source ? [$source] : $this->sources; foreach ($sources as $source) { foreach ($this->getTagFinder()->getTopTagIds($this->createTagCriteria($source), null, true) as $id => $count) { @@ -221,9 +200,6 @@ public function getTopTagIds(?string $source = null): array return $ids; } - /** - * {@inheritdoc} - */ public function getInsertTagValue(string $value, string $property, array $elements): string { $tag = null; @@ -259,7 +235,7 @@ public function getTagFinder(): TagFinder /** * Create the tag criteria. */ - public function createTagCriteria(?string $source = null): TagCriteria + public function createTagCriteria(string|null $source = null): TagCriteria { return new TagCriteria($this->name, $this->getSource($source)); } @@ -275,7 +251,7 @@ public function getSourceFinder(): SourceFinder /** * Create the source criteria. */ - public function createSourceCriteria(?string $source = null): SourceCriteria + public function createSourceCriteria(string|null $source = null): SourceCriteria { return new SourceCriteria($this->name, $this->getSource($source)); } @@ -283,12 +259,12 @@ public function createSourceCriteria(?string $source = null): SourceCriteria /** * Get the source. */ - protected function getSource(?string $source = null): string + protected function getSource(string|null $source = null): string { if (null === $source) { $source = $this->sources[0]; } elseif (!\in_array($source, $this->sources, true)) { - throw new \InvalidArgumentException(sprintf('Invalid source "%s"!', $source)); + throw new \InvalidArgumentException(\sprintf('Invalid source "%s"!', $source)); } return $source; @@ -297,12 +273,12 @@ protected function getSource(?string $source = null): string /** * Generate the tag alias. */ - protected function generateAlias(TagModel $model, ?string $source = null): void + protected function generateAlias(TagModel $model, string|null $source = null): void { $alias = StringUtil::generateAlias($model->name); // Add ID to alias if it already exists - if (null !== ($existingTag = $this->tagFinder->findSingle($this->createTagCriteria($source)->setAlias($alias)))) { + if (null !== $this->tagFinder->findSingle($this->createTagCriteria($source)->setAlias($alias))) { $alias .= '-'.$model->id; } diff --git a/src/Manager/InsertTagsAwareInterface.php b/src/Manager/InsertTagsAwareInterface.php index 3a38803..f14181d 100644 --- a/src/Manager/InsertTagsAwareInterface.php +++ b/src/Manager/InsertTagsAwareInterface.php @@ -2,14 +2,6 @@ declare(strict_types=1); -/* - * Tags Bundle for Contao Open Source CMS. - * - * @copyright Copyright (c) 2020, Codefog - * @author Codefog - * @license MIT - */ - namespace Codefog\TagsBundle\Manager; interface InsertTagsAwareInterface diff --git a/src/Manager/ManagerInterface.php b/src/Manager/ManagerInterface.php index 21fce05..fb152c3 100644 --- a/src/Manager/ManagerInterface.php +++ b/src/Manager/ManagerInterface.php @@ -17,10 +17,10 @@ interface ManagerInterface /** * Get all tags. */ - public function getAllTags(?string $source = null): array; + public function getAllTags(string|null $source = null): array; /** * Get tags optionally filtered by values. */ - public function getFilteredTags(array $values, ?string $source = null): array; + public function getFilteredTags(array $values, string|null $source = null): array; } diff --git a/src/ManagerRegistry.php b/src/ManagerRegistry.php index 6c233e7..471d40f 100644 --- a/src/ManagerRegistry.php +++ b/src/ManagerRegistry.php @@ -2,14 +2,6 @@ declare(strict_types=1); -/* - * Tags Bundle for Contao Open Source CMS. - * - * @copyright Copyright (c) 2020, Codefog - * @author Codefog - * @license MIT - */ - namespace Codefog\TagsBundle; use Codefog\TagsBundle\Manager\ManagerInterface; @@ -39,7 +31,7 @@ public function add(ManagerInterface $manager, string $name): void public function get(string $name): ManagerInterface { if (!\array_key_exists($name, $this->managers)) { - throw new \InvalidArgumentException(sprintf('The manager "%s" does not exist', $name)); + throw new \InvalidArgumentException(\sprintf('The manager "%s" does not exist', $name)); } return $this->managers[$name]; diff --git a/src/Model/TagModel.php b/src/Model/TagModel.php index 7f97d03..817de20 100644 --- a/src/Model/TagModel.php +++ b/src/Model/TagModel.php @@ -2,14 +2,6 @@ declare(strict_types=1); -/* - * Tags Bundle for Contao Open Source CMS. - * - * @copyright Copyright (c) 2020, Codefog - * @author Codefog - * @license MIT - */ - namespace Codefog\TagsBundle\Model; use Contao\Model; diff --git a/src/Tag.php b/src/Tag.php index 771dc63..cfb208c 100644 --- a/src/Tag.php +++ b/src/Tag.php @@ -2,14 +2,6 @@ declare(strict_types=1); -/* - * Tags Bundle for Contao Open Source CMS. - * - * @copyright Copyright (c) 2020, Codefog - * @author Codefog - * @license MIT - */ - namespace Codefog\TagsBundle; class Tag diff --git a/src/Widget/TagsWidget.php b/src/Widget/TagsWidget.php index 5ba95e3..3ac1b95 100644 --- a/src/Widget/TagsWidget.php +++ b/src/Widget/TagsWidget.php @@ -2,14 +2,6 @@ declare(strict_types=1); -/* - * Tags Bundle for Contao Open Source CMS. - * - * @copyright Copyright (c) 2020, Codefog - * @author Codefog - * @license MIT - */ - namespace Codefog\TagsBundle\Widget; use Codefog\TagsBundle\Manager\ManagerInterface; @@ -52,10 +44,7 @@ class TagsWidget extends Widget */ protected $tagsManager; - /** - * {@inheritdoc} - */ - public function addAttributes($attributes = null) + public function addAttributes($attributes = null): void { if (\is_array($attributes)) { if ($attributes['tagsManager']) { @@ -68,24 +57,18 @@ public function addAttributes($attributes = null) parent::addAttributes($attributes); } - /** - * {@inheritdoc} - */ public function validate(): void { $value = $this->validator($this->getPost($this->strName)); // Validate the maximum number of items if (\is_array($value) && isset($this->maxItems) && \count($value) > $this->maxItems) { - $this->addError(sprintf($GLOBALS['TL_LANG']['ERR']['maxval'], $this->strLabel, $this->maxItems)); + $this->addError(\sprintf($GLOBALS['TL_LANG']['ERR']['maxval'], $this->strLabel, $this->maxItems)); } parent::validate(); } - /** - * {@inheritdoc} - */ public function generate() { if (null === $this->tagsManager) { @@ -103,9 +86,6 @@ public function generate() return $template->parse(); } - /** - * {@inheritdoc} - */ protected function getPost($key) { return array_filter(StringUtil::trimsplit(',', parent::getPost($key))); @@ -145,24 +125,27 @@ protected function getValueTags(): array { $values = \is_array($this->varValue) ? $this->varValue : []; - if (count($values) === 0) { + if (0 === \count($values)) { return []; } $tags = $this->tagsManager->getFilteredTags($values, $this->tagsSource); // Respect the tags order - if ($this->tagsSortable && count($tags) > 0) { - usort($tags, function (Tag $aTag, Tag $bTag) use ($values) { - $aIndex = array_search($aTag->getValue(), $values, true); - $bIndex = array_search($bTag->getValue(), $values, true); - - if ($aIndex === $bIndex) { - return 0; - } - - return ($aIndex < $bIndex) ? -1 : 1; - }); + if ($this->tagsSortable && \count($tags) > 0) { + usort( + $tags, + static function (Tag $aTag, Tag $bTag) use ($values) { + $aIndex = array_search($aTag->getValue(), $values, true); + $bIndex = array_search($bTag->getValue(), $values, true); + + if ($aIndex === $bIndex) { + return 0; + } + + return $aIndex < $bIndex ? -1 : 1; + }, + ); } return $tags; diff --git a/tests/CodefogTagsBundleTest.php b/tests/CodefogTagsBundleTest.php index 67f94df..a278ea2 100644 --- a/tests/CodefogTagsBundleTest.php +++ b/tests/CodefogTagsBundleTest.php @@ -1,5 +1,7 @@ assertInstanceOf(CodefogTagsBundle::class, new CodefogTagsBundle()); } - public function testRegisterCompilerPass() + public function testRegisterCompilerPass(): void { $container = new ContainerBuilder(); $bundle = new CodefogTagsBundle(); diff --git a/tests/ContaoManager/PluginTest.php b/tests/ContaoManager/PluginTest.php index 6ebc4d3..6f84b60 100644 --- a/tests/ContaoManager/PluginTest.php +++ b/tests/ContaoManager/PluginTest.php @@ -1,5 +1,7 @@ getBundles($this->createMock(ParserInterface::class)); @@ -22,7 +24,7 @@ public function testGetBundles() $this->assertCount(1, $bundles); $this->assertInstanceOf(BundleConfig::class, $config); - $this->assertEquals(CodefogTagsBundle::class, $config->getName()); + $this->assertSame(CodefogTagsBundle::class, $config->getName()); $this->assertContains(ContaoCoreBundle::class, $config->getLoadAfter()); $this->assertContains(CodefogHasteBundle::class, $config->getLoadAfter()); } diff --git a/tests/DependencyInjection/CodefogTagsExtensionTest.php b/tests/DependencyInjection/CodefogTagsExtensionTest.php index dd73810..13e427a 100644 --- a/tests/DependencyInjection/CodefogTagsExtensionTest.php +++ b/tests/DependencyInjection/CodefogTagsExtensionTest.php @@ -1,5 +1,6 @@ load([ - 'codefog_tags' => [ - 'managers' => [ - 'manager_1' => [ - 'source' => 'tl_table_foo.tags_foo', - 'service' => ManagerPass::TAG_NAME, - ], - 'manager_2' => [ - 'source' => [ - 'tl_table_bar_1.tags_bar_1', - 'tl_table_bar_2.tags_bar_2', + $extension->load( + [ + 'codefog_tags' => [ + 'managers' => [ + 'manager_1' => [ + 'source' => 'tl_table_foo.tags_foo', + 'service' => ManagerPass::TAG_NAME, + ], + 'manager_2' => [ + 'source' => [ + 'tl_table_bar_1.tags_bar_1', + 'tl_table_bar_2.tags_bar_2', + ], + 'service' => 'codefog_tags.custom_manager', + 'alias' => 'bar_alias', ], - 'service' => 'codefog_tags.custom_manager', - 'alias' => 'bar_alias' ], ], ], - ], $container); + $container, + ); // Listeners $this->assertTrue($container->hasDefinition('codefog_tags.listener.insert_tags')); @@ -50,18 +54,18 @@ public function testLoad() $definition = $container->getDefinition('codefog_tags.manager.manager_1'); $this->assertTrue($container->hasDefinition('codefog_tags.manager.manager_1')); - $this->assertEquals('manager_1', $definition->getArgument(0)); - $this->assertEquals(['tl_table_foo.tags_foo'], $definition->getArgument(1)); - $this->assertEquals([['alias' => 'manager_1']], $definition->getTag(ManagerPass::TAG_NAME)); + $this->assertSame('manager_1', $definition->getArgument(0)); + $this->assertSame(['tl_table_foo.tags_foo'], $definition->getArgument(1)); + $this->assertSame([['alias' => 'manager_1']], $definition->getTag(ManagerPass::TAG_NAME)); $this->assertTrue($definition->isPublic()); // Manager services – manager_2 $definition = $container->getDefinition('codefog_tags.manager.manager_2'); $this->assertTrue($container->hasDefinition('codefog_tags.manager.manager_2')); - $this->assertEquals('manager_2', $definition->getArgument(0)); - $this->assertEquals(['tl_table_bar_1.tags_bar_1', 'tl_table_bar_2.tags_bar_2'], $definition->getArgument(1)); - $this->assertEquals([['alias' => 'manager_2']], $definition->getTag(ManagerPass::TAG_NAME)); + $this->assertSame('manager_2', $definition->getArgument(0)); + $this->assertSame(['tl_table_bar_1.tags_bar_1', 'tl_table_bar_2.tags_bar_2'], $definition->getArgument(1)); + $this->assertSame([['alias' => 'manager_2']], $definition->getTag(ManagerPass::TAG_NAME)); $this->assertTrue($definition->isPublic()); $this->assertTrue($container->hasAlias('bar_alias')); } diff --git a/tests/DependencyInjection/Compiler/ManagerPassTest.php b/tests/DependencyInjection/Compiler/ManagerPassTest.php index 9b2bc27..f589f1e 100644 --- a/tests/DependencyInjection/Compiler/ManagerPassTest.php +++ b/tests/DependencyInjection/Compiler/ManagerPassTest.php @@ -1,5 +1,6 @@ getMethodCalls(); - $this->assertEquals('add', $calls[0][0]); + $this->assertSame('add', $calls[0][0]); $this->assertInstanceOf(Reference::class, $calls[0][1][0]); - $this->assertEquals('foo', $calls[0][1][1]); - $this->assertEquals('bar', $calls[1][1][1]); + $this->assertSame('foo', $calls[0][1][1]); + $this->assertSame('bar', $calls[1][1][1]); } - public function testRegistryNotExists() + public function testRegistryNotExists(): void { $this->expectException(\RuntimeException::class); $this->mockCompilerPass()->process(new ContainerBuilder()); diff --git a/tests/EventListener/InsertTagsListenerTest.php b/tests/EventListener/InsertTagsListenerTest.php index 45d35c2..e546c07 100644 --- a/tests/EventListener/InsertTagsListenerTest.php +++ b/tests/EventListener/InsertTagsListenerTest.php @@ -1,5 +1,7 @@ createMock(ManagerInterface::class); $listener = $this->mockListener($manager); - $this->assertEquals('', $listener->onReplaceInsertTags('tag::foo::bar::name')); + $this->assertSame('', $listener->onReplaceInsertTags('tag::foo::bar::name')); } /** * @dataProvider insertTagsDataProvider */ - public function testOnReplaceInsertTags($insertTag, $value, $expected) + public function testOnReplaceInsertTags($insertTag, $value, $expected): void { $manager = $this->createConfiguredMock(DefaultManager::class, ['getInsertTagValue' => $value]); $listener = $this->mockListener($manager); - $this->assertEquals($expected, $listener->onReplaceInsertTags($insertTag)); + $this->assertSame($expected, $listener->onReplaceInsertTags($insertTag)); } - public function insertTagsDataProvider() + public static function insertTagsDataProvider(): iterable { return [ 'Unsupported tag' => ['foobar', '', false], diff --git a/tests/EventListener/TagManagerListenerTest.php b/tests/EventListener/TagManagerListenerTest.php index d8b3a92..265b803 100644 --- a/tests/EventListener/TagManagerListenerTest.php +++ b/tests/EventListener/TagManagerListenerTest.php @@ -1,5 +1,7 @@ [ @@ -32,16 +34,19 @@ public function testOnLoadDataContainer() $this->mockListener()->onLoadDataContainer('tl_table'); - $this->assertEquals([ - 'field1' => [ - 'inputType' => 'cfgTags', - 'eval' => ['tagsManager' => 'foobar', 'tagsSource' => 'tl_table.field1'], - 'dummy' => true, + $this->assertSame( + [ + 'field1' => [ + 'inputType' => 'cfgTags', + 'eval' => ['tagsManager' => 'foobar', 'tagsSource' => 'tl_table.field1'], + 'dummy' => true, + ], + 'field2' => [ + 'inputType' => 'text', + ], ], - 'field2' => [ - 'inputType' => 'text', - ], - ], $GLOBALS['TL_DCA']['tl_table']['fields']); + $GLOBALS['TL_DCA']['tl_table']['fields'], + ); $this->assertContains('bundles/codefogtags/selectize.min.css', $GLOBALS['TL_CSS']); $this->assertContains('bundles/codefogtags/backend.min.css', $GLOBALS['TL_CSS']); @@ -51,12 +56,15 @@ public function testOnLoadDataContainer() $this->assertContains('bundles/codefogtags/backend.min.js', $GLOBALS['TL_JAVASCRIPT']); } - public function testOnLoadDataContainerNoFields() + public function testOnLoadDataContainerNoFields(): void { $GLOBALS['TL_DCA']['tl_table'] = []; $registry = $this->createMock(ManagerRegistry::class); - $registry->method('get')->willReturn(new DummyManager()); + $registry + ->method('get') + ->willReturn(new DummyManager()) + ; $requestStack = $this->createConfiguredMock(RequestStack::class, [ 'getCurrentRequest' => new Request(), @@ -69,14 +77,14 @@ public function testOnLoadDataContainerNoFields() $listener = new TagManagerListener($registry, $requestStack, $scopeMatcher); $listener->onLoadDataContainer('tl_table'); - $this->assertEquals([], $GLOBALS['TL_DCA']['tl_table']); + $this->assertSame([], $GLOBALS['TL_DCA']['tl_table']); } - public function testOnFieldSaveCallback() + public function testOnFieldSaveCallback(): void { $GLOBALS['TL_DCA']['tl_table']['fields'] = [ 'field' => [ - 'eval' => ['tagsManager' => 'foobar'] + 'eval' => ['tagsManager' => 'foobar'], ], ]; @@ -89,14 +97,14 @@ public function testOnFieldSaveCallback() ]) ; - $this->assertEquals('FOOBAR', $this->mockListener()->onFieldSaveCallback('foobar', $dataContainer)); + $this->assertSame('FOOBAR', $this->mockListener()->onFieldSaveCallback('foobar', $dataContainer)); } - public function testOnFieldSaveCallbackManagerUnsupported() + public function testOnFieldSaveCallbackManagerUnsupported(): void { $GLOBALS['TL_DCA']['tl_table']['fields'] = [ 'field' => [ - 'eval' => ['tagsManager' => 'foobar'] + 'eval' => ['tagsManager' => 'foobar'], ], ]; @@ -111,14 +119,14 @@ public function testOnFieldSaveCallbackManagerUnsupported() $listener = $this->mockListener($this->createMock(ManagerInterface::class)); - $this->assertEquals('foobar', $listener->onFieldSaveCallback('foobar', $dataContainer)); + $this->assertSame('foobar', $listener->onFieldSaveCallback('foobar', $dataContainer)); } - public function testOnOptionsCallback() + public function testOnOptionsCallback(): void { $GLOBALS['TL_DCA']['tl_table']['fields'] = [ 'field' => [ - 'eval' => ['tagsManager' => 'foobar'] + 'eval' => ['tagsManager' => 'foobar'], ], ]; @@ -131,14 +139,14 @@ public function testOnOptionsCallback() ]) ; - $this->assertEquals(['foo', 'bar'], $this->mockListener()->onOptionsCallback($dataContainer)); + $this->assertSame(['foo', 'bar'], $this->mockListener()->onOptionsCallback($dataContainer)); } - public function testOnOptionsCallbackManagerUnsupported() + public function testOnOptionsCallbackManagerUnsupported(): void { $GLOBALS['TL_DCA']['tl_table']['fields'] = [ 'field' => [ - 'eval' => ['tagsManager' => 'foobar'] + 'eval' => ['tagsManager' => 'foobar'], ], ]; @@ -153,7 +161,7 @@ public function testOnOptionsCallbackManagerUnsupported() $listener = $this->mockListener($this->createMock(ManagerInterface::class)); - $this->assertEquals([], $listener->onOptionsCallback($dataContainer)); + $this->assertSame([], $listener->onOptionsCallback($dataContainer)); } private function mockListener($manager = null): TagManagerListener diff --git a/tests/Finder/SourceCriteriaTest.php b/tests/Finder/SourceCriteriaTest.php index 3213cff..1decc1c 100644 --- a/tests/Finder/SourceCriteriaTest.php +++ b/tests/Finder/SourceCriteriaTest.php @@ -1,5 +1,7 @@ assertEquals('my_manager', $criteria->getName()); - $this->assertEquals('tl_table.tags', $criteria->getSource()); - $this->assertEquals('tl_table', $criteria->getSourceTable()); - $this->assertEquals('tags', $criteria->getSourceField()); - $this->assertEquals([], $criteria->getIds()); + $this->assertSame('my_manager', $criteria->getName()); + $this->assertSame('tl_table.tags', $criteria->getSource()); + $this->assertSame('tl_table', $criteria->getSourceTable()); + $this->assertSame('tags', $criteria->getSourceField()); + $this->assertSame([], $criteria->getIds()); $criteria->setIds([1, 2, 3]); - $this->assertEquals([1, 2, 3], $criteria->getIds()); + $this->assertSame([1, 2, 3], $criteria->getIds()); $criteria->setTags([$tag1 = new Tag('foo', 'bar'), $tag2 = new Tag('bar', 'foo')]); - $this->assertEquals([$tag1, $tag2], $criteria->getTags()); + $this->assertSame([$tag1, $tag2], $criteria->getTags()); $criteria->setTag($tag3 = new Tag('quux', 'quux')); - $this->assertEquals([$tag3], $criteria->getTags()); + $this->assertSame([$tag3], $criteria->getTags()); $criteria->setTagValues(['foo', 'bar']); - $this->assertEquals(['foo', 'bar'], $criteria->getTagValues()); + $this->assertSame(['foo', 'bar'], $criteria->getTagValues()); $criteria->setTagValue('foobar'); - $this->assertEquals(['foobar'], $criteria->getTagValues()); + $this->assertSame(['foobar'], $criteria->getTagValues()); } } diff --git a/tests/Finder/TagCriteriaTest.php b/tests/Finder/TagCriteriaTest.php index fa9ba5c..b620339 100644 --- a/tests/Finder/TagCriteriaTest.php +++ b/tests/Finder/TagCriteriaTest.php @@ -1,5 +1,7 @@ assertEquals('my_manager', $criteria->getName()); - $this->assertEquals('tl_table.tags', $criteria->getSource()); - $this->assertEquals('tl_table', $criteria->getSourceTable()); - $this->assertEquals('tags', $criteria->getSourceField()); - $this->assertEquals('name', $criteria->getOrder()); - $this->assertEquals([], $criteria->getAliases()); - $this->assertEquals([], $criteria->getSourceIds()); - $this->assertEquals([], $criteria->getValues()); + $this->assertSame('my_manager', $criteria->getName()); + $this->assertSame('tl_table.tags', $criteria->getSource()); + $this->assertSame('tl_table', $criteria->getSourceTable()); + $this->assertSame('tags', $criteria->getSourceField()); + $this->assertSame('name', $criteria->getOrder()); + $this->assertSame([], $criteria->getAliases()); + $this->assertSame([], $criteria->getSourceIds()); + $this->assertSame([], $criteria->getValues()); $this->assertFalse($criteria->isUsedOnly()); $criteria->setAliases(['foo', 'foo', 'bar']); - $this->assertEquals(['foo', 'bar'], $criteria->getAliases()); + $this->assertSame(['foo', 'bar'], $criteria->getAliases()); $criteria->setAlias('foo'); - $this->assertEquals(['foo'], $criteria->getAliases()); + $this->assertSame(['foo'], $criteria->getAliases()); $criteria->setSourceIds([1, 1, 2, 3]); - $this->assertEquals([1, 2, 3], $criteria->getSourceIds()); + $this->assertSame([1, 2, 3], $criteria->getSourceIds()); $criteria->setValues(['foo', 'foo', 'bar', 'baz']); - $this->assertEquals(['foo', 'bar', 'baz'], $criteria->getValues()); + $this->assertSame(['foo', 'bar', 'baz'], $criteria->getValues()); $criteria->setValue('foobar'); - $this->assertEquals(['foobar'], $criteria->getValues()); + $this->assertSame(['foobar'], $criteria->getValues()); $criteria->setUsedOnly(true); $this->assertTrue($criteria->isUsedOnly()); $criteria->setOrder('alias'); - $this->assertEquals('alias', $criteria->getOrder()); + $this->assertSame('alias', $criteria->getOrder()); } } diff --git a/tests/Fixtures/DummyManager.php b/tests/Fixtures/DummyManager.php index 48895dc..a0510cc 100644 --- a/tests/Fixtures/DummyManager.php +++ b/tests/Fixtures/DummyManager.php @@ -1,65 +1,45 @@ 1, 2 => 4, 3 => 9]; diff --git a/tests/Fixtures/Model/TagModel.php b/tests/Fixtures/Model/TagModel.php index 6d25c66..6d1b985 100644 --- a/tests/Fixtures/Model/TagModel.php +++ b/tests/Fixtures/Model/TagModel.php @@ -1,5 +1,7 @@ assertContains($tag2, $tags); } - public function testGetFilteredTags() + public function testGetFilteredTags(): void { $tag1 = new Tag('tag1', 'foo'); $tag2 = new Tag('tag2', 'bar'); @@ -38,20 +40,20 @@ public function testGetFilteredTags() $this->assertNotContains($tag2, $tags); } - public function testUpdateDcaFieldVariant1() + public function testUpdateDcaFieldVariant1(): void { $dca = []; $this->mockManager(['tl_table.tags'])->updateDcaField('tl_table', 'tags', $dca); - $this->assertEquals(['type' => 'haste-ManyToMany', 'load' => 'lazy', 'table' => 'tl_cfg_tag'], $dca['relation']); - $this->assertEquals(['codefog_tags.listener.tag_manager', 'onOptionsCallback'], $dca['options_callback']); - $this->assertEquals('tl_table.tags', $dca['eval']['tagsSource']); + $this->assertSame(['type' => 'haste-ManyToMany', 'load' => 'lazy', 'table' => 'tl_cfg_tag'], $dca['relation']); + $this->assertSame(['codefog_tags.listener.tag_manager', 'onOptionsCallback'], $dca['options_callback']); + $this->assertSame('tl_table.tags', $dca['eval']['tagsSource']); $this->assertTrue($dca['eval']['tagsCreate']); - $this->assertEquals([['codefog_tags.listener.tag_manager', 'onFieldSaveCallback']], $dca['save_callback']); + $this->assertSame([['codefog_tags.listener.tag_manager', 'onFieldSaveCallback']], $dca['save_callback']); } - public function testUpdateDcaFieldVariant2() + public function testUpdateDcaFieldVariant2(): void { $dca = [ 'options_callback' => ['listener', 'options_method'], @@ -59,23 +61,26 @@ public function testUpdateDcaFieldVariant2() 'tagsSource' => 'tl_table.tags', ], 'save_callback' => [ - ['listener', 'save_method'] + ['listener', 'save_method'], ], ]; $this->mockManager(['tl_table.tags'])->updateDcaField('tl_table_2', 'tags', $dca); - $this->assertEquals(['type' => 'haste-ManyToMany', 'load' => 'lazy', 'table' => 'tl_cfg_tag'], $dca['relation']); - $this->assertEquals(['listener', 'options_method'], $dca['options_callback']); - $this->assertEquals('tl_table.tags', $dca['eval']['tagsSource']); + $this->assertSame(['type' => 'haste-ManyToMany', 'load' => 'lazy', 'table' => 'tl_cfg_tag'], $dca['relation']); + $this->assertSame(['listener', 'options_method'], $dca['options_callback']); + $this->assertSame('tl_table.tags', $dca['eval']['tagsSource']); $this->assertTrue($dca['eval']['tagsCreate']); - $this->assertEquals([ - ['codefog_tags.listener.tag_manager', 'onFieldSaveCallback'], - ['listener', 'save_method'], - ], $dca['save_callback']); + $this->assertSame( + [ + ['codefog_tags.listener.tag_manager', 'onFieldSaveCallback'], + ['listener', 'save_method'], + ], + $dca['save_callback'], + ); } - public function testUpdateDcaFieldVariant3() + public function testUpdateDcaFieldVariant3(): void { $dca = [ 'eval' => [ @@ -87,12 +92,12 @@ public function testUpdateDcaFieldVariant3() $this->mockManager(['tl_table.tags'])->updateDcaField('tl_table_2', 'tags', $dca); - $this->assertEquals(['type' => 'blob', 'notnull' => false], $dca['sql']); - $this->assertEquals('tl_table.tags', $dca['eval']['tagsSource']); + $this->assertSame(['type' => 'blob', 'notnull' => false], $dca['sql']); + $this->assertSame('tl_table.tags', $dca['eval']['tagsSource']); $this->assertFalse($dca['eval']['tagsCreate']); } - public function testSaveDcaFieldNewTags() + public function testSaveDcaFieldNewTags(): void { $GLOBALS['TL_CONFIG']['characterSet'] = 'utf-8'; // for StringUtil::generateAlias() method @@ -106,7 +111,7 @@ public function testSaveDcaFieldNewTags() $this->assertContains('bar', $value); } - public function testSaveDcaFieldNoNewTags() + public function testSaveDcaFieldNoNewTags(): void { $tag = new Tag('bar', 'foo'); $manager = $this->mockManager(['tl_table.tags'], ['findSingle' => $tag]); @@ -118,17 +123,17 @@ public function testSaveDcaFieldNoNewTags() $this->assertContains('existing-tag', $value); } - public function testGetFilterOptions() + public function testGetFilterOptions(): void { $tag1 = new Tag('tag1', 'foo'); $tag2 = new Tag('tag2', 'bar'); $options = $this->mockManager(['tl_table.tags'], ['findMultiple' => [$tag1, $tag2]])->getFilterOptions($this->createMock(DataContainer::class)); - $this->assertEquals(['tag1' => 'foo', 'tag2' => 'bar'], $options); + $this->assertSame(['tag1' => 'foo', 'tag2' => 'bar'], $options); } - public function testGetFilterOptionsWithPredefinedTagsSource() + public function testGetFilterOptionsWithPredefinedTagsSource(): void { $tag1 = new Tag('tag1', 'foo'); $tag2 = new Tag('tag2', 'bar'); @@ -146,29 +151,29 @@ public function testGetFilterOptionsWithPredefinedTagsSource() $options = $this->mockManager(['tl_table.tags'], ['findMultiple' => [$tag1, $tag2]])->getFilterOptions($dataContainer); - $this->assertEquals(['tag1' => 'foo', 'tag2' => 'bar'], $options); + $this->assertSame(['tag1' => 'foo', 'tag2' => 'bar'], $options); } - public function testGetSourceRecordsCountEmpty() + public function testGetSourceRecordsCountEmpty(): void { $manager = $this->mockManager(['tl_table.tags'], ['findSingle' => null]); $count = $manager->getSourceRecordsCount(['id' => 1], $this->createMock(DataContainer::class)); - $this->assertEquals(0, $count); + $this->assertSame(0, $count); } - public function testGetSourceRecordsCount() + public function testGetSourceRecordsCount(): void { $tag = new Tag('bar', 'foo'); $manager = $this->mockManager(['tl_table.tags', 'tl_table_2.tags'], ['findSingle' => $tag], ['count' => 3]); $count = $manager->getSourceRecordsCount(['id' => 1], $this->createMock(DataContainer::class)); - $this->assertEquals(6, $count); + $this->assertSame(6, $count); } - public function testGetSourceRecordsCountWithPredefinedTagsSource() + public function testGetSourceRecordsCountWithPredefinedTagsSource(): void { $tag = new Tag('bar', 'foo'); $manager = $this->mockManager(['tl_table.tags'], ['findSingle' => $tag], ['count' => 3]); @@ -186,56 +191,56 @@ public function testGetSourceRecordsCountWithPredefinedTagsSource() $count = $manager->getSourceRecordsCount(['id' => 1], $dataContainer); - $this->assertEquals(3, $count); + $this->assertSame(3, $count); } - public function testGetTopTagIds() + public function testGetTopTagIds(): void { $manager = $this->mockManager(['tl_table.tags', 'tl_table_2.tags'], ['getTopTagIds' => [1 => 1, 2 => 4, 3 => 9]]); - $this->assertEquals([1 => 2, 2 => 8, 3 => 18], $manager->getTopTagIds()); + $this->assertSame([1 => 2, 2 => 8, 3 => 18], $manager->getTopTagIds()); } - public function testGetInsertTagValueEmpty() + public function testGetInsertTagValueEmpty(): void { $manager = $this->mockManager(['tl_table.tags'], ['findSingle' => null]); - $this->assertEquals('', $manager->getInsertTagValue('my_manager', 'name', [])); + $this->assertSame('', $manager->getInsertTagValue('my_manager', 'name', [])); } - public function testGetInsertTagValue() + public function testGetInsertTagValue(): void { $tag = new Tag('bar', 'foo'); $tag->setData(['foobar' => 'baz']); $manager = $this->mockManager(['tl_table.tags'], ['findSingle' => $tag]); - $this->assertEquals('foo', $manager->getInsertTagValue('bar', 'name', [])); - $this->assertEquals('baz', $manager->getInsertTagValue('bar', 'foobar', [])); - $this->assertEquals('', $manager->getInsertTagValue('bar', 'quux', [])); + $this->assertSame('foo', $manager->getInsertTagValue('bar', 'name', [])); + $this->assertSame('baz', $manager->getInsertTagValue('bar', 'foobar', [])); + $this->assertSame('', $manager->getInsertTagValue('bar', 'quux', [])); } - public function testGetTagFinder() + public function testGetTagFinder(): void { $this->assertInstanceOf(TagFinder::class, $this->mockManager(['tl_table.tags'])->getTagFinder()); } - public function testGetSourceFinder() + public function testGetSourceFinder(): void { $this->assertInstanceOf(SourceFinder::class, $this->mockManager(['tl_table.tags'])->getSourceFinder()); } - public function testCreateTagCriteria() + public function testCreateTagCriteria(): void { $criteria = $this->mockManager(['tl_table.tags'])->createTagCriteria(); $this->assertInstanceOf(TagCriteria::class, $criteria); - $this->assertEquals($criteria->getName(), 'my_manager'); - $this->assertEquals($criteria->getSourceTable(), 'tl_table'); - $this->assertEquals($criteria->getSourceField(), 'tags'); + $this->assertSame('my_manager', $criteria->getName()); + $this->assertSame('tl_table', $criteria->getSourceTable()); + $this->assertSame('tags', $criteria->getSourceField()); } - public function testCreateTagCriteriaInvalidSource() + public function testCreateTagCriteriaInvalidSource(): void { $this->expectException(\InvalidArgumentException::class); $this->expectExceptionMessage('Invalid source "tl_table_2.tags"!'); @@ -243,17 +248,17 @@ public function testCreateTagCriteriaInvalidSource() $this->mockManager(['tl_table.tags'])->createTagCriteria('tl_table_2.tags'); } - public function testCreateSourceCriteria() + public function testCreateSourceCriteria(): void { $criteria = $this->mockManager(['tl_table.tags'])->createSourceCriteria(); $this->assertInstanceOf(SourceCriteria::class, $criteria); - $this->assertEquals($criteria->getName(), 'my_manager'); - $this->assertEquals($criteria->getSourceTable(), 'tl_table'); - $this->assertEquals($criteria->getSourceField(), 'tags'); + $this->assertSame('my_manager', $criteria->getName()); + $this->assertSame('tl_table', $criteria->getSourceTable()); + $this->assertSame('tags', $criteria->getSourceField()); } - public function testCreateSourceCriteriaInvalidSource() + public function testCreateSourceCriteriaInvalidSource(): void { $this->expectException(\InvalidArgumentException::class); $this->expectExceptionMessage('Invalid source "tl_table_2.tags"!'); diff --git a/tests/ManagerRegistryTest.php b/tests/ManagerRegistryTest.php index e98add5..c71e989 100644 --- a/tests/ManagerRegistryTest.php +++ b/tests/ManagerRegistryTest.php @@ -1,5 +1,7 @@ createMock(ManagerInterface::class); $registry = $this->mockRegistry(); $registry->add($managerMock, 'foobar'); - $this->assertEquals($managerMock, $registry->get('foobar')); + $this->assertSame($managerMock, $registry->get('foobar')); } - public function testManagerNotExists() + public function testManagerNotExists(): void { $this->expectException(\InvalidArgumentException::class); @@ -27,7 +29,7 @@ public function testManagerNotExists() $registry->get('foobar'); } - public function testGetAliases() + public function testGetAliases(): void { $manager1Mock = $this->createMock(ManagerInterface::class); $manager2Mock = $this->createMock(DefaultManager::class); diff --git a/tests/TagTest.php b/tests/TagTest.php index 1b51423..9be433b 100644 --- a/tests/TagTest.php +++ b/tests/TagTest.php @@ -1,5 +1,7 @@ 1]); - $this->assertEquals('123', $tag->getValue()); - $this->assertEquals('Foobar', $tag->getName()); - $this->assertEquals(['extra' => 1], $tag->getData()); + $this->assertSame('123', $tag->getValue()); + $this->assertSame('Foobar', $tag->getName()); + $this->assertSame(['extra' => 1], $tag->getData()); $tag->setValue('456'); - $this->assertEquals('456', $tag->getValue()); + $this->assertSame('456', $tag->getValue()); $tag->setName('Foobaz'); - $this->assertEquals('Foobaz', $tag->getName()); + $this->assertSame('Foobaz', $tag->getName()); $tag->setData(['extra' => 2]); - $this->assertEquals(['extra' => 2], $tag->getData()); + $this->assertSame(['extra' => 2], $tag->getData()); } } diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 2741eff..6c23d13 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -2,19 +2,9 @@ declare(strict_types=1); -/* - * This file is part of Contao. - * - * (c) Leo Feyer - * - * @license LGPL-3.0-or-later - */ - error_reporting(E_ALL); -$include = function ($file) { - return file_exists($file) ? include $file : false; -}; +$include = fn ($file) => file_exists($file) ? include $file : false; if ( false === ($loader = $include(__DIR__.'/../vendor/autoload.php')) @@ -34,7 +24,7 @@ return; } - if (false !== strpos($class, '\\') && 0 !== strncmp($class, 'Contao\\', 7) && 0 !== strncmp($class, 'Codefog\TagsBundle\\', 19)) { + if (str_contains($class, '\\') && 0 !== strncmp($class, 'Contao\\', 7) && 0 !== strncmp($class, 'Codefog\TagsBundle\\', 19)) { return; } From f6ade037eee31dd5632cd0ed97b6f0b3cfb971d1 Mon Sep 17 00:00:00 2001 From: Kamil Kuzminski Date: Fri, 6 Mar 2026 13:17:50 +0100 Subject: [PATCH 03/28] Rector --- contao/dca/tl_cfg_tag.php | 5 ++- .../Compiler/ManagerPass.php | 8 +--- src/DependencyInjection/Configuration.php | 2 +- .../DataContainer/TagListener.php | 25 +++--------- src/EventListener/InsertTagsListener.php | 8 +--- src/EventListener/TagManagerListener.php | 25 +++--------- src/Finder/SourceFinder.php | 8 ++-- src/Finder/TagFinder.php | 14 +++---- src/Manager/DefaultManager.php | 2 +- src/Tag.php | 40 +++++++------------ src/Widget/TagsWidget.php | 11 +++-- tests/bootstrap.php | 6 +-- 12 files changed, 50 insertions(+), 104 deletions(-) diff --git a/contao/dca/tl_cfg_tag.php b/contao/dca/tl_cfg_tag.php index b7312c7..ec34d39 100644 --- a/contao/dca/tl_cfg_tag.php +++ b/contao/dca/tl_cfg_tag.php @@ -3,6 +3,7 @@ declare(strict_types=1); use Codefog\TagsBundle\Driver; +use Contao\DataContainer; /* * Tags Bundle for Contao Open Source CMS. @@ -33,9 +34,9 @@ // List 'list' => [ 'sorting' => [ - 'mode' => 1, + 'mode' => DataContainer::MODE_SORTED, 'fields' => ['name'], - 'flag' => 1, + 'flag' => DataContainer::SORT_INITIAL_LETTER_ASC, 'panelLayout' => 'filter;cfg_sort,search,limit', 'panel_callback' => [ 'cfg_sort' => ['codefog_tags.listener.data_container.tag', 'onPanelCallback'], diff --git a/src/DependencyInjection/Compiler/ManagerPass.php b/src/DependencyInjection/Compiler/ManagerPass.php index 22541b2..c92821f 100644 --- a/src/DependencyInjection/Compiler/ManagerPass.php +++ b/src/DependencyInjection/Compiler/ManagerPass.php @@ -12,19 +12,13 @@ class ManagerPass implements CompilerPassInterface { public const TAG_NAME = 'codefog_tags.manager'; - /** - * @var string - */ - private $registryName; - /** * ManagerPass constructor. * * @param string $registryName */ - public function __construct($registryName) + public function __construct(private $registryName) { - $this->registryName = $registryName; } public function process(ContainerBuilder $container): void diff --git a/src/DependencyInjection/Configuration.php b/src/DependencyInjection/Configuration.php index 9c06cfe..676a069 100644 --- a/src/DependencyInjection/Configuration.php +++ b/src/DependencyInjection/Configuration.php @@ -17,7 +17,7 @@ public function getConfigTreeBuilder(): TreeBuilder $rootNode = $treeBuilder->getRootNode(); } else { // BC layer for symfony/config 4.1 and older - $rootNode = $treeBuilder->root('codefog_tags'); + $rootNode = $treeBuilder->getRootNode(); } $rootNode diff --git a/src/EventListener/DataContainer/TagListener.php b/src/EventListener/DataContainer/TagListener.php index 3f034cf..4d4c694 100644 --- a/src/EventListener/DataContainer/TagListener.php +++ b/src/EventListener/DataContainer/TagListener.php @@ -21,29 +21,14 @@ class TagListener { - /** - * @var Connection - */ - private $db; - - /** - * @var ManagerRegistry - */ - private $registry; - - /** - * @var RequestStack - */ - private $requestStack; - /** * TagListener constructor. */ - public function __construct(Connection $db, ManagerRegistry $registry, RequestStack $requestStack) - { - $this->db = $db; - $this->registry = $registry; - $this->requestStack = $requestStack; + public function __construct( + private readonly Connection $db, + private readonly ManagerRegistry $registry, + private readonly RequestStack $requestStack, + ) { } /** diff --git a/src/EventListener/InsertTagsListener.php b/src/EventListener/InsertTagsListener.php index f6df5bf..92f51e1 100644 --- a/src/EventListener/InsertTagsListener.php +++ b/src/EventListener/InsertTagsListener.php @@ -9,17 +9,11 @@ class InsertTagsListener { - /** - * @var ManagerRegistry - */ - private $registry; - /** * TagContainer constructor. */ - public function __construct(ManagerRegistry $registry) + public function __construct(private readonly ManagerRegistry $registry) { - $this->registry = $registry; } /** diff --git a/src/EventListener/TagManagerListener.php b/src/EventListener/TagManagerListener.php index b536816..ac3827d 100644 --- a/src/EventListener/TagManagerListener.php +++ b/src/EventListener/TagManagerListener.php @@ -20,26 +20,11 @@ class TagManagerListener { - /** - * @var ManagerRegistry - */ - private $registry; - - /** - * @var RequestStack - */ - private $requestStack; - - /** - * @var ScopeMatcher - */ - private $scopeMatcher; - - public function __construct(ManagerRegistry $registry, RequestStack $requestStack, ScopeMatcher $scopeMatcher) - { - $this->registry = $registry; - $this->requestStack = $requestStack; - $this->scopeMatcher = $scopeMatcher; + public function __construct( + private readonly ManagerRegistry $registry, + private readonly RequestStack $requestStack, + private readonly ScopeMatcher $scopeMatcher, + ) { } /** diff --git a/src/Finder/SourceFinder.php b/src/Finder/SourceFinder.php index a76b43f..db0fa23 100644 --- a/src/Finder/SourceFinder.php +++ b/src/Finder/SourceFinder.php @@ -19,8 +19,8 @@ class SourceFinder { public function __construct( - private Connection $connection, - private DcaRelationsManager $dcaRelationsManager, + private readonly Connection $connection, + private readonly DcaRelationsManager $dcaRelationsManager, ) { } @@ -47,7 +47,7 @@ public function findMultiple(SourceCriteria $criteria): array $values = DcaRelationsModel::getReferenceValues($criteria->getSourceTable(), $criteria->getSourceField(), $ids); $values = array_values(array_unique($values)); - return array_map('intval', $values); + return array_map(intval(...), $values); } /** @@ -67,7 +67,7 @@ public function findRelatedSourceRecords(SourceCriteria $criteria, int|null $lim $tagIds = DcaRelationsModel::getRelatedValues($criteria->getSourceTable(), $criteria->getSourceField(), $criteria->getIds()); $tagIds = array_values(array_unique($tagIds)); - $tagIds = array_map('intval', $tagIds); + $tagIds = array_map(intval(...), $tagIds); if (0 === \count($tagIds)) { return []; diff --git a/src/Finder/TagFinder.php b/src/Finder/TagFinder.php index 1558519..711d010 100644 --- a/src/Finder/TagFinder.php +++ b/src/Finder/TagFinder.php @@ -26,7 +26,7 @@ public function count(TagCriteria $criteria): int { try { [$columns, $values, $options] = $this->parseCriteria($criteria); - } catch (NoTagsException $e) { + } catch (NoTagsException) { return 0; } @@ -44,7 +44,7 @@ public function findSingle(TagCriteria $criteria): Tag|null { try { [$columns, $values, $options] = $this->parseCriteria($criteria); - } catch (NoTagsException $e) { + } catch (NoTagsException) { return null; } @@ -62,7 +62,7 @@ public function findMultiple(TagCriteria $criteria): array { try { [$columns, $values, $options] = $this->parseCriteria($criteria); - } catch (NoTagsException $e) { + } catch (NoTagsException) { return []; } @@ -115,7 +115,7 @@ public function getTopTagIds(TagCriteria $criteria, int|null $limit = null, bool { // No array_unique() here! $tagIds = DcaRelationsModel::getRelatedValues($criteria->getSourceTable(), $criteria->getSourceField(), $criteria->getSourceIds()); - $tagIds = array_map('intval', $tagIds); + $tagIds = array_map(intval(...), $tagIds); if (0 === \count($tagIds)) { return []; @@ -168,7 +168,7 @@ protected function parseCriteria(TagCriteria $criteria): array $columns[] = 'id=?'; $values[] = (int) $ids[0]; } else { - $columns[] = 'id IN ('.implode(',', array_map('intval', $ids)).')'; + $columns[] = 'id IN ('.implode(',', array_map(intval(...), $ids)).')'; } } @@ -186,7 +186,7 @@ protected function parseCriteria(TagCriteria $criteria): array if (\count($sourceIds = $criteria->getSourceIds()) > 0) { $ids = DcaRelationsModel::getRelatedValues($criteria->getSourceTable(), $criteria->getSourceField(), $sourceIds); $ids = array_values(array_unique($ids)); - $ids = array_map('intval', $ids); + $ids = array_map(intval(...), $ids); if (0 === \count($ids)) { throw new NoTagsException(); @@ -202,7 +202,7 @@ protected function parseCriteria(TagCriteria $criteria): array if ($criteria->isUsedOnly()) { $ids = DcaRelationsModel::getRelatedValues($criteria->getSourceTable(), $criteria->getSourceField()); $ids = array_values(array_unique($ids)); - $ids = array_map('intval', $ids); + $ids = array_map(intval(...), $ids); if (0 === \count($ids)) { throw new NoTagsException(); diff --git a/src/Manager/DefaultManager.php b/src/Manager/DefaultManager.php index c9d05f0..19408ec 100644 --- a/src/Manager/DefaultManager.php +++ b/src/Manager/DefaultManager.php @@ -83,7 +83,7 @@ public function getFilteredTags(array $values, string|null $source = null): arra public function updateDcaField(string $table, string $field, array &$config): void { - $config['eval']['tagsCreate'] = $config['eval']['tagsCreate'] ?? true; + $config['eval']['tagsCreate'] ??= true; // Set the relation if (!isset($config['sql'])) { diff --git a/src/Tag.php b/src/Tag.php index cfb208c..c3b3ee0 100644 --- a/src/Tag.php +++ b/src/Tag.php @@ -6,35 +6,23 @@ class Tag { - /** - * Tag ID. - * - * @var string - */ - private $value; - - /** - * Tag name. - * - * @var string - */ - private $name; - - /** - * Data. - * - * @var array - */ - private $data; - /** * Tag constructor. */ - public function __construct(string $value, string $name, array $data = []) - { - $this->value = $value; - $this->name = $name; - $this->data = $data; + public function __construct( + /** + * Tag ID. + */ + private string $value, + /** + * Tag name. + */ + private string $name, + /** + * Data. + */ + private array $data = [], + ) { } public function getValue(): string diff --git a/src/Widget/TagsWidget.php b/src/Widget/TagsWidget.php index 3ac1b95..884d23d 100644 --- a/src/Widget/TagsWidget.php +++ b/src/Widget/TagsWidget.php @@ -44,6 +44,7 @@ class TagsWidget extends Widget */ protected $tagsManager; + #[\Override] public function addAttributes($attributes = null): void { if (\is_array($attributes)) { @@ -57,6 +58,7 @@ public function addAttributes($attributes = null): void parent::addAttributes($attributes); } + #[\Override] public function validate(): void { $value = $this->validator($this->getPost($this->strName)); @@ -86,6 +88,7 @@ public function generate() return $template->parse(); } + #[\Override] protected function getPost($key) { return array_filter(StringUtil::trimsplit(',', parent::getPost($key))); @@ -99,7 +102,7 @@ protected function generateConfig(): array $config = [ 'addLabel' => $GLOBALS['TL_LANG']['MSC']['cfg_tags.add'], 'allowCreate' => isset($this->tagsCreate) ? (bool) $this->tagsCreate : true, - 'sortable' => isset($this->tagsSortable) ? (bool) $this->tagsSortable : false, + 'sortable' => isset($this->tagsSortable) && (bool) $this->tagsSortable, ]; // Maximum number of items @@ -139,11 +142,7 @@ static function (Tag $aTag, Tag $bTag) use ($values) { $aIndex = array_search($aTag->getValue(), $values, true); $bIndex = array_search($bTag->getValue(), $values, true); - if ($aIndex === $bIndex) { - return 0; - } - - return $aIndex < $bIndex ? -1 : 1; + return $aIndex <=> $bIndex; }, ); } diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 6c23d13..ceafcd6 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -24,19 +24,19 @@ return; } - if (str_contains($class, '\\') && 0 !== strncmp($class, 'Contao\\', 7) && 0 !== strncmp($class, 'Codefog\TagsBundle\\', 19)) { + if (str_contains($class, '\\') && !str_starts_with($class, 'Contao\\') && !str_starts_with($class, 'Codefog\TagsBundle\\')) { return; } $isContaoClass = false; $isBundleClass = false; - if (0 === strncmp($class, 'Contao\\', 7)) { + if (str_starts_with($class, 'Contao\\')) { $class = substr($class, 7); $isContaoClass = true; } - if (0 === strncmp($class, 'Codefog\TagsBundle\\', 19)) { + if (str_starts_with($class, 'Codefog\TagsBundle\\')) { $class = substr($class, 19); $isBundleClass = true; } From d6ab3095becc948da400a4ddee5b061b8c60876c Mon Sep 17 00:00:00 2001 From: Kamil Kuzminski Date: Fri, 6 Mar 2026 13:46:51 +0100 Subject: [PATCH 04/28] Update the code to newest standards --- config/listener.yml | 1 + config/services.yml | 2 +- contao/config/config.php | 12 +-- contao/dca/tl_cfg_tag.php | 68 ++-------------- src/ContaoManager/Plugin.php | 2 +- .../CodefogTagsExtension.php | 3 - .../Compiler/ManagerPass.php | 13 +-- src/DependencyInjection/Configuration.php | 9 +-- .../DataContainer/TagListener.php | 81 ++++++++----------- src/EventListener/InsertTagsListener.php | 55 ------------- src/EventListener/TagManagerListener.php | 23 +----- src/Finder/SourceCriteria.php | 33 ++------ src/Finder/SourceFinder.php | 6 +- src/Finder/TagCriteria.php | 56 ++++--------- src/Finder/TagFinder.php | 2 +- src/InsertTag/TagResolver.php | 41 ++++++++++ src/Manager/DcaAwareInterface.php | 15 ---- src/Manager/DefaultManager.php | 59 ++------------ src/Manager/InsertTagsAwareInterface.php | 3 - src/Manager/ManagerInterface.php | 6 -- src/ManagerRegistry.php | 20 +---- src/Tag.php | 12 --- 22 files changed, 130 insertions(+), 392 deletions(-) delete mode 100644 src/EventListener/InsertTagsListener.php create mode 100644 src/InsertTag/TagResolver.php diff --git a/config/listener.yml b/config/listener.yml index c5de9c3..678bf24 100644 --- a/config/listener.yml +++ b/config/listener.yml @@ -20,3 +20,4 @@ services: - "@database_connection" - "@codefog_tags.manager_registry" - "@request_stack" + - "@contao.slug" diff --git a/config/services.yml b/config/services.yml index d24f712..dadb871 100644 --- a/config/services.yml +++ b/config/services.yml @@ -4,7 +4,7 @@ services: abstract: true calls: - [setTagFinder, ["@codefog_tags.tag_finder"]] - - [setSourcefinder, ["@codefog_tags.source_finder"]] + - [setSourceFinder, ["@codefog_tags.source_finder"]] codefog_tags.tag_finder: class: Codefog\TagsBundle\Finder\TagFinder diff --git a/contao/config/config.php b/contao/config/config.php index fbe4d0d..dbaa1cc 100644 --- a/contao/config/config.php +++ b/contao/config/config.php @@ -17,19 +17,13 @@ 'tables' => ['tl_cfg_tag'], ]; -/* - * Backend widgets - */ +// Backend widgets $GLOBALS['BE_FFL']['cfgTags'] = TagsWidget::class; -/* - * Models - */ +// Models $GLOBALS['TL_MODELS']['tl_cfg_tag'] = TagModel::class; -/* - * Hooks - */ +// Hooks $GLOBALS['TL_HOOKS']['replaceInsertTags'][] = ['codefog_tags.listener.insert_tags', 'onReplaceInsertTags']; if (is_array($GLOBALS['TL_HOOKS']['loadDataContainer'] ?? null)) { diff --git a/contao/dca/tl_cfg_tag.php b/contao/dca/tl_cfg_tag.php index ec34d39..d9d5d6f 100644 --- a/contao/dca/tl_cfg_tag.php +++ b/contao/dca/tl_cfg_tag.php @@ -4,6 +4,7 @@ use Codefog\TagsBundle\Driver; use Contao\DataContainer; +use Doctrine\DBAL\Types\Types; /* * Tags Bundle for Contao Open Source CMS. @@ -19,9 +20,6 @@ 'dataContainer' => Driver::class, 'enableVersioning' => true, 'notCopyable' => true, - 'onload_callback' => [ - ['codefog_tags.listener.data_container.tag', 'onLoadCallback'], - ], 'sql' => [ 'keys' => [ 'id' => 'primary', @@ -38,47 +36,10 @@ 'fields' => ['name'], 'flag' => DataContainer::SORT_INITIAL_LETTER_ASC, 'panelLayout' => 'filter;cfg_sort,search,limit', - 'panel_callback' => [ - 'cfg_sort' => ['codefog_tags.listener.data_container.tag', 'onPanelCallback'], - ], ], 'label' => [ 'fields' => ['name', 'source', 'total'], 'showColumns' => true, - 'label_callback' => ['codefog_tags.listener.data_container.tag', 'onLabelCallback'], - ], - 'global_operations' => [ - 'all' => [ - 'label' => &$GLOBALS['TL_LANG']['MSC']['all'], - 'href' => 'act=select', - 'class' => 'header_edit_all', - 'attributes' => 'onclick="Backend.getScrollOffset()" accesskey="e"', - ], - ], - 'operations' => [ - 'edit' => [ - 'label' => &$GLOBALS['TL_LANG']['tl_cfg_tag']['edit'], - 'href' => 'act=edit', - 'icon' => 'edit.gif', - ], - 'delete' => [ - 'label' => &$GLOBALS['TL_LANG']['tl_cfg_tag']['delete'], - 'href' => 'act=delete', - 'icon' => 'delete.gif', - 'attributes' => 'onclick="if(!confirm(\''.($GLOBALS['TL_LANG']['MSC']['deleteConfirm'] ?? null).'\'))return false;Backend.getScrollOffset()"', - ], - 'show' => [ - 'label' => &$GLOBALS['TL_LANG']['tl_cfg_tag']['show'], - 'href' => 'act=show', - 'icon' => 'show.gif', - ], - ], - ], - - // Select - 'select' => [ - 'buttons_callback' => [ - ['codefog_tags.listener.data_container.tag', 'onButtonsCallback'], ], ], @@ -90,47 +51,32 @@ // Fields 'fields' => [ 'id' => [ - 'sql' => ['type' => 'integer', 'unsigned' => true, 'autoincrement' => true], + 'sql' => ['type' => Types::INTEGER, 'unsigned' => true, 'autoincrement' => true], ], 'tstamp' => [ - 'sql' => ['type' => 'integer', 'unsigned' => true], + 'sql' => ['type' => Types::INTEGER, 'unsigned' => true], ], 'total' => [ 'label' => &$GLOBALS['TL_LANG']['tl_cfg_tag']['count'], ], 'name' => [ - 'label' => &$GLOBALS['TL_LANG']['tl_cfg_tag']['name'], - 'exclude' => true, 'search' => true, 'inputType' => 'text', - 'eval' => [ - 'mandatory' => true, - 'alnum' => true, - 'maxlength' => 255, - 'tl_class' => 'w50', - ], - 'sql' => ['type' => 'string', 'length' => 64, 'default' => ''], + 'eval' => ['mandatory' => true, 'alnum' => true, 'maxlength' => 255, 'tl_class' => 'w50'], + 'sql' => ['type' => Types::STRING, 'length' => 64, 'default' => ''], ], 'source' => [ - 'label' => &$GLOBALS['TL_LANG']['tl_cfg_tag']['source'], - 'exclude' => true, 'filter' => true, 'inputType' => 'select', - 'options_callback' => ['codefog_tags.listener.data_container.tag', 'onSourceOptionsCallback'], 'reference' => &$GLOBALS['TL_LANG']['tl_cfg_tag']['sourceRef'], 'eval' => ['mandatory' => true, 'includeBlankOption' => true, 'tl_class' => 'w50'], - 'sql' => ['type' => 'string', 'length' => 64, 'notnull' => false], + 'sql' => ['type' => Types::STRING, 'length' => 64, 'notnull' => false], ], 'alias' => [ - 'label' => &$GLOBALS['TL_LANG']['tl_cfg_tag']['alias'], - 'exclude' => true, 'search' => true, 'inputType' => 'text', 'eval' => ['rgxp' => 'alias', 'maxlength' => 128, 'tl_class' => 'w50'], - 'save_callback' => [ - ['codefog_tags.listener.data_container.tag', 'onAliasSaveCallback'], - ], - 'sql' => ['type' => 'string', 'length' => 128, 'default' => ''], + 'sql' => ['type' => Types::STRING, 'length' => 128, 'default' => ''], ], ], ]; diff --git a/src/ContaoManager/Plugin.php b/src/ContaoManager/Plugin.php index 2c568aa..fe1f49d 100644 --- a/src/ContaoManager/Plugin.php +++ b/src/ContaoManager/Plugin.php @@ -13,7 +13,7 @@ class Plugin implements BundlePluginInterface { - public function getBundles(ParserInterface $parser) + public function getBundles(ParserInterface $parser): array { return [ BundleConfig::create(CodefogTagsBundle::class)->setLoadAfter([ContaoCoreBundle::class, CodefogHasteBundle::class]), diff --git a/src/DependencyInjection/CodefogTagsExtension.php b/src/DependencyInjection/CodefogTagsExtension.php index b84614a..83335e1 100755 --- a/src/DependencyInjection/CodefogTagsExtension.php +++ b/src/DependencyInjection/CodefogTagsExtension.php @@ -24,9 +24,6 @@ protected function loadInternal(array $mergedConfig, ContainerBuilder $container } } - /** - * Create the manager. - */ private function createManager(string $name, array $config, ContainerBuilder $container): void { $id = \sprintf('codefog_tags.manager.%s', $name); diff --git a/src/DependencyInjection/Compiler/ManagerPass.php b/src/DependencyInjection/Compiler/ManagerPass.php index c92821f..25fad02 100644 --- a/src/DependencyInjection/Compiler/ManagerPass.php +++ b/src/DependencyInjection/Compiler/ManagerPass.php @@ -8,16 +8,11 @@ use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Reference; -class ManagerPass implements CompilerPassInterface +readonly class ManagerPass implements CompilerPassInterface { - public const TAG_NAME = 'codefog_tags.manager'; - - /** - * ManagerPass constructor. - * - * @param string $registryName - */ - public function __construct(private $registryName) + public const string TAG_NAME = 'codefog_tags.manager'; + + public function __construct(private string $registryName) { } diff --git a/src/DependencyInjection/Configuration.php b/src/DependencyInjection/Configuration.php index 676a069..cc7bc71 100644 --- a/src/DependencyInjection/Configuration.php +++ b/src/DependencyInjection/Configuration.php @@ -12,14 +12,7 @@ class Configuration implements ConfigurationInterface public function getConfigTreeBuilder(): TreeBuilder { $treeBuilder = new TreeBuilder('codefog_tags'); - - if (method_exists($treeBuilder, 'getRootNode')) { - $rootNode = $treeBuilder->getRootNode(); - } else { - // BC layer for symfony/config 4.1 and older - $rootNode = $treeBuilder->getRootNode(); - } - + $rootNode = $treeBuilder->getRootNode(); $rootNode ->children() ->arrayNode('managers') diff --git a/src/EventListener/DataContainer/TagListener.php b/src/EventListener/DataContainer/TagListener.php index 4d4c694..08bf0d8 100644 --- a/src/EventListener/DataContainer/TagListener.php +++ b/src/EventListener/DataContainer/TagListener.php @@ -10,8 +10,11 @@ use Codefog\TagsBundle\ManagerRegistry; use Codefog\TagsBundle\Model\TagModel; use Contao\Controller; +use Contao\CoreBundle\DependencyInjection\Attribute\AsCallback; +use Contao\CoreBundle\Slug\Slug; use Contao\Database; use Contao\DataContainer; +use Contao\DC_Table; use Contao\StringUtil; use Contao\System; use Contao\Versions; @@ -19,21 +22,17 @@ use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBagInterface; -class TagListener +readonly class TagListener { - /** - * TagListener constructor. - */ public function __construct( - private readonly Connection $db, - private readonly ManagerRegistry $registry, - private readonly RequestStack $requestStack, + private Connection $connection, + private ManagerRegistry $registry, + private RequestStack $requestStack, + private Slug $slug, ) { } - /** - * On load callback. - */ + #[AsCallback('tl_cfg_tag', 'config.onload')] public function onLoadCallback(DataContainer $dc): void { if (!($dc instanceof Driver)) { @@ -57,7 +56,7 @@ public function onLoadCallback(DataContainer $dc): void } // Append all other tags - foreach ($this->db->query("SELECT id FROM {$dc->table}")->fetchFirstColumn() as $id) { + foreach ($this->connection->fetchFirstColumn("SELECT id FROM {$dc->table}") as $id) { if (!\array_key_exists($id, $ids)) { $ids[$id] = 0; } @@ -90,9 +89,7 @@ public function onLoadCallback(DataContainer $dc): void $dc->setFirstOrderBy('name'); } - /** - * On generate panel callback. - */ + #[AsCallback('tl_cfg_tag', 'list.sorting.panel_callback.cfg_sort')] public function onPanelCallback(DataContainer $dc): string { /** @var AttributeBagInterface $bag */ @@ -137,12 +134,8 @@ public function onPanelCallback(DataContainer $dc): string '; } - /** - * On label callback. - * - * @param string $label - */ - public function onLabelCallback(array $row, $label, DataContainer $dc, array $args): array + #[AsCallback('tl_cfg_tag', 'list.label.label')] + public function onLabelCallback(array $row, string $label, DataContainer $dc, array $args): array { if ($row['source']) { $manager = $this->registry->get($row['source']); @@ -155,12 +148,8 @@ public function onLabelCallback(array $row, $label, DataContainer $dc, array $ar return $args; } - /** - * On buttons callback. - * - * @return array - */ - public function onButtonsCallback(array $buttons, DataContainer $dc) + #[AsCallback('tl_cfg_tag', 'select.buttons')] + public function onButtonsCallback(array $buttons, DataContainer $dc): array { $request = $this->requestStack->getCurrentRequest(); @@ -196,7 +185,7 @@ public function onButtonsCallback(array $buttons, DataContainer $dc) $versions->initialize(); // Store the new alias - $this->db->update($dc->table, ['alias' => $alias], ['id' => $tagModel->id]); + $this->connection->update($dc->table, ['alias' => $alias], ['id' => $tagModel->id]); // Create a new version $versions->create(); @@ -212,9 +201,7 @@ public function onButtonsCallback(array $buttons, DataContainer $dc) return $buttons; } - /** - * On source options callback. - */ + #[AsCallback('tl_cfg_tag', 'fields.source.options')] public function onSourceOptionsCallback(): array { $options = []; @@ -228,31 +215,27 @@ public function onSourceOptionsCallback(): array return $options; } - /** - * On alias save callback. - * - * @throws \RuntimeException - */ + #[AsCallback('tl_cfg_tag', 'fields.alias.save')] public function onAliasSaveCallback(string $value, DataContainer $dc): string { - $autoAlias = false; - - // Generate alias if there is none - if (!$value) { - $autoAlias = true; - $value = StringUtil::generateAlias($dc->activeRecord->name); + if ($dc instanceof DC_Table) { + $activeRecord = $dc->getActiveRecord(); + } else { + $activeRecord = $dc->getCurrentRecord(); } - $existingAliases = $this->db->fetchOne("SELECT COUNT(*) FROM {$dc->table} WHERE alias=? AND source=?", [$value, $dc->activeRecord->source]); - - // Check whether the record alias exists - if ($existingAliases > 1 && !$autoAlias) { - throw new \RuntimeException(\sprintf($GLOBALS['TL_LANG']['ERR']['aliasExists'], $value)); + if (null === $activeRecord) { + return $value; } - // Add ID to alias - if ($existingAliases > 0 && $autoAlias) { - $value .= '-'.$dc->id; + $aliasExists = fn (string $alias) => false !== $this->connection->fetchOne("SELECT id FROM {$dc->table} WHERE id!=? AND alias=? AND source=?", [$dc->id, $value, $activeRecord['source']]); + + if (!$value) { + $value = $this->slug->generate($activeRecord['headline'], duplicateCheck: $aliasExists); + } elseif (preg_match('/^[1-9]\d*$/', $value)) { + throw new \Exception(\sprintf($GLOBALS['TL_LANG']['ERR']['aliasNumeric'], $value)); + } elseif ($aliasExists($value)) { + throw new \Exception(\sprintf($GLOBALS['TL_LANG']['ERR']['aliasExists'], $value)); } return $value; diff --git a/src/EventListener/InsertTagsListener.php b/src/EventListener/InsertTagsListener.php deleted file mode 100644 index 92f51e1..0000000 --- a/src/EventListener/InsertTagsListener.php +++ /dev/null @@ -1,55 +0,0 @@ -replaceInsertTag($elements); - } - - return false; - } - - /** - * Replace the insert tag. - */ - private function replaceInsertTag(array $elements): string - { - if (3 !== \count($elements)) { - return ''; - } - - [$source, $value, $property] = $elements; - - $manager = $this->registry->get($source); - - if ($manager instanceof InsertTagsAwareInterface) { - return $manager->getInsertTagValue($value, $property, $elements); - } - - return ''; - } -} diff --git a/src/EventListener/TagManagerListener.php b/src/EventListener/TagManagerListener.php index ac3827d..e72527b 100644 --- a/src/EventListener/TagManagerListener.php +++ b/src/EventListener/TagManagerListener.php @@ -18,18 +18,15 @@ use Contao\DataContainer; use Symfony\Component\HttpFoundation\RequestStack; -class TagManagerListener +readonly class TagManagerListener { public function __construct( - private readonly ManagerRegistry $registry, - private readonly RequestStack $requestStack, - private readonly ScopeMatcher $scopeMatcher, + private ManagerRegistry $registry, + private RequestStack $requestStack, + private ScopeMatcher $scopeMatcher, ) { } - /** - * On load the data container. - */ public function onLoadDataContainer(string $table): void { if (!isset($GLOBALS['TL_DCA'][$table]['fields']) || !\is_array($GLOBALS['TL_DCA'][$table]['fields'])) { @@ -57,9 +54,6 @@ public function onLoadDataContainer(string $table): void } } - /** - * On the field save. - */ public function onFieldSaveCallback(string $value, DataContainer $dc): string { if (null !== ($manager = $this->getManagerFromDca($dc))) { @@ -69,9 +63,6 @@ public function onFieldSaveCallback(string $value, DataContainer $dc): string return $value; } - /** - * On options callback. - */ public function onOptionsCallback(DataContainer $dc): array { $value = []; @@ -83,9 +74,6 @@ public function onOptionsCallback(DataContainer $dc): array return $value; } - /** - * Get the manager from DCA. - */ private function getManagerFromDca(DataContainer $dc): DcaAwareInterface|null { if (!isset($GLOBALS['TL_DCA'][$dc->table]['fields'][$dc->field]['eval']['tagsManager'])) { @@ -101,9 +89,6 @@ private function getManagerFromDca(DataContainer $dc): DcaAwareInterface|null return null; } - /** - * Add the widget assets. - */ private function addAssets(): void { $GLOBALS['TL_CSS'][] = 'bundles/codefogtags/selectize.min.css'; diff --git a/src/Finder/SourceCriteria.php b/src/Finder/SourceCriteria.php index b0cb258..0e02fab 100644 --- a/src/Finder/SourceCriteria.php +++ b/src/Finder/SourceCriteria.php @@ -8,38 +8,19 @@ class SourceCriteria { - /** - * @var string - */ - protected $name; - - /** - * @var string - */ - protected $source; - - /** - * @var array - */ - protected $ids = []; + protected array $ids = []; /** * @var array */ - protected $tags = []; + protected array $tags = []; - /** - * @var array - */ - protected $tagValues = []; + protected array $tagValues = []; - /** - * Criteria constructor. - */ - public function __construct(string $name, string $source) - { - $this->name = $name; - $this->source = $source; + public function __construct( + protected readonly string $name, + protected readonly string $source, + ) { } public function getName(): string diff --git a/src/Finder/SourceFinder.php b/src/Finder/SourceFinder.php index db0fa23..591635f 100644 --- a/src/Finder/SourceFinder.php +++ b/src/Finder/SourceFinder.php @@ -16,11 +16,11 @@ use Codefog\HasteBundle\Model\DcaRelationsModel; use Doctrine\DBAL\Connection; -class SourceFinder +readonly class SourceFinder { public function __construct( - private readonly Connection $connection, - private readonly DcaRelationsManager $dcaRelationsManager, + private Connection $connection, + private DcaRelationsManager $dcaRelationsManager, ) { } diff --git a/src/Finder/TagCriteria.php b/src/Finder/TagCriteria.php index 3dff802..55ed1e5 100644 --- a/src/Finder/TagCriteria.php +++ b/src/Finder/TagCriteria.php @@ -6,48 +6,20 @@ class TagCriteria { - /** - * @var string - */ - protected $name; - - /** - * @var string - */ - protected $source; - - /** - * @var array - */ - protected $aliases = []; - - /** - * @var array - */ - protected $sourceIds = []; - - /** - * @var bool - */ - protected $usedOnly = false; - - /** - * @var array - */ - protected $values = []; - - /** - * @var string - */ - protected $order = 'name'; - - /** - * Criteria constructor. - */ - public function __construct(string $name, string $source) - { - $this->name = $name; - $this->source = $source; + protected array $aliases = []; + + protected array $sourceIds = []; + + protected bool $usedOnly = false; + + protected array $values = []; + + protected string $order = 'name'; + + public function __construct( + protected string $name, + protected string $source, + ) { } public function getName(): string diff --git a/src/Finder/TagFinder.php b/src/Finder/TagFinder.php index 711d010..a5a6f9b 100644 --- a/src/Finder/TagFinder.php +++ b/src/Finder/TagFinder.php @@ -17,7 +17,7 @@ use Codefog\TagsBundle\Model\TagModel; use Codefog\TagsBundle\Tag; -class TagFinder +readonly class TagFinder { /** * Count tags by criteria. diff --git a/src/InsertTag/TagResolver.php b/src/InsertTag/TagResolver.php new file mode 100644 index 0000000..ec9c17c --- /dev/null +++ b/src/InsertTag/TagResolver.php @@ -0,0 +1,41 @@ +getParameters(); + + if (3 !== \count($parameters->all())) { + return new InsertTagResult(''); + } + + $source = $parameters->getScalar(0); + $value = $parameters->getScalar(1); + $property = $parameters->getScalar(2); + + $manager = $this->registry->get($source); + + if ($manager instanceof InsertTagsAwareInterface) { + return $manager->getInsertTagValue($value, $property, $parameters->all()); + } + + return new InsertTagResult(''); + } +} diff --git a/src/Manager/DcaAwareInterface.php b/src/Manager/DcaAwareInterface.php index fd6d133..1bfc837 100644 --- a/src/Manager/DcaAwareInterface.php +++ b/src/Manager/DcaAwareInterface.php @@ -8,28 +8,13 @@ interface DcaAwareInterface { - /** - * Update the DCA field. - */ public function updateDcaField(string $table, string $field, array &$config): void; - /** - * Save the DCA field. - */ public function saveDcaField(string $value, DataContainer $dc): string; - /** - * Get the filter options. - */ public function getFilterOptions(DataContainer $dc): array; - /** - * Get the source records count. - */ public function getSourceRecordsCount(array $data, DataContainer $dc): int; - /** - * Get the top tag IDs with count. - */ public function getTopTagIds(): array; } diff --git a/src/Manager/DefaultManager.php b/src/Manager/DefaultManager.php index 19408ec..e382f60 100644 --- a/src/Manager/DefaultManager.php +++ b/src/Manager/DefaultManager.php @@ -23,46 +23,21 @@ class DefaultManager implements ManagerInterface, DcaAwareInterface, InsertTagsAwareInterface { - /** - * @var string - */ - protected $name; - - /** - * @var array - */ - protected $sources; - - /** - * @var TagFinder - */ - protected $tagFinder; - - /** - * @var SourceFinder - */ - protected $sourceFinder; - - /** - * DefaultManager constructor. - */ - public function __construct(string $name, array $sources) - { - $this->name = $name; - $this->sources = $sources; + protected TagFinder $tagFinder; + + protected SourceFinder $sourceFinder; + + public function __construct( + protected readonly string $name, + protected readonly array $sources, + ) { } - /** - * Set the tag finder. - */ public function setTagFinder(TagFinder $tagFinder): void { $this->tagFinder = $tagFinder; } - /** - * Set the source finder. - */ public function setSourceFinder(SourceFinder $sourceFinder): void { $this->sourceFinder = $sourceFinder; @@ -224,41 +199,26 @@ public function getInsertTagValue(string $value, string $property, array $elemen return isset($data[$property]) ? (string) $data[$property] : ''; } - /** - * Get the tag finder. - */ public function getTagFinder(): TagFinder { return $this->tagFinder; } - /** - * Create the tag criteria. - */ public function createTagCriteria(string|null $source = null): TagCriteria { return new TagCriteria($this->name, $this->getSource($source)); } - /** - * Get the source finder. - */ public function getSourceFinder(): SourceFinder { return $this->sourceFinder; } - /** - * Create the source criteria. - */ public function createSourceCriteria(string|null $source = null): SourceCriteria { return new SourceCriteria($this->name, $this->getSource($source)); } - /** - * Get the source. - */ protected function getSource(string|null $source = null): string { if (null === $source) { @@ -270,9 +230,6 @@ protected function getSource(string|null $source = null): string return $source; } - /** - * Generate the tag alias. - */ protected function generateAlias(TagModel $model, string|null $source = null): void { $alias = StringUtil::generateAlias($model->name); diff --git a/src/Manager/InsertTagsAwareInterface.php b/src/Manager/InsertTagsAwareInterface.php index f14181d..cbaf193 100644 --- a/src/Manager/InsertTagsAwareInterface.php +++ b/src/Manager/InsertTagsAwareInterface.php @@ -6,8 +6,5 @@ interface InsertTagsAwareInterface { - /** - * Get the insert tag value. - */ public function getInsertTagValue(string $value, string $property, array $elements): string; } diff --git a/src/Manager/ManagerInterface.php b/src/Manager/ManagerInterface.php index fb152c3..bbfed96 100644 --- a/src/Manager/ManagerInterface.php +++ b/src/Manager/ManagerInterface.php @@ -14,13 +14,7 @@ interface ManagerInterface { - /** - * Get all tags. - */ public function getAllTags(string|null $source = null): array; - /** - * Get tags optionally filtered by values. - */ public function getFilteredTags(array $values, string|null $source = null): array; } diff --git a/src/ManagerRegistry.php b/src/ManagerRegistry.php index 471d40f..beb3d6b 100644 --- a/src/ManagerRegistry.php +++ b/src/ManagerRegistry.php @@ -8,26 +8,13 @@ class ManagerRegistry { - /** - * Managers. - * - * @var array - */ - private $managers = []; - - /** - * Add the manager. - */ + private array $managers = []; + public function add(ManagerInterface $manager, string $name): void { $this->managers[$name] = $manager; } - /** - * Get the manager. - * - * @throws \InvalidArgumentException - */ public function get(string $name): ManagerInterface { if (!\array_key_exists($name, $this->managers)) { @@ -37,9 +24,6 @@ public function get(string $name): ManagerInterface return $this->managers[$name]; } - /** - * Get all managers. - */ public function all(): array { return $this->managers; diff --git a/src/Tag.php b/src/Tag.php index c3b3ee0..48afeb7 100644 --- a/src/Tag.php +++ b/src/Tag.php @@ -6,21 +6,9 @@ class Tag { - /** - * Tag constructor. - */ public function __construct( - /** - * Tag ID. - */ private string $value, - /** - * Tag name. - */ private string $name, - /** - * Data. - */ private array $data = [], ) { } From 82e6f3df5c5aab263ffdd100eb36b9b32ea33251 Mon Sep 17 00:00:00 2001 From: Kamil Kuzminski Date: Fri, 6 Mar 2026 14:04:52 +0100 Subject: [PATCH 05/28] PHPStan fixes --- phpstan.neon | 4 +++ .../CodefogTagsExtension.php | 6 +++++ src/Driver.php | 3 +++ .../DataContainer/TagListener.php | 14 ++++++++++ src/EventListener/TagManagerListener.php | 3 +++ src/Finder/SourceCriteria.php | 18 +++++++++++++ src/Finder/SourceFinder.php | 6 ++++- src/Finder/TagCriteria.php | 27 +++++++++++++++++++ src/Finder/TagFinder.php | 21 +++++++-------- src/InsertTag/TagResolver.php | 2 +- src/Manager/DcaAwareInterface.php | 12 +++++++++ src/Manager/DefaultManager.php | 17 +++++++++++- src/Manager/InsertTagsAwareInterface.php | 3 +++ src/Manager/ManagerInterface.php | 10 +++++++ src/ManagerRegistry.php | 6 +++++ src/Tag.php | 9 +++++++ 16 files changed, 147 insertions(+), 14 deletions(-) create mode 100644 phpstan.neon diff --git a/phpstan.neon b/phpstan.neon new file mode 100644 index 0000000..496a0c4 --- /dev/null +++ b/phpstan.neon @@ -0,0 +1,4 @@ +parameters: + excludePaths: + - src/Widget/* + - tests/* diff --git a/src/DependencyInjection/CodefogTagsExtension.php b/src/DependencyInjection/CodefogTagsExtension.php index 83335e1..21a7184 100755 --- a/src/DependencyInjection/CodefogTagsExtension.php +++ b/src/DependencyInjection/CodefogTagsExtension.php @@ -13,6 +13,9 @@ class CodefogTagsExtension extends ConfigurableExtension { + /** + * @param array $mergedConfig + */ protected function loadInternal(array $mergedConfig, ContainerBuilder $container): void { $loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); @@ -24,6 +27,9 @@ protected function loadInternal(array $mergedConfig, ContainerBuilder $container } } + /** + * @param array $config + */ private function createManager(string $name, array $config, ContainerBuilder $container): void { $id = \sprintf('codefog_tags.manager.%s', $name); diff --git a/src/Driver.php b/src/Driver.php index e082381..394eff9 100644 --- a/src/Driver.php +++ b/src/Driver.php @@ -11,6 +11,9 @@ */ class Driver extends DC_Table { + /** + * @param array $orderBy + */ public function setOrderBy(array $orderBy): void { $this->orderBy = $orderBy; diff --git a/src/EventListener/DataContainer/TagListener.php b/src/EventListener/DataContainer/TagListener.php index 08bf0d8..29e6983 100644 --- a/src/EventListener/DataContainer/TagListener.php +++ b/src/EventListener/DataContainer/TagListener.php @@ -134,6 +134,12 @@ public function onPanelCallback(DataContainer $dc): string '; } + /** + * @param array $row + * @param array $args + * + * @return array + */ #[AsCallback('tl_cfg_tag', 'list.label.label')] public function onLabelCallback(array $row, string $label, DataContainer $dc, array $args): array { @@ -148,6 +154,11 @@ public function onLabelCallback(array $row, string $label, DataContainer $dc, ar return $args; } + /** + * @param array $buttons + * + * @return array + */ #[AsCallback('tl_cfg_tag', 'select.buttons')] public function onButtonsCallback(array $buttons, DataContainer $dc): array { @@ -201,6 +212,9 @@ public function onButtonsCallback(array $buttons, DataContainer $dc): array return $buttons; } + /** + * @return array + */ #[AsCallback('tl_cfg_tag', 'fields.source.options')] public function onSourceOptionsCallback(): array { diff --git a/src/EventListener/TagManagerListener.php b/src/EventListener/TagManagerListener.php index e72527b..eaaa406 100644 --- a/src/EventListener/TagManagerListener.php +++ b/src/EventListener/TagManagerListener.php @@ -63,6 +63,9 @@ public function onFieldSaveCallback(string $value, DataContainer $dc): string return $value; } + /** + * @return array + */ public function onOptionsCallback(DataContainer $dc): array { $value = []; diff --git a/src/Finder/SourceCriteria.php b/src/Finder/SourceCriteria.php index 0e02fab..96dd529 100644 --- a/src/Finder/SourceCriteria.php +++ b/src/Finder/SourceCriteria.php @@ -8,6 +8,9 @@ class SourceCriteria { + /** + * @var array + */ protected array $ids = []; /** @@ -15,6 +18,9 @@ class SourceCriteria */ protected array $tags = []; + /** + * @var array + */ protected array $tagValues = []; public function __construct( @@ -43,11 +49,17 @@ public function getSourceField(): string return explode('.', $this->source, 2)[1]; } + /** + * @return array + */ public function getIds(): array { return $this->ids; } + /** + * @param array $ids + */ public function setIds(array $ids): self { $this->ids = $ids; @@ -80,11 +92,17 @@ public function setTag(Tag $tag): self return $this; } + /** + * @return array + */ public function getTagValues(): array { return $this->tagValues; } + /** + * @param array $tagValues + */ public function setTagValues(array $tagValues): self { $this->tagValues = $tagValues; diff --git a/src/Finder/SourceFinder.php b/src/Finder/SourceFinder.php index 591635f..f6d1589 100644 --- a/src/Finder/SourceFinder.php +++ b/src/Finder/SourceFinder.php @@ -34,6 +34,8 @@ public function count(SourceCriteria $criteria): int /** * Find multiple source record IDs by criteria. + * + * @return array */ public function findMultiple(SourceCriteria $criteria): array { @@ -53,6 +55,8 @@ public function findMultiple(SourceCriteria $criteria): array /** * Find the related source records. * + * @return array + * * @throws \RuntimeException */ public function findRelatedSourceRecords(SourceCriteria $criteria, int|null $limit = null): array @@ -61,7 +65,7 @@ public function findRelatedSourceRecords(SourceCriteria $criteria, int|null $lim throw new \RuntimeException('No IDs have been provided'); } - if (false === ($relation = $this->dcaRelationsManager->getRelation($criteria->getSourceTable(), $criteria->getSourceField()))) { + if (null === ($relation = $this->dcaRelationsManager->getRelation($criteria->getSourceTable(), $criteria->getSourceField()))) { throw new \RuntimeException(\sprintf('The field %s.%s is not related', $criteria->getSourceTable(), $criteria->getSourceField())); } diff --git a/src/Finder/TagCriteria.php b/src/Finder/TagCriteria.php index 55ed1e5..0e30143 100644 --- a/src/Finder/TagCriteria.php +++ b/src/Finder/TagCriteria.php @@ -6,12 +6,21 @@ class TagCriteria { + /** + * @var array + */ protected array $aliases = []; + /** + * @var array + */ protected array $sourceIds = []; protected bool $usedOnly = false; + /** + * @var array + */ protected array $values = []; protected string $order = 'name'; @@ -42,11 +51,17 @@ public function getSourceField(): string return explode('.', $this->source, 2)[1]; } + /** + * @return array + */ public function getAliases(): array { return $this->aliases; } + /** + * @param array $aliases + */ public function setAliases(array $aliases): self { $this->aliases = array_values(array_unique($aliases)); @@ -61,11 +76,17 @@ public function setAlias(string $alias): self return $this; } + /** + * @return array + */ public function getSourceIds(): array { return $this->sourceIds; } + /** + * @param array $sourceIds + */ public function setSourceIds(array $sourceIds): self { $this->sourceIds = array_values(array_unique($sourceIds)); @@ -85,11 +106,17 @@ public function setUsedOnly(bool $usedOnly): self return $this; } + /** + * @return array + */ public function getValues(): array { return $this->values; } + /** + * @param array $values + */ public function setValues(array $values): self { $this->values = array_values(array_unique($values)); diff --git a/src/Finder/TagFinder.php b/src/Finder/TagFinder.php index a5a6f9b..f7f054a 100644 --- a/src/Finder/TagFinder.php +++ b/src/Finder/TagFinder.php @@ -19,9 +19,6 @@ readonly class TagFinder { - /** - * Count tags by criteria. - */ public function count(TagCriteria $criteria): int { try { @@ -37,9 +34,6 @@ public function count(TagCriteria $criteria): int return TagModel::countBy($columns, $values, $options); } - /** - * Find a single tag by criteria. - */ public function findSingle(TagCriteria $criteria): Tag|null { try { @@ -56,7 +50,7 @@ public function findSingle(TagCriteria $criteria): Tag|null } /** - * Find multiple tags by criteria. + * @return array */ public function findMultiple(TagCriteria $criteria): array { @@ -88,6 +82,8 @@ public function findMultiple(TagCriteria $criteria): array /** * Get the top tags. The tag count will be part of tag's data ($tag->getData()['count']). + * + * @return array */ public function getTopTags(TagCriteria $criteria, int|null $limit = null, bool $withCount = false): array { @@ -110,6 +106,8 @@ public function getTopTags(TagCriteria $criteria, int|null $limit = null, bool $ /** * Get the top tag IDs. + * + * @return array */ public function getTopTagIds(TagCriteria $criteria, int|null $limit = null, bool $withCount = false): array { @@ -143,16 +141,17 @@ public function getTopTagIds(TagCriteria $criteria, int|null $limit = null, bool return \array_slice($helper, 0, $limit, $withCount); } - /** - * Create tag from model. - */ public function createTagFromModel(TagModel $model): Tag { return new Tag((string) $model->id, (string) $model->name, $model->row()); } /** - * Parse the criteria to object. + * @return array{ + * array, + * array, + * array, + * } * * @throws NoTagsException */ diff --git a/src/InsertTag/TagResolver.php b/src/InsertTag/TagResolver.php index ec9c17c..abb05d4 100644 --- a/src/InsertTag/TagResolver.php +++ b/src/InsertTag/TagResolver.php @@ -33,7 +33,7 @@ public function __invoke(ResolvedInsertTag $insertTag): InsertTagResult $manager = $this->registry->get($source); if ($manager instanceof InsertTagsAwareInterface) { - return $manager->getInsertTagValue($value, $property, $parameters->all()); + return new InsertTagResult($manager->getInsertTagValue($value, $property, $parameters->all())); } return new InsertTagResult(''); diff --git a/src/Manager/DcaAwareInterface.php b/src/Manager/DcaAwareInterface.php index 1bfc837..505ebaf 100644 --- a/src/Manager/DcaAwareInterface.php +++ b/src/Manager/DcaAwareInterface.php @@ -8,13 +8,25 @@ interface DcaAwareInterface { + /** + * @param array $config + */ public function updateDcaField(string $table, string $field, array &$config): void; public function saveDcaField(string $value, DataContainer $dc): string; + /** + * @return array + */ public function getFilterOptions(DataContainer $dc): array; + /** + * @param array $data + */ public function getSourceRecordsCount(array $data, DataContainer $dc): int; + /** + * @return array + */ public function getTopTagIds(): array; } diff --git a/src/Manager/DefaultManager.php b/src/Manager/DefaultManager.php index e382f60..10796c9 100644 --- a/src/Manager/DefaultManager.php +++ b/src/Manager/DefaultManager.php @@ -27,6 +27,9 @@ class DefaultManager implements ManagerInterface, DcaAwareInterface, InsertTagsA protected SourceFinder $sourceFinder; + /** + * @param array $sources + */ public function __construct( protected readonly string $name, protected readonly array $sources, @@ -56,6 +59,9 @@ public function getFilteredTags(array $values, string|null $source = null): arra return $this->tagFinder->findMultiple($criteria); } + /** + * @param array $config + */ public function updateDcaField(string $table, string $field, array &$config): void { $config['eval']['tagsCreate'] ??= true; @@ -94,7 +100,7 @@ public function saveDcaField(string $value, DataContainer $dc): string $source = $GLOBALS['TL_DCA'][$dc->table]['fields'][$dc->field]['eval']['tagsSource'] ?? null; $criteria = $this->createTagCriteria($source); - /** @var array $value */ + /** @var array $value */ foreach ($value as $k => $v) { // Do not create tags that already exist if (null !== $this->tagFinder->findSingle($criteria->setValue((string) $v))) { @@ -116,6 +122,9 @@ public function saveDcaField(string $value, DataContainer $dc): string return serialize($value); } + /** + * @return array + */ public function getFilterOptions(DataContainer $dc): array { $options = []; @@ -136,6 +145,9 @@ public function getFilterOptions(DataContainer $dc): array return $options; } + /** + * @param array $data + */ public function getSourceRecordsCount(array $data, DataContainer $dc): int { if (isset($GLOBALS['TL_DCA'][$dc->table]['fields'][$dc->field]['eval']['tagsSource'])) { @@ -157,6 +169,9 @@ public function getSourceRecordsCount(array $data, DataContainer $dc): int return $total; } + /** + * @return array + */ public function getTopTagIds(string|null $source = null): array { $ids = []; diff --git a/src/Manager/InsertTagsAwareInterface.php b/src/Manager/InsertTagsAwareInterface.php index cbaf193..209a4af 100644 --- a/src/Manager/InsertTagsAwareInterface.php +++ b/src/Manager/InsertTagsAwareInterface.php @@ -6,5 +6,8 @@ interface InsertTagsAwareInterface { + /** + * @param array $elements + */ public function getInsertTagValue(string $value, string $property, array $elements): string; } diff --git a/src/Manager/ManagerInterface.php b/src/Manager/ManagerInterface.php index bbfed96..a8dd04e 100644 --- a/src/Manager/ManagerInterface.php +++ b/src/Manager/ManagerInterface.php @@ -12,9 +12,19 @@ namespace Codefog\TagsBundle\Manager; +use Codefog\TagsBundle\Tag; + interface ManagerInterface { + /** + * @return array + */ public function getAllTags(string|null $source = null): array; + /** + * @param array $values + * + * @return array + */ public function getFilteredTags(array $values, string|null $source = null): array; } diff --git a/src/ManagerRegistry.php b/src/ManagerRegistry.php index beb3d6b..3bb6bbd 100644 --- a/src/ManagerRegistry.php +++ b/src/ManagerRegistry.php @@ -8,6 +8,9 @@ class ManagerRegistry { + /** + * @var array + */ private array $managers = []; public function add(ManagerInterface $manager, string $name): void @@ -24,6 +27,9 @@ public function get(string $name): ManagerInterface return $this->managers[$name]; } + /** + * @return array + */ public function all(): array { return $this->managers; diff --git a/src/Tag.php b/src/Tag.php index 48afeb7..5ccc2a5 100644 --- a/src/Tag.php +++ b/src/Tag.php @@ -6,6 +6,9 @@ class Tag { + /** + * @param array $data + */ public function __construct( private string $value, private string $name, @@ -33,11 +36,17 @@ public function setName(string $name): void $this->name = $name; } + /** + * @return array + */ public function getData(): array { return $this->data; } + /** + * @param array $data + */ public function setData(array $data): void { $this->data = $data; From db93eed0a4d95f6db78ebd5877b58fbf21d551d9 Mon Sep 17 00:00:00 2001 From: Kamil Kuzminski Date: Thu, 12 Mar 2026 11:52:28 +0100 Subject: [PATCH 06/28] Switch to Stimulus and TomSelect --- assets/tags-widget.js | 67 + public/backend.css => assets/tags-widget.scss | 18 +- composer.json | 1 + config/listener.yml | 2 - contao/templates/.twig-root | 0 .../templates/backend/widget/tags.html.twig | 21 + contao/templates/be_cfg_tags_widget.html5 | 19 - package.json | 11 +- public/.htaccess | 53 + public/backend.js | 1 - public/backend.min.css | 1 - public/backend.min.js | 1 - public/entrypoints.json | 12 + public/jquery-ui.css | 9 - public/jquery-ui.js | 2564 ----------- public/jquery-ui.min.css | 6 - public/jquery-ui.min.js | 6 - public/manifest.json | 6 + public/selectize.css | 333 -- public/selectize.js | 3891 ----------------- public/selectize.min.css | 1 - public/selectize.min.js | 4 - public/tags-widget.1b1a476c.js | 2 + public/tags-widget.1b1a476c.js.map | 1 + public/tags-widget.d74a7ab5.css | 2 + public/tags-widget.d74a7ab5.css.map | 1 + public/widget.js | 110 - public/widget.min.js | 1 - src/EventListener/AddAssetsListener.php | 33 + src/EventListener/TagManagerListener.php | 36 +- src/Widget/TagsWidget.php | 51 +- webpack.config.js | 3 +- yarn.lock | 20 + 33 files changed, 255 insertions(+), 7032 deletions(-) create mode 100644 assets/tags-widget.js rename public/backend.css => assets/tags-widget.scss (75%) create mode 100644 contao/templates/.twig-root create mode 100644 contao/templates/backend/widget/tags.html.twig delete mode 100644 contao/templates/be_cfg_tags_widget.html5 create mode 100644 public/.htaccess delete mode 100644 public/backend.js delete mode 100644 public/backend.min.css delete mode 100644 public/backend.min.js create mode 100644 public/entrypoints.json delete mode 100644 public/jquery-ui.css delete mode 100644 public/jquery-ui.js delete mode 100644 public/jquery-ui.min.css delete mode 100644 public/jquery-ui.min.js create mode 100644 public/manifest.json delete mode 100644 public/selectize.css delete mode 100644 public/selectize.js delete mode 100644 public/selectize.min.css delete mode 100644 public/selectize.min.js create mode 100644 public/tags-widget.1b1a476c.js create mode 100644 public/tags-widget.1b1a476c.js.map create mode 100644 public/tags-widget.d74a7ab5.css create mode 100644 public/tags-widget.d74a7ab5.css.map delete mode 100644 public/widget.js delete mode 100644 public/widget.min.js create mode 100644 src/EventListener/AddAssetsListener.php diff --git a/assets/tags-widget.js b/assets/tags-widget.js new file mode 100644 index 0000000..95ddaee --- /dev/null +++ b/assets/tags-widget.js @@ -0,0 +1,67 @@ +import './tags-widget.scss'; + +import {Application, Controller} from '@hotwired/stimulus'; +import TomSelect from 'tom-select'; + +const application = Application.start(); +application.debug = process.env.NODE_ENV === 'development'; +application.register('codefog--tags-widget', class extends Controller { + static targets = ['input'] + + static values = { + config: { + type: Object, + default: {}, + } + } + + connect() { + this.tomSelect = new TomSelect(this.inputTarget, this.#getOptions()) + + // TODO: remove items on click + } + + disconnect() { + this.tomSelect.destroy() + } + + select(event) { + this.tomSelect.addItem(event.target.value) + } + + #getOptions() { + let config = {}; + + try { + config = JSON.parse(this.configValue); + } catch { + console.error(`Could not parse JSON options for Tags widget: ${this.configValue}`); + + return {}; + } + + const options = { + delimiter: ',', + options: config.allTags, + items: config.valueTags, + persist: false, + render: { + option_create: (data, escape) => `
${config.addLabel} ${escape(data.input)}
`, + } + }; + + if (config.allowCreate) { + options.create = input => ({ value: input, text: input }); + } + + if (config.maxItems) { + options.maxItems = config.maxItems; + } + + if (config.sortable) { + options.plugins = ['drag_drop']; + } + + return options; + } +}); diff --git a/public/backend.css b/assets/tags-widget.scss similarity index 75% rename from public/backend.css rename to assets/tags-widget.scss index 568ba02..24aeb59 100644 --- a/public/backend.css +++ b/assets/tags-widget.scss @@ -1,18 +1,18 @@ -.cfg-tags { +.cfg-tags-widget { padding-top: 5px; position: relative; z-index: 1; } -.cfg-tags:has(.selectize-input.input-active.dropdown-active) { +.cfg-tags-widget:has(.selectize-input.input-active.dropdown-active) { z-index: 2; } -.cfg-tags-all { +.cfg-tags-widget-all { padding: 5px 0 5px 0; } -.cfg-tags-all span { +.cfg-tags-widget-all span { display: inline-block; margin: 0 4px 5px 0; padding: 5px 10px; @@ -22,12 +22,12 @@ white-space: nowrap; } -.cfg-tags-all span:hover { +.cfg-tags-widget-all span:hover { background: #589b0e !important; color: #fff; } -.cfg-tags .selectize-control.multi .selectize-input > div { +.cfg-tags-widget .selectize-control.multi .selectize-input > div { margin-right: 7px; padding: 5px 10px; background: #eaeaea; @@ -35,13 +35,13 @@ line-height: 1; } -.cfg-tags .selectize-control.multi .selectize-input > div:hover { +.cfg-tags-widget .selectize-control.multi .selectize-input > div:hover { background: #c33 !important; color: #fff; } /* Dark scheme */ -html[data-color-scheme="dark"] .cfg-tags-all span, +html[data-color-scheme="dark"] .cfg-tags-widget-all span, html[data-color-scheme="dark"] .selectize-dropdown-header, html[data-color-scheme="dark"] .selectize-control.single .selectize-input.input-active { background: #292c32; @@ -68,7 +68,7 @@ html[data-color-scheme="dark"] .selectize-dropdown .active { color: #fff; } -html[data-color-scheme="dark"] .cfg-tags .selectize-control.multi .selectize-input > div { +html[data-color-scheme="dark"] .cfg-tags-widget .selectize-control.multi .selectize-input > div { background: #292c32; color: var(--text); } diff --git a/composer.json b/composer.json index 6ab0fdd..f4e3295 100644 --- a/composer.json +++ b/composer.json @@ -15,6 +15,7 @@ "contao/core-bundle": "^5.7", "codefog/contao-haste": "^5.4", "doctrine/dbal": "^3.7 || ^4.3", + "symfony/asset": "^7.4 || ^8.0", "symfony/config": "^7.4 || ^8.0" }, "require-dev": { diff --git a/config/listener.yml b/config/listener.yml index 678bf24..491492d 100644 --- a/config/listener.yml +++ b/config/listener.yml @@ -10,8 +10,6 @@ services: public: true arguments: - "@codefog_tags.manager_registry" - - "@request_stack" - - "@contao.routing.scope_matcher" codefog_tags.listener.data_container.tag: class: Codefog\TagsBundle\EventListener\DataContainer\TagListener diff --git a/contao/templates/.twig-root b/contao/templates/.twig-root new file mode 100644 index 0000000..e69de29 diff --git a/contao/templates/backend/widget/tags.html.twig b/contao/templates/backend/widget/tags.html.twig new file mode 100644 index 0000000..2c658d2 --- /dev/null +++ b/contao/templates/backend/widget/tags.html.twig @@ -0,0 +1,21 @@ +{% set widget_attributes = attrs() + .addClass(['cfg-tags-widget', css_class]) + .set('data-controller', 'codefog--tags-widget') + .set('data-codefog--tags-widget-config-value', js_config|json_encode) +%} + +{% block widget %} + + {% block widget_inner %} + {% if all_tags and not hide_list %} +
+ {% for tag in all_tags %} + + {% endfor %} +
+ {% endif %} + + + {% endblock %} + +{% endblock %} diff --git a/contao/templates/be_cfg_tags_widget.html5 b/contao/templates/be_cfg_tags_widget.html5 deleted file mode 100644 index 03e4d35..0000000 --- a/contao/templates/be_cfg_tags_widget.html5 +++ /dev/null @@ -1,19 +0,0 @@ -
- allTags && !$this->hideList): ?> -
- allTags as $tag): ?> - - -
- - - - - -
diff --git a/package.json b/package.json index d9fca12..b972f61 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { - "name": "@terminal42/contao-dcawizard", - "description": "DCAWizard for Contao Open Source CMS", - "author": "terminal42 gmbh ", - "license": "LGPL-3.0-or-later", + "name": "@codefog/contao-tags-bundle", + "description": "Tags bundle for Contao Open Source CMS", + "author": "Codefog ", + "license": "MIT", "scripts": { "dev-server": "encore dev-server", "dev": "encore dev", @@ -17,6 +17,7 @@ ], "packageManager": "yarn@1.22.22+sha1.ac34549e6aa8e7ead463a7407e1c7390f61a6610", "dependencies": { - "@hotwired/stimulus": "^3.2.2" + "@hotwired/stimulus": "^3.2.2", + "tom-select": "^2.5.2" } } diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..1ff1ca5 --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,53 @@ +# Brotli compression + + + AddOutputFilterByType BROTLI_COMPRESS text/html text/plain text/css application/json + AddOutputFilterByType BROTLI_COMPRESS application/javascript + AddOutputFilterByType BROTLI_COMPRESS text/xml application/xml text/x-component + AddOutputFilterByType BROTLI_COMPRESS application/xhtml+xml application/rss+xml application/atom+xml + AddOutputFilterByType BROTLI_COMPRESS image/x-icon image/svg+xml + AddOutputFilterByType BROTLI_COMPRESS font/ttf font/opentype font/woff font/woff2 + + + +# Gzip compression + + + AddOutputFilterByType DEFLATE text/html text/plain text/css application/json + AddOutputFilterByType DEFLATE application/javascript + AddOutputFilterByType DEFLATE text/xml application/xml text/x-component + AddOutputFilterByType DEFLATE application/xhtml+xml application/rss+xml application/atom+xml + AddOutputFilterByType DEFLATE image/x-icon image/svg+xml + AddOutputFilterByType DEFLATE font/ttf font/opentype font/woff font/woff2 + + + +# Expires headers (for better cache control) + + ExpiresActive on + ExpiresByType image/gif "access plus 1 year" + ExpiresByType image/png "access plus 1 year" + ExpiresByType image/jpeg "access plus 1 year" + ExpiresByType image/webp "access plus 1 year" + ExpiresByType image/svg+xml "access plus 1 year" + ExpiresByType image/x-icon "access plus 1 year" + ExpiresByType video/ogg "access plus 1 year" + ExpiresByType audio/ogg "access plus 1 year" + ExpiresByType video/mp4 "access plus 1 year" + ExpiresByType video/webm "access plus 1 year" + ExpiresByType text/x-component "access plus 1 year" + ExpiresByType font/opentype "access plus 1 year" + ExpiresByType font/ttf "access plus 1 year" + ExpiresByType font/woff "access plus 1 year" + ExpiresByType font/woff2 "access plus 1 year" + ExpiresByType text/css "access plus 1 year" + ExpiresByType application/javascript "access plus 1 year" + + +# Do not cache source map files + + + Header set Expires "0" + Header set Cache-Control "no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, no-transform" + + diff --git a/public/backend.js b/public/backend.js deleted file mode 100644 index f4b1f44..0000000 --- a/public/backend.js +++ /dev/null @@ -1 +0,0 @@ -jQuery.noConflict(); diff --git a/public/backend.min.css b/public/backend.min.css deleted file mode 100644 index 7650fb7..0000000 --- a/public/backend.min.css +++ /dev/null @@ -1 +0,0 @@ -.cfg-tags{padding-top:5px;position:relative;z-index:1}.cfg-tags:has(.selectize-input.input-active.dropdown-active){z-index:2;}.cfg-tags-all{padding:5px 0 5px 0}.cfg-tags-all span{display:inline-block;margin:0 4px 5px 0;padding:5px 10px;background:#eaeaea;border-radius:3px;cursor:pointer;white-space:nowrap}.cfg-tags-all span:hover{background:#589b0e!important;color:#fff}.cfg-tags .selectize-control.multi .selectize-input>div{margin-right:7px;padding:5px 10px;background:#eaeaea;border-radius:3px;line-height:1}.cfg-tags .selectize-control.multi .selectize-input>div:hover{background:#c33!important;color:#fff}html[data-color-scheme=dark] .cfg-tags-all span,html[data-color-scheme=dark] .selectize-control.single .selectize-input.input-active,html[data-color-scheme=dark] .selectize-dropdown-header{background:#292c32}html[data-color-scheme=dark] .selectize-dropdown,html[data-color-scheme=dark] .selectize-input{background:#151619;border-color:#44464b}html[data-color-scheme=dark] .selectize-input.dropdown-active::before{background-color:#44464b}html[data-color-scheme=dark] .selectize-dropdown,html[data-color-scheme=dark] .selectize-input,html[data-color-scheme=dark] .selectize-input input{color:var(--text)}html[data-color-scheme=dark] .selectize-dropdown .active{background:#1b1d21;color:#fff}html[data-color-scheme=dark] .cfg-tags .selectize-control.multi .selectize-input>div{background:#292c32;color:var(--text)}html[data-color-scheme=dark] .selectize-control.plugin-drag_drop.multi>.selectize-input>div.ui-sortable-placeholder{background:#292c32!important} diff --git a/public/backend.min.js b/public/backend.min.js deleted file mode 100644 index aa32286..0000000 --- a/public/backend.min.js +++ /dev/null @@ -1 +0,0 @@ -jQuery.noConflict(); \ No newline at end of file diff --git a/public/entrypoints.json b/public/entrypoints.json new file mode 100644 index 0000000..3c5563a --- /dev/null +++ b/public/entrypoints.json @@ -0,0 +1,12 @@ +{ + "entrypoints": { + "tags-widget": { + "css": [ + "/bundles/codefogtags/tags-widget.d74a7ab5.css" + ], + "js": [ + "/bundles/codefogtags/tags-widget.1b1a476c.js" + ] + } + } +} \ No newline at end of file diff --git a/public/jquery-ui.css b/public/jquery-ui.css deleted file mode 100644 index e0319b7..0000000 --- a/public/jquery-ui.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! jQuery UI - v1.12.1 - 2021-05-31 -* http://jqueryui.com -* Includes: sortable.css -* Copyright jQuery Foundation and other contributors; Licensed MIT */ - -.ui-sortable-handle { - -ms-touch-action: none; - touch-action: none; -} diff --git a/public/jquery-ui.js b/public/jquery-ui.js deleted file mode 100644 index d222301..0000000 --- a/public/jquery-ui.js +++ /dev/null @@ -1,2564 +0,0 @@ -/*! jQuery UI - v1.12.1 - 2021-05-31 -* http://jqueryui.com -* Includes: widget.js, data.js, scroll-parent.js, widgets/sortable.js, widgets/mouse.js -* Copyright jQuery Foundation and other contributors; Licensed MIT */ - -(function( factory ) { - if ( typeof define === "function" && define.amd ) { - - // AMD. Register as an anonymous module. - define([ "jquery" ], factory ); - } else { - - // Browser globals - factory( jQuery ); - } -}(function( $ ) { - -$.ui = $.ui || {}; - -var version = $.ui.version = "1.12.1"; - - -/*! - * jQuery UI Widget 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Widget -//>>group: Core -//>>description: Provides a factory for creating stateful widgets with a common API. -//>>docs: http://api.jqueryui.com/jQuery.widget/ -//>>demos: http://jqueryui.com/widget/ - - - -var widgetUuid = 0; -var widgetSlice = Array.prototype.slice; - -$.cleanData = ( function( orig ) { - return function( elems ) { - var events, elem, i; - for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) { - try { - - // Only trigger remove when necessary to save time - events = $._data( elem, "events" ); - if ( events && events.remove ) { - $( elem ).triggerHandler( "remove" ); - } - - // Http://bugs.jquery.com/ticket/8235 - } catch ( e ) {} - } - orig( elems ); - }; -} )( $.cleanData ); - -$.widget = function( name, base, prototype ) { - var existingConstructor, constructor, basePrototype; - - // ProxiedPrototype allows the provided prototype to remain unmodified - // so that it can be used as a mixin for multiple widgets (#8876) - var proxiedPrototype = {}; - - var namespace = name.split( "." )[ 0 ]; - name = name.split( "." )[ 1 ]; - var fullName = namespace + "-" + name; - - if ( !prototype ) { - prototype = base; - base = $.Widget; - } - - if ( $.isArray( prototype ) ) { - prototype = $.extend.apply( null, [ {} ].concat( prototype ) ); - } - - // Create selector for plugin - $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) { - return !!$.data( elem, fullName ); - }; - - $[ namespace ] = $[ namespace ] || {}; - existingConstructor = $[ namespace ][ name ]; - constructor = $[ namespace ][ name ] = function( options, element ) { - - // Allow instantiation without "new" keyword - if ( !this._createWidget ) { - return new constructor( options, element ); - } - - // Allow instantiation without initializing for simple inheritance - // must use "new" keyword (the code above always passes args) - if ( arguments.length ) { - this._createWidget( options, element ); - } - }; - - // Extend with the existing constructor to carry over any static properties - $.extend( constructor, existingConstructor, { - version: prototype.version, - - // Copy the object used to create the prototype in case we need to - // redefine the widget later - _proto: $.extend( {}, prototype ), - - // Track widgets that inherit from this widget in case this widget is - // redefined after a widget inherits from it - _childConstructors: [] - } ); - - basePrototype = new base(); - - // We need to make the options hash a property directly on the new instance - // otherwise we'll modify the options hash on the prototype that we're - // inheriting from - basePrototype.options = $.widget.extend( {}, basePrototype.options ); - $.each( prototype, function( prop, value ) { - if ( !$.isFunction( value ) ) { - proxiedPrototype[ prop ] = value; - return; - } - proxiedPrototype[ prop ] = ( function() { - function _super() { - return base.prototype[ prop ].apply( this, arguments ); - } - - function _superApply( args ) { - return base.prototype[ prop ].apply( this, args ); - } - - return function() { - var __super = this._super; - var __superApply = this._superApply; - var returnValue; - - this._super = _super; - this._superApply = _superApply; - - returnValue = value.apply( this, arguments ); - - this._super = __super; - this._superApply = __superApply; - - return returnValue; - }; - } )(); - } ); - constructor.prototype = $.widget.extend( basePrototype, { - - // TODO: remove support for widgetEventPrefix - // always use the name + a colon as the prefix, e.g., draggable:start - // don't prefix for widgets that aren't DOM-based - widgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name - }, proxiedPrototype, { - constructor: constructor, - namespace: namespace, - widgetName: name, - widgetFullName: fullName - } ); - - // If this widget is being redefined then we need to find all widgets that - // are inheriting from it and redefine all of them so that they inherit from - // the new version of this widget. We're essentially trying to replace one - // level in the prototype chain. - if ( existingConstructor ) { - $.each( existingConstructor._childConstructors, function( i, child ) { - var childPrototype = child.prototype; - - // Redefine the child widget using the same prototype that was - // originally used, but inherit from the new version of the base - $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, - child._proto ); - } ); - - // Remove the list of existing child constructors from the old constructor - // so the old child constructors can be garbage collected - delete existingConstructor._childConstructors; - } else { - base._childConstructors.push( constructor ); - } - - $.widget.bridge( name, constructor ); - - return constructor; -}; - -$.widget.extend = function( target ) { - var input = widgetSlice.call( arguments, 1 ); - var inputIndex = 0; - var inputLength = input.length; - var key; - var value; - - for ( ; inputIndex < inputLength; inputIndex++ ) { - for ( key in input[ inputIndex ] ) { - value = input[ inputIndex ][ key ]; - if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) { - - // Clone objects - if ( $.isPlainObject( value ) ) { - target[ key ] = $.isPlainObject( target[ key ] ) ? - $.widget.extend( {}, target[ key ], value ) : - - // Don't extend strings, arrays, etc. with objects - $.widget.extend( {}, value ); - - // Copy everything else by reference - } else { - target[ key ] = value; - } - } - } - } - return target; -}; - -$.widget.bridge = function( name, object ) { - var fullName = object.prototype.widgetFullName || name; - $.fn[ name ] = function( options ) { - var isMethodCall = typeof options === "string"; - var args = widgetSlice.call( arguments, 1 ); - var returnValue = this; - - if ( isMethodCall ) { - - // If this is an empty collection, we need to have the instance method - // return undefined instead of the jQuery instance - if ( !this.length && options === "instance" ) { - returnValue = undefined; - } else { - this.each( function() { - var methodValue; - var instance = $.data( this, fullName ); - - if ( options === "instance" ) { - returnValue = instance; - return false; - } - - if ( !instance ) { - return $.error( "cannot call methods on " + name + - " prior to initialization; " + - "attempted to call method '" + options + "'" ); - } - - if ( !$.isFunction( instance[ options ] ) || options.charAt( 0 ) === "_" ) { - return $.error( "no such method '" + options + "' for " + name + - " widget instance" ); - } - - methodValue = instance[ options ].apply( instance, args ); - - if ( methodValue !== instance && methodValue !== undefined ) { - returnValue = methodValue && methodValue.jquery ? - returnValue.pushStack( methodValue.get() ) : - methodValue; - return false; - } - } ); - } - } else { - - // Allow multiple hashes to be passed on init - if ( args.length ) { - options = $.widget.extend.apply( null, [ options ].concat( args ) ); - } - - this.each( function() { - var instance = $.data( this, fullName ); - if ( instance ) { - instance.option( options || {} ); - if ( instance._init ) { - instance._init(); - } - } else { - $.data( this, fullName, new object( options, this ) ); - } - } ); - } - - return returnValue; - }; -}; - -$.Widget = function( /* options, element */ ) {}; -$.Widget._childConstructors = []; - -$.Widget.prototype = { - widgetName: "widget", - widgetEventPrefix: "", - defaultElement: "
", - - options: { - classes: {}, - disabled: false, - - // Callbacks - create: null - }, - - _createWidget: function( options, element ) { - element = $( element || this.defaultElement || this )[ 0 ]; - this.element = $( element ); - this.uuid = widgetUuid++; - this.eventNamespace = "." + this.widgetName + this.uuid; - - this.bindings = $(); - this.hoverable = $(); - this.focusable = $(); - this.classesElementLookup = {}; - - if ( element !== this ) { - $.data( element, this.widgetFullName, this ); - this._on( true, this.element, { - remove: function( event ) { - if ( event.target === element ) { - this.destroy(); - } - } - } ); - this.document = $( element.style ? - - // Element within the document - element.ownerDocument : - - // Element is window or document - element.document || element ); - this.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow ); - } - - this.options = $.widget.extend( {}, - this.options, - this._getCreateOptions(), - options ); - - this._create(); - - if ( this.options.disabled ) { - this._setOptionDisabled( this.options.disabled ); - } - - this._trigger( "create", null, this._getCreateEventData() ); - this._init(); - }, - - _getCreateOptions: function() { - return {}; - }, - - _getCreateEventData: $.noop, - - _create: $.noop, - - _init: $.noop, - - destroy: function() { - var that = this; - - this._destroy(); - $.each( this.classesElementLookup, function( key, value ) { - that._removeClass( value, key ); - } ); - - // We can probably remove the unbind calls in 2.0 - // all event bindings should go through this._on() - this.element - .off( this.eventNamespace ) - .removeData( this.widgetFullName ); - this.widget() - .off( this.eventNamespace ) - .removeAttr( "aria-disabled" ); - - // Clean up events and states - this.bindings.off( this.eventNamespace ); - }, - - _destroy: $.noop, - - widget: function() { - return this.element; - }, - - option: function( key, value ) { - var options = key; - var parts; - var curOption; - var i; - - if ( arguments.length === 0 ) { - - // Don't return a reference to the internal hash - return $.widget.extend( {}, this.options ); - } - - if ( typeof key === "string" ) { - - // Handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } - options = {}; - parts = key.split( "." ); - key = parts.shift(); - if ( parts.length ) { - curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] ); - for ( i = 0; i < parts.length - 1; i++ ) { - curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; - curOption = curOption[ parts[ i ] ]; - } - key = parts.pop(); - if ( arguments.length === 1 ) { - return curOption[ key ] === undefined ? null : curOption[ key ]; - } - curOption[ key ] = value; - } else { - if ( arguments.length === 1 ) { - return this.options[ key ] === undefined ? null : this.options[ key ]; - } - options[ key ] = value; - } - } - - this._setOptions( options ); - - return this; - }, - - _setOptions: function( options ) { - var key; - - for ( key in options ) { - this._setOption( key, options[ key ] ); - } - - return this; - }, - - _setOption: function( key, value ) { - if ( key === "classes" ) { - this._setOptionClasses( value ); - } - - this.options[ key ] = value; - - if ( key === "disabled" ) { - this._setOptionDisabled( value ); - } - - return this; - }, - - _setOptionClasses: function( value ) { - var classKey, elements, currentElements; - - for ( classKey in value ) { - currentElements = this.classesElementLookup[ classKey ]; - if ( value[ classKey ] === this.options.classes[ classKey ] || - !currentElements || - !currentElements.length ) { - continue; - } - - // We are doing this to create a new jQuery object because the _removeClass() call - // on the next line is going to destroy the reference to the current elements being - // tracked. We need to save a copy of this collection so that we can add the new classes - // below. - elements = $( currentElements.get() ); - this._removeClass( currentElements, classKey ); - - // We don't use _addClass() here, because that uses this.options.classes - // for generating the string of classes. We want to use the value passed in from - // _setOption(), this is the new value of the classes option which was passed to - // _setOption(). We pass this value directly to _classes(). - elements.addClass( this._classes( { - element: elements, - keys: classKey, - classes: value, - add: true - } ) ); - } - }, - - _setOptionDisabled: function( value ) { - this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null, !!value ); - - // If the widget is becoming disabled, then nothing is interactive - if ( value ) { - this._removeClass( this.hoverable, null, "ui-state-hover" ); - this._removeClass( this.focusable, null, "ui-state-focus" ); - } - }, - - enable: function() { - return this._setOptions( { disabled: false } ); - }, - - disable: function() { - return this._setOptions( { disabled: true } ); - }, - - _classes: function( options ) { - var full = []; - var that = this; - - options = $.extend( { - element: this.element, - classes: this.options.classes || {} - }, options ); - - function processClassString( classes, checkOption ) { - var current, i; - for ( i = 0; i < classes.length; i++ ) { - current = that.classesElementLookup[ classes[ i ] ] || $(); - if ( options.add ) { - current = $( $.unique( current.get().concat( options.element.get() ) ) ); - } else { - current = $( current.not( options.element ).get() ); - } - that.classesElementLookup[ classes[ i ] ] = current; - full.push( classes[ i ] ); - if ( checkOption && options.classes[ classes[ i ] ] ) { - full.push( options.classes[ classes[ i ] ] ); - } - } - } - - this._on( options.element, { - "remove": "_untrackClassesElement" - } ); - - if ( options.keys ) { - processClassString( options.keys.match( /\S+/g ) || [], true ); - } - if ( options.extra ) { - processClassString( options.extra.match( /\S+/g ) || [] ); - } - - return full.join( " " ); - }, - - _untrackClassesElement: function( event ) { - var that = this; - $.each( that.classesElementLookup, function( key, value ) { - if ( $.inArray( event.target, value ) !== -1 ) { - that.classesElementLookup[ key ] = $( value.not( event.target ).get() ); - } - } ); - }, - - _removeClass: function( element, keys, extra ) { - return this._toggleClass( element, keys, extra, false ); - }, - - _addClass: function( element, keys, extra ) { - return this._toggleClass( element, keys, extra, true ); - }, - - _toggleClass: function( element, keys, extra, add ) { - add = ( typeof add === "boolean" ) ? add : extra; - var shift = ( typeof element === "string" || element === null ), - options = { - extra: shift ? keys : extra, - keys: shift ? element : keys, - element: shift ? this.element : element, - add: add - }; - options.element.toggleClass( this._classes( options ), add ); - return this; - }, - - _on: function( suppressDisabledCheck, element, handlers ) { - var delegateElement; - var instance = this; - - // No suppressDisabledCheck flag, shuffle arguments - if ( typeof suppressDisabledCheck !== "boolean" ) { - handlers = element; - element = suppressDisabledCheck; - suppressDisabledCheck = false; - } - - // No element argument, shuffle and use this.element - if ( !handlers ) { - handlers = element; - element = this.element; - delegateElement = this.widget(); - } else { - element = delegateElement = $( element ); - this.bindings = this.bindings.add( element ); - } - - $.each( handlers, function( event, handler ) { - function handlerProxy() { - - // Allow widgets to customize the disabled handling - // - disabled as an array instead of boolean - // - disabled class as method for disabling individual parts - if ( !suppressDisabledCheck && - ( instance.options.disabled === true || - $( this ).hasClass( "ui-state-disabled" ) ) ) { - return; - } - return ( typeof handler === "string" ? instance[ handler ] : handler ) - .apply( instance, arguments ); - } - - // Copy the guid so direct unbinding works - if ( typeof handler !== "string" ) { - handlerProxy.guid = handler.guid = - handler.guid || handlerProxy.guid || $.guid++; - } - - var match = event.match( /^([\w:-]*)\s*(.*)$/ ); - var eventName = match[ 1 ] + instance.eventNamespace; - var selector = match[ 2 ]; - - if ( selector ) { - delegateElement.on( eventName, selector, handlerProxy ); - } else { - element.on( eventName, handlerProxy ); - } - } ); - }, - - _off: function( element, eventName ) { - eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) + - this.eventNamespace; - element.off( eventName ).off( eventName ); - - // Clear the stack to avoid memory leaks (#10056) - this.bindings = $( this.bindings.not( element ).get() ); - this.focusable = $( this.focusable.not( element ).get() ); - this.hoverable = $( this.hoverable.not( element ).get() ); - }, - - _delay: function( handler, delay ) { - function handlerProxy() { - return ( typeof handler === "string" ? instance[ handler ] : handler ) - .apply( instance, arguments ); - } - var instance = this; - return setTimeout( handlerProxy, delay || 0 ); - }, - - _hoverable: function( element ) { - this.hoverable = this.hoverable.add( element ); - this._on( element, { - mouseenter: function( event ) { - this._addClass( $( event.currentTarget ), null, "ui-state-hover" ); - }, - mouseleave: function( event ) { - this._removeClass( $( event.currentTarget ), null, "ui-state-hover" ); - } - } ); - }, - - _focusable: function( element ) { - this.focusable = this.focusable.add( element ); - this._on( element, { - focusin: function( event ) { - this._addClass( $( event.currentTarget ), null, "ui-state-focus" ); - }, - focusout: function( event ) { - this._removeClass( $( event.currentTarget ), null, "ui-state-focus" ); - } - } ); - }, - - _trigger: function( type, event, data ) { - var prop, orig; - var callback = this.options[ type ]; - - data = data || {}; - event = $.Event( event ); - event.type = ( type === this.widgetEventPrefix ? - type : - this.widgetEventPrefix + type ).toLowerCase(); - - // The original event may come from any element - // so we need to reset the target on the new event - event.target = this.element[ 0 ]; - - // Copy original event properties over to the new event - orig = event.originalEvent; - if ( orig ) { - for ( prop in orig ) { - if ( !( prop in event ) ) { - event[ prop ] = orig[ prop ]; - } - } - } - - this.element.trigger( event, data ); - return !( $.isFunction( callback ) && - callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false || - event.isDefaultPrevented() ); - } -}; - -$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { - $.Widget.prototype[ "_" + method ] = function( element, options, callback ) { - if ( typeof options === "string" ) { - options = { effect: options }; - } - - var hasOptions; - var effectName = !options ? - method : - options === true || typeof options === "number" ? - defaultEffect : - options.effect || defaultEffect; - - options = options || {}; - if ( typeof options === "number" ) { - options = { duration: options }; - } - - hasOptions = !$.isEmptyObject( options ); - options.complete = callback; - - if ( options.delay ) { - element.delay( options.delay ); - } - - if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) { - element[ method ]( options ); - } else if ( effectName !== method && element[ effectName ] ) { - element[ effectName ]( options.duration, options.easing, callback ); - } else { - element.queue( function( next ) { - $( this )[ method ](); - if ( callback ) { - callback.call( element[ 0 ] ); - } - next(); - } ); - } - }; -} ); - -var widget = $.widget; - - -/*! - * jQuery UI :data 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: :data Selector -//>>group: Core -//>>description: Selects elements which have data stored under the specified key. -//>>docs: http://api.jqueryui.com/data-selector/ - - -var data = $.extend( $.expr[ ":" ], { - data: $.expr.createPseudo ? - $.expr.createPseudo( function( dataName ) { - return function( elem ) { - return !!$.data( elem, dataName ); - }; - } ) : - - // Support: jQuery <1.8 - function( elem, i, match ) { - return !!$.data( elem, match[ 3 ] ); - } -} ); - -/*! - * jQuery UI Scroll Parent 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: scrollParent -//>>group: Core -//>>description: Get the closest ancestor element that is scrollable. -//>>docs: http://api.jqueryui.com/scrollParent/ - - - -var scrollParent = $.fn.scrollParent = function( includeHidden ) { - var position = this.css( "position" ), - excludeStaticParent = position === "absolute", - overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/, - scrollParent = this.parents().filter( function() { - var parent = $( this ); - if ( excludeStaticParent && parent.css( "position" ) === "static" ) { - return false; - } - return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) + - parent.css( "overflow-x" ) ); - } ).eq( 0 ); - - return position === "fixed" || !scrollParent.length ? - $( this[ 0 ].ownerDocument || document ) : - scrollParent; -}; - - - - -// This file is deprecated -var ie = $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() ); - -/*! - * jQuery UI Mouse 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Mouse -//>>group: Widgets -//>>description: Abstracts mouse-based interactions to assist in creating certain widgets. -//>>docs: http://api.jqueryui.com/mouse/ - - - -var mouseHandled = false; -$( document ).on( "mouseup", function() { - mouseHandled = false; -} ); - -var widgetsMouse = $.widget( "ui.mouse", { - version: "1.12.1", - options: { - cancel: "input, textarea, button, select, option", - distance: 1, - delay: 0 - }, - _mouseInit: function() { - var that = this; - - this.element - .on( "mousedown." + this.widgetName, function( event ) { - return that._mouseDown( event ); - } ) - .on( "click." + this.widgetName, function( event ) { - if ( true === $.data( event.target, that.widgetName + ".preventClickEvent" ) ) { - $.removeData( event.target, that.widgetName + ".preventClickEvent" ); - event.stopImmediatePropagation(); - return false; - } - } ); - - this.started = false; - }, - - // TODO: make sure destroying one instance of mouse doesn't mess with - // other instances of mouse - _mouseDestroy: function() { - this.element.off( "." + this.widgetName ); - if ( this._mouseMoveDelegate ) { - this.document - .off( "mousemove." + this.widgetName, this._mouseMoveDelegate ) - .off( "mouseup." + this.widgetName, this._mouseUpDelegate ); - } - }, - - _mouseDown: function( event ) { - - // don't let more than one widget handle mouseStart - if ( mouseHandled ) { - return; - } - - this._mouseMoved = false; - - // We may have missed mouseup (out of window) - ( this._mouseStarted && this._mouseUp( event ) ); - - this._mouseDownEvent = event; - - var that = this, - btnIsLeft = ( event.which === 1 ), - - // event.target.nodeName works around a bug in IE 8 with - // disabled inputs (#7620) - elIsCancel = ( typeof this.options.cancel === "string" && event.target.nodeName ? - $( event.target ).closest( this.options.cancel ).length : false ); - if ( !btnIsLeft || elIsCancel || !this._mouseCapture( event ) ) { - return true; - } - - this.mouseDelayMet = !this.options.delay; - if ( !this.mouseDelayMet ) { - this._mouseDelayTimer = setTimeout( function() { - that.mouseDelayMet = true; - }, this.options.delay ); - } - - if ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) { - this._mouseStarted = ( this._mouseStart( event ) !== false ); - if ( !this._mouseStarted ) { - event.preventDefault(); - return true; - } - } - - // Click event may never have fired (Gecko & Opera) - if ( true === $.data( event.target, this.widgetName + ".preventClickEvent" ) ) { - $.removeData( event.target, this.widgetName + ".preventClickEvent" ); - } - - // These delegates are required to keep context - this._mouseMoveDelegate = function( event ) { - return that._mouseMove( event ); - }; - this._mouseUpDelegate = function( event ) { - return that._mouseUp( event ); - }; - - this.document - .on( "mousemove." + this.widgetName, this._mouseMoveDelegate ) - .on( "mouseup." + this.widgetName, this._mouseUpDelegate ); - - event.preventDefault(); - - mouseHandled = true; - return true; - }, - - _mouseMove: function( event ) { - - // Only check for mouseups outside the document if you've moved inside the document - // at least once. This prevents the firing of mouseup in the case of IE<9, which will - // fire a mousemove event if content is placed under the cursor. See #7778 - // Support: IE <9 - if ( this._mouseMoved ) { - - // IE mouseup check - mouseup happened when mouse was out of window - if ( $.ui.ie && ( !document.documentMode || document.documentMode < 9 ) && - !event.button ) { - return this._mouseUp( event ); - - // Iframe mouseup check - mouseup occurred in another document - } else if ( !event.which ) { - - // Support: Safari <=8 - 9 - // Safari sets which to 0 if you press any of the following keys - // during a drag (#14461) - if ( event.originalEvent.altKey || event.originalEvent.ctrlKey || - event.originalEvent.metaKey || event.originalEvent.shiftKey ) { - this.ignoreMissingWhich = true; - } else if ( !this.ignoreMissingWhich ) { - return this._mouseUp( event ); - } - } - } - - if ( event.which || event.button ) { - this._mouseMoved = true; - } - - if ( this._mouseStarted ) { - this._mouseDrag( event ); - return event.preventDefault(); - } - - if ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) { - this._mouseStarted = - ( this._mouseStart( this._mouseDownEvent, event ) !== false ); - ( this._mouseStarted ? this._mouseDrag( event ) : this._mouseUp( event ) ); - } - - return !this._mouseStarted; - }, - - _mouseUp: function( event ) { - this.document - .off( "mousemove." + this.widgetName, this._mouseMoveDelegate ) - .off( "mouseup." + this.widgetName, this._mouseUpDelegate ); - - if ( this._mouseStarted ) { - this._mouseStarted = false; - - if ( event.target === this._mouseDownEvent.target ) { - $.data( event.target, this.widgetName + ".preventClickEvent", true ); - } - - this._mouseStop( event ); - } - - if ( this._mouseDelayTimer ) { - clearTimeout( this._mouseDelayTimer ); - delete this._mouseDelayTimer; - } - - this.ignoreMissingWhich = false; - mouseHandled = false; - event.preventDefault(); - }, - - _mouseDistanceMet: function( event ) { - return ( Math.max( - Math.abs( this._mouseDownEvent.pageX - event.pageX ), - Math.abs( this._mouseDownEvent.pageY - event.pageY ) - ) >= this.options.distance - ); - }, - - _mouseDelayMet: function( /* event */ ) { - return this.mouseDelayMet; - }, - - // These are placeholder methods, to be overriden by extending plugin - _mouseStart: function( /* event */ ) {}, - _mouseDrag: function( /* event */ ) {}, - _mouseStop: function( /* event */ ) {}, - _mouseCapture: function( /* event */ ) { return true; } -} ); - - -/*! - * jQuery UI Sortable 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Sortable -//>>group: Interactions -//>>description: Enables items in a list to be sorted using the mouse. -//>>docs: http://api.jqueryui.com/sortable/ -//>>demos: http://jqueryui.com/sortable/ -//>>css.structure: ../../themes/base/sortable.css - - - -var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, { - version: "1.12.1", - widgetEventPrefix: "sort", - ready: false, - options: { - appendTo: "parent", - axis: false, - connectWith: false, - containment: false, - cursor: "auto", - cursorAt: false, - dropOnEmpty: true, - forcePlaceholderSize: false, - forceHelperSize: false, - grid: false, - handle: false, - helper: "original", - items: "> *", - opacity: false, - placeholder: false, - revert: false, - scroll: true, - scrollSensitivity: 20, - scrollSpeed: 20, - scope: "default", - tolerance: "intersect", - zIndex: 1000, - - // Callbacks - activate: null, - beforeStop: null, - change: null, - deactivate: null, - out: null, - over: null, - receive: null, - remove: null, - sort: null, - start: null, - stop: null, - update: null - }, - - _isOverAxis: function( x, reference, size ) { - return ( x >= reference ) && ( x < ( reference + size ) ); - }, - - _isFloating: function( item ) { - return ( /left|right/ ).test( item.css( "float" ) ) || - ( /inline|table-cell/ ).test( item.css( "display" ) ); - }, - - _create: function() { - this.containerCache = {}; - this._addClass( "ui-sortable" ); - - //Get the items - this.refresh(); - - //Let's determine the parent's offset - this.offset = this.element.offset(); - - //Initialize mouse events for interaction - this._mouseInit(); - - this._setHandleClassName(); - - //We're ready to go - this.ready = true; - - }, - - _setOption: function( key, value ) { - this._super( key, value ); - - if ( key === "handle" ) { - this._setHandleClassName(); - } - }, - - _setHandleClassName: function() { - var that = this; - this._removeClass( this.element.find( ".ui-sortable-handle" ), "ui-sortable-handle" ); - $.each( this.items, function() { - that._addClass( - this.instance.options.handle ? - this.item.find( this.instance.options.handle ) : - this.item, - "ui-sortable-handle" - ); - } ); - }, - - _destroy: function() { - this._mouseDestroy(); - - for ( var i = this.items.length - 1; i >= 0; i-- ) { - this.items[ i ].item.removeData( this.widgetName + "-item" ); - } - - return this; - }, - - _mouseCapture: function( event, overrideHandle ) { - var currentItem = null, - validHandle = false, - that = this; - - if ( this.reverting ) { - return false; - } - - if ( this.options.disabled || this.options.type === "static" ) { - return false; - } - - //We have to refresh the items data once first - this._refreshItems( event ); - - //Find out if the clicked node (or one of its parents) is a actual item in this.items - $( event.target ).parents().each( function() { - if ( $.data( this, that.widgetName + "-item" ) === that ) { - currentItem = $( this ); - return false; - } - } ); - if ( $.data( event.target, that.widgetName + "-item" ) === that ) { - currentItem = $( event.target ); - } - - if ( !currentItem ) { - return false; - } - if ( this.options.handle && !overrideHandle ) { - $( this.options.handle, currentItem ).find( "*" ).addBack().each( function() { - if ( this === event.target ) { - validHandle = true; - } - } ); - if ( !validHandle ) { - return false; - } - } - - this.currentItem = currentItem; - this._removeCurrentsFromItems(); - return true; - - }, - - _mouseStart: function( event, overrideHandle, noActivation ) { - - var i, body, - o = this.options; - - this.currentContainer = this; - - //We only need to call refreshPositions, because the refreshItems call has been moved to - // mouseCapture - this.refreshPositions(); - - //Create and append the visible helper - this.helper = this._createHelper( event ); - - //Cache the helper size - this._cacheHelperProportions(); - - /* - * - Position generation - - * This block generates everything position related - it's the core of draggables. - */ - - //Cache the margins of the original element - this._cacheMargins(); - - //Get the next scrolling parent - this.scrollParent = this.helper.scrollParent(); - - //The element's absolute position on the page minus margins - this.offset = this.currentItem.offset(); - this.offset = { - top: this.offset.top - this.margins.top, - left: this.offset.left - this.margins.left - }; - - $.extend( this.offset, { - click: { //Where the click happened, relative to the element - left: event.pageX - this.offset.left, - top: event.pageY - this.offset.top - }, - parent: this._getParentOffset(), - - // This is a relative to absolute position minus the actual position calculation - - // only used for relative positioned helper - relative: this._getRelativeOffset() - } ); - - // Only after we got the offset, we can change the helper's position to absolute - // TODO: Still need to figure out a way to make relative sorting possible - this.helper.css( "position", "absolute" ); - this.cssPosition = this.helper.css( "position" ); - - //Generate the original position - this.originalPosition = this._generatePosition( event ); - this.originalPageX = event.pageX; - this.originalPageY = event.pageY; - - //Adjust the mouse offset relative to the helper if "cursorAt" is supplied - ( o.cursorAt && this._adjustOffsetFromHelper( o.cursorAt ) ); - - //Cache the former DOM position - this.domPosition = { - prev: this.currentItem.prev()[ 0 ], - parent: this.currentItem.parent()[ 0 ] - }; - - // If the helper is not the original, hide the original so it's not playing any role during - // the drag, won't cause anything bad this way - if ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) { - this.currentItem.hide(); - } - - //Create the placeholder - this._createPlaceholder(); - - //Set a containment if given in the options - if ( o.containment ) { - this._setContainment(); - } - - if ( o.cursor && o.cursor !== "auto" ) { // cursor option - body = this.document.find( "body" ); - - // Support: IE - this.storedCursor = body.css( "cursor" ); - body.css( "cursor", o.cursor ); - - this.storedStylesheet = - $( "" ).appendTo( body ); - } - - if ( o.opacity ) { // opacity option - if ( this.helper.css( "opacity" ) ) { - this._storedOpacity = this.helper.css( "opacity" ); - } - this.helper.css( "opacity", o.opacity ); - } - - if ( o.zIndex ) { // zIndex option - if ( this.helper.css( "zIndex" ) ) { - this._storedZIndex = this.helper.css( "zIndex" ); - } - this.helper.css( "zIndex", o.zIndex ); - } - - //Prepare scrolling - if ( this.scrollParent[ 0 ] !== this.document[ 0 ] && - this.scrollParent[ 0 ].tagName !== "HTML" ) { - this.overflowOffset = this.scrollParent.offset(); - } - - //Call callbacks - this._trigger( "start", event, this._uiHash() ); - - //Recache the helper size - if ( !this._preserveHelperProportions ) { - this._cacheHelperProportions(); - } - - //Post "activate" events to possible containers - if ( !noActivation ) { - for ( i = this.containers.length - 1; i >= 0; i-- ) { - this.containers[ i ]._trigger( "activate", event, this._uiHash( this ) ); - } - } - - //Prepare possible droppables - if ( $.ui.ddmanager ) { - $.ui.ddmanager.current = this; - } - - if ( $.ui.ddmanager && !o.dropBehaviour ) { - $.ui.ddmanager.prepareOffsets( this, event ); - } - - this.dragging = true; - - this._addClass( this.helper, "ui-sortable-helper" ); - - // Execute the drag once - this causes the helper not to be visiblebefore getting its - // correct position - this._mouseDrag( event ); - return true; - - }, - - _mouseDrag: function( event ) { - var i, item, itemElement, intersection, - o = this.options, - scrolled = false; - - //Compute the helpers position - this.position = this._generatePosition( event ); - this.positionAbs = this._convertPositionTo( "absolute" ); - - if ( !this.lastPositionAbs ) { - this.lastPositionAbs = this.positionAbs; - } - - //Do scrolling - if ( this.options.scroll ) { - if ( this.scrollParent[ 0 ] !== this.document[ 0 ] && - this.scrollParent[ 0 ].tagName !== "HTML" ) { - - if ( ( this.overflowOffset.top + this.scrollParent[ 0 ].offsetHeight ) - - event.pageY < o.scrollSensitivity ) { - this.scrollParent[ 0 ].scrollTop = - scrolled = this.scrollParent[ 0 ].scrollTop + o.scrollSpeed; - } else if ( event.pageY - this.overflowOffset.top < o.scrollSensitivity ) { - this.scrollParent[ 0 ].scrollTop = - scrolled = this.scrollParent[ 0 ].scrollTop - o.scrollSpeed; - } - - if ( ( this.overflowOffset.left + this.scrollParent[ 0 ].offsetWidth ) - - event.pageX < o.scrollSensitivity ) { - this.scrollParent[ 0 ].scrollLeft = scrolled = - this.scrollParent[ 0 ].scrollLeft + o.scrollSpeed; - } else if ( event.pageX - this.overflowOffset.left < o.scrollSensitivity ) { - this.scrollParent[ 0 ].scrollLeft = scrolled = - this.scrollParent[ 0 ].scrollLeft - o.scrollSpeed; - } - - } else { - - if ( event.pageY - this.document.scrollTop() < o.scrollSensitivity ) { - scrolled = this.document.scrollTop( this.document.scrollTop() - o.scrollSpeed ); - } else if ( this.window.height() - ( event.pageY - this.document.scrollTop() ) < - o.scrollSensitivity ) { - scrolled = this.document.scrollTop( this.document.scrollTop() + o.scrollSpeed ); - } - - if ( event.pageX - this.document.scrollLeft() < o.scrollSensitivity ) { - scrolled = this.document.scrollLeft( - this.document.scrollLeft() - o.scrollSpeed - ); - } else if ( this.window.width() - ( event.pageX - this.document.scrollLeft() ) < - o.scrollSensitivity ) { - scrolled = this.document.scrollLeft( - this.document.scrollLeft() + o.scrollSpeed - ); - } - - } - - if ( scrolled !== false && $.ui.ddmanager && !o.dropBehaviour ) { - $.ui.ddmanager.prepareOffsets( this, event ); - } - } - - //Regenerate the absolute position used for position checks - this.positionAbs = this._convertPositionTo( "absolute" ); - - //Set the helper position - if ( !this.options.axis || this.options.axis !== "y" ) { - this.helper[ 0 ].style.left = this.position.left + "px"; - } - if ( !this.options.axis || this.options.axis !== "x" ) { - this.helper[ 0 ].style.top = this.position.top + "px"; - } - - //Rearrange - for ( i = this.items.length - 1; i >= 0; i-- ) { - - //Cache variables and intersection, continue if no intersection - item = this.items[ i ]; - itemElement = item.item[ 0 ]; - intersection = this._intersectsWithPointer( item ); - if ( !intersection ) { - continue; - } - - // Only put the placeholder inside the current Container, skip all - // items from other containers. This works because when moving - // an item from one container to another the - // currentContainer is switched before the placeholder is moved. - // - // Without this, moving items in "sub-sortables" can cause - // the placeholder to jitter between the outer and inner container. - if ( item.instance !== this.currentContainer ) { - continue; - } - - // Cannot intersect with itself - // no useless actions that have been done before - // no action if the item moved is the parent of the item checked - if ( itemElement !== this.currentItem[ 0 ] && - this.placeholder[ intersection === 1 ? "next" : "prev" ]()[ 0 ] !== itemElement && - !$.contains( this.placeholder[ 0 ], itemElement ) && - ( this.options.type === "semi-dynamic" ? - !$.contains( this.element[ 0 ], itemElement ) : - true - ) - ) { - - this.direction = intersection === 1 ? "down" : "up"; - - if ( this.options.tolerance === "pointer" || this._intersectsWithSides( item ) ) { - this._rearrange( event, item ); - } else { - break; - } - - this._trigger( "change", event, this._uiHash() ); - break; - } - } - - //Post events to containers - this._contactContainers( event ); - - //Interconnect with droppables - if ( $.ui.ddmanager ) { - $.ui.ddmanager.drag( this, event ); - } - - //Call callbacks - this._trigger( "sort", event, this._uiHash() ); - - this.lastPositionAbs = this.positionAbs; - return false; - - }, - - _mouseStop: function( event, noPropagation ) { - - if ( !event ) { - return; - } - - //If we are using droppables, inform the manager about the drop - if ( $.ui.ddmanager && !this.options.dropBehaviour ) { - $.ui.ddmanager.drop( this, event ); - } - - if ( this.options.revert ) { - var that = this, - cur = this.placeholder.offset(), - axis = this.options.axis, - animation = {}; - - if ( !axis || axis === "x" ) { - animation.left = cur.left - this.offset.parent.left - this.margins.left + - ( this.offsetParent[ 0 ] === this.document[ 0 ].body ? - 0 : - this.offsetParent[ 0 ].scrollLeft - ); - } - if ( !axis || axis === "y" ) { - animation.top = cur.top - this.offset.parent.top - this.margins.top + - ( this.offsetParent[ 0 ] === this.document[ 0 ].body ? - 0 : - this.offsetParent[ 0 ].scrollTop - ); - } - this.reverting = true; - $( this.helper ).animate( - animation, - parseInt( this.options.revert, 10 ) || 500, - function() { - that._clear( event ); - } - ); - } else { - this._clear( event, noPropagation ); - } - - return false; - - }, - - cancel: function() { - - if ( this.dragging ) { - - this._mouseUp( new $.Event( "mouseup", { target: null } ) ); - - if ( this.options.helper === "original" ) { - this.currentItem.css( this._storedCSS ); - this._removeClass( this.currentItem, "ui-sortable-helper" ); - } else { - this.currentItem.show(); - } - - //Post deactivating events to containers - for ( var i = this.containers.length - 1; i >= 0; i-- ) { - this.containers[ i ]._trigger( "deactivate", null, this._uiHash( this ) ); - if ( this.containers[ i ].containerCache.over ) { - this.containers[ i ]._trigger( "out", null, this._uiHash( this ) ); - this.containers[ i ].containerCache.over = 0; - } - } - - } - - if ( this.placeholder ) { - - //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, - // it unbinds ALL events from the original node! - if ( this.placeholder[ 0 ].parentNode ) { - this.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] ); - } - if ( this.options.helper !== "original" && this.helper && - this.helper[ 0 ].parentNode ) { - this.helper.remove(); - } - - $.extend( this, { - helper: null, - dragging: false, - reverting: false, - _noFinalSort: null - } ); - - if ( this.domPosition.prev ) { - $( this.domPosition.prev ).after( this.currentItem ); - } else { - $( this.domPosition.parent ).prepend( this.currentItem ); - } - } - - return this; - - }, - - serialize: function( o ) { - - var items = this._getItemsAsjQuery( o && o.connected ), - str = []; - o = o || {}; - - $( items ).each( function() { - var res = ( $( o.item || this ).attr( o.attribute || "id" ) || "" ) - .match( o.expression || ( /(.+)[\-=_](.+)/ ) ); - if ( res ) { - str.push( - ( o.key || res[ 1 ] + "[]" ) + - "=" + ( o.key && o.expression ? res[ 1 ] : res[ 2 ] ) ); - } - } ); - - if ( !str.length && o.key ) { - str.push( o.key + "=" ); - } - - return str.join( "&" ); - - }, - - toArray: function( o ) { - - var items = this._getItemsAsjQuery( o && o.connected ), - ret = []; - - o = o || {}; - - items.each( function() { - ret.push( $( o.item || this ).attr( o.attribute || "id" ) || "" ); - } ); - return ret; - - }, - - /* Be careful with the following core functions */ - _intersectsWith: function( item ) { - - var x1 = this.positionAbs.left, - x2 = x1 + this.helperProportions.width, - y1 = this.positionAbs.top, - y2 = y1 + this.helperProportions.height, - l = item.left, - r = l + item.width, - t = item.top, - b = t + item.height, - dyClick = this.offset.click.top, - dxClick = this.offset.click.left, - isOverElementHeight = ( this.options.axis === "x" ) || ( ( y1 + dyClick ) > t && - ( y1 + dyClick ) < b ), - isOverElementWidth = ( this.options.axis === "y" ) || ( ( x1 + dxClick ) > l && - ( x1 + dxClick ) < r ), - isOverElement = isOverElementHeight && isOverElementWidth; - - if ( this.options.tolerance === "pointer" || - this.options.forcePointerForContainers || - ( this.options.tolerance !== "pointer" && - this.helperProportions[ this.floating ? "width" : "height" ] > - item[ this.floating ? "width" : "height" ] ) - ) { - return isOverElement; - } else { - - return ( l < x1 + ( this.helperProportions.width / 2 ) && // Right Half - x2 - ( this.helperProportions.width / 2 ) < r && // Left Half - t < y1 + ( this.helperProportions.height / 2 ) && // Bottom Half - y2 - ( this.helperProportions.height / 2 ) < b ); // Top Half - - } - }, - - _intersectsWithPointer: function( item ) { - var verticalDirection, horizontalDirection, - isOverElementHeight = ( this.options.axis === "x" ) || - this._isOverAxis( - this.positionAbs.top + this.offset.click.top, item.top, item.height ), - isOverElementWidth = ( this.options.axis === "y" ) || - this._isOverAxis( - this.positionAbs.left + this.offset.click.left, item.left, item.width ), - isOverElement = isOverElementHeight && isOverElementWidth; - - if ( !isOverElement ) { - return false; - } - - verticalDirection = this._getDragVerticalDirection(); - horizontalDirection = this._getDragHorizontalDirection(); - - return this.floating ? - ( ( horizontalDirection === "right" || verticalDirection === "down" ) ? 2 : 1 ) - : ( verticalDirection && ( verticalDirection === "down" ? 2 : 1 ) ); - - }, - - _intersectsWithSides: function( item ) { - - var isOverBottomHalf = this._isOverAxis( this.positionAbs.top + - this.offset.click.top, item.top + ( item.height / 2 ), item.height ), - isOverRightHalf = this._isOverAxis( this.positionAbs.left + - this.offset.click.left, item.left + ( item.width / 2 ), item.width ), - verticalDirection = this._getDragVerticalDirection(), - horizontalDirection = this._getDragHorizontalDirection(); - - if ( this.floating && horizontalDirection ) { - return ( ( horizontalDirection === "right" && isOverRightHalf ) || - ( horizontalDirection === "left" && !isOverRightHalf ) ); - } else { - return verticalDirection && ( ( verticalDirection === "down" && isOverBottomHalf ) || - ( verticalDirection === "up" && !isOverBottomHalf ) ); - } - - }, - - _getDragVerticalDirection: function() { - var delta = this.positionAbs.top - this.lastPositionAbs.top; - return delta !== 0 && ( delta > 0 ? "down" : "up" ); - }, - - _getDragHorizontalDirection: function() { - var delta = this.positionAbs.left - this.lastPositionAbs.left; - return delta !== 0 && ( delta > 0 ? "right" : "left" ); - }, - - refresh: function( event ) { - this._refreshItems( event ); - this._setHandleClassName(); - this.refreshPositions(); - return this; - }, - - _connectWith: function() { - var options = this.options; - return options.connectWith.constructor === String ? - [ options.connectWith ] : - options.connectWith; - }, - - _getItemsAsjQuery: function( connected ) { - - var i, j, cur, inst, - items = [], - queries = [], - connectWith = this._connectWith(); - - if ( connectWith && connected ) { - for ( i = connectWith.length - 1; i >= 0; i-- ) { - cur = $( connectWith[ i ], this.document[ 0 ] ); - for ( j = cur.length - 1; j >= 0; j-- ) { - inst = $.data( cur[ j ], this.widgetFullName ); - if ( inst && inst !== this && !inst.options.disabled ) { - queries.push( [ $.isFunction( inst.options.items ) ? - inst.options.items.call( inst.element ) : - $( inst.options.items, inst.element ) - .not( ".ui-sortable-helper" ) - .not( ".ui-sortable-placeholder" ), inst ] ); - } - } - } - } - - queries.push( [ $.isFunction( this.options.items ) ? - this.options.items - .call( this.element, null, { options: this.options, item: this.currentItem } ) : - $( this.options.items, this.element ) - .not( ".ui-sortable-helper" ) - .not( ".ui-sortable-placeholder" ), this ] ); - - function addItems() { - items.push( this ); - } - for ( i = queries.length - 1; i >= 0; i-- ) { - queries[ i ][ 0 ].each( addItems ); - } - - return $( items ); - - }, - - _removeCurrentsFromItems: function() { - - var list = this.currentItem.find( ":data(" + this.widgetName + "-item)" ); - - this.items = $.grep( this.items, function( item ) { - for ( var j = 0; j < list.length; j++ ) { - if ( list[ j ] === item.item[ 0 ] ) { - return false; - } - } - return true; - } ); - - }, - - _refreshItems: function( event ) { - - this.items = []; - this.containers = [ this ]; - - var i, j, cur, inst, targetData, _queries, item, queriesLength, - items = this.items, - queries = [ [ $.isFunction( this.options.items ) ? - this.options.items.call( this.element[ 0 ], event, { item: this.currentItem } ) : - $( this.options.items, this.element ), this ] ], - connectWith = this._connectWith(); - - //Shouldn't be run the first time through due to massive slow-down - if ( connectWith && this.ready ) { - for ( i = connectWith.length - 1; i >= 0; i-- ) { - cur = $( connectWith[ i ], this.document[ 0 ] ); - for ( j = cur.length - 1; j >= 0; j-- ) { - inst = $.data( cur[ j ], this.widgetFullName ); - if ( inst && inst !== this && !inst.options.disabled ) { - queries.push( [ $.isFunction( inst.options.items ) ? - inst.options.items - .call( inst.element[ 0 ], event, { item: this.currentItem } ) : - $( inst.options.items, inst.element ), inst ] ); - this.containers.push( inst ); - } - } - } - } - - for ( i = queries.length - 1; i >= 0; i-- ) { - targetData = queries[ i ][ 1 ]; - _queries = queries[ i ][ 0 ]; - - for ( j = 0, queriesLength = _queries.length; j < queriesLength; j++ ) { - item = $( _queries[ j ] ); - - // Data for target checking (mouse manager) - item.data( this.widgetName + "-item", targetData ); - - items.push( { - item: item, - instance: targetData, - width: 0, height: 0, - left: 0, top: 0 - } ); - } - } - - }, - - refreshPositions: function( fast ) { - - // Determine whether items are being displayed horizontally - this.floating = this.items.length ? - this.options.axis === "x" || this._isFloating( this.items[ 0 ].item ) : - false; - - //This has to be redone because due to the item being moved out/into the offsetParent, - // the offsetParent's position will change - if ( this.offsetParent && this.helper ) { - this.offset.parent = this._getParentOffset(); - } - - var i, item, t, p; - - for ( i = this.items.length - 1; i >= 0; i-- ) { - item = this.items[ i ]; - - //We ignore calculating positions of all connected containers when we're not over them - if ( item.instance !== this.currentContainer && this.currentContainer && - item.item[ 0 ] !== this.currentItem[ 0 ] ) { - continue; - } - - t = this.options.toleranceElement ? - $( this.options.toleranceElement, item.item ) : - item.item; - - if ( !fast ) { - item.width = t.outerWidth(); - item.height = t.outerHeight(); - } - - p = t.offset(); - item.left = p.left; - item.top = p.top; - } - - if ( this.options.custom && this.options.custom.refreshContainers ) { - this.options.custom.refreshContainers.call( this ); - } else { - for ( i = this.containers.length - 1; i >= 0; i-- ) { - p = this.containers[ i ].element.offset(); - this.containers[ i ].containerCache.left = p.left; - this.containers[ i ].containerCache.top = p.top; - this.containers[ i ].containerCache.width = - this.containers[ i ].element.outerWidth(); - this.containers[ i ].containerCache.height = - this.containers[ i ].element.outerHeight(); - } - } - - return this; - }, - - _createPlaceholder: function( that ) { - that = that || this; - var className, - o = that.options; - - if ( !o.placeholder || o.placeholder.constructor === String ) { - className = o.placeholder; - o.placeholder = { - element: function() { - - var nodeName = that.currentItem[ 0 ].nodeName.toLowerCase(), - element = $( "<" + nodeName + ">", that.document[ 0 ] ); - - that._addClass( element, "ui-sortable-placeholder", - className || that.currentItem[ 0 ].className ) - ._removeClass( element, "ui-sortable-helper" ); - - if ( nodeName === "tbody" ) { - that._createTrPlaceholder( - that.currentItem.find( "tr" ).eq( 0 ), - $( "", that.document[ 0 ] ).appendTo( element ) - ); - } else if ( nodeName === "tr" ) { - that._createTrPlaceholder( that.currentItem, element ); - } else if ( nodeName === "img" ) { - element.attr( "src", that.currentItem.attr( "src" ) ); - } - - if ( !className ) { - element.css( "visibility", "hidden" ); - } - - return element; - }, - update: function( container, p ) { - - // 1. If a className is set as 'placeholder option, we don't force sizes - - // the class is responsible for that - // 2. The option 'forcePlaceholderSize can be enabled to force it even if a - // class name is specified - if ( className && !o.forcePlaceholderSize ) { - return; - } - - //If the element doesn't have a actual height by itself (without styles coming - // from a stylesheet), it receives the inline height from the dragged item - if ( !p.height() ) { - p.height( - that.currentItem.innerHeight() - - parseInt( that.currentItem.css( "paddingTop" ) || 0, 10 ) - - parseInt( that.currentItem.css( "paddingBottom" ) || 0, 10 ) ); - } - if ( !p.width() ) { - p.width( - that.currentItem.innerWidth() - - parseInt( that.currentItem.css( "paddingLeft" ) || 0, 10 ) - - parseInt( that.currentItem.css( "paddingRight" ) || 0, 10 ) ); - } - } - }; - } - - //Create the placeholder - that.placeholder = $( o.placeholder.element.call( that.element, that.currentItem ) ); - - //Append it after the actual current item - that.currentItem.after( that.placeholder ); - - //Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317) - o.placeholder.update( that, that.placeholder ); - - }, - - _createTrPlaceholder: function( sourceTr, targetTr ) { - var that = this; - - sourceTr.children().each( function() { - $( " ", that.document[ 0 ] ) - .attr( "colspan", $( this ).attr( "colspan" ) || 1 ) - .appendTo( targetTr ); - } ); - }, - - _contactContainers: function( event ) { - var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, cur, nearBottom, - floating, axis, - innermostContainer = null, - innermostIndex = null; - - // Get innermost container that intersects with item - for ( i = this.containers.length - 1; i >= 0; i-- ) { - - // Never consider a container that's located within the item itself - if ( $.contains( this.currentItem[ 0 ], this.containers[ i ].element[ 0 ] ) ) { - continue; - } - - if ( this._intersectsWith( this.containers[ i ].containerCache ) ) { - - // If we've already found a container and it's more "inner" than this, then continue - if ( innermostContainer && - $.contains( - this.containers[ i ].element[ 0 ], - innermostContainer.element[ 0 ] ) ) { - continue; - } - - innermostContainer = this.containers[ i ]; - innermostIndex = i; - - } else { - - // container doesn't intersect. trigger "out" event if necessary - if ( this.containers[ i ].containerCache.over ) { - this.containers[ i ]._trigger( "out", event, this._uiHash( this ) ); - this.containers[ i ].containerCache.over = 0; - } - } - - } - - // If no intersecting containers found, return - if ( !innermostContainer ) { - return; - } - - // Move the item into the container if it's not there already - if ( this.containers.length === 1 ) { - if ( !this.containers[ innermostIndex ].containerCache.over ) { - this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash( this ) ); - this.containers[ innermostIndex ].containerCache.over = 1; - } - } else { - - // When entering a new container, we will find the item with the least distance and - // append our item near it - dist = 10000; - itemWithLeastDistance = null; - floating = innermostContainer.floating || this._isFloating( this.currentItem ); - posProperty = floating ? "left" : "top"; - sizeProperty = floating ? "width" : "height"; - axis = floating ? "pageX" : "pageY"; - - for ( j = this.items.length - 1; j >= 0; j-- ) { - if ( !$.contains( - this.containers[ innermostIndex ].element[ 0 ], this.items[ j ].item[ 0 ] ) - ) { - continue; - } - if ( this.items[ j ].item[ 0 ] === this.currentItem[ 0 ] ) { - continue; - } - - cur = this.items[ j ].item.offset()[ posProperty ]; - nearBottom = false; - if ( event[ axis ] - cur > this.items[ j ][ sizeProperty ] / 2 ) { - nearBottom = true; - } - - if ( Math.abs( event[ axis ] - cur ) < dist ) { - dist = Math.abs( event[ axis ] - cur ); - itemWithLeastDistance = this.items[ j ]; - this.direction = nearBottom ? "up" : "down"; - } - } - - //Check if dropOnEmpty is enabled - if ( !itemWithLeastDistance && !this.options.dropOnEmpty ) { - return; - } - - if ( this.currentContainer === this.containers[ innermostIndex ] ) { - if ( !this.currentContainer.containerCache.over ) { - this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash() ); - this.currentContainer.containerCache.over = 1; - } - return; - } - - itemWithLeastDistance ? - this._rearrange( event, itemWithLeastDistance, null, true ) : - this._rearrange( event, null, this.containers[ innermostIndex ].element, true ); - this._trigger( "change", event, this._uiHash() ); - this.containers[ innermostIndex ]._trigger( "change", event, this._uiHash( this ) ); - this.currentContainer = this.containers[ innermostIndex ]; - - //Update the placeholder - this.options.placeholder.update( this.currentContainer, this.placeholder ); - - this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash( this ) ); - this.containers[ innermostIndex ].containerCache.over = 1; - } - - }, - - _createHelper: function( event ) { - - var o = this.options, - helper = $.isFunction( o.helper ) ? - $( o.helper.apply( this.element[ 0 ], [ event, this.currentItem ] ) ) : - ( o.helper === "clone" ? this.currentItem.clone() : this.currentItem ); - - //Add the helper to the DOM if that didn't happen already - if ( !helper.parents( "body" ).length ) { - $( o.appendTo !== "parent" ? - o.appendTo : - this.currentItem[ 0 ].parentNode )[ 0 ].appendChild( helper[ 0 ] ); - } - - if ( helper[ 0 ] === this.currentItem[ 0 ] ) { - this._storedCSS = { - width: this.currentItem[ 0 ].style.width, - height: this.currentItem[ 0 ].style.height, - position: this.currentItem.css( "position" ), - top: this.currentItem.css( "top" ), - left: this.currentItem.css( "left" ) - }; - } - - if ( !helper[ 0 ].style.width || o.forceHelperSize ) { - helper.width( this.currentItem.width() ); - } - if ( !helper[ 0 ].style.height || o.forceHelperSize ) { - helper.height( this.currentItem.height() ); - } - - return helper; - - }, - - _adjustOffsetFromHelper: function( obj ) { - if ( typeof obj === "string" ) { - obj = obj.split( " " ); - } - if ( $.isArray( obj ) ) { - obj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 }; - } - if ( "left" in obj ) { - this.offset.click.left = obj.left + this.margins.left; - } - if ( "right" in obj ) { - this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left; - } - if ( "top" in obj ) { - this.offset.click.top = obj.top + this.margins.top; - } - if ( "bottom" in obj ) { - this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top; - } - }, - - _getParentOffset: function() { - - //Get the offsetParent and cache its position - this.offsetParent = this.helper.offsetParent(); - var po = this.offsetParent.offset(); - - // This is a special case where we need to modify a offset calculated on start, since the - // following happened: - // 1. The position of the helper is absolute, so it's position is calculated based on the - // next positioned parent - // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't - // the document, which means that the scroll is included in the initial calculation of the - // offset of the parent, and never recalculated upon drag - if ( this.cssPosition === "absolute" && this.scrollParent[ 0 ] !== this.document[ 0 ] && - $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) { - po.left += this.scrollParent.scrollLeft(); - po.top += this.scrollParent.scrollTop(); - } - - // This needs to be actually done for all browsers, since pageX/pageY includes this - // information with an ugly IE fix - if ( this.offsetParent[ 0 ] === this.document[ 0 ].body || - ( this.offsetParent[ 0 ].tagName && - this.offsetParent[ 0 ].tagName.toLowerCase() === "html" && $.ui.ie ) ) { - po = { top: 0, left: 0 }; - } - - return { - top: po.top + ( parseInt( this.offsetParent.css( "borderTopWidth" ), 10 ) || 0 ), - left: po.left + ( parseInt( this.offsetParent.css( "borderLeftWidth" ), 10 ) || 0 ) - }; - - }, - - _getRelativeOffset: function() { - - if ( this.cssPosition === "relative" ) { - var p = this.currentItem.position(); - return { - top: p.top - ( parseInt( this.helper.css( "top" ), 10 ) || 0 ) + - this.scrollParent.scrollTop(), - left: p.left - ( parseInt( this.helper.css( "left" ), 10 ) || 0 ) + - this.scrollParent.scrollLeft() - }; - } else { - return { top: 0, left: 0 }; - } - - }, - - _cacheMargins: function() { - this.margins = { - left: ( parseInt( this.currentItem.css( "marginLeft" ), 10 ) || 0 ), - top: ( parseInt( this.currentItem.css( "marginTop" ), 10 ) || 0 ) - }; - }, - - _cacheHelperProportions: function() { - this.helperProportions = { - width: this.helper.outerWidth(), - height: this.helper.outerHeight() - }; - }, - - _setContainment: function() { - - var ce, co, over, - o = this.options; - if ( o.containment === "parent" ) { - o.containment = this.helper[ 0 ].parentNode; - } - if ( o.containment === "document" || o.containment === "window" ) { - this.containment = [ - 0 - this.offset.relative.left - this.offset.parent.left, - 0 - this.offset.relative.top - this.offset.parent.top, - o.containment === "document" ? - this.document.width() : - this.window.width() - this.helperProportions.width - this.margins.left, - ( o.containment === "document" ? - ( this.document.height() || document.body.parentNode.scrollHeight ) : - this.window.height() || this.document[ 0 ].body.parentNode.scrollHeight - ) - this.helperProportions.height - this.margins.top - ]; - } - - if ( !( /^(document|window|parent)$/ ).test( o.containment ) ) { - ce = $( o.containment )[ 0 ]; - co = $( o.containment ).offset(); - over = ( $( ce ).css( "overflow" ) !== "hidden" ); - - this.containment = [ - co.left + ( parseInt( $( ce ).css( "borderLeftWidth" ), 10 ) || 0 ) + - ( parseInt( $( ce ).css( "paddingLeft" ), 10 ) || 0 ) - this.margins.left, - co.top + ( parseInt( $( ce ).css( "borderTopWidth" ), 10 ) || 0 ) + - ( parseInt( $( ce ).css( "paddingTop" ), 10 ) || 0 ) - this.margins.top, - co.left + ( over ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) - - ( parseInt( $( ce ).css( "borderLeftWidth" ), 10 ) || 0 ) - - ( parseInt( $( ce ).css( "paddingRight" ), 10 ) || 0 ) - - this.helperProportions.width - this.margins.left, - co.top + ( over ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) - - ( parseInt( $( ce ).css( "borderTopWidth" ), 10 ) || 0 ) - - ( parseInt( $( ce ).css( "paddingBottom" ), 10 ) || 0 ) - - this.helperProportions.height - this.margins.top - ]; - } - - }, - - _convertPositionTo: function( d, pos ) { - - if ( !pos ) { - pos = this.position; - } - var mod = d === "absolute" ? 1 : -1, - scroll = this.cssPosition === "absolute" && - !( this.scrollParent[ 0 ] !== this.document[ 0 ] && - $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ? - this.offsetParent : - this.scrollParent, - scrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName ); - - return { - top: ( - - // The absolute mouse position - pos.top + - - // Only for relative positioned nodes: Relative offset from element to offset parent - this.offset.relative.top * mod + - - // The offsetParent's offset without borders (offset + border) - this.offset.parent.top * mod - - ( ( this.cssPosition === "fixed" ? - -this.scrollParent.scrollTop() : - ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod ) - ), - left: ( - - // The absolute mouse position - pos.left + - - // Only for relative positioned nodes: Relative offset from element to offset parent - this.offset.relative.left * mod + - - // The offsetParent's offset without borders (offset + border) - this.offset.parent.left * mod - - ( ( this.cssPosition === "fixed" ? - -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : - scroll.scrollLeft() ) * mod ) - ) - }; - - }, - - _generatePosition: function( event ) { - - var top, left, - o = this.options, - pageX = event.pageX, - pageY = event.pageY, - scroll = this.cssPosition === "absolute" && - !( this.scrollParent[ 0 ] !== this.document[ 0 ] && - $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ? - this.offsetParent : - this.scrollParent, - scrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName ); - - // This is another very weird special case that only happens for relative elements: - // 1. If the css position is relative - // 2. and the scroll parent is the document or similar to the offset parent - // we have to refresh the relative offset during the scroll so there are no jumps - if ( this.cssPosition === "relative" && !( this.scrollParent[ 0 ] !== this.document[ 0 ] && - this.scrollParent[ 0 ] !== this.offsetParent[ 0 ] ) ) { - this.offset.relative = this._getRelativeOffset(); - } - - /* - * - Position constraining - - * Constrain the position to a mix of grid, containment. - */ - - if ( this.originalPosition ) { //If we are not dragging yet, we won't check for options - - if ( this.containment ) { - if ( event.pageX - this.offset.click.left < this.containment[ 0 ] ) { - pageX = this.containment[ 0 ] + this.offset.click.left; - } - if ( event.pageY - this.offset.click.top < this.containment[ 1 ] ) { - pageY = this.containment[ 1 ] + this.offset.click.top; - } - if ( event.pageX - this.offset.click.left > this.containment[ 2 ] ) { - pageX = this.containment[ 2 ] + this.offset.click.left; - } - if ( event.pageY - this.offset.click.top > this.containment[ 3 ] ) { - pageY = this.containment[ 3 ] + this.offset.click.top; - } - } - - if ( o.grid ) { - top = this.originalPageY + Math.round( ( pageY - this.originalPageY ) / - o.grid[ 1 ] ) * o.grid[ 1 ]; - pageY = this.containment ? - ( ( top - this.offset.click.top >= this.containment[ 1 ] && - top - this.offset.click.top <= this.containment[ 3 ] ) ? - top : - ( ( top - this.offset.click.top >= this.containment[ 1 ] ) ? - top - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) : - top; - - left = this.originalPageX + Math.round( ( pageX - this.originalPageX ) / - o.grid[ 0 ] ) * o.grid[ 0 ]; - pageX = this.containment ? - ( ( left - this.offset.click.left >= this.containment[ 0 ] && - left - this.offset.click.left <= this.containment[ 2 ] ) ? - left : - ( ( left - this.offset.click.left >= this.containment[ 0 ] ) ? - left - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) : - left; - } - - } - - return { - top: ( - - // The absolute mouse position - pageY - - - // Click offset (relative to the element) - this.offset.click.top - - - // Only for relative positioned nodes: Relative offset from element to offset parent - this.offset.relative.top - - - // The offsetParent's offset without borders (offset + border) - this.offset.parent.top + - ( ( this.cssPosition === "fixed" ? - -this.scrollParent.scrollTop() : - ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) ) - ), - left: ( - - // The absolute mouse position - pageX - - - // Click offset (relative to the element) - this.offset.click.left - - - // Only for relative positioned nodes: Relative offset from element to offset parent - this.offset.relative.left - - - // The offsetParent's offset without borders (offset + border) - this.offset.parent.left + - ( ( this.cssPosition === "fixed" ? - -this.scrollParent.scrollLeft() : - scrollIsRootNode ? 0 : scroll.scrollLeft() ) ) - ) - }; - - }, - - _rearrange: function( event, i, a, hardRefresh ) { - - a ? a[ 0 ].appendChild( this.placeholder[ 0 ] ) : - i.item[ 0 ].parentNode.insertBefore( this.placeholder[ 0 ], - ( this.direction === "down" ? i.item[ 0 ] : i.item[ 0 ].nextSibling ) ); - - //Various things done here to improve the performance: - // 1. we create a setTimeout, that calls refreshPositions - // 2. on the instance, we have a counter variable, that get's higher after every append - // 3. on the local scope, we copy the counter variable, and check in the timeout, - // if it's still the same - // 4. this lets only the last addition to the timeout stack through - this.counter = this.counter ? ++this.counter : 1; - var counter = this.counter; - - this._delay( function() { - if ( counter === this.counter ) { - - //Precompute after each DOM insertion, NOT on mousemove - this.refreshPositions( !hardRefresh ); - } - } ); - - }, - - _clear: function( event, noPropagation ) { - - this.reverting = false; - - // We delay all events that have to be triggered to after the point where the placeholder - // has been removed and everything else normalized again - var i, - delayedTriggers = []; - - // We first have to update the dom position of the actual currentItem - // Note: don't do it if the current item is already removed (by a user), or it gets - // reappended (see #4088) - if ( !this._noFinalSort && this.currentItem.parent().length ) { - this.placeholder.before( this.currentItem ); - } - this._noFinalSort = null; - - if ( this.helper[ 0 ] === this.currentItem[ 0 ] ) { - for ( i in this._storedCSS ) { - if ( this._storedCSS[ i ] === "auto" || this._storedCSS[ i ] === "static" ) { - this._storedCSS[ i ] = ""; - } - } - this.currentItem.css( this._storedCSS ); - this._removeClass( this.currentItem, "ui-sortable-helper" ); - } else { - this.currentItem.show(); - } - - if ( this.fromOutside && !noPropagation ) { - delayedTriggers.push( function( event ) { - this._trigger( "receive", event, this._uiHash( this.fromOutside ) ); - } ); - } - if ( ( this.fromOutside || - this.domPosition.prev !== - this.currentItem.prev().not( ".ui-sortable-helper" )[ 0 ] || - this.domPosition.parent !== this.currentItem.parent()[ 0 ] ) && !noPropagation ) { - - // Trigger update callback if the DOM position has changed - delayedTriggers.push( function( event ) { - this._trigger( "update", event, this._uiHash() ); - } ); - } - - // Check if the items Container has Changed and trigger appropriate - // events. - if ( this !== this.currentContainer ) { - if ( !noPropagation ) { - delayedTriggers.push( function( event ) { - this._trigger( "remove", event, this._uiHash() ); - } ); - delayedTriggers.push( ( function( c ) { - return function( event ) { - c._trigger( "receive", event, this._uiHash( this ) ); - }; - } ).call( this, this.currentContainer ) ); - delayedTriggers.push( ( function( c ) { - return function( event ) { - c._trigger( "update", event, this._uiHash( this ) ); - }; - } ).call( this, this.currentContainer ) ); - } - } - - //Post events to containers - function delayEvent( type, instance, container ) { - return function( event ) { - container._trigger( type, event, instance._uiHash( instance ) ); - }; - } - for ( i = this.containers.length - 1; i >= 0; i-- ) { - if ( !noPropagation ) { - delayedTriggers.push( delayEvent( "deactivate", this, this.containers[ i ] ) ); - } - if ( this.containers[ i ].containerCache.over ) { - delayedTriggers.push( delayEvent( "out", this, this.containers[ i ] ) ); - this.containers[ i ].containerCache.over = 0; - } - } - - //Do what was originally in plugins - if ( this.storedCursor ) { - this.document.find( "body" ).css( "cursor", this.storedCursor ); - this.storedStylesheet.remove(); - } - if ( this._storedOpacity ) { - this.helper.css( "opacity", this._storedOpacity ); - } - if ( this._storedZIndex ) { - this.helper.css( "zIndex", this._storedZIndex === "auto" ? "" : this._storedZIndex ); - } - - this.dragging = false; - - if ( !noPropagation ) { - this._trigger( "beforeStop", event, this._uiHash() ); - } - - //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, - // it unbinds ALL events from the original node! - this.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] ); - - if ( !this.cancelHelperRemoval ) { - if ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) { - this.helper.remove(); - } - this.helper = null; - } - - if ( !noPropagation ) { - for ( i = 0; i < delayedTriggers.length; i++ ) { - - // Trigger all delayed events - delayedTriggers[ i ].call( this, event ); - } - this._trigger( "stop", event, this._uiHash() ); - } - - this.fromOutside = false; - return !this.cancelHelperRemoval; - - }, - - _trigger: function() { - if ( $.Widget.prototype._trigger.apply( this, arguments ) === false ) { - this.cancel(); - } - }, - - _uiHash: function( _inst ) { - var inst = _inst || this; - return { - helper: inst.helper, - placeholder: inst.placeholder || $( [] ), - position: inst.position, - originalPosition: inst.originalPosition, - offset: inst.positionAbs, - item: inst.currentItem, - sender: _inst ? _inst.element : null - }; - } - -} ); - - - - -})); \ No newline at end of file diff --git a/public/jquery-ui.min.css b/public/jquery-ui.min.css deleted file mode 100644 index 78955f7..0000000 --- a/public/jquery-ui.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! jQuery UI - v1.12.1 - 2021-05-31 -* http://jqueryui.com -* Includes: sortable.css -* Copyright jQuery Foundation and other contributors; Licensed MIT */ - -.ui-sortable-handle{-ms-touch-action:none;touch-action:none} \ No newline at end of file diff --git a/public/jquery-ui.min.js b/public/jquery-ui.min.js deleted file mode 100644 index 8027085..0000000 --- a/public/jquery-ui.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! jQuery UI - v1.12.1 - 2021-05-31 -* http://jqueryui.com -* Includes: widget.js, data.js, scroll-parent.js, widgets/sortable.js, widgets/mouse.js -* Copyright jQuery Foundation and other contributors; Licensed MIT */ - -!function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(f){f.ui=f.ui||{};f.ui.version="1.12.1";var o,i=0,h=Array.prototype.slice;f.cleanData=(o=f.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)try{(e=f._data(i,"events"))&&e.remove&&f(i).triggerHandler("remove")}catch(t){}o(t)}),f.widget=function(t,i,e){var s,o,n,r={},h=t.split(".")[0],a=h+"-"+(t=t.split(".")[1]);return e||(e=i,i=f.Widget),f.isArray(e)&&(e=f.extend.apply(null,[{}].concat(e))),f.expr[":"][a.toLowerCase()]=function(t){return!!f.data(t,a)},f[h]=f[h]||{},s=f[h][t],o=f[h][t]=function(t,e){if(!this._createWidget)return new o(t,e);arguments.length&&this._createWidget(t,e)},f.extend(o,s,{version:e.version,_proto:f.extend({},e),_childConstructors:[]}),(n=new i).options=f.widget.extend({},n.options),f.each(e,function(e,s){function o(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}f.isFunction(s)?r[e]=function(){var t,e=this._super,i=this._superApply;return this._super=o,this._superApply=n,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}:r[e]=s}),o.prototype=f.widget.extend(n,{widgetEventPrefix:s&&n.widgetEventPrefix||t},r,{constructor:o,namespace:h,widgetName:t,widgetFullName:a}),s?(f.each(s._childConstructors,function(t,e){var i=e.prototype;f.widget(i.namespace+"."+i.widgetName,o,e._proto)}),delete s._childConstructors):i._childConstructors.push(o),f.widget.bridge(t,o),o},f.widget.extend=function(t){for(var e,i,s=h.call(arguments,1),o=0,n=s.length;o",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=f(e||this.defaultElement||this)[0],this.element=f(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=f(),this.hoverable=f(),this.focusable=f(),this.classesElementLookup={},e!==this&&(f.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=f(e.style?e.ownerDocument:e.document||e),this.window=f(this.document[0].defaultView||this.document[0].parentWindow)),this.options=f.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:f.noop,_create:f.noop,_init:f.noop,destroy:function(){var i=this;this._destroy(),f.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:f.noop,widget:function(){return this.element},option:function(t,e){var i,s,o,n=t;if(0===arguments.length)return f.widget.extend({},this.options);if("string"==typeof t)if(n={},t=(i=t.split(".")).shift(),i.length){for(s=n[t]=f.widget.extend({},this.options[t]),o=0;o=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),f.widget("ui.sortable",f.ui.mouse,{version:"1.12.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return e<=t&&t*{ cursor: "+n.cursor+" !important; }").appendTo(o)),n.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",n.opacity)),n.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",n.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!i)for(s=this.containers.length-1;0<=s;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return f.ui.ddmanager&&(f.ui.ddmanager.current=this),f.ui.ddmanager&&!n.dropBehaviour&&f.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var e,i,s,o,n=this.options,r=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageYt[this.floating?"width":"height"]?c:n",i.document[0]);return i._addClass(e,"ui-sortable-placeholder",s||i.currentItem[0].className)._removeClass(e,"ui-sortable-helper"),"tbody"===t?i._createTrPlaceholder(i.currentItem.find("tr").eq(0),f("",i.document[0]).appendTo(e)):"tr"===t?i._createTrPlaceholder(i.currentItem,e):"img"===t&&e.attr("src",i.currentItem.attr("src")),s||e.css("visibility","hidden"),e},update:function(t,e){s&&!o.forcePlaceholderSize||(e.height()||e.height(i.currentItem.innerHeight()-parseInt(i.currentItem.css("paddingTop")||0,10)-parseInt(i.currentItem.css("paddingBottom")||0,10)),e.width()||e.width(i.currentItem.innerWidth()-parseInt(i.currentItem.css("paddingLeft")||0,10)-parseInt(i.currentItem.css("paddingRight")||0,10)))}}),i.placeholder=f(o.placeholder.element.call(i.element,i.currentItem)),i.currentItem.after(i.placeholder),o.placeholder.update(i,i.placeholder)},_createTrPlaceholder:function(t,e){var i=this;t.children().each(function(){f(" ",i.document[0]).attr("colspan",f(this).attr("colspan")||1).appendTo(e)})},_contactContainers:function(t){for(var e,i,s,o,n,r,h,a,l,c=null,u=null,p=this.containers.length-1;0<=p;p--)f.contains(this.currentItem[0],this.containers[p].element[0])||(this._intersectsWith(this.containers[p].containerCache)?c&&f.contains(this.containers[p].element[0],c.element[0])||(c=this.containers[p],u=p):this.containers[p].containerCache.over&&(this.containers[p]._trigger("out",t,this._uiHash(this)),this.containers[p].containerCache.over=0));if(c)if(1===this.containers.length)this.containers[u].containerCache.over||(this.containers[u]._trigger("over",t,this._uiHash(this)),this.containers[u].containerCache.over=1);else{for(i=1e4,s=null,o=(a=c.floating||this._isFloating(this.currentItem))?"left":"top",n=a?"width":"height",l=a?"pageX":"pageY",e=this.items.length-1;0<=e;e--)f.contains(this.containers[u].element[0],this.items[e].item[0])&&this.items[e].item[0]!==this.currentItem[0]&&(r=this.items[e].item.offset()[o],h=!1,t[l]-r>this.items[e][n]/2&&(h=!0),Math.abs(t[l]-r)this.containment[2]&&(i=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(s=this.containment[3]+this.offset.click.top)),e.grid&&(t=this.originalPageY+Math.round((s-this.originalPageY)/e.grid[1])*e.grid[1],s=!this.containment||t-this.offset.click.top>=this.containment[1]&&t-this.offset.click.top<=this.containment[3]?t:t-this.offset.click.top>=this.containment[1]?t-e.grid[1]:t+e.grid[1],t=this.originalPageX+Math.round((i-this.originalPageX)/e.grid[0])*e.grid[0],i=!this.containment||t-this.offset.click.left>=this.containment[0]&&t-this.offset.click.left<=this.containment[2]?t:t-this.offset.click.left>=this.containment[0]?t-e.grid[0]:t+e.grid[0])),{top:s-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():n?0:o.scrollTop()),left:i-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():n?0:o.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var o=this.counter;this._delay(function(){o===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)"auto"!==this._storedCSS[i]&&"static"!==this._storedCSS[i]||(this._storedCSS[i]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function o(e,i,s){return function(t){s._trigger(e,t,i._uiHash(i))}}for(this.fromOutside&&!e&&s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(s.push(function(t){this._trigger("remove",t,this._uiHash())}),s.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;0<=i;i--)e||s.push(o("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(o("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(i=0;i - */ - -.selectize-control.plugin-drag_drop.multi > .selectize-input > div.ui-sortable-placeholder { - visibility: visible !important; - background: #f2f2f2 !important; - background: rgba(0, 0, 0, 0.06) !important; - border: 0 none !important; - -webkit-box-shadow: inset 0 0 12px 4px #fff; - box-shadow: inset 0 0 12px 4px #fff; -} -.selectize-control.plugin-drag_drop .ui-sortable-placeholder::after { - content: '!'; - visibility: hidden; -} -.selectize-control.plugin-drag_drop .ui-sortable-helper { - -webkit-box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); -} -.selectize-dropdown-header { - position: relative; - padding: 5px 8px; - border-bottom: 1px solid #d0d0d0; - background: #f8f8f8; - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; -} -.selectize-dropdown-header-close { - position: absolute; - right: 8px; - top: 50%; - color: #303030; - opacity: 0.4; - margin-top: -12px; - line-height: 20px; - font-size: 20px !important; -} -.selectize-dropdown-header-close:hover { - color: #000000; -} -.selectize-dropdown.plugin-optgroup_columns .optgroup { - border-right: 1px solid #f2f2f2; - border-top: 0 none; - float: left; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.selectize-dropdown.plugin-optgroup_columns .optgroup:last-child { - border-right: 0 none; -} -.selectize-dropdown.plugin-optgroup_columns .optgroup:before { - display: none; -} -.selectize-dropdown.plugin-optgroup_columns .optgroup-header { - border-top: 0 none; -} -.selectize-control.plugin-remove_button [data-value] { - position: relative; - padding-right: 24px !important; -} -.selectize-control.plugin-remove_button [data-value] .remove { - z-index: 1; - /* fixes ie bug (see #392) */ - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 17px; - text-align: center; - font-weight: bold; - font-size: 12px; - color: inherit; - text-decoration: none; - vertical-align: middle; - display: inline-block; - padding: 2px 0 0 0; - border-left: 1px solid #d0d0d0; - -webkit-border-radius: 0 2px 2px 0; - -moz-border-radius: 0 2px 2px 0; - border-radius: 0 2px 2px 0; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.selectize-control.plugin-remove_button [data-value] .remove:hover { - background: rgba(0, 0, 0, 0.05); -} -.selectize-control.plugin-remove_button [data-value].active .remove { - border-left-color: #cacaca; -} -.selectize-control.plugin-remove_button .disabled [data-value] .remove:hover { - background: none; -} -.selectize-control.plugin-remove_button .disabled [data-value] .remove { - border-left-color: #ffffff; -} -.selectize-control.plugin-remove_button .remove-single { - position: absolute; - right: 0; - top: 0; - font-size: 23px; -} -.selectize-control { - position: relative; -} -.selectize-dropdown, -.selectize-input, -.selectize-input input { - color: #303030; - font-family: inherit; - font-size: 13px; - line-height: 18px; - -webkit-font-smoothing: inherit; -} -.selectize-input, -.selectize-control.single .selectize-input.input-active { - background: #fff; - cursor: text; - display: inline-block; -} -.selectize-input { - border: 1px solid #d0d0d0; - padding: 8px 8px; - display: inline-block; - width: 100%; - overflow: hidden; - position: relative; - z-index: 1; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1); - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} -.selectize-control.multi .selectize-input.has-items { - padding: 6px 8px 3px; -} -.selectize-input.full { - background-color: #fff; -} -.selectize-input.disabled, -.selectize-input.disabled * { - cursor: default !important; -} -.selectize-input.focus { - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.15); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.15); -} -.selectize-input.dropdown-active { - -webkit-border-radius: 3px 3px 0 0; - -moz-border-radius: 3px 3px 0 0; - border-radius: 3px 3px 0 0; -} -.selectize-input > * { - vertical-align: baseline; - display: -moz-inline-stack; - display: inline-block; - zoom: 1; - *display: inline; -} -.selectize-control.multi .selectize-input > div { - cursor: pointer; - margin: 0 3px 3px 0; - padding: 2px 6px; - background: #f2f2f2; - color: #303030; - border: 0 solid #d0d0d0; -} -.selectize-control.multi .selectize-input > div.active { - background: #e8e8e8; - color: #303030; - border: 0 solid #cacaca; -} -.selectize-control.multi .selectize-input.disabled > div, -.selectize-control.multi .selectize-input.disabled > div.active { - color: #7d7d7d; - background: #ffffff; - border: 0 solid #ffffff; -} -.selectize-input > input { - display: inline-block !important; - padding: 0 !important; - min-height: 0 !important; - max-height: none !important; - max-width: 100% !important; - margin: 0 2px 0 0 !important; - text-indent: 0 !important; - border: 0 none !important; - background: none !important; - line-height: inherit !important; - -webkit-user-select: auto !important; - -webkit-box-shadow: none !important; - box-shadow: none !important; -} -.selectize-input > input::-ms-clear { - display: none; -} -.selectize-input > input:focus { - outline: none !important; -} -.selectize-input::after { - content: ' '; - display: block; - clear: left; -} -.selectize-input.dropdown-active::before { - content: ' '; - display: block; - position: absolute; - background: #f0f0f0; - height: 1px; - bottom: 0; - left: 0; - right: 0; -} -.selectize-dropdown { - position: absolute; - z-index: 10; - border: 1px solid #d0d0d0; - background: #fff; - margin: -1px 0 0 0; - border-top: 0 none; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; -} -.selectize-dropdown [data-selectable] { - cursor: pointer; - overflow: hidden; -} -.selectize-dropdown [data-selectable] .highlight { - background: rgba(125, 168, 208, 0.2); - -webkit-border-radius: 1px; - -moz-border-radius: 1px; - border-radius: 1px; -} -.selectize-dropdown .option, -.selectize-dropdown .optgroup-header { - padding: 5px 8px; -} -.selectize-dropdown .option, -.selectize-dropdown [data-disabled], -.selectize-dropdown [data-disabled] [data-selectable].option { - cursor: inherit; - opacity: 0.5; -} -.selectize-dropdown [data-selectable].option { - opacity: 1; -} -.selectize-dropdown .optgroup:first-child .optgroup-header { - border-top: 0 none; -} -.selectize-dropdown .optgroup-header { - color: #303030; - background: #fff; - cursor: default; -} -.selectize-dropdown .active { - background-color: #f5fafd; - color: #495c68; -} -.selectize-dropdown .active.create { - color: #495c68; -} -.selectize-dropdown .create { - color: rgba(48, 48, 48, 0.5); -} -.selectize-dropdown-content { - overflow-y: auto; - overflow-x: hidden; - max-height: 200px; - -webkit-overflow-scrolling: touch; -} -.selectize-control.single .selectize-input, -.selectize-control.single .selectize-input input { - cursor: pointer; -} -.selectize-control.single .selectize-input.input-active, -.selectize-control.single .selectize-input.input-active input { - cursor: text; -} -.selectize-control.single .selectize-input:after { - content: ' '; - display: block; - position: absolute; - top: 50%; - right: 15px; - margin-top: -3px; - width: 0; - height: 0; - border-style: solid; - border-width: 5px 5px 0 5px; - border-color: #808080 transparent transparent transparent; -} -.selectize-control.single .selectize-input.dropdown-active:after { - margin-top: -4px; - border-width: 0 5px 5px 5px; - border-color: transparent transparent #808080 transparent; -} -.selectize-control.rtl.single .selectize-input:after { - left: 15px; - right: auto; -} -.selectize-control.rtl .selectize-input > input { - margin: 0 4px 0 -2px !important; -} -.selectize-control .selectize-input.disabled { - opacity: 0.5; - background-color: #fafafa; -} diff --git a/public/selectize.js b/public/selectize.js deleted file mode 100644 index e064981..0000000 --- a/public/selectize.js +++ /dev/null @@ -1,3891 +0,0 @@ -/** - * sifter.js - * Copyright (c) 2013 Brian Reavis & contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this - * file except in compliance with the License. You may obtain a copy of the License at: - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under - * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. See the License for the specific language - * governing permissions and limitations under the License. - * - * @author Brian Reavis - */ - -(function(root, factory) { - if (typeof define === 'function' && define.amd) { - define('sifter', factory); - } else if (typeof exports === 'object') { - module.exports = factory(); - } else { - root.Sifter = factory(); - } -}(this, function() { - - /** - * Textually searches arrays and hashes of objects - * by property (or multiple properties). Designed - * specifically for autocomplete. - * - * @constructor - * @param {array|object} items - * @param {object} items - */ - var Sifter = function(items, settings) { - this.items = items; - this.settings = settings || {diacritics: true}; - }; - - /** - * Splits a search string into an array of individual - * regexps to be used to match results. - * - * @param {string} query - * @returns {array} - */ - Sifter.prototype.tokenize = function(query) { - query = trim(String(query || '').toLowerCase()); - if (!query || !query.length) return []; - - var i, n, regex, letter; - var tokens = []; - var words = query.split(/ +/); - - for (i = 0, n = words.length; i < n; i++) { - regex = escape_regex(words[i]); - if (this.settings.diacritics) { - for (letter in DIACRITICS) { - if (DIACRITICS.hasOwnProperty(letter)) { - regex = regex.replace(new RegExp(letter, 'g'), DIACRITICS[letter]); - } - } - } - tokens.push({ - string : words[i], - regex : new RegExp(regex, 'i') - }); - } - - return tokens; - }; - - /** - * Iterates over arrays and hashes. - * - * ``` - * this.iterator(this.items, function(item, id) { - * // invoked for each item - * }); - * ``` - * - * @param {array|object} object - */ - Sifter.prototype.iterator = function(object, callback) { - var iterator; - if (is_array(object)) { - iterator = Array.prototype.forEach || function(callback) { - for (var i = 0, n = this.length; i < n; i++) { - callback(this[i], i, this); - } - }; - } else { - iterator = function(callback) { - for (var key in this) { - if (this.hasOwnProperty(key)) { - callback(this[key], key, this); - } - } - }; - } - - iterator.apply(object, [callback]); - }; - - /** - * Returns a function to be used to score individual results. - * - * Good matches will have a higher score than poor matches. - * If an item is not a match, 0 will be returned by the function. - * - * @param {object|string} search - * @param {object} options (optional) - * @returns {function} - */ - Sifter.prototype.getScoreFunction = function(search, options) { - var self, fields, tokens, token_count, nesting; - - self = this; - search = self.prepareSearch(search, options); - tokens = search.tokens; - fields = search.options.fields; - token_count = tokens.length; - nesting = search.options.nesting; - - /** - * Calculates how close of a match the - * given value is against a search token. - * - * @param {mixed} value - * @param {object} token - * @return {number} - */ - var scoreValue = function(value, token) { - var score, pos; - - if (!value) return 0; - value = String(value || ''); - pos = value.search(token.regex); - if (pos === -1) return 0; - score = token.string.length / value.length; - if (pos === 0) score += 0.5; - return score; - }; - - /** - * Calculates the score of an object - * against the search query. - * - * @param {object} token - * @param {object} data - * @return {number} - */ - var scoreObject = (function() { - var field_count = fields.length; - if (!field_count) { - return function() { return 0; }; - } - if (field_count === 1) { - return function(token, data) { - return scoreValue(getattr(data, fields[0], nesting), token); - }; - } - return function(token, data) { - for (var i = 0, sum = 0; i < field_count; i++) { - sum += scoreValue(getattr(data, fields[i], nesting), token); - } - return sum / field_count; - }; - })(); - - if (!token_count) { - return function() { return 0; }; - } - if (token_count === 1) { - return function(data) { - return scoreObject(tokens[0], data); - }; - } - - if (search.options.conjunction === 'and') { - return function(data) { - var score; - for (var i = 0, sum = 0; i < token_count; i++) { - score = scoreObject(tokens[i], data); - if (score <= 0) return 0; - sum += score; - } - return sum / token_count; - }; - } else { - return function(data) { - for (var i = 0, sum = 0; i < token_count; i++) { - sum += scoreObject(tokens[i], data); - } - return sum / token_count; - }; - } - }; - - /** - * Returns a function that can be used to compare two - * results, for sorting purposes. If no sorting should - * be performed, `null` will be returned. - * - * @param {string|object} search - * @param {object} options - * @return function(a,b) - */ - Sifter.prototype.getSortFunction = function(search, options) { - var i, n, self, field, fields, fields_count, multiplier, multipliers, get_field, implicit_score, sort; - - self = this; - search = self.prepareSearch(search, options); - sort = (!search.query && options.sort_empty) || options.sort; - - /** - * Fetches the specified sort field value - * from a search result item. - * - * @param {string} name - * @param {object} result - * @return {mixed} - */ - get_field = function(name, result) { - if (name === '$score') return result.score; - return getattr(self.items[result.id], name, options.nesting); - }; - - // parse options - fields = []; - if (sort) { - for (i = 0, n = sort.length; i < n; i++) { - if (search.query || sort[i].field !== '$score') { - fields.push(sort[i]); - } - } - } - - // the "$score" field is implied to be the primary - // sort field, unless it's manually specified - if (search.query) { - implicit_score = true; - for (i = 0, n = fields.length; i < n; i++) { - if (fields[i].field === '$score') { - implicit_score = false; - break; - } - } - if (implicit_score) { - fields.unshift({field: '$score', direction: 'desc'}); - } - } else { - for (i = 0, n = fields.length; i < n; i++) { - if (fields[i].field === '$score') { - fields.splice(i, 1); - break; - } - } - } - - multipliers = []; - for (i = 0, n = fields.length; i < n; i++) { - multipliers.push(fields[i].direction === 'desc' ? -1 : 1); - } - - // build function - fields_count = fields.length; - if (!fields_count) { - return null; - } else if (fields_count === 1) { - field = fields[0].field; - multiplier = multipliers[0]; - return function(a, b) { - return multiplier * cmp( - get_field(field, a), - get_field(field, b) - ); - }; - } else { - return function(a, b) { - var i, result, a_value, b_value, field; - for (i = 0; i < fields_count; i++) { - field = fields[i].field; - result = multipliers[i] * cmp( - get_field(field, a), - get_field(field, b) - ); - if (result) return result; - } - return 0; - }; - } - }; - - /** - * Parses a search query and returns an object - * with tokens and fields ready to be populated - * with results. - * - * @param {string} query - * @param {object} options - * @returns {object} - */ - Sifter.prototype.prepareSearch = function(query, options) { - if (typeof query === 'object') return query; - - options = extend({}, options); - - var option_fields = options.fields; - var option_sort = options.sort; - var option_sort_empty = options.sort_empty; - - if (option_fields && !is_array(option_fields)) options.fields = [option_fields]; - if (option_sort && !is_array(option_sort)) options.sort = [option_sort]; - if (option_sort_empty && !is_array(option_sort_empty)) options.sort_empty = [option_sort_empty]; - - return { - options : options, - query : String(query || '').toLowerCase(), - tokens : this.tokenize(query), - total : 0, - items : [] - }; - }; - - /** - * Searches through all items and returns a sorted array of matches. - * - * The `options` parameter can contain: - * - * - fields {string|array} - * - sort {array} - * - score {function} - * - filter {bool} - * - limit {integer} - * - * Returns an object containing: - * - * - options {object} - * - query {string} - * - tokens {array} - * - total {int} - * - items {array} - * - * @param {string} query - * @param {object} options - * @returns {object} - */ - Sifter.prototype.search = function(query, options) { - var self = this, value, score, search, calculateScore; - var fn_sort; - var fn_score; - - search = this.prepareSearch(query, options); - options = search.options; - query = search.query; - - // generate result scoring function - fn_score = options.score || self.getScoreFunction(search); - - // perform search and sort - if (query.length) { - self.iterator(self.items, function(item, id) { - score = fn_score(item); - if (options.filter === false || score > 0) { - search.items.push({'score': score, 'id': id}); - } - }); - } else { - self.iterator(self.items, function(item, id) { - search.items.push({'score': 1, 'id': id}); - }); - } - - fn_sort = self.getSortFunction(search, options); - if (fn_sort) search.items.sort(fn_sort); - - // apply limits - search.total = search.items.length; - if (typeof options.limit === 'number') { - search.items = search.items.slice(0, options.limit); - } - - return search; - }; - - // utilities - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - var cmp = function(a, b) { - if (typeof a === 'number' && typeof b === 'number') { - return a > b ? 1 : (a < b ? -1 : 0); - } - a = asciifold(String(a || '')); - b = asciifold(String(b || '')); - if (a > b) return 1; - if (b > a) return -1; - return 0; - }; - - var extend = function(a, b) { - var i, n, k, object; - for (i = 1, n = arguments.length; i < n; i++) { - object = arguments[i]; - if (!object) continue; - for (k in object) { - if (object.hasOwnProperty(k)) { - a[k] = object[k]; - } - } - } - return a; - }; - - /** - * A property getter resolving dot-notation - * @param {Object} obj The root object to fetch property on - * @param {String} name The optionally dotted property name to fetch - * @param {Boolean} nesting Handle nesting or not - * @return {Object} The resolved property value - */ - var getattr = function(obj, name, nesting) { - if (!obj || !name) return; - if (!nesting) return obj[name]; - var names = name.split("."); - while(names.length && (obj = obj[names.shift()])); - return obj; - }; - - var trim = function(str) { - return (str + '').replace(/^\s+|\s+$|/g, ''); - }; - - var escape_regex = function(str) { - return (str + '').replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1'); - }; - - var is_array = Array.isArray || (typeof $ !== 'undefined' && $.isArray) || function(object) { - return Object.prototype.toString.call(object) === '[object Array]'; - }; - - var DIACRITICS = { - 'a': '[aḀḁĂăÂâǍǎȺⱥȦȧẠạÄäÀàÁáĀāÃãÅåąĄÃąĄ]', - 'b': '[b␢βΒB฿𐌁ᛒ]', - 'c': '[cĆćĈĉČčĊċC̄c̄ÇçḈḉȻȼƇƈɕᴄCc]', - 'd': '[dĎďḊḋḐḑḌḍḒḓḎḏĐđD̦d̦ƉɖƊɗƋƌᵭᶁᶑȡᴅDdð]', - 'e': '[eÉéÈèÊêḘḙĚěĔĕẼẽḚḛẺẻĖėËëĒēȨȩĘęᶒɆɇȄȅẾếỀềỄễỂểḜḝḖḗḔḕȆȇẸẹỆệⱸᴇEeɘǝƏƐε]', - 'f': '[fƑƒḞḟ]', - 'g': '[gɢ₲ǤǥĜĝĞğĢģƓɠĠġ]', - 'h': '[hĤĥĦħḨḩẖẖḤḥḢḣɦʰǶƕ]', - 'i': '[iÍíÌìĬĭÎîǏǐÏïḮḯĨĩĮįĪīỈỉȈȉȊȋỊịḬḭƗɨɨ̆ᵻᶖİiIıɪIi]', - 'j': '[jȷĴĵɈɉʝɟʲ]', - 'k': '[kƘƙꝀꝁḰḱǨǩḲḳḴḵκϰ₭]', - 'l': '[lŁłĽľĻļĹĺḶḷḸḹḼḽḺḻĿŀȽƚⱠⱡⱢɫɬᶅɭȴʟLl]', - 'n': '[nŃńǸǹŇňÑñṄṅŅņṆṇṊṋṈṉN̈n̈ƝɲȠƞᵰᶇɳȵɴNnŊŋ]', - 'o': '[oØøÖöÓóÒòÔôǑǒŐőŎŏȮȯỌọƟɵƠơỎỏŌōÕõǪǫȌȍՕօ]', - 'p': '[pṔṕṖṗⱣᵽƤƥᵱ]', - 'q': '[qꝖꝗʠɊɋꝘꝙq̃]', - 'r': '[rŔŕɌɍŘřŖŗṘṙȐȑȒȓṚṛⱤɽ]', - 's': '[sŚśṠṡṢṣꞨꞩŜŝŠšŞşȘșS̈s̈]', - 't': '[tŤťṪṫŢţṬṭƮʈȚțṰṱṮṯƬƭ]', - 'u': '[uŬŭɄʉỤụÜüÚúÙùÛûǓǔŰűŬŭƯưỦủŪūŨũŲųȔȕ∪]', - 'v': '[vṼṽṾṿƲʋꝞꝟⱱʋ]', - 'w': '[wẂẃẀẁŴŵẄẅẆẇẈẉ]', - 'x': '[xẌẍẊẋχ]', - 'y': '[yÝýỲỳŶŷŸÿỸỹẎẏỴỵɎɏƳƴ]', - 'z': '[zŹźẐẑŽžŻżẒẓẔẕƵƶ]' - }; - - var asciifold = (function() { - var i, n, k, chunk; - var foreignletters = ''; - var lookup = {}; - for (k in DIACRITICS) { - if (DIACRITICS.hasOwnProperty(k)) { - chunk = DIACRITICS[k].substring(2, DIACRITICS[k].length - 1); - foreignletters += chunk; - for (i = 0, n = chunk.length; i < n; i++) { - lookup[chunk.charAt(i)] = k; - } - } - } - var regexp = new RegExp('[' + foreignletters + ']', 'g'); - return function(str) { - return str.replace(regexp, function(foreignletter) { - return lookup[foreignletter]; - }).toLowerCase(); - }; - })(); - - - // export - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - return Sifter; -})); - - - -/** - * microplugin.js - * Copyright (c) 2013 Brian Reavis & contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this - * file except in compliance with the License. You may obtain a copy of the License at: - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under - * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. See the License for the specific language - * governing permissions and limitations under the License. - * - * @author Brian Reavis - */ - -(function(root, factory) { - if (typeof define === 'function' && define.amd) { - define('microplugin', factory); - } else if (typeof exports === 'object') { - module.exports = factory(); - } else { - root.MicroPlugin = factory(); - } -}(this, function() { - var MicroPlugin = {}; - - MicroPlugin.mixin = function(Interface) { - Interface.plugins = {}; - - /** - * Initializes the listed plugins (with options). - * Acceptable formats: - * - * List (without options): - * ['a', 'b', 'c'] - * - * List (with options): - * [{'name': 'a', options: {}}, {'name': 'b', options: {}}] - * - * Hash (with options): - * {'a': { ... }, 'b': { ... }, 'c': { ... }} - * - * @param {mixed} plugins - */ - Interface.prototype.initializePlugins = function(plugins) { - var i, n, key; - var self = this; - var queue = []; - - self.plugins = { - names : [], - settings : {}, - requested : {}, - loaded : {} - }; - - if (utils.isArray(plugins)) { - for (i = 0, n = plugins.length; i < n; i++) { - if (typeof plugins[i] === 'string') { - queue.push(plugins[i]); - } else { - self.plugins.settings[plugins[i].name] = plugins[i].options; - queue.push(plugins[i].name); - } - } - } else if (plugins) { - for (key in plugins) { - if (plugins.hasOwnProperty(key)) { - self.plugins.settings[key] = plugins[key]; - queue.push(key); - } - } - } - - while (queue.length) { - self.require(queue.shift()); - } - }; - - Interface.prototype.loadPlugin = function(name) { - var self = this; - var plugins = self.plugins; - var plugin = Interface.plugins[name]; - - if (!Interface.plugins.hasOwnProperty(name)) { - throw new Error('Unable to find "' + name + '" plugin'); - } - - plugins.requested[name] = true; - plugins.loaded[name] = plugin.fn.apply(self, [self.plugins.settings[name] || {}]); - plugins.names.push(name); - }; - - /** - * Initializes a plugin. - * - * @param {string} name - */ - Interface.prototype.require = function(name) { - var self = this; - var plugins = self.plugins; - - if (!self.plugins.loaded.hasOwnProperty(name)) { - if (plugins.requested[name]) { - throw new Error('Plugin has circular dependency ("' + name + '")'); - } - self.loadPlugin(name); - } - - return plugins.loaded[name]; - }; - - /** - * Registers a plugin. - * - * @param {string} name - * @param {function} fn - */ - Interface.define = function(name, fn) { - Interface.plugins[name] = { - 'name' : name, - 'fn' : fn - }; - }; - }; - - var utils = { - isArray: Array.isArray || function(vArg) { - return Object.prototype.toString.call(vArg) === '[object Array]'; - } - }; - - return MicroPlugin; -})); - -/** - * selectize.js (v0.12.6) - * Copyright (c) 2013–2015 Brian Reavis & contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this - * file except in compliance with the License. You may obtain a copy of the License at: - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under - * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. See the License for the specific language - * governing permissions and limitations under the License. - * - * @author Brian Reavis - */ - -/*jshint curly:false */ -/*jshint browser:true */ - -(function(root, factory) { - if (typeof define === 'function' && define.amd) { - define('selectize', ['jquery','sifter','microplugin'], factory); - } else if (typeof exports === 'object') { - module.exports = factory(require('jquery'), require('sifter'), require('microplugin')); - } else { - root.Selectize = factory(root.jQuery, root.Sifter, root.MicroPlugin); - } -}(this, function($, Sifter, MicroPlugin) { - 'use strict'; - - var highlight = function($element, pattern) { - if (typeof pattern === 'string' && !pattern.length) return; - var regex = (typeof pattern === 'string') ? new RegExp(pattern, 'i') : pattern; - - var highlight = function(node) { - var skip = 0; - // Wrap matching part of text node with highlighting , e.g. - // Soccer -> Soccer for regex = /soc/i - if (node.nodeType === 3) { - var pos = node.data.search(regex); - if (pos >= 0 && node.data.length > 0) { - var match = node.data.match(regex); - var spannode = document.createElement('span'); - spannode.className = 'highlight'; - var middlebit = node.splitText(pos); - var endbit = middlebit.splitText(match[0].length); - var middleclone = middlebit.cloneNode(true); - spannode.appendChild(middleclone); - middlebit.parentNode.replaceChild(spannode, middlebit); - skip = 1; - } - } - // Recurse element node, looking for child text nodes to highlight, unless element - // is childless, -``` diff --git a/src/Widget/TagsWidget.php b/src/Widget/TagsWidget.php index 280be94..d735253 100644 --- a/src/Widget/TagsWidget.php +++ b/src/Widget/TagsWidget.php @@ -33,12 +33,7 @@ class TagsWidget extends Widget */ protected $strTemplate = 'be_widget'; - /** - * Tags manager. - * - * @var ManagerInterface - */ - protected $tagsManager; + protected ManagerInterface $tagsManager; #[\Override] public function addAttributes($arrAttributes = null): void @@ -98,7 +93,7 @@ protected function generateConfig(): array 'removeLabel' => $GLOBALS['TL_LANG']['MSC']['removeItem'], 'noResultsLabel' => $GLOBALS['TL_LANG']['MSC']['noResults'], 'allowCreate' => isset($this->tagsCreate) ? (bool) $this->tagsCreate : true, - 'sortable' => isset($this->tagsSortable) && (bool) $this->tagsSortable, + 'sortable' => (bool) $this->isSortable, 'allTags' => $this->generateAllTags($this->getAllTags()), 'valueTags' => $this->generateValueTags($this->getValueTags()), ]; @@ -126,7 +121,7 @@ protected function getValueTags(): array $tags = $this->tagsManager->getFilteredTags($values, $this->tagsSource); // Respect the tags order - if ($this->tagsSortable && \count($tags) > 0) { + if ($this->isSortable && \count($tags) > 0) { usort( $tags, static function (Tag $aTag, Tag $bTag) use ($values) { From 3c5fbaf17073b102a52a4b226c31cf137b3229c1 Mon Sep 17 00:00:00 2001 From: Kamil Kuzminski Date: Tue, 17 Mar 2026 12:51:30 +0100 Subject: [PATCH 27/28] Improve the backend widget --- assets/tags-widget.scss | 19 +++++++++++++----- contao/languages/de/default.php | 4 +++- contao/languages/en/default.php | 4 +++- .../templates/backend/widget/tags.html.twig | 15 +++++++++----- docs/images/preview.png | Bin 12460 -> 53662 bytes public/entrypoints.json | 2 +- public/manifest.json | 4 ++-- public/tags-widget.c2ea0e46.css.map | 1 - ....c2ea0e46.css => tags-widget.f1a58ca1.css} | 4 ++-- public/tags-widget.f1a58ca1.css.map | 1 + src/Widget/TagsWidget.php | 2 +- 11 files changed, 37 insertions(+), 19 deletions(-) delete mode 100644 public/tags-widget.c2ea0e46.css.map rename public/{tags-widget.c2ea0e46.css => tags-widget.f1a58ca1.css} (66%) create mode 100644 public/tags-widget.f1a58ca1.css.map diff --git a/assets/tags-widget.scss b/assets/tags-widget.scss index 55585a3..a859a7b 100644 --- a/assets/tags-widget.scss +++ b/assets/tags-widget.scss @@ -20,16 +20,25 @@ $select-padding-y: 5px; margin-bottom: 3px; &__all { - display: flex; - flex-wrap: wrap; - gap: 3px; - margin-bottom: 3px; + margin-top: 3px; + + &-headline { + margin-bottom: 5px; + margin-top: 5px; + font-size: .75rem; + } + + &-items { + display: flex; + flex-wrap: wrap; + gap: 3px; + } } &__tag { display: block; padding: 5px 10px 5px 25px; - background: var(--form-button) url('./add.svg') no-repeat 6px center; + background: transparent url('./add.svg') no-repeat 6px center; border: 1px solid var(--form-border); border-radius: var(--border-radius); box-sizing: border-box; diff --git a/contao/languages/de/default.php b/contao/languages/de/default.php index 61fa8d2..c2d0434 100644 --- a/contao/languages/de/default.php +++ b/contao/languages/de/default.php @@ -2,4 +2,6 @@ declare(strict_types=1); -$GLOBALS['TL_LANG']['MSC']['cfg_tags.add'] = 'Hinzufügen'; +$GLOBALS['TL_LANG']['MSC']['cfg_tags_add'] = 'Hinzufügen'; +$GLOBALS['TL_LANG']['MSC']['cfg_tags_search'] = 'Zum Suchen eingeben …'; +$GLOBALS['TL_LANG']['MSC']['cfg_tags_suggestions'] = 'Vorschläge:'; diff --git a/contao/languages/en/default.php b/contao/languages/en/default.php index ba36e0a..5f0231e 100644 --- a/contao/languages/en/default.php +++ b/contao/languages/en/default.php @@ -2,4 +2,6 @@ declare(strict_types=1); -$GLOBALS['TL_LANG']['MSC']['cfg_tags.add'] = 'Add'; +$GLOBALS['TL_LANG']['MSC']['cfg_tags_add'] = 'Add'; +$GLOBALS['TL_LANG']['MSC']['cfg_tags_search'] = 'Type to search …'; +$GLOBALS['TL_LANG']['MSC']['cfg_tags_suggestions'] = 'Suggestions:'; diff --git a/contao/templates/backend/widget/tags.html.twig b/contao/templates/backend/widget/tags.html.twig index c6aa085..308d889 100644 --- a/contao/templates/backend/widget/tags.html.twig +++ b/contao/templates/backend/widget/tags.html.twig @@ -1,3 +1,5 @@ +{% trans_default_domain 'contao_default' %} + {% set widget_attributes = attrs() .addClass(['cfg-tags-widget', css_class]) .set('data-controller', 'codefog--tags-widget') @@ -7,15 +9,18 @@ {% block widget %} {% block widget_inner %} + + {% if all_tags and not hide_list %}
- {% for tag in all_tags %} - - {% endfor %} +
{{ 'MSC.cfg_tags_suggestions'|trans }}
+
+ {% for tag in all_tags %} + + {% endfor %} +
{% endif %} - - {% endblock %}
{% endblock %} diff --git a/docs/images/preview.png b/docs/images/preview.png index 2572146be379cab48f431f8a29f03c5fbeedc4e3..d0409c5df857e0112e0fcf801ae733390b482345 100644 GIT binary patch literal 53662 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 HBmXzi3efi9|yT?R-x(r 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 literal 12460 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 diff --git a/public/entrypoints.json b/public/entrypoints.json index b4aa295..1d59289 100644 --- a/public/entrypoints.json +++ b/public/entrypoints.json @@ -2,7 +2,7 @@ "entrypoints": { "tags-widget": { "css": [ - "/bundles/codefogtags/tags-widget.c2ea0e46.css" + "/bundles/codefogtags/tags-widget.f1a58ca1.css" ], "js": [ "/bundles/codefogtags/tags-widget.92015867.js" diff --git a/public/manifest.json b/public/manifest.json index 9381edf..42525ff 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -1,8 +1,8 @@ { - "tags-widget.css": "/bundles/codefogtags/tags-widget.c2ea0e46.css", + "tags-widget.css": "/bundles/codefogtags/tags-widget.f1a58ca1.css", "tags-widget.js": "/bundles/codefogtags/tags-widget.92015867.js", "images/add--dark.svg": "/bundles/codefogtags/images/add--dark.642bad3d.svg", "images/add.svg": "/bundles/codefogtags/images/add.a31d1889.svg", - "tags-widget.c2ea0e46.css.map": "/bundles/codefogtags/tags-widget.c2ea0e46.css.map", + "tags-widget.f1a58ca1.css.map": "/bundles/codefogtags/tags-widget.f1a58ca1.css.map", "tags-widget.92015867.js.map": "/bundles/codefogtags/tags-widget.92015867.js.map" } \ No newline at end of file diff --git a/public/tags-widget.c2ea0e46.css.map b/public/tags-widget.c2ea0e46.css.map deleted file mode 100644 index d6399b9..0000000 --- a/public/tags-widget.c2ea0e46.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tags-widget.c2ea0e46.css","mappings":"AAAA,YACC,mCC+CuB,CDvCvB,kCETsB,CFQtB,eCqC2B,CDtC3B,sBAGA,aACA,eAPA,gBAFA,gBAGA,kBAFA,WAGA,SEoBD,CFbC,wCAKC,iBEWF,CFRC,kBACC,+BEUF,CFPC,8CAEC,wBEQF,CFLC,mBACC,eEOF,CFJC,cAEC,qBADA,uBEOF,CFHC,kCAIC,kBCjByB,CDmBzB,uBADA,aCxByB,CDoBzB,eACA,mBAKA,cAJA,eESF,CFHE,yCACC,kBCpB6B,CDsB7B,uBADA,aEMH,CFAE,6FAEC,gBACA,oBAFA,aEIH,CFEC,kBAWC,0BADA,mBAIA,0BAXA,+BAFA,cAWA,8BAJA,mBAFA,0BACA,yBAFA,uBAHA,eAEA,oBAKA,wBAIA,6FECF,CFEE,6BACC,YEAH,CFGE,wBAAU,sBEAZ,CFGC,6BACC,sBEDF,CFIC,gBACC,gBEFF,CFGE,yCACC,SC9ByB,CD+BzB,UEDH,CFGE,kCACC,6BEDH,CFKC,sBAEC,wBC9E4B,CD6E5B,UEFF,CFQC,gCAGC,cAFA,UACA,iBELF,CCzGA,aAOC,gDDFuB,CCIvB,oCAGA,4DAHA,aAEA,oCADA,sBAPA,OAKA,kBAPA,kBACA,SAEA,WACA,UDmHD,CC1GC,+BACC,eACA,eD4GF,CC1GE,0CACC,+BFG2B,CEF3B,iBD4GH,CCxGC,iGAIC,eD0GF,CCvGC,wGACC,eACA,UDyGF,CCtGC,sCAEC,eADA,SDyGF,CCrGC,oDACC,YDuGF,CCpGC,8BAEC,gDD1CsB,CCyCtB,aF1ByB,CE4BzB,cDsGF,CCnGC,qBACC,2CDjDkC,CCkDlC,UDqGF,CCnGE,4BACC,UDqGH,CCjGC,qBACC,iBDmGF,CChGC,sBACC,qBAEA,WFD0B,CEE1B,eAFA,UDoGF,CC/FE,4BASC,6CAFA,oCACA,2EAFA,kBALA,YACA,cAEA,YACA,WAFA,UDuGH,CC/FE,yBACC,GACC,sBDiGF,CC9FC,GACC,uBDgGF,CACF,CC3FA,qBAEC,gBDvF4B,CCsF5B,qBAEA,sBD8FD,CE9LC,0CACC,2BFiMF,CE9LC,4CACC,2BFgMF,CGrMC,iDACC,kBHwMF,CGnMC,2CACC,iBHsMF,CI5MA,qBACC,wBJgND,CI9MC,mCAOC,iCAEA,eAHA,yBALA,UACA,kBAGA,QAFA,QACA,2BAIA,sBJiNF,CI7MC,yFAIE,iCJ4MH,CIrMC,qHAEC,SJsMF,CKnOC,6BAIC,mFADA,2CAEA,4DAHA,YADA,iBL0OF,CKnOC,mCAIC,aNOyB,CMHzB,yBADA,iBADA,iBADA,WAJA,kBACA,SLD+B,CKE/B,OL0OF,CKlOC,yCACC,ULoOF,CM/OC,gGANC,mCP4CsB,CO7CtB,eNoQF,CM7PC,uCAOC,uBALA,qBACA,cACA,gBAEA,UNuPF,CMvOC,0CACC,mBACA,0BACA,UNyOF,CMtOC,8GAEC,sBNuOF,CO7QC,8DACC,WPgRF,CO7QC,oEACC,UACA,aP+QF,CO7QE,sFACC,iBP+QH,COhRE,iFACC,iBP+QH,CQzRC,0DACC,YR4RF,CQzRC,+CACC,+BACA,aAEA,aADA,YAEA,WR2RF,CQxRC,0DACC,cR0RF,CQvRC,sDACC,YRyRF,CQtRC,sDACC,YRwRF,CS7SC,uCAEC,mBADA,mBTiTF,CS7SC,+CAMC,0BACA,sBANA,cAGA,qBACA,cAHA,qBACA,qBTmTF,CS5SC,qDACC,0BT8SF,CS3SC,8DACC,eT6SF,CSzSC,gDAIC,eAHA,kBACA,QACA,KT4SF,CStSC,iDACC,yBTySF,CStSC,yDACC,8BACA,eTwSF,CSrSC,gEACC,yBTuSF,CSpSC,kEACC,sBTsSF,CSjSC,2CACC,wBToSF,CSjSC,mDACC,+BACA,gBTmSF,CShSC,0DACC,0BTkSF,CS/RC,4DACC,uBTiSF,CDlRA,MACC,yBACA,kBACA,kBCqRD,CD1QE,oEACC,cC6QH,CDxQA,sBACC,4FC2QD,CDxQA,gBACC,2FC2QD,CDhOA,YACC,iBCmOD,CDhOA,2CAGC,aAzI0B,CA0I1B,mBA7I0B,CA8I1B,iBCxJkB,CDyJlB,gBCmOD,CDhOA,wDAEC,yBC/JoB,CDgKpB,WCmOD,CDhOA,sBACC,mBACA,6BACA,+BACA,0BACA,oBACA,4BAEA,6BADA,mBCoOD,CAnYA,iBAEI,kBADA,cAuYJ,CApYI,sBACI,aACA,eACA,QACA,iBAsYR,CAnYI,sBAGI,oGACA,oCACA,mCACA,sBAEA,eAPA,cAMA,eALA,0BAOA,+BAEA,oDACI,wEAGJ,6BAEI,yCAGJ,4CACI,+BA0BJ,sEAZA,6CACA,uXAPA,wGAcA,CAbA,oDACA,oDAeA,eAlBA,qEAqBA,uFAIA,0CACI,yEAGJ,kBACI,8DAKJ,6DACI,4VAgBI,4CAEA,8DAJA,gCAQJ,2DAKJ,0DAEI,uFADA,0DAKA,gFAEI,yEAKZ,kCAEI,uCACA,sFACA,wBACA,gDAGI,iBAQA,wGACI,wBAGJ,wDAIA,+GA2WZ","sources":["webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/_items.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/tom-select.scss","webpack://@codefog/contao-tags-bundle/./assets/tags-widget.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/_dropdown.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/drag_drop.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/checkbox_options.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/clear_button.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/dropdown_header.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/dropdown_input.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/input_autogrow.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/optgroup_columns.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/remove_button.scss"],"sourcesContent":[".#{$select-ns}-control {\n\tborder: $select-border;\n\tpadding: $select-padding-y $select-padding-x;\n\twidth: 100%;\n\toverflow: hidden;\n\tposition: relative;\n\tz-index: 1;\n\tbox-sizing: border-box;\n\tbox-shadow: $select-shadow-input;\n\tborder-radius: $select-border-radius;\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\n\t.#{$select-ns}-wrapper.multi.has-items & {\n\t\t$padding-x: $select-padding-x;\n\t\t$padding-top: calc( #{$select-padding-y} - #{$select-padding-item-y} - #{$select-width-item-border});\n\t\t$padding-bottom: calc( #{$select-padding-y} - #{$select-padding-item-y} - #{$select-margin-item-y} - #{$select-width-item-border});\n\n\t\tpadding: $padding-top $padding-x $padding-bottom;\n\t}\n\n\t.full & {\n\t\tbackground-color: $select-color-input-full;\n\t}\n\n\t.disabled &,\n\t.disabled & * {\n\t\tcursor: default !important;\n\t}\n\n\t.focus & {\n\t\tbox-shadow: $select-shadow-input-focus;\n\t}\n\n\t> * {\n\t\tvertical-align: baseline;\n\t\tdisplay: inline-block;\n\t}\n\n\t.#{$select-ns}-wrapper.multi & > div {\n\t\tcursor: pointer;\n\t\tmargin: 0 $select-margin-item-x $select-margin-item-y 0;\n\t\tpadding: $select-padding-item-y $select-padding-item-x;\n\t\tbackground: $select-color-item;\n\t\tcolor: $select-color-item-text;\n\t\tborder: $select-width-item-border solid $select-color-item-border;\n\t\toverflow: auto;\n\n\t\t&.active {\n\t\t\tbackground: $select-color-item-active;\n\t\t\tcolor: $select-color-item-active-text;\n\t\t\tborder: $select-width-item-border solid $select-color-item-active-border;\n\t\t}\n\t}\n\n\t.#{$select-ns}-wrapper.multi.disabled & > div {\n\t\t&, &.active {\n\t\t\tcolor: lighten(desaturate($select-color-item-text, 100%), $select-lighten-disabled-item-text);\n\t\t\tbackground: lighten(desaturate($select-color-item, 100%), $select-lighten-disabled-item);\n\t\t\tborder: $select-width-item-border solid lighten(desaturate($select-color-item-border, 100%), $select-lighten-disabled-item-border);\n\t\t}\n\t}\n\n\t> input {\n\t\tflex: 1 1 auto;\n\t\tmin-width: 7rem;\n\t\tdisplay: inline-block !important;\n\t\tpadding: 0 !important;\n\t\tmin-height: 0 !important;\n\t\tmax-height: none !important;\n\t\tmax-width: 100% !important;\n\t\tmargin: 0 !important;\n\t\ttext-indent: 0 !important;\n\t\tborder: 0 none !important;\n\t\tbackground: none !important;\n\t\tline-height: inherit !important;\n\t\tuser-select: auto !important;\n\t\tbox-shadow: none !important;\n\n\t\t&::-ms-clear {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t&:focus { outline: none !important; }\n\t}\n\n\t.has-items & > input{\n\t\tmargin: $select-caret-margin !important;\n\t}\n\n\t&.rtl {\n\t\ttext-align: right;\n\t\t&.single .#{$select-ns}-control:after {\n\t\t\tleft: $select-arrow-offset;\n\t\t\tright: auto;\n\t\t}\n\t\t.#{$select-ns}-control > input {\n\t\t\tmargin: $select-caret-margin-rtl !important;\n\t\t}\n\t}\n\n\t.disabled & {\n\t\topacity: $select-opacity-disabled;\n\t\tbackground-color: $select-color-disabled;\n\t}\n\n\t// hide input, while retaining its focus, and maintain layout so users can still click on the space to bring the display back\n\t// visibility:hidden can prevent the input from receiving focus\n\t.input-hidden & > input {\n\t\topacity: 0;\n\t\tposition: absolute;\n\t\tleft: -10000px;\n\t}\n}\n","/**\n * tom-select.css (v2.5.2)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\n// base styles\n$select-ns:\t\t\t\t\t\t\t\t\t\t'ts' !default;\n$select-font-family:\t\t\t\t\t\t\tinherit !default;\n$select-font-size:\t\t\t\t\t\t\t\t13px !default;\n$select-line-height:\t\t\t\t\t\t\t18px !default;\n$select-color-text:\t\t\t\t\t\t\t\t#303030 !default;\n$select-color-border:\t\t\t\t\t\t\t#d0d0d0 !default;\n$select-color-highlight:\t\t\t\t\t\trgba(125, 168, 208, 20%) !default;\n$select-color-input:\t\t\t\t\t\t\t#fff !default;\n$select-color-input-full:\t\t\t\t\t\t$select-color-input !default;\n$select-color-disabled:\t\t\t\t\t\t\t#fafafa !default;\n$select-color-item:\t\t\t\t\t\t\t\t#f2f2f2 !default;\n$select-color-item-text:\t\t\t\t\t\t$select-color-text !default;\n$select-color-item-border:\t\t\t\t\t\t#d0d0d0 !default;\n$select-color-item-active:\t\t\t\t\t\t#e8e8e8 !default;\n$select-color-item-active-text:\t\t\t\t\t$select-color-text !default;\n$select-color-item-active-border:\t\t\t\t#cacaca !default;\n$select-color-dropdown:\t\t\t\t\t\t\t#fff !default;\n$select-color-dropdown-border:\t\t\t\t\t$select-color-border !default;\n$select-color-dropdown-border-top:\t\t\t\t#f0f0f0 !default;\n$select-color-dropdown-item-active:\t\t\t\t#f5fafd !default;\n$select-color-dropdown-item-active-text:\t\t#495c68 !default;\n$select-color-dropdown-item-create-text:\t\trgba(red($select-color-text), green($select-color-text), blue($select-color-text), 50%) !default;\n$select-color-dropdown-item-create-active-text:\t$select-color-dropdown-item-active-text !default;\n$select-color-optgroup:\t\t\t\t\t\t\t$select-color-dropdown !default;\n$select-color-optgroup-text:\t\t\t\t\t$select-color-text !default;\n$select-lighten-disabled-item:\t\t\t\t\t30% !default;\n$select-lighten-disabled-item-text:\t\t\t\t30% !default;\n$select-lighten-disabled-item-border:\t\t\t30% !default;\n$select-opacity-disabled:\t\t\t\t\t\t0.5 !default;\n$select-shadow-input:\t\t\t\t\t\t\tnone !default;\n$select-shadow-input-focus:\t\t\t\t\t\tnone !default;\n$select-border-width:\t\t\t\t\t\t\t1px !default;\n$select-border:\t\t\t\t\t\t\t\t\t$select-border-width solid $select-color-border !default;\n$select-dropdown-border:\t\t\t\t\t\t1px solid $select-color-dropdown-border !default;\n$select-border-radius:\t\t\t\t\t\t\t3px !default;\n$select-width-item-border:\t\t\t\t\t\t0px !default;\n$select-max-height-dropdown:\t\t\t\t\t200px !default;\n$select-padding-x:\t\t\t\t\t\t\t\t8px !default;\n$select-padding-y:\t\t\t\t\t\t\t\t8px !default;\n$select-padding-item-x:\t\t\t\t\t\t\t6px !default;\n$select-padding-item-y:\t\t\t\t\t\t\t2px !default;\n$select-padding-dropdown-item-x:\t\t\t\t$select-padding-x !default;\n$select-padding-dropdown-item-y:\t\t\t\t5px !default;\n$select-margin-item-x:\t\t\t\t\t\t\t3px !default;\n$select-margin-item-y:\t\t\t\t\t\t\t3px !default;\n$select-arrow-size:\t\t\t\t\t\t\t\t5px !default;\n$select-arrow-color:\t\t\t\t\t\t\t#808080 !default;\n$select-arrow-offset:\t\t\t\t\t\t\t15px !default;\n$select-caret-margin:\t\t\t\t\t\t\t0px 4px !default;\n$select-caret-margin-rtl:\t\t\t\t\t\t0px 4px 0px -2px !default;\n$select-spinner-size:\t\t\t\t\t\t\t30px !default;\n$select-spinner-border-size:\t\t\t\t\t5px !default;\n$select-spinner-border-color:\t\t\t\t\t$select-color-border !default;\n\n@import 'items';\n@import 'dropdown';\n\n@import \"./plugins/drag_drop.scss\";\n@import \"./plugins/checkbox_options.scss\";\n@import \"./plugins/clear_button.scss\";\n@import \"./plugins/dropdown_header.scss\";\n@import \"./plugins/dropdown_input.scss\";\n@import \"./plugins/input_autogrow.scss\";\n@import \"./plugins/optgroup_columns.scss\";\n@import \"./plugins/remove_button.scss\";\n\n:root {\n\t--ts-pr-clear-button: 0px;\n\t--ts-pr-caret: 0px;\n\t--ts-pr-min: .75rem;\n}\n\n@mixin selectize-vertical-gradient($color-top, $color-bottom) {\n background-color: color-mix($color-top, $color-bottom, 60%);\n background-image: linear-gradient(to bottom, $color-top, $color-bottom);\n background-repeat: repeat-x;\n}\n\n.#{$select-ns}-wrapper.single {\n\t.#{$select-ns}-control {\n\t\t&, input {\n\t\t\tcursor: pointer;\n\t\t}\n\t}\n}\n\n.#{$select-ns}-control:not(.rtl) {\n\tpadding-right:\tmax( var(--ts-pr-min), calc( var(--ts-pr-clear-button) + var(--ts-pr-caret)) ) !important;\n}\n\n.#{$select-ns}-control.rtl {\n\tpadding-left:\tmax( var(--ts-pr-min), calc( var(--ts-pr-clear-button) + var(--ts-pr-caret)) ) !important;\n}\n\n@mixin ts-caret() {\n\t.#{$select-ns}-wrapper.single {\n\t\t.#{$select-ns}-control {\n\t\t\t--ts-pr-caret: 2rem;\n\n\t\t\t&::after {\n\t\t\t\tcontent: ' ';\n\t\t\t\tdisplay: block;\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 50%;\n\t\t\t\tmargin-top: round(-0.5 * $select-arrow-size);\n\t\t\t\twidth: 0;\n\t\t\t\theight: 0;\n\t\t\t\tborder-style: solid;\n\t\t\t\tborder-width: $select-arrow-size $select-arrow-size 0 $select-arrow-size;\n\t\t\t\tborder-color: $select-arrow-color transparent transparent transparent;\n\t\t\t}\n\t\t\t\n\t\t\t&:not(.rtl)::after {\n\t\t\t\tright: $select-arrow-offset;\n\t\t\t}\n\t\t\t\n\t\t\t&.rtl::after {\n\t\t\t\tleft: $select-arrow-offset;\n\t\t\t}\n\t\t}\n\n\t\t&.dropdown-active .#{$select-ns}-control::after {\n\t\t\tmargin-top: $select-arrow-size * -0.8;\n\t\t\tborder-width: 0 $select-arrow-size $select-arrow-size $select-arrow-size;\n\t\t\tborder-color: transparent transparent $select-arrow-color transparent;\n\t\t}\n\n\t\t&.input-active .#{$select-ns}-control,\n\t\t&.input-active .#{$select-ns}-control input {\n\t\t\tcursor: text;\n\t\t}\n\t}\n}\n\n.#{$select-ns}-wrapper {\n\tposition: relative;\n}\n\n.#{$select-ns}-dropdown,\n.#{$select-ns}-control,\n.#{$select-ns}-control input {\n\tcolor: $select-color-text;\n\tfont-family: $select-font-family;\n\tfont-size: $select-font-size;\n\tline-height: $select-line-height;\n}\n\n.#{$select-ns}-control,\n.#{$select-ns}-wrapper.single.input-active .#{$select-ns}-control {\n\tbackground: $select-color-input;\n\tcursor: text;\n}\n\n.ts-hidden-accessible {\n\tborder: 0 !important;\n\tclip: rect(0 0 0 0) !important;\n\tclip-path: inset(50%) !important;\n\toverflow: hidden !important;\n\tpadding: 0 !important;\n\tposition: absolute !important;\n\twidth: 1px !important;\n\twhite-space: nowrap !important;\n}\n","$select-border-radius: var(--border-radius);\n$select-color-border: var(--form-border);\n$select-color-dropdown-item-active-text: #fff;\n$select-color-dropdown-item-active: var(--choices-highlighted);\n$select-color-dropdown-item-create-text: var(--text);\n$select-color-dropdown: var(--choices-bg-color-dropdown, #fff);\n$select-color-input: var(--form-bg);\n$select-font-size: inherit;\n$select-line-height: 13px;\n$select-max-height-dropdown: 300px;\n$select-padding-dropdown-item-x: 6px;\n$select-padding-dropdown-item-y: 3px;\n$select-padding-x: 6px;\n$select-padding-y: 5px;\n\n@import '~tom-select/dist/scss/tom-select';\n\n.cfg-tags-widget {\n margin-top: 3px;\n margin-bottom: 3px;\n\n &__all {\n display: flex;\n flex-wrap: wrap;\n gap: 3px;\n margin-bottom: 3px;\n }\n\n &__tag {\n display: block;\n padding: 5px 10px 5px 25px;\n background: var(--form-button) url('./add.svg') no-repeat 6px center;\n border: 1px solid var(--form-border);\n border-radius: var(--border-radius);\n box-sizing: border-box;\n font-size: 13px;\n cursor: pointer;\n transition: background 0.2s ease;\n\n html[data-color-scheme='dark'] & {\n background-image: url('./add--dark.svg');\n }\n\n &:hover {\n color: inherit;\n background-color: var(--form-button-hover);\n }\n\n &:active {\n color: var(--form-button-active);\n }\n }\n\n &__remove {\n position: relative;\n display: inline-block;\n width: var(--choices-button-dimension, 8px);\n margin: 0 calc(var(--choices-button-offset, 8px) * -0.5) 0 var(--choices-button-offset, 8px);\n padding-bottom: 2px;\n padding-left: calc(var(--choices-button-offset, 8px) * 2);\n border: 0;\n border-left: 1px solid var(--choices-border);\n border-radius: var(--choices-button-border-radius, 0);\n background-color: transparent;\n background-image: var(\n --choices-icon-cross,\n url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==')\n );\n background-position: center;\n background-repeat: no-repeat;\n background-size: var(--choices-button-dimension, 8px);\n opacity: var(--choices-button-opacity, 0.75);\n cursor: pointer;\n line-height: var(--choices-button-line-height, 1);\n text-indent: -9999px;\n appearance: none;\n\n html:not([data-color-scheme='dark']) & {\n background-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjMjIyIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==');\n }\n\n &:is(:hover, :focus) {\n --choices-button-opacity: var(--choices-button-opacity-hover, 1);\n }\n\n &:focus {\n box-shadow: 0 0 0 2px var(--choices-highlight-color, #005f75);\n }\n }\n\n .ts-wrapper {\n &.dropdown-active .ts-control {\n border-radius: var(--choices-border-radius, 2.5px) var(--choices-border-radius, 2.5px) 0 0;\n }\n\n &.multi.has-items .ts-control {\n padding-left: 3px;\n\n input {\n margin: -3px 4px 0 !important;\n }\n }\n\n .ts-control {\n > div {\n margin: 0 3px 3px 0;\n padding: 1px 5px 1px 6px;\n background-color: var(--choices-bg);\n border: 1px solid var(--choices-border);\n border-radius: 3px;\n color: var(--choices-item-color, #fff);\n cursor: auto;\n }\n\n input {\n color: var(--text);\n }\n }\n\n .create {\n padding-left: 25px !important;\n background-image: url('./add.svg');\n background-repeat: no-repeat;\n background-position: 6px center;\n\n &.active,\n html[data-color-scheme='dark'] & {\n background-image: url('./add--dark.svg');\n }\n }\n }\n\n .ts-dropdown {\n margin-top: -1px;\n border: 1px solid var(--choices-keyline-color, #ddd);\n border-radius: 0 0 var(--choices-border-radius, 2.5px) var(--choices-border-radius, 2.5px);\n box-shadow: none;\n overflow: hidden;\n\n * {\n font-size: 13px;\n }\n\n .no-results {\n color: var(--text);\n }\n\n [data-selectable] {\n &.option {\n color: var(--text);\n }\n\n &.active {\n color: #fff;\n }\n\n .highlight {\n background-color: var(--orange);\n color: #fff;\n }\n }\n }\n}\n",".#{$select-ns}-dropdown {\n\tposition: absolute;\n\ttop: 100%;\n\tleft: 0;\n\twidth: 100%;\n\tz-index: 10;\n\tborder: $select-dropdown-border;\n\tbackground: $select-color-dropdown;\n\tmargin: 0.25rem 0 0;\n\tborder-top: 0 none;\n\tbox-sizing: border-box;\n\tbox-shadow: 0 1px 3px rgba(0, 0, 0, 10%);\n\tborder-radius: 0 0 $select-border-radius $select-border-radius;\n\n\t[data-selectable] {\n\t\tcursor: pointer;\n\t\toverflow: hidden;\n\n\t\t.highlight {\n\t\t\tbackground: $select-color-highlight;\n\t\t\tborder-radius: 1px;\n\t\t}\n\t}\n\n\t.option,\n\t.optgroup-header,\n\t.no-results,\n\t.create {\n\t\tpadding: $select-padding-dropdown-item-y $select-padding-dropdown-item-x;\n\t}\n\n\t.option, [data-disabled], [data-disabled] [data-selectable].option {\n\t\tcursor: inherit;\n\t\topacity: 0.5;\n\t}\n\n\t[data-selectable].option {\n\t\topacity: 1;\n\t\tcursor: pointer;\n\t}\n\n\t.optgroup:first-child .optgroup-header {\n\t\tborder-top: 0 none;\n\t}\n\n\t.optgroup-header {\n\t\tcolor: $select-color-optgroup-text;\n\t\tbackground: $select-color-optgroup;\n\t\tcursor: default;\n\t}\n\n\t.active {\n\t\tbackground-color: $select-color-dropdown-item-active;\n\t\tcolor: $select-color-dropdown-item-active-text;\n\n\t\t&.create {\n\t\t\tcolor: $select-color-dropdown-item-create-active-text;\n\t\t}\n\t}\n\n\t.create {\n\t\tcolor: $select-color-dropdown-item-create-text;\n\t}\n\n\t.spinner{\n\t\tdisplay: inline-block;\n\t\twidth: $select-spinner-size;\n\t\theight: $select-spinner-size;\n\t\tmargin: $select-padding-dropdown-item-y $select-padding-dropdown-item-x;\n\n\n\t\t&::after {\n\t\t\tcontent: \" \";\n\t\t\tdisplay: block;\n\t\t\twidth: $select-spinner-size * .8;\n\t\t\theight: $select-spinner-size * .8;\n\t\t\tmargin: $select-spinner-size * .1;\n\t\t\tborder-radius: 50%;\n\t\t\tborder: $select-spinner-border-size solid $select-spinner-border-color;\n\t\t\tborder-color: $select-spinner-border-color transparent $select-spinner-border-color transparent;\n\t\t\tanimation: lds-dual-ring 1.2s linear infinite;\n\t\t}\n\t\t@keyframes lds-dual-ring {\n\t\t\t0% {\n\t\t\t\ttransform: rotate(0deg);\n\t\t\t}\n\n\t\t\t100% {\n\t\t\t\ttransform: rotate(360deg);\n\t\t\t}\n\t\t}\n\t}\n}\n\n.#{$select-ns}-dropdown-content {\n\toverflow: hidden auto;\n\tmax-height: $select-max-height-dropdown;\n\tscroll-behavior: smooth;\n}\n",".#{$select-ns}-wrapper.plugin-drag_drop {\n\t.ts-dragging{\n\t\tcolor:transparent !important;\n\t}\n\t\t\n\t.ts-dragging > * {\n\t\tvisibility:hidden !important;\n\t}\n\n}\n",".plugin-checkbox_options:not(.rtl) {\n\t.option input {\n\t\tmargin-right: 0.5rem;\n\t}\n}\n\n.plugin-checkbox_options.rtl {\n\t.option input {\n\t\tmargin-left: 0.5rem;\n\t}\n}\n","/* stylelint-disable function-name-case */\n\n.plugin-clear_button {\n\t--ts-pr-clear-button: 1em;\n\n\t.clear-button{\n\t\topacity: 0;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\ttransform: translateY(-50%);\n\t\tright: calc(#{$select-padding-x} - #{$select-padding-item-x});\n\t\tmargin-right: 0 !important;\n\t\tbackground: transparent !important;\n\t\ttransition: opacity 0.5s;\n\t\tcursor: pointer;\n\t}\n\n\t&.form-select .clear-button,\n\t&.single .clear-button {\n\n\t\t@if variable-exists(select-padding-dropdown-item-x) {\n\t\t\tright: Max(var(--ts-pr-caret), #{$select-padding-dropdown-item-x});\n\t\t}\n\t\t@else{\n\t\t\tright: Max(var(--ts-pr-caret), calc(#{$select-padding-x} - #{$select-padding-item-x}));\n\t\t}\n\t}\n\n\t&.focus.has-items .clear-button,\n\t&:not(.disabled):hover.has-items .clear-button{\n\t\topacity: 1;\n\t}\n}\n",".#{$select-ns}-wrapper{\n\t.dropdown-header {\n\t\tposition: relative;\n\t\tpadding: ($select-padding-dropdown-item-y * 2) $select-padding-dropdown-item-x;\n\t\tborder-bottom: 1px solid $select-color-border;\n\t\tbackground: color-mix($select-color-dropdown, $select-color-border, 85%);\n\t\tborder-radius: $select-border-radius $select-border-radius 0 0;\n\t}\n\n\t.dropdown-header-close {\n\t\tposition: absolute;\n\t\tright: $select-padding-dropdown-item-x;\n\t\ttop: 50%;\n\t\tcolor: $select-color-text;\n\t\topacity: 0.4;\n\t\tmargin-top: -12px;\n\t\tline-height: 20px;\n\t\tfont-size: 20px !important;\n\t}\n\n\t.dropdown-header-close:hover {\n\t\tcolor: darken($select-color-text, 25%);\n\t}\n}\n",".plugin-dropdown_input{\n\n\t&.focus.dropdown-active .#{$select-ns}-control{\n\t\tbox-shadow: none;\n\t\tborder: $select-border;\n\t\t@if variable-exists(input-box-shadow) {\n\t\t\tbox-shadow: $input-box-shadow;\n\t\t}\n\t}\n\n\t.dropdown-input {\n\t\tborder: 1px solid $select-color-border;\n\t\tborder-width: 0 0 1px;\n\t\tdisplay: block;\n\t\tpadding: $select-padding-y $select-padding-x;\n\t\tbox-shadow: $select-shadow-input;\n\t\twidth: 100%;\n\t\tbackground: transparent;\n\t}\n\n\t&.focus .#{$select-ns}-dropdown .dropdown-input{\n\t\t@if variable-exists(input-focus-border-color) {\n\t\t\tborder-color: $input-focus-border-color;\n\t\t\toutline: 0;\n\t\t\t@if $enable-shadows {\n\t\t\t\tbox-shadow: $input-box-shadow, $input-focus-box-shadow;\n\t\t\t} @else {\n\t\t\t\tbox-shadow: $input-focus-box-shadow;\n\t\t\t}\n\t\t}\n\t}\n\n\t.items-placeholder{\n\t\tborder: 0 none !important;\n\t\tbox-shadow: none !important;\n\t\twidth: 100%;\n\t}\n\n\t&.has-items .items-placeholder,\n\t&.dropdown-active .items-placeholder{\n\t\tdisplay: none !important;\n\t}\n}\n",".#{$select-ns}-wrapper.plugin-input_autogrow{\n\n\t&.has-items .#{$select-ns}-control > input {\n\t\tmin-width: 0;\n\t}\n\t\n\t&.has-items.focus .#{$select-ns}-control > input {\n\t\tflex: none;\n\t\tmin-width: 4px;\n\n\t\t&::placeholder {\n\t\t\tcolor:transparent;\n\t\t}\n\t}\n}\n",".#{$select-ns}-dropdown.plugin-optgroup_columns {\n\t.ts-dropdown-content{\n\t\tdisplay: flex;\n\t}\n\n\t.optgroup {\n\t\tborder-right: 1px solid #f2f2f2;\n\t\tborder-top: 0 none;\n\t\tflex-grow: 1;\n\t\tflex-basis: 0;\n\t\tmin-width: 0;\n\t}\n\n\t.optgroup:last-child {\n\t\tborder-right: 0 none;\n\t}\n\n\t.optgroup::before {\n\t\tdisplay: none;\n\t}\n\n\t.optgroup-header {\n\t\tborder-top: 0 none;\n\t}\n}\n",".#{$select-ns}-wrapper.plugin-remove_button{\n\t.item {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t}\n\n\t.item .remove {\n\t\tcolor: inherit;\n\t\ttext-decoration: none;\n\t\tvertical-align: middle;\n\t\tdisplay: inline-block;\n\t\tpadding: 0 $select-padding-item-x;\n\t\tborder-radius: 0 2px 2px 0;\n\t\tbox-sizing: border-box;\n\t}\n\n\t.item .remove:hover {\n\t\tbackground: rgba(0, 0, 0, 5%);\n\t}\n\n\t&.disabled .item .remove:hover {\n\t\tbackground: none;\n\t}\n\n\n\t.remove-single {\n\t\tposition: absolute;\n\t\tright: 0;\n\t\ttop: 0;\n\t\tfont-size: 23px;\n\t}\n}\n\n.#{$select-ns}-wrapper.plugin-remove_button:not(.rtl){\n\t.item {\n\t\tpadding-right:\t0 !important;\n\t}\n\n\t.item .remove {\n\t\tborder-left: 1px solid $select-color-item-border;\n\t\tmargin-left: $select-padding-item-x;\n\t}\n\n\t.item.active .remove {\n\t\tborder-left-color: $select-color-item-active-border;\n\t}\n\n\t&.disabled .item .remove {\n\t\tborder-left-color: lighten(desaturate($select-color-item-border, 100%), $select-lighten-disabled-item-border);\n\t}\n}\n\n.#{$select-ns}-wrapper.plugin-remove_button.rtl {\n\t.item {\n\t\tpadding-left:\t0 !important;\n\t}\n\t\n\t.item .remove {\n\t\tborder-right: 1px solid $select-color-item-border;\n\t\tmargin-right: $select-padding-item-x;\n\t}\n\n\t.item.active .remove {\n\t\tborder-right-color: $select-color-item-active-border;\n\t}\n\n\t&.disabled .item .remove {\n\t\tborder-right-color: lighten(desaturate($select-color-item-border, 100%), $select-lighten-disabled-item-border);\n\t}\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/public/tags-widget.c2ea0e46.css b/public/tags-widget.f1a58ca1.css similarity index 66% rename from public/tags-widget.c2ea0e46.css rename to public/tags-widget.f1a58ca1.css index a6e1974..d152c97 100644 --- a/public/tags-widget.c2ea0e46.css +++ b/public/tags-widget.f1a58ca1.css @@ -1,2 +1,2 @@ -.ts-control{border:1px solid var(--form-border);border-radius:var(--border-radius);box-shadow:none;box-sizing:border-box;display:flex;flex-wrap:wrap;overflow:hidden;padding:5px 6px;position:relative;width:100%;z-index:1}.ts-wrapper.multi.has-items .ts-control{padding:3px 6px 0}.full .ts-control{background-color:var(--form-bg)}.disabled .ts-control,.disabled .ts-control *{cursor:default!important}.focus .ts-control{box-shadow:none}.ts-control>*{display:inline-block;vertical-align:baseline}.ts-wrapper.multi .ts-control>div{background:#f2f2f2;border:0 solid #d0d0d0;color:#303030;cursor:pointer;margin:0 3px 3px 0;overflow:auto;padding:2px 6px}.ts-wrapper.multi .ts-control>div.active{background:#e8e8e8;border:0 solid #cacaca;color:#303030}.ts-wrapper.multi.disabled .ts-control>div,.ts-wrapper.multi.disabled .ts-control>div.active{background:#fff;border:0 solid #fff;color:#7d7d7d}.ts-control>input{background:none!important;border:0!important;box-shadow:none!important;display:inline-block!important;flex:1 1 auto;line-height:inherit!important;margin:0!important;max-height:none!important;max-width:100%!important;min-height:0!important;min-width:7rem;padding:0!important;text-indent:0!important;-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.ts-control>input::-ms-clear{display:none}.ts-control>input:focus{outline:none!important}.has-items .ts-control>input{margin:0 4px!important}.ts-control.rtl{text-align:right}.ts-control.rtl.single .ts-control:after{left:15px;right:auto}.ts-control.rtl .ts-control>input{margin:0 4px 0 -2px!important}.disabled .ts-control{background-color:#fafafa;opacity:.5}.input-hidden .ts-control>input{left:-10000px;opacity:0;position:absolute}.ts-dropdown{background:var(--choices-bg-color-dropdown,#fff);border:1px solid var(--form-border);border-radius:0 0 var(--border-radius) var(--border-radius);border-top:0;box-shadow:0 1px 3px rgba(0,0,0,.1);box-sizing:border-box;left:0;margin:.25rem 0 0;position:absolute;top:100%;width:100%;z-index:10}.ts-dropdown [data-selectable]{cursor:pointer;overflow:hidden}.ts-dropdown [data-selectable] .highlight{background:rgba(125,168,208,.2);border-radius:1px}.ts-dropdown .create,.ts-dropdown .no-results,.ts-dropdown .optgroup-header,.ts-dropdown .option{padding:3px 6px}.ts-dropdown .option,.ts-dropdown [data-disabled],.ts-dropdown [data-disabled] [data-selectable].option{cursor:inherit;opacity:.5}.ts-dropdown [data-selectable].option{cursor:pointer;opacity:1}.ts-dropdown .optgroup:first-child .optgroup-header{border-top:0}.ts-dropdown .optgroup-header{background:var(--choices-bg-color-dropdown,#fff);color:#303030;cursor:default}.ts-dropdown .active{background-color:var(--choices-highlighted);color:#fff}.ts-dropdown .active.create{color:#fff}.ts-dropdown .create{color:var(--text)}.ts-dropdown .spinner{display:inline-block;height:30px;margin:3px 6px;width:30px}.ts-dropdown .spinner:after{animation:lds-dual-ring 1.2s linear infinite;border:5px solid var(--form-border);border-color:var(--form-border) transparent var(--form-border) transparent;border-radius:50%;content:" ";display:block;height:24px;margin:3px;width:24px}@keyframes lds-dual-ring{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.ts-dropdown-content{max-height:300px;overflow:hidden auto;scroll-behavior:smooth}.ts-wrapper.plugin-drag_drop .ts-dragging{color:transparent!important}.ts-wrapper.plugin-drag_drop .ts-dragging>*{visibility:hidden!important}.plugin-checkbox_options:not(.rtl) .option input{margin-right:.5rem}.plugin-checkbox_options.rtl .option input{margin-left:.5rem}.plugin-clear_button{--ts-pr-clear-button:1em}.plugin-clear_button .clear-button{background:transparent!important;cursor:pointer;margin-right:0!important;opacity:0;position:absolute;right:0;top:50%;transform:translateY(-50%);transition:opacity .5s}.plugin-clear_button.form-select .clear-button,.plugin-clear_button.single .clear-button{right:max(var(--ts-pr-caret),6px)}.plugin-clear_button.focus.has-items .clear-button,.plugin-clear_button:not(.disabled):hover.has-items .clear-button{opacity:1}.ts-wrapper .dropdown-header{background:color-mix(var(--choices-bg-color-dropdown,#fff),var(--form-border),85%);border-bottom:1px solid var(--form-border);border-radius:var(--border-radius) var(--border-radius) 0 0;padding:6px;position:relative}.ts-wrapper .dropdown-header-close{color:#303030;font-size:20px!important;line-height:20px;margin-top:-12px;opacity:.4;position:absolute;right:6px;top:50%}.ts-wrapper .dropdown-header-close:hover{color:#000}.plugin-dropdown_input .dropdown-input,.plugin-dropdown_input.focus.dropdown-active .ts-control{border:1px solid var(--form-border);box-shadow:none}.plugin-dropdown_input .dropdown-input{background:transparent;border-width:0 0 1px;display:block;padding:5px 6px;width:100%}.plugin-dropdown_input .items-placeholder{border:0!important;box-shadow:none!important;width:100%}.plugin-dropdown_input.dropdown-active .items-placeholder,.plugin-dropdown_input.has-items .items-placeholder{display:none!important}.ts-wrapper.plugin-input_autogrow.has-items .ts-control>input{min-width:0}.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control>input{flex:none;min-width:4px}.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control>input::-moz-placeholder{color:transparent}.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control>input::placeholder{color:transparent}.ts-dropdown.plugin-optgroup_columns .ts-dropdown-content{display:flex}.ts-dropdown.plugin-optgroup_columns .optgroup{border-right:1px solid #f2f2f2;border-top:0;flex-basis:0;flex-grow:1;min-width:0}.ts-dropdown.plugin-optgroup_columns .optgroup:last-child{border-right:0}.ts-dropdown.plugin-optgroup_columns .optgroup:before{display:none}.ts-dropdown.plugin-optgroup_columns .optgroup-header{border-top:0}.ts-wrapper.plugin-remove_button .item{align-items:center;display:inline-flex}.ts-wrapper.plugin-remove_button .item .remove{border-radius:0 2px 2px 0;box-sizing:border-box;color:inherit;display:inline-block;padding:0 6px;text-decoration:none;vertical-align:middle}.ts-wrapper.plugin-remove_button .item .remove:hover{background:rgba(0,0,0,.05)}.ts-wrapper.plugin-remove_button.disabled .item .remove:hover{background:none}.ts-wrapper.plugin-remove_button .remove-single{font-size:23px;position:absolute;right:0;top:0}.ts-wrapper.plugin-remove_button:not(.rtl) .item{padding-right:0!important}.ts-wrapper.plugin-remove_button:not(.rtl) .item .remove{border-left:1px solid #d0d0d0;margin-left:6px}.ts-wrapper.plugin-remove_button:not(.rtl) .item.active .remove{border-left-color:#cacaca}.ts-wrapper.plugin-remove_button:not(.rtl).disabled .item .remove{border-left-color:#fff}.ts-wrapper.plugin-remove_button.rtl .item{padding-left:0!important}.ts-wrapper.plugin-remove_button.rtl .item .remove{border-right:1px solid #d0d0d0;margin-right:6px}.ts-wrapper.plugin-remove_button.rtl .item.active .remove{border-right-color:#cacaca}.ts-wrapper.plugin-remove_button.rtl.disabled .item .remove{border-right-color:#fff}:root{--ts-pr-clear-button:0px;--ts-pr-caret:0px;--ts-pr-min:.75rem}.ts-wrapper.single .ts-control,.ts-wrapper.single .ts-control input{cursor:pointer}.ts-control:not(.rtl){padding-right:max(var(--ts-pr-min),var(--ts-pr-clear-button) + var(--ts-pr-caret))!important}.ts-control.rtl{padding-left:max(var(--ts-pr-min),var(--ts-pr-clear-button) + var(--ts-pr-caret))!important}.ts-wrapper{position:relative}.ts-control,.ts-control input,.ts-dropdown{color:#303030;font-family:inherit;font-size:inherit;line-height:13px}.ts-control,.ts-wrapper.single.input-active .ts-control{background:var(--form-bg);cursor:text}.ts-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.cfg-tags-widget{margin-bottom:3px;margin-top:3px}.cfg-tags-widget__all{display:flex;flex-wrap:wrap;gap:3px;margin-bottom:3px}.cfg-tags-widget__tag{background:var(--form-button) url(/bundles/codefogtags/images/add.a31d1889.svg) no-repeat 6px center;border:1px solid var(--form-border);border-radius:var(--border-radius);box-sizing:border-box;cursor:pointer;display:block;font-size:13px;padding:5px 10px 5px 25px;transition:background .2s ease}html[data-color-scheme=dark] .cfg-tags-widget__tag{background-image:url(/bundles/codefogtags/images/add--dark.642bad3d.svg)}.cfg-tags-widget__tag:hover{background-color:var(--form-button-hover);color:inherit}.cfg-tags-widget__tag:active{color:var(--form-button-active)}.cfg-tags-widget__remove{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;background-image:var(--choices-icon-cross,url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMSIgaGVpZ2h0PSIyMSI+PGcgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=));background-position:50%;background-repeat:no-repeat;background-size:var(--choices-button-dimension,8px);border:0;border-left:1px solid var(--choices-border);border-radius:var(--choices-button-border-radius,0);cursor:pointer;display:inline-block;line-height:var(--choices-button-line-height,1);margin:0 calc(var(--choices-button-offset,8px)*-.5) 0 var(--choices-button-offset,8px);opacity:var(--choices-button-opacity,.75);padding-bottom:2px;padding-left:calc(var(--choices-button-offset,8px)*2);position:relative;text-indent:-9999px;width:var(--choices-button-dimension,8px)}html:not([data-color-scheme=dark]) .cfg-tags-widget__remove{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMSIgaGVpZ2h0PSIyMSI+PGcgZmlsbD0iIzIyMiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=)}.cfg-tags-widget__remove:is(:hover,:focus){--choices-button-opacity:var(--choices-button-opacity-hover,1)}.cfg-tags-widget__remove:focus{box-shadow:0 0 0 2px var(--choices-highlight-color,#005f75)}.cfg-tags-widget .ts-wrapper.dropdown-active .ts-control{border-radius:var(--choices-border-radius,2.5px) var(--choices-border-radius,2.5px) 0 0}.cfg-tags-widget .ts-wrapper.multi.has-items .ts-control{padding-left:3px}.cfg-tags-widget .ts-wrapper.multi.has-items .ts-control input{margin:-3px 4px 0!important}.cfg-tags-widget .ts-wrapper .ts-control>div{background-color:var(--choices-bg);border:1px solid var(--choices-border);border-radius:3px;color:var(--choices-item-color,#fff);cursor:auto;margin:0 3px 3px 0;padding:1px 5px 1px 6px}.cfg-tags-widget .ts-wrapper .ts-control input{color:var(--text)}.cfg-tags-widget .ts-wrapper .create{background-image:url(/bundles/codefogtags/images/add.a31d1889.svg);background-position:6px;background-repeat:no-repeat;padding-left:25px!important}.cfg-tags-widget .ts-wrapper .create.active,html[data-color-scheme=dark] .cfg-tags-widget .ts-wrapper .create{background-image:url(/bundles/codefogtags/images/add--dark.642bad3d.svg)}.cfg-tags-widget .ts-dropdown{border:1px solid var(--choices-keyline-color,#ddd);border-radius:0 0 var(--choices-border-radius,2.5px) var(--choices-border-radius,2.5px);box-shadow:none;margin-top:-1px;overflow:hidden}.cfg-tags-widget .ts-dropdown *{font-size:13px}.cfg-tags-widget .ts-dropdown .no-results,.cfg-tags-widget .ts-dropdown [data-selectable].option{color:var(--text)}.cfg-tags-widget .ts-dropdown [data-selectable].active{color:#fff}.cfg-tags-widget .ts-dropdown [data-selectable] .highlight{background-color:var(--orange);color:#fff} -/*# sourceMappingURL=tags-widget.c2ea0e46.css.map*/ \ No newline at end of file +.ts-control{border:1px solid var(--form-border);border-radius:var(--border-radius);box-shadow:none;box-sizing:border-box;display:flex;flex-wrap:wrap;overflow:hidden;padding:5px 6px;position:relative;width:100%;z-index:1}.ts-wrapper.multi.has-items .ts-control{padding:3px 6px 0}.full .ts-control{background-color:var(--form-bg)}.disabled .ts-control,.disabled .ts-control *{cursor:default!important}.focus .ts-control{box-shadow:none}.ts-control>*{display:inline-block;vertical-align:baseline}.ts-wrapper.multi .ts-control>div{background:#f2f2f2;border:0 solid #d0d0d0;color:#303030;cursor:pointer;margin:0 3px 3px 0;overflow:auto;padding:2px 6px}.ts-wrapper.multi .ts-control>div.active{background:#e8e8e8;border:0 solid #cacaca;color:#303030}.ts-wrapper.multi.disabled .ts-control>div,.ts-wrapper.multi.disabled .ts-control>div.active{background:#fff;border:0 solid #fff;color:#7d7d7d}.ts-control>input{background:none!important;border:0!important;box-shadow:none!important;display:inline-block!important;flex:1 1 auto;line-height:inherit!important;margin:0!important;max-height:none!important;max-width:100%!important;min-height:0!important;min-width:7rem;padding:0!important;text-indent:0!important;-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.ts-control>input::-ms-clear{display:none}.ts-control>input:focus{outline:none!important}.has-items .ts-control>input{margin:0 4px!important}.ts-control.rtl{text-align:right}.ts-control.rtl.single .ts-control:after{left:15px;right:auto}.ts-control.rtl .ts-control>input{margin:0 4px 0 -2px!important}.disabled .ts-control{background-color:#fafafa;opacity:.5}.input-hidden .ts-control>input{left:-10000px;opacity:0;position:absolute}.ts-dropdown{background:var(--choices-bg-color-dropdown,#fff);border:1px solid var(--form-border);border-radius:0 0 var(--border-radius) var(--border-radius);border-top:0;box-shadow:0 1px 3px rgba(0,0,0,.1);box-sizing:border-box;left:0;margin:.25rem 0 0;position:absolute;top:100%;width:100%;z-index:10}.ts-dropdown [data-selectable]{cursor:pointer;overflow:hidden}.ts-dropdown [data-selectable] .highlight{background:rgba(125,168,208,.2);border-radius:1px}.ts-dropdown .create,.ts-dropdown .no-results,.ts-dropdown .optgroup-header,.ts-dropdown .option{padding:3px 6px}.ts-dropdown .option,.ts-dropdown [data-disabled],.ts-dropdown [data-disabled] [data-selectable].option{cursor:inherit;opacity:.5}.ts-dropdown [data-selectable].option{cursor:pointer;opacity:1}.ts-dropdown .optgroup:first-child .optgroup-header{border-top:0}.ts-dropdown .optgroup-header{background:var(--choices-bg-color-dropdown,#fff);color:#303030;cursor:default}.ts-dropdown .active{background-color:var(--choices-highlighted);color:#fff}.ts-dropdown .active.create{color:#fff}.ts-dropdown .create{color:var(--text)}.ts-dropdown .spinner{display:inline-block;height:30px;margin:3px 6px;width:30px}.ts-dropdown .spinner:after{animation:lds-dual-ring 1.2s linear infinite;border:5px solid var(--form-border);border-color:var(--form-border) transparent var(--form-border) transparent;border-radius:50%;content:" ";display:block;height:24px;margin:3px;width:24px}@keyframes lds-dual-ring{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.ts-dropdown-content{max-height:300px;overflow:hidden auto;scroll-behavior:smooth}.ts-wrapper.plugin-drag_drop .ts-dragging{color:transparent!important}.ts-wrapper.plugin-drag_drop .ts-dragging>*{visibility:hidden!important}.plugin-checkbox_options:not(.rtl) .option input{margin-right:.5rem}.plugin-checkbox_options.rtl .option input{margin-left:.5rem}.plugin-clear_button{--ts-pr-clear-button:1em}.plugin-clear_button .clear-button{background:transparent!important;cursor:pointer;margin-right:0!important;opacity:0;position:absolute;right:0;top:50%;transform:translateY(-50%);transition:opacity .5s}.plugin-clear_button.form-select .clear-button,.plugin-clear_button.single .clear-button{right:max(var(--ts-pr-caret),6px)}.plugin-clear_button.focus.has-items .clear-button,.plugin-clear_button:not(.disabled):hover.has-items .clear-button{opacity:1}.ts-wrapper .dropdown-header{background:color-mix(var(--choices-bg-color-dropdown,#fff),var(--form-border),85%);border-bottom:1px solid var(--form-border);border-radius:var(--border-radius) var(--border-radius) 0 0;padding:6px;position:relative}.ts-wrapper .dropdown-header-close{color:#303030;font-size:20px!important;line-height:20px;margin-top:-12px;opacity:.4;position:absolute;right:6px;top:50%}.ts-wrapper .dropdown-header-close:hover{color:#000}.plugin-dropdown_input .dropdown-input,.plugin-dropdown_input.focus.dropdown-active .ts-control{border:1px solid var(--form-border);box-shadow:none}.plugin-dropdown_input .dropdown-input{background:transparent;border-width:0 0 1px;display:block;padding:5px 6px;width:100%}.plugin-dropdown_input .items-placeholder{border:0!important;box-shadow:none!important;width:100%}.plugin-dropdown_input.dropdown-active .items-placeholder,.plugin-dropdown_input.has-items .items-placeholder{display:none!important}.ts-wrapper.plugin-input_autogrow.has-items .ts-control>input{min-width:0}.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control>input{flex:none;min-width:4px}.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control>input::-moz-placeholder{color:transparent}.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control>input::placeholder{color:transparent}.ts-dropdown.plugin-optgroup_columns .ts-dropdown-content{display:flex}.ts-dropdown.plugin-optgroup_columns .optgroup{border-right:1px solid #f2f2f2;border-top:0;flex-basis:0;flex-grow:1;min-width:0}.ts-dropdown.plugin-optgroup_columns .optgroup:last-child{border-right:0}.ts-dropdown.plugin-optgroup_columns .optgroup:before{display:none}.ts-dropdown.plugin-optgroup_columns .optgroup-header{border-top:0}.ts-wrapper.plugin-remove_button .item{align-items:center;display:inline-flex}.ts-wrapper.plugin-remove_button .item .remove{border-radius:0 2px 2px 0;box-sizing:border-box;color:inherit;display:inline-block;padding:0 6px;text-decoration:none;vertical-align:middle}.ts-wrapper.plugin-remove_button .item .remove:hover{background:rgba(0,0,0,.05)}.ts-wrapper.plugin-remove_button.disabled .item .remove:hover{background:none}.ts-wrapper.plugin-remove_button .remove-single{font-size:23px;position:absolute;right:0;top:0}.ts-wrapper.plugin-remove_button:not(.rtl) .item{padding-right:0!important}.ts-wrapper.plugin-remove_button:not(.rtl) .item .remove{border-left:1px solid #d0d0d0;margin-left:6px}.ts-wrapper.plugin-remove_button:not(.rtl) .item.active .remove{border-left-color:#cacaca}.ts-wrapper.plugin-remove_button:not(.rtl).disabled .item .remove{border-left-color:#fff}.ts-wrapper.plugin-remove_button.rtl .item{padding-left:0!important}.ts-wrapper.plugin-remove_button.rtl .item .remove{border-right:1px solid #d0d0d0;margin-right:6px}.ts-wrapper.plugin-remove_button.rtl .item.active .remove{border-right-color:#cacaca}.ts-wrapper.plugin-remove_button.rtl.disabled .item .remove{border-right-color:#fff}:root{--ts-pr-clear-button:0px;--ts-pr-caret:0px;--ts-pr-min:.75rem}.ts-wrapper.single .ts-control,.ts-wrapper.single .ts-control input{cursor:pointer}.ts-control:not(.rtl){padding-right:max(var(--ts-pr-min),var(--ts-pr-clear-button) + var(--ts-pr-caret))!important}.ts-control.rtl{padding-left:max(var(--ts-pr-min),var(--ts-pr-clear-button) + var(--ts-pr-caret))!important}.ts-wrapper{position:relative}.ts-control,.ts-control input,.ts-dropdown{color:#303030;font-family:inherit;font-size:inherit;line-height:13px}.ts-control,.ts-wrapper.single.input-active .ts-control{background:var(--form-bg);cursor:text}.ts-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.cfg-tags-widget{margin-bottom:3px;margin-top:3px}.cfg-tags-widget__all{margin-top:3px}.cfg-tags-widget__all-headline{font-size:.75rem;margin-bottom:5px;margin-top:5px}.cfg-tags-widget__all-items{display:flex;flex-wrap:wrap;gap:3px}.cfg-tags-widget__tag{background:transparent url(/bundles/codefogtags/images/add.a31d1889.svg) no-repeat 6px;border:1px solid var(--form-border);border-radius:var(--border-radius);box-sizing:border-box;cursor:pointer;display:block;font-size:13px;padding:5px 10px 5px 25px;transition:background .2s ease}html[data-color-scheme=dark] .cfg-tags-widget__tag{background-image:url(/bundles/codefogtags/images/add--dark.642bad3d.svg)}.cfg-tags-widget__tag:hover{background-color:var(--form-button-hover);color:inherit}.cfg-tags-widget__tag:active{color:var(--form-button-active)}.cfg-tags-widget__remove{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;background-image:var(--choices-icon-cross,url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMSIgaGVpZ2h0PSIyMSI+PGcgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=));background-position:50%;background-repeat:no-repeat;background-size:var(--choices-button-dimension,8px);border:0;border-left:1px solid var(--choices-border);border-radius:var(--choices-button-border-radius,0);cursor:pointer;display:inline-block;line-height:var(--choices-button-line-height,1);margin:0 calc(var(--choices-button-offset,8px)*-.5) 0 var(--choices-button-offset,8px);opacity:var(--choices-button-opacity,.75);padding-bottom:2px;padding-left:calc(var(--choices-button-offset,8px)*2);position:relative;text-indent:-9999px;width:var(--choices-button-dimension,8px)}html:not([data-color-scheme=dark]) .cfg-tags-widget__remove{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMSIgaGVpZ2h0PSIyMSI+PGcgZmlsbD0iIzIyMiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=)}.cfg-tags-widget__remove:is(:hover,:focus){--choices-button-opacity:var(--choices-button-opacity-hover,1)}.cfg-tags-widget__remove:focus{box-shadow:0 0 0 2px var(--choices-highlight-color,#005f75)}.cfg-tags-widget .ts-wrapper.dropdown-active .ts-control{border-radius:var(--choices-border-radius,2.5px) var(--choices-border-radius,2.5px) 0 0}.cfg-tags-widget .ts-wrapper.multi.has-items .ts-control{padding-left:3px}.cfg-tags-widget .ts-wrapper.multi.has-items .ts-control input{margin:-3px 4px 0!important}.cfg-tags-widget .ts-wrapper .ts-control>div{background-color:var(--choices-bg);border:1px solid var(--choices-border);border-radius:3px;color:var(--choices-item-color,#fff);cursor:auto;margin:0 3px 3px 0;padding:1px 5px 1px 6px}.cfg-tags-widget .ts-wrapper .ts-control input{color:var(--text)}.cfg-tags-widget .ts-wrapper .create{background-image:url(/bundles/codefogtags/images/add.a31d1889.svg);background-position:6px;background-repeat:no-repeat;padding-left:25px!important}.cfg-tags-widget .ts-wrapper .create.active,html[data-color-scheme=dark] .cfg-tags-widget .ts-wrapper .create{background-image:url(/bundles/codefogtags/images/add--dark.642bad3d.svg)}.cfg-tags-widget .ts-dropdown{border:1px solid var(--choices-keyline-color,#ddd);border-radius:0 0 var(--choices-border-radius,2.5px) var(--choices-border-radius,2.5px);box-shadow:none;margin-top:-1px;overflow:hidden}.cfg-tags-widget .ts-dropdown *{font-size:13px}.cfg-tags-widget .ts-dropdown .no-results,.cfg-tags-widget .ts-dropdown [data-selectable].option{color:var(--text)}.cfg-tags-widget .ts-dropdown [data-selectable].active{color:#fff}.cfg-tags-widget .ts-dropdown [data-selectable] .highlight{background-color:var(--orange);color:#fff} +/*# sourceMappingURL=tags-widget.f1a58ca1.css.map*/ \ No newline at end of file diff --git a/public/tags-widget.f1a58ca1.css.map b/public/tags-widget.f1a58ca1.css.map new file mode 100644 index 0000000..44c7598 --- /dev/null +++ b/public/tags-widget.f1a58ca1.css.map @@ -0,0 +1 @@ +{"version":3,"file":"tags-widget.f1a58ca1.css","mappings":"AAAA,YACC,mCC+CuB,CDvCvB,kCETsB,CFQtB,eCqC2B,CDtC3B,sBAGA,aACA,eAPA,gBAFA,gBAGA,kBAFA,WAGA,SEoBD,CFbC,wCAKC,iBEWF,CFRC,kBACC,+BEUF,CFPC,8CAEC,wBEQF,CFLC,mBACC,eEOF,CFJC,cAEC,qBADA,uBEOF,CFHC,kCAIC,kBCjByB,CDmBzB,uBADA,aCxByB,CDoBzB,eACA,mBAKA,cAJA,eESF,CFHE,yCACC,kBCpB6B,CDsB7B,uBADA,aEMH,CFAE,6FAEC,gBACA,oBAFA,aEIH,CFEC,kBAWC,0BADA,mBAIA,0BAXA,+BAFA,cAWA,8BAJA,mBAFA,0BACA,yBAFA,uBAHA,eAEA,oBAKA,wBAIA,6FECF,CFEE,6BACC,YEAH,CFGE,wBAAU,sBEAZ,CFGC,6BACC,sBEDF,CFIC,gBACC,gBEFF,CFGE,yCACC,SC9ByB,CD+BzB,UEDH,CFGE,kCACC,6BEDH,CFKC,sBAEC,wBC9E4B,CD6E5B,UEFF,CFQC,gCAGC,cAFA,UACA,iBELF,CCzGA,aAOC,gDDFuB,CCIvB,oCAGA,4DAHA,aAEA,oCADA,sBAPA,OAKA,kBAPA,kBACA,SAEA,WACA,UDmHD,CC1GC,+BACC,eACA,eD4GF,CC1GE,0CACC,+BFG2B,CEF3B,iBD4GH,CCxGC,iGAIC,eD0GF,CCvGC,wGACC,eACA,UDyGF,CCtGC,sCAEC,eADA,SDyGF,CCrGC,oDACC,YDuGF,CCpGC,8BAEC,gDD1CsB,CCyCtB,aF1ByB,CE4BzB,cDsGF,CCnGC,qBACC,2CDjDkC,CCkDlC,UDqGF,CCnGE,4BACC,UDqGH,CCjGC,qBACC,iBDmGF,CChGC,sBACC,qBAEA,WFD0B,CEE1B,eAFA,UDoGF,CC/FE,4BASC,6CAFA,oCACA,2EAFA,kBALA,YACA,cAEA,YACA,WAFA,UDuGH,CC/FE,yBACC,GACC,sBDiGF,CC9FC,GACC,uBDgGF,CACF,CC3FA,qBAEC,gBDvF4B,CCsF5B,qBAEA,sBD8FD,CE9LC,0CACC,2BFiMF,CE9LC,4CACC,2BFgMF,CGrMC,iDACC,kBHwMF,CGnMC,2CACC,iBHsMF,CI5MA,qBACC,wBJgND,CI9MC,mCAOC,iCAEA,eAHA,yBALA,UACA,kBAGA,QAFA,QACA,2BAIA,sBJiNF,CI7MC,yFAIE,iCJ4MH,CIrMC,qHAEC,SJsMF,CKnOC,6BAIC,mFADA,2CAEA,4DAHA,YADA,iBL0OF,CKnOC,mCAIC,aNOyB,CMHzB,yBADA,iBADA,iBADA,WAJA,kBACA,SLD+B,CKE/B,OL0OF,CKlOC,yCACC,ULoOF,CM/OC,gGANC,mCP4CsB,CO7CtB,eNoQF,CM7PC,uCAOC,uBALA,qBACA,cACA,gBAEA,UNuPF,CMvOC,0CACC,mBACA,0BACA,UNyOF,CMtOC,8GAEC,sBNuOF,CO7QC,8DACC,WPgRF,CO7QC,oEACC,UACA,aP+QF,CO7QE,sFACC,iBP+QH,COhRE,iFACC,iBP+QH,CQzRC,0DACC,YR4RF,CQzRC,+CACC,+BACA,aAEA,aADA,YAEA,WR2RF,CQxRC,0DACC,cR0RF,CQvRC,sDACC,YRyRF,CQtRC,sDACC,YRwRF,CS7SC,uCAEC,mBADA,mBTiTF,CS7SC,+CAMC,0BACA,sBANA,cAGA,qBACA,cAHA,qBACA,qBTmTF,CS5SC,qDACC,0BT8SF,CS3SC,8DACC,eT6SF,CSzSC,gDAIC,eAHA,kBACA,QACA,KT4SF,CStSC,iDACC,yBTySF,CStSC,yDACC,8BACA,eTwSF,CSrSC,gEACC,yBTuSF,CSpSC,kEACC,sBTsSF,CSjSC,2CACC,wBToSF,CSjSC,mDACC,+BACA,gBTmSF,CShSC,0DACC,0BTkSF,CS/RC,4DACC,uBTiSF,CDlRA,MACC,yBACA,kBACA,kBCqRD,CD1QE,oEACC,cC6QH,CDxQA,sBACC,4FC2QD,CDxQA,gBACC,2FC2QD,CDhOA,YACC,iBCmOD,CDhOA,2CAGC,aAzI0B,CA0I1B,mBA7I0B,CA8I1B,iBCxJkB,CDyJlB,gBCmOD,CDhOA,wDAEC,yBC/JoB,CDgKpB,WCmOD,CDhOA,sBACC,mBACA,6BACA,+BACA,0BACA,oBACA,4BAEA,6BADA,mBCoOD,CAnYA,iBAEI,kBADA,cAuYJ,CApYI,sBACI,cAsYR,CApYQ,+BAGI,iBAFA,kBACA,cAuYZ,CAnYQ,4BACI,aACA,eACA,OAqYZ,CAjYI,sBAGI,sFACA,oCACA,mCACA,sBAEA,eAPA,cAMA,eALA,0BAOA,+BAEA,oDACI,wEAGJ,6BAEI,yCAGJ,4CACI,+BA0BJ,sEAZA,6CACA,uXAPA,wGAcA,CAbA,oDACA,oDAeA,eAlBA,qEAqBA,uFAIA,0CACI,yEAGJ,kBACI,8DAKJ,6DACI,4VAgBI,4CAEA,8DAJA,gCAQJ,2DAKJ,0DAEI,uFADA,0DAKA,gFAEI,yEAKZ,kCAEI,uCACA,sFACA,wBACA,gDAGI,iBAQA,wGACI,wBAGJ,wDAIA,+GAyWZ","sources":["webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/_items.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/tom-select.scss","webpack://@codefog/contao-tags-bundle/./assets/tags-widget.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/_dropdown.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/drag_drop.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/checkbox_options.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/clear_button.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/dropdown_header.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/dropdown_input.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/input_autogrow.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/optgroup_columns.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/remove_button.scss"],"sourcesContent":[".#{$select-ns}-control {\n\tborder: $select-border;\n\tpadding: $select-padding-y $select-padding-x;\n\twidth: 100%;\n\toverflow: hidden;\n\tposition: relative;\n\tz-index: 1;\n\tbox-sizing: border-box;\n\tbox-shadow: $select-shadow-input;\n\tborder-radius: $select-border-radius;\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\n\t.#{$select-ns}-wrapper.multi.has-items & {\n\t\t$padding-x: $select-padding-x;\n\t\t$padding-top: calc( #{$select-padding-y} - #{$select-padding-item-y} - #{$select-width-item-border});\n\t\t$padding-bottom: calc( #{$select-padding-y} - #{$select-padding-item-y} - #{$select-margin-item-y} - #{$select-width-item-border});\n\n\t\tpadding: $padding-top $padding-x $padding-bottom;\n\t}\n\n\t.full & {\n\t\tbackground-color: $select-color-input-full;\n\t}\n\n\t.disabled &,\n\t.disabled & * {\n\t\tcursor: default !important;\n\t}\n\n\t.focus & {\n\t\tbox-shadow: $select-shadow-input-focus;\n\t}\n\n\t> * {\n\t\tvertical-align: baseline;\n\t\tdisplay: inline-block;\n\t}\n\n\t.#{$select-ns}-wrapper.multi & > div {\n\t\tcursor: pointer;\n\t\tmargin: 0 $select-margin-item-x $select-margin-item-y 0;\n\t\tpadding: $select-padding-item-y $select-padding-item-x;\n\t\tbackground: $select-color-item;\n\t\tcolor: $select-color-item-text;\n\t\tborder: $select-width-item-border solid $select-color-item-border;\n\t\toverflow: auto;\n\n\t\t&.active {\n\t\t\tbackground: $select-color-item-active;\n\t\t\tcolor: $select-color-item-active-text;\n\t\t\tborder: $select-width-item-border solid $select-color-item-active-border;\n\t\t}\n\t}\n\n\t.#{$select-ns}-wrapper.multi.disabled & > div {\n\t\t&, &.active {\n\t\t\tcolor: lighten(desaturate($select-color-item-text, 100%), $select-lighten-disabled-item-text);\n\t\t\tbackground: lighten(desaturate($select-color-item, 100%), $select-lighten-disabled-item);\n\t\t\tborder: $select-width-item-border solid lighten(desaturate($select-color-item-border, 100%), $select-lighten-disabled-item-border);\n\t\t}\n\t}\n\n\t> input {\n\t\tflex: 1 1 auto;\n\t\tmin-width: 7rem;\n\t\tdisplay: inline-block !important;\n\t\tpadding: 0 !important;\n\t\tmin-height: 0 !important;\n\t\tmax-height: none !important;\n\t\tmax-width: 100% !important;\n\t\tmargin: 0 !important;\n\t\ttext-indent: 0 !important;\n\t\tborder: 0 none !important;\n\t\tbackground: none !important;\n\t\tline-height: inherit !important;\n\t\tuser-select: auto !important;\n\t\tbox-shadow: none !important;\n\n\t\t&::-ms-clear {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t&:focus { outline: none !important; }\n\t}\n\n\t.has-items & > input{\n\t\tmargin: $select-caret-margin !important;\n\t}\n\n\t&.rtl {\n\t\ttext-align: right;\n\t\t&.single .#{$select-ns}-control:after {\n\t\t\tleft: $select-arrow-offset;\n\t\t\tright: auto;\n\t\t}\n\t\t.#{$select-ns}-control > input {\n\t\t\tmargin: $select-caret-margin-rtl !important;\n\t\t}\n\t}\n\n\t.disabled & {\n\t\topacity: $select-opacity-disabled;\n\t\tbackground-color: $select-color-disabled;\n\t}\n\n\t// hide input, while retaining its focus, and maintain layout so users can still click on the space to bring the display back\n\t// visibility:hidden can prevent the input from receiving focus\n\t.input-hidden & > input {\n\t\topacity: 0;\n\t\tposition: absolute;\n\t\tleft: -10000px;\n\t}\n}\n","/**\n * tom-select.css (v2.5.2)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\n// base styles\n$select-ns:\t\t\t\t\t\t\t\t\t\t'ts' !default;\n$select-font-family:\t\t\t\t\t\t\tinherit !default;\n$select-font-size:\t\t\t\t\t\t\t\t13px !default;\n$select-line-height:\t\t\t\t\t\t\t18px !default;\n$select-color-text:\t\t\t\t\t\t\t\t#303030 !default;\n$select-color-border:\t\t\t\t\t\t\t#d0d0d0 !default;\n$select-color-highlight:\t\t\t\t\t\trgba(125, 168, 208, 20%) !default;\n$select-color-input:\t\t\t\t\t\t\t#fff !default;\n$select-color-input-full:\t\t\t\t\t\t$select-color-input !default;\n$select-color-disabled:\t\t\t\t\t\t\t#fafafa !default;\n$select-color-item:\t\t\t\t\t\t\t\t#f2f2f2 !default;\n$select-color-item-text:\t\t\t\t\t\t$select-color-text !default;\n$select-color-item-border:\t\t\t\t\t\t#d0d0d0 !default;\n$select-color-item-active:\t\t\t\t\t\t#e8e8e8 !default;\n$select-color-item-active-text:\t\t\t\t\t$select-color-text !default;\n$select-color-item-active-border:\t\t\t\t#cacaca !default;\n$select-color-dropdown:\t\t\t\t\t\t\t#fff !default;\n$select-color-dropdown-border:\t\t\t\t\t$select-color-border !default;\n$select-color-dropdown-border-top:\t\t\t\t#f0f0f0 !default;\n$select-color-dropdown-item-active:\t\t\t\t#f5fafd !default;\n$select-color-dropdown-item-active-text:\t\t#495c68 !default;\n$select-color-dropdown-item-create-text:\t\trgba(red($select-color-text), green($select-color-text), blue($select-color-text), 50%) !default;\n$select-color-dropdown-item-create-active-text:\t$select-color-dropdown-item-active-text !default;\n$select-color-optgroup:\t\t\t\t\t\t\t$select-color-dropdown !default;\n$select-color-optgroup-text:\t\t\t\t\t$select-color-text !default;\n$select-lighten-disabled-item:\t\t\t\t\t30% !default;\n$select-lighten-disabled-item-text:\t\t\t\t30% !default;\n$select-lighten-disabled-item-border:\t\t\t30% !default;\n$select-opacity-disabled:\t\t\t\t\t\t0.5 !default;\n$select-shadow-input:\t\t\t\t\t\t\tnone !default;\n$select-shadow-input-focus:\t\t\t\t\t\tnone !default;\n$select-border-width:\t\t\t\t\t\t\t1px !default;\n$select-border:\t\t\t\t\t\t\t\t\t$select-border-width solid $select-color-border !default;\n$select-dropdown-border:\t\t\t\t\t\t1px solid $select-color-dropdown-border !default;\n$select-border-radius:\t\t\t\t\t\t\t3px !default;\n$select-width-item-border:\t\t\t\t\t\t0px !default;\n$select-max-height-dropdown:\t\t\t\t\t200px !default;\n$select-padding-x:\t\t\t\t\t\t\t\t8px !default;\n$select-padding-y:\t\t\t\t\t\t\t\t8px !default;\n$select-padding-item-x:\t\t\t\t\t\t\t6px !default;\n$select-padding-item-y:\t\t\t\t\t\t\t2px !default;\n$select-padding-dropdown-item-x:\t\t\t\t$select-padding-x !default;\n$select-padding-dropdown-item-y:\t\t\t\t5px !default;\n$select-margin-item-x:\t\t\t\t\t\t\t3px !default;\n$select-margin-item-y:\t\t\t\t\t\t\t3px !default;\n$select-arrow-size:\t\t\t\t\t\t\t\t5px !default;\n$select-arrow-color:\t\t\t\t\t\t\t#808080 !default;\n$select-arrow-offset:\t\t\t\t\t\t\t15px !default;\n$select-caret-margin:\t\t\t\t\t\t\t0px 4px !default;\n$select-caret-margin-rtl:\t\t\t\t\t\t0px 4px 0px -2px !default;\n$select-spinner-size:\t\t\t\t\t\t\t30px !default;\n$select-spinner-border-size:\t\t\t\t\t5px !default;\n$select-spinner-border-color:\t\t\t\t\t$select-color-border !default;\n\n@import 'items';\n@import 'dropdown';\n\n@import \"./plugins/drag_drop.scss\";\n@import \"./plugins/checkbox_options.scss\";\n@import \"./plugins/clear_button.scss\";\n@import \"./plugins/dropdown_header.scss\";\n@import \"./plugins/dropdown_input.scss\";\n@import \"./plugins/input_autogrow.scss\";\n@import \"./plugins/optgroup_columns.scss\";\n@import \"./plugins/remove_button.scss\";\n\n:root {\n\t--ts-pr-clear-button: 0px;\n\t--ts-pr-caret: 0px;\n\t--ts-pr-min: .75rem;\n}\n\n@mixin selectize-vertical-gradient($color-top, $color-bottom) {\n background-color: color-mix($color-top, $color-bottom, 60%);\n background-image: linear-gradient(to bottom, $color-top, $color-bottom);\n background-repeat: repeat-x;\n}\n\n.#{$select-ns}-wrapper.single {\n\t.#{$select-ns}-control {\n\t\t&, input {\n\t\t\tcursor: pointer;\n\t\t}\n\t}\n}\n\n.#{$select-ns}-control:not(.rtl) {\n\tpadding-right:\tmax( var(--ts-pr-min), calc( var(--ts-pr-clear-button) + var(--ts-pr-caret)) ) !important;\n}\n\n.#{$select-ns}-control.rtl {\n\tpadding-left:\tmax( var(--ts-pr-min), calc( var(--ts-pr-clear-button) + var(--ts-pr-caret)) ) !important;\n}\n\n@mixin ts-caret() {\n\t.#{$select-ns}-wrapper.single {\n\t\t.#{$select-ns}-control {\n\t\t\t--ts-pr-caret: 2rem;\n\n\t\t\t&::after {\n\t\t\t\tcontent: ' ';\n\t\t\t\tdisplay: block;\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 50%;\n\t\t\t\tmargin-top: round(-0.5 * $select-arrow-size);\n\t\t\t\twidth: 0;\n\t\t\t\theight: 0;\n\t\t\t\tborder-style: solid;\n\t\t\t\tborder-width: $select-arrow-size $select-arrow-size 0 $select-arrow-size;\n\t\t\t\tborder-color: $select-arrow-color transparent transparent transparent;\n\t\t\t}\n\t\t\t\n\t\t\t&:not(.rtl)::after {\n\t\t\t\tright: $select-arrow-offset;\n\t\t\t}\n\t\t\t\n\t\t\t&.rtl::after {\n\t\t\t\tleft: $select-arrow-offset;\n\t\t\t}\n\t\t}\n\n\t\t&.dropdown-active .#{$select-ns}-control::after {\n\t\t\tmargin-top: $select-arrow-size * -0.8;\n\t\t\tborder-width: 0 $select-arrow-size $select-arrow-size $select-arrow-size;\n\t\t\tborder-color: transparent transparent $select-arrow-color transparent;\n\t\t}\n\n\t\t&.input-active .#{$select-ns}-control,\n\t\t&.input-active .#{$select-ns}-control input {\n\t\t\tcursor: text;\n\t\t}\n\t}\n}\n\n.#{$select-ns}-wrapper {\n\tposition: relative;\n}\n\n.#{$select-ns}-dropdown,\n.#{$select-ns}-control,\n.#{$select-ns}-control input {\n\tcolor: $select-color-text;\n\tfont-family: $select-font-family;\n\tfont-size: $select-font-size;\n\tline-height: $select-line-height;\n}\n\n.#{$select-ns}-control,\n.#{$select-ns}-wrapper.single.input-active .#{$select-ns}-control {\n\tbackground: $select-color-input;\n\tcursor: text;\n}\n\n.ts-hidden-accessible {\n\tborder: 0 !important;\n\tclip: rect(0 0 0 0) !important;\n\tclip-path: inset(50%) !important;\n\toverflow: hidden !important;\n\tpadding: 0 !important;\n\tposition: absolute !important;\n\twidth: 1px !important;\n\twhite-space: nowrap !important;\n}\n","$select-border-radius: var(--border-radius);\n$select-color-border: var(--form-border);\n$select-color-dropdown-item-active-text: #fff;\n$select-color-dropdown-item-active: var(--choices-highlighted);\n$select-color-dropdown-item-create-text: var(--text);\n$select-color-dropdown: var(--choices-bg-color-dropdown, #fff);\n$select-color-input: var(--form-bg);\n$select-font-size: inherit;\n$select-line-height: 13px;\n$select-max-height-dropdown: 300px;\n$select-padding-dropdown-item-x: 6px;\n$select-padding-dropdown-item-y: 3px;\n$select-padding-x: 6px;\n$select-padding-y: 5px;\n\n@import '~tom-select/dist/scss/tom-select';\n\n.cfg-tags-widget {\n margin-top: 3px;\n margin-bottom: 3px;\n\n &__all {\n margin-top: 3px;\n\n &-headline {\n margin-bottom: 5px;\n margin-top: 5px;\n font-size: .75rem;\n }\n\n &-items {\n display: flex;\n flex-wrap: wrap;\n gap: 3px;\n }\n }\n\n &__tag {\n display: block;\n padding: 5px 10px 5px 25px;\n background: transparent url('./add.svg') no-repeat 6px center;\n border: 1px solid var(--form-border);\n border-radius: var(--border-radius);\n box-sizing: border-box;\n font-size: 13px;\n cursor: pointer;\n transition: background 0.2s ease;\n\n html[data-color-scheme='dark'] & {\n background-image: url('./add--dark.svg');\n }\n\n &:hover {\n color: inherit;\n background-color: var(--form-button-hover);\n }\n\n &:active {\n color: var(--form-button-active);\n }\n }\n\n &__remove {\n position: relative;\n display: inline-block;\n width: var(--choices-button-dimension, 8px);\n margin: 0 calc(var(--choices-button-offset, 8px) * -0.5) 0 var(--choices-button-offset, 8px);\n padding-bottom: 2px;\n padding-left: calc(var(--choices-button-offset, 8px) * 2);\n border: 0;\n border-left: 1px solid var(--choices-border);\n border-radius: var(--choices-button-border-radius, 0);\n background-color: transparent;\n background-image: var(\n --choices-icon-cross,\n url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==')\n );\n background-position: center;\n background-repeat: no-repeat;\n background-size: var(--choices-button-dimension, 8px);\n opacity: var(--choices-button-opacity, 0.75);\n cursor: pointer;\n line-height: var(--choices-button-line-height, 1);\n text-indent: -9999px;\n appearance: none;\n\n html:not([data-color-scheme='dark']) & {\n background-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjMjIyIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==');\n }\n\n &:is(:hover, :focus) {\n --choices-button-opacity: var(--choices-button-opacity-hover, 1);\n }\n\n &:focus {\n box-shadow: 0 0 0 2px var(--choices-highlight-color, #005f75);\n }\n }\n\n .ts-wrapper {\n &.dropdown-active .ts-control {\n border-radius: var(--choices-border-radius, 2.5px) var(--choices-border-radius, 2.5px) 0 0;\n }\n\n &.multi.has-items .ts-control {\n padding-left: 3px;\n\n input {\n margin: -3px 4px 0 !important;\n }\n }\n\n .ts-control {\n > div {\n margin: 0 3px 3px 0;\n padding: 1px 5px 1px 6px;\n background-color: var(--choices-bg);\n border: 1px solid var(--choices-border);\n border-radius: 3px;\n color: var(--choices-item-color, #fff);\n cursor: auto;\n }\n\n input {\n color: var(--text);\n }\n }\n\n .create {\n padding-left: 25px !important;\n background-image: url('./add.svg');\n background-repeat: no-repeat;\n background-position: 6px center;\n\n &.active,\n html[data-color-scheme='dark'] & {\n background-image: url('./add--dark.svg');\n }\n }\n }\n\n .ts-dropdown {\n margin-top: -1px;\n border: 1px solid var(--choices-keyline-color, #ddd);\n border-radius: 0 0 var(--choices-border-radius, 2.5px) var(--choices-border-radius, 2.5px);\n box-shadow: none;\n overflow: hidden;\n\n * {\n font-size: 13px;\n }\n\n .no-results {\n color: var(--text);\n }\n\n [data-selectable] {\n &.option {\n color: var(--text);\n }\n\n &.active {\n color: #fff;\n }\n\n .highlight {\n background-color: var(--orange);\n color: #fff;\n }\n }\n }\n}\n",".#{$select-ns}-dropdown {\n\tposition: absolute;\n\ttop: 100%;\n\tleft: 0;\n\twidth: 100%;\n\tz-index: 10;\n\tborder: $select-dropdown-border;\n\tbackground: $select-color-dropdown;\n\tmargin: 0.25rem 0 0;\n\tborder-top: 0 none;\n\tbox-sizing: border-box;\n\tbox-shadow: 0 1px 3px rgba(0, 0, 0, 10%);\n\tborder-radius: 0 0 $select-border-radius $select-border-radius;\n\n\t[data-selectable] {\n\t\tcursor: pointer;\n\t\toverflow: hidden;\n\n\t\t.highlight {\n\t\t\tbackground: $select-color-highlight;\n\t\t\tborder-radius: 1px;\n\t\t}\n\t}\n\n\t.option,\n\t.optgroup-header,\n\t.no-results,\n\t.create {\n\t\tpadding: $select-padding-dropdown-item-y $select-padding-dropdown-item-x;\n\t}\n\n\t.option, [data-disabled], [data-disabled] [data-selectable].option {\n\t\tcursor: inherit;\n\t\topacity: 0.5;\n\t}\n\n\t[data-selectable].option {\n\t\topacity: 1;\n\t\tcursor: pointer;\n\t}\n\n\t.optgroup:first-child .optgroup-header {\n\t\tborder-top: 0 none;\n\t}\n\n\t.optgroup-header {\n\t\tcolor: $select-color-optgroup-text;\n\t\tbackground: $select-color-optgroup;\n\t\tcursor: default;\n\t}\n\n\t.active {\n\t\tbackground-color: $select-color-dropdown-item-active;\n\t\tcolor: $select-color-dropdown-item-active-text;\n\n\t\t&.create {\n\t\t\tcolor: $select-color-dropdown-item-create-active-text;\n\t\t}\n\t}\n\n\t.create {\n\t\tcolor: $select-color-dropdown-item-create-text;\n\t}\n\n\t.spinner{\n\t\tdisplay: inline-block;\n\t\twidth: $select-spinner-size;\n\t\theight: $select-spinner-size;\n\t\tmargin: $select-padding-dropdown-item-y $select-padding-dropdown-item-x;\n\n\n\t\t&::after {\n\t\t\tcontent: \" \";\n\t\t\tdisplay: block;\n\t\t\twidth: $select-spinner-size * .8;\n\t\t\theight: $select-spinner-size * .8;\n\t\t\tmargin: $select-spinner-size * .1;\n\t\t\tborder-radius: 50%;\n\t\t\tborder: $select-spinner-border-size solid $select-spinner-border-color;\n\t\t\tborder-color: $select-spinner-border-color transparent $select-spinner-border-color transparent;\n\t\t\tanimation: lds-dual-ring 1.2s linear infinite;\n\t\t}\n\t\t@keyframes lds-dual-ring {\n\t\t\t0% {\n\t\t\t\ttransform: rotate(0deg);\n\t\t\t}\n\n\t\t\t100% {\n\t\t\t\ttransform: rotate(360deg);\n\t\t\t}\n\t\t}\n\t}\n}\n\n.#{$select-ns}-dropdown-content {\n\toverflow: hidden auto;\n\tmax-height: $select-max-height-dropdown;\n\tscroll-behavior: smooth;\n}\n",".#{$select-ns}-wrapper.plugin-drag_drop {\n\t.ts-dragging{\n\t\tcolor:transparent !important;\n\t}\n\t\t\n\t.ts-dragging > * {\n\t\tvisibility:hidden !important;\n\t}\n\n}\n",".plugin-checkbox_options:not(.rtl) {\n\t.option input {\n\t\tmargin-right: 0.5rem;\n\t}\n}\n\n.plugin-checkbox_options.rtl {\n\t.option input {\n\t\tmargin-left: 0.5rem;\n\t}\n}\n","/* stylelint-disable function-name-case */\n\n.plugin-clear_button {\n\t--ts-pr-clear-button: 1em;\n\n\t.clear-button{\n\t\topacity: 0;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\ttransform: translateY(-50%);\n\t\tright: calc(#{$select-padding-x} - #{$select-padding-item-x});\n\t\tmargin-right: 0 !important;\n\t\tbackground: transparent !important;\n\t\ttransition: opacity 0.5s;\n\t\tcursor: pointer;\n\t}\n\n\t&.form-select .clear-button,\n\t&.single .clear-button {\n\n\t\t@if variable-exists(select-padding-dropdown-item-x) {\n\t\t\tright: Max(var(--ts-pr-caret), #{$select-padding-dropdown-item-x});\n\t\t}\n\t\t@else{\n\t\t\tright: Max(var(--ts-pr-caret), calc(#{$select-padding-x} - #{$select-padding-item-x}));\n\t\t}\n\t}\n\n\t&.focus.has-items .clear-button,\n\t&:not(.disabled):hover.has-items .clear-button{\n\t\topacity: 1;\n\t}\n}\n",".#{$select-ns}-wrapper{\n\t.dropdown-header {\n\t\tposition: relative;\n\t\tpadding: ($select-padding-dropdown-item-y * 2) $select-padding-dropdown-item-x;\n\t\tborder-bottom: 1px solid $select-color-border;\n\t\tbackground: color-mix($select-color-dropdown, $select-color-border, 85%);\n\t\tborder-radius: $select-border-radius $select-border-radius 0 0;\n\t}\n\n\t.dropdown-header-close {\n\t\tposition: absolute;\n\t\tright: $select-padding-dropdown-item-x;\n\t\ttop: 50%;\n\t\tcolor: $select-color-text;\n\t\topacity: 0.4;\n\t\tmargin-top: -12px;\n\t\tline-height: 20px;\n\t\tfont-size: 20px !important;\n\t}\n\n\t.dropdown-header-close:hover {\n\t\tcolor: darken($select-color-text, 25%);\n\t}\n}\n",".plugin-dropdown_input{\n\n\t&.focus.dropdown-active .#{$select-ns}-control{\n\t\tbox-shadow: none;\n\t\tborder: $select-border;\n\t\t@if variable-exists(input-box-shadow) {\n\t\t\tbox-shadow: $input-box-shadow;\n\t\t}\n\t}\n\n\t.dropdown-input {\n\t\tborder: 1px solid $select-color-border;\n\t\tborder-width: 0 0 1px;\n\t\tdisplay: block;\n\t\tpadding: $select-padding-y $select-padding-x;\n\t\tbox-shadow: $select-shadow-input;\n\t\twidth: 100%;\n\t\tbackground: transparent;\n\t}\n\n\t&.focus .#{$select-ns}-dropdown .dropdown-input{\n\t\t@if variable-exists(input-focus-border-color) {\n\t\t\tborder-color: $input-focus-border-color;\n\t\t\toutline: 0;\n\t\t\t@if $enable-shadows {\n\t\t\t\tbox-shadow: $input-box-shadow, $input-focus-box-shadow;\n\t\t\t} @else {\n\t\t\t\tbox-shadow: $input-focus-box-shadow;\n\t\t\t}\n\t\t}\n\t}\n\n\t.items-placeholder{\n\t\tborder: 0 none !important;\n\t\tbox-shadow: none !important;\n\t\twidth: 100%;\n\t}\n\n\t&.has-items .items-placeholder,\n\t&.dropdown-active .items-placeholder{\n\t\tdisplay: none !important;\n\t}\n}\n",".#{$select-ns}-wrapper.plugin-input_autogrow{\n\n\t&.has-items .#{$select-ns}-control > input {\n\t\tmin-width: 0;\n\t}\n\t\n\t&.has-items.focus .#{$select-ns}-control > input {\n\t\tflex: none;\n\t\tmin-width: 4px;\n\n\t\t&::placeholder {\n\t\t\tcolor:transparent;\n\t\t}\n\t}\n}\n",".#{$select-ns}-dropdown.plugin-optgroup_columns {\n\t.ts-dropdown-content{\n\t\tdisplay: flex;\n\t}\n\n\t.optgroup {\n\t\tborder-right: 1px solid #f2f2f2;\n\t\tborder-top: 0 none;\n\t\tflex-grow: 1;\n\t\tflex-basis: 0;\n\t\tmin-width: 0;\n\t}\n\n\t.optgroup:last-child {\n\t\tborder-right: 0 none;\n\t}\n\n\t.optgroup::before {\n\t\tdisplay: none;\n\t}\n\n\t.optgroup-header {\n\t\tborder-top: 0 none;\n\t}\n}\n",".#{$select-ns}-wrapper.plugin-remove_button{\n\t.item {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t}\n\n\t.item .remove {\n\t\tcolor: inherit;\n\t\ttext-decoration: none;\n\t\tvertical-align: middle;\n\t\tdisplay: inline-block;\n\t\tpadding: 0 $select-padding-item-x;\n\t\tborder-radius: 0 2px 2px 0;\n\t\tbox-sizing: border-box;\n\t}\n\n\t.item .remove:hover {\n\t\tbackground: rgba(0, 0, 0, 5%);\n\t}\n\n\t&.disabled .item .remove:hover {\n\t\tbackground: none;\n\t}\n\n\n\t.remove-single {\n\t\tposition: absolute;\n\t\tright: 0;\n\t\ttop: 0;\n\t\tfont-size: 23px;\n\t}\n}\n\n.#{$select-ns}-wrapper.plugin-remove_button:not(.rtl){\n\t.item {\n\t\tpadding-right:\t0 !important;\n\t}\n\n\t.item .remove {\n\t\tborder-left: 1px solid $select-color-item-border;\n\t\tmargin-left: $select-padding-item-x;\n\t}\n\n\t.item.active .remove {\n\t\tborder-left-color: $select-color-item-active-border;\n\t}\n\n\t&.disabled .item .remove {\n\t\tborder-left-color: lighten(desaturate($select-color-item-border, 100%), $select-lighten-disabled-item-border);\n\t}\n}\n\n.#{$select-ns}-wrapper.plugin-remove_button.rtl {\n\t.item {\n\t\tpadding-left:\t0 !important;\n\t}\n\t\n\t.item .remove {\n\t\tborder-right: 1px solid $select-color-item-border;\n\t\tmargin-right: $select-padding-item-x;\n\t}\n\n\t.item.active .remove {\n\t\tborder-right-color: $select-color-item-active-border;\n\t}\n\n\t&.disabled .item .remove {\n\t\tborder-right-color: lighten(desaturate($select-color-item-border, 100%), $select-lighten-disabled-item-border);\n\t}\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/src/Widget/TagsWidget.php b/src/Widget/TagsWidget.php index d735253..6897628 100644 --- a/src/Widget/TagsWidget.php +++ b/src/Widget/TagsWidget.php @@ -89,7 +89,7 @@ protected function getPost($strKey) protected function generateConfig(): array { $config = [ - 'addLabel' => $GLOBALS['TL_LANG']['MSC']['cfg_tags.add'], + 'addLabel' => $GLOBALS['TL_LANG']['MSC']['cfg_tags_add'], 'removeLabel' => $GLOBALS['TL_LANG']['MSC']['removeItem'], 'noResultsLabel' => $GLOBALS['TL_LANG']['MSC']['noResults'], 'allowCreate' => isset($this->tagsCreate) ? (bool) $this->tagsCreate : true, From 1cb66c2af4447e3c6086e784ef771de183dce980 Mon Sep 17 00:00:00 2001 From: Kamil Kuzminski Date: Tue, 17 Mar 2026 12:52:53 +0100 Subject: [PATCH 28/28] Stylelint --- assets/tags-widget.scss | 2 +- public/tags-widget.f1a58ca1.css.map | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/tags-widget.scss b/assets/tags-widget.scss index a859a7b..3bb5db6 100644 --- a/assets/tags-widget.scss +++ b/assets/tags-widget.scss @@ -25,7 +25,7 @@ $select-padding-y: 5px; &-headline { margin-bottom: 5px; margin-top: 5px; - font-size: .75rem; + font-size: 0.75rem; } &-items { diff --git a/public/tags-widget.f1a58ca1.css.map b/public/tags-widget.f1a58ca1.css.map index 44c7598..6116395 100644 --- a/public/tags-widget.f1a58ca1.css.map +++ b/public/tags-widget.f1a58ca1.css.map @@ -1 +1 @@ -{"version":3,"file":"tags-widget.f1a58ca1.css","mappings":"AAAA,YACC,mCC+CuB,CDvCvB,kCETsB,CFQtB,eCqC2B,CDtC3B,sBAGA,aACA,eAPA,gBAFA,gBAGA,kBAFA,WAGA,SEoBD,CFbC,wCAKC,iBEWF,CFRC,kBACC,+BEUF,CFPC,8CAEC,wBEQF,CFLC,mBACC,eEOF,CFJC,cAEC,qBADA,uBEOF,CFHC,kCAIC,kBCjByB,CDmBzB,uBADA,aCxByB,CDoBzB,eACA,mBAKA,cAJA,eESF,CFHE,yCACC,kBCpB6B,CDsB7B,uBADA,aEMH,CFAE,6FAEC,gBACA,oBAFA,aEIH,CFEC,kBAWC,0BADA,mBAIA,0BAXA,+BAFA,cAWA,8BAJA,mBAFA,0BACA,yBAFA,uBAHA,eAEA,oBAKA,wBAIA,6FECF,CFEE,6BACC,YEAH,CFGE,wBAAU,sBEAZ,CFGC,6BACC,sBEDF,CFIC,gBACC,gBEFF,CFGE,yCACC,SC9ByB,CD+BzB,UEDH,CFGE,kCACC,6BEDH,CFKC,sBAEC,wBC9E4B,CD6E5B,UEFF,CFQC,gCAGC,cAFA,UACA,iBELF,CCzGA,aAOC,gDDFuB,CCIvB,oCAGA,4DAHA,aAEA,oCADA,sBAPA,OAKA,kBAPA,kBACA,SAEA,WACA,UDmHD,CC1GC,+BACC,eACA,eD4GF,CC1GE,0CACC,+BFG2B,CEF3B,iBD4GH,CCxGC,iGAIC,eD0GF,CCvGC,wGACC,eACA,UDyGF,CCtGC,sCAEC,eADA,SDyGF,CCrGC,oDACC,YDuGF,CCpGC,8BAEC,gDD1CsB,CCyCtB,aF1ByB,CE4BzB,cDsGF,CCnGC,qBACC,2CDjDkC,CCkDlC,UDqGF,CCnGE,4BACC,UDqGH,CCjGC,qBACC,iBDmGF,CChGC,sBACC,qBAEA,WFD0B,CEE1B,eAFA,UDoGF,CC/FE,4BASC,6CAFA,oCACA,2EAFA,kBALA,YACA,cAEA,YACA,WAFA,UDuGH,CC/FE,yBACC,GACC,sBDiGF,CC9FC,GACC,uBDgGF,CACF,CC3FA,qBAEC,gBDvF4B,CCsF5B,qBAEA,sBD8FD,CE9LC,0CACC,2BFiMF,CE9LC,4CACC,2BFgMF,CGrMC,iDACC,kBHwMF,CGnMC,2CACC,iBHsMF,CI5MA,qBACC,wBJgND,CI9MC,mCAOC,iCAEA,eAHA,yBALA,UACA,kBAGA,QAFA,QACA,2BAIA,sBJiNF,CI7MC,yFAIE,iCJ4MH,CIrMC,qHAEC,SJsMF,CKnOC,6BAIC,mFADA,2CAEA,4DAHA,YADA,iBL0OF,CKnOC,mCAIC,aNOyB,CMHzB,yBADA,iBADA,iBADA,WAJA,kBACA,SLD+B,CKE/B,OL0OF,CKlOC,yCACC,ULoOF,CM/OC,gGANC,mCP4CsB,CO7CtB,eNoQF,CM7PC,uCAOC,uBALA,qBACA,cACA,gBAEA,UNuPF,CMvOC,0CACC,mBACA,0BACA,UNyOF,CMtOC,8GAEC,sBNuOF,CO7QC,8DACC,WPgRF,CO7QC,oEACC,UACA,aP+QF,CO7QE,sFACC,iBP+QH,COhRE,iFACC,iBP+QH,CQzRC,0DACC,YR4RF,CQzRC,+CACC,+BACA,aAEA,aADA,YAEA,WR2RF,CQxRC,0DACC,cR0RF,CQvRC,sDACC,YRyRF,CQtRC,sDACC,YRwRF,CS7SC,uCAEC,mBADA,mBTiTF,CS7SC,+CAMC,0BACA,sBANA,cAGA,qBACA,cAHA,qBACA,qBTmTF,CS5SC,qDACC,0BT8SF,CS3SC,8DACC,eT6SF,CSzSC,gDAIC,eAHA,kBACA,QACA,KT4SF,CStSC,iDACC,yBTySF,CStSC,yDACC,8BACA,eTwSF,CSrSC,gEACC,yBTuSF,CSpSC,kEACC,sBTsSF,CSjSC,2CACC,wBToSF,CSjSC,mDACC,+BACA,gBTmSF,CShSC,0DACC,0BTkSF,CS/RC,4DACC,uBTiSF,CDlRA,MACC,yBACA,kBACA,kBCqRD,CD1QE,oEACC,cC6QH,CDxQA,sBACC,4FC2QD,CDxQA,gBACC,2FC2QD,CDhOA,YACC,iBCmOD,CDhOA,2CAGC,aAzI0B,CA0I1B,mBA7I0B,CA8I1B,iBCxJkB,CDyJlB,gBCmOD,CDhOA,wDAEC,yBC/JoB,CDgKpB,WCmOD,CDhOA,sBACC,mBACA,6BACA,+BACA,0BACA,oBACA,4BAEA,6BADA,mBCoOD,CAnYA,iBAEI,kBADA,cAuYJ,CApYI,sBACI,cAsYR,CApYQ,+BAGI,iBAFA,kBACA,cAuYZ,CAnYQ,4BACI,aACA,eACA,OAqYZ,CAjYI,sBAGI,sFACA,oCACA,mCACA,sBAEA,eAPA,cAMA,eALA,0BAOA,+BAEA,oDACI,wEAGJ,6BAEI,yCAGJ,4CACI,+BA0BJ,sEAZA,6CACA,uXAPA,wGAcA,CAbA,oDACA,oDAeA,eAlBA,qEAqBA,uFAIA,0CACI,yEAGJ,kBACI,8DAKJ,6DACI,4VAgBI,4CAEA,8DAJA,gCAQJ,2DAKJ,0DAEI,uFADA,0DAKA,gFAEI,yEAKZ,kCAEI,uCACA,sFACA,wBACA,gDAGI,iBAQA,wGACI,wBAGJ,wDAIA,+GAyWZ","sources":["webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/_items.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/tom-select.scss","webpack://@codefog/contao-tags-bundle/./assets/tags-widget.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/_dropdown.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/drag_drop.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/checkbox_options.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/clear_button.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/dropdown_header.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/dropdown_input.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/input_autogrow.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/optgroup_columns.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/remove_button.scss"],"sourcesContent":[".#{$select-ns}-control {\n\tborder: $select-border;\n\tpadding: $select-padding-y $select-padding-x;\n\twidth: 100%;\n\toverflow: hidden;\n\tposition: relative;\n\tz-index: 1;\n\tbox-sizing: border-box;\n\tbox-shadow: $select-shadow-input;\n\tborder-radius: $select-border-radius;\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\n\t.#{$select-ns}-wrapper.multi.has-items & {\n\t\t$padding-x: $select-padding-x;\n\t\t$padding-top: calc( #{$select-padding-y} - #{$select-padding-item-y} - #{$select-width-item-border});\n\t\t$padding-bottom: calc( #{$select-padding-y} - #{$select-padding-item-y} - #{$select-margin-item-y} - #{$select-width-item-border});\n\n\t\tpadding: $padding-top $padding-x $padding-bottom;\n\t}\n\n\t.full & {\n\t\tbackground-color: $select-color-input-full;\n\t}\n\n\t.disabled &,\n\t.disabled & * {\n\t\tcursor: default !important;\n\t}\n\n\t.focus & {\n\t\tbox-shadow: $select-shadow-input-focus;\n\t}\n\n\t> * {\n\t\tvertical-align: baseline;\n\t\tdisplay: inline-block;\n\t}\n\n\t.#{$select-ns}-wrapper.multi & > div {\n\t\tcursor: pointer;\n\t\tmargin: 0 $select-margin-item-x $select-margin-item-y 0;\n\t\tpadding: $select-padding-item-y $select-padding-item-x;\n\t\tbackground: $select-color-item;\n\t\tcolor: $select-color-item-text;\n\t\tborder: $select-width-item-border solid $select-color-item-border;\n\t\toverflow: auto;\n\n\t\t&.active {\n\t\t\tbackground: $select-color-item-active;\n\t\t\tcolor: $select-color-item-active-text;\n\t\t\tborder: $select-width-item-border solid $select-color-item-active-border;\n\t\t}\n\t}\n\n\t.#{$select-ns}-wrapper.multi.disabled & > div {\n\t\t&, &.active {\n\t\t\tcolor: lighten(desaturate($select-color-item-text, 100%), $select-lighten-disabled-item-text);\n\t\t\tbackground: lighten(desaturate($select-color-item, 100%), $select-lighten-disabled-item);\n\t\t\tborder: $select-width-item-border solid lighten(desaturate($select-color-item-border, 100%), $select-lighten-disabled-item-border);\n\t\t}\n\t}\n\n\t> input {\n\t\tflex: 1 1 auto;\n\t\tmin-width: 7rem;\n\t\tdisplay: inline-block !important;\n\t\tpadding: 0 !important;\n\t\tmin-height: 0 !important;\n\t\tmax-height: none !important;\n\t\tmax-width: 100% !important;\n\t\tmargin: 0 !important;\n\t\ttext-indent: 0 !important;\n\t\tborder: 0 none !important;\n\t\tbackground: none !important;\n\t\tline-height: inherit !important;\n\t\tuser-select: auto !important;\n\t\tbox-shadow: none !important;\n\n\t\t&::-ms-clear {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t&:focus { outline: none !important; }\n\t}\n\n\t.has-items & > input{\n\t\tmargin: $select-caret-margin !important;\n\t}\n\n\t&.rtl {\n\t\ttext-align: right;\n\t\t&.single .#{$select-ns}-control:after {\n\t\t\tleft: $select-arrow-offset;\n\t\t\tright: auto;\n\t\t}\n\t\t.#{$select-ns}-control > input {\n\t\t\tmargin: $select-caret-margin-rtl !important;\n\t\t}\n\t}\n\n\t.disabled & {\n\t\topacity: $select-opacity-disabled;\n\t\tbackground-color: $select-color-disabled;\n\t}\n\n\t// hide input, while retaining its focus, and maintain layout so users can still click on the space to bring the display back\n\t// visibility:hidden can prevent the input from receiving focus\n\t.input-hidden & > input {\n\t\topacity: 0;\n\t\tposition: absolute;\n\t\tleft: -10000px;\n\t}\n}\n","/**\n * tom-select.css (v2.5.2)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\n// base styles\n$select-ns:\t\t\t\t\t\t\t\t\t\t'ts' !default;\n$select-font-family:\t\t\t\t\t\t\tinherit !default;\n$select-font-size:\t\t\t\t\t\t\t\t13px !default;\n$select-line-height:\t\t\t\t\t\t\t18px !default;\n$select-color-text:\t\t\t\t\t\t\t\t#303030 !default;\n$select-color-border:\t\t\t\t\t\t\t#d0d0d0 !default;\n$select-color-highlight:\t\t\t\t\t\trgba(125, 168, 208, 20%) !default;\n$select-color-input:\t\t\t\t\t\t\t#fff !default;\n$select-color-input-full:\t\t\t\t\t\t$select-color-input !default;\n$select-color-disabled:\t\t\t\t\t\t\t#fafafa !default;\n$select-color-item:\t\t\t\t\t\t\t\t#f2f2f2 !default;\n$select-color-item-text:\t\t\t\t\t\t$select-color-text !default;\n$select-color-item-border:\t\t\t\t\t\t#d0d0d0 !default;\n$select-color-item-active:\t\t\t\t\t\t#e8e8e8 !default;\n$select-color-item-active-text:\t\t\t\t\t$select-color-text !default;\n$select-color-item-active-border:\t\t\t\t#cacaca !default;\n$select-color-dropdown:\t\t\t\t\t\t\t#fff !default;\n$select-color-dropdown-border:\t\t\t\t\t$select-color-border !default;\n$select-color-dropdown-border-top:\t\t\t\t#f0f0f0 !default;\n$select-color-dropdown-item-active:\t\t\t\t#f5fafd !default;\n$select-color-dropdown-item-active-text:\t\t#495c68 !default;\n$select-color-dropdown-item-create-text:\t\trgba(red($select-color-text), green($select-color-text), blue($select-color-text), 50%) !default;\n$select-color-dropdown-item-create-active-text:\t$select-color-dropdown-item-active-text !default;\n$select-color-optgroup:\t\t\t\t\t\t\t$select-color-dropdown !default;\n$select-color-optgroup-text:\t\t\t\t\t$select-color-text !default;\n$select-lighten-disabled-item:\t\t\t\t\t30% !default;\n$select-lighten-disabled-item-text:\t\t\t\t30% !default;\n$select-lighten-disabled-item-border:\t\t\t30% !default;\n$select-opacity-disabled:\t\t\t\t\t\t0.5 !default;\n$select-shadow-input:\t\t\t\t\t\t\tnone !default;\n$select-shadow-input-focus:\t\t\t\t\t\tnone !default;\n$select-border-width:\t\t\t\t\t\t\t1px !default;\n$select-border:\t\t\t\t\t\t\t\t\t$select-border-width solid $select-color-border !default;\n$select-dropdown-border:\t\t\t\t\t\t1px solid $select-color-dropdown-border !default;\n$select-border-radius:\t\t\t\t\t\t\t3px !default;\n$select-width-item-border:\t\t\t\t\t\t0px !default;\n$select-max-height-dropdown:\t\t\t\t\t200px !default;\n$select-padding-x:\t\t\t\t\t\t\t\t8px !default;\n$select-padding-y:\t\t\t\t\t\t\t\t8px !default;\n$select-padding-item-x:\t\t\t\t\t\t\t6px !default;\n$select-padding-item-y:\t\t\t\t\t\t\t2px !default;\n$select-padding-dropdown-item-x:\t\t\t\t$select-padding-x !default;\n$select-padding-dropdown-item-y:\t\t\t\t5px !default;\n$select-margin-item-x:\t\t\t\t\t\t\t3px !default;\n$select-margin-item-y:\t\t\t\t\t\t\t3px !default;\n$select-arrow-size:\t\t\t\t\t\t\t\t5px !default;\n$select-arrow-color:\t\t\t\t\t\t\t#808080 !default;\n$select-arrow-offset:\t\t\t\t\t\t\t15px !default;\n$select-caret-margin:\t\t\t\t\t\t\t0px 4px !default;\n$select-caret-margin-rtl:\t\t\t\t\t\t0px 4px 0px -2px !default;\n$select-spinner-size:\t\t\t\t\t\t\t30px !default;\n$select-spinner-border-size:\t\t\t\t\t5px !default;\n$select-spinner-border-color:\t\t\t\t\t$select-color-border !default;\n\n@import 'items';\n@import 'dropdown';\n\n@import \"./plugins/drag_drop.scss\";\n@import \"./plugins/checkbox_options.scss\";\n@import \"./plugins/clear_button.scss\";\n@import \"./plugins/dropdown_header.scss\";\n@import \"./plugins/dropdown_input.scss\";\n@import \"./plugins/input_autogrow.scss\";\n@import \"./plugins/optgroup_columns.scss\";\n@import \"./plugins/remove_button.scss\";\n\n:root {\n\t--ts-pr-clear-button: 0px;\n\t--ts-pr-caret: 0px;\n\t--ts-pr-min: .75rem;\n}\n\n@mixin selectize-vertical-gradient($color-top, $color-bottom) {\n background-color: color-mix($color-top, $color-bottom, 60%);\n background-image: linear-gradient(to bottom, $color-top, $color-bottom);\n background-repeat: repeat-x;\n}\n\n.#{$select-ns}-wrapper.single {\n\t.#{$select-ns}-control {\n\t\t&, input {\n\t\t\tcursor: pointer;\n\t\t}\n\t}\n}\n\n.#{$select-ns}-control:not(.rtl) {\n\tpadding-right:\tmax( var(--ts-pr-min), calc( var(--ts-pr-clear-button) + var(--ts-pr-caret)) ) !important;\n}\n\n.#{$select-ns}-control.rtl {\n\tpadding-left:\tmax( var(--ts-pr-min), calc( var(--ts-pr-clear-button) + var(--ts-pr-caret)) ) !important;\n}\n\n@mixin ts-caret() {\n\t.#{$select-ns}-wrapper.single {\n\t\t.#{$select-ns}-control {\n\t\t\t--ts-pr-caret: 2rem;\n\n\t\t\t&::after {\n\t\t\t\tcontent: ' ';\n\t\t\t\tdisplay: block;\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 50%;\n\t\t\t\tmargin-top: round(-0.5 * $select-arrow-size);\n\t\t\t\twidth: 0;\n\t\t\t\theight: 0;\n\t\t\t\tborder-style: solid;\n\t\t\t\tborder-width: $select-arrow-size $select-arrow-size 0 $select-arrow-size;\n\t\t\t\tborder-color: $select-arrow-color transparent transparent transparent;\n\t\t\t}\n\t\t\t\n\t\t\t&:not(.rtl)::after {\n\t\t\t\tright: $select-arrow-offset;\n\t\t\t}\n\t\t\t\n\t\t\t&.rtl::after {\n\t\t\t\tleft: $select-arrow-offset;\n\t\t\t}\n\t\t}\n\n\t\t&.dropdown-active .#{$select-ns}-control::after {\n\t\t\tmargin-top: $select-arrow-size * -0.8;\n\t\t\tborder-width: 0 $select-arrow-size $select-arrow-size $select-arrow-size;\n\t\t\tborder-color: transparent transparent $select-arrow-color transparent;\n\t\t}\n\n\t\t&.input-active .#{$select-ns}-control,\n\t\t&.input-active .#{$select-ns}-control input {\n\t\t\tcursor: text;\n\t\t}\n\t}\n}\n\n.#{$select-ns}-wrapper {\n\tposition: relative;\n}\n\n.#{$select-ns}-dropdown,\n.#{$select-ns}-control,\n.#{$select-ns}-control input {\n\tcolor: $select-color-text;\n\tfont-family: $select-font-family;\n\tfont-size: $select-font-size;\n\tline-height: $select-line-height;\n}\n\n.#{$select-ns}-control,\n.#{$select-ns}-wrapper.single.input-active .#{$select-ns}-control {\n\tbackground: $select-color-input;\n\tcursor: text;\n}\n\n.ts-hidden-accessible {\n\tborder: 0 !important;\n\tclip: rect(0 0 0 0) !important;\n\tclip-path: inset(50%) !important;\n\toverflow: hidden !important;\n\tpadding: 0 !important;\n\tposition: absolute !important;\n\twidth: 1px !important;\n\twhite-space: nowrap !important;\n}\n","$select-border-radius: var(--border-radius);\n$select-color-border: var(--form-border);\n$select-color-dropdown-item-active-text: #fff;\n$select-color-dropdown-item-active: var(--choices-highlighted);\n$select-color-dropdown-item-create-text: var(--text);\n$select-color-dropdown: var(--choices-bg-color-dropdown, #fff);\n$select-color-input: var(--form-bg);\n$select-font-size: inherit;\n$select-line-height: 13px;\n$select-max-height-dropdown: 300px;\n$select-padding-dropdown-item-x: 6px;\n$select-padding-dropdown-item-y: 3px;\n$select-padding-x: 6px;\n$select-padding-y: 5px;\n\n@import '~tom-select/dist/scss/tom-select';\n\n.cfg-tags-widget {\n margin-top: 3px;\n margin-bottom: 3px;\n\n &__all {\n margin-top: 3px;\n\n &-headline {\n margin-bottom: 5px;\n margin-top: 5px;\n font-size: .75rem;\n }\n\n &-items {\n display: flex;\n flex-wrap: wrap;\n gap: 3px;\n }\n }\n\n &__tag {\n display: block;\n padding: 5px 10px 5px 25px;\n background: transparent url('./add.svg') no-repeat 6px center;\n border: 1px solid var(--form-border);\n border-radius: var(--border-radius);\n box-sizing: border-box;\n font-size: 13px;\n cursor: pointer;\n transition: background 0.2s ease;\n\n html[data-color-scheme='dark'] & {\n background-image: url('./add--dark.svg');\n }\n\n &:hover {\n color: inherit;\n background-color: var(--form-button-hover);\n }\n\n &:active {\n color: var(--form-button-active);\n }\n }\n\n &__remove {\n position: relative;\n display: inline-block;\n width: var(--choices-button-dimension, 8px);\n margin: 0 calc(var(--choices-button-offset, 8px) * -0.5) 0 var(--choices-button-offset, 8px);\n padding-bottom: 2px;\n padding-left: calc(var(--choices-button-offset, 8px) * 2);\n border: 0;\n border-left: 1px solid var(--choices-border);\n border-radius: var(--choices-button-border-radius, 0);\n background-color: transparent;\n background-image: var(\n --choices-icon-cross,\n url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==')\n );\n background-position: center;\n background-repeat: no-repeat;\n background-size: var(--choices-button-dimension, 8px);\n opacity: var(--choices-button-opacity, 0.75);\n cursor: pointer;\n line-height: var(--choices-button-line-height, 1);\n text-indent: -9999px;\n appearance: none;\n\n html:not([data-color-scheme='dark']) & {\n background-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjMjIyIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==');\n }\n\n &:is(:hover, :focus) {\n --choices-button-opacity: var(--choices-button-opacity-hover, 1);\n }\n\n &:focus {\n box-shadow: 0 0 0 2px var(--choices-highlight-color, #005f75);\n }\n }\n\n .ts-wrapper {\n &.dropdown-active .ts-control {\n border-radius: var(--choices-border-radius, 2.5px) var(--choices-border-radius, 2.5px) 0 0;\n }\n\n &.multi.has-items .ts-control {\n padding-left: 3px;\n\n input {\n margin: -3px 4px 0 !important;\n }\n }\n\n .ts-control {\n > div {\n margin: 0 3px 3px 0;\n padding: 1px 5px 1px 6px;\n background-color: var(--choices-bg);\n border: 1px solid var(--choices-border);\n border-radius: 3px;\n color: var(--choices-item-color, #fff);\n cursor: auto;\n }\n\n input {\n color: var(--text);\n }\n }\n\n .create {\n padding-left: 25px !important;\n background-image: url('./add.svg');\n background-repeat: no-repeat;\n background-position: 6px center;\n\n &.active,\n html[data-color-scheme='dark'] & {\n background-image: url('./add--dark.svg');\n }\n }\n }\n\n .ts-dropdown {\n margin-top: -1px;\n border: 1px solid var(--choices-keyline-color, #ddd);\n border-radius: 0 0 var(--choices-border-radius, 2.5px) var(--choices-border-radius, 2.5px);\n box-shadow: none;\n overflow: hidden;\n\n * {\n font-size: 13px;\n }\n\n .no-results {\n color: var(--text);\n }\n\n [data-selectable] {\n &.option {\n color: var(--text);\n }\n\n &.active {\n color: #fff;\n }\n\n .highlight {\n background-color: var(--orange);\n color: #fff;\n }\n }\n }\n}\n",".#{$select-ns}-dropdown {\n\tposition: absolute;\n\ttop: 100%;\n\tleft: 0;\n\twidth: 100%;\n\tz-index: 10;\n\tborder: $select-dropdown-border;\n\tbackground: $select-color-dropdown;\n\tmargin: 0.25rem 0 0;\n\tborder-top: 0 none;\n\tbox-sizing: border-box;\n\tbox-shadow: 0 1px 3px rgba(0, 0, 0, 10%);\n\tborder-radius: 0 0 $select-border-radius $select-border-radius;\n\n\t[data-selectable] {\n\t\tcursor: pointer;\n\t\toverflow: hidden;\n\n\t\t.highlight {\n\t\t\tbackground: $select-color-highlight;\n\t\t\tborder-radius: 1px;\n\t\t}\n\t}\n\n\t.option,\n\t.optgroup-header,\n\t.no-results,\n\t.create {\n\t\tpadding: $select-padding-dropdown-item-y $select-padding-dropdown-item-x;\n\t}\n\n\t.option, [data-disabled], [data-disabled] [data-selectable].option {\n\t\tcursor: inherit;\n\t\topacity: 0.5;\n\t}\n\n\t[data-selectable].option {\n\t\topacity: 1;\n\t\tcursor: pointer;\n\t}\n\n\t.optgroup:first-child .optgroup-header {\n\t\tborder-top: 0 none;\n\t}\n\n\t.optgroup-header {\n\t\tcolor: $select-color-optgroup-text;\n\t\tbackground: $select-color-optgroup;\n\t\tcursor: default;\n\t}\n\n\t.active {\n\t\tbackground-color: $select-color-dropdown-item-active;\n\t\tcolor: $select-color-dropdown-item-active-text;\n\n\t\t&.create {\n\t\t\tcolor: $select-color-dropdown-item-create-active-text;\n\t\t}\n\t}\n\n\t.create {\n\t\tcolor: $select-color-dropdown-item-create-text;\n\t}\n\n\t.spinner{\n\t\tdisplay: inline-block;\n\t\twidth: $select-spinner-size;\n\t\theight: $select-spinner-size;\n\t\tmargin: $select-padding-dropdown-item-y $select-padding-dropdown-item-x;\n\n\n\t\t&::after {\n\t\t\tcontent: \" \";\n\t\t\tdisplay: block;\n\t\t\twidth: $select-spinner-size * .8;\n\t\t\theight: $select-spinner-size * .8;\n\t\t\tmargin: $select-spinner-size * .1;\n\t\t\tborder-radius: 50%;\n\t\t\tborder: $select-spinner-border-size solid $select-spinner-border-color;\n\t\t\tborder-color: $select-spinner-border-color transparent $select-spinner-border-color transparent;\n\t\t\tanimation: lds-dual-ring 1.2s linear infinite;\n\t\t}\n\t\t@keyframes lds-dual-ring {\n\t\t\t0% {\n\t\t\t\ttransform: rotate(0deg);\n\t\t\t}\n\n\t\t\t100% {\n\t\t\t\ttransform: rotate(360deg);\n\t\t\t}\n\t\t}\n\t}\n}\n\n.#{$select-ns}-dropdown-content {\n\toverflow: hidden auto;\n\tmax-height: $select-max-height-dropdown;\n\tscroll-behavior: smooth;\n}\n",".#{$select-ns}-wrapper.plugin-drag_drop {\n\t.ts-dragging{\n\t\tcolor:transparent !important;\n\t}\n\t\t\n\t.ts-dragging > * {\n\t\tvisibility:hidden !important;\n\t}\n\n}\n",".plugin-checkbox_options:not(.rtl) {\n\t.option input {\n\t\tmargin-right: 0.5rem;\n\t}\n}\n\n.plugin-checkbox_options.rtl {\n\t.option input {\n\t\tmargin-left: 0.5rem;\n\t}\n}\n","/* stylelint-disable function-name-case */\n\n.plugin-clear_button {\n\t--ts-pr-clear-button: 1em;\n\n\t.clear-button{\n\t\topacity: 0;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\ttransform: translateY(-50%);\n\t\tright: calc(#{$select-padding-x} - #{$select-padding-item-x});\n\t\tmargin-right: 0 !important;\n\t\tbackground: transparent !important;\n\t\ttransition: opacity 0.5s;\n\t\tcursor: pointer;\n\t}\n\n\t&.form-select .clear-button,\n\t&.single .clear-button {\n\n\t\t@if variable-exists(select-padding-dropdown-item-x) {\n\t\t\tright: Max(var(--ts-pr-caret), #{$select-padding-dropdown-item-x});\n\t\t}\n\t\t@else{\n\t\t\tright: Max(var(--ts-pr-caret), calc(#{$select-padding-x} - #{$select-padding-item-x}));\n\t\t}\n\t}\n\n\t&.focus.has-items .clear-button,\n\t&:not(.disabled):hover.has-items .clear-button{\n\t\topacity: 1;\n\t}\n}\n",".#{$select-ns}-wrapper{\n\t.dropdown-header {\n\t\tposition: relative;\n\t\tpadding: ($select-padding-dropdown-item-y * 2) $select-padding-dropdown-item-x;\n\t\tborder-bottom: 1px solid $select-color-border;\n\t\tbackground: color-mix($select-color-dropdown, $select-color-border, 85%);\n\t\tborder-radius: $select-border-radius $select-border-radius 0 0;\n\t}\n\n\t.dropdown-header-close {\n\t\tposition: absolute;\n\t\tright: $select-padding-dropdown-item-x;\n\t\ttop: 50%;\n\t\tcolor: $select-color-text;\n\t\topacity: 0.4;\n\t\tmargin-top: -12px;\n\t\tline-height: 20px;\n\t\tfont-size: 20px !important;\n\t}\n\n\t.dropdown-header-close:hover {\n\t\tcolor: darken($select-color-text, 25%);\n\t}\n}\n",".plugin-dropdown_input{\n\n\t&.focus.dropdown-active .#{$select-ns}-control{\n\t\tbox-shadow: none;\n\t\tborder: $select-border;\n\t\t@if variable-exists(input-box-shadow) {\n\t\t\tbox-shadow: $input-box-shadow;\n\t\t}\n\t}\n\n\t.dropdown-input {\n\t\tborder: 1px solid $select-color-border;\n\t\tborder-width: 0 0 1px;\n\t\tdisplay: block;\n\t\tpadding: $select-padding-y $select-padding-x;\n\t\tbox-shadow: $select-shadow-input;\n\t\twidth: 100%;\n\t\tbackground: transparent;\n\t}\n\n\t&.focus .#{$select-ns}-dropdown .dropdown-input{\n\t\t@if variable-exists(input-focus-border-color) {\n\t\t\tborder-color: $input-focus-border-color;\n\t\t\toutline: 0;\n\t\t\t@if $enable-shadows {\n\t\t\t\tbox-shadow: $input-box-shadow, $input-focus-box-shadow;\n\t\t\t} @else {\n\t\t\t\tbox-shadow: $input-focus-box-shadow;\n\t\t\t}\n\t\t}\n\t}\n\n\t.items-placeholder{\n\t\tborder: 0 none !important;\n\t\tbox-shadow: none !important;\n\t\twidth: 100%;\n\t}\n\n\t&.has-items .items-placeholder,\n\t&.dropdown-active .items-placeholder{\n\t\tdisplay: none !important;\n\t}\n}\n",".#{$select-ns}-wrapper.plugin-input_autogrow{\n\n\t&.has-items .#{$select-ns}-control > input {\n\t\tmin-width: 0;\n\t}\n\t\n\t&.has-items.focus .#{$select-ns}-control > input {\n\t\tflex: none;\n\t\tmin-width: 4px;\n\n\t\t&::placeholder {\n\t\t\tcolor:transparent;\n\t\t}\n\t}\n}\n",".#{$select-ns}-dropdown.plugin-optgroup_columns {\n\t.ts-dropdown-content{\n\t\tdisplay: flex;\n\t}\n\n\t.optgroup {\n\t\tborder-right: 1px solid #f2f2f2;\n\t\tborder-top: 0 none;\n\t\tflex-grow: 1;\n\t\tflex-basis: 0;\n\t\tmin-width: 0;\n\t}\n\n\t.optgroup:last-child {\n\t\tborder-right: 0 none;\n\t}\n\n\t.optgroup::before {\n\t\tdisplay: none;\n\t}\n\n\t.optgroup-header {\n\t\tborder-top: 0 none;\n\t}\n}\n",".#{$select-ns}-wrapper.plugin-remove_button{\n\t.item {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t}\n\n\t.item .remove {\n\t\tcolor: inherit;\n\t\ttext-decoration: none;\n\t\tvertical-align: middle;\n\t\tdisplay: inline-block;\n\t\tpadding: 0 $select-padding-item-x;\n\t\tborder-radius: 0 2px 2px 0;\n\t\tbox-sizing: border-box;\n\t}\n\n\t.item .remove:hover {\n\t\tbackground: rgba(0, 0, 0, 5%);\n\t}\n\n\t&.disabled .item .remove:hover {\n\t\tbackground: none;\n\t}\n\n\n\t.remove-single {\n\t\tposition: absolute;\n\t\tright: 0;\n\t\ttop: 0;\n\t\tfont-size: 23px;\n\t}\n}\n\n.#{$select-ns}-wrapper.plugin-remove_button:not(.rtl){\n\t.item {\n\t\tpadding-right:\t0 !important;\n\t}\n\n\t.item .remove {\n\t\tborder-left: 1px solid $select-color-item-border;\n\t\tmargin-left: $select-padding-item-x;\n\t}\n\n\t.item.active .remove {\n\t\tborder-left-color: $select-color-item-active-border;\n\t}\n\n\t&.disabled .item .remove {\n\t\tborder-left-color: lighten(desaturate($select-color-item-border, 100%), $select-lighten-disabled-item-border);\n\t}\n}\n\n.#{$select-ns}-wrapper.plugin-remove_button.rtl {\n\t.item {\n\t\tpadding-left:\t0 !important;\n\t}\n\t\n\t.item .remove {\n\t\tborder-right: 1px solid $select-color-item-border;\n\t\tmargin-right: $select-padding-item-x;\n\t}\n\n\t.item.active .remove {\n\t\tborder-right-color: $select-color-item-active-border;\n\t}\n\n\t&.disabled .item .remove {\n\t\tborder-right-color: lighten(desaturate($select-color-item-border, 100%), $select-lighten-disabled-item-border);\n\t}\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"tags-widget.f1a58ca1.css","mappings":"AAAA,YACC,mCC+CuB,CDvCvB,kCETsB,CFQtB,eCqC2B,CDtC3B,sBAGA,aACA,eAPA,gBAFA,gBAGA,kBAFA,WAGA,SEoBD,CFbC,wCAKC,iBEWF,CFRC,kBACC,+BEUF,CFPC,8CAEC,wBEQF,CFLC,mBACC,eEOF,CFJC,cAEC,qBADA,uBEOF,CFHC,kCAIC,kBCjByB,CDmBzB,uBADA,aCxByB,CDoBzB,eACA,mBAKA,cAJA,eESF,CFHE,yCACC,kBCpB6B,CDsB7B,uBADA,aEMH,CFAE,6FAEC,gBACA,oBAFA,aEIH,CFEC,kBAWC,0BADA,mBAIA,0BAXA,+BAFA,cAWA,8BAJA,mBAFA,0BACA,yBAFA,uBAHA,eAEA,oBAKA,wBAIA,6FECF,CFEE,6BACC,YEAH,CFGE,wBAAU,sBEAZ,CFGC,6BACC,sBEDF,CFIC,gBACC,gBEFF,CFGE,yCACC,SC9ByB,CD+BzB,UEDH,CFGE,kCACC,6BEDH,CFKC,sBAEC,wBC9E4B,CD6E5B,UEFF,CFQC,gCAGC,cAFA,UACA,iBELF,CCzGA,aAOC,gDDFuB,CCIvB,oCAGA,4DAHA,aAEA,oCADA,sBAPA,OAKA,kBAPA,kBACA,SAEA,WACA,UDmHD,CC1GC,+BACC,eACA,eD4GF,CC1GE,0CACC,+BFG2B,CEF3B,iBD4GH,CCxGC,iGAIC,eD0GF,CCvGC,wGACC,eACA,UDyGF,CCtGC,sCAEC,eADA,SDyGF,CCrGC,oDACC,YDuGF,CCpGC,8BAEC,gDD1CsB,CCyCtB,aF1ByB,CE4BzB,cDsGF,CCnGC,qBACC,2CDjDkC,CCkDlC,UDqGF,CCnGE,4BACC,UDqGH,CCjGC,qBACC,iBDmGF,CChGC,sBACC,qBAEA,WFD0B,CEE1B,eAFA,UDoGF,CC/FE,4BASC,6CAFA,oCACA,2EAFA,kBALA,YACA,cAEA,YACA,WAFA,UDuGH,CC/FE,yBACC,GACC,sBDiGF,CC9FC,GACC,uBDgGF,CACF,CC3FA,qBAEC,gBDvF4B,CCsF5B,qBAEA,sBD8FD,CE9LC,0CACC,2BFiMF,CE9LC,4CACC,2BFgMF,CGrMC,iDACC,kBHwMF,CGnMC,2CACC,iBHsMF,CI5MA,qBACC,wBJgND,CI9MC,mCAOC,iCAEA,eAHA,yBALA,UACA,kBAGA,QAFA,QACA,2BAIA,sBJiNF,CI7MC,yFAIE,iCJ4MH,CIrMC,qHAEC,SJsMF,CKnOC,6BAIC,mFADA,2CAEA,4DAHA,YADA,iBL0OF,CKnOC,mCAIC,aNOyB,CMHzB,yBADA,iBADA,iBADA,WAJA,kBACA,SLD+B,CKE/B,OL0OF,CKlOC,yCACC,ULoOF,CM/OC,gGANC,mCP4CsB,CO7CtB,eNoQF,CM7PC,uCAOC,uBALA,qBACA,cACA,gBAEA,UNuPF,CMvOC,0CACC,mBACA,0BACA,UNyOF,CMtOC,8GAEC,sBNuOF,CO7QC,8DACC,WPgRF,CO7QC,oEACC,UACA,aP+QF,CO7QE,sFACC,iBP+QH,COhRE,iFACC,iBP+QH,CQzRC,0DACC,YR4RF,CQzRC,+CACC,+BACA,aAEA,aADA,YAEA,WR2RF,CQxRC,0DACC,cR0RF,CQvRC,sDACC,YRyRF,CQtRC,sDACC,YRwRF,CS7SC,uCAEC,mBADA,mBTiTF,CS7SC,+CAMC,0BACA,sBANA,cAGA,qBACA,cAHA,qBACA,qBTmTF,CS5SC,qDACC,0BT8SF,CS3SC,8DACC,eT6SF,CSzSC,gDAIC,eAHA,kBACA,QACA,KT4SF,CStSC,iDACC,yBTySF,CStSC,yDACC,8BACA,eTwSF,CSrSC,gEACC,yBTuSF,CSpSC,kEACC,sBTsSF,CSjSC,2CACC,wBToSF,CSjSC,mDACC,+BACA,gBTmSF,CShSC,0DACC,0BTkSF,CS/RC,4DACC,uBTiSF,CDlRA,MACC,yBACA,kBACA,kBCqRD,CD1QE,oEACC,cC6QH,CDxQA,sBACC,4FC2QD,CDxQA,gBACC,2FC2QD,CDhOA,YACC,iBCmOD,CDhOA,2CAGC,aAzI0B,CA0I1B,mBA7I0B,CA8I1B,iBCxJkB,CDyJlB,gBCmOD,CDhOA,wDAEC,yBC/JoB,CDgKpB,WCmOD,CDhOA,sBACC,mBACA,6BACA,+BACA,0BACA,oBACA,4BAEA,6BADA,mBCoOD,CAnYA,iBAEI,kBADA,cAuYJ,CApYI,sBACI,cAsYR,CApYQ,+BAGI,iBAFA,kBACA,cAuYZ,CAnYQ,4BACI,aACA,eACA,OAqYZ,CAjYI,sBAGI,sFACA,oCACA,mCACA,sBAEA,eAPA,cAMA,eALA,0BAOA,+BAEA,oDACI,wEAGJ,6BAEI,yCAGJ,4CACI,+BA0BJ,sEAZA,6CACA,uXAPA,wGAcA,CAbA,oDACA,oDAeA,eAlBA,qEAqBA,uFAIA,0CACI,yEAGJ,kBACI,8DAKJ,6DACI,4VAgBI,4CAEA,8DAJA,gCAQJ,2DAKJ,0DAEI,uFADA,0DAKA,gFAEI,yEAKZ,kCAEI,uCACA,sFACA,wBACA,gDAGI,iBAQA,wGACI,wBAGJ,wDAIA,+GAyWZ","sources":["webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/_items.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/tom-select.scss","webpack://@codefog/contao-tags-bundle/./assets/tags-widget.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/_dropdown.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/drag_drop.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/checkbox_options.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/clear_button.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/dropdown_header.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/dropdown_input.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/input_autogrow.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/optgroup_columns.scss","webpack://@codefog/contao-tags-bundle/./node_modules/tom-select/dist/scss/plugins/remove_button.scss"],"sourcesContent":[".#{$select-ns}-control {\n\tborder: $select-border;\n\tpadding: $select-padding-y $select-padding-x;\n\twidth: 100%;\n\toverflow: hidden;\n\tposition: relative;\n\tz-index: 1;\n\tbox-sizing: border-box;\n\tbox-shadow: $select-shadow-input;\n\tborder-radius: $select-border-radius;\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\n\t.#{$select-ns}-wrapper.multi.has-items & {\n\t\t$padding-x: $select-padding-x;\n\t\t$padding-top: calc( #{$select-padding-y} - #{$select-padding-item-y} - #{$select-width-item-border});\n\t\t$padding-bottom: calc( #{$select-padding-y} - #{$select-padding-item-y} - #{$select-margin-item-y} - #{$select-width-item-border});\n\n\t\tpadding: $padding-top $padding-x $padding-bottom;\n\t}\n\n\t.full & {\n\t\tbackground-color: $select-color-input-full;\n\t}\n\n\t.disabled &,\n\t.disabled & * {\n\t\tcursor: default !important;\n\t}\n\n\t.focus & {\n\t\tbox-shadow: $select-shadow-input-focus;\n\t}\n\n\t> * {\n\t\tvertical-align: baseline;\n\t\tdisplay: inline-block;\n\t}\n\n\t.#{$select-ns}-wrapper.multi & > div {\n\t\tcursor: pointer;\n\t\tmargin: 0 $select-margin-item-x $select-margin-item-y 0;\n\t\tpadding: $select-padding-item-y $select-padding-item-x;\n\t\tbackground: $select-color-item;\n\t\tcolor: $select-color-item-text;\n\t\tborder: $select-width-item-border solid $select-color-item-border;\n\t\toverflow: auto;\n\n\t\t&.active {\n\t\t\tbackground: $select-color-item-active;\n\t\t\tcolor: $select-color-item-active-text;\n\t\t\tborder: $select-width-item-border solid $select-color-item-active-border;\n\t\t}\n\t}\n\n\t.#{$select-ns}-wrapper.multi.disabled & > div {\n\t\t&, &.active {\n\t\t\tcolor: lighten(desaturate($select-color-item-text, 100%), $select-lighten-disabled-item-text);\n\t\t\tbackground: lighten(desaturate($select-color-item, 100%), $select-lighten-disabled-item);\n\t\t\tborder: $select-width-item-border solid lighten(desaturate($select-color-item-border, 100%), $select-lighten-disabled-item-border);\n\t\t}\n\t}\n\n\t> input {\n\t\tflex: 1 1 auto;\n\t\tmin-width: 7rem;\n\t\tdisplay: inline-block !important;\n\t\tpadding: 0 !important;\n\t\tmin-height: 0 !important;\n\t\tmax-height: none !important;\n\t\tmax-width: 100% !important;\n\t\tmargin: 0 !important;\n\t\ttext-indent: 0 !important;\n\t\tborder: 0 none !important;\n\t\tbackground: none !important;\n\t\tline-height: inherit !important;\n\t\tuser-select: auto !important;\n\t\tbox-shadow: none !important;\n\n\t\t&::-ms-clear {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t&:focus { outline: none !important; }\n\t}\n\n\t.has-items & > input{\n\t\tmargin: $select-caret-margin !important;\n\t}\n\n\t&.rtl {\n\t\ttext-align: right;\n\t\t&.single .#{$select-ns}-control:after {\n\t\t\tleft: $select-arrow-offset;\n\t\t\tright: auto;\n\t\t}\n\t\t.#{$select-ns}-control > input {\n\t\t\tmargin: $select-caret-margin-rtl !important;\n\t\t}\n\t}\n\n\t.disabled & {\n\t\topacity: $select-opacity-disabled;\n\t\tbackground-color: $select-color-disabled;\n\t}\n\n\t// hide input, while retaining its focus, and maintain layout so users can still click on the space to bring the display back\n\t// visibility:hidden can prevent the input from receiving focus\n\t.input-hidden & > input {\n\t\topacity: 0;\n\t\tposition: absolute;\n\t\tleft: -10000px;\n\t}\n}\n","/**\n * tom-select.css (v2.5.2)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\n// base styles\n$select-ns:\t\t\t\t\t\t\t\t\t\t'ts' !default;\n$select-font-family:\t\t\t\t\t\t\tinherit !default;\n$select-font-size:\t\t\t\t\t\t\t\t13px !default;\n$select-line-height:\t\t\t\t\t\t\t18px !default;\n$select-color-text:\t\t\t\t\t\t\t\t#303030 !default;\n$select-color-border:\t\t\t\t\t\t\t#d0d0d0 !default;\n$select-color-highlight:\t\t\t\t\t\trgba(125, 168, 208, 20%) !default;\n$select-color-input:\t\t\t\t\t\t\t#fff !default;\n$select-color-input-full:\t\t\t\t\t\t$select-color-input !default;\n$select-color-disabled:\t\t\t\t\t\t\t#fafafa !default;\n$select-color-item:\t\t\t\t\t\t\t\t#f2f2f2 !default;\n$select-color-item-text:\t\t\t\t\t\t$select-color-text !default;\n$select-color-item-border:\t\t\t\t\t\t#d0d0d0 !default;\n$select-color-item-active:\t\t\t\t\t\t#e8e8e8 !default;\n$select-color-item-active-text:\t\t\t\t\t$select-color-text !default;\n$select-color-item-active-border:\t\t\t\t#cacaca !default;\n$select-color-dropdown:\t\t\t\t\t\t\t#fff !default;\n$select-color-dropdown-border:\t\t\t\t\t$select-color-border !default;\n$select-color-dropdown-border-top:\t\t\t\t#f0f0f0 !default;\n$select-color-dropdown-item-active:\t\t\t\t#f5fafd !default;\n$select-color-dropdown-item-active-text:\t\t#495c68 !default;\n$select-color-dropdown-item-create-text:\t\trgba(red($select-color-text), green($select-color-text), blue($select-color-text), 50%) !default;\n$select-color-dropdown-item-create-active-text:\t$select-color-dropdown-item-active-text !default;\n$select-color-optgroup:\t\t\t\t\t\t\t$select-color-dropdown !default;\n$select-color-optgroup-text:\t\t\t\t\t$select-color-text !default;\n$select-lighten-disabled-item:\t\t\t\t\t30% !default;\n$select-lighten-disabled-item-text:\t\t\t\t30% !default;\n$select-lighten-disabled-item-border:\t\t\t30% !default;\n$select-opacity-disabled:\t\t\t\t\t\t0.5 !default;\n$select-shadow-input:\t\t\t\t\t\t\tnone !default;\n$select-shadow-input-focus:\t\t\t\t\t\tnone !default;\n$select-border-width:\t\t\t\t\t\t\t1px !default;\n$select-border:\t\t\t\t\t\t\t\t\t$select-border-width solid $select-color-border !default;\n$select-dropdown-border:\t\t\t\t\t\t1px solid $select-color-dropdown-border !default;\n$select-border-radius:\t\t\t\t\t\t\t3px !default;\n$select-width-item-border:\t\t\t\t\t\t0px !default;\n$select-max-height-dropdown:\t\t\t\t\t200px !default;\n$select-padding-x:\t\t\t\t\t\t\t\t8px !default;\n$select-padding-y:\t\t\t\t\t\t\t\t8px !default;\n$select-padding-item-x:\t\t\t\t\t\t\t6px !default;\n$select-padding-item-y:\t\t\t\t\t\t\t2px !default;\n$select-padding-dropdown-item-x:\t\t\t\t$select-padding-x !default;\n$select-padding-dropdown-item-y:\t\t\t\t5px !default;\n$select-margin-item-x:\t\t\t\t\t\t\t3px !default;\n$select-margin-item-y:\t\t\t\t\t\t\t3px !default;\n$select-arrow-size:\t\t\t\t\t\t\t\t5px !default;\n$select-arrow-color:\t\t\t\t\t\t\t#808080 !default;\n$select-arrow-offset:\t\t\t\t\t\t\t15px !default;\n$select-caret-margin:\t\t\t\t\t\t\t0px 4px !default;\n$select-caret-margin-rtl:\t\t\t\t\t\t0px 4px 0px -2px !default;\n$select-spinner-size:\t\t\t\t\t\t\t30px !default;\n$select-spinner-border-size:\t\t\t\t\t5px !default;\n$select-spinner-border-color:\t\t\t\t\t$select-color-border !default;\n\n@import 'items';\n@import 'dropdown';\n\n@import \"./plugins/drag_drop.scss\";\n@import \"./plugins/checkbox_options.scss\";\n@import \"./plugins/clear_button.scss\";\n@import \"./plugins/dropdown_header.scss\";\n@import \"./plugins/dropdown_input.scss\";\n@import \"./plugins/input_autogrow.scss\";\n@import \"./plugins/optgroup_columns.scss\";\n@import \"./plugins/remove_button.scss\";\n\n:root {\n\t--ts-pr-clear-button: 0px;\n\t--ts-pr-caret: 0px;\n\t--ts-pr-min: .75rem;\n}\n\n@mixin selectize-vertical-gradient($color-top, $color-bottom) {\n background-color: color-mix($color-top, $color-bottom, 60%);\n background-image: linear-gradient(to bottom, $color-top, $color-bottom);\n background-repeat: repeat-x;\n}\n\n.#{$select-ns}-wrapper.single {\n\t.#{$select-ns}-control {\n\t\t&, input {\n\t\t\tcursor: pointer;\n\t\t}\n\t}\n}\n\n.#{$select-ns}-control:not(.rtl) {\n\tpadding-right:\tmax( var(--ts-pr-min), calc( var(--ts-pr-clear-button) + var(--ts-pr-caret)) ) !important;\n}\n\n.#{$select-ns}-control.rtl {\n\tpadding-left:\tmax( var(--ts-pr-min), calc( var(--ts-pr-clear-button) + var(--ts-pr-caret)) ) !important;\n}\n\n@mixin ts-caret() {\n\t.#{$select-ns}-wrapper.single {\n\t\t.#{$select-ns}-control {\n\t\t\t--ts-pr-caret: 2rem;\n\n\t\t\t&::after {\n\t\t\t\tcontent: ' ';\n\t\t\t\tdisplay: block;\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 50%;\n\t\t\t\tmargin-top: round(-0.5 * $select-arrow-size);\n\t\t\t\twidth: 0;\n\t\t\t\theight: 0;\n\t\t\t\tborder-style: solid;\n\t\t\t\tborder-width: $select-arrow-size $select-arrow-size 0 $select-arrow-size;\n\t\t\t\tborder-color: $select-arrow-color transparent transparent transparent;\n\t\t\t}\n\t\t\t\n\t\t\t&:not(.rtl)::after {\n\t\t\t\tright: $select-arrow-offset;\n\t\t\t}\n\t\t\t\n\t\t\t&.rtl::after {\n\t\t\t\tleft: $select-arrow-offset;\n\t\t\t}\n\t\t}\n\n\t\t&.dropdown-active .#{$select-ns}-control::after {\n\t\t\tmargin-top: $select-arrow-size * -0.8;\n\t\t\tborder-width: 0 $select-arrow-size $select-arrow-size $select-arrow-size;\n\t\t\tborder-color: transparent transparent $select-arrow-color transparent;\n\t\t}\n\n\t\t&.input-active .#{$select-ns}-control,\n\t\t&.input-active .#{$select-ns}-control input {\n\t\t\tcursor: text;\n\t\t}\n\t}\n}\n\n.#{$select-ns}-wrapper {\n\tposition: relative;\n}\n\n.#{$select-ns}-dropdown,\n.#{$select-ns}-control,\n.#{$select-ns}-control input {\n\tcolor: $select-color-text;\n\tfont-family: $select-font-family;\n\tfont-size: $select-font-size;\n\tline-height: $select-line-height;\n}\n\n.#{$select-ns}-control,\n.#{$select-ns}-wrapper.single.input-active .#{$select-ns}-control {\n\tbackground: $select-color-input;\n\tcursor: text;\n}\n\n.ts-hidden-accessible {\n\tborder: 0 !important;\n\tclip: rect(0 0 0 0) !important;\n\tclip-path: inset(50%) !important;\n\toverflow: hidden !important;\n\tpadding: 0 !important;\n\tposition: absolute !important;\n\twidth: 1px !important;\n\twhite-space: nowrap !important;\n}\n","$select-border-radius: var(--border-radius);\n$select-color-border: var(--form-border);\n$select-color-dropdown-item-active-text: #fff;\n$select-color-dropdown-item-active: var(--choices-highlighted);\n$select-color-dropdown-item-create-text: var(--text);\n$select-color-dropdown: var(--choices-bg-color-dropdown, #fff);\n$select-color-input: var(--form-bg);\n$select-font-size: inherit;\n$select-line-height: 13px;\n$select-max-height-dropdown: 300px;\n$select-padding-dropdown-item-x: 6px;\n$select-padding-dropdown-item-y: 3px;\n$select-padding-x: 6px;\n$select-padding-y: 5px;\n\n@import '~tom-select/dist/scss/tom-select';\n\n.cfg-tags-widget {\n margin-top: 3px;\n margin-bottom: 3px;\n\n &__all {\n margin-top: 3px;\n\n &-headline {\n margin-bottom: 5px;\n margin-top: 5px;\n font-size: 0.75rem;\n }\n\n &-items {\n display: flex;\n flex-wrap: wrap;\n gap: 3px;\n }\n }\n\n &__tag {\n display: block;\n padding: 5px 10px 5px 25px;\n background: transparent url('./add.svg') no-repeat 6px center;\n border: 1px solid var(--form-border);\n border-radius: var(--border-radius);\n box-sizing: border-box;\n font-size: 13px;\n cursor: pointer;\n transition: background 0.2s ease;\n\n html[data-color-scheme='dark'] & {\n background-image: url('./add--dark.svg');\n }\n\n &:hover {\n color: inherit;\n background-color: var(--form-button-hover);\n }\n\n &:active {\n color: var(--form-button-active);\n }\n }\n\n &__remove {\n position: relative;\n display: inline-block;\n width: var(--choices-button-dimension, 8px);\n margin: 0 calc(var(--choices-button-offset, 8px) * -0.5) 0 var(--choices-button-offset, 8px);\n padding-bottom: 2px;\n padding-left: calc(var(--choices-button-offset, 8px) * 2);\n border: 0;\n border-left: 1px solid var(--choices-border);\n border-radius: var(--choices-button-border-radius, 0);\n background-color: transparent;\n background-image: var(\n --choices-icon-cross,\n url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==')\n );\n background-position: center;\n background-repeat: no-repeat;\n background-size: var(--choices-button-dimension, 8px);\n opacity: var(--choices-button-opacity, 0.75);\n cursor: pointer;\n line-height: var(--choices-button-line-height, 1);\n text-indent: -9999px;\n appearance: none;\n\n html:not([data-color-scheme='dark']) & {\n background-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjMjIyIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==');\n }\n\n &:is(:hover, :focus) {\n --choices-button-opacity: var(--choices-button-opacity-hover, 1);\n }\n\n &:focus {\n box-shadow: 0 0 0 2px var(--choices-highlight-color, #005f75);\n }\n }\n\n .ts-wrapper {\n &.dropdown-active .ts-control {\n border-radius: var(--choices-border-radius, 2.5px) var(--choices-border-radius, 2.5px) 0 0;\n }\n\n &.multi.has-items .ts-control {\n padding-left: 3px;\n\n input {\n margin: -3px 4px 0 !important;\n }\n }\n\n .ts-control {\n > div {\n margin: 0 3px 3px 0;\n padding: 1px 5px 1px 6px;\n background-color: var(--choices-bg);\n border: 1px solid var(--choices-border);\n border-radius: 3px;\n color: var(--choices-item-color, #fff);\n cursor: auto;\n }\n\n input {\n color: var(--text);\n }\n }\n\n .create {\n padding-left: 25px !important;\n background-image: url('./add.svg');\n background-repeat: no-repeat;\n background-position: 6px center;\n\n &.active,\n html[data-color-scheme='dark'] & {\n background-image: url('./add--dark.svg');\n }\n }\n }\n\n .ts-dropdown {\n margin-top: -1px;\n border: 1px solid var(--choices-keyline-color, #ddd);\n border-radius: 0 0 var(--choices-border-radius, 2.5px) var(--choices-border-radius, 2.5px);\n box-shadow: none;\n overflow: hidden;\n\n * {\n font-size: 13px;\n }\n\n .no-results {\n color: var(--text);\n }\n\n [data-selectable] {\n &.option {\n color: var(--text);\n }\n\n &.active {\n color: #fff;\n }\n\n .highlight {\n background-color: var(--orange);\n color: #fff;\n }\n }\n }\n}\n",".#{$select-ns}-dropdown {\n\tposition: absolute;\n\ttop: 100%;\n\tleft: 0;\n\twidth: 100%;\n\tz-index: 10;\n\tborder: $select-dropdown-border;\n\tbackground: $select-color-dropdown;\n\tmargin: 0.25rem 0 0;\n\tborder-top: 0 none;\n\tbox-sizing: border-box;\n\tbox-shadow: 0 1px 3px rgba(0, 0, 0, 10%);\n\tborder-radius: 0 0 $select-border-radius $select-border-radius;\n\n\t[data-selectable] {\n\t\tcursor: pointer;\n\t\toverflow: hidden;\n\n\t\t.highlight {\n\t\t\tbackground: $select-color-highlight;\n\t\t\tborder-radius: 1px;\n\t\t}\n\t}\n\n\t.option,\n\t.optgroup-header,\n\t.no-results,\n\t.create {\n\t\tpadding: $select-padding-dropdown-item-y $select-padding-dropdown-item-x;\n\t}\n\n\t.option, [data-disabled], [data-disabled] [data-selectable].option {\n\t\tcursor: inherit;\n\t\topacity: 0.5;\n\t}\n\n\t[data-selectable].option {\n\t\topacity: 1;\n\t\tcursor: pointer;\n\t}\n\n\t.optgroup:first-child .optgroup-header {\n\t\tborder-top: 0 none;\n\t}\n\n\t.optgroup-header {\n\t\tcolor: $select-color-optgroup-text;\n\t\tbackground: $select-color-optgroup;\n\t\tcursor: default;\n\t}\n\n\t.active {\n\t\tbackground-color: $select-color-dropdown-item-active;\n\t\tcolor: $select-color-dropdown-item-active-text;\n\n\t\t&.create {\n\t\t\tcolor: $select-color-dropdown-item-create-active-text;\n\t\t}\n\t}\n\n\t.create {\n\t\tcolor: $select-color-dropdown-item-create-text;\n\t}\n\n\t.spinner{\n\t\tdisplay: inline-block;\n\t\twidth: $select-spinner-size;\n\t\theight: $select-spinner-size;\n\t\tmargin: $select-padding-dropdown-item-y $select-padding-dropdown-item-x;\n\n\n\t\t&::after {\n\t\t\tcontent: \" \";\n\t\t\tdisplay: block;\n\t\t\twidth: $select-spinner-size * .8;\n\t\t\theight: $select-spinner-size * .8;\n\t\t\tmargin: $select-spinner-size * .1;\n\t\t\tborder-radius: 50%;\n\t\t\tborder: $select-spinner-border-size solid $select-spinner-border-color;\n\t\t\tborder-color: $select-spinner-border-color transparent $select-spinner-border-color transparent;\n\t\t\tanimation: lds-dual-ring 1.2s linear infinite;\n\t\t}\n\t\t@keyframes lds-dual-ring {\n\t\t\t0% {\n\t\t\t\ttransform: rotate(0deg);\n\t\t\t}\n\n\t\t\t100% {\n\t\t\t\ttransform: rotate(360deg);\n\t\t\t}\n\t\t}\n\t}\n}\n\n.#{$select-ns}-dropdown-content {\n\toverflow: hidden auto;\n\tmax-height: $select-max-height-dropdown;\n\tscroll-behavior: smooth;\n}\n",".#{$select-ns}-wrapper.plugin-drag_drop {\n\t.ts-dragging{\n\t\tcolor:transparent !important;\n\t}\n\t\t\n\t.ts-dragging > * {\n\t\tvisibility:hidden !important;\n\t}\n\n}\n",".plugin-checkbox_options:not(.rtl) {\n\t.option input {\n\t\tmargin-right: 0.5rem;\n\t}\n}\n\n.plugin-checkbox_options.rtl {\n\t.option input {\n\t\tmargin-left: 0.5rem;\n\t}\n}\n","/* stylelint-disable function-name-case */\n\n.plugin-clear_button {\n\t--ts-pr-clear-button: 1em;\n\n\t.clear-button{\n\t\topacity: 0;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\ttransform: translateY(-50%);\n\t\tright: calc(#{$select-padding-x} - #{$select-padding-item-x});\n\t\tmargin-right: 0 !important;\n\t\tbackground: transparent !important;\n\t\ttransition: opacity 0.5s;\n\t\tcursor: pointer;\n\t}\n\n\t&.form-select .clear-button,\n\t&.single .clear-button {\n\n\t\t@if variable-exists(select-padding-dropdown-item-x) {\n\t\t\tright: Max(var(--ts-pr-caret), #{$select-padding-dropdown-item-x});\n\t\t}\n\t\t@else{\n\t\t\tright: Max(var(--ts-pr-caret), calc(#{$select-padding-x} - #{$select-padding-item-x}));\n\t\t}\n\t}\n\n\t&.focus.has-items .clear-button,\n\t&:not(.disabled):hover.has-items .clear-button{\n\t\topacity: 1;\n\t}\n}\n",".#{$select-ns}-wrapper{\n\t.dropdown-header {\n\t\tposition: relative;\n\t\tpadding: ($select-padding-dropdown-item-y * 2) $select-padding-dropdown-item-x;\n\t\tborder-bottom: 1px solid $select-color-border;\n\t\tbackground: color-mix($select-color-dropdown, $select-color-border, 85%);\n\t\tborder-radius: $select-border-radius $select-border-radius 0 0;\n\t}\n\n\t.dropdown-header-close {\n\t\tposition: absolute;\n\t\tright: $select-padding-dropdown-item-x;\n\t\ttop: 50%;\n\t\tcolor: $select-color-text;\n\t\topacity: 0.4;\n\t\tmargin-top: -12px;\n\t\tline-height: 20px;\n\t\tfont-size: 20px !important;\n\t}\n\n\t.dropdown-header-close:hover {\n\t\tcolor: darken($select-color-text, 25%);\n\t}\n}\n",".plugin-dropdown_input{\n\n\t&.focus.dropdown-active .#{$select-ns}-control{\n\t\tbox-shadow: none;\n\t\tborder: $select-border;\n\t\t@if variable-exists(input-box-shadow) {\n\t\t\tbox-shadow: $input-box-shadow;\n\t\t}\n\t}\n\n\t.dropdown-input {\n\t\tborder: 1px solid $select-color-border;\n\t\tborder-width: 0 0 1px;\n\t\tdisplay: block;\n\t\tpadding: $select-padding-y $select-padding-x;\n\t\tbox-shadow: $select-shadow-input;\n\t\twidth: 100%;\n\t\tbackground: transparent;\n\t}\n\n\t&.focus .#{$select-ns}-dropdown .dropdown-input{\n\t\t@if variable-exists(input-focus-border-color) {\n\t\t\tborder-color: $input-focus-border-color;\n\t\t\toutline: 0;\n\t\t\t@if $enable-shadows {\n\t\t\t\tbox-shadow: $input-box-shadow, $input-focus-box-shadow;\n\t\t\t} @else {\n\t\t\t\tbox-shadow: $input-focus-box-shadow;\n\t\t\t}\n\t\t}\n\t}\n\n\t.items-placeholder{\n\t\tborder: 0 none !important;\n\t\tbox-shadow: none !important;\n\t\twidth: 100%;\n\t}\n\n\t&.has-items .items-placeholder,\n\t&.dropdown-active .items-placeholder{\n\t\tdisplay: none !important;\n\t}\n}\n",".#{$select-ns}-wrapper.plugin-input_autogrow{\n\n\t&.has-items .#{$select-ns}-control > input {\n\t\tmin-width: 0;\n\t}\n\t\n\t&.has-items.focus .#{$select-ns}-control > input {\n\t\tflex: none;\n\t\tmin-width: 4px;\n\n\t\t&::placeholder {\n\t\t\tcolor:transparent;\n\t\t}\n\t}\n}\n",".#{$select-ns}-dropdown.plugin-optgroup_columns {\n\t.ts-dropdown-content{\n\t\tdisplay: flex;\n\t}\n\n\t.optgroup {\n\t\tborder-right: 1px solid #f2f2f2;\n\t\tborder-top: 0 none;\n\t\tflex-grow: 1;\n\t\tflex-basis: 0;\n\t\tmin-width: 0;\n\t}\n\n\t.optgroup:last-child {\n\t\tborder-right: 0 none;\n\t}\n\n\t.optgroup::before {\n\t\tdisplay: none;\n\t}\n\n\t.optgroup-header {\n\t\tborder-top: 0 none;\n\t}\n}\n",".#{$select-ns}-wrapper.plugin-remove_button{\n\t.item {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t}\n\n\t.item .remove {\n\t\tcolor: inherit;\n\t\ttext-decoration: none;\n\t\tvertical-align: middle;\n\t\tdisplay: inline-block;\n\t\tpadding: 0 $select-padding-item-x;\n\t\tborder-radius: 0 2px 2px 0;\n\t\tbox-sizing: border-box;\n\t}\n\n\t.item .remove:hover {\n\t\tbackground: rgba(0, 0, 0, 5%);\n\t}\n\n\t&.disabled .item .remove:hover {\n\t\tbackground: none;\n\t}\n\n\n\t.remove-single {\n\t\tposition: absolute;\n\t\tright: 0;\n\t\ttop: 0;\n\t\tfont-size: 23px;\n\t}\n}\n\n.#{$select-ns}-wrapper.plugin-remove_button:not(.rtl){\n\t.item {\n\t\tpadding-right:\t0 !important;\n\t}\n\n\t.item .remove {\n\t\tborder-left: 1px solid $select-color-item-border;\n\t\tmargin-left: $select-padding-item-x;\n\t}\n\n\t.item.active .remove {\n\t\tborder-left-color: $select-color-item-active-border;\n\t}\n\n\t&.disabled .item .remove {\n\t\tborder-left-color: lighten(desaturate($select-color-item-border, 100%), $select-lighten-disabled-item-border);\n\t}\n}\n\n.#{$select-ns}-wrapper.plugin-remove_button.rtl {\n\t.item {\n\t\tpadding-left:\t0 !important;\n\t}\n\t\n\t.item .remove {\n\t\tborder-right: 1px solid $select-color-item-border;\n\t\tmargin-right: $select-padding-item-x;\n\t}\n\n\t.item.active .remove {\n\t\tborder-right-color: $select-color-item-active-border;\n\t}\n\n\t&.disabled .item .remove {\n\t\tborder-right-color: lighten(desaturate($select-color-item-border, 100%), $select-lighten-disabled-item-border);\n\t}\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file