Version Description
(released: 25 Oct 2021) * Added image browser (in Media tab) * Updated webp convert library to 2.7.0. * ImageMagick now supports the "near-lossless" option (provided Imagick >
Download this release
Release Info
Developer | rosell.dk |
Plugin | WebP Express |
Version | 0.21.0 |
Comparing to | |
See all releases |
Code changes from version 0.20.1 to 0.21.0
- README.md +2 -1
- README.txt +25 -9
- changelog.txt +14 -0
- composer.json +3 -2
- docs/publishing.md +149 -0
- lib/classes/AdminUi.php +1 -2
- lib/classes/AlterHtmlHelper.php +3 -2
- lib/classes/Convert.php +14 -0
- lib/classes/ConvertHelperIndependent.php +2 -2
- lib/classes/Destination.php +208 -0
- lib/classes/DestinationOptions.php +42 -0
- lib/classes/DestinationUrl.php +229 -0
- lib/classes/FileHelper.php +6 -1
- lib/classes/ImageRoot.php +3 -0
- lib/classes/Paths.php +66 -1
- lib/classes/PluginDeactivate.php +1 -1
- lib/classes/WCFMApi.php +110 -19
- lib/classes/WCFMPage.php +28 -7
- lib/options/submit.php +1 -1
- lib/wcfm/style.css +1 -1
- lib/wcfm/vendor.b4e4e155.js +16 -0
- lib/wcfm/wcfm-options.js +31 -5
- lib/wcfm/wcfm.js +27 -1
- vendor/composer/ClassLoader.php +102 -11
- vendor/composer/InstalledVersions.php +326 -352
- vendor/composer/autoload_classmap.php +2 -0
- vendor/composer/autoload_static.php +2 -0
- vendor/composer/installed.json +57 -31
- vendor/composer/installed.php +86 -99
- vendor/composer/installers/composer.json +1 -0
- vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php +1 -0
- vendor/composer/installers/src/Composer/Installers/Installer.php +1 -0
- vendor/composer/installers/src/Composer/Installers/PantheonInstaller.php +12 -0
- vendor/rosell-dk/dom-util-for-webp/README.md +2 -2
- vendor/rosell-dk/dom-util-for-webp/composer.json +5 -9
- vendor/rosell-dk/dom-util-for-webp/docs/development.md +43 -0
- vendor/rosell-dk/dom-util-for-webp/phpunit-41.xml.dist +38 -0
- vendor/rosell-dk/dom-util-for-webp/phpunit.xml.dist +25 -38
- vendor/rosell-dk/dom-util-for-webp/src/ImageUrlReplacer.php +4 -4
- vendor/rosell-dk/dom-util-for-webp/src/PictureTags.php +51 -4
- vendor/rosell-dk/image-mime-type-guesser/.circleci/config.yml +76 -0
- vendor/rosell-dk/image-mime-type-guesser/README.md +5 -7
- vendor/rosell-dk/image-mime-type-guesser/composer.json +3 -2
- vendor/rosell-dk/image-mime-type-guesser/src/Detectors/ExifImageType.php +4 -1
- vendor/rosell-dk/image-mime-type-guesser/src/Detectors/FInfo.php +12 -6
- vendor/rosell-dk/image-mime-type-guesser/src/Detectors/MimeContentType.php +5 -0
- vendor/rosell-dk/image-mime-type-guesser/src/Detectors/Stack.php +2 -2
- vendor/rosell-dk/webp-convert/README.md +19 -14
- vendor/rosell-dk/webp-convert/src/Convert/Converters/AbstractConverter.php +1 -1
- vendor/rosell-dk/webp-convert/src/Convert/Converters/BaseTraits/OptionsTrait.php +331 -28
- vendor/rosell-dk/webp-convert/src/Convert/Converters/Cwebp.php +115 -20
- vendor/rosell-dk/webp-convert/src/Convert/Converters/Ewww.php +27 -4
- vendor/rosell-dk/webp-convert/src/Convert/Converters/FFMpeg.php +1 -0
- vendor/rosell-dk/webp-convert/src/Convert/Converters/Gd.php +45 -29
- vendor/rosell-dk/webp-convert/src/Convert/Converters/Gmagick.php +1 -1
- vendor/rosell-dk/webp-convert/src/Convert/Converters/GraphicsMagick.php +2 -3
- vendor/rosell-dk/webp-convert/src/Convert/Converters/ImageMagick.php +79 -9
- vendor/rosell-dk/webp-convert/src/Convert/Converters/Imagick.php +32 -3
- vendor/rosell-dk/webp-convert/src/Options/ArrayOption.php +3 -3
- vendor/rosell-dk/webp-convert/src/Options/BooleanOption.php +1 -1
- vendor/rosell-dk/webp-convert/src/Options/IntegerOption.php +10 -2
- vendor/rosell-dk/webp-convert/src/Options/IntegerOrNullOption.php +7 -1
- vendor/rosell-dk/webp-convert/src/Options/MetadataOption.php +1 -1
- vendor/rosell-dk/webp-convert/src/Options/Option.php +77 -9
- vendor/rosell-dk/webp-convert/src/Options/OptionFactory.php +92 -0
- vendor/rosell-dk/webp-convert/src/Options/Options.php +27 -2
- vendor/rosell-dk/webp-convert/src/Options/QualityOption.php +2 -2
- vendor/rosell-dk/webp-convert/src/Options/SensitiveArrayOption.php +7 -0
- vendor/rosell-dk/webp-convert/src/Options/SensitiveStringOption.php +9 -2
- vendor/rosell-dk/webp-convert/src/Options/StringOption.php +16 -6
- vendor/rosell-dk/webp-convert/src/WebPConvert.php +62 -6
- webp-express.php +1 -1
README.md
CHANGED
@@ -29,13 +29,14 @@ The plugin implements the "WebP On Demand" solution described [here](https://git
|
|
29 |
- [DOM Util for WebP](https://github.com/rosell-dk/dom-util-for-webp): For the Alter HTML functionality
|
30 |
- [Image MimeType Guesser](https://github.com/rosell-dk/image-mime-type-guesser): For detecting mime types of images.
|
31 |
- [HTAccess Capability Tester](https://github.com/rosell-dk/htaccess-capability-tester): For testing .htaccess capabilities in a given directory, using live tests
|
|
|
32 |
|
33 |
### Benefits
|
34 |
- Much faster load time for images in browsers that supports webp. The converted images are typically *less than half the size* (for jpeg), while maintaining the same quality. Bear in mind that for most web sites, images are responsible for the largest part of the waiting time.
|
35 |
- Better user experience (whether performance goes from terrible to bad, or from good to impressive, it is a benefit).
|
36 |
- Better ranking in Google searches (performance is taken into account by Google).
|
37 |
- Less bandwidth consumption - makes a huge difference in the parts of the world where the internet is slow and costly (you know, ~80% of the world population lives under these circumstances).
|
38 |
-
- Currently ~
|
39 |
- It's great for the environment too! Reducing network traffic reduces electricity consumption which reduces CO2 emissions.
|
40 |
|
41 |
## Installation
|
29 |
- [DOM Util for WebP](https://github.com/rosell-dk/dom-util-for-webp): For the Alter HTML functionality
|
30 |
- [Image MimeType Guesser](https://github.com/rosell-dk/image-mime-type-guesser): For detecting mime types of images.
|
31 |
- [HTAccess Capability Tester](https://github.com/rosell-dk/htaccess-capability-tester): For testing .htaccess capabilities in a given directory, using live tests
|
32 |
+
- [WebP Convert File Manager](https://github.com/rosell-dk/webp-convert-filemanager): For browsing conversions (planned feature: triggering conversions).
|
33 |
|
34 |
### Benefits
|
35 |
- Much faster load time for images in browsers that supports webp. The converted images are typically *less than half the size* (for jpeg), while maintaining the same quality. Bear in mind that for most web sites, images are responsible for the largest part of the waiting time.
|
36 |
- Better user experience (whether performance goes from terrible to bad, or from good to impressive, it is a benefit).
|
37 |
- Better ranking in Google searches (performance is taken into account by Google).
|
38 |
- Less bandwidth consumption - makes a huge difference in the parts of the world where the internet is slow and costly (you know, ~80% of the world population lives under these circumstances).
|
39 |
+
- Currently ~95% of all traffic, and ~96% of mobile browsing traffic are done with browsers supporting webp. Check current numbers on [caniuse.com](https://caniuse.com/webp).
|
40 |
- It's great for the environment too! Reducing network traffic reduces electricity consumption which reduces CO2 emissions.
|
41 |
|
42 |
## Installation
|
README.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: https://ko-fi.com/rosell
|
|
4 |
Tags: webp, images, performance
|
5 |
Requires at least: 4.0
|
6 |
Tested up to: 5.8
|
7 |
-
Stable tag: 0.
|
8 |
Requires PHP: 5.6
|
9 |
License: GPLv3
|
10 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
@@ -29,18 +29,19 @@ The plugin supports different ways of delivering webps to browsers that supports
|
|
29 |
5. You can also deliver webp to *all* browsers and add the [webpjs](http://webpjs.appspot.com) javascript, which provides webp support for browsers that doesn't support webp natively. However, beware that the javascript doesn't support srcset attributes, which is why I haven't added that method to the plugin (yet).
|
30 |
|
31 |
The plugin implements the "WebP On Demand" solution described [here](https://github.com/rosell-dk/webp-convert/blob/master/docs/v2.0/webp-on-demand/webp-on-demand.md) and builds on a bunch of open source libraries (all maintained by me):
|
32 |
-
- [
|
33 |
- [WebP Convert Cloud Service](https://github.com/rosell-dk/webp-convert-cloud-service): For the Web Service functionality
|
34 |
- [DOM Util for WebP](https://github.com/rosell-dk/dom-util-for-webp): For the Alter HTML functionality
|
35 |
- [Image MimeType Guesser](https://github.com/rosell-dk/image-mime-type-guesser): For detecting mime types of images.
|
36 |
- [HTAccess Capability Tester](https://github.com/rosell-dk/htaccess-capability-tester): For testing .htaccess capabilities in a given directory, using live tests
|
|
|
37 |
|
38 |
### Benefits
|
39 |
- Much faster load time for images in browsers that supports webp. The converted images are typically *less than half the size* (for jpeg), while maintaining the same quality. Bear in mind that for most web sites, images are responsible for the largest part of the waiting time.
|
40 |
- Better user experience (whether performance goes from terrible to bad, or from good to impressive, it is a benefit).
|
41 |
- Better ranking in Google searches (performance is taken into account by Google).
|
42 |
- Less bandwidth consumption - makes a huge difference in the parts of the world where the internet is slow and costly (you know, ~80% of the world population lives under these circumstances).
|
43 |
-
- Currently ~
|
44 |
- It's great for the environment too! Reducing network traffic reduces electricity consumption which reduces CO2 emissions.
|
45 |
|
46 |
== Installation ==
|
@@ -174,9 +175,10 @@ Bread on the table don't come for free, even though this plugin does, and always
|
|
174 |
* Ruben Solvang
|
175 |
|
176 |
**Persons who recently contributed with [ko-fi](https://ko-fi.com/rosell) - Thanks!**
|
|
|
|
|
|
|
177 |
* 8 Jul: Raj
|
178 |
-
* 18 Jun: Jerry Simmons
|
179 |
-
* 17 Jun: Erica Dreisbach
|
180 |
|
181 |
**Persons who contributed with extra generously amounts of coffee / lifetime backing (>30$) - thanks!:**
|
182 |
|
@@ -188,6 +190,7 @@ Bread on the table don't come for free, even though this plugin does, and always
|
|
188 |
* Steven Sullivan ($51)
|
189 |
* Mathieu Gollain-Dupont ($50)
|
190 |
* Erica Dreisbach ($50)
|
|
|
191 |
|
192 |
== Frequently Asked Questions ==
|
193 |
|
@@ -772,6 +775,20 @@ If you want to make sure that my coffee supplies don't run dry, you can even buy
|
|
772 |
|
773 |
== Changelog ==
|
774 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
775 |
= 0.20.1 =
|
776 |
*(released: 20 Jun 2021)*
|
777 |
* Bugfix: Removed composer.lock. It was locked on PHP 7.2, which caused server error on some sites (only some sites with old php were affected). Also deleted the library which required PHP 7.2 (onnov/detect-encoding/). The functionality is not really needed.
|
@@ -786,14 +803,13 @@ If you want to make sure that my coffee supplies don't run dry, you can even buy
|
|
786 |
|
787 |
For more info, see the closed issues on the [0.20.0 milestone on the github repository](https://github.com/rosell-dk/webp-express/milestone/38?closed=1)
|
788 |
|
789 |
-
= 0.19.1 =
|
790 |
-
*(released: 03 May 2021)*
|
791 |
-
* Bugfix for PHP 8.0 - fread() does not permit second argument to be 0. Thanks to @trition for reporting and fixing this bug.
|
792 |
-
|
793 |
For older releases, check out changelog.txt
|
794 |
|
795 |
== Upgrade Notice ==
|
796 |
|
|
|
|
|
|
|
797 |
= 0.20.1 =
|
798 |
* Bugfix for PHP 7.1 and below
|
799 |
|
4 |
Tags: webp, images, performance
|
5 |
Requires at least: 4.0
|
6 |
Tested up to: 5.8
|
7 |
+
Stable tag: 0.21.0
|
8 |
Requires PHP: 5.6
|
9 |
License: GPLv3
|
10 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
29 |
5. You can also deliver webp to *all* browsers and add the [webpjs](http://webpjs.appspot.com) javascript, which provides webp support for browsers that doesn't support webp natively. However, beware that the javascript doesn't support srcset attributes, which is why I haven't added that method to the plugin (yet).
|
30 |
|
31 |
The plugin implements the "WebP On Demand" solution described [here](https://github.com/rosell-dk/webp-convert/blob/master/docs/v2.0/webp-on-demand/webp-on-demand.md) and builds on a bunch of open source libraries (all maintained by me):
|
32 |
+
- [WebP Convert](https://github.com/rosell-dk/webp-convert): For converting images to webp
|
33 |
- [WebP Convert Cloud Service](https://github.com/rosell-dk/webp-convert-cloud-service): For the Web Service functionality
|
34 |
- [DOM Util for WebP](https://github.com/rosell-dk/dom-util-for-webp): For the Alter HTML functionality
|
35 |
- [Image MimeType Guesser](https://github.com/rosell-dk/image-mime-type-guesser): For detecting mime types of images.
|
36 |
- [HTAccess Capability Tester](https://github.com/rosell-dk/htaccess-capability-tester): For testing .htaccess capabilities in a given directory, using live tests
|
37 |
+
- [WebP Convert File Manager](https://github.com/rosell-dk/webp-convert-filemanager): For browsing conversions (planned feature: triggering conversions).
|
38 |
|
39 |
### Benefits
|
40 |
- Much faster load time for images in browsers that supports webp. The converted images are typically *less than half the size* (for jpeg), while maintaining the same quality. Bear in mind that for most web sites, images are responsible for the largest part of the waiting time.
|
41 |
- Better user experience (whether performance goes from terrible to bad, or from good to impressive, it is a benefit).
|
42 |
- Better ranking in Google searches (performance is taken into account by Google).
|
43 |
- Less bandwidth consumption - makes a huge difference in the parts of the world where the internet is slow and costly (you know, ~80% of the world population lives under these circumstances).
|
44 |
+
- Currently ~95% of all traffic, and ~96% of mobile browsing traffic are done with browsers supporting webp. Check current numbers on [caniuse.com](https://caniuse.com/webp).
|
45 |
- It's great for the environment too! Reducing network traffic reduces electricity consumption which reduces CO2 emissions.
|
46 |
|
47 |
== Installation ==
|
175 |
* Ruben Solvang
|
176 |
|
177 |
**Persons who recently contributed with [ko-fi](https://ko-fi.com/rosell) - Thanks!**
|
178 |
+
* 29 Aug: Pawa Tecnologia
|
179 |
+
* 29 Jul: Brian Laursen
|
180 |
+
* 24 Jul: Hans Konings
|
181 |
* 8 Jul: Raj
|
|
|
|
|
182 |
|
183 |
**Persons who contributed with extra generously amounts of coffee / lifetime backing (>30$) - thanks!:**
|
184 |
|
190 |
* Steven Sullivan ($51)
|
191 |
* Mathieu Gollain-Dupont ($50)
|
192 |
* Erica Dreisbach ($50)
|
193 |
+
* Brian Laursen ($50)
|
194 |
|
195 |
== Frequently Asked Questions ==
|
196 |
|
775 |
|
776 |
== Changelog ==
|
777 |
|
778 |
+
= 0.21.0 =
|
779 |
+
*(released: 25 Oct 2021)*
|
780 |
+
* Added image browser (in Media tab)
|
781 |
+
* Updated webp convert library to 2.7.0.
|
782 |
+
* ImageMagick now supports the "near-lossless" option (provided Imagick >= 7.0.10-54)
|
783 |
+
* Added "try-common-system-paths" option for ImageMagick (default: true). Thanks to Henrik Alves for adding this option.
|
784 |
+
* Bugfix: Handling Uncaught Fatal Exception during .htaccess read failure. Thanks to Manuel D'Orso from Italy for the fix.
|
785 |
+
* Bugfix: File names which were not UTF8 caused trouble in the Bulk Convert. Thank to "mills4078" for the fix
|
786 |
+
* Bugfix: Redirection back to settings after saving settings failed on some systems. Thanks to Martin Rehberger (@kingkero) from Germany for the fix.
|
787 |
+
* Bugfix: Webp urls did not contain port number (only relevant when the website was not on default port number). Thanks to Nicolas LIENART (@nicolnt) from France for providing the fix.
|
788 |
+
|
789 |
+
For more info, see the closed issues on the [webp-express 0.21.0 milestone](https://github.com/rosell-dk/webp-express/milestone/41?closed=1) and the
|
790 |
+
[webp-convert 2.7.0 milestone](https://github.com/rosell-dk/webp-convert/milestone/24?closed=1)
|
791 |
+
|
792 |
= 0.20.1 =
|
793 |
*(released: 20 Jun 2021)*
|
794 |
* Bugfix: Removed composer.lock. It was locked on PHP 7.2, which caused server error on some sites (only some sites with old php were affected). Also deleted the library which required PHP 7.2 (onnov/detect-encoding/). The functionality is not really needed.
|
803 |
|
804 |
For more info, see the closed issues on the [0.20.0 milestone on the github repository](https://github.com/rosell-dk/webp-express/milestone/38?closed=1)
|
805 |
|
|
|
|
|
|
|
|
|
806 |
For older releases, check out changelog.txt
|
807 |
|
808 |
== Upgrade Notice ==
|
809 |
|
810 |
+
= 0.21.0 =
|
811 |
+
* Image browser and various bug fixes
|
812 |
+
|
813 |
= 0.20.1 =
|
814 |
* Bugfix for PHP 7.1 and below
|
815 |
|
changelog.txt
CHANGED
@@ -1,3 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
= 0.20.1 =
|
2 |
*(released: 20 Jun 2021)*
|
3 |
* Bugfix: Removed composer.lock. It was locked on PHP 7.2, which caused server error on some sites (only some sites with old php were affected). Also deleted the library which required PHP 7.2 (onnov/detect-encoding/). The functionality is not really needed.
|
1 |
+
= 0.21.0 =
|
2 |
+
*(released: 25 Oct 2021)*
|
3 |
+
* Added image browser (in Media tab)
|
4 |
+
* Updated webp convert library to 2.7.0.
|
5 |
+
* ImageMagick now supports the "near-lossless" option (provided Imagick >= 7.0.10-54)
|
6 |
+
* Added "try-common-system-paths" option for ImageMagick (default: true). Thanks to Henrik Alves for adding this option.
|
7 |
+
* Bugfix: Handling Uncaught Fatal Exception during .htaccess read failure. Thanks to Manuel D'Orso from Italy for the fix.
|
8 |
+
* Bugfix: File names which were not UTF8 caused trouble in the Bulk Convert. Thank to "mills4078" for the fix
|
9 |
+
* Bugfix: Redirection back to settings after saving settings failed on some systems. Thanks to Martin Rehberger (@kingkero) from Germany for the fix.
|
10 |
+
* Bugfix: Webp urls did not contain port number (only relevant when the website was not on default port number). Thanks to Nicolas LIENART (@nicolnt) from France for providing the fix.
|
11 |
+
|
12 |
+
For more info, see the closed issues on the [webp-express 0.21.0 milestone](https://github.com/rosell-dk/webp-express/milestone/41?closed=1) and the
|
13 |
+
[webp-convert 2.7.0 milestone](https://github.com/rosell-dk/webp-convert/milestone/24?closed=1)
|
14 |
+
|
15 |
= 0.20.1 =
|
16 |
*(released: 20 Jun 2021)*
|
17 |
* Bugfix: Removed composer.lock. It was locked on PHP 7.2, which caused server error on some sites (only some sites with old php were affected). Also deleted the library which required PHP 7.2 (onnov/detect-encoding/). The functionality is not really needed.
|
composer.json
CHANGED
@@ -5,7 +5,7 @@
|
|
5 |
"license": "MIT",
|
6 |
"require": {
|
7 |
"composer/installers": "^1.0.0",
|
8 |
-
"rosell-dk/webp-convert": "^2.
|
9 |
"rosell-dk/webp-convert-cloud-service": "^2.0.0",
|
10 |
"rosell-dk/dom-util-for-webp": "^0.4.0",
|
11 |
"rosell-dk/htaccess-capability-tester": "^0.9.0"
|
@@ -15,7 +15,8 @@
|
|
15 |
"scripts": {
|
16 |
"ci": [
|
17 |
"@composer validate --no-check-all --strict"
|
18 |
-
]
|
|
|
19 |
},
|
20 |
"authors": [
|
21 |
{
|
5 |
"license": "MIT",
|
6 |
"require": {
|
7 |
"composer/installers": "^1.0.0",
|
8 |
+
"rosell-dk/webp-convert": "^2.7.0",
|
9 |
"rosell-dk/webp-convert-cloud-service": "^2.0.0",
|
10 |
"rosell-dk/dom-util-for-webp": "^0.4.0",
|
11 |
"rosell-dk/htaccess-capability-tester": "^0.9.0"
|
15 |
"scripts": {
|
16 |
"ci": [
|
17 |
"@composer validate --no-check-all --strict"
|
18 |
+
],
|
19 |
+
"copylocalwebpconvert": "rsync -varz /home/rosell/github/webp-convert/src/ /home/rosell/github/webp-express/vendor/rosell-dk/webp-convert/src/"
|
20 |
},
|
21 |
"authors": [
|
22 |
{
|
docs/publishing.md
ADDED
@@ -0,0 +1,149 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
*These instructions are actually just notes for myself*. Some commands work only in my environment.
|
2 |
+
|
3 |
+
If it is only the README.txt that has been changed:
|
4 |
+
|
5 |
+
1. Validate the readme: https://wordpress.org/plugins/developers/readme-validator/
|
6 |
+
2. Update the tag below to current
|
7 |
+
3. Update the commit message below
|
8 |
+
4. Run the below
|
9 |
+
```
|
10 |
+
cd /var/www/we/svn/
|
11 |
+
cp ~/github/webp-express/README.txt trunk
|
12 |
+
cp ~/github/webp-express/README.txt tags/0.20.1
|
13 |
+
svn status
|
14 |
+
svn ci -m 'minor change in README (now tested with Wordpress 5.8 RC2)'
|
15 |
+
```
|
16 |
+
|
17 |
+
After that, check out if it is applied, on http://plugins.svn.wordpress.org/webp-express/
|
18 |
+
|
19 |
+
and here:
|
20 |
+
https://wordpress.org/plugins/webp-express/
|
21 |
+
|
22 |
+
'changelog.txt' changed too?
|
23 |
+
WELL - DON'T PUBLISH THAT, without publishing a new release. Wordfence will complain!
|
24 |
+
|
25 |
+
-------------------
|
26 |
+
|
27 |
+
|
28 |
+
|
29 |
+
|
30 |
+
|
31 |
+
before rsync, do this:
|
32 |
+
|
33 |
+
- Run `composer update` in plugin root (and remove unneeded files. Check development.md !)
|
34 |
+
1. `composer update`
|
35 |
+
2. `composer dump-autoload -o`
|
36 |
+
3.
|
37 |
+
rm -r vendor/rosell-dk/webp-convert/docs
|
38 |
+
rm -r vendor/rosell-dk/webp-convert/src/Helpers/*.txt
|
39 |
+
rm vendor/rosell-dk/dom-util-for-webp/phpstan.neon
|
40 |
+
rm composer.lock
|
41 |
+
rmdir vendor/bin
|
42 |
+
|
43 |
+
- Make sure you remembered to update version in:
|
44 |
+
1. the *webp-express.php* file
|
45 |
+
2. in `lib/options/enqueue_scripts.php`
|
46 |
+
3. in `lib/classes/ConverterHelperIndependent.php`
|
47 |
+
4. in `README.txt` (Stable tag)
|
48 |
+
- Perhaps make some final improvements of the readme.
|
49 |
+
Inspiration: https://www.smashingmagazine.com/2011/11/improve-wordpress-plugins-readme-txt/
|
50 |
+
https://pippinsplugins.com/how-to-properly-format-and-enhance-your-plugins-readme-txt-file-for-the-wordpress-org-repository/
|
51 |
+
- Make sure you upgraded the *Upgrade Notice* section.
|
52 |
+
- Skim: https://codex.wordpress.org/Writing_a_Plugin
|
53 |
+
- https://developer.wordpress.org/plugins/wordpress-org/
|
54 |
+
- Validate the readme: https://wordpress.org/plugins/developers/readme-validator/
|
55 |
+
- Make sure you have pushed the latest commits to github
|
56 |
+
- Make sure you have released the new version on github
|
57 |
+
|
58 |
+
And then:
|
59 |
+
|
60 |
+
```
|
61 |
+
cd /var/www/we/svn
|
62 |
+
svn up
|
63 |
+
```
|
64 |
+
|
65 |
+
If you have deleted folders (check with rsync --dry-run), then do this:
|
66 |
+
```
|
67 |
+
cd trunk
|
68 |
+
svn delete [folder] (ie: svn delete lib/options/js/0.14.5). It is ok that the folder contains files
|
69 |
+
svn ci -m 'deleted folder'
|
70 |
+
```
|
71 |
+
(workflow cycle: http://svnbook.red-bean.com/en/1.7/svn.tour.cycle.html)
|
72 |
+
|
73 |
+
Then time to rsync into trunk:
|
74 |
+
dry-run first:
|
75 |
+
```
|
76 |
+
cd /var/www/we/svn
|
77 |
+
rsync -avh --dry-run --exclude '.git' --exclude '.github' --exclude='composer.lock' --exclude='scripts' --exclude='vendor/rosell-dk/webp-convert/.git' --exclude='vendor/rosell-dk/webp-convert/.git' --exclude='.gitignore' ~/github/webp-express/ /var/www/we/svn/trunk/ --delete
|
78 |
+
```
|
79 |
+
|
80 |
+
```
|
81 |
+
cd /var/www/we/svn
|
82 |
+
rsync -avh --exclude '.git' --exclude '.github' --exclude='composer.lock' --exclude='scripts' --exclude='vendor/rosell-dk/webp-convert/.git' --exclude='.gitignore' ~/github/webp-express/ /var/www/we/svn/trunk/ --delete
|
83 |
+
```
|
84 |
+
|
85 |
+
**It should NOT contain a long list of files! (unless you have run phpreplace)**
|
86 |
+
|
87 |
+
*- and then WITHOUT "--dry-run" (remove "--dry-run" from above, and run)*
|
88 |
+
|
89 |
+
|
90 |
+
## TESTING
|
91 |
+
|
92 |
+
1. Create a zip
|
93 |
+
- Select all the files in trunk (not the trunk dir itself)
|
94 |
+
- Save it to /var/www/we/pre-releases/version-number/webp-express.zip
|
95 |
+
2. Upload the zip to the LiteSpeed test site and test
|
96 |
+
- Login to https://betasite.com.br/rosell/wp-admin/plugins.php
|
97 |
+
- Go to Plugins | Add new and click the "Upload Plugin button"
|
98 |
+
3. Upload the zip to other sites and test
|
99 |
+
- https://lutzenmanagement.dk/wp-admin/plugin-install.php
|
100 |
+
- http://mystress.dk/wp-admin/plugin-install.php
|
101 |
+
... etc
|
102 |
+
|
103 |
+
|
104 |
+
### Committing
|
105 |
+
Add new and remove deleted (no need to do anything with the modified):
|
106 |
+
```
|
107 |
+
cd svn
|
108 |
+
svn stat (to see what has changed)
|
109 |
+
svn add --force . (this will add all new files - https://stackoverflow.com/questions/2120844/how-do-i-add-all-new-files-to-svn)
|
110 |
+
svn status | grep '^!' (to see if any files have been deleted)
|
111 |
+
svn status | grep '^!' | awk '{print $2}' | xargs svn delete --force (this will delete locally deleted files in the repository as well - see https://stackoverflow.com/questions/4608798/how-to-remove-all-deleted-files-from-repository/33139931)
|
112 |
+
```
|
113 |
+
|
114 |
+
Then add a new tag
|
115 |
+
```
|
116 |
+
cd svn
|
117 |
+
svn cp trunk tags/0.20.1 (this will copy trunk into a new tag)
|
118 |
+
```
|
119 |
+
|
120 |
+
And commit!
|
121 |
+
```
|
122 |
+
svn ci -m '0.20.1'
|
123 |
+
```
|
124 |
+
|
125 |
+
|
126 |
+
After that, check out if it is applied, on http://plugins.svn.wordpress.org/webp-express/
|
127 |
+
And then, of course, test the update
|
128 |
+
... And THEN. Grab a beer and celebrate!
|
129 |
+
|
130 |
+
And lastly, check if there are any new issues on https://coderisk.com
|
131 |
+
|
132 |
+
|
133 |
+
# New:
|
134 |
+
|
135 |
+
# svn co https://plugins.svn.wordpress.org/webp-express /var/www/webp-express-tests/svn
|
136 |
+
|
137 |
+
|
138 |
+
BTW: Link til referral (optimole): https://app.impact.com/
|
139 |
+
|
140 |
+
|
141 |
+
|
142 |
+
# On brand new system:
|
143 |
+
|
144 |
+
1. Install svn
|
145 |
+
`sudo apt-get install subversion`
|
146 |
+
|
147 |
+
2. create dir for plugin, and `cd` into it
|
148 |
+
3. Check out
|
149 |
+
`svn co https://plugins.svn.wordpress.org/webp-express my-local-dir` (if in dir, replace "my-lockal-dir" with ".")
|
lib/classes/AdminUi.php
CHANGED
@@ -74,7 +74,6 @@ class AdminUi
|
|
74 |
);
|
75 |
|
76 |
// Add Media page
|
77 |
-
/* Uncommented until ready!
|
78 |
add_media_page(
|
79 |
'WebP Express', //Page Title
|
80 |
'WebP Express', //Menu Title
|
@@ -82,6 +81,6 @@ class AdminUi
|
|
82 |
'webp_express_conversion_page', // slug
|
83 |
array('\WebPExpress\WCFMPage', 'display') //The function to be called to output the content for this page.
|
84 |
);
|
85 |
-
|
86 |
}
|
87 |
}
|
74 |
);
|
75 |
|
76 |
// Add Media page
|
|
|
77 |
add_media_page(
|
78 |
'WebP Express', //Page Title
|
79 |
'WebP Express', //Menu Title
|
81 |
'webp_express_conversion_page', // slug
|
82 |
array('\WebPExpress\WCFMPage', 'display') //The function to be called to output the content for this page.
|
83 |
);
|
84 |
+
|
85 |
}
|
86 |
}
|
lib/classes/AlterHtmlHelper.php
CHANGED
@@ -221,7 +221,8 @@ class AlterHtmlHelper
|
|
221 |
// Fix scheme (use same as source)
|
222 |
$sourceUrlComponents = parse_url($sourceUrl);
|
223 |
$destUrlComponents = parse_url($destUrl);
|
224 |
-
|
|
|
225 |
}
|
226 |
|
227 |
|
@@ -241,7 +242,7 @@ class AlterHtmlHelper
|
|
241 |
if (self::$options['only-for-webp-enabled-browsers']) {
|
242 |
if (!isset($_SERVER['HTTP_ACCEPT']) || (strpos($_SERVER['HTTP_ACCEPT'], 'image/webp') === false)) {
|
243 |
return $returnValueOnFail;
|
244 |
-
}
|
245 |
}
|
246 |
|
247 |
// Fail for relative urls. Wordpress doesn't use such very much anyway
|
221 |
// Fix scheme (use same as source)
|
222 |
$sourceUrlComponents = parse_url($sourceUrl);
|
223 |
$destUrlComponents = parse_url($destUrl);
|
224 |
+
$port = isset($sourceUrlComponents['port']) ? ":" . $sourceUrlComponents['port'] : "";
|
225 |
+
return $sourceUrlComponents['scheme'] . '://' . $sourceUrlComponents['host'] . $port . $destUrlComponents['path'];
|
226 |
}
|
227 |
|
228 |
|
242 |
if (self::$options['only-for-webp-enabled-browsers']) {
|
243 |
if (!isset($_SERVER['HTTP_ACCEPT']) || (strpos($_SERVER['HTTP_ACCEPT'], 'image/webp') === false)) {
|
244 |
return $returnValueOnFail;
|
245 |
+
}
|
246 |
}
|
247 |
|
248 |
// Fail for relative urls. Wordpress doesn't use such very much anyway
|
lib/classes/Convert.php
CHANGED
@@ -288,8 +288,22 @@ class Convert
|
|
288 |
|
289 |
$result['nonce-tick'] = $nonceTick;
|
290 |
|
|
|
|
|
|
|
291 |
echo json_encode($result, JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK | JSON_PRETTY_PRINT);
|
|
|
292 |
wp_die();
|
293 |
}
|
294 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
295 |
}
|
288 |
|
289 |
$result['nonce-tick'] = $nonceTick;
|
290 |
|
291 |
+
|
292 |
+
$result = self::utf8ize($result);
|
293 |
+
|
294 |
echo json_encode($result, JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK | JSON_PRETTY_PRINT);
|
295 |
+
|
296 |
wp_die();
|
297 |
}
|
298 |
|
299 |
+
private static function utf8ize($d) {
|
300 |
+
if (is_array($d)) {
|
301 |
+
foreach ($d as $k => $v) {
|
302 |
+
$d[$k] = self::utf8ize($v);
|
303 |
+
}
|
304 |
+
} else if (is_string ($d)) {
|
305 |
+
return utf8_encode($d);
|
306 |
+
}
|
307 |
+
return $d;
|
308 |
+
}
|
309 |
}
|
lib/classes/ConvertHelperIndependent.php
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?php
|
2 |
|
3 |
/*
|
4 |
-
This class is made to be dependent
|
5 |
It is used by webp-on-demand.php, which does not register an auto loader. It is also used for bulk conversion.
|
6 |
*/
|
7 |
namespace WebPExpress;
|
@@ -571,7 +571,7 @@ APACHE
|
|
571 |
$text = preg_replace('#' . preg_quote($_SERVER["DOCUMENT_ROOT"]) . '#', '[doc-root]', $text);
|
572 |
|
573 |
// TODO: Put version number somewhere else. Ie \WebPExpress\VersionNumber::version
|
574 |
-
$text = 'WebP Express 0.
|
575 |
|
576 |
$logFile = self::getLogFilename($source, $logDir);
|
577 |
|
1 |
<?php
|
2 |
|
3 |
/*
|
4 |
+
This class is made to not be dependent on Wordpress functions and must be kept like that.
|
5 |
It is used by webp-on-demand.php, which does not register an auto loader. It is also used for bulk conversion.
|
6 |
*/
|
7 |
namespace WebPExpress;
|
571 |
$text = preg_replace('#' . preg_quote($_SERVER["DOCUMENT_ROOT"]) . '#', '[doc-root]', $text);
|
572 |
|
573 |
// TODO: Put version number somewhere else. Ie \WebPExpress\VersionNumber::version
|
574 |
+
$text = 'WebP Express 0.21.0. ' . $msgTop . ', ' . date("Y-m-d H:i:s") . "\n\r\n\r" . $text;
|
575 |
|
576 |
$logFile = self::getLogFilename($source, $logDir);
|
577 |
|
lib/classes/Destination.php
ADDED
@@ -0,0 +1,208 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
This class is made to not be dependent on Wordpress functions and must be kept like that.
|
5 |
+
It is used by webp-on-demand.php, which does not register an auto loader. It is also used for bulk conversion.
|
6 |
+
*/
|
7 |
+
namespace WebPExpress;
|
8 |
+
|
9 |
+
class Destination
|
10 |
+
{
|
11 |
+
|
12 |
+
/**
|
13 |
+
*
|
14 |
+
* @return boolean Whether or not the destination corresponding to a given source should be stored in the same folder
|
15 |
+
* or the separate folder (in wp-content/webp-express)
|
16 |
+
*/
|
17 |
+
private static function storeMingledOrNot($source, $mingled, $uploadDirAbs)
|
18 |
+
{
|
19 |
+
if ($mingled == false) {
|
20 |
+
return false;
|
21 |
+
}
|
22 |
+
|
23 |
+
// Option is set for mingled, but this does not neccessarily means we should store "mingled".
|
24 |
+
// - because the mingled option only applies to upload folder, the rest is stored in separate cache folder
|
25 |
+
// So, return true, if $source is located in upload folder
|
26 |
+
return (strpos($source, $uploadDirAbs) === 0);
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Append ".webp" to path or replace extension with "webp", depending on what is appropriate.
|
31 |
+
*
|
32 |
+
* If destination-folder is set to mingled and destination-extension is set to "set" and
|
33 |
+
* the path is inside upload folder, the appropriate thing is to SET the extension.
|
34 |
+
* Otherwise, it is to APPEND.
|
35 |
+
*
|
36 |
+
* @param string $path
|
37 |
+
* @param boolean $mingled Mingled setting (notice that mingled only applies to uploads)
|
38 |
+
* @param string $replaceExt If file extension should be replaced with ".webp". If false, ".webp" is appended.
|
39 |
+
* @param boolean $inUploadFolder
|
40 |
+
*/
|
41 |
+
public static function appendOrSetExtension($path, $mingled, $replaceExt, $inUploadFolder)
|
42 |
+
{
|
43 |
+
if ($mingled && $replaceExt && $inUploadFolder) {
|
44 |
+
return preg_replace('/\\.(jpe?g|png)$/i', '', $path) . '.webp';
|
45 |
+
} else {
|
46 |
+
return $path . '.webp';
|
47 |
+
}
|
48 |
+
}
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Get destination path corresponding to the source path given (and some configurations)
|
52 |
+
*
|
53 |
+
* If for example Operation mode is set to "mingled" and extension is set to "Append .webp",
|
54 |
+
* the result of finding the destination path that corresponds to "/path/to/logo.jpg" will be "/path/to/logo.jpg.webp".
|
55 |
+
*
|
56 |
+
* The imageRoots are tried in order.
|
57 |
+
* This means that ie "uploads" is preferred over "wp-content" even though the source resides in both (when uploads is inside wp-content)
|
58 |
+
* So destination is ie [..]/wp-content/webp-express/uploads/[..]", rather than same but with "wp-content"
|
59 |
+
*
|
60 |
+
* @param string $source Path to source file
|
61 |
+
* @param string $webExpressContentDirAbs
|
62 |
+
* @param string $uploadDirAbs
|
63 |
+
* @param DestinationOptions $destinationOptions
|
64 |
+
* @param ImageRoots $imageRoots An image roots object
|
65 |
+
*
|
66 |
+
* @return string|false Returns path to destination corresponding to source, or false on failure
|
67 |
+
*/
|
68 |
+
public static function getDestinationPathCorrespondingToSource(
|
69 |
+
$source,
|
70 |
+
$webExpressContentDirAbs,
|
71 |
+
$uploadDirAbs,
|
72 |
+
$destinationOptions,
|
73 |
+
$imageRoots
|
74 |
+
) {
|
75 |
+
// At this point, everything has already been checked for sanity. But for good meassure, lets
|
76 |
+
// check the most important parts again. This is after all a public method.
|
77 |
+
// ------------------------------------------------------------------
|
78 |
+
|
79 |
+
$mingled = $destinationOptions->mingled;
|
80 |
+
$replaceExt = $destinationOptions->replaceExt;
|
81 |
+
$useDocRoot = $destinationOptions->useDocRoot;
|
82 |
+
|
83 |
+
try {
|
84 |
+
// Check source
|
85 |
+
// --------------
|
86 |
+
// TODO: make this check work with symlinks
|
87 |
+
//$source = SanityCheck::absPathExistsAndIsFileInDocRoot($source);
|
88 |
+
|
89 |
+
// Calculate destination and check that the result is sane
|
90 |
+
// -------------------------------------------------------
|
91 |
+
if (self::storeMingledOrNot($source, $mingled, $uploadDirAbs)) {
|
92 |
+
$destination = self::appendOrSetExtension($source, $mingled, $replaceExt, true);
|
93 |
+
} else {
|
94 |
+
|
95 |
+
if ($useDocRoot) {
|
96 |
+
// We must find the relative path from document root to source.
|
97 |
+
// However, we dont know if document root is resolved or not.
|
98 |
+
// We also do not know if source begins with a resolved or unresolved document root.
|
99 |
+
// And we cannot be sure that document root is resolvable.
|
100 |
+
|
101 |
+
// Lets say:
|
102 |
+
// 1. document root is unresolvable.
|
103 |
+
// 2. document root is configured to something unresolved ("/my-website")
|
104 |
+
// 3. source is resolved and within an image root ("/var/www/my-website/wp-content/uploads/test.jpg")
|
105 |
+
// 4. all image roots are resolvable.
|
106 |
+
// 5. Paths::canUseDocRootForRelPaths()) returned true
|
107 |
+
|
108 |
+
// Can the relative path then be found?
|
109 |
+
// Actually, yes.
|
110 |
+
// We can loop through the image roots.
|
111 |
+
// When we get to the "uploads" root, it must neccessarily contain the unresolved document root.
|
112 |
+
// It will in other words be: "my-website/wp-content/uploads"
|
113 |
+
// It can not be configured to the resolved path because canUseDocRootForRelPaths would have then returned false as
|
114 |
+
// It would not be possible to establish that "/var/www/my-website/wp-content/uploads/" is within document root, as
|
115 |
+
// document root is "/my-website" and unresolvable.
|
116 |
+
// To sum up, we have:
|
117 |
+
// If document root is unresolvable while canUseDocRootForRelPaths() succeeded, then the image roots will all begin with
|
118 |
+
// the unresolved path.
|
119 |
+
// In this method, if $useDocRootForStructuringCacheDir is true, then it is assumed that canUseDocRootForRelPaths()
|
120 |
+
// succeeded.
|
121 |
+
// OH!
|
122 |
+
// I realize that the image root can be passed as well:
|
123 |
+
// $imageRoot = $webExpressContentDirAbs . '/webp-images';
|
124 |
+
// So the question is: Will $webExpressContentDirAbs also be the unresolved path?
|
125 |
+
// That variable is calculated in WodConfigLoader based on various methods available.
|
126 |
+
// I'm not digging into it, but would expect it to in some cases be resolved. Which means that relative path can not
|
127 |
+
// be found.
|
128 |
+
// So. Lets play it safe and require that document root is resolvable in order to use docRoot for structure
|
129 |
+
|
130 |
+
if (!PathHelper::isDocRootAvailable()) {
|
131 |
+
throw new \Exception(
|
132 |
+
'Can not calculate destination using "doc-root" structure as document root is not available. $_SERVER["DOCUMENT_ROOT"] is empty. ' .
|
133 |
+
'This is probably a misconfiguration on the server. ' .
|
134 |
+
'However, WebP Express can function without using documument root. If you resave options and regenerate the .htaccess files, it should ' .
|
135 |
+
'automatically start to structure the webp files in subfolders that are relative the image root folders rather than document-root.'
|
136 |
+
);
|
137 |
+
}
|
138 |
+
|
139 |
+
if (!PathHelper::isDocRootAvailableAndResolvable()) {
|
140 |
+
throw new \Exception(
|
141 |
+
'Can not calculate destination using "doc-root" structure as document root cannot be resolved for symlinks using "realpath". The ' .
|
142 |
+
'reason for that is probably that open_basedir protection has been set up and that document root is outside outside that open_basedir. ' .
|
143 |
+
'WebP Express can function in that setting, however you will need to resave options and regenerate the .htaccess files. It should then ' .
|
144 |
+
'automatically stop to structure the webp files as relative to document root and instead structure them as relative to image root folders.'
|
145 |
+
);
|
146 |
+
}
|
147 |
+
$docRoot = rtrim(realpath($_SERVER["DOCUMENT_ROOT"]), '/');
|
148 |
+
$imageRoot = $webExpressContentDirAbs . '/webp-images';
|
149 |
+
|
150 |
+
// TODO: make this check work with symlinks
|
151 |
+
//SanityCheck::absPathIsInDocRoot($imageRoot);
|
152 |
+
|
153 |
+
$sourceRel = substr(realpath($source), strlen($docRoot) + 1);
|
154 |
+
$destination = $imageRoot . '/doc-root/' . $sourceRel;
|
155 |
+
$destination = self::appendOrSetExtension($destination, $mingled, $replaceExt, false);
|
156 |
+
|
157 |
+
|
158 |
+
// TODO: make this check work with symlinks
|
159 |
+
//$destination = SanityCheck::absPathIsInDocRoot($destination);
|
160 |
+
} else {
|
161 |
+
$destination = '';
|
162 |
+
|
163 |
+
$sourceResolved = realpath($source);
|
164 |
+
|
165 |
+
|
166 |
+
// Check roots until we (hopefully) get a match.
|
167 |
+
// (that is: find a root which the source is inside)
|
168 |
+
foreach ($imageRoots->getArray() as $i => $imageRoot) {
|
169 |
+
// in $obj, "rel-path" is only set when document root can be used for relative paths.
|
170 |
+
// So, if it is set, we can use it (beware: we cannot neccessarily use realpath on document root,
|
171 |
+
// but we do not need to - see the long comment in Paths::canUseDocRootForRelPaths())
|
172 |
+
|
173 |
+
$rootPath = $imageRoot->getAbsPath();
|
174 |
+
/*
|
175 |
+
if (isset($obj['rel-path'])) {
|
176 |
+
$docRoot = rtrim($_SERVER["DOCUMENT_ROOT"], '/');
|
177 |
+
$rootPath = $docRoot . '/' . $obj['rel-path'];
|
178 |
+
} else {
|
179 |
+
// If "rel-path" isn't set, then abs-path is, and we can use that.
|
180 |
+
$rootPath = $obj['abs-path'];
|
181 |
+
}*/
|
182 |
+
|
183 |
+
// $source may be resolved or not. Same goes for $rootPath.
|
184 |
+
// We can assume that $rootPath is resolvable using realpath (it ought to exist and be within open_basedir for WP to function)
|
185 |
+
// We can also assume that $source is resolvable (it ought to exist and within open_basedir)
|
186 |
+
// So: Resolve both! and test if the resolved source begins with the resolved rootPath.
|
187 |
+
if (strpos($sourceResolved, realpath($rootPath)) !== false) {
|
188 |
+
$relPath = substr($sourceResolved, strlen(realpath($rootPath)) + 1);
|
189 |
+
$relPath = self::appendOrSetExtension($relPath, $mingled, $replaceExt, false);
|
190 |
+
|
191 |
+
$destination = $webExpressContentDirAbs . '/webp-images/' . $imageRoot->id . '/' . $relPath;
|
192 |
+
break;
|
193 |
+
}
|
194 |
+
}
|
195 |
+
if ($destination == '') {
|
196 |
+
return false;
|
197 |
+
}
|
198 |
+
}
|
199 |
+
}
|
200 |
+
|
201 |
+
} catch (SanityException $e) {
|
202 |
+
return false;
|
203 |
+
}
|
204 |
+
|
205 |
+
return $destination;
|
206 |
+
}
|
207 |
+
|
208 |
+
}
|
lib/classes/DestinationOptions.php
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WebPExpress;
|
4 |
+
|
5 |
+
class DestinationOptions
|
6 |
+
{
|
7 |
+
|
8 |
+
public $mingled;
|
9 |
+
public $useDocRoot;
|
10 |
+
public $replaceExt;
|
11 |
+
public $scope;
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Constructor.
|
15 |
+
*
|
16 |
+
* @param array $imageRootDef assoc array containing "id", "url" and either "abs-path", "rel-path" or both.
|
17 |
+
*/
|
18 |
+
public function __construct($mingled, $useDocRoot, $replaceExt, $scope)
|
19 |
+
{
|
20 |
+
$this->mingled = $mingled;
|
21 |
+
$this->useDocRoot = $useDocRoot;
|
22 |
+
$this->replaceExt = $replaceExt;
|
23 |
+
$this->scope = $scope;
|
24 |
+
}
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Set properties from config file
|
28 |
+
*
|
29 |
+
* @param array $config WebP Express configuration object
|
30 |
+
*/
|
31 |
+
public static function createFromConfig(&$config)
|
32 |
+
{
|
33 |
+
return new DestinationOptions(
|
34 |
+
$config['destination-folder'] == 'mingled', // "mingled" or "separate"
|
35 |
+
$config['destination-structure'] == 'doc-root', // "doc-root" or "image-roots"
|
36 |
+
$config['destination-extension'] == 'set', // "set" or "append"
|
37 |
+
$config['scope']
|
38 |
+
);
|
39 |
+
}
|
40 |
+
|
41 |
+
|
42 |
+
}
|
lib/classes/DestinationUrl.php
ADDED
@@ -0,0 +1,229 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WebPExpress;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* This class is not used yet! - and not finished!
|
7 |
+
* It is the beginning of a refactor, where code is to be moved from AlterHtmlHelper to here
|
8 |
+
*/
|
9 |
+
class DestinationUrl
|
10 |
+
{
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Gets relative path between a base url and another.
|
14 |
+
* Returns false if the url isn't a subpath
|
15 |
+
*
|
16 |
+
* @param $imageUrl (ie "http://example.com/wp-content/image.jpg")
|
17 |
+
* @param $baseUrl (ie "http://example.com/wp-content")
|
18 |
+
* @return path or false (ie "/image.jpg")
|
19 |
+
*/
|
20 |
+
public static function getRelUrlPath($imageUrl, $baseUrl)
|
21 |
+
{
|
22 |
+
$baseUrlComponents = parse_url($baseUrl);
|
23 |
+
/* ie:
|
24 |
+
(
|
25 |
+
[scheme] => http
|
26 |
+
[host] => we0
|
27 |
+
[path] => /wordpress/uploads-moved
|
28 |
+
)*/
|
29 |
+
|
30 |
+
$imageUrlComponents = parse_url($imageUrl);
|
31 |
+
/* ie:
|
32 |
+
(
|
33 |
+
[scheme] => http
|
34 |
+
[host] => we0
|
35 |
+
[path] => /wordpress/uploads-moved/logo.jpg
|
36 |
+
)*/
|
37 |
+
if ($baseUrlComponents['host'] != $imageUrlComponents['host']) {
|
38 |
+
return false;
|
39 |
+
}
|
40 |
+
|
41 |
+
// Check if path begins with base path
|
42 |
+
if (strpos($imageUrlComponents['path'], $baseUrlComponents['path']) !== 0) {
|
43 |
+
return false;
|
44 |
+
}
|
45 |
+
|
46 |
+
// Remove base path from path (we know it begins with basepath, from previous check)
|
47 |
+
return substr($imageUrlComponents['path'], strlen($baseUrlComponents['path']));
|
48 |
+
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Get url for webp from source url, (if ), given a certain baseUrl / baseDir.
|
53 |
+
* Base can for example be uploads or wp-content.
|
54 |
+
*
|
55 |
+
* returns false
|
56 |
+
* - if no source file found in that base
|
57 |
+
* - or source file is found but webp file isn't there and the `only-for-webps-that-exists` option is set
|
58 |
+
*
|
59 |
+
* @param string $sourceUrl Url of source image (ie http://example.com/wp-content/image.jpg)
|
60 |
+
* @param string $rootId Id (created in Config::updateAutoloadedOptions). Ie "uploads", "content" or any image root id
|
61 |
+
* @param string $baseUrl Base url of source image (ie http://example.com/wp-content)
|
62 |
+
* @param string $baseDir Base dir of source image (ie /var/www/example.com/wp-content)
|
63 |
+
* @param object $destinationOptions
|
64 |
+
*/
|
65 |
+
public static function getWebPUrlInImageRoot($sourceUrl, $rootId, $baseUrl, $baseDir, $destinationOptions)
|
66 |
+
{
|
67 |
+
//error_log('getWebPUrlInImageRoot:' . $sourceUrl . ':' . $baseUrl . ':' . $baseDir);
|
68 |
+
|
69 |
+
|
70 |
+
$srcPathRel = self::getRelUrlPath($sourceUrl, $baseUrl);
|
71 |
+
|
72 |
+
if ($srcPathRel === false) {
|
73 |
+
return false;
|
74 |
+
}
|
75 |
+
|
76 |
+
// Calculate file path to source
|
77 |
+
$srcPathAbs = $baseDir . $srcPathRel;
|
78 |
+
|
79 |
+
// Check that source file exists
|
80 |
+
if (!@file_exists($srcPathAbs)) {
|
81 |
+
return false;
|
82 |
+
}
|
83 |
+
|
84 |
+
// Calculate destination of webp (both path and url)
|
85 |
+
// ----------------------------------------
|
86 |
+
|
87 |
+
// We are calculating: $destPathAbs and $destUrl.
|
88 |
+
|
89 |
+
if (!isset($destinationOptions->scope) || !in_array($rootId, $destinationOptions->scope)) {
|
90 |
+
return false;
|
91 |
+
}
|
92 |
+
|
93 |
+
$destinationRoot = Paths::destinationRoot2(
|
94 |
+
$rootId,
|
95 |
+
$destinationOptions
|
96 |
+
);
|
97 |
+
|
98 |
+
$relPathFromImageRootToSource = PathHelper::getRelDir(
|
99 |
+
realpath(Paths::getAbsDirById($rootId)),
|
100 |
+
realpath($srcPathAbs)
|
101 |
+
);
|
102 |
+
$relPathFromImageRootToDest = Destination::appendOrSetExtension(
|
103 |
+
$relPathFromImageRootToSource,
|
104 |
+
$destinationOptions->mingled,
|
105 |
+
$destinationOptions->replaceExt,
|
106 |
+
($rootId == 'uploads')
|
107 |
+
);
|
108 |
+
$destPathAbs = $destinationRoot['abs-path'] . '/' . $relPathFromImageRootToDest;
|
109 |
+
$webpMustExist = self::$options['only-for-webps-that-exists'];
|
110 |
+
if ($webpMustExist && (!@file_exists($destPathAbs))) {
|
111 |
+
return false;
|
112 |
+
}
|
113 |
+
|
114 |
+
$destUrl = $destinationRoot['url'] . '/' . $relPathFromImageRootToDest;
|
115 |
+
|
116 |
+
// Fix scheme (use same as source)
|
117 |
+
$sourceUrlComponents = parse_url($sourceUrl);
|
118 |
+
$destUrlComponents = parse_url($destUrl);
|
119 |
+
$port = isset($sourceUrlComponents['port']) ? ":" . $sourceUrlComponents['port'] : "";
|
120 |
+
return $sourceUrlComponents['scheme'] . '://' . $sourceUrlComponents['host'] . $port . $destUrlComponents['path'];
|
121 |
+
}
|
122 |
+
|
123 |
+
|
124 |
+
/**
|
125 |
+
* Get url for webp
|
126 |
+
* returns second argument if no webp
|
127 |
+
*
|
128 |
+
* @param $sourceUrl
|
129 |
+
* @param $returnValueOnFail
|
130 |
+
*/
|
131 |
+
public static function getWebPUrl($sourceUrl, $returnValueOnFail)
|
132 |
+
{
|
133 |
+
// Get the options
|
134 |
+
self::getOptions();
|
135 |
+
|
136 |
+
// Fail for webp-disabled browsers (when "only-for-webp-enabled-browsers" is set)
|
137 |
+
if (self::$options['only-for-webp-enabled-browsers']) {
|
138 |
+
if (!isset($_SERVER['HTTP_ACCEPT']) || (strpos($_SERVER['HTTP_ACCEPT'], 'image/webp') === false)) {
|
139 |
+
return $returnValueOnFail;
|
140 |
+
}
|
141 |
+
}
|
142 |
+
|
143 |
+
// Fail for relative urls. Wordpress doesn't use such very much anyway
|
144 |
+
if (!preg_match('#^https?://#', $sourceUrl)) {
|
145 |
+
return $returnValueOnFail;
|
146 |
+
}
|
147 |
+
|
148 |
+
// Fail if the image type isn't enabled
|
149 |
+
switch (self::$options['image-types']) {
|
150 |
+
case 0:
|
151 |
+
return $returnValueOnFail;
|
152 |
+
case 1:
|
153 |
+
if (!preg_match('#(jpe?g)$#', $sourceUrl)) {
|
154 |
+
return $returnValueOnFail;
|
155 |
+
}
|
156 |
+
break;
|
157 |
+
case 2:
|
158 |
+
if (!preg_match('#(png)$#', $sourceUrl)) {
|
159 |
+
return $returnValueOnFail;
|
160 |
+
}
|
161 |
+
break;
|
162 |
+
case 3:
|
163 |
+
if (!preg_match('#(jpe?g|png)$#', $sourceUrl)) {
|
164 |
+
return $returnValueOnFail;
|
165 |
+
}
|
166 |
+
break;
|
167 |
+
}
|
168 |
+
|
169 |
+
//error_log('source url:' . $sourceUrl);
|
170 |
+
|
171 |
+
// Try all image roots
|
172 |
+
foreach (self::$options['scope'] as $rootId) {
|
173 |
+
$baseDir = Paths::getAbsDirById($rootId);
|
174 |
+
$baseUrl = Paths::getUrlById($rootId);
|
175 |
+
|
176 |
+
//error_log('baseurl: ' . $baseUrl);
|
177 |
+
if (Multisite::isMultisite() && ($rootId == 'uploads')) {
|
178 |
+
$baseUrl = Paths::getUploadUrl();
|
179 |
+
$baseDir = Paths::getUploadDirAbs();
|
180 |
+
}
|
181 |
+
|
182 |
+
$result = self::getWebPUrlInImageRoot($sourceUrl, $rootId, $baseUrl, $baseDir);
|
183 |
+
if ($result !== false) {
|
184 |
+
return $result;
|
185 |
+
}
|
186 |
+
|
187 |
+
// Try the hostname aliases.
|
188 |
+
if (!isset(self::$options['hostname-aliases'])) {
|
189 |
+
continue;
|
190 |
+
}
|
191 |
+
$hostnameAliases = self::$options['hostname-aliases'];
|
192 |
+
|
193 |
+
$hostname = Paths::getHostNameOfUrl($baseUrl);
|
194 |
+
$baseUrlComponents = parse_url($baseUrl);
|
195 |
+
$sourceUrlComponents = parse_url($sourceUrl);
|
196 |
+
// ie: [scheme] => http, [host] => we0, [path] => /wordpress/uploads-moved
|
197 |
+
|
198 |
+
if ((!isset($baseUrlComponents['host'])) || (!isset($sourceUrlComponents['host']))) {
|
199 |
+
continue;
|
200 |
+
}
|
201 |
+
|
202 |
+
foreach ($hostnameAliases as $hostnameAlias) {
|
203 |
+
|
204 |
+
if ($sourceUrlComponents['host'] != $hostnameAlias) {
|
205 |
+
continue;
|
206 |
+
}
|
207 |
+
//error_log('hostname alias:' . $hostnameAlias);
|
208 |
+
|
209 |
+
$baseUrlOnAlias = $baseUrlComponents['scheme'] . '://' . $hostnameAlias . $baseUrlComponents['path'];
|
210 |
+
//error_log('baseurl (alias):' . $baseUrlOnAlias);
|
211 |
+
|
212 |
+
$result = self::getWebPUrlInImageRoot($sourceUrl, $rootId, $baseUrlOnAlias, $baseDir);
|
213 |
+
if ($result !== false) {
|
214 |
+
$resultUrlComponents = parse_url($result);
|
215 |
+
return $sourceUrlComponents['scheme'] . '://' . $hostnameAlias . $resultUrlComponents['path'];
|
216 |
+
}
|
217 |
+
}
|
218 |
+
}
|
219 |
+
|
220 |
+
return $returnValueOnFail;
|
221 |
+
}
|
222 |
+
|
223 |
+
/*
|
224 |
+
public static function getWebPUrlOrSame($sourceUrl, $returnValueOnFail)
|
225 |
+
{
|
226 |
+
return self::getWebPUrl($sourceUrl, $sourceUrl);
|
227 |
+
}*/
|
228 |
+
|
229 |
+
}
|
lib/classes/FileHelper.php
CHANGED
@@ -222,7 +222,12 @@ class FileHelper
|
|
222 |
}
|
223 |
|
224 |
$return = false;
|
225 |
-
|
|
|
|
|
|
|
|
|
|
|
226 |
if ($handle !== false) {
|
227 |
// Return value is either file content or false
|
228 |
if (filesize($filename) == 0) {
|
222 |
}
|
223 |
|
224 |
$return = false;
|
225 |
+
try {
|
226 |
+
$handle = @fopen($filename, "r");
|
227 |
+
} catch (\ErrorException $exception) {
|
228 |
+
$handle = false;
|
229 |
+
error_log($exception->getMessage());
|
230 |
+
}
|
231 |
if ($handle !== false) {
|
232 |
// Return value is either file content or false
|
233 |
if (filesize($filename) == 0) {
|
lib/classes/ImageRoot.php
CHANGED
@@ -6,6 +6,9 @@ use \WebPExpress\PathHelper;
|
|
6 |
|
7 |
class ImageRoot
|
8 |
{
|
|
|
|
|
|
|
9 |
/**
|
10 |
* Constructor.
|
11 |
*
|
6 |
|
7 |
class ImageRoot
|
8 |
{
|
9 |
+
|
10 |
+
public $id;
|
11 |
+
|
12 |
/**
|
13 |
* Constructor.
|
14 |
*
|
lib/classes/Paths.php
CHANGED
@@ -604,6 +604,54 @@ APACHE
|
|
604 |
}
|
605 |
}
|
606 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
607 |
/**
|
608 |
* Append ".webp" to path or replace extension with "webp", depending on what is appropriate.
|
609 |
*
|
@@ -639,7 +687,14 @@ APACHE
|
|
639 |
*
|
640 |
* @return array url and abs-path of destination
|
641 |
*/
|
642 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
643 |
$root = self::destinationRoot($rootId, $destinationFolder, $destinationStructure);
|
644 |
$inUploadFolder = ($rootId == 'upload');
|
645 |
$relPath = ConvertHelperIndependent::appendOrSetExtension($relPath, $destinationFolder, $destinationExt, $inUploadFolder);
|
@@ -658,6 +713,16 @@ APACHE
|
|
658 |
$config['destination-extension'],
|
659 |
$config['destination-structure']
|
660 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
661 |
}
|
662 |
|
663 |
public static function getUrlPathById($dirId) {
|
604 |
}
|
605 |
}
|
606 |
|
607 |
+
// this shall replace destinationRoot
|
608 |
+
public static function destinationRoot2($rootId, $destinationOptions)
|
609 |
+
{
|
610 |
+
if (($destinationOptions->mingled) && ($rootId == 'uploads')) {
|
611 |
+
return [
|
612 |
+
'url' => self::getUrlById('uploads'),
|
613 |
+
'abs-path' => self::getUploadDirAbs()
|
614 |
+
];
|
615 |
+
} else {
|
616 |
+
|
617 |
+
// Its within these bases:
|
618 |
+
$destUrl = self::getUrlById('wp-content') . '/webp-express/webp-images';
|
619 |
+
$destPath = self::getAbsDirById('wp-content') . '/webp-express/webp-images';
|
620 |
+
|
621 |
+
if (($destinationOptions->useDocRoot) && self::canUseDocRootForStructuringCacheDir()) {
|
622 |
+
$relPathFromDocRootToSourceImageRoot = PathHelper::getRelPathFromDocRootToDirNoDirectoryTraversalAllowed(
|
623 |
+
self::getAbsDirById($rootId)
|
624 |
+
);
|
625 |
+
return [
|
626 |
+
'url' => $destUrl . '/doc-root/' . $relPathFromDocRootToSourceImageRoot,
|
627 |
+
'abs-path' => $destPath . '/doc-root/' . $relPathFromDocRootToSourceImageRoot
|
628 |
+
];
|
629 |
+
} else {
|
630 |
+
return [
|
631 |
+
'url' => $destUrl . '/' . $rootId,
|
632 |
+
'abs-path' => $destPath . '/' . $rootId
|
633 |
+
];
|
634 |
+
}
|
635 |
+
}
|
636 |
+
}
|
637 |
+
|
638 |
+
public static function getRootAndRelPathForDestination($destinationPath, $imageRoots) {
|
639 |
+
foreach ($imageRoots->getArray() as $i => $imageRoot) {
|
640 |
+
$rootPath = $imageRoot->getAbsPath();
|
641 |
+
if (strpos($destinationPath, realpath($rootPath)) !== false) {
|
642 |
+
$relPath = substr($destinationPath, strlen(realpath($rootPath)) + 1);
|
643 |
+
return [$imageRoot->id, $relPath];
|
644 |
+
}
|
645 |
+
}
|
646 |
+
return ['', ''];
|
647 |
+
}
|
648 |
+
|
649 |
+
|
650 |
+
|
651 |
+
// PST:
|
652 |
+
// appendOrSetExtension() have been copied from ConvertHelperIndependent.
|
653 |
+
// TODO: I should complete the move ASAP.
|
654 |
+
|
655 |
/**
|
656 |
* Append ".webp" to path or replace extension with "webp", depending on what is appropriate.
|
657 |
*
|
687 |
*
|
688 |
* @return array url and abs-path of destination
|
689 |
*/
|
690 |
+
/*
|
691 |
+
public static function destinationPath($rootId, $relPath, $destinationFolder, $destinationExt, $destinationStructure) {
|
692 |
+
|
693 |
+
// TODO: Current logic will not do!
|
694 |
+
// We must use ConvertHelper::getDestination for the abs path.
|
695 |
+
// And we must use logic from AlterHtmlHelper to get the URL
|
696 |
+
// Perhaps this method must be abandonned
|
697 |
+
|
698 |
$root = self::destinationRoot($rootId, $destinationFolder, $destinationStructure);
|
699 |
$inUploadFolder = ($rootId == 'upload');
|
700 |
$relPath = ConvertHelperIndependent::appendOrSetExtension($relPath, $destinationFolder, $destinationExt, $inUploadFolder);
|
713 |
$config['destination-extension'],
|
714 |
$config['destination-structure']
|
715 |
);
|
716 |
+
}*/
|
717 |
+
|
718 |
+
public static function getDestinationPathCorrespondingToSource($source, $destinationOptions) {
|
719 |
+
return Destination::getDestinationPathCorrespondingToSource(
|
720 |
+
$source,
|
721 |
+
Paths::getWebPExpressContentDirAbs(),
|
722 |
+
Paths::getUploadDirAbs(),
|
723 |
+
$destinationOptions,
|
724 |
+
new ImageRoots(self::getImageRootsDef())
|
725 |
+
);
|
726 |
}
|
727 |
|
728 |
public static function getUrlPathById($dirId) {
|
lib/classes/PluginDeactivate.php
CHANGED
@@ -29,7 +29,7 @@ class PluginDeactivate
|
|
29 |
$msg
|
30 |
);
|
31 |
|
32 |
-
wp_redirect(
|
33 |
exit;
|
34 |
}
|
35 |
}
|
29 |
$msg
|
30 |
);
|
31 |
|
32 |
+
wp_redirect(admin_url('options-general.php?page=webp_express_settings_page'));
|
33 |
exit;
|
34 |
}
|
35 |
}
|
lib/classes/WCFMApi.php
CHANGED
@@ -3,6 +3,7 @@
|
|
3 |
namespace WebPExpress;
|
4 |
|
5 |
use \WebPConvert\Convert\Converters\Stack;
|
|
|
6 |
|
7 |
/**
|
8 |
*
|
@@ -27,9 +28,12 @@ class WCFMApi
|
|
27 |
case 'info':
|
28 |
$result = self::processInfo();
|
29 |
break;
|
|
|
|
|
|
|
30 |
}
|
31 |
|
32 |
-
$json = wp_json_encode($result, JSON_UNESCAPED_SLASHES |
|
33 |
if ($json === false) {
|
34 |
// TODO: We can do better error handling than this!
|
35 |
throw new \Exception('Failed encoding result to JSON');
|
@@ -126,6 +130,7 @@ class WCFMApi
|
|
126 |
require_once __DIR__ . "/../../vendor/autoload.php";
|
127 |
$availableConverters = Stack::getAvailableConverters();
|
128 |
|
|
|
129 |
$converters = [];
|
130 |
//$supportsEncoding = [];
|
131 |
foreach ($availableConverters as $converter) {
|
@@ -136,7 +141,10 @@ class WCFMApi
|
|
136 |
/*if () {
|
137 |
$supportsEncoding[] = $converter;
|
138 |
}*/
|
139 |
-
}
|
|
|
|
|
|
|
140 |
$systemStatus = [
|
141 |
'converterRequirements' => [
|
142 |
'gd' => [
|
@@ -151,7 +159,8 @@ class WCFMApi
|
|
151 |
//supportedStandardOptions: {
|
152 |
|
153 |
return [
|
154 |
-
'converters' => $converters,
|
|
|
155 |
'systemStatus' => $systemStatus
|
156 |
];
|
157 |
|
@@ -204,26 +213,75 @@ class WCFMApi
|
|
204 |
$absPath = Paths::getAbsDirById($rootId) . '/' . $relPath;
|
205 |
//absPathExistsAndIsFile
|
206 |
SanityCheck::absPathExists($absPath);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
207 |
|
208 |
-
// TODO:
|
|
|
|
|
|
|
209 |
|
210 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
211 |
|
212 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
213 |
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
227 |
}
|
228 |
|
229 |
public static function processGetTree() {
|
@@ -260,4 +318,37 @@ class WCFMApi
|
|
260 |
|
261 |
}
|
262 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
263 |
}
|
3 |
namespace WebPExpress;
|
4 |
|
5 |
use \WebPConvert\Convert\Converters\Stack;
|
6 |
+
use \WebPConvert\WebPConvert;
|
7 |
|
8 |
/**
|
9 |
*
|
28 |
case 'info':
|
29 |
$result = self::processInfo();
|
30 |
break;
|
31 |
+
case 'convert':
|
32 |
+
$result = self::processConvert();
|
33 |
+
break;
|
34 |
}
|
35 |
|
36 |
+
$json = wp_json_encode($result, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
|
37 |
if ($json === false) {
|
38 |
// TODO: We can do better error handling than this!
|
39 |
throw new \Exception('Failed encoding result to JSON');
|
130 |
require_once __DIR__ . "/../../vendor/autoload.php";
|
131 |
$availableConverters = Stack::getAvailableConverters();
|
132 |
|
133 |
+
/*
|
134 |
$converters = [];
|
135 |
//$supportsEncoding = [];
|
136 |
foreach ($availableConverters as $converter) {
|
141 |
/*if () {
|
142 |
$supportsEncoding[] = $converter;
|
143 |
}*/
|
144 |
+
//}
|
145 |
+
|
146 |
+
|
147 |
+
|
148 |
$systemStatus = [
|
149 |
'converterRequirements' => [
|
150 |
'gd' => [
|
159 |
//supportedStandardOptions: {
|
160 |
|
161 |
return [
|
162 |
+
//'converters' => $converters,
|
163 |
+
//'options' => WebPConvert::getConverterOptionDefinitions('png', false, true)['general'],
|
164 |
'systemStatus' => $systemStatus
|
165 |
];
|
166 |
|
213 |
$absPath = Paths::getAbsDirById($rootId) . '/' . $relPath;
|
214 |
//absPathExistsAndIsFile
|
215 |
SanityCheck::absPathExists($absPath);
|
216 |
+
$result = [
|
217 |
+
'original' => [
|
218 |
+
//'filename' => $absPath,
|
219 |
+
//'abspath' => $absPath,
|
220 |
+
'size' => filesize($absPath),
|
221 |
+
'url' => Paths::getUrlById($rootId) . '/' . $relPath,
|
222 |
+
]
|
223 |
+
];
|
224 |
|
225 |
+
// TODO: NO!
|
226 |
+
// We must use ConvertHelper::getDestination for the abs path.
|
227 |
+
// And we must use logic from AlterHtmlHelper to get the URL
|
228 |
+
//error_log('path:' . $absPathDest);
|
229 |
|
230 |
+
$destinationOptions = DestinationOptions::createFromConfig($config);
|
231 |
+
if ($destinationOptions->useDocRoot) {
|
232 |
+
if (!(Paths::canUseDocRootForStructuringCacheDir())) {
|
233 |
+
$destinationOptions->useDocRoot = false;
|
234 |
+
}
|
235 |
+
}
|
236 |
+
$imageRoots = new ImageRoots(Paths::getImageRootsDef());
|
237 |
+
$destinationPath = Paths::getDestinationPathCorrespondingToSource($absPath, $destinationOptions);
|
238 |
+
list($rootId, $destRelPath) = Paths::getRootAndRelPathForDestination($destinationPath, $imageRoots);
|
239 |
+
if ($rootId != '') {
|
240 |
+
$absPathDest = Paths::getAbsDirById($rootId) . '/' . $destRelPath;
|
241 |
+
$destinationUrl = Paths::getUrlById($rootId) . '/' . $destRelPath;
|
242 |
|
243 |
+
SanityCheck::absPath($absPathDest);
|
244 |
+
if (@file_exists($absPathDest)) {
|
245 |
+
$result['converted'] = [
|
246 |
+
'abspath' => $absPathDest,
|
247 |
+
'size' => filesize($absPathDest),
|
248 |
+
'url' => $destinationUrl,
|
249 |
+
'log' => ''
|
250 |
+
];
|
251 |
+
}
|
252 |
|
253 |
+
}
|
254 |
+
|
255 |
+
|
256 |
+
//$destinationUrl = DestinationUrl::
|
257 |
+
|
258 |
+
/*
|
259 |
+
error_log('dest:' . $destinationPath);
|
260 |
+
error_log('dest root:' . $rootId);
|
261 |
+
error_log('dest path:' . $destRelPath);
|
262 |
+
error_log('dest abs-dir:' . Paths::getAbsDirById($rootId) . '/' . $destRelPath);
|
263 |
+
error_log('dest url:' . Paths::getUrlById($rootId) . '/' . $destRelPath);
|
264 |
+
*/
|
265 |
+
|
266 |
+
//error_log('url:' . $destinationPath);
|
267 |
+
//error_log('destinationOptions' . print_r($destinationOptions, true));
|
268 |
+
|
269 |
+
/*
|
270 |
+
$destination = Paths::destinationPathConvenience($rootId, $relPath, $config);
|
271 |
+
$absPathDest = $destination['abs-path'];
|
272 |
+
SanityCheck::absPath($absPathDest);
|
273 |
+
error_log('path:' . $absPathDest);
|
274 |
+
|
275 |
+
if (@file_exists($absPathDest)) {
|
276 |
+
$result['converted'] = [
|
277 |
+
'abspath' => $destination['abs-path'],
|
278 |
+
'size' => filesize($destination['abs-path']),
|
279 |
+
'url' => $destination['url'],
|
280 |
+
'log' => ''
|
281 |
+
];
|
282 |
+
}
|
283 |
+
*/
|
284 |
+
return $result;
|
285 |
}
|
286 |
|
287 |
public static function processGetTree() {
|
318 |
|
319 |
}
|
320 |
|
321 |
+
public static function processConvert() {
|
322 |
+
|
323 |
+
Validate::postHasKey('args');
|
324 |
+
|
325 |
+
//$args = json_decode(sanitize_text_field(stripslashes($_POST['args'])), true);
|
326 |
+
|
327 |
+
$args = $_POST['args'];
|
328 |
+
if (!array_key_exists('path', $args)) {
|
329 |
+
throw new \Exception('"path" argument missing for command');
|
330 |
+
}
|
331 |
+
if (!array_key_exists('convertOptions', $args)) {
|
332 |
+
throw new \Exception('"convertOptions" argument missing for command');
|
333 |
+
}
|
334 |
+
|
335 |
+
return ['success' => true, 'optionsReceived' => $args['convertOptions']];
|
336 |
+
|
337 |
+
/*
|
338 |
+
$path = SanityCheck::pathWithoutDirectoryTraversal($args['path']);
|
339 |
+
$path = ltrim($path, '/');
|
340 |
+
$pathTokens = explode('/', $path);
|
341 |
+
|
342 |
+
$rootId = array_shift($pathTokens); // Shift off the first item, which is the scope
|
343 |
+
$relPath = implode('/', $pathTokens);
|
344 |
+
$config = Config::loadConfigAndFix();
|
345 |
+
$rootIds = Paths::filterOutSubRoots($config['scope']);
|
346 |
+
if (!in_array($rootId, $rootIds)) {
|
347 |
+
throw new \Exception('Invalid scope');
|
348 |
+
}
|
349 |
+
|
350 |
+
$absPath = Paths::getAbsDirById($rootId) . '/' . $relPath;
|
351 |
+
//absPathExistsAndIsFile
|
352 |
+
SanityCheck::absPathExists($absPath); */
|
353 |
+
}
|
354 |
}
|
lib/classes/WCFMPage.php
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?php
|
2 |
|
3 |
namespace WebPExpress;
|
4 |
-
|
5 |
/**
|
6 |
*
|
7 |
*/
|
@@ -11,10 +11,27 @@ class WCFMPage
|
|
11 |
|
12 |
// callback (registred in AdminUi)
|
13 |
public static function display() {
|
14 |
-
echo '<
|
15 |
-
|
16 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
//include WEBPEXPRESS_PLUGIN_DIR . '/lib/options/page.php';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
}
|
19 |
|
20 |
/* We add directly to head instead, to get the type="module"
|
@@ -31,10 +48,14 @@ class WCFMPage
|
|
31 |
$wcfmNonce = wp_create_nonce('webpexpress-wcfm-nonce');
|
32 |
echo '<scr' . 'ipt>window.webpExpressWCFMNonce = "' . $wcfmNonce . '";</scr' . 'ipt>';
|
33 |
|
34 |
-
echo '<scr' . 'ipt src="' . $baseUrl . '/wcfm-options.js?
|
35 |
-
echo '<scr' . 'ipt type="module" src="' . $baseUrl . '/
|
|
|
|
|
|
|
|
|
36 |
|
37 |
-
echo '<link rel="stylesheet" href="' . $baseUrl . '/style.css?
|
38 |
}
|
39 |
|
40 |
}
|
1 |
<?php
|
2 |
|
3 |
namespace WebPExpress;
|
4 |
+
use \WebPConvert\WebPConvert;
|
5 |
/**
|
6 |
*
|
7 |
*/
|
11 |
|
12 |
// callback (registred in AdminUi)
|
13 |
public static function display() {
|
14 |
+
echo '<div id="wcfmintro">' .
|
15 |
+
'<h1>WebP Express Conversion Browser</h1>' .
|
16 |
+
'<p>' .
|
17 |
+
'Note: To convert manually, you still need to use Bulk Convert on the settings page ' .
|
18 |
+
'(or you can use WP CLI)' .
|
19 |
+
'</p>' .
|
20 |
+
'</div>';
|
21 |
+
|
22 |
+
echo '<div id="webpconvert-filemanager" style="position:relative; min-height:400px">loading</div>';
|
23 |
//include WEBPEXPRESS_PLUGIN_DIR . '/lib/options/page.php';
|
24 |
+
|
25 |
+
/* require_once __DIR__ . "/../../vendor/autoload.php";
|
26 |
+
// print_r(WebPConvert::getConverterOptionDefinitions('png', false, true));
|
27 |
+
echo '<pre>' .
|
28 |
+
print_r(
|
29 |
+
json_encode(
|
30 |
+
WebPConvert::getConverterOptionDefinitions('png', false, true),
|
31 |
+
JSON_PRETTY_PRINT
|
32 |
+
),
|
33 |
+
true
|
34 |
+
) . '</pre>';*/
|
35 |
}
|
36 |
|
37 |
/* We add directly to head instead, to get the type="module"
|
48 |
$wcfmNonce = wp_create_nonce('webpexpress-wcfm-nonce');
|
49 |
echo '<scr' . 'ipt>window.webpExpressWCFMNonce = "' . $wcfmNonce . '";</scr' . 'ipt>';
|
50 |
|
51 |
+
echo '<scr' . 'ipt src="' . $baseUrl . '/wcfm-options.js?11"></scr' . 'ipt>';
|
52 |
+
//echo '<scr' . 'ipt type="module" src="' . $baseUrl . '/vendor.js?1"></scr' . 'ipt>';
|
53 |
+
|
54 |
+
// TODO: Use generated name (ie index.bc30fc12.js) and make a script in npm for automatically
|
55 |
+
// updating this file when copying
|
56 |
+
echo '<scr' . 'ipt type="module" src="' . $baseUrl . '/wcfm.js?22"></scr' . 'ipt>';
|
57 |
|
58 |
+
echo '<link rel="stylesheet" href="' . $baseUrl . '/style.css?9">';
|
59 |
}
|
60 |
|
61 |
}
|
lib/options/submit.php
CHANGED
@@ -790,6 +790,6 @@ if (!$result['saved-both-config']) {
|
|
790 |
}
|
791 |
}
|
792 |
|
793 |
-
wp_redirect(
|
794 |
|
795 |
exit();
|
790 |
}
|
791 |
}
|
792 |
|
793 |
+
wp_redirect(admin_url('options-general.php?page=webp_express_settings_page'));
|
794 |
|
795 |
exit();
|
lib/wcfm/style.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.selectbox[data-v-a8799ec4]{width:200px;position:relative;display:inline-block}.selectbox .box[data-v-a8799ec4]{border:1px solid #000;padding:5px 10px;width:100%;box-sizing:border-box;cursor:pointer;user-select:none}.selectbox .box[data-v-a8799ec4]::after{position:absolute;content:"";top:14px;right:10px;width:0;height:0;border:6px solid transparent;border-color:#000 transparent transparent}.selectbox .box.is-open[data-v-a8799ec4]::after{border-color:transparent transparent #000;top:6px}.selectbox .dropdown[data-v-a8799ec4]{position:absolute;z-index:100;background-color:#fff;border:1px solid #eee;left:0;right:0}.selectbox .dropdown .option[data-v-a8799ec4]{padding:5px 10px;border-bottom:1px solid #eee}.selectbox .dropdown .option .icon[data-v-a8799ec4]{width:18px;height:18px;float:right}.selectbox .dropdown .option[data-v-a8799ec4]:hover{background-color:#eee;cursor:pointer;user-select:none}.quality-lossy .input-quality[data-v-74dc2e9e]{width:40px;padding:3px 5px}.quality-lossy .auto label[data-v-74dc2e9e]{padding:0 10px 0 20px}.quality-lossless .input-quality[data-v-db8a8a84]{width:40px}.convert-options>div>div[data-v-115f004a]:first-child{min-width:120px}.convert-options>div>div[data-v-115f004a]:last-child{width:300px;box-sizing:border-box}.convert-options>div>div:last-child [data-v-115f004a]{box-sizing:border-box;width:100%}.convert-options>div input.method[data-v-115f004a]{width:40px}.fileitem[data-v-a2787766]{vertical-align:middle;white-space:nowrap}.fileitem p[data-v-a2787766]:hover{background:#eee}.fileitem p[data-v-a2787766]{user-select:none;cursor:pointer;margin:0;padding:3px;line-height:25px;border-bottom:1px solid #f2f2f2}.fileitem p .foldUnfold[data-v-a2787766]{user-select:none;cursor:pointer}.fileitem p .buttons[data-v-a2787766]{float:right;cursor:default}.fileitem p .buttons button[data-v-a2787766]{margin-top:2px;margin-bottom:0;cursor:pointer;background-color:#fff;margin-right:10px}.fileitem p svg.icon-fold[data-v-a2787766],.fileitem p svg.icon-unfold[data-v-a2787766]{width:12px;height:12px;vertical-align:middle;padding:3px;margin-right:3px;display:inline-block;border:0 solid grey}.fileitem p svg.icon-file[data-v-a2787766],.fileitem p svg.icon-folder[data-v-a2787766]{width:20px;height:20px;display:inline;vertical-align:middle;padding-top:1px;padding-bottom:2px;padding-right:5px}.fileitem p svg.icon-file[data-v-a2787766]{margin-left:22px}ul{list-style-type:none;padding:0;margin:0}li{margin:0 0 0 20px}.multipane{display:flex;align-items:stretch}.multipane.layout-h{flex-direction:column}.multipane.layout-v{flex-direction:row}.multipane div.pane{position:relative;z-index:1;padding:15px;overflow:auto;border:1px solid #ccc;background:#fff}@media (max-width:800px){.multipane{flex-direction:column!important}div.pane{width:100%!important;margin-bottom:8px;box-sizing:border-box}.multipane-resizer{display:none!important}}.multipane-resizer{display:block;position:relative;z-index:2}.layout-h>.multipane-resizer{height:10px;margin-top:-10px;top:5px;cursor:row-resize}.layout-v>.multipane-resizer{width:14px;cursor:col-resize}.layout-v>.multipane-resizer:before{display:block;content:"";width:3px;height:40px;position:absolute;top:50%;left:50%;margin-top:-20px;margin-left:-2px;border-left:1px solid #ccc;border-right:1px solid #ccc}.layout-v>.multipane-resizer:hover:before{border-color:#999}#webpconvert-filemanager,.mainpanel{height:100%}.mainpanel{min-height:400px}#app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input{padding:3px 5px}.table-table{display:table}.table-table>*{display:table-row}.table-table>*>*{display:table-cell;padding:5px 20px 5px 0}.table-inline-block>div>*{display:inline-block;margin-right:10px;padding:5px 20px 5px 0}.table-inline-block>div>:first-child{width:120px}
|
1 |
+
.splitpanes{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;height:100%}.splitpanes--vertical{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.splitpanes--horizontal{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.splitpanes--dragging *{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.splitpanes__pane{width:100%;height:100%;overflow:hidden}.splitpanes--vertical .splitpanes__pane{-webkit-transition:width .2s ease-out;transition:width .2s ease-out}.splitpanes--horizontal .splitpanes__pane{-webkit-transition:height .2s ease-out;transition:height .2s ease-out}.splitpanes--dragging .splitpanes__pane{-webkit-transition:none;transition:none}.splitpanes__splitter{-ms-touch-action:none;touch-action:none}.splitpanes--vertical>.splitpanes__splitter{min-width:1px;cursor:col-resize}.splitpanes--horizontal>.splitpanes__splitter{min-height:1px;cursor:row-resize}.splitpanes.default-theme .splitpanes__pane{background-color:#f2f2f2}.splitpanes.default-theme .splitpanes__splitter{background-color:#fff;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;-ms-flex-negative:0;flex-shrink:0}.splitpanes.default-theme .splitpanes__splitter:after,.splitpanes.default-theme .splitpanes__splitter:before{content:"";position:absolute;top:50%;left:50%;background-color:#00000026;-webkit-transition:background-color .3s;transition:background-color .3s}.splitpanes.default-theme .splitpanes__splitter:hover:after,.splitpanes.default-theme .splitpanes__splitter:hover:before{background-color:#00000040}.splitpanes.default-theme .splitpanes__splitter:first-child{cursor:auto}.default-theme.splitpanes .splitpanes .splitpanes__splitter{z-index:1}.default-theme.splitpanes--vertical>.splitpanes__splitter,.default-theme .splitpanes--vertical>.splitpanes__splitter{width:7px;border-left:1px solid #eee;margin-left:-1px}.default-theme.splitpanes--vertical>.splitpanes__splitter:after,.default-theme .splitpanes--vertical>.splitpanes__splitter:after,.default-theme.splitpanes--vertical>.splitpanes__splitter:before,.default-theme .splitpanes--vertical>.splitpanes__splitter:before{-webkit-transform:translateY(-50%);transform:translateY(-50%);width:1px;height:30px}.default-theme.splitpanes--vertical>.splitpanes__splitter:before,.default-theme .splitpanes--vertical>.splitpanes__splitter:before{margin-left:-2px}.default-theme.splitpanes--vertical>.splitpanes__splitter:after,.default-theme .splitpanes--vertical>.splitpanes__splitter:after{margin-left:1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter,.default-theme .splitpanes--horizontal>.splitpanes__splitter{height:7px;border-top:1px solid #eee;margin-top:-1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:after,.default-theme .splitpanes--horizontal>.splitpanes__splitter:after,.default-theme.splitpanes--horizontal>.splitpanes__splitter:before,.default-theme .splitpanes--horizontal>.splitpanes__splitter:before{-webkit-transform:translateX(-50%);transform:translate(-50%);width:30px;height:1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:before,.default-theme .splitpanes--horizontal>.splitpanes__splitter:before{margin-top:-2px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:after,.default-theme .splitpanes--horizontal>.splitpanes__splitter:after{margin-top:1px}.selectbox[data-v-3ed78ba0]{width:200px;position:relative;display:inline-block}.selectbox .box[data-v-3ed78ba0]{border:1px solid black;padding:5px 10px;width:100%;box-sizing:border-box;cursor:pointer;user-select:none}.selectbox .box[data-v-3ed78ba0]:after{position:absolute;content:"";top:14px;right:10px;width:0;height:0;border:6px solid transparent;border-color:black transparent transparent transparent}.selectbox .box.is-open[data-v-3ed78ba0]:after{border-color:transparent transparent black transparent;top:6px}.selectbox .dropdown[data-v-3ed78ba0]{position:absolute;z-index:100;background-color:#fff;border:1px solid #eee;left:0;right:0}.selectbox .dropdown .option[data-v-3ed78ba0]{padding:5px 10px;border-bottom:1px solid #eee}.selectbox .dropdown .option .icon[data-v-3ed78ba0]{width:18px;height:18px;float:right}.selectbox .dropdown .option[data-v-3ed78ba0]:hover{background-color:#eee;cursor:pointer;user-select:none}.help-icon{display:inline-block;margin-left:2px}.convert-option-menu{display:inline-block;margin-left:2px}.menu-inner{font-size:16px}.icon{width:16px;height:16px;vertical-align:top;padding:0 2px 1px}.buttons a:first-child{margin-left:0}.buttons a{margin:0 5px;background-color:#f5f5f5;border-radius:0;color:#000!important;padding:2px 10px;border-color:#fff;text-decoration:none!important;font-family:arial,sans-serif;font-size:13.33px;border-width:1px;border-style:solid;border-bottom-color:#ccc;border-right-color:#ccc}.buttons a:hover{background-color:#fff}.buttons a.mouse-down{border-bottom-color:#fff;border-right-color:#fff;border-top-color:#ccc;border-left-color:#ccc}input[data-v-641ada22]{width:100%}input.small[data-v-641ada22]{max-width:100px}.multiselect__option--selected .click-to-add{display:none}.click-to-add[data-v-6b6f53d2]{float:right;font-size:13px}.vue-toggles{cursor:pointer;display:flex;align-items:center;border-radius:9999px;overflow:hidden;transition:background-color ease .2s,width ease .2s,height ease .2s}.vue-toggles .dot{position:relative;display:flex;align-items:center;border-radius:9999px;box-shadow:0 1px 3px #0000001a,0 1px 2px #0000000f;transition:margin ease .2s}.vue-toggles .text{position:absolute;font-family:inherit;user-select:none;white-space:nowrap}@media all and (-ms-high-contrast: none){.vue-toggles .text{top:50%;transform:translateY(-50%)}}@media (prefers-reduced-motion){.vue-toggles,.vue-toggles *,.vue-toggles *:before,.vue-toggles *:after{animation:none!important;transition:none!important;transition-duration:none!important}}.slider-target,.slider-target *{-webkit-touch-callout:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;touch-action:none;-ms-user-select:none;-moz-user-select:none;user-select:none;box-sizing:border-box}.slider-target{position:relative}.slider-base,.slider-connects{width:100%;height:100%;position:relative;z-index:1}.slider-connects{overflow:hidden;z-index:0}.slider-connect,.slider-origin{will-change:transform;position:absolute;z-index:1;top:0;right:0;-ms-transform-origin:0 0;-webkit-transform-origin:0 0;-webkit-transform-style:preserve-3d;transform-origin:0 0;transform-style:flat}.slider-connect{height:100%;width:100%}.slider-origin{height:10%;width:10%}.slider-txt-dir-rtl.slider-horizontal .slider-origin{left:0;right:auto}.slider-vertical .slider-origin{width:0}.slider-horizontal .slider-origin{height:0}.slider-handle{-webkit-backface-visibility:hidden;backface-visibility:hidden;position:absolute}.slider-touch-area{height:100%;width:100%}.slider-state-tap .slider-connect,.slider-state-tap .slider-origin{transition:transform .3s}.slider-state-drag *{cursor:inherit!important}.slider-horizontal{height:6px}.slider-horizontal .slider-handle{width:16px;height:16px;top:-6px;right:-8px}.slider-vertical{width:6px;height:300px}.slider-vertical .slider-handle{width:16px;height:16px;top:-8px;right:-6px}.slider-txt-dir-rtl.slider-horizontal .slider-handle{left:-8px;right:auto}.slider-base{background-color:#d4e0e7}.slider-base,.slider-connects{border-radius:3px}.slider-connect{background:#41b883;cursor:pointer}.slider-draggable{cursor:ew-resize}.slider-vertical .slider-draggable{cursor:ns-resize}.slider-handle{width:16px;height:16px;border-radius:50%;background:#fff;border:0;right:-8px;box-shadow:.5px .5px 2px 1px #00000052;cursor:-webkit-grab;cursor:grab}.slider-handle:focus{outline:none}.slider-active{box-shadow:.5px .5px 2px 1px #0000006b;cursor:-webkit-grabbing;cursor:grabbing}[disabled] .slider-connect{background:#b8b8b8}[disabled].slider-handle,[disabled] .slider-handle,[disabled].slider-target{cursor:not-allowed}[disabled] .slider-tooltip{background:#b8b8b8;border-color:#b8b8b8}.slider-tooltip{position:absolute;display:block;font-size:14px;font-weight:500;white-space:nowrap;padding:2px 5px;min-width:20px;text-align:center;color:#fff;border-radius:5px;border:1px solid #41b883;background:#41b883}.slider-horizontal .slider-tooltip{transform:translate(-50%);left:50%;bottom:24px}.slider-horizontal .slider-tooltip:before{content:"";position:absolute;bottom:-10px;left:50%;width:0;height:0;border:5px solid transparent;border-top-color:inherit;transform:translate(-50%)}.slider-vertical .slider-tooltip{transform:translateY(-50%);top:50%;right:24px}.slider-vertical .slider-tooltip:before{content:"";position:absolute;right:-10px;top:50%;width:0;height:0;border:5px solid transparent;border-left-color:inherit;transform:translateY(-50%)}.slider-horizontal .slider-origin>.slider-tooltip{transform:translate(50%);left:auto;bottom:14px}.slider-vertical .slider-origin>.slider-tooltip{transform:translateY(-18px);top:auto;right:18px}.slider-pips,.slider-pips *{box-sizing:border-box}.slider-pips{position:absolute;color:#999}.slider-value{position:absolute;white-space:nowrap;text-align:center}.slider-value-sub{color:#ccc;font-size:10px}.slider-marker{position:absolute;background:#ccc}.slider-marker-large,.slider-marker-sub{background:#aaa}.slider-pips-horizontal{padding:10px 0;height:80px;top:100%;left:0;width:100%}.slider-value-horizontal{transform:translate(-50%,50%)}.slider-rtl .slider-value-horizontal{transform:translate(50%,50%)}.slider-marker-horizontal.slider-marker{margin-left:-1px;width:2px;height:5px}.slider-marker-horizontal.slider-marker-sub{height:10px}.slider-marker-horizontal.slider-marker-large{height:15px}.slider-pips-vertical{padding:0 10px;height:100%;top:0;left:100%}.slider-value-vertical{transform:translateY(-50%);padding-left:25px}.slider-rtl .slider-value-vertical{transform:translateY(50%)}.slider-marker-vertical.slider-marker{width:5px;height:2px;margin-top:-1px}.slider-marker-vertical.slider-marker-sub{width:10px}.slider-marker-vertical.slider-marker-large{width:15px}.slider[data-v-636c0afb]{padding:10px 0}.slider .slider-connect{background-color:#0075ff}.slider .slider-tooltip{background-color:#0075ff;border-color:#0075ff;display:none}.slider:hover .slider-tooltip{display:block}.slider .slider-active .slider-tooltip{display:block}.convert-option>div[data-v-5def6a67]:first-child{min-width:210px;vertical-align:top;padding-top:10px}.convert-option>div[data-v-5def6a67]:last-child{width:300px;box-sizing:border-box}.convert-option input.method[data-v-5def6a67]{width:40px}.fade-enter-active[data-v-5def6a67]{transition:all 1s;opacity:0;transform:scale(0);transform:translate(30px)}.fade-enter-to[data-v-5def6a67]{opacity:1;transform:translate(0);transform:scale(1)}.fade-leave-active[data-v-5def6a67]{transition:all 1s;opacity:1}.fade-leave-to[data-v-5def6a67]{opacity:0}.view-select[data-v-563ca147]{display:block;text-align:right}.view *[data-v-563ca147]:first-child{display:inline-block;margin-right:10px}.view *[data-v-563ca147]:last-child{width:200px;display:inline-block}.fileitem.selected p[data-v-1c7f963e]{background:#ccc!important}.fileitem[data-v-1c7f963e]{vertical-align:middle;white-space:nowrap}.fileitem p[data-v-1c7f963e]:hover{background:#eee}.fileitem p[data-v-1c7f963e]{user-select:none;cursor:pointer;margin:0;padding:3px;line-height:25px;border-bottom:1px solid #f2f2f2}.fileitem p .fold-unfold[data-v-1c7f963e]{user-select:none;cursor:pointer}.fileitem p .fold-unfold.empty[data-v-1c7f963e]{visibility:hidden}.fileitem p svg.icon-unfold[data-v-1c7f963e],.fileitem p svg.icon-fold[data-v-1c7f963e]{width:12px;height:12px;vertical-align:middle;padding:3px;margin-right:3px;display:inline-block;border:0px solid grey}.fileitem p svg.icon-folder[data-v-1c7f963e],.fileitem p svg.icon-file[data-v-1c7f963e]{width:20px;height:20px;display:inline;vertical-align:middle;padding-top:1px;padding-bottom:2px;padding-right:5px}.fileitem p svg.icon-file[data-v-1c7f963e]{margin-left:22px}ul{list-style-type:none;padding:0;margin:0}li{margin:0 0 0 20px}.modal-mask{position:fixed;z-index:9998;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:table}.modal-mask .modal-wrapper{height:100%;width:100%;padding-top:30px}.modal-mask .modal-wrapper .modal-container{padding:0;background-color:#fff;border-radius:2px;box-shadow:0 2px 8px #00000054;font-family:Helvetica,Arial,sans-serif;position:relative}.modal-mask .modal-wrapper .modal-container .title{position:absolute;left:0px;top:0;right:0;height:20px;background-color:#ccc;padding:5px 0 0 15px;font-size:14px;font-weight:bold}.modal-mask .modal-wrapper .modal-container .close-button{position:absolute;right:2px;top:2px;background-color:#fff;padding:2px 5px;font-size:12px;z-index:999;border-radius:20px;border:1px solid #ccc}.modal-mask .modal-wrapper .modal-container .close-button:hover{cursor:pointer}.modal-mask .modal-wrapper .modal-container .modal-body{position:absolute;top:25px;bottom:0px;left:0;right:0;overflow-y:auto;padding:20px}.modal-mask .modal-wrapper .modal-container .modal-body .close-button-with-text{text-align:right;margin-bottom:5px}.modal-mask .modal-wrapper .modal-container .modal-body .close-button-with-text button{padding:3px 20px}.modal-enter-active,.modal-leave-active{transition:opacity .5s ease}.modal-enter-from,.modal-leave-to{opacity:0}.image-viewport{position:relative}.image-viewport>.zoomer{width:100%;border:solid 1px silver;overflow:hidden}.image-viewport>.zoomer img{vertical-align:top;object-fit:contain;width:100%;height:100%;user-drag:none;-webkit-user-drag:none;-moz-user-drag:none}.image-viewport .zoom-info{display:none;position:absolute;bottom:0px;right:0px;padding:1px 4px;font-size:9px;background-color:#fff}.image-viewport:hover .zoom-info{display:block;cursor:pointer}.variant[data-v-0372e854]{display:inline-block;width:48%;margin-right:2%;margin-bottom:20px}.variant .header .title[data-v-0372e854]{display:inline-block}.variant .header .size[data-v-0372e854]{display:inline-block;float:right}.variant .header .zoom[data-v-0372e854]{display:inline-block;float:right;visibility:hidden}.variant .footer[data-v-0372e854]{font-style:italic;margin-top:2px}.variant .footer .select[data-v-0372e854]{float:right}.variant .footer .select button[data-v-0372e854]{padding:3px 10px}.variant:hover .header .zoom[data-v-0372e854]{visibility:visible}.variants-component .variants .variant.selected[data-v-25a3327e]{background-color:#ccc}.variants-component .variants .variant[data-v-25a3327e]{display:inline-block;width:47%;margin-right:1%;padding:1%;margin-bottom:20px}.variants-component .variants .variant .header .title[data-v-25a3327e]{display:inline-block}.variants-component .variants .variant .header .size[data-v-25a3327e]{display:inline-block;float:right}.variants-component .variants .variant .header .zoom[data-v-25a3327e]{display:inline-block;float:right;visibility:hidden}.variants-component .variants .variant .footer[data-v-25a3327e]{font-style:italic}.variants-component .variants .variant .footer .select[data-v-25a3327e]{float:right}.variants-component .variants .variant .footer .select button[data-v-25a3327e]{padding:3px 10px}.variants-component .variants .variant:hover .header .zoom[data-v-25a3327e]{visibility:visible}.file-properties .error[data-v-32d950b3]{color:red;font-weight:bold}.file-properties .path[data-v-32d950b3]{margin-bottom:20px}.file-properties .path .path[data-v-32d950b3]{color:#666;font-style:italic}.folder-properties .path{margin-bottom:20px}.folder-properties .path .path{color:#666;font-style:italic}.welcome{padding:20px 30px}.welcome .headline h3{margin-top:0;padding-top:0;font-size:24px}.welcome h4{margin-bottom:3px}.convertOptionsButton{position:absolute;right:10px;top:8px}.splitpanes__pane{background-color:#fff!important;padding:0;min-height:80px;box-shadow:inset 0 0 3px #0003}.pane-content{height:100%;overflow-y:auto}.pane-content>*{padding:10px 20px}body,html{height:100%;margin:0;padding:0}.mainpanel,#webpconvert-filemanager{height:100%;min-height:300px;position:relative}.mainpanel{min-height:400px}.wcfm,input{font-family:"Avenir",Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#222;font-size:14px}input{padding:5px 8px;border-color:#333;border-width:1px;box-sizing:border-box}div .multiselect{min-height:30px}div .multiselect__select{height:30px;line-height:16px;width:30px}div .multiselect__select:before{border-top-color:#000;border-width:6px 6px 0 6px}div .multiselect__single{margin-bottom:3px}div .multiselect__tags{border-color:#333;border-radius:0;padding:5px 40px 0 5px;min-height:30px}li.multiselect__element{margin-left:0}div .multiselect__tag{margin-bottom:0;padding-bottom:3px;padding-top:3px}fieldset[disabled] .multiselect{pointer-events:none}.multiselect__spinner{position:absolute;right:1px;top:1px;width:48px;height:35px;background:#fff;display:block}.multiselect__spinner:after,.multiselect__spinner:before{position:absolute;content:"";top:50%;left:50%;margin:-8px 0 0 -8px;width:16px;height:16px;border-radius:100%;border-color:#41b883 transparent transparent;border-style:solid;border-width:2px;box-shadow:0 0 0 1px transparent}.multiselect__spinner:before{-webkit-animation:spinning 2.4s cubic-bezier(.41,.26,.2,.62);animation:spinning 2.4s cubic-bezier(.41,.26,.2,.62);-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.multiselect__spinner:after{-webkit-animation:spinning 2.4s cubic-bezier(.51,.09,.21,.8);animation:spinning 2.4s cubic-bezier(.51,.09,.21,.8);-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.multiselect__loading-enter-active,.multiselect__loading-leave-active{transition:opacity .4s ease-in-out;opacity:1}.multiselect__loading-enter,.multiselect__loading-leave-active{opacity:0}.multiselect,.multiselect__input,.multiselect__single{font-family:inherit;font-size:16px;touch-action:manipulation}.multiselect{box-sizing:content-box;display:block;position:relative;width:100%;min-height:40px;text-align:left;color:#35495e}.multiselect *{box-sizing:border-box}.multiselect:focus{outline:none}.multiselect--disabled{background:#ededed;pointer-events:none;opacity:.6}.multiselect--active{z-index:50}.multiselect--active:not(.multiselect--above) .multiselect__current,.multiselect--active:not(.multiselect--above) .multiselect__input,.multiselect--active:not(.multiselect--above) .multiselect__tags{border-bottom-left-radius:0;border-bottom-right-radius:0}.multiselect--active .multiselect__select{transform:rotate(180deg)}.multiselect--above.multiselect--active .multiselect__current,.multiselect--above.multiselect--active .multiselect__input,.multiselect--above.multiselect--active .multiselect__tags{border-top-left-radius:0;border-top-right-radius:0}.multiselect__input,.multiselect__single{position:relative;display:inline-block;min-height:20px;line-height:20px;border:none;border-radius:5px;background:#fff;padding:0 0 0 5px;width:100%;transition:border .1s ease;box-sizing:border-box;margin-bottom:8px;vertical-align:top}.multiselect__input::-moz-placeholder{color:#35495e}.multiselect__input:-ms-input-placeholder{color:#35495e}.multiselect__input::placeholder{color:#35495e}.multiselect__tag~.multiselect__input,.multiselect__tag~.multiselect__single{width:auto}.multiselect__input:hover,.multiselect__single:hover{border-color:#cfcfcf}.multiselect__input:focus,.multiselect__single:focus{border-color:#a8a8a8;outline:none}.multiselect__single{padding-left:5px;margin-bottom:8px}.multiselect__tags-wrap{display:inline}.multiselect__tags{min-height:40px;display:block;padding:8px 40px 0 8px;border-radius:5px;border:1px solid #e8e8e8;background:#fff;font-size:14px}.multiselect__tag{position:relative;display:inline-block;padding:4px 26px 4px 10px;border-radius:5px;margin-right:10px;color:#fff;line-height:1;background:#41b883;margin-bottom:5px;white-space:nowrap;overflow:hidden;max-width:100%;text-overflow:ellipsis}.multiselect__tag-icon{cursor:pointer;margin-left:7px;position:absolute;right:0;top:0;bottom:0;font-weight:700;font-style:normal;width:22px;text-align:center;line-height:22px;transition:all .2s ease;border-radius:5px}.multiselect__tag-icon:after{content:"\d7";color:#266d4d;font-size:14px}.multiselect__tag-icon:focus:after,.multiselect__tag-icon:hover:after{color:#fff}.multiselect__current{min-height:40px;overflow:hidden;padding:8px 30px 0 12px;white-space:nowrap;border-radius:5px;border:1px solid #e8e8e8}.multiselect__current,.multiselect__select{line-height:16px;box-sizing:border-box;display:block;margin:0;text-decoration:none;cursor:pointer}.multiselect__select{position:absolute;width:40px;height:38px;right:1px;top:1px;padding:4px 8px;text-align:center;transition:transform .2s ease}.multiselect__select:before{position:relative;right:0;top:65%;color:#999;margin-top:4px;border-style:solid;border-width:5px 5px 0 5px;border-color:#999 transparent transparent transparent;content:""}.multiselect__placeholder{color:#adadad;display:inline-block;margin-bottom:10px;padding-top:2px}.multiselect--active .multiselect__placeholder{display:none}.multiselect__content-wrapper{position:absolute;display:block;background:#fff;width:100%;max-height:240px;overflow:auto;border:1px solid #e8e8e8;border-top:none;border-bottom-left-radius:5px;border-bottom-right-radius:5px;z-index:50;-webkit-overflow-scrolling:touch}.multiselect__content{list-style:none;display:inline-block;padding:0;margin:0;min-width:100%;vertical-align:top}.multiselect--above .multiselect__content-wrapper{bottom:100%;border-radius:5px 5px 0 0;border-bottom:none;border-top:1px solid #e8e8e8}.multiselect__content::-webkit-scrollbar{display:none}.multiselect__element{display:block}.multiselect__option{display:block;padding:12px;min-height:40px;line-height:16px;text-decoration:none;text-transform:none;vertical-align:middle;position:relative;cursor:pointer;white-space:nowrap}.multiselect__option:after{top:0;right:0;position:absolute;line-height:40px;padding-right:12px;padding-left:20px;font-size:13px}.multiselect__option--highlight{background:#41b883;outline:none;color:#fff}.multiselect__option--highlight:after{content:attr(data-select);background:#41b883;color:#fff}.multiselect__option--selected{background:#f3f3f3;color:#35495e;font-weight:700}.multiselect__option--selected:after{content:attr(data-selected);color:silver}.multiselect__option--selected.multiselect__option--highlight{background:#ff6a6a;color:#fff}.multiselect__option--selected.multiselect__option--highlight:after{background:#ff6a6a;content:attr(data-deselect);color:#fff}.multiselect--disabled .multiselect__current,.multiselect--disabled .multiselect__select{background:#ededed;color:#a6a6a6}.multiselect__option--disabled{background:#ededed!important;color:#a6a6a6!important;cursor:text;pointer-events:none}.multiselect__option--group{background:#ededed;color:#35495e}.multiselect__option--group.multiselect__option--highlight{background:#35495e;color:#fff}.multiselect__option--group.multiselect__option--highlight:after{background:#35495e}.multiselect__option--disabled.multiselect__option--highlight{background:#dedede}.multiselect__option--group-selected.multiselect__option--highlight{background:#ff6a6a;color:#fff}.multiselect__option--group-selected.multiselect__option--highlight:after{background:#ff6a6a;content:attr(data-deselect);color:#fff}.multiselect-enter-active,.multiselect-leave-active{transition:all .15s ease}.multiselect-enter,.multiselect-leave-active{opacity:0}.multiselect__strong{margin-bottom:8px;line-height:20px;display:inline-block;vertical-align:top}[dir=rtl] .multiselect{text-align:right}[dir=rtl] .multiselect__select{right:auto;left:1px}[dir=rtl] .multiselect__tags{padding:8px 8px 0 40px}[dir=rtl] .multiselect__content{text-align:right}[dir=rtl] .multiselect__option:after{right:auto;left:0}[dir=rtl] .multiselect__clear{right:auto;left:12px}[dir=rtl] .multiselect__spinner{right:auto;left:1px}@-webkit-keyframes spinning{0%{transform:rotate(0)}to{transform:rotate(2turn)}}@keyframes spinning{0%{transform:rotate(0)}to{transform:rotate(2turn)}}div.v-popper--theme-menu .v-popper__inner{background-color:#66f;color:#fff;padding:10px 15px 11px;line-height:1.2;max-width:300px}.v-popper__inner a{color:#fff;text-decoration:underline}.v-popper__inner p{margin-top:0}.v-popper__inner p:last-child{margin-bottom:0}.table-table{display:table}.table-table>*{display:table-row}.table-table>*>*{display:table-cell;padding:5px 20px 5px 0}.table-inline-block>div>*{display:inline-block;margin-right:10px;padding:5px 20px 5px 0}.table-inline-block>div>*:first-child{width:120px}.resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.v-popper--theme-dropdown .v-popper__inner{background:#fff;color:#000;padding:24px;border-radius:6px;box-shadow:0 6px 30px #0000001a}.v-popper--theme-dropdown .v-popper__arrow{border-color:#fff}.v-popper{width:max-content}.v-popper--theme-tooltip .v-popper__inner{background:rgba(0,0,0,.8);color:#fff;border-radius:6px;padding:7px 12px 6px}.v-popper--theme-tooltip .v-popper__arrow{border-color:#000c}.v-popper__popper{z-index:10000}.v-popper__popper.v-popper__popper--hidden{visibility:hidden;opacity:0;transition:opacity .15s,visibility .15s}.v-popper__popper.v-popper__popper--shown{visibility:visible;opacity:1;transition:opacity .15s}.v-popper__popper.v-popper__popper--skip-transition,.v-popper__popper.v-popper__popper--skip-transition>.v-popper__wrapper{transition:none!important}.v-popper__inner{position:relative}.v-popper__arrow-container{width:10px;height:10px}.v-popper__arrow{border-style:solid;position:relative;width:0;height:0}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow{border-width:5px 5px 0 5px;border-left-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:0}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow{border-width:0 5px 5px 5px;border-left-color:transparent!important;border-right-color:transparent!important;border-top-color:transparent!important;top:-5px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow{border-width:5px 5px 5px 0;border-left-color:transparent!important;border-top-color:transparent!important;border-bottom-color:transparent!important;left:-5px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-5px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow{border-width:5px 0 5px 5px;border-top-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important;right:-5px}
|
lib/wcfm/vendor.b4e4e155.js
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var Fh=Object.defineProperty;var Rc=Object.getOwnPropertySymbols;var jh=Object.prototype.hasOwnProperty,Vh=Object.prototype.propertyIsEnumerable;var qs=(e,t,n)=>t in e?Fh(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,po=(e,t)=>{for(var n in t||(t={}))jh.call(t,n)&&qs(e,n,t[n]);if(Rc)for(var n of Rc(t))Vh.call(t,n)&&qs(e,n,t[n]);return e};var Sr=(e,t,n)=>(qs(e,typeof t!="symbol"?t+"":t,n),n);function it(e,t){const n=Object.create(null),r=e.split(",");for(let i=0;i<r.length;i++)n[r[i]]=!0;return t?i=>!!n[i.toLowerCase()]:i=>!!n[i]}const _s={[1]:"TEXT",[2]:"CLASS",[4]:"STYLE",[8]:"PROPS",[16]:"FULL_PROPS",[32]:"HYDRATE_EVENTS",[64]:"STABLE_FRAGMENT",[128]:"KEYED_FRAGMENT",[256]:"UNKEYED_FRAGMENT",[512]:"NEED_PATCH",[1024]:"DYNAMIC_SLOTS",[2048]:"DEV_ROOT_FRAGMENT",[-1]:"HOISTED",[-2]:"BAIL"},zh={[1]:"STABLE",[2]:"DYNAMIC",[3]:"FORWARDED"},Bh="Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt",Ic=it(Bh),$c=2;function Lc(e,t=0,n=e.length){let r=e.split(/(\r?\n)/);const i=r.filter((a,l)=>l%2==1);r=r.filter((a,l)=>l%2==0);let o=0;const s=[];for(let a=0;a<r.length;a++)if(o+=r[a].length+(i[a]&&i[a].length||0),o>=t){for(let l=a-$c;l<=a+$c||n>o;l++){if(l<0||l>=r.length)continue;const c=l+1;s.push(`${c}${" ".repeat(Math.max(3-String(c).length,0))}| ${r[l]}`);const u=r[l].length,f=i[l]&&i[l].length||0;if(l===a){const p=t-(o-(u+f)),d=Math.max(1,n>o?u-p:n-t);s.push(" | "+" ".repeat(p)+"^".repeat(d))}else if(l>a){if(n>o){const p=Math.max(Math.min(n-o,u),1);s.push(" | "+"^".repeat(p))}o+=u+f}}break}return s.join(`
|
2 |
+
`)}const Dc="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Fc=it(Dc),Hh=it(Dc+",async,autofocus,autoplay,controls,default,defer,disabled,hidden,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected");function ea(e){return!!e||e===""}const kh=/[>/="'\u0009\u000a\u000c\u0020]/,ta={};function Uh(e){if(ta.hasOwnProperty(e))return ta[e];const t=kh.test(e);return t&&console.error(`unsafe attribute name: ${e}`),ta[e]=!t}const Kh={acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},jc=it("animation-iteration-count,border-image-outset,border-image-slice,border-image-width,box-flex,box-flex-group,box-ordinal-group,column-count,columns,flex,flex-grow,flex-positive,flex-shrink,flex-negative,flex-order,grid-row,grid-row-end,grid-row-span,grid-row-start,grid-column,grid-column-end,grid-column-span,grid-column-start,font-weight,line-clamp,line-height,opacity,order,orphans,tab-size,widows,z-index,zoom,fill-opacity,flood-opacity,stop-opacity,stroke-dasharray,stroke-dashoffset,stroke-miterlimit,stroke-opacity,stroke-width"),Wh=it("accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap"),Yh=it("xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan");function Zt(e){if(ue(e)){const t={};for(let n=0;n<e.length;n++){const r=e[n],i=be(r)?na(r):Zt(r);if(i)for(const o in i)t[o]=i[o]}return t}else{if(be(e))return e;if(je(e))return e}}const Xh=/;(?![^(]*\))/g,Gh=/:(.+)/;function na(e){const t={};return e.split(Xh).forEach(n=>{if(n){const r=n.split(Gh);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Zh(e){let t="";if(!e||be(e))return t;for(const n in e){const r=e[n],i=n.startsWith("--")?n:Ot(n);(be(r)||typeof r=="number"&&jc(i))&&(t+=`${i}:${r};`)}return t}function vn(e){let t="";if(be(e))t=e;else if(ue(e))for(let n=0;n<e.length;n++){const r=vn(e[n]);r&&(t+=r+" ")}else if(je(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}function Vc(e){if(!e)return null;let{class:t,style:n}=e;return t&&!be(t)&&(e.class=vn(t)),n&&(e.style=Zt(n)),e}const Jh="html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot",Qh="svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view",qh="area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr",zc=it(Jh),Bc=it(Qh),Hc=it(qh),_h=/["'&<>]/;function em(e){const t=""+e,n=_h.exec(t);if(!n)return t;let r="",i,o,s=0;for(o=n.index;o<t.length;o++){switch(t.charCodeAt(o)){case 34:i=""";break;case 38:i="&";break;case 39:i="'";break;case 60:i="<";break;case 62:i=">";break;default:continue}s!==o&&(r+=t.substring(s,o)),s=o+1,r+=i}return s!==o?r+t.substring(s,o):r}const tm=/^-?>|<!--|-->|--!>|<!-$/g;function nm(e){return e.replace(tm,"")}function rm(e,t){if(e.length!==t.length)return!1;let n=!0;for(let r=0;n&&r<e.length;r++)n=ln(e[r],t[r]);return n}function ln(e,t){if(e===t)return!0;let n=ia(e),r=ia(t);if(n||r)return n&&r?e.getTime()===t.getTime():!1;if(n=ue(e),r=ue(t),n||r)return n&&r?rm(e,t):!1;if(n=je(e),r=je(t),n||r){if(!n||!r)return!1;const i=Object.keys(e).length,o=Object.keys(t).length;if(i!==o)return!1;for(const s in e){const a=e.hasOwnProperty(s),l=t.hasOwnProperty(s);if(a&&!l||!a&&l||!ln(e[s],t[s]))return!1}}return String(e)===String(t)}function ti(e,t){return e.findIndex(n=>ln(n,t))}const Jt=e=>e==null?"":ue(e)||je(e)&&(e.toString===sa||!ye(e.toString))?JSON.stringify(e,kc,2):String(e),kc=(e,t)=>t&&t.__v_isRef?kc(e,t.value):Kn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,i])=>(n[`${r} =>`]=i,n),{})}:bn(t)?{[`Set(${t.size})`]:[...t.values()]}:je(t)&&!ue(t)&&!aa(t)?String(t):t,im=["bigInt","optionalChaining","nullishCoalescingOperator"],Ce={},Un=[],pt=()=>{},ni=()=>!1,om=/^on[^a-z]/,yn=e=>om.test(e),ho=e=>e.startsWith("onUpdate:"),Me=Object.assign,ra=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},sm=Object.prototype.hasOwnProperty,xe=(e,t)=>sm.call(e,t),ue=Array.isArray,Kn=e=>ri(e)==="[object Map]",bn=e=>ri(e)==="[object Set]",ia=e=>e instanceof Date,ye=e=>typeof e=="function",be=e=>typeof e=="string",Wn=e=>typeof e=="symbol",je=e=>e!==null&&typeof e=="object",oa=e=>je(e)&&ye(e.then)&&ye(e.catch),sa=Object.prototype.toString,ri=e=>sa.call(e),Uc=e=>ri(e).slice(8,-1),aa=e=>ri(e)==="[object Object]",mo=e=>be(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Sn=it(",key,ref,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),go=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},am=/-(\w)/g,st=go(e=>e.replace(am,(t,n)=>n?n.toUpperCase():"")),lm=/\B([A-Z])/g,Ot=go(e=>e.replace(lm,"-$1").toLowerCase()),En=go(e=>e.charAt(0).toUpperCase()+e.slice(1)),Yn=go(e=>e?`on${En(e)}`:""),Er=(e,t)=>!Object.is(e,t),Xn=(e,t)=>{for(let n=0;n<e.length;n++)e[n](t)},ii=(e,t,n)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},cn=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Kc;const Wc=()=>Kc||(Kc=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});var cm=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",EMPTY_ARR:Un,EMPTY_OBJ:Ce,NO:ni,NOOP:pt,PatchFlagNames:_s,babelParserDefaultPlugins:im,camelize:st,capitalize:En,def:ii,escapeHtml:em,escapeHtmlComment:nm,extend:Me,generateCodeFrame:Lc,getGlobalThis:Wc,hasChanged:Er,hasOwn:xe,hyphenate:Ot,includeBooleanAttr:ea,invokeArrayFns:Xn,isArray:ue,isBooleanAttr:Hh,isDate:ia,isFunction:ye,isGloballyWhitelisted:Ic,isHTMLTag:zc,isIntegerKey:mo,isKnownHtmlAttr:Wh,isKnownSvgAttr:Yh,isMap:Kn,isModelListener:ho,isNoUnitNumericStyleProp:jc,isObject:je,isOn:yn,isPlainObject:aa,isPromise:oa,isReservedProp:Sn,isSSRSafeAttrName:Uh,isSVGTag:Bc,isSet:bn,isSpecialBooleanAttr:Fc,isString:be,isSymbol:Wn,isVoidTag:Hc,looseEqual:ln,looseIndexOf:ti,makeMap:it,normalizeClass:vn,normalizeProps:Vc,normalizeStyle:Zt,objectToString:sa,parseStringStyle:na,propsToAttrMap:Kh,remove:ra,slotFlagsText:zh,stringifyStyle:Zh,toDisplayString:Jt,toHandlerKey:Yn,toNumber:cn,toRawType:Uc,toTypeString:ri});let Qt;const vo=[];class la{constructor(t=!1){this.active=!0,this.effects=[],this.cleanups=[],!t&&Qt&&(this.parent=Qt,this.index=(Qt.scopes||(Qt.scopes=[])).push(this)-1)}run(t){if(this.active)try{return this.on(),t()}finally{this.off()}}on(){this.active&&(vo.push(this),Qt=this)}off(){this.active&&(vo.pop(),Qt=vo[vo.length-1])}stop(t){if(this.active){if(this.effects.forEach(n=>n.stop()),this.cleanups.forEach(n=>n()),this.scopes&&this.scopes.forEach(n=>n.stop(!0)),this.parent&&!t){const n=this.parent.scopes.pop();n&&n!==this&&(this.parent.scopes[this.index]=n,n.index=this.index)}this.active=!1}}}function um(e){return new la(e)}function Yc(e,t){t=t||Qt,t&&t.active&&t.effects.push(e)}function fm(){return Qt}function pm(e){Qt&&Qt.cleanups.push(e)}const ca=e=>{const t=new Set(e);return t.w=0,t.n=0,t},Xc=e=>(e.w&On)>0,Gc=e=>(e.n&On)>0,dm=({deps:e})=>{if(e.length)for(let t=0;t<e.length;t++)e[t].w|=On},hm=e=>{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r<t.length;r++){const i=t[r];Xc(i)&&!Gc(i)?i.delete(e):t[n++]=i,i.w&=~On,i.n&=~On}t.length=n}},ua=new WeakMap;let oi=0,On=1;const fa=30,si=[];let Gn;const Zn=Symbol(""),pa=Symbol("");class ai{constructor(t,n=null,r){this.fn=t,this.scheduler=n,this.active=!0,this.deps=[],Yc(this,r)}run(){if(!this.active)return this.fn();if(!si.includes(this))try{return si.push(Gn=this),vm(),On=1<<++oi,oi<=fa?dm(this):Zc(this),this.fn()}finally{oi<=fa&&hm(this),On=1<<--oi,wn(),si.pop();const t=si.length;Gn=t>0?si[t-1]:void 0}}stop(){this.active&&(Zc(this),this.onStop&&this.onStop(),this.active=!1)}}function Zc(e){const{deps:t}=e;if(t.length){for(let n=0;n<t.length;n++)t[n].delete(e);t.length=0}}function mm(e,t){e.effect&&(e=e.effect.fn);const n=new ai(e);t&&(Me(n,t),t.scope&&Yc(n,t.scope)),(!t||!t.lazy)&&n.run();const r=n.run.bind(n);return r.effect=n,r}function gm(e){e.effect.stop()}let Or=!0;const da=[];function Jn(){da.push(Or),Or=!1}function vm(){da.push(Or),Or=!0}function wn(){const e=da.pop();Or=e===void 0?!0:e}function wt(e,t,n){if(!Jc())return;let r=ua.get(e);r||ua.set(e,r=new Map);let i=r.get(n);i||r.set(n,i=ca()),Qc(i)}function Jc(){return Or&&Gn!==void 0}function Qc(e,t){let n=!1;oi<=fa?Gc(e)||(e.n|=On,n=!Xc(e)):n=!e.has(Gn),n&&(e.add(Gn),Gn.deps.push(e))}function un(e,t,n,r,i,o){const s=ua.get(e);if(!s)return;let a=[];if(t==="clear")a=[...s.values()];else if(n==="length"&&ue(e))s.forEach((l,c)=>{(c==="length"||c>=r)&&a.push(l)});else switch(n!==void 0&&a.push(s.get(n)),t){case"add":ue(e)?mo(n)&&a.push(s.get("length")):(a.push(s.get(Zn)),Kn(e)&&a.push(s.get(pa)));break;case"delete":ue(e)||(a.push(s.get(Zn)),Kn(e)&&a.push(s.get(pa)));break;case"set":Kn(e)&&a.push(s.get(Zn));break}if(a.length===1)a[0]&&ha(a[0]);else{const l=[];for(const c of a)c&&l.push(...c);ha(ca(l))}}function ha(e,t){for(const n of ue(e)?e:[...e])(n!==Gn||n.allowRecurse)&&(n.scheduler?n.scheduler():n.run())}const ym=it("__proto__,__v_isRef,__isVue"),qc=new Set(Object.getOwnPropertyNames(Symbol).map(e=>Symbol[e]).filter(Wn)),bm=yo(),Sm=yo(!1,!0),Em=yo(!0),Om=yo(!0,!0),_c=wm();function wm(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=Te(this);for(let o=0,s=this.length;o<s;o++)wt(r,"get",o+"");const i=r[t](...n);return i===-1||i===!1?r[t](...n.map(Te)):i}}),["push","pop","shift","unshift","splice"].forEach(t=>{e[t]=function(...n){Jn();const r=Te(this)[t].apply(this,n);return wn(),r}}),e}function yo(e=!1,t=!1){return function(r,i,o){if(i==="__v_isReactive")return!e;if(i==="__v_isReadonly")return e;if(i==="__v_raw"&&o===(e?t?uu:cu:t?lu:au).get(r))return r;const s=ue(r);if(!e&&s&&xe(_c,i))return Reflect.get(_c,i,o);const a=Reflect.get(r,i,o);return(Wn(i)?qc.has(i):ym(i))||(e||wt(r,"get",i),t)?a:at(a)?!s||!mo(i)?a.value:a:je(a)?e?ga(a):xo(a):a}}const Tm=eu(),Pm=eu(!0);function eu(e=!1){return function(n,r,i,o){let s=n[r];if(!e&&(i=Te(i),s=Te(s),!ue(n)&&at(s)&&!at(i)))return s.value=i,!0;const a=ue(n)&&mo(r)?Number(r)<n.length:xe(n,r),l=Reflect.set(n,r,i,o);return n===Te(o)&&(a?Er(i,s)&&un(n,"set",r,i):un(n,"add",r,i)),l}}function xm(e,t){const n=xe(e,t);e[t];const r=Reflect.deleteProperty(e,t);return r&&n&&un(e,"delete",t,void 0),r}function Cm(e,t){const n=Reflect.has(e,t);return(!Wn(t)||!qc.has(t))&&wt(e,"has",t),n}function Mm(e){return wt(e,"iterate",ue(e)?"length":Zn),Reflect.ownKeys(e)}const tu={get:bm,set:Tm,deleteProperty:xm,has:Cm,ownKeys:Mm},nu={get:Em,set(e,t){return!0},deleteProperty(e,t){return!0}},Am=Me({},tu,{get:Sm,set:Pm}),Nm=Me({},nu,{get:Om}),ma=e=>e,bo=e=>Reflect.getPrototypeOf(e);function So(e,t,n=!1,r=!1){e=e.__v_raw;const i=Te(e),o=Te(t);t!==o&&!n&&wt(i,"get",t),!n&&wt(i,"get",o);const{has:s}=bo(i),a=r?ma:n?Sa:li;if(s.call(i,t))return a(e.get(t));if(s.call(i,o))return a(e.get(o));e!==i&&e.get(t)}function Eo(e,t=!1){const n=this.__v_raw,r=Te(n),i=Te(e);return e!==i&&!t&&wt(r,"has",e),!t&&wt(r,"has",i),e===i?n.has(e):n.has(e)||n.has(i)}function Oo(e,t=!1){return e=e.__v_raw,!t&&wt(Te(e),"iterate",Zn),Reflect.get(e,"size",e)}function ru(e){e=Te(e);const t=Te(this);return bo(t).has.call(t,e)||(t.add(e),un(t,"add",e,e)),this}function iu(e,t){t=Te(t);const n=Te(this),{has:r,get:i}=bo(n);let o=r.call(n,e);o||(e=Te(e),o=r.call(n,e));const s=i.call(n,e);return n.set(e,t),o?Er(t,s)&&un(n,"set",e,t):un(n,"add",e,t),this}function ou(e){const t=Te(this),{has:n,get:r}=bo(t);let i=n.call(t,e);i||(e=Te(e),i=n.call(t,e)),r&&r.call(t,e);const o=t.delete(e);return i&&un(t,"delete",e,void 0),o}function su(){const e=Te(this),t=e.size!==0,n=e.clear();return t&&un(e,"clear",void 0,void 0),n}function wo(e,t){return function(r,i){const o=this,s=o.__v_raw,a=Te(s),l=t?ma:e?Sa:li;return!e&&wt(a,"iterate",Zn),s.forEach((c,u)=>r.call(i,l(c),l(u),o))}}function To(e,t,n){return function(...r){const i=this.__v_raw,o=Te(i),s=Kn(o),a=e==="entries"||e===Symbol.iterator&&s,l=e==="keys"&&s,c=i[e](...r),u=n?ma:t?Sa:li;return!t&&wt(o,"iterate",l?pa:Zn),{next(){const{value:f,done:p}=c.next();return p?{value:f,done:p}:{value:a?[u(f[0]),u(f[1])]:u(f),done:p}},[Symbol.iterator](){return this}}}}function Tn(e){return function(...t){return e==="delete"?!1:this}}function Rm(){const e={get(o){return So(this,o)},get size(){return Oo(this)},has:Eo,add:ru,set:iu,delete:ou,clear:su,forEach:wo(!1,!1)},t={get(o){return So(this,o,!1,!0)},get size(){return Oo(this)},has:Eo,add:ru,set:iu,delete:ou,clear:su,forEach:wo(!1,!0)},n={get(o){return So(this,o,!0)},get size(){return Oo(this,!0)},has(o){return Eo.call(this,o,!0)},add:Tn("add"),set:Tn("set"),delete:Tn("delete"),clear:Tn("clear"),forEach:wo(!0,!1)},r={get(o){return So(this,o,!0,!0)},get size(){return Oo(this,!0)},has(o){return Eo.call(this,o,!0)},add:Tn("add"),set:Tn("set"),delete:Tn("delete"),clear:Tn("clear"),forEach:wo(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=To(o,!1,!1),n[o]=To(o,!0,!1),t[o]=To(o,!1,!0),r[o]=To(o,!0,!0)}),[e,n,t,r]}const[Im,$m,Lm,Dm]=Rm();function Po(e,t){const n=t?e?Dm:Lm:e?$m:Im;return(r,i,o)=>i==="__v_isReactive"?!e:i==="__v_isReadonly"?e:i==="__v_raw"?r:Reflect.get(xe(n,i)&&i in r?n:r,i,o)}const Fm={get:Po(!1,!1)},jm={get:Po(!1,!0)},Vm={get:Po(!0,!1)},zm={get:Po(!0,!0)},au=new WeakMap,lu=new WeakMap,cu=new WeakMap,uu=new WeakMap;function Bm(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Hm(e){return e.__v_skip||!Object.isExtensible(e)?0:Bm(Uc(e))}function xo(e){return e&&e.__v_isReadonly?e:Co(e,!1,tu,Fm,au)}function fu(e){return Co(e,!1,Am,jm,lu)}function ga(e){return Co(e,!0,nu,Vm,cu)}function km(e){return Co(e,!0,Nm,zm,uu)}function Co(e,t,n,r,i){if(!je(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=i.get(e);if(o)return o;const s=Hm(e);if(s===0)return e;const a=new Proxy(e,s===2?r:n);return i.set(e,a),a}function Qn(e){return va(e)?Qn(e.__v_raw):!!(e&&e.__v_isReactive)}function va(e){return!!(e&&e.__v_isReadonly)}function ya(e){return Qn(e)||va(e)}function Te(e){const t=e&&e.__v_raw;return t?Te(t):e}function ba(e){return ii(e,"__v_skip",!0),e}const li=e=>je(e)?xo(e):e,Sa=e=>je(e)?ga(e):e;function Ea(e){Jc()&&(e=Te(e),e.dep||(e.dep=ca()),Qc(e.dep))}function Mo(e,t){e=Te(e),e.dep&&ha(e.dep)}function at(e){return Boolean(e&&e.__v_isRef===!0)}function Pn(e){return pu(e,!1)}function Um(e){return pu(e,!0)}function pu(e,t){return at(e)?e:new Km(e,t)}class Km{constructor(t,n){this._shallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:Te(t),this._value=n?t:li(t)}get value(){return Ea(this),this._value}set value(t){t=this._shallow?t:Te(t),Er(t,this._rawValue)&&(this._rawValue=t,this._value=this._shallow?t:li(t),Mo(this))}}function Wm(e){Mo(e)}function du(e){return at(e)?e.value:e}const Ym={get:(e,t,n)=>du(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const i=e[t];return at(i)&&!at(n)?(i.value=n,!0):Reflect.set(e,t,n,r)}};function Oa(e){return Qn(e)?e:new Proxy(e,Ym)}class Xm{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>Ea(this),()=>Mo(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function Gm(e){return new Xm(e)}function ci(e){const t=ue(e)?new Array(e.length):{};for(const n in e)t[n]=hu(e,n);return t}class Zm{constructor(t,n){this._object=t,this._key=n,this.__v_isRef=!0}get value(){return this._object[this._key]}set value(t){this._object[this._key]=t}}function hu(e,t){const n=e[t];return at(n)?n:new Zm(e,t)}class Jm{constructor(t,n,r){this._setter=n,this.dep=void 0,this._dirty=!0,this.__v_isRef=!0,this.effect=new ai(t,()=>{this._dirty||(this._dirty=!0,Mo(this))}),this.__v_isReadonly=r}get value(){const t=Te(this);return Ea(t),t._dirty&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function xn(e,t){let n,r;const i=ye(e);return i?(n=e,r=pt):(n=e.get,r=e.set),new Jm(n,r,i||!r)}Promise.resolve();let ui,mu=[];function gu(e,t){ui=e,ui?(ui.enabled=!0,mu.forEach(({event:n,args:r})=>ui.emit(n,...r)),mu=[]):(t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(r=>{gu(r,t)})}function Qm(e,t,...n){const r=e.vnode.props||Ce;let i=n;const o=t.startsWith("update:"),s=o&&t.slice(7);if(s&&s in r){const u=`${s==="modelValue"?"model":s}Modifiers`,{number:f,trim:p}=r[u]||Ce;p?i=n.map(d=>d.trim()):f&&(i=n.map(cn))}let a,l=r[a=Yn(t)]||r[a=Yn(st(t))];!l&&o&&(l=r[a=Yn(Ot(t))]),l&&xt(l,e,6,i);const c=r[a+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,xt(c,e,6,i)}}function vu(e,t,n=!1){const r=t.emitsCache,i=r.get(e);if(i!==void 0)return i;const o=e.emits;let s={},a=!1;if(!ye(e)){const l=c=>{const u=vu(c,t,!0);u&&(a=!0,Me(s,u))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!o&&!a?(r.set(e,null),null):(ue(o)?o.forEach(l=>s[l]=null):Me(s,o),r.set(e,s),s)}function wa(e,t){return!e||!yn(t)?!1:(t=t.slice(2).replace(/Once$/,""),xe(e,t[0].toLowerCase()+t.slice(1))||xe(e,Ot(t))||xe(e,t))}let Tt=null,Ao=null;function fi(e){const t=Tt;return Tt=e,Ao=e&&e.type.__scopeId||null,t}function yu(e){Ao=e}function bu(){Ao=null}const Su=e=>qt;function qt(e,t=Tt,n){if(!t||e._n)return e;const r=(...i)=>{r._d&&ka(-1);const o=fi(t),s=e(...i);return fi(o),r._d&&ka(1),s};return r._n=!0,r._c=!0,r._d=!0,r}function No(e){const{type:t,vnode:n,proxy:r,withProxy:i,props:o,propsOptions:[s],slots:a,attrs:l,emit:c,render:u,renderCache:f,data:p,setupState:d,ctx:m,inheritAttrs:b}=e;let v,S;const g=fi(e);try{if(n.shapeFlag&4){const E=i||r;v=Pt(u.call(E,E,f,o,d,p,m)),S=l}else{const E=t;v=Pt(E.length>1?E(o,{attrs:l,slots:a,emit:c}):E(o,null)),S=t.props?l:_m(l)}}catch(E){bi.length=0,nr(E,e,1),v=he(ht)}let O=v;if(S&&b!==!1){const E=Object.keys(S),{shapeFlag:$}=O;E.length&&$&(1|6)&&(s&&E.some(ho)&&(S=eg(S,s)),O=An(O,S))}return n.dirs&&(O.dirs=O.dirs?O.dirs.concat(n.dirs):n.dirs),n.transition&&(O.transition=n.transition),v=O,fi(g),v}function qm(e){let t;for(let n=0;n<e.length;n++){const r=e[n];if(Mn(r)){if(r.type!==ht||r.children==="v-if"){if(t)return;t=r}}else return}return t}const _m=e=>{let t;for(const n in e)(n==="class"||n==="style"||yn(n))&&((t||(t={}))[n]=e[n]);return t},eg=(e,t)=>{const n={};for(const r in e)(!ho(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function tg(e,t,n){const{props:r,children:i,component:o}=e,{props:s,children:a,patchFlag:l}=t,c=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return r?Eu(r,s,c):!!s;if(l&8){const u=t.dynamicProps;for(let f=0;f<u.length;f++){const p=u[f];if(s[p]!==r[p]&&!wa(c,p))return!0}}}else return(i||a)&&(!a||!a.$stable)?!0:r===s?!1:r?s?Eu(r,s,c):!0:!!s;return!1}function Eu(e,t,n){const r=Object.keys(t);if(r.length!==Object.keys(e).length)return!0;for(let i=0;i<r.length;i++){const o=r[i];if(t[o]!==e[o]&&!wa(n,o))return!0}return!1}function Ta({vnode:e,parent:t},n){for(;t&&t.subTree===e;)(e=t.vnode).el=n,t=t.parent}const ng=e=>e.__isSuspense,rg={name:"Suspense",__isSuspense:!0,process(e,t,n,r,i,o,s,a,l,c){e==null?og(t,n,r,i,o,s,a,l,c):sg(e,t,n,r,i,s,a,l,c)},hydrate:ag,create:Pa,normalize:lg},ig=rg;function pi(e,t){const n=e.props&&e.props[t];ye(n)&&n()}function og(e,t,n,r,i,o,s,a,l){const{p:c,o:{createElement:u}}=l,f=u("div"),p=e.suspense=Pa(e,i,r,t,f,n,o,s,a,l);c(null,p.pendingBranch=e.ssContent,f,null,r,p,o,s),p.deps>0?(pi(e,"onPending"),pi(e,"onFallback"),c(null,e.ssFallback,t,n,r,null,o,s),wr(p,e.ssFallback)):p.resolve()}function sg(e,t,n,r,i,o,s,a,{p:l,um:c,o:{createElement:u}}){const f=t.suspense=e.suspense;f.vnode=t,t.el=e.el;const p=t.ssContent,d=t.ssFallback,{activeBranch:m,pendingBranch:b,isInFallback:v,isHydrating:S}=f;if(b)f.pendingBranch=p,tn(p,b)?(l(b,p,f.hiddenContainer,null,i,f,o,s,a),f.deps<=0?f.resolve():v&&(l(m,d,n,r,i,null,o,s,a),wr(f,d))):(f.pendingId++,S?(f.isHydrating=!1,f.activeBranch=b):c(b,i,f),f.deps=0,f.effects.length=0,f.hiddenContainer=u("div"),v?(l(null,p,f.hiddenContainer,null,i,f,o,s,a),f.deps<=0?f.resolve():(l(m,d,n,r,i,null,o,s,a),wr(f,d))):m&&tn(p,m)?(l(m,p,n,r,i,f,o,s,a),f.resolve(!0)):(l(null,p,f.hiddenContainer,null,i,f,o,s,a),f.deps<=0&&f.resolve()));else if(m&&tn(p,m))l(m,p,n,r,i,f,o,s,a),wr(f,p);else if(pi(t,"onPending"),f.pendingBranch=p,f.pendingId++,l(null,p,f.hiddenContainer,null,i,f,o,s,a),f.deps<=0)f.resolve();else{const{timeout:g,pendingId:O}=f;g>0?setTimeout(()=>{f.pendingId===O&&f.fallback(d)},g):g===0&&f.fallback(d)}}function Pa(e,t,n,r,i,o,s,a,l,c,u=!1){const{p:f,m:p,um:d,n:m,o:{parentNode:b,remove:v}}=c,S=cn(e.props&&e.props.timeout),g={vnode:e,parent:t,parentComponent:n,isSVG:s,container:r,hiddenContainer:i,anchor:o,deps:0,pendingId:0,timeout:typeof S=="number"?S:-1,activeBranch:null,pendingBranch:null,isInFallback:!0,isHydrating:u,isUnmounted:!1,effects:[],resolve(O=!1){const{vnode:E,activeBranch:$,pendingBranch:R,pendingId:T,effects:P,parentComponent:N,container:j}=g;if(g.isHydrating)g.isHydrating=!1;else if(!O){const C=$&&R.transition&&R.transition.mode==="out-in";C&&($.transition.afterLeave=()=>{T===g.pendingId&&p(R,j,w,0)});let{anchor:w}=g;$&&(w=m($),d($,N,g,!0)),C||p(R,j,w,0)}wr(g,R),g.pendingBranch=null,g.isInFallback=!1;let V=g.parent,F=!1;for(;V;){if(V.pendingBranch){V.effects.push(...P),F=!0;break}V=V.parent}F||_a(P),g.effects=[],pi(E,"onResolve")},fallback(O){if(!g.pendingBranch)return;const{vnode:E,activeBranch:$,parentComponent:R,container:T,isSVG:P}=g;pi(E,"onFallback");const N=m($),j=()=>{!g.isInFallback||(f(null,O,T,N,R,null,P,a,l),wr(g,O))},V=O.transition&&O.transition.mode==="out-in";V&&($.transition.afterLeave=j),g.isInFallback=!0,d($,R,null,!0),V||j()},move(O,E,$){g.activeBranch&&p(g.activeBranch,O,E,$),g.container=O},next(){return g.activeBranch&&m(g.activeBranch)},registerDep(O,E){const $=!!g.pendingBranch;$&&g.deps++;const R=O.vnode.el;O.asyncDep.catch(T=>{nr(T,O,0)}).then(T=>{if(O.isUnmounted||g.isUnmounted||g.pendingId!==O.suspenseId)return;O.asyncResolved=!0;const{vnode:P}=O;Ya(O,T,!1),R&&(P.el=R);const N=!R&&O.subTree.el;E(O,P,b(R||O.subTree.el),R?null:m(O.subTree),g,s,l),N&&v(N),Ta(O,P.el),$&&--g.deps==0&&g.resolve()})},unmount(O,E){g.isUnmounted=!0,g.activeBranch&&d(g.activeBranch,n,O,E),g.pendingBranch&&d(g.pendingBranch,n,O,E)}};return g}function ag(e,t,n,r,i,o,s,a,l){const c=t.suspense=Pa(t,r,n,e.parentNode,document.createElement("div"),null,i,o,s,a,!0),u=l(e,c.pendingBranch=t.ssContent,n,c,o,s);return c.deps===0&&c.resolve(),u}function lg(e){const{shapeFlag:t,children:n}=e,r=t&32;e.ssContent=Ou(r?n.default:n),e.ssFallback=r?Ou(n.fallback):he(ht)}function Ou(e){let t;if(ye(e)){const n=Mr&&e._c;n&&(e._d=!1,Ie()),e=e(),n&&(e._d=!0,t=en,nf())}return ue(e)&&(e=qm(e)),e=Pt(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(n=>n!==e)),e}function wu(e,t){t&&t.pendingBranch?ue(e)?t.effects.push(...e):t.effects.push(e):_a(e)}function wr(e,t){e.activeBranch=t;const{vnode:n,parentComponent:r}=e,i=n.el=t.el;r&&r.subTree===n&&(r.vnode.el=i,Ta(r,i))}function Tu(e,t){if(et){let n=et.provides;const r=et.parent&&et.parent.provides;r===n&&(n=et.provides=Object.create(r)),n[e]=t}}function di(e,t,n=!1){const r=et||Tt;if(r){const i=r.parent==null?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(i&&e in i)return i[e];if(arguments.length>1)return n&&ye(t)?t.call(r.proxy):t}}function xa(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Pr(()=>{e.isMounted=!0}),Lo(()=>{e.isUnmounting=!0}),e}const $t=[Function,Array],cg={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:$t,onEnter:$t,onAfterEnter:$t,onEnterCancelled:$t,onBeforeLeave:$t,onLeave:$t,onAfterLeave:$t,onLeaveCancelled:$t,onBeforeAppear:$t,onAppear:$t,onAfterAppear:$t,onAppearCancelled:$t},setup(e,{slots:t}){const n=In(),r=xa();let i;return()=>{const o=t.default&&Ro(t.default(),!0);if(!o||!o.length)return;const s=Te(e),{mode:a}=s,l=o[0];if(r.isLeaving)return Ma(l);const c=xu(l);if(!c)return Ma(l);const u=Tr(c,s,r,n);qn(c,u);const f=n.subTree,p=f&&xu(f);let d=!1;const{getTransitionKey:m}=c.type;if(m){const b=m();i===void 0?i=b:b!==i&&(i=b,d=!0)}if(p&&p.type!==ht&&(!tn(c,p)||d)){const b=Tr(p,s,r,n);if(qn(p,b),a==="out-in")return r.isLeaving=!0,b.afterLeave=()=>{r.isLeaving=!1,n.update()},Ma(l);a==="in-out"&&c.type!==ht&&(b.delayLeave=(v,S,g)=>{const O=Pu(r,p);O[String(p.key)]=p,v._leaveCb=()=>{S(),v._leaveCb=void 0,delete u.delayedLeave},u.delayedLeave=g})}return l}}},Ca=cg;function Pu(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Tr(e,t,n,r){const{appear:i,mode:o,persisted:s=!1,onBeforeEnter:a,onEnter:l,onAfterEnter:c,onEnterCancelled:u,onBeforeLeave:f,onLeave:p,onAfterLeave:d,onLeaveCancelled:m,onBeforeAppear:b,onAppear:v,onAfterAppear:S,onAppearCancelled:g}=t,O=String(e.key),E=Pu(n,e),$=(T,P)=>{T&&xt(T,r,9,P)},R={mode:o,persisted:s,beforeEnter(T){let P=a;if(!n.isMounted)if(i)P=b||a;else return;T._leaveCb&&T._leaveCb(!0);const N=E[O];N&&tn(e,N)&&N.el._leaveCb&&N.el._leaveCb(),$(P,[T])},enter(T){let P=l,N=c,j=u;if(!n.isMounted)if(i)P=v||l,N=S||c,j=g||u;else return;let V=!1;const F=T._enterCb=C=>{V||(V=!0,C?$(j,[T]):$(N,[T]),R.delayedLeave&&R.delayedLeave(),T._enterCb=void 0)};P?(P(T,F),P.length<=1&&F()):F()},leave(T,P){const N=String(e.key);if(T._enterCb&&T._enterCb(!0),n.isUnmounting)return P();$(f,[T]);let j=!1;const V=T._leaveCb=F=>{j||(j=!0,P(),F?$(m,[T]):$(d,[T]),T._leaveCb=void 0,E[N]===e&&delete E[N])};E[N]=e,p?(p(T,V),p.length<=1&&V()):V()},clone(T){return Tr(T,t,n,r)}};return R}function Ma(e){if(mi(e))return e=An(e),e.children=null,e}function xu(e){return mi(e)?e.children?e.children[0]:void 0:e}function qn(e,t){e.shapeFlag&6&&e.component?qn(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Ro(e,t=!1){let n=[],r=0;for(let i=0;i<e.length;i++){const o=e[i];o.type===Ye?(o.patchFlag&128&&r++,n=n.concat(Ro(o.children,t))):(t||o.type!==ht)&&n.push(o)}if(r>1)for(let i=0;i<n.length;i++)n[i].patchFlag=-2;return n}function Aa(e){return ye(e)?{setup:e,name:e.name}:e}const hi=e=>!!e.type.__asyncLoader;function ug(e){ye(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:i=200,timeout:o,suspensible:s=!0,onError:a}=e;let l=null,c,u=0;const f=()=>(u++,l=null,p()),p=()=>{let d;return l||(d=l=t().catch(m=>{if(m=m instanceof Error?m:new Error(String(m)),a)return new Promise((b,v)=>{a(m,()=>b(f()),()=>v(m),u+1)});throw m}).then(m=>d!==l&&l?l:(m&&(m.__esModule||m[Symbol.toStringTag]==="Module")&&(m=m.default),c=m,m)))};return Aa({name:"AsyncComponentWrapper",__asyncLoader:p,get __asyncResolved(){return c},setup(){const d=et;if(c)return()=>Na(c,d);const m=g=>{l=null,nr(g,d,13,!r)};if(s&&d.suspense||Oi)return p().then(g=>()=>Na(g,d)).catch(g=>(m(g),()=>r?he(r,{error:g}):null));const b=Pn(!1),v=Pn(),S=Pn(!!i);return i&&setTimeout(()=>{S.value=!1},i),o!=null&&setTimeout(()=>{if(!b.value&&!v.value){const g=new Error(`Async component timed out after ${o}ms.`);m(g),v.value=g}},o),p().then(()=>{b.value=!0,d.parent&&mi(d.parent.vnode)&&qa(d.parent.update)}).catch(g=>{m(g),v.value=g}),()=>{if(b.value&&c)return Na(c,d);if(v.value&&r)return he(r,{error:v.value});if(n&&!S.value)return he(n)}}})}function Na(e,{vnode:{ref:t,props:n,children:r}}){const i=he(e,n,r);return i.ref=t,i}const mi=e=>e.type.__isKeepAlive,fg={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=In(),r=n.ctx;if(!r.renderer)return t.default;const i=new Map,o=new Set;let s=null;const a=n.suspense,{renderer:{p:l,m:c,um:u,o:{createElement:f}}}=r,p=f("div");r.activate=(g,O,E,$,R)=>{const T=g.component;c(g,O,E,0,a),l(T.vnode,g,O,E,T,a,$,g.slotScopeIds,R),ot(()=>{T.isDeactivated=!1,T.a&&Xn(T.a);const P=g.props&&g.props.onVnodeMounted;P&&St(P,T.parent,g)},a)},r.deactivate=g=>{const O=g.component;c(g,p,null,1,a),ot(()=>{O.da&&Xn(O.da);const E=g.props&&g.props.onVnodeUnmounted;E&&St(E,O.parent,g),O.isDeactivated=!0},a)};function d(g){Ra(g),u(g,n,a)}function m(g){i.forEach((O,E)=>{const $=Wo(O.type);$&&(!g||!g($))&&b(E)})}function b(g){const O=i.get(g);!s||O.type!==s.type?d(O):s&&Ra(s),i.delete(g),o.delete(g)}lt(()=>[e.include,e.exclude],([g,O])=>{g&&m(E=>gi(g,E)),O&&m(E=>!gi(O,E))},{flush:"post",deep:!0});let v=null;const S=()=>{v!=null&&i.set(v,Ia(n.subTree))};return Pr(S),$o(S),Lo(()=>{i.forEach(g=>{const{subTree:O,suspense:E}=n,$=Ia(O);if(g.type===$.type){Ra($);const R=$.component.da;R&&ot(R,E);return}d(g)})}),()=>{if(v=null,!t.default)return null;const g=t.default(),O=g[0];if(g.length>1)return s=null,g;if(!Mn(O)||!(O.shapeFlag&4)&&!(O.shapeFlag&128))return s=null,O;let E=Ia(O);const $=E.type,R=Wo(hi(E)?E.type.__asyncResolved||{}:$),{include:T,exclude:P,max:N}=e;if(T&&(!R||!gi(T,R))||P&&R&&gi(P,R))return s=E,O;const j=E.key==null?$:E.key,V=i.get(j);return E.el&&(E=An(E),O.shapeFlag&128&&(O.ssContent=E)),v=j,V?(E.el=V.el,E.component=V.component,E.transition&&qn(E,E.transition),E.shapeFlag|=512,o.delete(j),o.add(j)):(o.add(j),N&&o.size>parseInt(N,10)&&b(o.values().next().value)),E.shapeFlag|=256,s=E,O}}},pg=fg;function gi(e,t){return ue(e)?e.some(n=>gi(n,t)):be(e)?e.split(",").indexOf(t)>-1:e.test?e.test(t):!1}function Cu(e,t){Au(e,"a",t)}function Mu(e,t){Au(e,"da",t)}function Au(e,t,n=et){const r=e.__wdc||(e.__wdc=()=>{let i=n;for(;i;){if(i.isDeactivated)return;i=i.parent}e()});if(Io(t,r,n),n){let i=n.parent;for(;i&&i.parent;)mi(i.parent.vnode)&&dg(r,t,n,i),i=i.parent}}function dg(e,t,n,r){const i=Io(t,e,r,!0);vi(()=>{ra(r[t],i)},n)}function Ra(e){let t=e.shapeFlag;t&256&&(t-=256),t&512&&(t-=512),e.shapeFlag=t}function Ia(e){return e.shapeFlag&128?e.ssContent:e}function Io(e,t,n=et,r=!1){if(n){const i=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...s)=>{if(n.isUnmounted)return;Jn(),$n(n);const a=xt(t,n,e,s);return Ln(),wn(),a});return r?i.unshift(o):i.push(o),o}}const fn=e=>(t,n=et)=>(!Oi||e==="sp")&&Io(e,t,n),Nu=fn("bm"),Pr=fn("m"),Ru=fn("bu"),$o=fn("u"),Lo=fn("bum"),vi=fn("um"),Iu=fn("sp"),$u=fn("rtg"),Lu=fn("rtc");function Du(e,t=et){Io("ec",e,t)}let $a=!0;function hg(e){const t=Vu(e),n=e.proxy,r=e.ctx;$a=!1,t.beforeCreate&&Fu(t.beforeCreate,e,"bc");const{data:i,computed:o,methods:s,watch:a,provide:l,inject:c,created:u,beforeMount:f,mounted:p,beforeUpdate:d,updated:m,activated:b,deactivated:v,beforeDestroy:S,beforeUnmount:g,destroyed:O,unmounted:E,render:$,renderTracked:R,renderTriggered:T,errorCaptured:P,serverPrefetch:N,expose:j,inheritAttrs:V,components:F,directives:C,filters:w}=t;if(c&&mg(c,r,null,e.appContext.config.unwrapInjectedRef),s)for(const z in s){const B=s[z];ye(B)&&(r[z]=B.bind(n))}if(i){const z=i.call(n,n);je(z)&&(e.data=xo(z))}if($a=!0,o)for(const z in o){const B=o[z],K=ye(B)?B.bind(n,n):ye(B.get)?B.get.bind(n,n):pt,G=!ye(B)&&ye(B.set)?B.set.bind(n):pt,de=xn({get:K,set:G});Object.defineProperty(r,z,{enumerable:!0,configurable:!0,get:()=>de.value,set:ce=>de.value=ce})}if(a)for(const z in a)ju(a[z],r,n,z);if(l){const z=ye(l)?l.call(n):l;Reflect.ownKeys(z).forEach(B=>{Tu(B,z[B])})}u&&Fu(u,e,"c");function L(z,B){ue(B)?B.forEach(K=>z(K.bind(n))):B&&z(B.bind(n))}if(L(Nu,f),L(Pr,p),L(Ru,d),L($o,m),L(Cu,b),L(Mu,v),L(Du,P),L(Lu,R),L($u,T),L(Lo,g),L(vi,E),L(Iu,N),ue(j))if(j.length){const z=e.exposed||(e.exposed={});j.forEach(B=>{Object.defineProperty(z,B,{get:()=>n[B],set:K=>n[B]=K})})}else e.exposed||(e.exposed={});$&&e.render===pt&&(e.render=$),V!=null&&(e.inheritAttrs=V),F&&(e.components=F),C&&(e.directives=C)}function mg(e,t,n=pt,r=!1){ue(e)&&(e=La(e));for(const i in e){const o=e[i];let s;je(o)?"default"in o?s=di(o.from||i,o.default,!0):s=di(o.from||i):s=di(o),at(s)&&r?Object.defineProperty(t,i,{enumerable:!0,configurable:!0,get:()=>s.value,set:a=>s.value=a}):t[i]=s}}function Fu(e,t,n){xt(ue(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function ju(e,t,n,r){const i=r.includes(".")?Of(n,r):()=>n[r];if(be(e)){const o=t[e];ye(o)&<(i,o)}else if(ye(e))lt(i,e.bind(n));else if(je(e))if(ue(e))e.forEach(o=>ju(o,t,n,r));else{const o=ye(e.handler)?e.handler.bind(n):t[e.handler];ye(o)&<(i,o,e)}}function Vu(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:i,optionsCache:o,config:{optionMergeStrategies:s}}=e.appContext,a=o.get(t);let l;return a?l=a:!i.length&&!n&&!r?l=t:(l={},i.length&&i.forEach(c=>Do(l,c,s,!0)),Do(l,t,s)),o.set(t,l),l}function Do(e,t,n,r=!1){const{mixins:i,extends:o}=t;o&&Do(e,o,n,!0),i&&i.forEach(s=>Do(e,s,n,!0));for(const s in t)if(!(r&&s==="expose")){const a=gg[s]||n&&n[s];e[s]=a?a(e[s],t[s]):t[s]}return e}const gg={data:zu,props:_n,emits:_n,methods:_n,computed:_n,beforeCreate:dt,created:dt,beforeMount:dt,mounted:dt,beforeUpdate:dt,updated:dt,beforeDestroy:dt,beforeUnmount:dt,destroyed:dt,unmounted:dt,activated:dt,deactivated:dt,errorCaptured:dt,serverPrefetch:dt,components:_n,directives:_n,watch:yg,provide:zu,inject:vg};function zu(e,t){return t?e?function(){return Me(ye(e)?e.call(this,this):e,ye(t)?t.call(this,this):t)}:t:e}function vg(e,t){return _n(La(e),La(t))}function La(e){if(ue(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function dt(e,t){return e?[...new Set([].concat(e,t))]:t}function _n(e,t){return e?Me(Me(Object.create(null),e),t):t}function yg(e,t){if(!e)return t;if(!t)return e;const n=Me(Object.create(null),e);for(const r in t)n[r]=dt(e[r],t[r]);return n}function bg(e,t,n,r=!1){const i={},o={};ii(o,zo,1),e.propsDefaults=Object.create(null),Bu(e,t,i,o);for(const s in e.propsOptions[0])s in i||(i[s]=void 0);n?e.props=r?i:fu(i):e.type.props?e.props=i:e.props=o,e.attrs=o}function Sg(e,t,n,r){const{props:i,attrs:o,vnode:{patchFlag:s}}=e,a=Te(i),[l]=e.propsOptions;let c=!1;if((r||s>0)&&!(s&16)){if(s&8){const u=e.vnode.dynamicProps;for(let f=0;f<u.length;f++){let p=u[f];const d=t[p];if(l)if(xe(o,p))d!==o[p]&&(o[p]=d,c=!0);else{const m=st(p);i[m]=Da(l,a,m,d,e,!1)}else d!==o[p]&&(o[p]=d,c=!0)}}}else{Bu(e,t,i,o)&&(c=!0);let u;for(const f in a)(!t||!xe(t,f)&&((u=Ot(f))===f||!xe(t,u)))&&(l?n&&(n[f]!==void 0||n[u]!==void 0)&&(i[f]=Da(l,a,f,void 0,e,!0)):delete i[f]);if(o!==a)for(const f in o)(!t||!xe(t,f))&&(delete o[f],c=!0)}c&&un(e,"set","$attrs")}function Bu(e,t,n,r){const[i,o]=e.propsOptions;let s=!1,a;if(t)for(let l in t){if(Sn(l))continue;const c=t[l];let u;i&&xe(i,u=st(l))?!o||!o.includes(u)?n[u]=c:(a||(a={}))[u]=c:wa(e.emitsOptions,l)||c!==r[l]&&(r[l]=c,s=!0)}if(o){const l=Te(n),c=a||Ce;for(let u=0;u<o.length;u++){const f=o[u];n[f]=Da(i,l,f,c[f],e,!xe(c,f))}}return s}function Da(e,t,n,r,i,o){const s=e[n];if(s!=null){const a=xe(s,"default");if(a&&r===void 0){const l=s.default;if(s.type!==Function&&ye(l)){const{propsDefaults:c}=i;n in c?r=c[n]:($n(i),r=c[n]=l.call(null,t),Ln())}else r=l}s[0]&&(o&&!a?r=!1:s[1]&&(r===""||r===Ot(n))&&(r=!0))}return r}function Hu(e,t,n=!1){const r=t.propsCache,i=r.get(e);if(i)return i;const o=e.props,s={},a=[];let l=!1;if(!ye(e)){const u=f=>{l=!0;const[p,d]=Hu(f,t,!0);Me(s,p),d&&a.push(...d)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!o&&!l)return r.set(e,Un),Un;if(ue(o))for(let u=0;u<o.length;u++){const f=st(o[u]);ku(f)&&(s[f]=Ce)}else if(o)for(const u in o){const f=st(u);if(ku(f)){const p=o[u],d=s[f]=ue(p)||ye(p)?{type:p}:p;if(d){const m=Wu(Boolean,d.type),b=Wu(String,d.type);d[0]=m>-1,d[1]=b<0||m<b,(m>-1||xe(d,"default"))&&a.push(f)}}}const c=[s,a];return r.set(e,c),c}function ku(e){return e[0]!=="$"}function Uu(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:e===null?"null":""}function Ku(e,t){return Uu(e)===Uu(t)}function Wu(e,t){return ue(t)?t.findIndex(n=>Ku(n,e)):ye(t)&&Ku(t,e)?0:-1}const Yu=e=>e[0]==="_"||e==="$stable",Fa=e=>ue(e)?e.map(Pt):[Pt(e)],Eg=(e,t,n)=>{const r=qt((...i)=>Fa(t(...i)),n);return r._c=!1,r},Xu=(e,t,n)=>{const r=e._ctx;for(const i in e){if(Yu(i))continue;const o=e[i];if(ye(o))t[i]=Eg(i,o,r);else if(o!=null){const s=Fa(o);t[i]=()=>s}}},Gu=(e,t)=>{const n=Fa(t);e.slots.default=()=>n},Og=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=Te(t),ii(t,"_",n)):Xu(t,e.slots={})}else e.slots={},t&&Gu(e,t);ii(e.slots,zo,1)},wg=(e,t,n)=>{const{vnode:r,slots:i}=e;let o=!0,s=Ce;if(r.shapeFlag&32){const a=t._;a?n&&a===1?o=!1:(Me(i,t),!n&&a===1&&delete i._):(o=!t.$stable,Xu(t,i)),s=t}else t&&(Gu(e,t),s={default:1});if(o)for(const a in i)!Yu(a)&&!(a in s)&&delete i[a]};function xr(e,t){const n=Tt;if(n===null)return e;const r=n.proxy,i=e.dirs||(e.dirs=[]);for(let o=0;o<t.length;o++){let[s,a,l,c=Ce]=t[o];ye(s)&&(s={mounted:s,updated:s}),s.deep&&rr(a),i.push({dir:s,instance:r,value:a,oldValue:void 0,arg:l,modifiers:c})}return e}function _t(e,t,n,r){const i=e.dirs,o=t&&t.dirs;for(let s=0;s<i.length;s++){const a=i[s];o&&(a.oldValue=o[s].value);let l=a.dir[r];l&&(Jn(),xt(l,n,8,[e.el,a,e,t]),wn())}}function Zu(){return{app:null,config:{isNativeTag:ni,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Tg=0;function Pg(e,t){return function(r,i=null){i!=null&&!je(i)&&(i=null);const o=Zu(),s=new Set;let a=!1;const l=o.app={_uid:Tg++,_component:r,_props:i,_container:null,_context:o,_instance:null,version:Cf,get config(){return o.config},set config(c){},use(c,...u){return s.has(c)||(c&&ye(c.install)?(s.add(c),c.install(l,...u)):ye(c)&&(s.add(c),c(l,...u))),l},mixin(c){return o.mixins.includes(c)||o.mixins.push(c),l},component(c,u){return u?(o.components[c]=u,l):o.components[c]},directive(c,u){return u?(o.directives[c]=u,l):o.directives[c]},mount(c,u,f){if(!a){const p=he(r,i);return p.appContext=o,u&&t?t(p,c):e(p,c,f),a=!0,l._container=c,c.__vue_app__=l,Ga(p.component)||p.component.proxy}},unmount(){a&&(e(null,l._container),delete l._container.__vue_app__)},provide(c,u){return o.provides[c]=u,l}};return l}}let Cn=!1;const Fo=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",ja=e=>e.nodeType===8;function xg(e){const{mt:t,p:n,o:{patchProp:r,nextSibling:i,parentNode:o,remove:s,insert:a,createComment:l}}=e,c=(v,S)=>{if(!S.hasChildNodes()){n(null,v,S),Go();return}Cn=!1,u(S.firstChild,v,null,null,null),Go(),Cn&&console.error("Hydration completed but contains mismatches.")},u=(v,S,g,O,E,$=!1)=>{const R=ja(v)&&v.data==="[",T=()=>m(v,S,g,O,E,R),{type:P,ref:N,shapeFlag:j}=S,V=v.nodeType;S.el=v;let F=null;switch(P){case Cr:V!==3?F=T():(v.data!==S.children&&(Cn=!0,v.data=S.children),F=i(v));break;case ht:V!==8||R?F=T():F=i(v);break;case tr:if(V!==1)F=T();else{F=v;const C=!S.children.length;for(let w=0;w<S.staticCount;w++)C&&(S.children+=F.outerHTML),w===S.staticCount-1&&(S.anchor=F),F=i(F);return F}break;case Ye:R?F=d(v,S,g,O,E,$):F=T();break;default:if(j&1)V!==1||S.type.toLowerCase()!==v.tagName.toLowerCase()?F=T():F=f(v,S,g,O,E,$);else if(j&6){S.slotScopeIds=E;const C=o(v);if(t(S,C,null,g,O,Fo(C),$),F=R?b(v):i(v),hi(S)){let w;R?(w=he(Ye),w.anchor=F?F.previousSibling:C.lastChild):w=v.nodeType===3?Nn(""):he("div"),w.el=v,S.component.subTree=w}}else j&64?V!==8?F=T():F=S.type.hydrate(v,S,g,O,E,$,e,p):j&128&&(F=S.type.hydrate(v,S,g,O,Fo(o(v)),E,$,e,u))}return N!=null&&jo(N,null,O,S),F},f=(v,S,g,O,E,$)=>{$=$||!!S.dynamicChildren;const{type:R,props:T,patchFlag:P,shapeFlag:N,dirs:j}=S,V=R==="input"&&j||R==="option";if(V||P!==-1){if(j&&_t(S,null,g,"created"),T)if(V||!$||P&(16|32))for(const C in T)(V&&C.endsWith("value")||yn(C)&&!Sn(C))&&r(v,C,null,T[C],!1,void 0,g);else T.onClick&&r(v,"onClick",null,T.onClick,!1,void 0,g);let F;if((F=T&&T.onVnodeBeforeMount)&&St(F,g,S),j&&_t(S,null,g,"beforeMount"),((F=T&&T.onVnodeMounted)||j)&&wu(()=>{F&&St(F,g,S),j&&_t(S,null,g,"mounted")},O),N&16&&!(T&&(T.innerHTML||T.textContent))){let C=p(v.firstChild,S,v,g,O,E,$);for(;C;){Cn=!0;const w=C;C=C.nextSibling,s(w)}}else N&8&&v.textContent!==S.children&&(Cn=!0,v.textContent=S.children)}return v.nextSibling},p=(v,S,g,O,E,$,R)=>{R=R||!!S.dynamicChildren;const T=S.children,P=T.length;for(let N=0;N<P;N++){const j=R?T[N]:T[N]=Pt(T[N]);if(v)v=u(v,j,O,E,$,R);else{if(j.type===Cr&&!j.children)continue;Cn=!0,n(null,j,g,null,O,E,Fo(g),$)}}return v},d=(v,S,g,O,E,$)=>{const{slotScopeIds:R}=S;R&&(E=E?E.concat(R):R);const T=o(v),P=p(i(v),S,T,g,O,E,$);return P&&ja(P)&&P.data==="]"?i(S.anchor=P):(Cn=!0,a(S.anchor=l("]"),T,P),P)},m=(v,S,g,O,E,$)=>{if(Cn=!0,S.el=null,$){const P=b(v);for(;;){const N=i(v);if(N&&N!==P)s(N);else break}}const R=i(v),T=o(v);return s(v),n(null,S,T,R,g,O,Fo(T),E),R},b=v=>{let S=0;for(;v;)if(v=i(v),v&&ja(v)&&(v.data==="["&&S++,v.data==="]")){if(S===0)return i(v);S--}return v};return[c,u]}const ot=wu;function Ju(e){return qu(e)}function Qu(e){return qu(e,xg)}function qu(e,t){const n=Wc();n.__VUE__=!0;const{insert:r,remove:i,patchProp:o,createElement:s,createText:a,createComment:l,setText:c,setElementText:u,parentNode:f,nextSibling:p,setScopeId:d=pt,cloneNode:m,insertStaticContent:b}=e,v=(x,I,k,X=null,W=null,q=null,ne=!1,_=null,ee=!!I.dynamicChildren)=>{if(x===I)return;x&&!tn(x,I)&&(X=ft(x),ve(x,W,q,!0),x=null),I.patchFlag===-2&&(ee=!1,I.dynamicChildren=null);const{type:Q,ref:fe,shapeFlag:le}=I;switch(Q){case Cr:S(x,I,k,X);break;case ht:g(x,I,k,X);break;case tr:x==null&&O(I,k,X,ne);break;case Ye:C(x,I,k,X,W,q,ne,_,ee);break;default:le&1?R(x,I,k,X,W,q,ne,_,ee):le&6?w(x,I,k,X,W,q,ne,_,ee):(le&64||le&128)&&Q.process(x,I,k,X,W,q,ne,_,ee,Ve)}fe!=null&&W&&jo(fe,x&&x.ref,q,I||x,!I)},S=(x,I,k,X)=>{if(x==null)r(I.el=a(I.children),k,X);else{const W=I.el=x.el;I.children!==x.children&&c(W,I.children)}},g=(x,I,k,X)=>{x==null?r(I.el=l(I.children||""),k,X):I.el=x.el},O=(x,I,k,X)=>{[x.el,x.anchor]=b(x.children,I,k,X)},E=({el:x,anchor:I},k,X)=>{let W;for(;x&&x!==I;)W=p(x),r(x,k,X),x=W;r(I,k,X)},$=({el:x,anchor:I})=>{let k;for(;x&&x!==I;)k=p(x),i(x),x=k;i(I)},R=(x,I,k,X,W,q,ne,_,ee)=>{ne=ne||I.type==="svg",x==null?T(I,k,X,W,q,ne,_,ee):j(x,I,W,q,ne,_,ee)},T=(x,I,k,X,W,q,ne,_)=>{let ee,Q;const{type:fe,props:le,shapeFlag:pe,transition:y,patchFlag:h,dirs:U}=x;if(x.el&&m!==void 0&&h===-1)ee=x.el=m(x.el);else{if(ee=x.el=s(x.type,q,le&&le.is,le),pe&8?u(ee,x.children):pe&16&&N(x.children,ee,null,X,W,q&&fe!=="foreignObject",ne,_),U&&_t(x,null,X,"created"),le){for(const Z in le)Z!=="value"&&!Sn(Z)&&o(ee,Z,null,le[Z],q,x.children,X,W,Qe);"value"in le&&o(ee,"value",null,le.value),(Q=le.onVnodeBeforeMount)&&St(Q,X,x)}P(ee,x,x.scopeId,ne,X)}U&&_t(x,null,X,"beforeMount");const Y=(!W||W&&!W.pendingBranch)&&y&&!y.persisted;Y&&y.beforeEnter(ee),r(ee,I,k),((Q=le&&le.onVnodeMounted)||Y||U)&&ot(()=>{Q&&St(Q,X,x),Y&&y.enter(ee),U&&_t(x,null,X,"mounted")},W)},P=(x,I,k,X,W)=>{if(k&&d(x,k),X)for(let q=0;q<X.length;q++)d(x,X[q]);if(W){let q=W.subTree;if(I===q){const ne=W.vnode;P(x,ne,ne.scopeId,ne.slotScopeIds,W.parent)}}},N=(x,I,k,X,W,q,ne,_,ee=0)=>{for(let Q=ee;Q<x.length;Q++){const fe=x[Q]=_?Rn(x[Q]):Pt(x[Q]);v(null,fe,I,k,X,W,q,ne,_)}},j=(x,I,k,X,W,q,ne)=>{const _=I.el=x.el;let{patchFlag:ee,dynamicChildren:Q,dirs:fe}=I;ee|=x.patchFlag&16;const le=x.props||Ce,pe=I.props||Ce;let y;(y=pe.onVnodeBeforeUpdate)&&St(y,k,I,x),fe&&_t(I,x,k,"beforeUpdate");const h=W&&I.type!=="foreignObject";if(Q?V(x.dynamicChildren,Q,_,k,X,h,q):ne||K(x,I,_,null,k,X,h,q,!1),ee>0){if(ee&16)F(_,I,le,pe,k,X,W);else if(ee&2&&le.class!==pe.class&&o(_,"class",null,pe.class,W),ee&4&&o(_,"style",le.style,pe.style,W),ee&8){const U=I.dynamicProps;for(let Y=0;Y<U.length;Y++){const Z=U[Y],me=le[Z],Oe=pe[Z];(Oe!==me||Z==="value")&&o(_,Z,me,Oe,W,x.children,k,X,Qe)}}ee&1&&x.children!==I.children&&u(_,I.children)}else!ne&&Q==null&&F(_,I,le,pe,k,X,W);((y=pe.onVnodeUpdated)||fe)&&ot(()=>{y&&St(y,k,I,x),fe&&_t(I,x,k,"updated")},X)},V=(x,I,k,X,W,q,ne)=>{for(let _=0;_<I.length;_++){const ee=x[_],Q=I[_],fe=ee.el&&(ee.type===Ye||!tn(ee,Q)||ee.shapeFlag&(6|64))?f(ee.el):k;v(ee,Q,fe,null,X,W,q,ne,!0)}},F=(x,I,k,X,W,q,ne)=>{if(k!==X){for(const _ in X){if(Sn(_))continue;const ee=X[_],Q=k[_];ee!==Q&&_!=="value"&&o(x,_,Q,ee,ne,I.children,W,q,Qe)}if(k!==Ce)for(const _ in k)!Sn(_)&&!(_ in X)&&o(x,_,k[_],null,ne,I.children,W,q,Qe);"value"in X&&o(x,"value",k.value,X.value)}},C=(x,I,k,X,W,q,ne,_,ee)=>{const Q=I.el=x?x.el:a(""),fe=I.anchor=x?x.anchor:a("");let{patchFlag:le,dynamicChildren:pe,slotScopeIds:y}=I;y&&(_=_?_.concat(y):y),x==null?(r(Q,k,X),r(fe,k,X),N(I.children,k,fe,W,q,ne,_,ee)):le>0&&le&64&&pe&&x.dynamicChildren?(V(x.dynamicChildren,pe,k,W,q,ne,_),(I.key!=null||W&&I===W.subTree)&&Va(x,I,!0)):K(x,I,k,fe,W,q,ne,_,ee)},w=(x,I,k,X,W,q,ne,_,ee)=>{I.slotScopeIds=_,x==null?I.shapeFlag&512?W.ctx.activate(I,k,X,ne,ee):M(I,k,X,W,q,ne,ee):L(x,I,ee)},M=(x,I,k,X,W,q,ne)=>{const _=x.component=lf(x,X,W);if(mi(x)&&(_.ctx.renderer=Ve),uf(_),_.asyncDep){if(W&&W.registerDep(_,z),!x.el){const ee=_.subTree=he(ht);g(null,ee,I,k)}return}z(_,x,I,k,W,q,ne)},L=(x,I,k)=>{const X=I.component=x.component;if(tg(x,I,k))if(X.asyncDep&&!X.asyncResolved){B(X,I,k);return}else X.next=I,nv(X.update),X.update();else I.component=x.component,I.el=x.el,X.vnode=I},z=(x,I,k,X,W,q,ne)=>{const _=()=>{if(x.isMounted){let{next:fe,bu:le,u:pe,parent:y,vnode:h}=x,U=fe,Y;ee.allowRecurse=!1,fe?(fe.el=h.el,B(x,fe,ne)):fe=h,le&&Xn(le),(Y=fe.props&&fe.props.onVnodeBeforeUpdate)&&St(Y,y,fe,h),ee.allowRecurse=!0;const Z=No(x),me=x.subTree;x.subTree=Z,v(me,Z,f(me.el),ft(me),x,W,q),fe.el=Z.el,U===null&&Ta(x,Z.el),pe&&ot(pe,W),(Y=fe.props&&fe.props.onVnodeUpdated)&&ot(()=>St(Y,y,fe,h),W)}else{let fe;const{el:le,props:pe}=I,{bm:y,m:h,parent:U}=x,Y=hi(I);if(ee.allowRecurse=!1,y&&Xn(y),!Y&&(fe=pe&&pe.onVnodeBeforeMount)&&St(fe,U,I),ee.allowRecurse=!0,le&&vt){const Z=()=>{x.subTree=No(x),vt(le,x.subTree,x,W,null)};Y?I.type.__asyncLoader().then(()=>!x.isUnmounted&&Z()):Z()}else{const Z=x.subTree=No(x);v(null,Z,k,X,x,W,q),I.el=Z.el}if(h&&ot(h,W),!Y&&(fe=pe&&pe.onVnodeMounted)){const Z=I;ot(()=>St(fe,U,Z),W)}I.shapeFlag&256&&x.a&&ot(x.a,W),x.isMounted=!0,I=k=X=null}},ee=new ai(_,()=>qa(x.update),x.scope),Q=x.update=ee.run.bind(ee);Q.id=x.uid,ee.allowRecurse=Q.allowRecurse=!0,Q()},B=(x,I,k)=>{I.component=x;const X=x.vnode.props;x.vnode=I,x.next=null,Sg(x,I.props,X,k),wg(x,I.children,k),Jn(),el(void 0,x.update),wn()},K=(x,I,k,X,W,q,ne,_,ee=!1)=>{const Q=x&&x.children,fe=x?x.shapeFlag:0,le=I.children,{patchFlag:pe,shapeFlag:y}=I;if(pe>0){if(pe&128){de(Q,le,k,X,W,q,ne,_,ee);return}else if(pe&256){G(Q,le,k,X,W,q,ne,_,ee);return}}y&8?(fe&16&&Qe(Q,W,q),le!==Q&&u(k,le)):fe&16?y&16?de(Q,le,k,X,W,q,ne,_,ee):Qe(Q,W,q,!0):(fe&8&&u(k,""),y&16&&N(le,k,X,W,q,ne,_,ee))},G=(x,I,k,X,W,q,ne,_,ee)=>{x=x||Un,I=I||Un;const Q=x.length,fe=I.length,le=Math.min(Q,fe);let pe;for(pe=0;pe<le;pe++){const y=I[pe]=ee?Rn(I[pe]):Pt(I[pe]);v(x[pe],y,k,null,W,q,ne,_,ee)}Q>fe?Qe(x,W,q,!0,!1,le):N(I,k,X,W,q,ne,_,ee,le)},de=(x,I,k,X,W,q,ne,_,ee)=>{let Q=0;const fe=I.length;let le=x.length-1,pe=fe-1;for(;Q<=le&&Q<=pe;){const y=x[Q],h=I[Q]=ee?Rn(I[Q]):Pt(I[Q]);if(tn(y,h))v(y,h,k,null,W,q,ne,_,ee);else break;Q++}for(;Q<=le&&Q<=pe;){const y=x[le],h=I[pe]=ee?Rn(I[pe]):Pt(I[pe]);if(tn(y,h))v(y,h,k,null,W,q,ne,_,ee);else break;le--,pe--}if(Q>le){if(Q<=pe){const y=pe+1,h=y<fe?I[y].el:X;for(;Q<=pe;)v(null,I[Q]=ee?Rn(I[Q]):Pt(I[Q]),k,h,W,q,ne,_,ee),Q++}}else if(Q>pe)for(;Q<=le;)ve(x[Q],W,q,!0),Q++;else{const y=Q,h=Q,U=new Map;for(Q=h;Q<=pe;Q++){const te=I[Q]=ee?Rn(I[Q]):Pt(I[Q]);te.key!=null&&U.set(te.key,Q)}let Y,Z=0;const me=pe-h+1;let Oe=!1,Fe=0;const Le=new Array(me);for(Q=0;Q<me;Q++)Le[Q]=0;for(Q=y;Q<=le;Q++){const te=x[Q];if(Z>=me){ve(te,W,q,!0);continue}let oe;if(te.key!=null)oe=U.get(te.key);else for(Y=h;Y<=pe;Y++)if(Le[Y-h]===0&&tn(te,I[Y])){oe=Y;break}oe===void 0?ve(te,W,q,!0):(Le[oe-h]=Q+1,oe>=Fe?Fe=oe:Oe=!0,v(te,I[oe],k,null,W,q,ne,_,ee),Z++)}const ge=Oe?Cg(Le):Un;for(Y=ge.length-1,Q=me-1;Q>=0;Q--){const te=h+Q,oe=I[te],ae=te+1<fe?I[te+1].el:X;Le[Q]===0?v(null,oe,k,ae,W,q,ne,_,ee):Oe&&(Y<0||Q!==ge[Y]?ce(oe,k,ae,2):Y--)}}},ce=(x,I,k,X,W=null)=>{const{el:q,type:ne,transition:_,children:ee,shapeFlag:Q}=x;if(Q&6){ce(x.component.subTree,I,k,X);return}if(Q&128){x.suspense.move(I,k,X);return}if(Q&64){ne.move(x,I,k,Ve);return}if(ne===Ye){r(q,I,k);for(let le=0;le<ee.length;le++)ce(ee[le],I,k,X);r(x.anchor,I,k);return}if(ne===tr){E(x,I,k);return}if(X!==2&&Q&1&&_)if(X===0)_.beforeEnter(q),r(q,I,k),ot(()=>_.enter(q),W);else{const{leave:le,delayLeave:pe,afterLeave:y}=_,h=()=>r(q,I,k),U=()=>{le(q,()=>{h(),y&&y()})};pe?pe(q,h,U):U()}else r(q,I,k)},ve=(x,I,k,X=!1,W=!1)=>{const{type:q,props:ne,ref:_,children:ee,dynamicChildren:Q,shapeFlag:fe,patchFlag:le,dirs:pe}=x;if(_!=null&&jo(_,null,k,x,!0),fe&256){I.ctx.deactivate(x);return}const y=fe&1&&pe,h=!hi(x);let U;if(h&&(U=ne&&ne.onVnodeBeforeUnmount)&&St(U,I,x),fe&6)Je(x.component,k,X);else{if(fe&128){x.suspense.unmount(k,X);return}y&&_t(x,null,I,"beforeUnmount"),fe&64?x.type.remove(x,I,k,W,Ve,X):Q&&(q!==Ye||le>0&&le&64)?Qe(Q,I,k,!1,!0):(q===Ye&&le&(128|256)||!W&&fe&16)&&Qe(ee,I,k),X&&Se(x)}(h&&(U=ne&&ne.onVnodeUnmounted)||y)&&ot(()=>{U&&St(U,I,x),y&&_t(x,null,I,"unmounted")},k)},Se=x=>{const{type:I,el:k,anchor:X,transition:W}=x;if(I===Ye){Re(k,X);return}if(I===tr){$(x);return}const q=()=>{i(k),W&&!W.persisted&&W.afterLeave&&W.afterLeave()};if(x.shapeFlag&1&&W&&!W.persisted){const{leave:ne,delayLeave:_}=W,ee=()=>ne(k,q);_?_(x.el,q,ee):ee()}else q()},Re=(x,I)=>{let k;for(;x!==I;)k=p(x),i(x),x=k;i(I)},Je=(x,I,k)=>{const{bum:X,scope:W,update:q,subTree:ne,um:_}=x;X&&Xn(X),W.stop(),q&&(q.active=!1,ve(ne,x,I,k)),_&&ot(_,I),ot(()=>{x.isUnmounted=!0},I),I&&I.pendingBranch&&!I.isUnmounted&&x.asyncDep&&!x.asyncResolved&&x.suspenseId===I.pendingId&&(I.deps--,I.deps===0&&I.resolve())},Qe=(x,I,k,X=!1,W=!1,q=0)=>{for(let ne=q;ne<x.length;ne++)ve(x[ne],I,k,X,W)},ft=x=>x.shapeFlag&6?ft(x.component.subTree):x.shapeFlag&128?x.suspense.next():p(x.anchor||x.el),kt=(x,I,k)=>{x==null?I._vnode&&ve(I._vnode,null,null,!0):v(I._vnode||null,x,I,null,null,null,k),Go(),I._vnode=x},Ve={p:v,um:ve,m:ce,r:Se,mt:M,mc:N,pc:K,pbc:V,n:ft,o:e};let ze,vt;return t&&([ze,vt]=t(Ve)),{render:kt,hydrate:ze,createApp:Pg(kt,ze)}}function jo(e,t,n,r,i=!1){if(ue(e)){e.forEach((p,d)=>jo(p,t&&(ue(t)?t[d]:t),n,r,i));return}if(hi(r)&&!i)return;const o=r.shapeFlag&4?Ga(r.component)||r.component.proxy:r.el,s=i?null:o,{i:a,r:l}=e,c=t&&t.r,u=a.refs===Ce?a.refs={}:a.refs,f=a.setupState;if(c!=null&&c!==l&&(be(c)?(u[c]=null,xe(f,c)&&(f[c]=null)):at(c)&&(c.value=null)),be(l)){const p=()=>{u[l]=s,xe(f,l)&&(f[l]=s)};s?(p.id=-1,ot(p,n)):p()}else if(at(l)){const p=()=>{l.value=s};s?(p.id=-1,ot(p,n)):p()}else ye(l)&&nn(l,a,12,[s,u])}function St(e,t,n,r=null){xt(e,t,7,[n,r])}function Va(e,t,n=!1){const r=e.children,i=t.children;if(ue(r)&&ue(i))for(let o=0;o<r.length;o++){const s=r[o];let a=i[o];a.shapeFlag&1&&!a.dynamicChildren&&((a.patchFlag<=0||a.patchFlag===32)&&(a=i[o]=Rn(i[o]),a.el=s.el),n||Va(s,a))}}function Cg(e){const t=e.slice(),n=[0];let r,i,o,s,a;const l=e.length;for(r=0;r<l;r++){const c=e[r];if(c!==0){if(i=n[n.length-1],e[i]<c){t[r]=i,n.push(r);continue}for(o=0,s=n.length-1;o<s;)a=o+s>>1,e[n[a]]<c?o=a+1:s=a;c<e[n[o]]&&(o>0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,s=n[o-1];o-- >0;)n[o]=s,s=t[s];return n}const Mg=e=>e.__isTeleport,yi=e=>e&&(e.disabled||e.disabled===""),_u=e=>typeof SVGElement!="undefined"&&e instanceof SVGElement,za=(e,t)=>{const n=e&&e.to;return be(n)?t?t(n):null:n},Ag={__isTeleport:!0,process(e,t,n,r,i,o,s,a,l,c){const{mc:u,pc:f,pbc:p,o:{insert:d,querySelector:m,createText:b,createComment:v}}=c,S=yi(t.props);let{shapeFlag:g,children:O,dynamicChildren:E}=t;if(e==null){const $=t.el=b(""),R=t.anchor=b("");d($,n,r),d(R,n,r);const T=t.target=za(t.props,m),P=t.targetAnchor=b("");T&&(d(P,T),s=s||_u(T));const N=(j,V)=>{g&16&&u(O,j,V,i,o,s,a,l)};S?N(n,R):T&&N(T,P)}else{t.el=e.el;const $=t.anchor=e.anchor,R=t.target=e.target,T=t.targetAnchor=e.targetAnchor,P=yi(e.props),N=P?n:R,j=P?$:T;if(s=s||_u(R),E?(p(e.dynamicChildren,E,N,i,o,s,a),Va(e,t,!0)):l||f(e,t,N,j,i,o,s,a,!1),S)P||Vo(t,n,$,c,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const V=t.target=za(t.props,m);V&&Vo(t,V,null,c,0)}else P&&Vo(t,R,T,c,1)}},remove(e,t,n,r,{um:i,o:{remove:o}},s){const{shapeFlag:a,children:l,anchor:c,targetAnchor:u,target:f,props:p}=e;if(f&&o(u),(s||!yi(p))&&(o(c),a&16))for(let d=0;d<l.length;d++){const m=l[d];i(m,t,n,!0,!!m.dynamicChildren)}},move:Vo,hydrate:Ng};function Vo(e,t,n,{o:{insert:r},m:i},o=2){o===0&&r(e.targetAnchor,t,n);const{el:s,anchor:a,shapeFlag:l,children:c,props:u}=e,f=o===2;if(f&&r(s,t,n),(!f||yi(u))&&l&16)for(let p=0;p<c.length;p++)i(c[p],t,n,2);f&&r(a,t,n)}function Ng(e,t,n,r,i,o,{o:{nextSibling:s,parentNode:a,querySelector:l}},c){const u=t.target=za(t.props,l);if(u){const f=u._lpa||u.firstChild;t.shapeFlag&16&&(yi(t.props)?(t.anchor=c(s(e),t,a(e),n,r,i,o),t.targetAnchor=f):(t.anchor=s(e),t.targetAnchor=c(f,t,u,n,r,i,o)),u._lpa=t.targetAnchor&&s(t.targetAnchor))}return t.anchor&&s(t.anchor)}const Rg=Ag,Ba="components",Ig="directives";function er(e,t){return Ha(Ba,e,!0,t)||e}const ef=Symbol();function $g(e){return be(e)?Ha(Ba,e,!1)||e:e||ef}function Lg(e){return Ha(Ig,e)}function Ha(e,t,n=!0,r=!1){const i=Tt||et;if(i){const o=i.type;if(e===Ba){const a=Wo(o);if(a&&(a===t||a===st(t)||a===En(st(t))))return o}const s=tf(i[e]||o[e],t)||tf(i.appContext[e],t);return!s&&r?o:s}}function tf(e,t){return e&&(e[t]||e[st(t)]||e[En(st(t))])}const Ye=Symbol(void 0),Cr=Symbol(void 0),ht=Symbol(void 0),tr=Symbol(void 0),bi=[];let en=null;function Ie(e=!1){bi.push(en=e?null:[])}function nf(){bi.pop(),en=bi[bi.length-1]||null}let Mr=1;function ka(e){Mr+=e}function rf(e){return e.dynamicChildren=Mr>0?en||Un:null,nf(),Mr>0&&en&&en.push(e),e}function Si(e,t,n,r,i,o){return rf(Ho(e,t,n,r,i,o,!0))}function ke(e,t,n,r,i){return rf(he(e,t,n,r,i,!0))}function Mn(e){return e?e.__v_isVNode===!0:!1}function tn(e,t){return e.type===t.type&&e.key===t.key}function Dg(e){}const zo="__vInternal",of=({key:e})=>e!=null?e:null,Bo=({ref:e})=>e!=null?be(e)||at(e)||ye(e)?{i:Tt,r:e}:e:null;function Ho(e,t=null,n=null,r=0,i=null,o=e===Ye?0:1,s=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&of(t),ref:t&&Bo(t),scopeId:Ao,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:i,dynamicChildren:null,appContext:null};return a?(Ua(l,n),o&128&&e.normalize(l)):n&&(l.shapeFlag|=be(n)?8:16),Mr>0&&!s&&en&&(l.patchFlag>0||o&6)&&l.patchFlag!==32&&en.push(l),l}const he=Fg;function Fg(e,t=null,n=null,r=0,i=null,o=!1){if((!e||e===ef)&&(e=ht),Mn(e)){const a=An(e,t,!0);return n&&Ua(a,n),a}if(Zg(e)&&(e=e.__vccOpts),t){t=sf(t);let{class:a,style:l}=t;a&&!be(a)&&(t.class=vn(a)),je(l)&&(ya(l)&&!ue(l)&&(l=Me({},l)),t.style=Zt(l))}const s=be(e)?1:ng(e)?128:Mg(e)?64:je(e)?4:ye(e)?2:0;return Ho(e,t,n,r,i,s,o,!0)}function sf(e){return e?ya(e)||zo in e?Me({},e):e:null}function An(e,t,n=!1){const{props:r,ref:i,patchFlag:o,children:s}=e,a=t?Ei(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&of(a),ref:t&&t.ref?n&&i?ue(i)?i.concat(Bo(t)):[i,Bo(t)]:Bo(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ye?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&An(e.ssContent),ssFallback:e.ssFallback&&An(e.ssFallback),el:e.el,anchor:e.anchor}}function Nn(e=" ",t=0){return he(Cr,null,e,t)}function jg(e,t){const n=he(tr,null,e);return n.staticCount=t,n}function Lt(e="",t=!1){return t?(Ie(),ke(ht,null,e)):he(ht,null,e)}function Pt(e){return e==null||typeof e=="boolean"?he(ht):ue(e)?he(Ye,null,e.slice()):typeof e=="object"?Rn(e):he(Cr,null,String(e))}function Rn(e){return e.el===null||e.memo?e:An(e)}function Ua(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(ue(t))n=16;else if(typeof t=="object")if(r&(1|64)){const i=t.default;i&&(i._c&&(i._d=!1),Ua(e,i()),i._c&&(i._d=!0));return}else{n=32;const i=t._;!i&&!(zo in t)?t._ctx=Tt:i===3&&Tt&&(Tt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else ye(t)?(t={default:t,_ctx:Tt},n=32):(t=String(t),r&64?(n=16,t=[Nn(t)]):n=8);e.children=t,e.shapeFlag|=n}function Ei(...e){const t={};for(let n=0;n<e.length;n++){const r=e[n];for(const i in r)if(i==="class")t.class!==r.class&&(t.class=vn([t.class,r.class]));else if(i==="style")t.style=Zt([t.style,r.style]);else if(yn(i)){const o=t[i],s=r[i];o!==s&&(t[i]=o?[].concat(o,s):s)}else i!==""&&(t[i]=r[i])}return t}function ko(e,t,n,r){let i;const o=n&&n[r];if(ue(e)||be(e)){i=new Array(e.length);for(let s=0,a=e.length;s<a;s++)i[s]=t(e[s],s,void 0,o&&o[s])}else if(typeof e=="number"){i=new Array(e);for(let s=0;s<e;s++)i[s]=t(s+1,s,void 0,o&&o[s])}else if(je(e))if(e[Symbol.iterator])i=Array.from(e,(s,a)=>t(s,a,void 0,o&&o[a]));else{const s=Object.keys(e);i=new Array(s.length);for(let a=0,l=s.length;a<l;a++){const c=s[a];i[a]=t(e[c],c,a,o&&o[a])}}else i=[];return n&&(n[r]=i),i}function Vg(e,t){for(let n=0;n<t.length;n++){const r=t[n];if(ue(r))for(let i=0;i<r.length;i++)e[r[i].name]=r[i].fn;else r&&(e[r.name]=r.fn)}return e}function qe(e,t,n={},r,i){if(Tt.isCE)return he("slot",t==="default"?null:{name:t},r&&r());let o=e[t];o&&o._c&&(o._d=!1),Ie();const s=o&&af(o(n)),a=ke(Ye,{key:n.key||`_${t}`},s||(r?r():[]),s&&e._===1?64:-2);return!i&&a.scopeId&&(a.slotScopeIds=[a.scopeId+"-s"]),o&&o._c&&(o._d=!0),a}function af(e){return e.some(t=>Mn(t)?!(t.type===ht||t.type===Ye&&!af(t.children)):!0)?e:null}function zg(e){const t={};for(const n in e)t[Yn(n)]=e[n];return t}const Ka=e=>e?cf(e)?Ga(e)||e.proxy:Ka(e.parent):null,Uo=Me(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ka(e.parent),$root:e=>Ka(e.root),$emit:e=>e.emit,$options:e=>Vu(e),$forceUpdate:e=>()=>qa(e.update),$nextTick:e=>Xo.bind(e.proxy),$watch:e=>sv.bind(e)}),Wa={get({_:e},t){const{ctx:n,setupState:r,data:i,props:o,accessCache:s,type:a,appContext:l}=e;let c;if(t[0]!=="$"){const d=s[t];if(d!==void 0)switch(d){case 0:return r[t];case 1:return i[t];case 3:return n[t];case 2:return o[t]}else{if(r!==Ce&&xe(r,t))return s[t]=0,r[t];if(i!==Ce&&xe(i,t))return s[t]=1,i[t];if((c=e.propsOptions[0])&&xe(c,t))return s[t]=2,o[t];if(n!==Ce&&xe(n,t))return s[t]=3,n[t];$a&&(s[t]=4)}}const u=Uo[t];let f,p;if(u)return t==="$attrs"&&wt(e,"get",t),u(e);if((f=a.__cssModules)&&(f=f[t]))return f;if(n!==Ce&&xe(n,t))return s[t]=3,n[t];if(p=l.config.globalProperties,xe(p,t))return p[t]},set({_:e},t,n){const{data:r,setupState:i,ctx:o}=e;if(i!==Ce&&xe(i,t))i[t]=n;else if(r!==Ce&&xe(r,t))r[t]=n;else if(xe(e.props,t))return!1;return t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:i,propsOptions:o}},s){let a;return n[s]!==void 0||e!==Ce&&xe(e,s)||t!==Ce&&xe(t,s)||(a=o[0])&&xe(a,s)||xe(r,s)||xe(Uo,s)||xe(i.config.globalProperties,s)}},Bg=Me({},Wa,{get(e,t){if(t!==Symbol.unscopables)return Wa.get(e,t,e)},has(e,t){return t[0]!=="_"&&!Ic(t)}}),Hg=Zu();let kg=0;function lf(e,t,n){const r=e.type,i=(t?t.appContext:e.appContext)||Hg,o={uid:kg++,vnode:e,type:r,parent:t,appContext:i,root:null,next:null,subTree:null,update:null,scope:new la(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(i.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Hu(r,i),emitsOptions:vu(r,i),emit:null,emitted:null,propsDefaults:Ce,inheritAttrs:r.inheritAttrs,ctx:Ce,data:Ce,props:Ce,attrs:Ce,slots:Ce,refs:Ce,setupState:Ce,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return o.ctx={_:o},o.root=t?t.root:o,o.emit=Qm.bind(null,o),e.ce&&e.ce(o),o}let et=null;const In=()=>et||Tt,$n=e=>{et=e,e.scope.on()},Ln=()=>{et&&et.scope.off(),et=null};function cf(e){return e.vnode.shapeFlag&4}let Oi=!1;function uf(e,t=!1){Oi=t;const{props:n,children:r}=e.vnode,i=cf(e);bg(e,n,i,t),Og(e,r);const o=i?Ug(e,t):void 0;return Oi=!1,o}function Ug(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=ba(new Proxy(e.ctx,Wa));const{setup:r}=n;if(r){const i=e.setupContext=r.length>1?pf(e):null;$n(e),Jn();const o=nn(r,e,0,[e.props,i]);if(wn(),Ln(),oa(o)){if(o.then(Ln,Ln),t)return o.then(s=>{Ya(e,s,t)}).catch(s=>{nr(s,e,0)});e.asyncDep=o}else Ya(e,o,t)}else ff(e,t)}function Ya(e,t,n){ye(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:je(t)&&(e.setupState=Oa(t)),ff(e,n)}let Ko,Xa;function Kg(e){Ko=e,Xa=t=>{t.render._rc&&(t.withProxy=new Proxy(t.ctx,Bg))}}const Wg=()=>!Ko;function ff(e,t,n){const r=e.type;if(!e.render){if(!t&&Ko&&!r.render){const i=r.template;if(i){const{isCustomElement:o,compilerOptions:s}=e.appContext.config,{delimiters:a,compilerOptions:l}=r,c=Me(Me({isCustomElement:o,delimiters:a},s),l);r.render=Ko(i,c)}}e.render=r.render||pt,Xa&&Xa(e)}$n(e),Jn(),hg(e),wn(),Ln()}function Yg(e){return new Proxy(e.attrs,{get(t,n){return wt(e,"get","$attrs"),t[n]}})}function pf(e){const t=r=>{e.exposed=r||{}};let n;return{get attrs(){return n||(n=Yg(e))},slots:e.slots,emit:e.emit,expose:t}}function Ga(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Oa(ba(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Uo)return Uo[n](e)}}))}const Xg=/(?:^|[-_])(\w)/g,Gg=e=>e.replace(Xg,t=>t.toUpperCase()).replace(/[-_]/g,"");function Wo(e){return ye(e)&&e.displayName||e.name}function df(e,t,n=!1){let r=Wo(t);if(!r&&t.__file){const i=t.__file.match(/([^/\\]+)\.\w+$/);i&&(r=i[1])}if(!r&&e&&e.parent){const i=o=>{for(const s in o)if(o[s]===t)return s};r=i(e.components||e.parent.type.components)||i(e.appContext.components)}return r?Gg(r):n?"App":"Anonymous"}function Zg(e){return ye(e)&&"__vccOpts"in e}const wi=[];function hf(e,...t){Jn();const n=wi.length?wi[wi.length-1].component:null,r=n&&n.appContext.config.warnHandler,i=Jg();if(r)nn(r,n,11,[e+t.join(""),n&&n.proxy,i.map(({vnode:o})=>`at <${df(n,o.type)}>`).join(`
|
3 |
+
`),i]);else{const o=[`[Vue warn]: ${e}`,...t];i.length&&o.push(`
|
4 |
+
`,...Qg(i)),console.warn(...o)}wn()}function Jg(){let e=wi[wi.length-1];if(!e)return[];const t=[];for(;e;){const n=t[0];n&&n.vnode===e?n.recurseCount++:t.push({vnode:e,recurseCount:0});const r=e.component&&e.component.parent;e=r&&r.vnode}return t}function Qg(e){const t=[];return e.forEach((n,r)=>{t.push(...r===0?[]:[`
|
5 |
+
`],...qg(n))}),t}function qg({vnode:e,recurseCount:t}){const n=t>0?`... (${t} recursive calls)`:"",r=e.component?e.component.parent==null:!1,i=` at <${df(e.component,e.type,r)}`,o=">"+n;return e.props?[i,..._g(e.props),o]:[i+o]}function _g(e){const t=[],n=Object.keys(e);return n.slice(0,3).forEach(r=>{t.push(...mf(r,e[r]))}),n.length>3&&t.push(" ..."),t}function mf(e,t,n){return be(t)?(t=JSON.stringify(t),n?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?n?t:[`${e}=${t}`]:at(t)?(t=mf(e,Te(t.value),!0),n?t:[`${e}=Ref<`,t,">"]):ye(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=Te(t),n?t:[`${e}=`,t])}function nn(e,t,n,r){let i;try{i=r?e(...r):e()}catch(o){nr(o,t,n)}return i}function xt(e,t,n,r){if(ye(e)){const o=nn(e,t,n,r);return o&&oa(o)&&o.catch(s=>{nr(s,t,n)}),o}const i=[];for(let o=0;o<e.length;o++)i.push(xt(e[o],t,n,r));return i}function nr(e,t,n,r=!0){const i=t?t.vnode:null;if(t){let o=t.parent;const s=t.proxy,a=n;for(;o;){const c=o.ec;if(c){for(let u=0;u<c.length;u++)if(c[u](e,s,a)===!1)return}o=o.parent}const l=t.appContext.config.errorHandler;if(l){nn(l,null,10,[e,s,a]);return}}ev(e,n,i,r)}function ev(e,t,n,r=!0){console.error(e)}let Yo=!1,Za=!1;const Ct=[];let pn=0;const Ti=[];let Pi=null,Ar=0;const xi=[];let Dn=null,Nr=0;const gf=Promise.resolve();let Ja=null,Qa=null;function Xo(e){const t=Ja||gf;return e?t.then(this?e.bind(this):e):t}function tv(e){let t=pn+1,n=Ct.length;for(;t<n;){const r=t+n>>>1;Ci(Ct[r])<e?t=r+1:n=r}return t}function qa(e){(!Ct.length||!Ct.includes(e,Yo&&e.allowRecurse?pn+1:pn))&&e!==Qa&&(e.id==null?Ct.push(e):Ct.splice(tv(e.id),0,e),vf())}function vf(){!Yo&&!Za&&(Za=!0,Ja=gf.then(bf))}function nv(e){const t=Ct.indexOf(e);t>pn&&Ct.splice(t,1)}function yf(e,t,n,r){ue(e)?n.push(...e):(!t||!t.includes(e,e.allowRecurse?r+1:r))&&n.push(e),vf()}function rv(e){yf(e,Pi,Ti,Ar)}function _a(e){yf(e,Dn,xi,Nr)}function el(e,t=null){if(Ti.length){for(Qa=t,Pi=[...new Set(Ti)],Ti.length=0,Ar=0;Ar<Pi.length;Ar++)Pi[Ar]();Pi=null,Ar=0,Qa=null,el(e,t)}}function Go(e){if(xi.length){const t=[...new Set(xi)];if(xi.length=0,Dn){Dn.push(...t);return}for(Dn=t,Dn.sort((n,r)=>Ci(n)-Ci(r)),Nr=0;Nr<Dn.length;Nr++)Dn[Nr]();Dn=null,Nr=0}}const Ci=e=>e.id==null?1/0:e.id;function bf(e){Za=!1,Yo=!0,el(e),Ct.sort((n,r)=>Ci(n)-Ci(r));const t=pt;try{for(pn=0;pn<Ct.length;pn++){const n=Ct[pn];n&&n.active!==!1&&nn(n,null,14)}}finally{pn=0,Ct.length=0,Go(),Yo=!1,Ja=null,(Ct.length||Ti.length||xi.length)&&bf(e)}}function iv(e,t){return Mi(e,null,t)}function Sf(e,t){return Mi(e,null,{flush:"post"})}function ov(e,t){return Mi(e,null,{flush:"sync"})}const Ef={};function lt(e,t,n){return Mi(e,t,n)}function Mi(e,t,{immediate:n,deep:r,flush:i,onTrack:o,onTrigger:s}=Ce){const a=et;let l,c=!1,u=!1;if(at(e)?(l=()=>e.value,c=!!e._shallow):Qn(e)?(l=()=>e,r=!0):ue(e)?(u=!0,c=e.some(Qn),l=()=>e.map(S=>{if(at(S))return S.value;if(Qn(S))return rr(S);if(ye(S))return nn(S,a,2)})):ye(e)?t?l=()=>nn(e,a,2):l=()=>{if(!(a&&a.isUnmounted))return f&&f(),xt(e,a,3,[p])}:l=pt,t&&r){const S=l;l=()=>rr(S())}let f,p=S=>{f=v.onStop=()=>{nn(S,a,4)}};if(Oi)return p=pt,t?n&&xt(t,a,3,[l(),u?[]:void 0,p]):l(),pt;let d=u?[]:Ef;const m=()=>{if(!!v.active)if(t){const S=v.run();(r||c||(u?S.some((g,O)=>Er(g,d[O])):Er(S,d)))&&(f&&f(),xt(t,a,3,[S,d===Ef?void 0:d,p]),d=S)}else v.run()};m.allowRecurse=!!t;let b;i==="sync"?b=m:i==="post"?b=()=>ot(m,a&&a.suspense):b=()=>{!a||a.isMounted?rv(m):m()};const v=new ai(l,b);return t?n?m():d=v.run():i==="post"?ot(v.run.bind(v),a&&a.suspense):v.run(),()=>{v.stop(),a&&a.scope&&ra(a.scope.effects,v)}}function sv(e,t,n){const r=this.proxy,i=be(e)?e.includes(".")?Of(r,e):()=>r[e]:e.bind(r,r);let o;ye(t)?o=t:(o=t.handler,n=t);const s=et;$n(this);const a=Mi(i,o.bind(r),n);return s?$n(s):Ln(),a}function Of(e,t){const n=t.split(".");return()=>{let r=e;for(let i=0;i<n.length&&r;i++)r=r[n[i]];return r}}function rr(e,t){if(!je(e)||e.__v_skip||(t=t||new Set,t.has(e)))return e;if(t.add(e),at(e))rr(e.value,t);else if(ue(e))for(let n=0;n<e.length;n++)rr(e[n],t);else if(bn(e)||Kn(e))e.forEach(n=>{rr(n,t)});else if(aa(e))for(const n in e)rr(e[n],t);return e}const wf=e=>typeof e=="function",av=e=>e!==null&&typeof e=="object",lv=e=>av(e)&&wf(e.then)&&wf(e.catch);function cv(){return null}function uv(){return null}function fv(e){}function pv(e,t){return null}function dv(){return Tf().slots}function hv(){return Tf().attrs}function Tf(){const e=In();return e.setupContext||(e.setupContext=pf(e))}function mv(e,t){for(const n in t){const r=e[n];r?r.default=t[n]:r===null&&(e[n]={default:t[n]})}return e}function gv(e){const t=In();let n=e();return Ln(),lv(n)&&(n=n.catch(r=>{throw $n(t),r})),[n,()=>$n(t)]}function tl(e,t,n){const r=arguments.length;return r===2?je(t)&&!ue(t)?Mn(t)?he(e,null,[t]):he(e,t):he(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Mn(n)&&(n=[n]),he(e,t,n))}const Pf=Symbol(""),vv=()=>{{const e=di(Pf);return e||hf("Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build."),e}};function yv(){}function bv(e,t,n,r){const i=n[r];if(i&&xf(i,e))return i;const o=t();return o.memo=e.slice(),n[r]=o}function xf(e,t){const n=e.memo;if(n.length!=t.length)return!1;for(let r=0;r<n.length;r++)if(n[r]!==t[r])return!1;return Mr>0&&en&&en.push(e),!0}const Cf="3.2.19",Sv={createComponentInstance:lf,setupComponent:uf,renderComponentRoot:No,setCurrentRenderingInstance:fi,isVNode:Mn,normalizeVNode:Pt},Ev=Sv,Ov=null,wv=null,Tv="http://www.w3.org/2000/svg",Rr=typeof document!="undefined"?document:null,Mf=new Map,Pv={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const i=t?Rr.createElementNS(Tv,e):Rr.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&i.setAttribute("multiple",r.multiple),i},createText:e=>Rr.createTextNode(e),createComment:e=>Rr.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Rr.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},cloneNode(e){const t=e.cloneNode(!0);return"_value"in e&&(t._value=e._value),t},insertStaticContent(e,t,n,r){const i=n?n.previousSibling:t.lastChild;let o=Mf.get(e);if(!o){const s=Rr.createElement("template");if(s.innerHTML=r?`<svg>${e}</svg>`:e,o=s.content,r){const a=o.firstChild;for(;a.firstChild;)o.appendChild(a.firstChild);o.removeChild(a)}Mf.set(e,o)}return t.insertBefore(o.cloneNode(!0),n),[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function xv(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function Cv(e,t,n){const r=e.style,i=r.display;if(!n)e.removeAttribute("style");else if(be(n))t!==n&&(r.cssText=n);else{for(const o in n)nl(r,o,n[o]);if(t&&!be(t))for(const o in t)n[o]==null&&nl(r,o,"")}"_vod"in e&&(r.display=i)}const Af=/\s*!important$/;function nl(e,t,n){if(ue(n))n.forEach(r=>nl(e,t,r));else if(t.startsWith("--"))e.setProperty(t,n);else{const r=Mv(e,t);Af.test(n)?e.setProperty(Ot(r),n.replace(Af,""),"important"):e[r]=n}}const Nf=["Webkit","Moz","ms"],rl={};function Mv(e,t){const n=rl[t];if(n)return n;let r=st(t);if(r!=="filter"&&r in e)return rl[t]=r;r=En(r);for(let i=0;i<Nf.length;i++){const o=Nf[i]+r;if(o in e)return rl[t]=o}return t}const Rf="http://www.w3.org/1999/xlink";function Av(e,t,n,r,i){if(r&&t.startsWith("xlink:"))n==null?e.removeAttributeNS(Rf,t.slice(6,t.length)):e.setAttributeNS(Rf,t,n);else{const o=Fc(t);n==null||o&&!ea(n)?e.removeAttribute(t):e.setAttribute(t,o?"":n)}}function Nv(e,t,n,r,i,o,s){if(t==="innerHTML"||t==="textContent"){r&&s(r,i,o),e[t]=n==null?"":n;return}if(t==="value"&&e.tagName!=="PROGRESS"){e._value=n;const a=n==null?"":n;e.value!==a&&(e.value=a),n==null&&e.removeAttribute(t);return}if(n===""||n==null){const a=typeof e[t];if(a==="boolean"){e[t]=ea(n);return}else if(n==null&&a==="string"){e[t]="",e.removeAttribute(t);return}else if(a==="number"){try{e[t]=0}catch(l){}e.removeAttribute(t);return}}try{e[t]=n}catch(a){}}let Zo=Date.now,If=!1;if(typeof window!="undefined"){Zo()>document.createEvent("Event").timeStamp&&(Zo=()=>performance.now());const e=navigator.userAgent.match(/firefox\/(\d+)/i);If=!!(e&&Number(e[1])<=53)}let il=0;const Rv=Promise.resolve(),Iv=()=>{il=0},$v=()=>il||(Rv.then(Iv),il=Zo());function dn(e,t,n,r){e.addEventListener(t,n,r)}function Lv(e,t,n,r){e.removeEventListener(t,n,r)}function Dv(e,t,n,r,i=null){const o=e._vei||(e._vei={}),s=o[t];if(r&&s)s.value=r;else{const[a,l]=Fv(t);if(r){const c=o[t]=jv(r,i);dn(e,a,c,l)}else s&&(Lv(e,a,s,l),o[t]=void 0)}}const $f=/(?:Once|Passive|Capture)$/;function Fv(e){let t;if($f.test(e)){t={};let n;for(;n=e.match($f);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[Ot(e.slice(2)),t]}function jv(e,t){const n=r=>{const i=r.timeStamp||Zo();(If||i>=n.attached-1)&&xt(Vv(r,n.value),t,5,[r])};return n.value=e,n.attached=$v(),n}function Vv(e,t){if(ue(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>i=>!i._stopped&&r(i))}else return t}const Lf=/^on[a-z]/,zv=(e,t,n,r,i=!1,o,s,a,l)=>{t==="class"?xv(e,r,i):t==="style"?Cv(e,n,r):yn(t)?ho(t)||Dv(e,t,n,r,s):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Bv(e,t,r,i))?Nv(e,t,r,o,s,a,l):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Av(e,t,r,i))};function Bv(e,t,n,r){return r?!!(t==="innerHTML"||t==="textContent"||t in e&&Lf.test(t)&&ye(n)):t==="spellcheck"||t==="draggable"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||Lf.test(t)&&be(n)?!1:t in e}function Df(e,t){const n=Aa(e);class r extends Jo{constructor(o){super(n,o,t)}}return r.def=n,r}const Hv=e=>Df(e,rp),kv=typeof HTMLElement!="undefined"?HTMLElement:class{};class Jo extends kv{constructor(t,n={},r){super();this._def=t,this._props=n,this._instance=null,this._connected=!1,this._resolved=!1,this._numberProps=null,this.shadowRoot&&r?r(this._createVNode(),this.shadowRoot):this.attachShadow({mode:"open"});for(let i=0;i<this.attributes.length;i++)this._setAttr(this.attributes[i].name);new MutationObserver(i=>{for(const o of i)this._setAttr(o.attributeName)}).observe(this,{attributes:!0})}connectedCallback(){this._connected=!0,this._instance||(this._resolveDef(),this._update())}disconnectedCallback(){this._connected=!1,Xo(()=>{this._connected||(cl(null,this.shadowRoot),this._instance=null)})}_resolveDef(){if(this._resolved)return;const t=r=>{this._resolved=!0;const{props:i,styles:o}=r,s=!ue(i),a=i?s?Object.keys(i):i:[];let l;if(s)for(const c in this._props){const u=i[c];(u===Number||u&&u.type===Number)&&(this._props[c]=cn(this._props[c]),(l||(l=Object.create(null)))[c]=!0)}l&&(this._numberProps=l,this._update());for(const c of Object.keys(this))c[0]!=="_"&&this._setProp(c,this[c]);for(const c of a.map(st))Object.defineProperty(this,c,{get(){return this._getProp(c)},set(u){this._setProp(c,u)}});this._applyStyles(o)},n=this._def.__asyncLoader;n?n().then(t):t(this._def)}_setAttr(t){let n=this.getAttribute(t);this._numberProps&&this._numberProps[t]&&(n=cn(n)),this._setProp(st(t),n,!1)}_getProp(t){return this._props[t]}_setProp(t,n,r=!0){n!==this._props[t]&&(this._props[t]=n,this._instance&&this._update(),r&&(n===!0?this.setAttribute(Ot(t),""):typeof n=="string"||typeof n=="number"?this.setAttribute(Ot(t),n+""):n||this.removeAttribute(Ot(t))))}_update(){cl(this._createVNode(),this.shadowRoot)}_createVNode(){const t=he(this._def,Me({},this._props));return this._instance||(t.ce=n=>{this._instance=n,n.isCE=!0,n.emit=(i,...o)=>{this.dispatchEvent(new CustomEvent(i,{detail:o}))};let r=this;for(;r=r&&(r.parentNode||r.host);)if(r instanceof Jo){n.parent=r._instance;break}}),t}_applyStyles(t){t&&t.forEach(n=>{const r=document.createElement("style");r.textContent=n,this.shadowRoot.appendChild(r)})}}function Uv(e="$style"){{const t=In();if(!t)return Ce;const n=t.type.__cssModules;if(!n)return Ce;const r=n[e];return r||Ce}}function Kv(e){const t=In();if(!t)return;const n=()=>ol(t.subTree,e(t.proxy));Sf(n),Pr(()=>{const r=new MutationObserver(n);r.observe(t.subTree.el.parentNode,{childList:!0}),vi(()=>r.disconnect())})}function ol(e,t){if(e.shapeFlag&128){const n=e.suspense;e=n.activeBranch,n.pendingBranch&&!n.isHydrating&&n.effects.push(()=>{ol(n.activeBranch,t)})}for(;e.component;)e=e.component.subTree;if(e.shapeFlag&1&&e.el)Ff(e.el,t);else if(e.type===Ye)e.children.forEach(n=>ol(n,t));else if(e.type===tr){let{el:n,anchor:r}=e;for(;n&&(Ff(n,t),n!==r);)n=n.nextSibling}}function Ff(e,t){if(e.nodeType===1){const n=e.style;for(const r in t)n.setProperty(`--${r}`,t[r])}}const Fn="transition",Ai="animation",Ni=(e,{slots:t})=>tl(Ca,zf(e),t);Ni.displayName="Transition";const jf={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Wv=Ni.props=Me({},Ca.props,jf),ir=(e,t=[])=>{ue(e)?e.forEach(n=>n(...t)):e&&e(...t)},Vf=e=>e?ue(e)?e.some(t=>t.length>1):e.length>1:!1;function zf(e){const t={};for(const F in e)F in jf||(t[F]=e[F]);if(e.css===!1)return t;const{name:n="v",type:r,duration:i,enterFromClass:o=`${n}-enter-from`,enterActiveClass:s=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:l=o,appearActiveClass:c=s,appearToClass:u=a,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:d=`${n}-leave-to`}=e,m=Yv(i),b=m&&m[0],v=m&&m[1],{onBeforeEnter:S,onEnter:g,onEnterCancelled:O,onLeave:E,onLeaveCancelled:$,onBeforeAppear:R=S,onAppear:T=g,onAppearCancelled:P=O}=t,N=(F,C,w)=>{or(F,C?u:a),or(F,C?c:s),w&&w()},j=(F,C)=>{or(F,d),or(F,p),C&&C()},V=F=>(C,w)=>{const M=F?T:g,L=()=>N(C,F,w);ir(M,[C,L]),Bf(()=>{or(C,F?l:o),hn(C,F?u:a),Vf(M)||Hf(C,r,b,L)})};return Me(t,{onBeforeEnter(F){ir(S,[F]),hn(F,o),hn(F,s)},onBeforeAppear(F){ir(R,[F]),hn(F,l),hn(F,c)},onEnter:V(!1),onAppear:V(!0),onLeave(F,C){const w=()=>j(F,C);hn(F,f),Wf(),hn(F,p),Bf(()=>{or(F,f),hn(F,d),Vf(E)||Hf(F,r,v,w)}),ir(E,[F,w])},onEnterCancelled(F){N(F,!1),ir(O,[F])},onAppearCancelled(F){N(F,!0),ir(P,[F])},onLeaveCancelled(F){j(F),ir($,[F])}})}function Yv(e){if(e==null)return null;if(je(e))return[sl(e.enter),sl(e.leave)];{const t=sl(e);return[t,t]}}function sl(e){return cn(e)}function hn(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function or(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function Bf(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Xv=0;function Hf(e,t,n,r){const i=e._endId=++Xv,o=()=>{i===e._endId&&r()};if(n)return setTimeout(o,n);const{type:s,timeout:a,propCount:l}=kf(e,t);if(!s)return r();const c=s+"end";let u=0;const f=()=>{e.removeEventListener(c,p),o()},p=d=>{d.target===e&&++u>=l&&f()};setTimeout(()=>{u<l&&f()},a+1),e.addEventListener(c,p)}function kf(e,t){const n=window.getComputedStyle(e),r=m=>(n[m]||"").split(", "),i=r(Fn+"Delay"),o=r(Fn+"Duration"),s=Uf(i,o),a=r(Ai+"Delay"),l=r(Ai+"Duration"),c=Uf(a,l);let u=null,f=0,p=0;t===Fn?s>0&&(u=Fn,f=s,p=o.length):t===Ai?c>0&&(u=Ai,f=c,p=l.length):(f=Math.max(s,c),u=f>0?s>c?Fn:Ai:null,p=u?u===Fn?o.length:l.length:0);const d=u===Fn&&/\b(transform|all)(,|$)/.test(n[Fn+"Property"]);return{type:u,timeout:f,propCount:p,hasTransform:d}}function Uf(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((n,r)=>Kf(n)+Kf(e[r])))}function Kf(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function Wf(){return document.body.offsetHeight}const Yf=new WeakMap,Xf=new WeakMap,Gv={name:"TransitionGroup",props:Me({},Wv,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=In(),r=xa();let i,o;return $o(()=>{if(!i.length)return;const s=e.moveClass||`${e.name||"v"}-move`;if(!_v(i[0].el,n.vnode.el,s))return;i.forEach(Jv),i.forEach(Qv);const a=i.filter(qv);Wf(),a.forEach(l=>{const c=l.el,u=c.style;hn(c,s),u.transform=u.webkitTransform=u.transitionDuration="";const f=c._moveCb=p=>{p&&p.target!==c||(!p||/transform$/.test(p.propertyName))&&(c.removeEventListener("transitionend",f),c._moveCb=null,or(c,s))};c.addEventListener("transitionend",f)})}),()=>{const s=Te(e),a=zf(s);let l=s.tag||Ye;i=o,o=t.default?Ro(t.default()):[];for(let c=0;c<o.length;c++){const u=o[c];u.key!=null&&qn(u,Tr(u,a,r,n))}if(i)for(let c=0;c<i.length;c++){const u=i[c];qn(u,Tr(u,a,r,n)),Yf.set(u,u.el.getBoundingClientRect())}return he(l,null,o)}}},Zv=Gv;function Jv(e){const t=e.el;t._moveCb&&t._moveCb(),t._enterCb&&t._enterCb()}function Qv(e){Xf.set(e,e.el.getBoundingClientRect())}function qv(e){const t=Yf.get(e),n=Xf.get(e),r=t.left-n.left,i=t.top-n.top;if(r||i){const o=e.el.style;return o.transform=o.webkitTransform=`translate(${r}px,${i}px)`,o.transitionDuration="0s",e}}function _v(e,t,n){const r=e.cloneNode();e._vtc&&e._vtc.forEach(s=>{s.split(/\s+/).forEach(a=>a&&r.classList.remove(a))}),n.split(/\s+/).forEach(s=>s&&r.classList.add(s)),r.style.display="none";const i=t.nodeType===1?t:t.parentNode;i.appendChild(r);const{hasTransform:o}=kf(r);return i.removeChild(r),o}const jn=e=>{const t=e.props["onUpdate:modelValue"];return ue(t)?n=>Xn(t,n):t};function ey(e){e.target.composing=!0}function Gf(e){const t=e.target;t.composing&&(t.composing=!1,ty(t,"input"))}function ty(e,t){const n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}const Qo={created(e,{modifiers:{lazy:t,trim:n,number:r}},i){e._assign=jn(i);const o=r||i.props&&i.props.type==="number";dn(e,t?"change":"input",s=>{if(s.target.composing)return;let a=e.value;n?a=a.trim():o&&(a=cn(a)),e._assign(a)}),n&&dn(e,"change",()=>{e.value=e.value.trim()}),t||(dn(e,"compositionstart",ey),dn(e,"compositionend",Gf),dn(e,"change",Gf))},mounted(e,{value:t}){e.value=t==null?"":t},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:r,number:i}},o){if(e._assign=jn(o),e.composing||document.activeElement===e&&(n||r&&e.value.trim()===t||(i||e.type==="number")&&cn(e.value)===t))return;const s=t==null?"":t;e.value!==s&&(e.value=s)}},al={deep:!0,created(e,t,n){e._assign=jn(n),dn(e,"change",()=>{const r=e._modelValue,i=Ir(e),o=e.checked,s=e._assign;if(ue(r)){const a=ti(r,i),l=a!==-1;if(o&&!l)s(r.concat(i));else if(!o&&l){const c=[...r];c.splice(a,1),s(c)}}else if(bn(r)){const a=new Set(r);o?a.add(i):a.delete(i),s(a)}else s(qf(e,o))})},mounted:Zf,beforeUpdate(e,t,n){e._assign=jn(n),Zf(e,t,n)}};function Zf(e,{value:t,oldValue:n},r){e._modelValue=t,ue(t)?e.checked=ti(t,r.props.value)>-1:bn(t)?e.checked=t.has(r.props.value):t!==n&&(e.checked=ln(t,qf(e,!0)))}const ll={created(e,{value:t},n){e.checked=ln(t,n.props.value),e._assign=jn(n),dn(e,"change",()=>{e._assign(Ir(e))})},beforeUpdate(e,{value:t,oldValue:n},r){e._assign=jn(r),t!==n&&(e.checked=ln(t,r.props.value))}},Jf={deep:!0,created(e,{value:t,modifiers:{number:n}},r){const i=bn(t);dn(e,"change",()=>{const o=Array.prototype.filter.call(e.options,s=>s.selected).map(s=>n?cn(Ir(s)):Ir(s));e._assign(e.multiple?i?new Set(o):o:o[0])}),e._assign=jn(r)},mounted(e,{value:t}){Qf(e,t)},beforeUpdate(e,t,n){e._assign=jn(n)},updated(e,{value:t}){Qf(e,t)}};function Qf(e,t){const n=e.multiple;if(!(n&&!ue(t)&&!bn(t))){for(let r=0,i=e.options.length;r<i;r++){const o=e.options[r],s=Ir(o);if(n)ue(t)?o.selected=ti(t,s)>-1:o.selected=t.has(s);else if(ln(Ir(o),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Ir(e){return"_value"in e?e._value:e.value}function qf(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const ny={created(e,t,n){qo(e,t,n,null,"created")},mounted(e,t,n){qo(e,t,n,null,"mounted")},beforeUpdate(e,t,n,r){qo(e,t,n,r,"beforeUpdate")},updated(e,t,n,r){qo(e,t,n,r,"updated")}};function qo(e,t,n,r,i){let o;switch(e.tagName){case"SELECT":o=Jf;break;case"TEXTAREA":o=Qo;break;default:switch(n.props&&n.props.type){case"checkbox":o=al;break;case"radio":o=ll;break;default:o=Qo}}const s=o[i];s&&s(e,t,n,r)}function ry(){Qo.getSSRProps=({value:e})=>({value:e}),ll.getSSRProps=({value:e},t)=>{if(t.props&&ln(t.props.value,e))return{checked:!0}},al.getSSRProps=({value:e},t)=>{if(ue(e)){if(t.props&&ti(e,t.props.value)>-1)return{checked:!0}}else if(bn(e)){if(t.props&&e.has(t.props.value))return{checked:!0}}else if(e)return{checked:!0}}}const iy=["ctrl","shift","alt","meta"],oy={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>iy.some(n=>e[`${n}Key`]&&!t.includes(n))},Xe=(e,t)=>(n,...r)=>{for(let i=0;i<t.length;i++){const o=oy[t[i]];if(o&&o(n,t))return}return e(n,...r)},sy={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},Dt=(e,t)=>n=>{if(!("key"in n))return;const r=Ot(n.key);if(t.some(i=>i===r||sy[i]===r))return e(n)},sr={beforeMount(e,{value:t},{transition:n}){e._vod=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Ri(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),Ri(e,!0),r.enter(e)):r.leave(e,()=>{Ri(e,!1)}):Ri(e,t))},beforeUnmount(e,{value:t}){Ri(e,t)}};function Ri(e,t){e.style.display=t?e._vod:"none"}function ay(){sr.getSSRProps=({value:e})=>{if(!e)return{style:{display:"none"}}}}const _f=Me({patchProp:zv},Pv);let Ii,ep=!1;function tp(){return Ii||(Ii=Ju(_f))}function np(){return Ii=ep?Ii:Qu(_f),ep=!0,Ii}const cl=(...e)=>{tp().render(...e)},rp=(...e)=>{np().hydrate(...e)},ip=(...e)=>{const t=tp().createApp(...e),{mount:n}=t;return t.mount=r=>{const i=op(r);if(!i)return;const o=t._component;!ye(o)&&!o.render&&!o.template&&(o.template=i.innerHTML),i.innerHTML="";const s=n(i,!1,i instanceof SVGElement);return i instanceof Element&&(i.removeAttribute("v-cloak"),i.setAttribute("data-v-app","")),s},t},ly=(...e)=>{const t=np().createApp(...e),{mount:n}=t;return t.mount=r=>{const i=op(r);if(i)return n(i,!0,i instanceof SVGElement)},t};function op(e){return be(e)?document.querySelector(e):e}let sp=!1;const cy=()=>{sp||(sp=!0,ry(),ay())};var uy=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",Transition:Ni,TransitionGroup:Zv,VueElement:Jo,createApp:ip,createSSRApp:ly,defineCustomElement:Df,defineSSRCustomElement:Hv,hydrate:rp,initDirectivesForSSR:cy,render:cl,useCssModule:Uv,useCssVars:Kv,vModelCheckbox:al,vModelDynamic:ny,vModelRadio:ll,vModelSelect:Jf,vModelText:Qo,vShow:sr,withKeys:Dt,withModifiers:Xe,EffectScope:la,ReactiveEffect:ai,computed:xn,customRef:Gm,effect:mm,effectScope:um,getCurrentScope:fm,isProxy:ya,isReactive:Qn,isReadonly:va,isRef:at,markRaw:ba,onScopeDispose:pm,proxyRefs:Oa,reactive:xo,readonly:ga,ref:Pn,shallowReactive:fu,shallowReadonly:km,shallowRef:Um,stop:gm,toRaw:Te,toRef:hu,toRefs:ci,triggerRef:Wm,unref:du,camelize:st,capitalize:En,normalizeClass:vn,normalizeProps:Vc,normalizeStyle:Zt,toDisplayString:Jt,toHandlerKey:Yn,BaseTransition:Ca,Comment:ht,Fragment:Ye,KeepAlive:pg,Static:tr,Suspense:ig,Teleport:Rg,Text:Cr,callWithAsyncErrorHandling:xt,callWithErrorHandling:nn,cloneVNode:An,compatUtils:wv,createBlock:ke,createCommentVNode:Lt,createElementBlock:Si,createElementVNode:Ho,createHydrationRenderer:Qu,createRenderer:Ju,createSlots:Vg,createStaticVNode:jg,createTextVNode:Nn,createVNode:he,defineAsyncComponent:ug,defineComponent:Aa,defineEmits:uv,defineExpose:fv,defineProps:cv,get devtools(){return ui},getCurrentInstance:In,getTransitionRawChildren:Ro,guardReactiveProps:sf,h:tl,handleError:nr,initCustomFormatter:yv,inject:di,isMemoSame:xf,isRuntimeOnly:Wg,isVNode:Mn,mergeDefaults:mv,mergeProps:Ei,nextTick:Xo,onActivated:Cu,onBeforeMount:Nu,onBeforeUnmount:Lo,onBeforeUpdate:Ru,onDeactivated:Mu,onErrorCaptured:Du,onMounted:Pr,onRenderTracked:Lu,onRenderTriggered:$u,onServerPrefetch:Iu,onUnmounted:vi,onUpdated:$o,openBlock:Ie,popScopeId:bu,provide:Tu,pushScopeId:yu,queuePostFlushCb:_a,registerRuntimeCompiler:Kg,renderList:ko,renderSlot:qe,resolveComponent:er,resolveDirective:Lg,resolveDynamicComponent:$g,resolveFilter:Ov,resolveTransitionHooks:Tr,setBlockTracking:ka,setDevtoolsHook:gu,setTransitionHooks:qn,ssrContextKey:Pf,ssrUtils:Ev,toHandlers:zg,transformVNodeArgs:Dg,useAttrs:hv,useSSRContext:vv,useSlots:dv,useTransitionState:xa,version:Cf,warn:hf,watch:lt,watchEffect:iv,watchPostEffect:Sf,watchSyncEffect:ov,withAsyncContext:gv,withCtx:qt,withDefaults:pv,withDirectives:xr,withMemo:bv,withScopeId:Su});function ul(e){if(e.__esModule)return e;var t=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(e).forEach(function(n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}),t}var fy={exports:{}},ap={exports:{}},lp={};function fl(e){throw e}function cp(e){}function Be(e,t,n,r){const i=e,o=new SyntaxError(String(i));return o.code=e,o.loc=t,o}const $r=Symbol(""),Lr=Symbol(""),_o=Symbol(""),$i=Symbol(""),pl=Symbol(""),Vn=Symbol(""),dl=Symbol(""),hl=Symbol(""),es=Symbol(""),ts=Symbol(""),Dr=Symbol(""),ns=Symbol(""),ml=Symbol(""),rs=Symbol(""),Li=Symbol(""),is=Symbol(""),os=Symbol(""),ss=Symbol(""),as=Symbol(""),gl=Symbol(""),vl=Symbol(""),Di=Symbol(""),Fi=Symbol(""),ls=Symbol(""),cs=Symbol(""),Fr=Symbol(""),jr=Symbol(""),us=Symbol(""),fs=Symbol(""),up=Symbol(""),ps=Symbol(""),ji=Symbol(""),fp=Symbol(""),pp=Symbol(""),ds=Symbol(""),dp=Symbol(""),hp=Symbol(""),hs=Symbol(""),yl=Symbol(""),mn={[$r]:"Fragment",[Lr]:"Teleport",[_o]:"Suspense",[$i]:"KeepAlive",[pl]:"BaseTransition",[Vn]:"openBlock",[dl]:"createBlock",[hl]:"createElementBlock",[es]:"createVNode",[ts]:"createElementVNode",[Dr]:"createCommentVNode",[ns]:"createTextVNode",[ml]:"createStaticVNode",[rs]:"resolveComponent",[Li]:"resolveDynamicComponent",[is]:"resolveDirective",[os]:"resolveFilter",[ss]:"withDirectives",[as]:"renderList",[gl]:"renderSlot",[vl]:"createSlots",[Di]:"toDisplayString",[Fi]:"mergeProps",[ls]:"normalizeClass",[cs]:"normalizeStyle",[Fr]:"normalizeProps",[jr]:"guardReactiveProps",[us]:"toHandlers",[fs]:"camelize",[up]:"capitalize",[ps]:"toHandlerKey",[ji]:"setBlockTracking",[fp]:"pushScopeId",[pp]:"popScopeId",[ds]:"withCtx",[dp]:"unref",[hp]:"isRef",[hs]:"withMemo",[yl]:"isMemoSame"};function mp(e){Object.getOwnPropertySymbols(e).forEach(t=>{mn[t]=e[t]})}const tt={source:"",start:{line:1,column:1,offset:0},end:{line:1,column:1,offset:0}};function gp(e,t=tt){return{type:0,children:e,helpers:[],components:[],directives:[],hoists:[],imports:[],cached:0,temps:0,codegenNode:void 0,loc:t}}function Vr(e,t,n,r,i,o,s,a=!1,l=!1,c=!1,u=tt){return e&&(a?(e.helper(Vn),e.helper(ur(e.inSSR,c))):e.helper(cr(e.inSSR,c)),s&&e.helper(ss)),{type:13,tag:t,props:n,children:r,patchFlag:i,dynamicProps:o,directives:s,isBlock:a,disableTracking:l,isComponent:c,loc:u}}function zr(e,t=tt){return{type:17,loc:t,elements:e}}function Mt(e,t=tt){return{type:15,loc:t,properties:e}}function Ge(e,t){return{type:16,loc:tt,key:be(e)?Ee(e,!0):e,value:t}}function Ee(e,t=!1,n=tt,r=0){return{type:4,loc:n,content:e,isStatic:t,constType:t?3:r}}function py(e,t){return{type:5,loc:t,content:be(e)?Ee(e,!1,t):e}}function Kt(e,t=tt){return{type:8,loc:t,children:e}}function Ze(e,t=[],n=tt){return{type:14,loc:n,callee:e,arguments:t}}function ar(e,t=void 0,n=!1,r=!1,i=tt){return{type:18,params:e,returns:t,newline:n,isSlot:r,loc:i}}function ms(e,t,n,r=!0){return{type:19,test:e,consequent:t,alternate:n,newline:r,loc:tt}}function vp(e,t,n=!1){return{type:20,index:e,value:t,isVNode:n,loc:tt}}function yp(e){return{type:21,body:e,loc:tt}}function dy(e){return{type:22,elements:e,loc:tt}}function hy(e,t,n){return{type:23,test:e,consequent:t,alternate:n,loc:tt}}function my(e,t){return{type:24,left:e,right:t,loc:tt}}function gy(e){return{type:25,expressions:e,loc:tt}}function vy(e){return{type:26,returns:e,loc:tt}}const mt=e=>e.type===4&&e.isStatic,lr=(e,t)=>e===t||e===Ot(t);function bl(e){if(lr(e,"Teleport"))return Lr;if(lr(e,"Suspense"))return _o;if(lr(e,"KeepAlive"))return $i;if(lr(e,"BaseTransition"))return pl}const yy=/^\d|[^\$\w]/,Vi=e=>!yy.test(e),by=/[A-Za-z_$\xA0-\uFFFF]/,Sy=/[\.\?\w$\xA0-\uFFFF]/,Ey=/\s+[.[]\s*|\s*[.[]\s+/g,bp=e=>{e=e.trim().replace(Ey,s=>s.trim());let t=0,n=[],r=0,i=0,o=null;for(let s=0;s<e.length;s++){const a=e.charAt(s);switch(t){case 0:if(a==="[")n.push(t),t=1,r++;else if(a==="(")n.push(t),t=2,i++;else if(!(s===0?by:Sy).test(a))return!1;break;case 1:a==="'"||a==='"'||a==="`"?(n.push(t),t=3,o=a):a==="["?r++:a==="]"&&(--r||(t=n.pop()));break;case 2:if(a==="'"||a==='"'||a==="`")n.push(t),t=3,o=a;else if(a==="(")i++;else if(a===")"){if(s===e.length-1)return!1;--i||(t=n.pop())}break;case 3:a===o&&(t=n.pop(),o=null);break}}return!r&&!i},Oy=pt,Sl=bp;function El(e,t,n){const i={source:e.source.substr(t,n),start:zi(e.start,e.source,t),end:e.end};return n!=null&&(i.end=zi(e.start,e.source,t+n)),i}function zi(e,t,n=t.length){return Bi(Me({},e),t,n)}function Bi(e,t,n=t.length){let r=0,i=-1;for(let o=0;o<n;o++)t.charCodeAt(o)===10&&(r++,i=o);return e.offset+=n,e.line+=r,e.column=i===-1?e.column+n:n-i,e}function wy(e,t){if(!e)throw new Error(t||"unexpected compiler condition")}function Et(e,t,n=!1){for(let r=0;r<e.props.length;r++){const i=e.props[r];if(i.type===7&&(n||i.exp)&&(be(t)?i.name===t:t.test(i.name)))return i}}function Br(e,t,n=!1,r=!1){for(let i=0;i<e.props.length;i++){const o=e.props[i];if(o.type===6){if(n)continue;if(o.name===t&&(o.value||r))return o}else if(o.name==="bind"&&(o.exp||r)&&Hi(o.arg,t))return o}}function Hi(e,t){return!!(e&&mt(e)&&e.content===t)}function Sp(e){return e.props.some(t=>t.type===7&&t.name==="bind"&&(!t.arg||t.arg.type!==4||!t.arg.isStatic))}function gs(e){return e.type===5||e.type===2}function Ol(e){return e.type===7&&e.name==="slot"}function Hr(e){return e.type===1&&e.tagType===3}function ki(e){return e.type===1&&e.tagType===2}function cr(e,t){return e||t?es:ts}function ur(e,t){return e||t?dl:hl}const Ty=new Set([Fr,jr]);function Ep(e,t=[]){if(e&&!be(e)&&e.type===14){const n=e.callee;if(!be(n)&&Ty.has(n))return Ep(e.arguments[0],t.concat(e))}return[e,t]}function Ui(e,t,n){let r,o=e.type===13?e.props:e.arguments[2],s=[],a;if(o&&!be(o)&&o.type===14){const l=Ep(o);o=l[0],s=l[1],a=s[s.length-1]}if(o==null||be(o))r=Mt([t]);else if(o.type===14){const l=o.arguments[0];!be(l)&&l.type===15?l.properties.unshift(t):o.callee===us?r=Ze(n.helper(Fi),[Mt([t]),o]):o.arguments.unshift(Mt([t])),!r&&(r=o)}else if(o.type===15){let l=!1;if(t.key.type===4){const c=t.key.content;l=o.properties.some(u=>u.key.type===4&&u.key.content===c)}l||o.properties.unshift(t),r=o}else r=Ze(n.helper(Fi),[Mt([t]),o]),a&&a.callee===jr&&(a=s[s.length-2]);e.type===13?a?a.arguments[0]=r:e.props=r:a?a.arguments[0]=r:e.arguments[2]=r}function kr(e,t){return`_${t}_${e.replace(/[^\w]/g,(n,r)=>n==="-"?"_":e.charCodeAt(r).toString())}`}function Wt(e,t){if(!e||Object.keys(t).length===0)return!1;switch(e.type){case 1:for(let n=0;n<e.props.length;n++){const r=e.props[n];if(r.type===7&&(Wt(r.arg,t)||Wt(r.exp,t)))return!0}return e.children.some(n=>Wt(n,t));case 11:return Wt(e.source,t)?!0:e.children.some(n=>Wt(n,t));case 9:return e.branches.some(n=>Wt(n,t));case 10:return Wt(e.condition,t)?!0:e.children.some(n=>Wt(n,t));case 4:return!e.isStatic&&Vi(e.content)&&!!t[e.content];case 8:return e.children.some(n=>je(n)&&Wt(n,t));case 5:case 12:return Wt(e.content,t);case 2:case 3:return!1;default:return!1}}function Op(e){return e.type===14&&e.callee===hs?e.arguments[1].returns:e}function vs(e,{helper:t,removeHelper:n,inSSR:r}){e.isBlock||(e.isBlock=!0,n(cr(r,e.isComponent)),t(Vn),t(ur(r,e.isComponent)))}const Py={COMPILER_IS_ON_ELEMENT:{message:'Platform-native elements with "is" prop will no longer be treated as components in Vue 3 unless the "is" value is explicitly prefixed with "vue:".',link:"https://v3.vuejs.org/guide/migration/custom-elements-interop.html"},COMPILER_V_BIND_SYNC:{message:e=>`.sync modifier for v-bind has been removed. Use v-model with argument instead. \`v-bind:${e}.sync\` should be changed to \`v-model:${e}\`.`,link:"https://v3.vuejs.org/guide/migration/v-model.html"},COMPILER_V_BIND_PROP:{message:".prop modifier for v-bind has been removed and no longer necessary. Vue 3 will automatically set a binding as DOM property when appropriate."},COMPILER_V_BIND_OBJECT_ORDER:{message:'v-bind="obj" usage is now order sensitive and behaves like JavaScript object spread: it will now overwrite an existing non-mergeable attribute that appears before v-bind in the case of conflict. To retain 2.x behavior, move v-bind to make it the first attribute. You can also suppress this warning if the usage is intended.',link:"https://v3.vuejs.org/guide/migration/v-bind.html"},COMPILER_V_ON_NATIVE:{message:".native modifier for v-on has been removed as is no longer necessary.",link:"https://v3.vuejs.org/guide/migration/v-on-native-modifier-removed.html"},COMPILER_V_IF_V_FOR_PRECEDENCE:{message:"v-if / v-for precedence when used on the same element has changed in Vue 3: v-if now takes higher precedence and will no longer have access to v-for scope variables. It is best to avoid the ambiguity with <template> tags or use a computed property that filters v-for data source.",link:"https://v3.vuejs.org/guide/migration/v-if-v-for.html"},COMPILER_V_FOR_REF:{message:"Ref usage on v-for no longer creates array ref values in Vue 3. Consider using function refs or refactor to avoid ref usage altogether.",link:"https://v3.vuejs.org/guide/migration/array-refs.html"},COMPILER_NATIVE_TEMPLATE:{message:"<template> with no special directives will render as a native template element instead of its inner content in Vue 3."},COMPILER_INLINE_TEMPLATE:{message:'"inline-template" has been removed in Vue 3.',link:"https://v3.vuejs.org/guide/migration/inline-template-attribute.html"},COMPILER_FILTER:{message:'filters have been removed in Vue 3. The "|" symbol will be treated as native JavaScript bitwise OR operator. Use method calls or computed properties instead.',link:"https://v3.vuejs.org/guide/migration/filters.html"}};function wl(e,t){const n=t.options?t.options.compatConfig:t.compatConfig,r=n&&n[e];return e==="MODE"?r||3:r}function fr(e,t){const n=wl("MODE",t),r=wl(e,t);return n===3?r===!0:r!==!1}function pr(e,t,n,...r){return fr(e,t)}function xy(e,t,n,...r){if(wl(e,t)==="suppress-warning")return;const{message:o,link:s}=Py[e],a=`(deprecation ${e}) ${typeof o=="function"?o(...r):o}${s?`
|
6 |
+
Details: ${s}`:""}`,l=new SyntaxError(a);l.code=e,n&&(l.loc=n),t.onWarn(l)}const Cy=/&(gt|lt|amp|apos|quot);/g,My={gt:">",lt:"<",amp:"&",apos:"'",quot:'"'},wp={delimiters:["{{","}}"],getNamespace:()=>0,getTextMode:()=>0,isVoidTag:ni,isPreTag:ni,isCustomElement:ni,decodeEntities:e=>e.replace(Cy,(t,n)=>My[n]),onError:fl,onWarn:cp,comments:!1};function Tl(e,t={}){const n=Ay(e,t),r=At(n);return gp(Pl(n,0,[]),Ft(n,r))}function Ay(e,t){const n=Me({},wp);let r;for(r in t)n[r]=t[r]===void 0?wp[r]:t[r];return{options:n,column:1,line:1,offset:0,originalSource:e,source:e,inPre:!1,inVPre:!1,onWarn:n.onWarn}}function Pl(e,t,n){const r=ys(n),i=r?r.ns:0,o=[];for(;!Vy(e,t,n);){const a=e.source;let l;if(t===0||t===1){if(!e.inVPre&&ct(a,e.options.delimiters[0]))l=Fy(e,t);else if(t===0&&a[0]==="<")if(a.length===1)Ne(e,5,1);else if(a[1]==="!")ct(a,"<!--")?l=Ry(e):ct(a,"<!DOCTYPE")?l=Ki(e):ct(a,"<![CDATA[")?i!==0?l=Ny(e,n):(Ne(e,1),l=Ki(e)):(Ne(e,11),l=Ki(e));else if(a[1]==="/")if(a.length===2)Ne(e,5,2);else if(a[2]===">"){Ne(e,14,2),nt(e,3);continue}else if(/[a-z]/i.test(a[2])){Ne(e,23),xl(e,1,r);continue}else Ne(e,12,2),l=Ki(e);else/[a-z]/i.test(a[1])?(l=Iy(e,n),fr("COMPILER_NATIVE_TEMPLATE",e)&&l&&l.tag==="template"&&!l.props.some(c=>c.type===7&&Pp(c.name))&&(l=l.children)):a[1]==="?"?(Ne(e,21,1),l=Ki(e)):Ne(e,12,1)}if(l||(l=jy(e,t)),ue(l))for(let c=0;c<l.length;c++)Tp(o,l[c]);else Tp(o,l)}let s=!1;if(t!==2&&t!==1){const a=e.options.whitespace!=="preserve";for(let l=0;l<o.length;l++){const c=o[l];if(!e.inPre&&c.type===2)if(/[^\t\r\n\f ]/.test(c.content))a&&(c.content=c.content.replace(/[\t\r\n\f ]+/g," "));else{const u=o[l-1],f=o[l+1];!u||!f||a&&(u.type===3||f.type===3||u.type===1&&f.type===1&&/[\r\n]/.test(c.content))?(s=!0,o[l]=null):c.content=" "}else c.type===3&&!e.options.comments&&(s=!0,o[l]=null)}if(e.inPre&&r&&e.options.isPreTag(r.tag)){const l=o[0];l&&l.type===2&&(l.content=l.content.replace(/^\r?\n/,""))}}return s?o.filter(Boolean):o}function Tp(e,t){if(t.type===2){const n=ys(e);if(n&&n.type===2&&n.loc.end.offset===t.loc.start.offset){n.content+=t.content,n.loc.end=t.loc.end,n.loc.source+=t.loc.source;return}}e.push(t)}function Ny(e,t){nt(e,9);const n=Pl(e,3,t);return e.source.length===0?Ne(e,6):nt(e,3),n}function Ry(e){const t=At(e);let n;const r=/--(\!)?>/.exec(e.source);if(!r)n=e.source.slice(4),nt(e,e.source.length),Ne(e,7);else{r.index<=3&&Ne(e,0),r[1]&&Ne(e,10),n=e.source.slice(4,r.index);const i=e.source.slice(0,r.index);let o=1,s=0;for(;(s=i.indexOf("<!--",o))!==-1;)nt(e,s-o+1),s+4<i.length&&Ne(e,16),o=s+1;nt(e,r.index+r[0].length-o+1)}return{type:3,content:n,loc:Ft(e,t)}}function Ki(e){const t=At(e),n=e.source[1]==="?"?1:2;let r;const i=e.source.indexOf(">");return i===-1?(r=e.source.slice(n),nt(e,e.source.length)):(r=e.source.slice(n,i),nt(e,i+1)),{type:3,content:r,loc:Ft(e,t)}}function Iy(e,t){const n=e.inPre,r=e.inVPre,i=ys(t),o=xl(e,0,i),s=e.inPre&&!n,a=e.inVPre&&!r;if(o.isSelfClosing||e.options.isVoidTag(o.tag))return s&&(e.inPre=!1),a&&(e.inVPre=!1),o;t.push(o);const l=e.options.getTextMode(o,i),c=Pl(e,l,t);t.pop();{const u=o.props.find(f=>f.type===6&&f.name==="inline-template");if(u&&pr("COMPILER_INLINE_TEMPLATE",e,u.loc)){const f=Ft(e,o.loc.end);u.value={type:2,content:f.source,loc:f}}}if(o.children=c,Cl(e.source,o.tag))xl(e,1,i);else if(Ne(e,24,0,o.loc.start),e.source.length===0&&o.tag.toLowerCase()==="script"){const u=c[0];u&&ct(u.loc.source,"<!--")&&Ne(e,8)}return o.loc=Ft(e,o.loc.start),s&&(e.inPre=!1),a&&(e.inVPre=!1),o}const Pp=it("if,else,else-if,for,slot");function xl(e,t,n){const r=At(e),i=/^<\/?([a-z][^\t\r\n\f />]*)/i.exec(e.source),o=i[1],s=e.options.getNamespace(o,n);nt(e,i[0].length),Yi(e);const a=At(e),l=e.source;e.options.isPreTag(o)&&(e.inPre=!0);let c=xp(e,t);t===0&&!e.inVPre&&c.some(p=>p.type===7&&p.name==="pre")&&(e.inVPre=!0,Me(e,a),e.source=l,c=xp(e,t).filter(p=>p.name!=="v-pre"));let u=!1;if(e.source.length===0?Ne(e,9):(u=ct(e.source,"/>"),t===1&&u&&Ne(e,4),nt(e,u?2:1)),t===1)return;let f=0;return e.inVPre||(o==="slot"?f=2:o==="template"?c.some(p=>p.type===7&&Pp(p.name))&&(f=3):$y(o,c,e)&&(f=1)),{type:1,ns:s,tag:o,tagType:f,props:c,isSelfClosing:u,children:[],loc:Ft(e,r),codegenNode:void 0}}function $y(e,t,n){const r=n.options;if(r.isCustomElement(e))return!1;if(e==="component"||/^[A-Z]/.test(e)||bl(e)||r.isBuiltInComponent&&r.isBuiltInComponent(e)||r.isNativeTag&&!r.isNativeTag(e))return!0;for(let i=0;i<t.length;i++){const o=t[i];if(o.type===6){if(o.name==="is"&&o.value){if(o.value.content.startsWith("vue:"))return!0;if(pr("COMPILER_IS_ON_ELEMENT",n,o.loc))return!0}}else{if(o.name==="is")return!0;if(o.name==="bind"&&Hi(o.arg,"is")&&!0&&pr("COMPILER_IS_ON_ELEMENT",n,o.loc))return!0}}}function xp(e,t){const n=[],r=new Set;for(;e.source.length>0&&!ct(e.source,">")&&!ct(e.source,"/>");){if(ct(e.source,"/")){Ne(e,22),nt(e,1),Yi(e);continue}t===1&&Ne(e,3);const i=Ly(e,r);i.type===6&&i.value&&i.name==="class"&&(i.value.content=i.value.content.replace(/\s+/g," ").trim()),t===0&&n.push(i),/^[^\t\r\n\f />]/.test(e.source)&&Ne(e,15),Yi(e)}return n}function Ly(e,t){const n=At(e),i=/^[^\t\r\n\f />][^\t\r\n\f />=]*/.exec(e.source)[0];t.has(i)&&Ne(e,2),t.add(i),i[0]==="="&&Ne(e,19);{const a=/["'<]/g;let l;for(;l=a.exec(i);)Ne(e,17,l.index)}nt(e,i.length);let o;/^[\t\r\n\f ]*=/.test(e.source)&&(Yi(e),nt(e,1),Yi(e),o=Dy(e),o||Ne(e,13));const s=Ft(e,n);if(!e.inVPre&&/^(v-[A-Za-z0-9-]|:|\.|@|#)/.test(i)){const a=/(?:^v-([a-z0-9-]+))?(?:(?::|^\.|^@|^#)(\[[^\]]+\]|[^\.]+))?(.+)?$/i.exec(i);let l=ct(i,"."),c=a[1]||(l||ct(i,":")?"bind":ct(i,"@")?"on":"slot"),u;if(a[2]){const p=c==="slot",d=i.lastIndexOf(a[2]),m=Ft(e,Cp(e,n,d),Cp(e,n,d+a[2].length+(p&&a[3]||"").length));let b=a[2],v=!0;b.startsWith("[")?(v=!1,b.endsWith("]")?b=b.substr(1,b.length-2):(Ne(e,27),b=b.substr(1))):p&&(b+=a[3]||""),u={type:4,content:b,isStatic:v,constType:v?3:0,loc:m}}if(o&&o.isQuoted){const p=o.loc;p.start.offset++,p.start.column++,p.end=zi(p.start,o.content),p.source=p.source.slice(1,-1)}const f=a[3]?a[3].substr(1).split("."):[];return l&&f.push("prop"),c==="bind"&&u&&f.includes("sync")&&pr("COMPILER_V_BIND_SYNC",e,s,u.loc.source)&&(c="model",f.splice(f.indexOf("sync"),1)),{type:7,name:c,exp:o&&{type:4,content:o.content,isStatic:!1,constType:0,loc:o.loc},arg:u,modifiers:f,loc:s}}return!e.inVPre&&ct(i,"v-")&&Ne(e,26),{type:6,name:i,value:o&&{type:2,content:o.content,loc:o.loc},loc:s}}function Dy(e){const t=At(e);let n;const r=e.source[0],i=r==='"'||r==="'";if(i){nt(e,1);const o=e.source.indexOf(r);o===-1?n=Wi(e,e.source.length,4):(n=Wi(e,o,4),nt(e,1))}else{const o=/^[^\t\r\n\f >]+/.exec(e.source);if(!o)return;const s=/["'<=`]/g;let a;for(;a=s.exec(o[0]);)Ne(e,18,a.index);n=Wi(e,o[0].length,4)}return{content:n,isQuoted:i,loc:Ft(e,t)}}function Fy(e,t){const[n,r]=e.options.delimiters,i=e.source.indexOf(r,n.length);if(i===-1){Ne(e,25);return}const o=At(e);nt(e,n.length);const s=At(e),a=At(e),l=i-n.length,c=e.source.slice(0,l),u=Wi(e,l,t),f=u.trim(),p=u.indexOf(f);p>0&&Bi(s,c,p);const d=l-(u.length-f.length-p);return Bi(a,c,d),nt(e,r.length),{type:5,content:{type:4,isStatic:!1,constType:0,content:f,loc:Ft(e,s,a)},loc:Ft(e,o)}}function jy(e,t){const n=t===3?["]]>"]:["<",e.options.delimiters[0]];let r=e.source.length;for(let s=0;s<n.length;s++){const a=e.source.indexOf(n[s],1);a!==-1&&r>a&&(r=a)}const i=At(e),o=Wi(e,r,t);return{type:2,content:o,loc:Ft(e,i)}}function Wi(e,t,n){const r=e.source.slice(0,t);return nt(e,t),n===2||n===3||r.indexOf("&")===-1?r:e.options.decodeEntities(r,n===4)}function At(e){const{column:t,line:n,offset:r}=e;return{column:t,line:n,offset:r}}function Ft(e,t,n){return n=n||At(e),{start:t,end:n,source:e.originalSource.slice(t.offset,n.offset)}}function ys(e){return e[e.length-1]}function ct(e,t){return e.startsWith(t)}function nt(e,t){const{source:n}=e;Bi(e,n,t),e.source=n.slice(t)}function Yi(e){const t=/^[\t\r\n\f ]+/.exec(e.source);t&&nt(e,t[0].length)}function Cp(e,t,n){return zi(t,e.originalSource.slice(t.offset,n),n)}function Ne(e,t,n,r=At(e)){n&&(r.offset+=n,r.column+=n),e.options.onError(Be(t,{start:r,end:r,source:""}))}function Vy(e,t,n){const r=e.source;switch(t){case 0:if(ct(r,"</")){for(let i=n.length-1;i>=0;--i)if(Cl(r,n[i].tag))return!0}break;case 1:case 2:{const i=ys(n);if(i&&Cl(r,i.tag))return!0;break}case 3:if(ct(r,"]]>"))return!0;break}return!r}function Cl(e,t){return ct(e,"</")&&e.substr(2,t.length).toLowerCase()===t.toLowerCase()&&/[\t\r\n\f />]/.test(e[2+t.length]||">")}function zy(e,t){bs(e,t,Mp(e,e.children[0]))}function Mp(e,t){const{children:n}=e;return n.length===1&&t.type===1&&!ki(t)}function bs(e,t,n=!1){let r=!0;const{children:i}=e,o=i.length;let s=0;for(let a=0;a<i.length;a++){const l=i[a];if(l.type===1&&l.tagType===0){const c=n?0:jt(l,t);if(c>0){if(c<3&&(r=!1),c>=2){l.codegenNode.patchFlag=-1+"",l.codegenNode=t.hoist(l.codegenNode),s++;continue}}else{const u=l.codegenNode;if(u.type===13){const f=Ip(u);if((!f||f===512||f===1)&&Np(l,t)>=2){const p=Rp(l);p&&(u.props=t.hoist(p))}u.dynamicProps&&(u.dynamicProps=t.hoist(u.dynamicProps))}}}else if(l.type===12){const c=jt(l.content,t);c>0&&(c<3&&(r=!1),c>=2&&(l.codegenNode=t.hoist(l.codegenNode),s++))}if(l.type===1){const c=l.tagType===1;c&&t.scopes.vSlot++,bs(l,t),c&&t.scopes.vSlot--}else if(l.type===11)bs(l,t,l.children.length===1);else if(l.type===9)for(let c=0;c<l.branches.length;c++)bs(l.branches[c],t,l.branches[c].children.length===1)}r&&s&&t.transformHoist&&t.transformHoist(i,t,e),s&&s===o&&e.type===1&&e.tagType===0&&e.codegenNode&&e.codegenNode.type===13&&ue(e.codegenNode.children)&&(e.codegenNode.children=t.hoist(zr(e.codegenNode.children)))}function jt(e,t){const{constantCache:n}=t;switch(e.type){case 1:if(e.tagType!==0)return 0;const r=n.get(e);if(r!==void 0)return r;const i=e.codegenNode;if(i.type!==13)return 0;if(Ip(i))return n.set(e,0),0;{let a=3;const l=Np(e,t);if(l===0)return n.set(e,0),0;l<a&&(a=l);for(let c=0;c<e.children.length;c++){const u=jt(e.children[c],t);if(u===0)return n.set(e,0),0;u<a&&(a=u)}if(a>1)for(let c=0;c<e.props.length;c++){const u=e.props[c];if(u.type===7&&u.name==="bind"&&u.exp){const f=jt(u.exp,t);if(f===0)return n.set(e,0),0;f<a&&(a=f)}}return i.isBlock&&(t.removeHelper(Vn),t.removeHelper(ur(t.inSSR,i.isComponent)),i.isBlock=!1,t.helper(cr(t.inSSR,i.isComponent))),n.set(e,a),a}case 2:case 3:return 3;case 9:case 11:case 10:return 0;case 5:case 12:return jt(e.content,t);case 4:return e.constType;case 8:let s=3;for(let a=0;a<e.children.length;a++){const l=e.children[a];if(be(l)||Wn(l))continue;const c=jt(l,t);if(c===0)return 0;c<s&&(s=c)}return s;default:return 0}}const By=new Set([ls,cs,Fr,jr]);function Ap(e,t){if(e.type===14&&!be(e.callee)&&By.has(e.callee)){const n=e.arguments[0];if(n.type===4)return jt(n,t);if(n.type===14)return Ap(n,t)}return 0}function Np(e,t){let n=3;const r=Rp(e);if(r&&r.type===15){const{properties:i}=r;for(let o=0;o<i.length;o++){const{key:s,value:a}=i[o],l=jt(s,t);if(l===0)return l;l<n&&(n=l);let c;if(a.type===4?c=jt(a,t):a.type===14?c=Ap(a,t):c=0,c===0)return c;c<n&&(n=c)}}return n}function Rp(e){const t=e.codegenNode;if(t.type===13)return t.props}function Ip(e){const t=e.patchFlag;return t?parseInt(t,10):void 0}function $p(e,{filename:t="",prefixIdentifiers:n=!1,hoistStatic:r=!1,cacheHandlers:i=!1,nodeTransforms:o=[],directiveTransforms:s={},transformHoist:a=null,isBuiltInComponent:l=pt,isCustomElement:c=pt,expressionPlugins:u=[],scopeId:f=null,slotted:p=!0,ssr:d=!1,inSSR:m=!1,ssrCssVars:b="",bindingMetadata:v=Ce,inline:S=!1,isTS:g=!1,onError:O=fl,onWarn:E=cp,compatConfig:$}){const R=t.replace(/\?.*$/,"").match(/([^/\\]+)\.\w+$/),T={selfName:R&&En(st(R[1])),prefixIdentifiers:n,hoistStatic:r,cacheHandlers:i,nodeTransforms:o,directiveTransforms:s,transformHoist:a,isBuiltInComponent:l,isCustomElement:c,expressionPlugins:u,scopeId:f,slotted:p,ssr:d,inSSR:m,ssrCssVars:b,bindingMetadata:v,inline:S,isTS:g,onError:O,onWarn:E,compatConfig:$,root:e,helpers:new Map,components:new Set,directives:new Set,hoists:[],imports:[],constantCache:new Map,temps:0,cached:0,identifiers:Object.create(null),scopes:{vFor:0,vSlot:0,vPre:0,vOnce:0},parent:null,currentNode:e,childIndex:0,inVOnce:!1,helper(P){const N=T.helpers.get(P)||0;return T.helpers.set(P,N+1),P},removeHelper(P){const N=T.helpers.get(P);if(N){const j=N-1;j?T.helpers.set(P,j):T.helpers.delete(P)}},helperString(P){return`_${mn[T.helper(P)]}`},replaceNode(P){T.parent.children[T.childIndex]=T.currentNode=P},removeNode(P){const N=T.parent.children,j=P?N.indexOf(P):T.currentNode?T.childIndex:-1;!P||P===T.currentNode?(T.currentNode=null,T.onNodeRemoved()):T.childIndex>j&&(T.childIndex--,T.onNodeRemoved()),T.parent.children.splice(j,1)},onNodeRemoved:()=>{},addIdentifiers(P){},removeIdentifiers(P){},hoist(P){be(P)&&(P=Ee(P)),T.hoists.push(P);const N=Ee(`_hoisted_${T.hoists.length}`,!1,P.loc,2);return N.hoisted=P,N},cache(P,N=!1){return vp(T.cached++,P,N)}};return T.filters=new Set,T}function Lp(e,t){const n=$p(e,t);Xi(e,n),t.hoistStatic&&zy(e,n),t.ssr||Hy(e,n),e.helpers=[...n.helpers.keys()],e.components=[...n.components],e.directives=[...n.directives],e.imports=n.imports,e.hoists=n.hoists,e.temps=n.temps,e.cached=n.cached,e.filters=[...n.filters]}function Hy(e,t){const{helper:n}=t,{children:r}=e;if(r.length===1){const i=r[0];if(Mp(e,i)&&i.codegenNode){const o=i.codegenNode;o.type===13&&vs(o,t),e.codegenNode=o}else e.codegenNode=i}else if(r.length>1){let i=64;_s[64],e.codegenNode=Vr(t,n($r),void 0,e.children,i+"",void 0,void 0,!0,void 0,!1)}}function ky(e,t){let n=0;const r=()=>{n--};for(;n<e.children.length;n++){const i=e.children[n];be(i)||(t.parent=e,t.childIndex=n,t.onNodeRemoved=r,Xi(i,t))}}function Xi(e,t){t.currentNode=e;const{nodeTransforms:n}=t,r=[];for(let o=0;o<n.length;o++){const s=n[o](e,t);if(s&&(ue(s)?r.push(...s):r.push(s)),t.currentNode)e=t.currentNode;else return}switch(e.type){case 3:t.ssr||t.helper(Dr);break;case 5:t.ssr||t.helper(Di);break;case 9:for(let o=0;o<e.branches.length;o++)Xi(e.branches[o],t);break;case 10:case 11:case 1:case 0:ky(e,t);break}t.currentNode=e;let i=r.length;for(;i--;)r[i]()}function Ml(e,t){const n=be(e)?r=>r===e:r=>e.test(r);return(r,i)=>{if(r.type===1){const{props:o}=r;if(r.tagType===3&&o.some(Ol))return;const s=[];for(let a=0;a<o.length;a++){const l=o[a];if(l.type===7&&n(l.name)){o.splice(a,1),a--;const c=t(r,l,i);c&&s.push(c)}}return s}}}const Ss="/*#__PURE__*/";function Uy(e,{mode:t="function",prefixIdentifiers:n=t==="module",sourceMap:r=!1,filename:i="template.vue.html",scopeId:o=null,optimizeImports:s=!1,runtimeGlobalName:a="Vue",runtimeModuleName:l="vue",ssrRuntimeModuleName:c="vue/server-renderer",ssr:u=!1,isTS:f=!1,inSSR:p=!1}){const d={mode:t,prefixIdentifiers:n,sourceMap:r,filename:i,scopeId:o,optimizeImports:s,runtimeGlobalName:a,runtimeModuleName:l,ssrRuntimeModuleName:c,ssr:u,isTS:f,inSSR:p,source:e.loc.source,code:"",column:1,line:1,offset:0,indentLevel:0,pure:!1,map:void 0,helper(b){return`_${mn[b]}`},push(b,v){d.code+=b},indent(){m(++d.indentLevel)},deindent(b=!1){b?--d.indentLevel:m(--d.indentLevel)},newline(){m(d.indentLevel)}};function m(b){d.push(`
|
7 |
+
`+" ".repeat(b))}return d}function Dp(e,t={}){const n=Uy(e,t);t.onContextCreated&&t.onContextCreated(n);const{mode:r,push:i,prefixIdentifiers:o,indent:s,deindent:a,newline:l,scopeId:c,ssr:u}=n,f=e.helpers.length>0,p=!o&&r!=="module";Ky(e,n);const m=u?"ssrRender":"render",v=(u?["_ctx","_push","_parent","_attrs"]:["_ctx","_cache"]).join(", ");if(i(`function ${m}(${v}) {`),s(),p&&(i("with (_ctx) {"),s(),f&&(i(`const { ${e.helpers.map(S=>`${mn[S]}: _${mn[S]}`).join(", ")} } = _Vue`),i(`
|
8 |
+
`),l())),e.components.length&&(Al(e.components,"component",n),(e.directives.length||e.temps>0)&&l()),e.directives.length&&(Al(e.directives,"directive",n),e.temps>0&&l()),e.filters&&e.filters.length&&(l(),Al(e.filters,"filter",n),l()),e.temps>0){i("let ");for(let S=0;S<e.temps;S++)i(`${S>0?", ":""}_temp${S}`)}return(e.components.length||e.directives.length||e.temps)&&(i(`
|
9 |
+
`),l()),u||i("return "),e.codegenNode?ut(e.codegenNode,n):i("null"),p&&(a(),i("}")),a(),i("}"),{ast:e,code:n.code,preamble:"",map:n.map?n.map.toJSON():void 0}}function Ky(e,t){const{ssr:n,prefixIdentifiers:r,push:i,newline:o,runtimeModuleName:s,runtimeGlobalName:a,ssrRuntimeModuleName:l}=t,c=a,u=f=>`${mn[f]}: _${mn[f]}`;if(e.helpers.length>0&&(i(`const _Vue = ${c}
|
10 |
+
`),e.hoists.length)){const f=[es,ts,Dr,ns,ml].filter(p=>e.helpers.includes(p)).map(u).join(", ");i(`const { ${f} } = _Vue
|
11 |
+
`)}Wy(e.hoists,t),o(),i("return ")}function Al(e,t,{helper:n,push:r,newline:i,isTS:o}){const s=n(t==="filter"?os:t==="component"?rs:is);for(let a=0;a<e.length;a++){let l=e[a];const c=l.endsWith("__self");c&&(l=l.slice(0,-6)),r(`const ${kr(l,t)} = ${s}(${JSON.stringify(l)}${c?", true":""})${o?"!":""}`),a<e.length-1&&i()}}function Wy(e,t){if(!e.length)return;t.pure=!0;const{push:n,newline:r,helper:i,scopeId:o,mode:s}=t;r();for(let a=0;a<e.length;a++){const l=e[a];l&&(n(`const _hoisted_${a+1} = `),ut(l,t),r())}t.pure=!1}function Nl(e,t){const n=e.length>3||!1;t.push("["),n&&t.indent(),Gi(e,t,n),n&&t.deindent(),t.push("]")}function Gi(e,t,n=!1,r=!0){const{push:i,newline:o}=t;for(let s=0;s<e.length;s++){const a=e[s];be(a)?i(a):ue(a)?Nl(a,t):ut(a,t),s<e.length-1&&(n?(r&&i(","),o()):r&&i(", "))}}function ut(e,t){if(be(e)){t.push(e);return}if(Wn(e)){t.push(t.helper(e));return}switch(e.type){case 1:case 9:case 11:ut(e.codegenNode,t);break;case 2:Yy(e,t);break;case 4:Fp(e,t);break;case 5:Xy(e,t);break;case 12:ut(e.codegenNode,t);break;case 8:jp(e,t);break;case 3:Zy(e,t);break;case 13:Jy(e,t);break;case 14:qy(e,t);break;case 15:_y(e,t);break;case 17:eb(e,t);break;case 18:tb(e,t);break;case 19:nb(e,t);break;case 20:rb(e,t);break;case 21:Gi(e.body,t,!0,!1);break}}function Yy(e,t){t.push(JSON.stringify(e.content),e)}function Fp(e,t){const{content:n,isStatic:r}=e;t.push(r?JSON.stringify(n):n,e)}function Xy(e,t){const{push:n,helper:r,pure:i}=t;i&&n(Ss),n(`${r(Di)}(`),ut(e.content,t),n(")")}function jp(e,t){for(let n=0;n<e.children.length;n++){const r=e.children[n];be(r)?t.push(r):ut(r,t)}}function Gy(e,t){const{push:n}=t;if(e.type===8)n("["),jp(e,t),n("]");else if(e.isStatic){const r=Vi(e.content)?e.content:JSON.stringify(e.content);n(r,e)}else n(`[${e.content}]`,e)}function Zy(e,t){const{push:n,helper:r,pure:i}=t;i&&n(Ss),n(`${r(Dr)}(${JSON.stringify(e.content)})`,e)}function Jy(e,t){const{push:n,helper:r,pure:i}=t,{tag:o,props:s,children:a,patchFlag:l,dynamicProps:c,directives:u,isBlock:f,disableTracking:p,isComponent:d}=e;u&&n(r(ss)+"("),f&&n(`(${r(Vn)}(${p?"true":""}), `),i&&n(Ss);const m=f?ur(t.inSSR,d):cr(t.inSSR,d);n(r(m)+"(",e),Gi(Qy([o,s,a,l,c]),t),n(")"),f&&n(")"),u&&(n(", "),ut(u,t),n(")"))}function Qy(e){let t=e.length;for(;t--&&e[t]==null;);return e.slice(0,t+1).map(n=>n||"null")}function qy(e,t){const{push:n,helper:r,pure:i}=t,o=be(e.callee)?e.callee:r(e.callee);i&&n(Ss),n(o+"(",e),Gi(e.arguments,t),n(")")}function _y(e,t){const{push:n,indent:r,deindent:i,newline:o}=t,{properties:s}=e;if(!s.length){n("{}",e);return}const a=s.length>1||!1;n(a?"{":"{ "),a&&r();for(let l=0;l<s.length;l++){const{key:c,value:u}=s[l];Gy(c,t),n(": "),ut(u,t),l<s.length-1&&(n(","),o())}a&&i(),n(a?"}":" }")}function eb(e,t){Nl(e.elements,t)}function tb(e,t){const{push:n,indent:r,deindent:i}=t,{params:o,returns:s,body:a,newline:l,isSlot:c}=e;c&&n(`_${mn[ds]}(`),n("(",e),ue(o)?Gi(o,t):o&&ut(o,t),n(") => "),(l||a)&&(n("{"),r()),s?(l&&n("return "),ue(s)?Nl(s,t):ut(s,t)):a&&ut(a,t),(l||a)&&(i(),n("}")),c&&(e.isNonScopedSlot&&n(", undefined, true"),n(")"))}function nb(e,t){const{test:n,consequent:r,alternate:i,newline:o}=e,{push:s,indent:a,deindent:l,newline:c}=t;if(n.type===4){const f=!Vi(n.content);f&&s("("),Fp(n,t),f&&s(")")}else s("("),ut(n,t),s(")");o&&a(),t.indentLevel++,o||s(" "),s("? "),ut(r,t),t.indentLevel--,o&&c(),o||s(" "),s(": ");const u=i.type===19;u||t.indentLevel++,ut(i,t),u||t.indentLevel--,o&&l(!0)}function rb(e,t){const{push:n,helper:r,indent:i,deindent:o,newline:s}=t;n(`_cache[${e.index}] || (`),e.isVNode&&(i(),n(`${r(ji)}(-1),`),s()),n(`_cache[${e.index}] = `),ut(e.value,t),e.isVNode&&(n(","),s(),n(`${r(ji)}(1),`),s(),n(`_cache[${e.index}]`),o()),n(")")}function ib(e,t,n=!1,r=[],i=Object.create(null)){}function ob(e,t,n){return!1}function sb(e,t){if(e&&(e.type==="ObjectProperty"||e.type==="ArrayPattern")){let n=t.length;for(;n--;){const r=t[n];if(r.type==="AssignmentExpression")return!0;if(r.type!=="ObjectProperty"&&!r.type.endsWith("Pattern"))break}}return!1}function ab(e,t){for(const n of e.params)for(const r of zn(n))t(r)}function lb(e,t){for(const n of e.body)if(n.type==="VariableDeclaration"){if(n.declare)continue;for(const r of n.declarations)for(const i of zn(r.id))t(i)}else if(n.type==="FunctionDeclaration"||n.type==="ClassDeclaration"){if(n.declare||!n.id)continue;t(n.id)}}function zn(e,t=[]){switch(e.type){case"Identifier":t.push(e);break;case"MemberExpression":let n=e;for(;n.type==="MemberExpression";)n=n.object;t.push(n);break;case"ObjectPattern":for(const r of e.properties)r.type==="RestElement"?zn(r.argument,t):zn(r.value,t);break;case"ArrayPattern":e.elements.forEach(r=>{r&&zn(r,t)});break;case"RestElement":zn(e.argument,t);break;case"AssignmentPattern":zn(e.left,t);break}return t}const cb=e=>/Function(?:Expression|Declaration)$|Method$/.test(e.type),Vp=e=>e&&(e.type==="ObjectProperty"||e.type==="ObjectMethod")&&!e.computed,ub=(e,t)=>Vp(t)&&t.key===e;new RegExp("\\b"+"do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,super,throw,while,yield,delete,export,import,return,switch,default,extends,finally,continue,debugger,function,arguments,typeof,void".split(",").join("\\b|\\b")+"\\b");const fb=(e,t)=>{if(e.type===5)e.content=Es(e.content,t);else if(e.type===1)for(let n=0;n<e.props.length;n++){const r=e.props[n];if(r.type===7&&r.name!=="for"){const i=r.exp,o=r.arg;i&&i.type===4&&!(r.name==="on"&&o)&&(r.exp=Es(i,t,r.name==="slot")),o&&o.type===4&&!o.isStatic&&(r.arg=Es(o,t))}}};function Es(e,t,n=!1,r=!1,i=Object.create(t.identifiers)){return e}const pb=Ml(/^(if|else|else-if)$/,(e,t,n)=>zp(e,t,n,(r,i,o)=>{const s=n.parent.children;let a=s.indexOf(r),l=0;for(;a-->=0;){const c=s[a];c&&c.type===9&&(l+=c.branches.length)}return()=>{if(o)r.codegenNode=Hp(i,l,n);else{const c=db(r.codegenNode);c.alternate=Hp(i,l+r.branches.length-1,n)}}}));function zp(e,t,n,r){if(t.name!=="else"&&(!t.exp||!t.exp.content.trim())){const i=t.exp?t.exp.loc:e.loc;n.onError(Be(28,t.loc)),t.exp=Ee("true",!1,i)}if(t.name==="if"){const i=Bp(e,t),o={type:9,loc:e.loc,branches:[i]};if(n.replaceNode(o),r)return r(o,i,!0)}else{const i=n.parent.children;let o=i.indexOf(e);for(;o-->=-1;){const s=i[o];if(s&&s.type===2&&!s.content.trim().length){n.removeNode(s);continue}if(s&&s.type===9){t.name==="else-if"&&s.branches[s.branches.length-1].condition===void 0&&n.onError(Be(30,e.loc)),n.removeNode();const a=Bp(e,t);s.branches.push(a);const l=r&&r(s,a,!1);Xi(a,n),l&&l(),n.currentNode=null}else n.onError(Be(30,e.loc));break}}}function Bp(e,t){return{type:10,loc:e.loc,condition:t.name==="else"?void 0:t.exp,children:e.tagType===3&&!Et(e,"for")?e.children:[e],userKey:Br(e,"key")}}function Hp(e,t,n){return e.condition?ms(e.condition,kp(e,t,n),Ze(n.helper(Dr),['""',"true"])):kp(e,t,n)}function kp(e,t,n){const{helper:r}=n,i=Ge("key",Ee(`${t}`,!1,tt,2)),{children:o}=e,s=o[0];if(o.length!==1||s.type!==1)if(o.length===1&&s.type===11){const l=s.codegenNode;return Ui(l,i,n),l}else{let l=64;return _s[64],Vr(n,r($r),Mt([i]),o,l+"",void 0,void 0,!0,!1,!1,e.loc)}else{const l=s.codegenNode,c=Op(l);return c.type===13&&vs(c,n),Ui(c,i,n),l}}function db(e){for(;;)if(e.type===19)if(e.alternate.type===19)e=e.alternate;else return e;else e.type===20&&(e=e.value)}const hb=Ml("for",(e,t,n)=>{const{helper:r,removeHelper:i}=n;return Up(e,t,n,o=>{const s=Ze(r(as),[o.source]),a=Et(e,"memo"),l=Br(e,"key"),c=l&&(l.type===6?Ee(l.value.content,!0):l.exp),u=l?Ge("key",c):null,f=o.source.type===4&&o.source.constType>0,p=f?64:l?128:256;return o.codegenNode=Vr(n,r($r),void 0,s,p+"",void 0,void 0,!0,!f,!1,e.loc),()=>{let d;const m=Hr(e),{children:b}=o,v=b.length!==1||b[0].type!==1,S=ki(e)?e:m&&e.children.length===1&&ki(e.children[0])?e.children[0]:null;if(S?(d=S.codegenNode,m&&u&&Ui(d,u,n)):v?d=Vr(n,r($r),u?Mt([u]):void 0,e.children,64+"",void 0,void 0,!0,void 0,!1):(d=b[0].codegenNode,m&&u&&Ui(d,u,n),d.isBlock!==!f&&(d.isBlock?(i(Vn),i(ur(n.inSSR,d.isComponent))):i(cr(n.inSSR,d.isComponent))),d.isBlock=!f,d.isBlock?(r(Vn),r(ur(n.inSSR,d.isComponent))):r(cr(n.inSSR,d.isComponent))),a){const g=ar(ws(o.parseResult,[Ee("_cached")]));g.body=yp([Kt(["const _memo = (",a.exp,")"]),Kt(["if (_cached",...c?[" && _cached.key === ",c]:[],` && ${n.helperString(yl)}(_cached, _memo)) return _cached`]),Kt(["const _item = ",d]),Ee("_item.memo = _memo"),Ee("return _item")]),s.arguments.push(g,Ee("_cache"),Ee(String(n.cached++)))}else s.arguments.push(ar(ws(o.parseResult),d,!0))}})});function Up(e,t,n,r){if(!t.exp){n.onError(Be(31,t.loc));return}const i=Rl(t.exp);if(!i){n.onError(Be(32,t.loc));return}const{addIdentifiers:o,removeIdentifiers:s,scopes:a}=n,{source:l,value:c,key:u,index:f}=i,p={type:11,loc:t.loc,source:l,valueAlias:c,keyAlias:u,objectIndexAlias:f,parseResult:i,children:Hr(e)?e.children:[e]};n.replaceNode(p),a.vFor++;const d=r&&r(p);return()=>{a.vFor--,d&&d()}}const mb=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,Kp=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,gb=/^\(|\)$/g;function Rl(e,t){const n=e.loc,r=e.content,i=r.match(mb);if(!i)return;const[,o,s]=i,a={source:Os(n,s.trim(),r.indexOf(s,o.length)),value:void 0,key:void 0,index:void 0};let l=o.trim().replace(gb,"").trim();const c=o.indexOf(l),u=l.match(Kp);if(u){l=l.replace(Kp,"").trim();const f=u[1].trim();let p;if(f&&(p=r.indexOf(f,c+l.length),a.key=Os(n,f,p)),u[2]){const d=u[2].trim();d&&(a.index=Os(n,d,r.indexOf(d,a.key?p+f.length:c+l.length)))}}return l&&(a.value=Os(n,l,c)),a}function Os(e,t,n){return Ee(t,!1,El(e,n,t.length))}function ws({value:e,key:t,index:n},r=[]){return vb([e,t,n,...r])}function vb(e){let t=e.length;for(;t--&&!e[t];);return e.slice(0,t+1).map((n,r)=>n||Ee("_".repeat(r+1),!1))}const Wp=Ee("undefined",!1),Yp=(e,t)=>{if(e.type===1&&(e.tagType===1||e.tagType===3)){const n=Et(e,"slot");if(n)return n.exp,t.scopes.vSlot++,()=>{t.scopes.vSlot--}}},yb=(e,t)=>{let n;if(Hr(e)&&e.props.some(Ol)&&(n=Et(e,"for"))){const r=n.parseResult=Rl(n.exp);if(r){const{value:i,key:o,index:s}=r,{addIdentifiers:a,removeIdentifiers:l}=t;return i&&a(i),o&&a(o),s&&a(s),()=>{i&&l(i),o&&l(o),s&&l(s)}}}},bb=(e,t,n)=>ar(e,t,!1,!0,t.length?t[0].loc:n);function Xp(e,t,n=bb){t.helper(ds);const{children:r,loc:i}=e,o=[],s=[];let a=t.scopes.vSlot>0||t.scopes.vFor>0;const l=Et(e,"slot",!0);if(l){const{arg:b,exp:v}=l;b&&!mt(b)&&(a=!0),o.push(Ge(b||Ee("default",!0),n(v,r,i)))}let c=!1,u=!1;const f=[],p=new Set;for(let b=0;b<r.length;b++){const v=r[b];let S;if(!Hr(v)||!(S=Et(v,"slot",!0))){v.type!==3&&f.push(v);continue}if(l){t.onError(Be(37,S.loc));break}c=!0;const{children:g,loc:O}=v,{arg:E=Ee("default",!0),exp:$,loc:R}=S;let T;mt(E)?T=E?E.content:"default":a=!0;const P=n($,g,O);let N,j,V;if(N=Et(v,"if"))a=!0,s.push(ms(N.exp,Ts(E,P),Wp));else if(j=Et(v,/^else(-if)?$/,!0)){let F=b,C;for(;F--&&(C=r[F],C.type===3););if(C&&Hr(C)&&Et(C,"if")){r.splice(b,1),b--;let w=s[s.length-1];for(;w.alternate.type===19;)w=w.alternate;w.alternate=j.exp?ms(j.exp,Ts(E,P),Wp):Ts(E,P)}else t.onError(Be(30,j.loc))}else if(V=Et(v,"for")){a=!0;const F=V.parseResult||Rl(V.exp);F?s.push(Ze(t.helper(as),[F.source,ar(ws(F),Ts(E,P),!0)])):t.onError(Be(32,V.loc))}else{if(T){if(p.has(T)){t.onError(Be(38,R));continue}p.add(T),T==="default"&&(u=!0)}o.push(Ge(E,P))}}if(!l){const b=(v,S)=>{const g=n(v,S,i);return t.compatConfig&&(g.isNonScopedSlot=!0),Ge("default",g)};c?f.length&&f.some(v=>Gp(v))&&(u?t.onError(Be(39,f[0].loc)):o.push(b(void 0,f))):o.push(b(void 0,r))}const d=a?2:Ps(e.children)?3:1;let m=Mt(o.concat(Ge("_",Ee(d+"",!1))),i);return s.length&&(m=Ze(t.helper(vl),[m,zr(s)])),{slots:m,hasDynamicSlots:a}}function Ts(e,t){return Mt([Ge("name",e),Ge("fn",t)])}function Ps(e){for(let t=0;t<e.length;t++){const n=e[t];switch(n.type){case 1:if(n.tagType===2||Ps(n.children))return!0;break;case 9:if(Ps(n.branches))return!0;break;case 10:case 11:if(Ps(n.children))return!0;break}}return!1}function Gp(e){return e.type!==2&&e.type!==12?!0:e.type===2?!!e.content.trim():Gp(e.content)}const Zp=new WeakMap,Jp=(e,t)=>function(){if(e=t.currentNode,!(e.type===1&&(e.tagType===0||e.tagType===1)))return;const{tag:r,props:i}=e,o=e.tagType===1;let s=o?Qp(e,t):`"${r}"`;const a=je(s)&&s.callee===Li;let l,c,u,f=0,p,d,m,b=a||s===Lr||s===_o||!o&&(r==="svg"||r==="foreignObject"||Br(e,"key",!0));if(i.length>0){const v=Il(e,t);l=v.props,f=v.patchFlag,d=v.dynamicPropNames;const S=v.directives;m=S&&S.length?zr(S.map(g=>Eb(g,t))):void 0}if(e.children.length>0)if(s===$i&&(b=!0,f|=1024),o&&s!==Lr&&s!==$i){const{slots:S,hasDynamicSlots:g}=Xp(e,t);c=S,g&&(f|=1024)}else if(e.children.length===1&&s!==Lr){const S=e.children[0],g=S.type,O=g===5||g===8;O&&jt(S,t)===0&&(f|=1),O||g===2?c=S:c=e.children}else c=e.children;f!==0&&(u=String(f),d&&d.length&&(p=Ob(d))),e.codegenNode=Vr(t,s,l,c,u,p,m,!!b,!1,o,e.loc)};function Qp(e,t,n=!1){let{tag:r}=e;const i=Ll(r),o=Br(e,"is");if(o)if(i||fr("COMPILER_IS_ON_ELEMENT",t)){const l=o.type===6?o.value&&Ee(o.value.content,!0):o.exp;if(l)return Ze(t.helper(Li),[l])}else o.type===6&&o.value.content.startsWith("vue:")&&(r=o.value.content.slice(4));const s=!i&&Et(e,"is");if(s&&s.exp)return Ze(t.helper(Li),[s.exp]);const a=bl(r)||t.isBuiltInComponent(r);return a?(n||t.helper(a),a):(t.helper(rs),t.components.add(r),kr(r,"component"))}function Il(e,t,n=e.props,r=!1){const{tag:i,loc:o}=e,s=e.tagType===1;let a=[];const l=[],c=[];let u=0,f=!1,p=!1,d=!1,m=!1,b=!1,v=!1;const S=[],g=({key:E,value:$})=>{if(mt(E)){const R=E.content,T=yn(R);if(!s&&T&&R.toLowerCase()!=="onclick"&&R!=="onUpdate:modelValue"&&!Sn(R)&&(m=!0),T&&Sn(R)&&(v=!0),$.type===20||($.type===4||$.type===8)&&jt($,t)>0)return;R==="ref"?f=!0:R==="class"?p=!0:R==="style"?d=!0:R!=="key"&&!S.includes(R)&&S.push(R),s&&(R==="class"||R==="style")&&!S.includes(R)&&S.push(R)}else b=!0};for(let E=0;E<n.length;E++){const $=n[E];if($.type===6){const{loc:R,name:T,value:P}=$;let N=Ee(P?P.content:"",!0,P?P.loc:R);if(T==="ref"&&(f=!0),T==="is"&&(Ll(i)||P&&P.content.startsWith("vue:")||fr("COMPILER_IS_ON_ELEMENT",t)))continue;a.push(Ge(Ee(T,!0,El(R,0,T.length)),N))}else{const{name:R,arg:T,exp:P,loc:N}=$,j=R==="bind",V=R==="on";if(R==="slot"){s||t.onError(Be(40,N));continue}if(R==="once"||R==="memo"||R==="is"||j&&Hi(T,"is")&&(Ll(i)||fr("COMPILER_IS_ON_ELEMENT",t))||V&&r)continue;if(!T&&(j||V)){if(b=!0,P)if(a.length&&(l.push(Mt($l(a),o)),a=[]),j){if(fr("COMPILER_V_BIND_OBJECT_ORDER",t)){l.unshift(P);continue}l.push(P)}else l.push({type:14,loc:N,callee:t.helper(us),arguments:[P]});else t.onError(Be(j?34:35,N));continue}const F=t.directiveTransforms[R];if(F){const{props:C,needRuntime:w}=F($,e,t);!r&&C.forEach(g),a.push(...C),w&&(c.push($),Wn(w)&&Zp.set($,w))}else c.push($)}$.type===6&&$.name==="ref"&&t.scopes.vFor>0&&pr("COMPILER_V_FOR_REF",t,$.loc)&&a.push(Ge(Ee("refInFor",!0),Ee("true",!1)))}let O;if(l.length?(a.length&&l.push(Mt($l(a),o)),l.length>1?O=Ze(t.helper(Fi),l,o):O=l[0]):a.length&&(O=Mt($l(a),o)),b?u|=16:(p&&!s&&(u|=2),d&&!s&&(u|=4),S.length&&(u|=8),m&&(u|=32)),(u===0||u===32)&&(f||v||c.length>0)&&(u|=512),!t.inSSR&&O)switch(O.type){case 15:let E=-1,$=-1,R=!1;for(let N=0;N<O.properties.length;N++){const j=O.properties[N].key;mt(j)?j.content==="class"?E=N:j.content==="style"&&($=N):j.isHandlerKey||(R=!0)}const T=O.properties[E],P=O.properties[$];R?O=Ze(t.helper(Fr),[O]):(T&&!mt(T.value)&&(T.value=Ze(t.helper(ls),[T.value])),P&&!mt(P.value)&&(d||P.value.type===17)&&(P.value=Ze(t.helper(cs),[P.value])));break;case 14:break;default:O=Ze(t.helper(Fr),[Ze(t.helper(jr),[O])]);break}return{props:O,directives:c,patchFlag:u,dynamicPropNames:S}}function $l(e){const t=new Map,n=[];for(let r=0;r<e.length;r++){const i=e[r];if(i.key.type===8||!i.key.isStatic){n.push(i);continue}const o=i.key.content,s=t.get(o);s?(o==="style"||o==="class"||yn(o))&&Sb(s,i):(t.set(o,i),n.push(i))}return n}function Sb(e,t){e.value.type===17?e.value.elements.push(t.value):e.value=zr([e.value,t.value],e.loc)}function Eb(e,t){const n=[],r=Zp.get(e);r?n.push(t.helperString(r)):(t.helper(is),t.directives.add(e.name),n.push(kr(e.name,"directive")));const{loc:i}=e;if(e.exp&&n.push(e.exp),e.arg&&(e.exp||n.push("void 0"),n.push(e.arg)),Object.keys(e.modifiers).length){e.arg||(e.exp||n.push("void 0"),n.push("void 0"));const o=Ee("true",!1,i);n.push(Mt(e.modifiers.map(s=>Ge(s,o)),i))}return zr(n,e.loc)}function Ob(e){let t="[";for(let n=0,r=e.length;n<r;n++)t+=JSON.stringify(e[n]),n<r-1&&(t+=", ");return t+"]"}function Ll(e){return e[0].toLowerCase()+e.slice(1)==="component"}const wb=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Tb=/-(\w)/g,qp=wb(e=>e.replace(Tb,(t,n)=>n?n.toUpperCase():"")),Pb=(e,t)=>{if(ki(e)){const{children:n,loc:r}=e,{slotName:i,slotProps:o}=_p(e,t),s=[t.prefixIdentifiers?"_ctx.$slots":"$slots",i,"{}","undefined","true"];let a=2;o&&(s[2]=o,a=3),n.length&&(s[3]=ar([],n,!1,!1,r),a=4),t.scopeId&&!t.slotted&&(a=5),s.splice(a),e.codegenNode=Ze(t.helper(gl),s,r)}};function _p(e,t){let n='"default"',r;const i=[];for(let o=0;o<e.props.length;o++){const s=e.props[o];s.type===6?s.value&&(s.name==="name"?n=JSON.stringify(s.value.content):(s.name=qp(s.name),i.push(s))):s.name==="bind"&&Hi(s.arg,"name")?s.exp&&(n=s.exp):(s.name==="bind"&&s.arg&&mt(s.arg)&&(s.arg.content=qp(s.arg.content)),i.push(s))}if(i.length>0){const{props:o,directives:s}=Il(e,t,i);r=o,s.length&&t.onError(Be(36,s[0].loc))}return{slotName:n,slotProps:r}}const xb=/^\s*([\w$_]+|(async\s*)?\([^)]*?\))\s*=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/,Dl=(e,t,n,r)=>{const{loc:i,modifiers:o,arg:s}=e;!e.exp&&!o.length&&n.onError(Be(35,i));let a;if(s.type===4)if(s.isStatic){const f=s.content;a=Ee(Yn(st(f)),!0,s.loc)}else a=Kt([`${n.helperString(ps)}(`,s,")"]);else a=s,a.children.unshift(`${n.helperString(ps)}(`),a.children.push(")");let l=e.exp;l&&!l.content.trim()&&(l=void 0);let c=n.cacheHandlers&&!l&&!n.inVOnce;if(l){const f=Sl(l.content),p=!(f||xb.test(l.content)),d=l.content.includes(";");(p||c&&f)&&(l=Kt([`${p?"$event":"(...args)"} => ${d?"{":"("}`,l,d?"}":")"]))}let u={props:[Ge(a,l||Ee("() => {}",!1,i))]};return r&&(u=r(u)),c&&(u.props[0].value=n.cache(u.props[0].value)),u.props.forEach(f=>f.key.isHandlerKey=!0),u},ed=(e,t,n)=>{const{exp:r,modifiers:i,loc:o}=e,s=e.arg;return s.type!==4?(s.children.unshift("("),s.children.push(') || ""')):s.isStatic||(s.content=`${s.content} || ""`),i.includes("camel")&&(s.type===4?s.isStatic?s.content=st(s.content):s.content=`${n.helperString(fs)}(${s.content})`:(s.children.unshift(`${n.helperString(fs)}(`),s.children.push(")"))),n.inSSR||(i.includes("prop")&&td(s,"."),i.includes("attr")&&td(s,"^")),!r||r.type===4&&!r.content.trim()?(n.onError(Be(34,o)),{props:[Ge(s,Ee("",!0,o))]}):{props:[Ge(s,r)]}},td=(e,t)=>{e.type===4?e.isStatic?e.content=t+e.content:e.content=`\`${t}\${${e.content}}\``:(e.children.unshift(`'${t}' + (`),e.children.push(")"))},Cb=(e,t)=>{if(e.type===0||e.type===1||e.type===11||e.type===10)return()=>{const n=e.children;let r,i=!1;for(let o=0;o<n.length;o++){const s=n[o];if(gs(s)){i=!0;for(let a=o+1;a<n.length;a++){const l=n[a];if(gs(l))r||(r=n[o]={type:8,loc:s.loc,children:[s]}),r.children.push(" + ",l),n.splice(a,1),a--;else{r=void 0;break}}}}if(!(!i||n.length===1&&(e.type===0||e.type===1&&e.tagType===0&&!e.props.find(o=>o.type===7&&!t.directiveTransforms[o.name])&&e.tag!=="template")))for(let o=0;o<n.length;o++){const s=n[o];if(gs(s)||s.type===8){const a=[];(s.type!==2||s.content!==" ")&&a.push(s),!t.ssr&&jt(s,t)===0&&a.push(1+""),n[o]={type:12,content:s,loc:s.loc,codegenNode:Ze(t.helper(ns),a)}}}}},nd=new WeakSet,Mb=(e,t)=>{if(e.type===1&&Et(e,"once",!0))return nd.has(e)||t.inVOnce?void 0:(nd.add(e),t.inVOnce=!0,t.helper(ji),()=>{t.inVOnce=!1;const n=t.currentNode;n.codegenNode&&(n.codegenNode=t.cache(n.codegenNode,!0))})},Fl=(e,t,n)=>{const{exp:r,arg:i}=e;if(!r)return n.onError(Be(41,e.loc)),jl();const o=r.loc.source,s=r.type===4?r.content:o;n.bindingMetadata[o];const a=!1;if(!s.trim()||!Sl(s)&&!a)return n.onError(Be(42,r.loc)),jl();const l=i||Ee("modelValue",!0),c=i?mt(i)?`onUpdate:${i.content}`:Kt(['"onUpdate:" + ',i]):"onUpdate:modelValue";let u;const f=n.isTS?"($event: any)":"$event";u=Kt([`${f} => ((`,r,") = $event)"]);const p=[Ge(l,e.exp),Ge(c,u)];if(e.modifiers.length&&t.tagType===1){const d=e.modifiers.map(b=>(Vi(b)?b:JSON.stringify(b))+": true").join(", "),m=i?mt(i)?`${i.content}Modifiers`:Kt([i,' + "Modifiers"']):"modelModifiers";p.push(Ge(m,Ee(`{ ${d} }`,!1,e.loc,2)))}return jl(p)};function jl(e=[]){return{props:e}}const Ab=/[\w).+\-_$\]]/,Nb=(e,t)=>{!fr("COMPILER_FILTER",t)||(e.type===5&&xs(e.content,t),e.type===1&&e.props.forEach(n=>{n.type===7&&n.name!=="for"&&n.exp&&xs(n.exp,t)}))};function xs(e,t){if(e.type===4)rd(e,t);else for(let n=0;n<e.children.length;n++){const r=e.children[n];typeof r=="object"&&(r.type===4?rd(r,t):r.type===8?xs(e,t):r.type===5&&xs(r.content,t))}}function rd(e,t){const n=e.content;let r=!1,i=!1,o=!1,s=!1,a=0,l=0,c=0,u=0,f,p,d,m,b=[];for(d=0;d<n.length;d++)if(p=f,f=n.charCodeAt(d),r)f===39&&p!==92&&(r=!1);else if(i)f===34&&p!==92&&(i=!1);else if(o)f===96&&p!==92&&(o=!1);else if(s)f===47&&p!==92&&(s=!1);else if(f===124&&n.charCodeAt(d+1)!==124&&n.charCodeAt(d-1)!==124&&!a&&!l&&!c)m===void 0?(u=d+1,m=n.slice(0,d).trim()):v();else{switch(f){case 34:i=!0;break;case 39:r=!0;break;case 96:o=!0;break;case 40:c++;break;case 41:c--;break;case 91:l++;break;case 93:l--;break;case 123:a++;break;case 125:a--;break}if(f===47){let S=d-1,g;for(;S>=0&&(g=n.charAt(S),g===" ");S--);(!g||!Ab.test(g))&&(s=!0)}}m===void 0?m=n.slice(0,d).trim():u!==0&&v();function v(){b.push(n.slice(u,d).trim()),u=d+1}if(b.length){for(d=0;d<b.length;d++)m=Rb(m,b[d],t);e.content=m}}function Rb(e,t,n){n.helper(os);const r=t.indexOf("(");if(r<0)return n.filters.add(t),`${kr(t,"filter")}(${e})`;{const i=t.slice(0,r),o=t.slice(r+1);return n.filters.add(i),`${kr(i,"filter")}(${e}${o!==")"?","+o:o}`}}const id=new WeakSet,Ib=(e,t)=>{if(e.type===1){const n=Et(e,"memo");return!n||id.has(e)?void 0:(id.add(e),()=>{const r=e.codegenNode||t.currentNode.codegenNode;r&&r.type===13&&(e.tagType!==1&&vs(r,t),e.codegenNode=Ze(t.helper(hs),[n.exp,ar(void 0,r),"_cache",String(t.cached++)]))})}};function od(e){return[[Mb,pb,Ib,hb,Nb,Pb,Jp,Yp,Cb],{on:Dl,bind:ed,model:Fl}]}function sd(e,t={}){const n=t.onError||fl,r=t.mode==="module";t.prefixIdentifiers===!0?n(Be(46)):r&&n(Be(47));const i=!1;t.cacheHandlers&&n(Be(48)),t.scopeId&&!r&&n(Be(49));const o=be(e)?Tl(e,t):e,[s,a]=od();return Lp(o,Me({},t,{prefixIdentifiers:i,nodeTransforms:[...s,...t.nodeTransforms||[]],directiveTransforms:Me({},a,t.directiveTransforms||{})})),Dp(o,Me({},t,{prefixIdentifiers:i}))}const ad=()=>({props:[]}),Vl=Symbol(""),zl=Symbol(""),Bl=Symbol(""),Hl=Symbol(""),Cs=Symbol(""),kl=Symbol(""),Ul=Symbol(""),Kl=Symbol(""),Wl=Symbol(""),Yl=Symbol("");mp({[Vl]:"vModelRadio",[zl]:"vModelCheckbox",[Bl]:"vModelText",[Hl]:"vModelSelect",[Cs]:"vModelDynamic",[kl]:"withModifiers",[Ul]:"withKeys",[Kl]:"vShow",[Wl]:"Transition",[Yl]:"TransitionGroup"});let Ur;function $b(e,t=!1){return Ur||(Ur=document.createElement("div")),t?(Ur.innerHTML=`<div foo="${e.replace(/"/g,""")}">`,Ur.children[0].getAttribute("foo")):(Ur.innerHTML=e,Ur.textContent)}const Lb=it("style,iframe,script,noscript",!0),Xl={isVoidTag:Hc,isNativeTag:e=>zc(e)||Bc(e),isPreTag:e=>e==="pre",decodeEntities:$b,isBuiltInComponent:e=>{if(lr(e,"Transition"))return Wl;if(lr(e,"TransitionGroup"))return Yl},getNamespace(e,t){let n=t?t.ns:0;if(t&&n===2)if(t.tag==="annotation-xml"){if(e==="svg")return 1;t.props.some(r=>r.type===6&&r.name==="encoding"&&r.value!=null&&(r.value.content==="text/html"||r.value.content==="application/xhtml+xml"))&&(n=0)}else/^m(?:[ions]|text)$/.test(t.tag)&&e!=="mglyph"&&e!=="malignmark"&&(n=0);else t&&n===1&&(t.tag==="foreignObject"||t.tag==="desc"||t.tag==="title")&&(n=0);if(n===0){if(e==="svg")return 1;if(e==="math")return 2}return n},getTextMode({tag:e,ns:t}){if(t===0){if(e==="textarea"||e==="title")return 1;if(Lb(e))return 2}return 0}},ld=e=>{e.type===1&&e.props.forEach((t,n)=>{t.type===6&&t.name==="style"&&t.value&&(e.props[n]={type:7,name:"bind",arg:Ee("style",!0,t.loc),exp:Db(t.value.content,t.loc),modifiers:[],loc:t.loc})})},Db=(e,t)=>{const n=na(e);return Ee(JSON.stringify(n),!1,t,3)};function rn(e,t){return Be(e,t)}const Fb=(e,t,n)=>{const{exp:r,loc:i}=e;return r||n.onError(rn(50,i)),t.children.length&&(n.onError(rn(51,i)),t.children.length=0),{props:[Ge(Ee("innerHTML",!0,i),r||Ee("",!0))]}},jb=(e,t,n)=>{const{exp:r,loc:i}=e;return r||n.onError(rn(52,i)),t.children.length&&(n.onError(rn(53,i)),t.children.length=0),{props:[Ge(Ee("textContent",!0),r?Ze(n.helperString(Di),[r],i):Ee("",!0))]}},Vb=(e,t,n)=>{const r=Fl(e,t,n);if(!r.props.length||t.tagType===1)return r;e.arg&&n.onError(rn(55,e.arg.loc));const{tag:i}=t,o=n.isCustomElement(i);if(i==="input"||i==="textarea"||i==="select"||o){let s=Bl,a=!1;if(i==="input"||o){const l=Br(t,"type");if(l){if(l.type===7)s=Cs;else if(l.value)switch(l.value.content){case"radio":s=Vl;break;case"checkbox":s=zl;break;case"file":a=!0,n.onError(rn(56,e.loc));break}}else Sp(t)&&(s=Cs)}else i==="select"&&(s=Hl);a||(r.needRuntime=n.helper(s))}else n.onError(rn(54,e.loc));return r.props=r.props.filter(s=>!(s.key.type===4&&s.key.content==="modelValue")),r},zb=it("passive,once,capture"),Bb=it("stop,prevent,self,ctrl,shift,alt,meta,exact,middle"),Hb=it("left,right"),cd=it("onkeyup,onkeydown,onkeypress",!0),kb=(e,t,n,r)=>{const i=[],o=[],s=[];for(let a=0;a<t.length;a++){const l=t[a];l==="native"&&pr("COMPILER_V_ON_NATIVE",n)||zb(l)?s.push(l):Hb(l)?mt(e)?cd(e.content)?i.push(l):o.push(l):(i.push(l),o.push(l)):Bb(l)?o.push(l):i.push(l)}return{keyModifiers:i,nonKeyModifiers:o,eventOptionModifiers:s}},ud=(e,t)=>mt(e)&&e.content.toLowerCase()==="onclick"?Ee(t,!0):e.type!==4?Kt(["(",e,`) === "onClick" ? "${t}" : (`,e,")"]):e,Ub=(e,t,n)=>Dl(e,t,n,r=>{const{modifiers:i}=e;if(!i.length)return r;let{key:o,value:s}=r.props[0];const{keyModifiers:a,nonKeyModifiers:l,eventOptionModifiers:c}=kb(o,i,n,e.loc);if(l.includes("right")&&(o=ud(o,"onContextmenu")),l.includes("middle")&&(o=ud(o,"onMouseup")),l.length&&(s=Ze(n.helper(kl),[s,JSON.stringify(l)])),a.length&&(!mt(o)||cd(o.content))&&(s=Ze(n.helper(Ul),[s,JSON.stringify(a)])),c.length){const u=c.map(En).join("");o=mt(o)?Ee(`${o.content}${u}`,!0):Kt(["(",o,`) + "${u}"`])}return{props:[Ge(o,s)]}}),Kb=(e,t,n)=>{const{exp:r,loc:i}=e;return r||n.onError(rn(58,i)),{props:[],needRuntime:n.helper(Kl)}},Wb=(e,t)=>{e.type===1&&e.tagType===0&&(e.tag==="script"||e.tag==="style")&&(t.onError(rn(60,e.loc)),t.removeNode())},fd=[ld],pd={cloak:ad,html:Fb,text:jb,model:Vb,on:Ub,show:Kb};function Yb(e,t={}){return sd(e,Me({},Xl,t,{nodeTransforms:[Wb,...fd,...t.nodeTransforms||[]],directiveTransforms:Me({},pd,t.directiveTransforms||{}),transformHoist:null}))}function Xb(e,t={}){return Tl(e,Me({},Xl,t))}var Gb=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",DOMDirectiveTransforms:pd,DOMNodeTransforms:fd,TRANSITION:Wl,TRANSITION_GROUP:Yl,V_MODEL_CHECKBOX:zl,V_MODEL_DYNAMIC:Cs,V_MODEL_RADIO:Vl,V_MODEL_SELECT:Hl,V_MODEL_TEXT:Bl,V_ON_WITH_KEYS:Ul,V_ON_WITH_MODIFIERS:kl,V_SHOW:Kl,compile:Yb,createDOMCompilerError:rn,parse:Xb,parserOptions:Xl,transformStyle:ld,generateCodeFrame:Lc,BASE_TRANSITION:pl,CAMELIZE:fs,CAPITALIZE:up,CREATE_BLOCK:dl,CREATE_COMMENT:Dr,CREATE_ELEMENT_BLOCK:hl,CREATE_ELEMENT_VNODE:ts,CREATE_SLOTS:vl,CREATE_STATIC:ml,CREATE_TEXT:ns,CREATE_VNODE:es,FRAGMENT:$r,GUARD_REACTIVE_PROPS:jr,IS_MEMO_SAME:yl,IS_REF:hp,KEEP_ALIVE:$i,MERGE_PROPS:Fi,NORMALIZE_CLASS:ls,NORMALIZE_PROPS:Fr,NORMALIZE_STYLE:cs,OPEN_BLOCK:Vn,POP_SCOPE_ID:pp,PUSH_SCOPE_ID:fp,RENDER_LIST:as,RENDER_SLOT:gl,RESOLVE_COMPONENT:rs,RESOLVE_DIRECTIVE:is,RESOLVE_DYNAMIC_COMPONENT:Li,RESOLVE_FILTER:os,SET_BLOCK_TRACKING:ji,SUSPENSE:_o,TELEPORT:Lr,TO_DISPLAY_STRING:Di,TO_HANDLERS:us,TO_HANDLER_KEY:ps,UNREF:dp,WITH_CTX:ds,WITH_DIRECTIVES:ss,WITH_MEMO:hs,advancePositionWithClone:zi,advancePositionWithMutation:Bi,assert:wy,baseCompile:sd,baseParse:Tl,buildProps:Il,buildSlots:Xp,checkCompatEnabled:pr,createArrayExpression:zr,createAssignmentExpression:my,createBlockStatement:yp,createCacheExpression:vp,createCallExpression:Ze,createCompilerError:Be,createCompoundExpression:Kt,createConditionalExpression:ms,createForLoopParams:ws,createFunctionExpression:ar,createIfStatement:hy,createInterpolation:py,createObjectExpression:Mt,createObjectProperty:Ge,createReturnStatement:vy,createRoot:gp,createSequenceExpression:gy,createSimpleExpression:Ee,createStructuralDirectiveTransform:Ml,createTemplateLiteral:dy,createTransformContext:$p,createVNodeCall:Vr,extractIdentifiers:zn,findDir:Et,findProp:Br,generate:Dp,getBaseTransformPreset:od,getInnerRange:El,getMemoedVNodeCall:Op,getVNodeBlockHelper:ur,getVNodeHelper:cr,hasDynamicKeyVBind:Sp,hasScopeRef:Wt,helperNameMap:mn,injectProp:Ui,isBindKey:Hi,isBuiltInType:lr,isCoreComponent:bl,isFunctionType:cb,isInDestructureAssignment:sb,isMemberExpression:Sl,isMemberExpressionBrowser:bp,isMemberExpressionNode:Oy,isReferencedIdentifier:ob,isSimpleIdentifier:Vi,isSlotOutlet:ki,isStaticExp:mt,isStaticProperty:Vp,isStaticPropertyKey:ub,isTemplateNode:Hr,isText:gs,isVSlot:Ol,locStub:tt,makeBlock:vs,noopDirectiveTransform:ad,processExpression:Es,processFor:Up,processIf:zp,processSlotOutlet:_p,registerRuntimeHelpers:mp,resolveComponentType:Qp,toValidAssetId:kr,trackSlotScopes:Yp,trackVForSlotScopes:yb,transform:Lp,transformBind:ed,transformElement:Jp,transformExpression:fb,transformModel:Fl,transformOn:Dl,traverseNode:Xi,walkBlockDeclarations:lb,walkFunctionParams:ab,walkIdentifiers:ib,warnDeprecation:xy}),Zb=ul(Gb),Jb=ul(uy),Qb=ul(cm);(function(e){Object.defineProperty(e,"__esModule",{value:!0});var t=Zb,n=Jb,r=Qb;function i(l){if(l&&l.__esModule)return l;var c=Object.create(null);return l&&Object.keys(l).forEach(function(u){c[u]=l[u]}),c.default=l,Object.freeze(c)}var o=i(n);const s=Object.create(null);function a(l,c){if(!r.isString(l))if(l.nodeType)l=l.innerHTML;else return r.NOOP;const u=l,f=s[u];if(f)return f;if(l[0]==="#"){const m=document.querySelector(l);l=m?m.innerHTML:""}const{code:p}=t.compile(l,r.extend({hoistStatic:!0,onError:void 0,onWarn:r.NOOP},c)),d=new Function("Vue",p)(o);return d._rc=!0,s[u]=d}n.registerRuntimeCompiler(a),Object.keys(n).forEach(function(l){l!=="default"&&(e[l]=n[l])}),e.compile=a})(lp);ap.exports=lp;(function(e){e.exports=function(t){var n={};function r(i){if(n[i])return n[i].exports;var o=n[i]={i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=t,r.c=n,r.d=function(i,o,s){r.o(i,o)||Object.defineProperty(i,o,{enumerable:!0,get:s})},r.r=function(i){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})},r.t=function(i,o){if(o&1&&(i=r(i)),o&8||o&4&&typeof i=="object"&&i&&i.__esModule)return i;var s=Object.create(null);if(r.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:i}),o&2&&typeof i!="string")for(var a in i)r.d(s,a,function(l){return i[l]}.bind(null,a));return s},r.n=function(i){var o=i&&i.__esModule?function(){return i.default}:function(){return i};return r.d(o,"a",o),o},r.o=function(i,o){return Object.prototype.hasOwnProperty.call(i,o)},r.p="",r(r.s="fae3")}({"00ee":function(t,n,r){var i=r("b622"),o=i("toStringTag"),s={};s[o]="z",t.exports=String(s)==="[object z]"},"0366":function(t,n,r){var i=r("1c0b");t.exports=function(o,s,a){if(i(o),s===void 0)return o;switch(a){case 0:return function(){return o.call(s)};case 1:return function(l){return o.call(s,l)};case 2:return function(l,c){return o.call(s,l,c)};case 3:return function(l,c,u){return o.call(s,l,c,u)}}return function(){return o.apply(s,arguments)}}},"057f":function(t,n,r){var i=r("fc6a"),o=r("241c").f,s={}.toString,a=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],l=function(c){try{return o(c)}catch(u){return a.slice()}};t.exports.f=function(u){return a&&s.call(u)=="[object Window]"?l(u):o(i(u))}},"06cf":function(t,n,r){var i=r("83ab"),o=r("d1e7"),s=r("5c6c"),a=r("fc6a"),l=r("c04e"),c=r("5135"),u=r("0cfb"),f=Object.getOwnPropertyDescriptor;n.f=i?f:function(d,m){if(d=a(d),m=l(m,!0),u)try{return f(d,m)}catch(b){}if(c(d,m))return s(!o.f.call(d,m),d[m])}},"0cfb":function(t,n,r){var i=r("83ab"),o=r("d039"),s=r("cc12");t.exports=!i&&!o(function(){return Object.defineProperty(s("div"),"a",{get:function(){return 7}}).a!=7})},"159b":function(t,n,r){var i=r("da84"),o=r("fdbc"),s=r("17c2"),a=r("9112");for(var l in o){var c=i[l],u=c&&c.prototype;if(u&&u.forEach!==s)try{a(u,"forEach",s)}catch(f){u.forEach=s}}},"17c2":function(t,n,r){var i=r("b727").forEach,o=r("a640"),s=o("forEach");t.exports=s?[].forEach:function(l){return i(this,l,arguments.length>1?arguments[1]:void 0)}},"1be4":function(t,n,r){var i=r("d066");t.exports=i("document","documentElement")},"1c0b":function(t,n){t.exports=function(r){if(typeof r!="function")throw TypeError(String(r)+" is not a function");return r}},"1c7e":function(t,n,r){var i=r("b622"),o=i("iterator"),s=!1;try{var a=0,l={next:function(){return{done:!!a++}},return:function(){s=!0}};l[o]=function(){return this},Array.from(l,function(){throw 2})}catch(c){}t.exports=function(c,u){if(!u&&!s)return!1;var f=!1;try{var p={};p[o]=function(){return{next:function(){return{done:f=!0}}}},c(p)}catch(d){}return f}},"1d80":function(t,n){t.exports=function(r){if(r==null)throw TypeError("Can't call method on "+r);return r}},"1dde":function(t,n,r){var i=r("d039"),o=r("b622"),s=r("2d00"),a=o("species");t.exports=function(l){return s>=51||!i(function(){var c=[],u=c.constructor={};return u[a]=function(){return{foo:1}},c[l](Boolean).foo!==1})}},"23cb":function(t,n,r){var i=r("a691"),o=Math.max,s=Math.min;t.exports=function(a,l){var c=i(a);return c<0?o(c+l,0):s(c,l)}},"23e7":function(t,n,r){var i=r("da84"),o=r("06cf").f,s=r("9112"),a=r("6eeb"),l=r("ce4e"),c=r("e893"),u=r("94ca");t.exports=function(f,p){var d=f.target,m=f.global,b=f.stat,v,S,g,O,E,$;if(m?S=i:b?S=i[d]||l(d,{}):S=(i[d]||{}).prototype,S)for(g in p){if(E=p[g],f.noTargetGet?($=o(S,g),O=$&&$.value):O=S[g],v=u(m?g:d+(b?".":"#")+g,f.forced),!v&&O!==void 0){if(typeof E==typeof O)continue;c(E,O)}(f.sham||O&&O.sham)&&s(E,"sham",!0),a(S,g,E,f)}}},"241c":function(t,n,r){var i=r("ca84"),o=r("7839"),s=o.concat("length","prototype");n.f=Object.getOwnPropertyNames||function(l){return i(l,s)}},"2532":function(t,n,r){var i=r("23e7"),o=r("5a34"),s=r("1d80"),a=r("ab13");i({target:"String",proto:!0,forced:!a("includes")},{includes:function(c){return!!~String(s(this)).indexOf(o(c),arguments.length>1?arguments[1]:void 0)}})},"2a62":function(t,n,r){var i=r("825a");t.exports=function(o){var s=o.return;if(s!==void 0)return i(s.call(o)).value}},"2d00":function(t,n,r){var i=r("da84"),o=r("342f"),s=i.process,a=s&&s.versions,l=a&&a.v8,c,u;l?(c=l.split("."),u=c[0]<4?1:c[0]+c[1]):o&&(c=o.match(/Edge\/(\d+)/),(!c||c[1]>=74)&&(c=o.match(/Chrome\/(\d+)/),c&&(u=c[1]))),t.exports=u&&+u},"342f":function(t,n,r){var i=r("d066");t.exports=i("navigator","userAgent")||""},"35a1":function(t,n,r){var i=r("f5df"),o=r("3f8c"),s=r("b622"),a=s("iterator");t.exports=function(l){if(l!=null)return l[a]||l["@@iterator"]||o[i(l)]}},"37e8":function(t,n,r){var i=r("83ab"),o=r("9bf2"),s=r("825a"),a=r("df75");t.exports=i?Object.defineProperties:function(c,u){s(c);for(var f=a(u),p=f.length,d=0,m;p>d;)o.f(c,m=f[d++],u[m]);return c}},"3bbe":function(t,n,r){var i=r("861d");t.exports=function(o){if(!i(o)&&o!==null)throw TypeError("Can't set "+String(o)+" as a prototype");return o}},"3ca3":function(t,n,r){var i=r("6547").charAt,o=r("69f3"),s=r("7dd0"),a="String Iterator",l=o.set,c=o.getterFor(a);s(String,"String",function(u){l(this,{type:a,string:String(u),index:0})},function(){var f=c(this),p=f.string,d=f.index,m;return d>=p.length?{value:void 0,done:!0}:(m=i(p,d),f.index+=m.length,{value:m,done:!1})})},"3f8c":function(t,n){t.exports={}},"428f":function(t,n,r){var i=r("da84");t.exports=i},"44ad":function(t,n,r){var i=r("d039"),o=r("c6b6"),s="".split;t.exports=i(function(){return!Object("z").propertyIsEnumerable(0)})?function(a){return o(a)=="String"?s.call(a,""):Object(a)}:Object},"44d2":function(t,n,r){var i=r("b622"),o=r("7c73"),s=r("9bf2"),a=i("unscopables"),l=Array.prototype;l[a]==null&&s.f(l,a,{configurable:!0,value:o(null)}),t.exports=function(c){l[a][c]=!0}},"44e7":function(t,n,r){var i=r("861d"),o=r("c6b6"),s=r("b622"),a=s("match");t.exports=function(l){var c;return i(l)&&((c=l[a])!==void 0?!!c:o(l)=="RegExp")}},"4930":function(t,n,r){var i=r("2d00"),o=r("d039");t.exports=!!Object.getOwnPropertySymbols&&!o(function(){var s=Symbol();return!String(s)||!(Object(s)instanceof Symbol)||!Symbol.sham&&i&&i<41})},"4d64":function(t,n,r){var i=r("fc6a"),o=r("50c4"),s=r("23cb"),a=function(l){return function(c,u,f){var p=i(c),d=o(p.length),m=s(f,d),b;if(l&&u!=u){for(;d>m;)if(b=p[m++],b!=b)return!0}else for(;d>m;m++)if((l||m in p)&&p[m]===u)return l||m||0;return!l&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},"4de4":function(t,n,r){var i=r("23e7"),o=r("b727").filter,s=r("1dde"),a=s("filter");i({target:"Array",proto:!0,forced:!a},{filter:function(c){return o(this,c,arguments.length>1?arguments[1]:void 0)}})},"4df4":function(t,n,r){var i=r("0366"),o=r("7b0b"),s=r("9bdd"),a=r("e95a"),l=r("50c4"),c=r("8418"),u=r("35a1");t.exports=function(p){var d=o(p),m=typeof this=="function"?this:Array,b=arguments.length,v=b>1?arguments[1]:void 0,S=v!==void 0,g=u(d),O=0,E,$,R,T,P,N;if(S&&(v=i(v,b>2?arguments[2]:void 0,2)),g!=null&&!(m==Array&&a(g)))for(T=g.call(d),P=T.next,$=new m;!(R=P.call(T)).done;O++)N=S?s(T,v,[R.value,O],!0):R.value,c($,O,N);else for(E=l(d.length),$=new m(E);E>O;O++)N=S?v(d[O],O):d[O],c($,O,N);return $.length=O,$}},"4fad":function(t,n,r){var i=r("23e7"),o=r("6f53").entries;i({target:"Object",stat:!0},{entries:function(a){return o(a)}})},"50c4":function(t,n,r){var i=r("a691"),o=Math.min;t.exports=function(s){return s>0?o(i(s),9007199254740991):0}},"5135":function(t,n,r){var i=r("7b0b"),o={}.hasOwnProperty;t.exports=Object.hasOwn||function(a,l){return o.call(i(a),l)}},"5692":function(t,n,r){var i=r("c430"),o=r("c6cd");(t.exports=function(s,a){return o[s]||(o[s]=a!==void 0?a:{})})("versions",[]).push({version:"3.15.2",mode:i?"pure":"global",copyright:"\xA9 2021 Denis Pushkarev (zloirock.ru)"})},"56ef":function(t,n,r){var i=r("d066"),o=r("241c"),s=r("7418"),a=r("825a");t.exports=i("Reflect","ownKeys")||function(c){var u=o.f(a(c)),f=s.f;return f?u.concat(f(c)):u}},"5899":function(t,n){t.exports=`
|
12 |
+
\v\f\r \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF`},"58a8":function(t,n,r){var i=r("1d80"),o=r("5899"),s="["+o+"]",a=RegExp("^"+s+s+"*"),l=RegExp(s+s+"*$"),c=function(u){return function(f){var p=String(i(f));return u&1&&(p=p.replace(a,"")),u&2&&(p=p.replace(l,"")),p}};t.exports={start:c(1),end:c(2),trim:c(3)}},"5a34":function(t,n,r){var i=r("44e7");t.exports=function(o){if(i(o))throw TypeError("The method doesn't accept regular expressions");return o}},"5c6c":function(t,n){t.exports=function(r,i){return{enumerable:!(r&1),configurable:!(r&2),writable:!(r&4),value:i}}},"6547":function(t,n,r){var i=r("a691"),o=r("1d80"),s=function(a){return function(l,c){var u=String(o(l)),f=i(c),p=u.length,d,m;return f<0||f>=p?a?"":void 0:(d=u.charCodeAt(f),d<55296||d>56319||f+1===p||(m=u.charCodeAt(f+1))<56320||m>57343?a?u.charAt(f):d:a?u.slice(f,f+2):(d-55296<<10)+(m-56320)+65536)}};t.exports={codeAt:s(!1),charAt:s(!0)}},"65f0":function(t,n,r){var i=r("861d"),o=r("e8b5"),s=r("b622"),a=s("species");t.exports=function(l,c){var u;return o(l)&&(u=l.constructor,typeof u=="function"&&(u===Array||o(u.prototype))?u=void 0:i(u)&&(u=u[a],u===null&&(u=void 0))),new(u===void 0?Array:u)(c===0?0:c)}},"69f3":function(t,n,r){var i=r("7f9a"),o=r("da84"),s=r("861d"),a=r("9112"),l=r("5135"),c=r("c6cd"),u=r("f772"),f=r("d012"),p="Object already initialized",d=o.WeakMap,m,b,v,S=function(P){return v(P)?b(P):m(P,{})},g=function(P){return function(N){var j;if(!s(N)||(j=b(N)).type!==P)throw TypeError("Incompatible receiver, "+P+" required");return j}};if(i||c.state){var O=c.state||(c.state=new d),E=O.get,$=O.has,R=O.set;m=function(P,N){if($.call(O,P))throw new TypeError(p);return N.facade=P,R.call(O,P,N),N},b=function(P){return E.call(O,P)||{}},v=function(P){return $.call(O,P)}}else{var T=u("state");f[T]=!0,m=function(P,N){if(l(P,T))throw new TypeError(p);return N.facade=P,a(P,T,N),N},b=function(P){return l(P,T)?P[T]:{}},v=function(P){return l(P,T)}}t.exports={set:m,get:b,has:v,enforce:S,getterFor:g}},"6eeb":function(t,n,r){var i=r("da84"),o=r("9112"),s=r("5135"),a=r("ce4e"),l=r("8925"),c=r("69f3"),u=c.get,f=c.enforce,p=String(String).split("String");(t.exports=function(d,m,b,v){var S=v?!!v.unsafe:!1,g=v?!!v.enumerable:!1,O=v?!!v.noTargetGet:!1,E;if(typeof b=="function"&&(typeof m=="string"&&!s(b,"name")&&o(b,"name",m),E=f(b),E.source||(E.source=p.join(typeof m=="string"?m:""))),d===i){g?d[m]=b:a(m,b);return}else S?!O&&d[m]&&(g=!0):delete d[m];g?d[m]=b:o(d,m,b)})(Function.prototype,"toString",function(){return typeof this=="function"&&u(this).source||l(this)})},"6f53":function(t,n,r){var i=r("83ab"),o=r("df75"),s=r("fc6a"),a=r("d1e7").f,l=function(c){return function(u){for(var f=s(u),p=o(f),d=p.length,m=0,b=[],v;d>m;)v=p[m++],(!i||a.call(f,v))&&b.push(c?[v,f[v]]:f[v]);return b}};t.exports={entries:l(!0),values:l(!1)}},"7156":function(t,n,r){var i=r("861d"),o=r("d2bb");t.exports=function(s,a,l){var c,u;return o&&typeof(c=a.constructor)=="function"&&c!==l&&i(u=c.prototype)&&u!==l.prototype&&o(s,u),s}},"7418":function(t,n){n.f=Object.getOwnPropertySymbols},"746f":function(t,n,r){var i=r("428f"),o=r("5135"),s=r("e538"),a=r("9bf2").f;t.exports=function(l){var c=i.Symbol||(i.Symbol={});o(c,l)||a(c,l,{value:s.f(l)})}},"7839":function(t,n){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},"7b0b":function(t,n,r){var i=r("1d80");t.exports=function(o){return Object(i(o))}},"7c73":function(t,n,r){var i=r("825a"),o=r("37e8"),s=r("7839"),a=r("d012"),l=r("1be4"),c=r("cc12"),u=r("f772"),f=">",p="<",d="prototype",m="script",b=u("IE_PROTO"),v=function(){},S=function(R){return p+m+f+R+p+"/"+m+f},g=function(R){R.write(S("")),R.close();var T=R.parentWindow.Object;return R=null,T},O=function(){var R=c("iframe"),T="java"+m+":",P;return R.style.display="none",l.appendChild(R),R.src=String(T),P=R.contentWindow.document,P.open(),P.write(S("document.F=Object")),P.close(),P.F},E,$=function(){try{E=document.domain&&new ActiveXObject("htmlfile")}catch(T){}$=E?g(E):O();for(var R=s.length;R--;)delete $[d][s[R]];return $()};a[b]=!0,t.exports=Object.create||function(T,P){var N;return T!==null?(v[d]=i(T),N=new v,v[d]=null,N[b]=T):N=$(),P===void 0?N:o(N,P)}},"7db0":function(t,n,r){var i=r("23e7"),o=r("b727").find,s=r("44d2"),a="find",l=!0;a in[]&&Array(1)[a](function(){l=!1}),i({target:"Array",proto:!0,forced:l},{find:function(u){return o(this,u,arguments.length>1?arguments[1]:void 0)}}),s(a)},"7dd0":function(t,n,r){var i=r("23e7"),o=r("9ed3"),s=r("e163"),a=r("d2bb"),l=r("d44e"),c=r("9112"),u=r("6eeb"),f=r("b622"),p=r("c430"),d=r("3f8c"),m=r("ae93"),b=m.IteratorPrototype,v=m.BUGGY_SAFARI_ITERATORS,S=f("iterator"),g="keys",O="values",E="entries",$=function(){return this};t.exports=function(R,T,P,N,j,V,F){o(P,T,N);var C=function(ve){if(ve===j&&B)return B;if(!v&&ve in L)return L[ve];switch(ve){case g:return function(){return new P(this,ve)};case O:return function(){return new P(this,ve)};case E:return function(){return new P(this,ve)}}return function(){return new P(this)}},w=T+" Iterator",M=!1,L=R.prototype,z=L[S]||L["@@iterator"]||j&&L[j],B=!v&&z||C(j),K=T=="Array"&&L.entries||z,G,de,ce;if(K&&(G=s(K.call(new R)),b!==Object.prototype&&G.next&&(!p&&s(G)!==b&&(a?a(G,b):typeof G[S]!="function"&&c(G,S,$)),l(G,w,!0,!0),p&&(d[w]=$))),j==O&&z&&z.name!==O&&(M=!0,B=function(){return z.call(this)}),(!p||F)&&L[S]!==B&&c(L,S,B),d[T]=B,j)if(de={values:C(O),keys:V?B:C(g),entries:C(E)},F)for(ce in de)(v||M||!(ce in L))&&u(L,ce,de[ce]);else i({target:T,proto:!0,forced:v||M},de);return de}},"7f9a":function(t,n,r){var i=r("da84"),o=r("8925"),s=i.WeakMap;t.exports=typeof s=="function"&&/native code/.test(o(s))},"825a":function(t,n,r){var i=r("861d");t.exports=function(o){if(!i(o))throw TypeError(String(o)+" is not an object");return o}},"83ab":function(t,n,r){var i=r("d039");t.exports=!i(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!=7})},"8418":function(t,n,r){var i=r("c04e"),o=r("9bf2"),s=r("5c6c");t.exports=function(a,l,c){var u=i(l);u in a?o.f(a,u,s(0,c)):a[u]=c}},"861d":function(t,n){t.exports=function(r){return typeof r=="object"?r!==null:typeof r=="function"}},"8875":function(t,n,r){var i,o,s;(function(a,l){o=[],i=l,s=typeof i=="function"?i.apply(n,o):i,s!==void 0&&(t.exports=s)})(typeof self!="undefined"?self:this,function(){function a(){var l=Object.getOwnPropertyDescriptor(document,"currentScript");if(!l&&"currentScript"in document&&document.currentScript||l&&l.get!==a&&document.currentScript)return document.currentScript;try{throw new Error}catch(E){var c=/.*at [^(]*\((.*):(.+):(.+)\)$/ig,u=/@([^@]*):(\d+):(\d+)\s*$/ig,f=c.exec(E.stack)||u.exec(E.stack),p=f&&f[1]||!1,d=f&&f[2]||!1,m=document.location.href.replace(document.location.hash,""),b,v,S,g=document.getElementsByTagName("script");p===m&&(b=document.documentElement.outerHTML,v=new RegExp("(?:[^\\n]+?\\n){0,"+(d-2)+"}[^<]*<script>([\\d\\D]*?)<\\/script>[\\d\\D]*","i"),S=b.replace(v,"$1").trim());for(var O=0;O<g.length;O++)if(g[O].readyState==="interactive"||g[O].src===p||p===m&&g[O].innerHTML&&g[O].innerHTML.trim()===S)return g[O];return null}}return a})},"8925":function(t,n,r){var i=r("c6cd"),o=Function.toString;typeof i.inspectSource!="function"&&(i.inspectSource=function(s){return o.call(s)}),t.exports=i.inspectSource},"8bbf":function(t,n){t.exports=ap.exports},"90e3":function(t,n){var r=0,i=Math.random();t.exports=function(o){return"Symbol("+String(o===void 0?"":o)+")_"+(++r+i).toString(36)}},"9112":function(t,n,r){var i=r("83ab"),o=r("9bf2"),s=r("5c6c");t.exports=i?function(a,l,c){return o.f(a,l,s(1,c))}:function(a,l,c){return a[l]=c,a}},"94ca":function(t,n,r){var i=r("d039"),o=/#|\.prototype\./,s=function(f,p){var d=l[a(f)];return d==u?!0:d==c?!1:typeof p=="function"?i(p):!!p},a=s.normalize=function(f){return String(f).replace(o,".").toLowerCase()},l=s.data={},c=s.NATIVE="N",u=s.POLYFILL="P";t.exports=s},"9bdd":function(t,n,r){var i=r("825a"),o=r("2a62");t.exports=function(s,a,l,c){try{return c?a(i(l)[0],l[1]):a(l)}catch(u){throw o(s),u}}},"9bf2":function(t,n,r){var i=r("83ab"),o=r("0cfb"),s=r("825a"),a=r("c04e"),l=Object.defineProperty;n.f=i?l:function(u,f,p){if(s(u),f=a(f,!0),s(p),o)try{return l(u,f,p)}catch(d){}if("get"in p||"set"in p)throw TypeError("Accessors not supported");return"value"in p&&(u[f]=p.value),u}},"9ed3":function(t,n,r){var i=r("ae93").IteratorPrototype,o=r("7c73"),s=r("5c6c"),a=r("d44e"),l=r("3f8c"),c=function(){return this};t.exports=function(u,f,p){var d=f+" Iterator";return u.prototype=o(i,{next:s(1,p)}),a(u,d,!1,!0),l[d]=c,u}},a434:function(t,n,r){var i=r("23e7"),o=r("23cb"),s=r("a691"),a=r("50c4"),l=r("7b0b"),c=r("65f0"),u=r("8418"),f=r("1dde"),p=f("splice"),d=Math.max,m=Math.min,b=9007199254740991,v="Maximum allowed length exceeded";i({target:"Array",proto:!0,forced:!p},{splice:function(g,O){var E=l(this),$=a(E.length),R=o(g,$),T=arguments.length,P,N,j,V,F,C;if(T===0?P=N=0:T===1?(P=0,N=$-R):(P=T-2,N=m(d(s(O),0),$-R)),$+P-N>b)throw TypeError(v);for(j=c(E,N),V=0;V<N;V++)F=R+V,F in E&&u(j,V,E[F]);if(j.length=N,P<N){for(V=R;V<$-N;V++)F=V+N,C=V+P,F in E?E[C]=E[F]:delete E[C];for(V=$;V>$-N+P;V--)delete E[V-1]}else if(P>N)for(V=$-N;V>R;V--)F=V+N-1,C=V+P-1,F in E?E[C]=E[F]:delete E[C];for(V=0;V<P;V++)E[V+R]=arguments[V+2];return E.length=$-N+P,j}})},a4d3:function(t,n,r){var i=r("23e7"),o=r("da84"),s=r("d066"),a=r("c430"),l=r("83ab"),c=r("4930"),u=r("fdbf"),f=r("d039"),p=r("5135"),d=r("e8b5"),m=r("861d"),b=r("825a"),v=r("7b0b"),S=r("fc6a"),g=r("c04e"),O=r("5c6c"),E=r("7c73"),$=r("df75"),R=r("241c"),T=r("057f"),P=r("7418"),N=r("06cf"),j=r("9bf2"),V=r("d1e7"),F=r("9112"),C=r("6eeb"),w=r("5692"),M=r("f772"),L=r("d012"),z=r("90e3"),B=r("b622"),K=r("e538"),G=r("746f"),de=r("d44e"),ce=r("69f3"),ve=r("b727").forEach,Se=M("hidden"),Re="Symbol",Je="prototype",Qe=B("toPrimitive"),ft=ce.set,kt=ce.getterFor(Re),Ve=Object[Je],ze=o.Symbol,vt=s("JSON","stringify"),x=N.f,I=j.f,k=T.f,X=V.f,W=w("symbols"),q=w("op-symbols"),ne=w("string-to-symbol-registry"),_=w("symbol-to-string-registry"),ee=w("wks"),Q=o.QObject,fe=!Q||!Q[Je]||!Q[Je].findChild,le=l&&f(function(){return E(I({},"a",{get:function(){return I(this,"a",{value:7}).a}})).a!=7})?function(ge,te,oe){var ae=x(Ve,te);ae&&delete Ve[te],I(ge,te,oe),ae&&ge!==Ve&&I(Ve,te,ae)}:I,pe=function(ge,te){var oe=W[ge]=E(ze[Je]);return ft(oe,{type:Re,tag:ge,description:te}),l||(oe.description=te),oe},y=u?function(ge){return typeof ge=="symbol"}:function(ge){return Object(ge)instanceof ze},h=function(te,oe,ae){te===Ve&&h(q,oe,ae),b(te);var we=g(oe,!0);return b(ae),p(W,we)?(ae.enumerable?(p(te,Se)&&te[Se][we]&&(te[Se][we]=!1),ae=E(ae,{enumerable:O(0,!1)})):(p(te,Se)||I(te,Se,O(1,{})),te[Se][we]=!0),le(te,we,ae)):I(te,we,ae)},U=function(te,oe){b(te);var ae=S(oe),we=$(ae).concat(Fe(ae));return ve(we,function(Pe){(!l||Z.call(ae,Pe))&&h(te,Pe,ae[Pe])}),te},Y=function(te,oe){return oe===void 0?E(te):U(E(te),oe)},Z=function(te){var oe=g(te,!0),ae=X.call(this,oe);return this===Ve&&p(W,oe)&&!p(q,oe)?!1:ae||!p(this,oe)||!p(W,oe)||p(this,Se)&&this[Se][oe]?ae:!0},me=function(te,oe){var ae=S(te),we=g(oe,!0);if(!(ae===Ve&&p(W,we)&&!p(q,we))){var Pe=x(ae,we);return Pe&&p(W,we)&&!(p(ae,Se)&&ae[Se][we])&&(Pe.enumerable=!0),Pe}},Oe=function(te){var oe=k(S(te)),ae=[];return ve(oe,function(we){!p(W,we)&&!p(L,we)&&ae.push(we)}),ae},Fe=function(te){var oe=te===Ve,ae=k(oe?q:S(te)),we=[];return ve(ae,function(Pe){p(W,Pe)&&(!oe||p(Ve,Pe))&&we.push(W[Pe])}),we};if(c||(ze=function(){if(this instanceof ze)throw TypeError("Symbol is not a constructor");var te=!arguments.length||arguments[0]===void 0?void 0:String(arguments[0]),oe=z(te),ae=function(we){this===Ve&&ae.call(q,we),p(this,Se)&&p(this[Se],oe)&&(this[Se][oe]=!1),le(this,oe,O(1,we))};return l&&fe&&le(Ve,oe,{configurable:!0,set:ae}),pe(oe,te)},C(ze[Je],"toString",function(){return kt(this).tag}),C(ze,"withoutSetter",function(ge){return pe(z(ge),ge)}),V.f=Z,j.f=h,N.f=me,R.f=T.f=Oe,P.f=Fe,K.f=function(ge){return pe(B(ge),ge)},l&&(I(ze[Je],"description",{configurable:!0,get:function(){return kt(this).description}}),a||C(Ve,"propertyIsEnumerable",Z,{unsafe:!0}))),i({global:!0,wrap:!0,forced:!c,sham:!c},{Symbol:ze}),ve($(ee),function(ge){G(ge)}),i({target:Re,stat:!0,forced:!c},{for:function(ge){var te=String(ge);if(p(ne,te))return ne[te];var oe=ze(te);return ne[te]=oe,_[oe]=te,oe},keyFor:function(te){if(!y(te))throw TypeError(te+" is not a symbol");if(p(_,te))return _[te]},useSetter:function(){fe=!0},useSimple:function(){fe=!1}}),i({target:"Object",stat:!0,forced:!c,sham:!l},{create:Y,defineProperty:h,defineProperties:U,getOwnPropertyDescriptor:me}),i({target:"Object",stat:!0,forced:!c},{getOwnPropertyNames:Oe,getOwnPropertySymbols:Fe}),i({target:"Object",stat:!0,forced:f(function(){P.f(1)})},{getOwnPropertySymbols:function(te){return P.f(v(te))}}),vt){var Le=!c||f(function(){var ge=ze();return vt([ge])!="[null]"||vt({a:ge})!="{}"||vt(Object(ge))!="{}"});i({target:"JSON",stat:!0,forced:Le},{stringify:function(te,oe,ae){for(var we=[te],Pe=1,yt;arguments.length>Pe;)we.push(arguments[Pe++]);if(yt=oe,!(!m(oe)&&te===void 0||y(te)))return d(oe)||(oe=function(qr,bt){if(typeof yt=="function"&&(bt=yt.call(this,qr,bt)),!y(bt))return bt}),we[1]=oe,vt.apply(null,we)}})}ze[Je][Qe]||F(ze[Je],Qe,ze[Je].valueOf),de(ze,Re),L[Se]=!0},a630:function(t,n,r){var i=r("23e7"),o=r("4df4"),s=r("1c7e"),a=!s(function(l){Array.from(l)});i({target:"Array",stat:!0,forced:a},{from:o})},a640:function(t,n,r){var i=r("d039");t.exports=function(o,s){var a=[][o];return!!a&&i(function(){a.call(null,s||function(){throw 1},1)})}},a691:function(t,n){var r=Math.ceil,i=Math.floor;t.exports=function(o){return isNaN(o=+o)?0:(o>0?i:r)(o)}},a9e3:function(t,n,r){var i=r("83ab"),o=r("da84"),s=r("94ca"),a=r("6eeb"),l=r("5135"),c=r("c6b6"),u=r("7156"),f=r("c04e"),p=r("d039"),d=r("7c73"),m=r("241c").f,b=r("06cf").f,v=r("9bf2").f,S=r("58a8").trim,g="Number",O=o[g],E=O.prototype,$=c(d(E))==g,R=function(V){var F=f(V,!1),C,w,M,L,z,B,K,G;if(typeof F=="string"&&F.length>2){if(F=S(F),C=F.charCodeAt(0),C===43||C===45){if(w=F.charCodeAt(2),w===88||w===120)return NaN}else if(C===48){switch(F.charCodeAt(1)){case 66:case 98:M=2,L=49;break;case 79:case 111:M=8,L=55;break;default:return+F}for(z=F.slice(2),B=z.length,K=0;K<B;K++)if(G=z.charCodeAt(K),G<48||G>L)return NaN;return parseInt(z,M)}}return+F};if(s(g,!O(" 0o1")||!O("0b1")||O("+0x1"))){for(var T=function(F){var C=arguments.length<1?0:F,w=this;return w instanceof T&&($?p(function(){E.valueOf.call(w)}):c(w)!=g)?u(new O(R(C)),w,T):R(C)},P=i?m(O):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,fromString,range".split(","),N=0,j;P.length>N;N++)l(O,j=P[N])&&!l(T,j)&&v(T,j,b(O,j));T.prototype=E,E.constructor=T,a(o,g,T)}},ab13:function(t,n,r){var i=r("b622"),o=i("match");t.exports=function(s){var a=/./;try{"/./"[s](a)}catch(l){try{return a[o]=!1,"/./"[s](a)}catch(c){}}return!1}},ae93:function(t,n,r){var i=r("d039"),o=r("e163"),s=r("9112"),a=r("5135"),l=r("b622"),c=r("c430"),u=l("iterator"),f=!1,p=function(){return this},d,m,b;[].keys&&(b=[].keys(),"next"in b?(m=o(o(b)),m!==Object.prototype&&(d=m)):f=!0);var v=d==null||i(function(){var S={};return d[u].call(S)!==S});v&&(d={}),(!c||v)&&!a(d,u)&&s(d,u,p),t.exports={IteratorPrototype:d,BUGGY_SAFARI_ITERATORS:f}},b041:function(t,n,r){var i=r("00ee"),o=r("f5df");t.exports=i?{}.toString:function(){return"[object "+o(this)+"]"}},b0c0:function(t,n,r){var i=r("83ab"),o=r("9bf2").f,s=Function.prototype,a=s.toString,l=/^\s*function ([^ (]*)/,c="name";i&&!(c in s)&&o(s,c,{configurable:!0,get:function(){try{return a.call(this).match(l)[1]}catch(u){return""}}})},b622:function(t,n,r){var i=r("da84"),o=r("5692"),s=r("5135"),a=r("90e3"),l=r("4930"),c=r("fdbf"),u=o("wks"),f=i.Symbol,p=c?f:f&&f.withoutSetter||a;t.exports=function(d){return(!s(u,d)||!(l||typeof u[d]=="string"))&&(l&&s(f,d)?u[d]=f[d]:u[d]=p("Symbol."+d)),u[d]}},b64b:function(t,n,r){var i=r("23e7"),o=r("7b0b"),s=r("df75"),a=r("d039"),l=a(function(){s(1)});i({target:"Object",stat:!0,forced:l},{keys:function(u){return s(o(u))}})},b727:function(t,n,r){var i=r("0366"),o=r("44ad"),s=r("7b0b"),a=r("50c4"),l=r("65f0"),c=[].push,u=function(f){var p=f==1,d=f==2,m=f==3,b=f==4,v=f==6,S=f==7,g=f==5||v;return function(O,E,$,R){for(var T=s(O),P=o(T),N=i(E,$,3),j=a(P.length),V=0,F=R||l,C=p?F(O,j):d||S?F(O,0):void 0,w,M;j>V;V++)if((g||V in P)&&(w=P[V],M=N(w,V,T),f))if(p)C[V]=M;else if(M)switch(f){case 3:return!0;case 5:return w;case 6:return V;case 2:c.call(C,w)}else switch(f){case 4:return!1;case 7:c.call(C,w)}return v?-1:m||b?b:C}};t.exports={forEach:u(0),map:u(1),filter:u(2),some:u(3),every:u(4),find:u(5),findIndex:u(6),filterOut:u(7)}},c04e:function(t,n,r){var i=r("861d");t.exports=function(o,s){if(!i(o))return o;var a,l;if(s&&typeof(a=o.toString)=="function"&&!i(l=a.call(o))||typeof(a=o.valueOf)=="function"&&!i(l=a.call(o))||!s&&typeof(a=o.toString)=="function"&&!i(l=a.call(o)))return l;throw TypeError("Can't convert object to primitive value")}},c14f:function(t,n,r){r("ce77")},c430:function(t,n){t.exports=!1},c6b6:function(t,n){var r={}.toString;t.exports=function(i){return r.call(i).slice(8,-1)}},c6cd:function(t,n,r){var i=r("da84"),o=r("ce4e"),s="__core-js_shared__",a=i[s]||o(s,{});t.exports=a},c740:function(t,n,r){var i=r("23e7"),o=r("b727").findIndex,s=r("44d2"),a="findIndex",l=!0;a in[]&&Array(1)[a](function(){l=!1}),i({target:"Array",proto:!0,forced:l},{findIndex:function(u){return o(this,u,arguments.length>1?arguments[1]:void 0)}}),s(a)},c8ba:function(t,n){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(i){typeof window=="object"&&(r=window)}t.exports=r},ca84:function(t,n,r){var i=r("5135"),o=r("fc6a"),s=r("4d64").indexOf,a=r("d012");t.exports=function(l,c){var u=o(l),f=0,p=[],d;for(d in u)!i(a,d)&&i(u,d)&&p.push(d);for(;c.length>f;)i(u,d=c[f++])&&(~s(p,d)||p.push(d));return p}},caad:function(t,n,r){var i=r("23e7"),o=r("4d64").includes,s=r("44d2");i({target:"Array",proto:!0},{includes:function(l){return o(this,l,arguments.length>1?arguments[1]:void 0)}}),s("includes")},cc12:function(t,n,r){var i=r("da84"),o=r("861d"),s=i.document,a=o(s)&&o(s.createElement);t.exports=function(l){return a?s.createElement(l):{}}},ce4e:function(t,n,r){var i=r("da84"),o=r("9112");t.exports=function(s,a){try{o(i,s,a)}catch(l){i[s]=a}return a}},ce77:function(t,n,r){},d012:function(t,n){t.exports={}},d039:function(t,n){t.exports=function(r){try{return!!r()}catch(i){return!0}}},d066:function(t,n,r){var i=r("428f"),o=r("da84"),s=function(a){return typeof a=="function"?a:void 0};t.exports=function(a,l){return arguments.length<2?s(i[a])||s(o[a]):i[a]&&i[a][l]||o[a]&&o[a][l]}},d1e7:function(t,n,r){var i={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,s=o&&!i.call({1:2},1);n.f=s?function(l){var c=o(this,l);return!!c&&c.enumerable}:i},d28b:function(t,n,r){var i=r("746f");i("iterator")},d2bb:function(t,n,r){var i=r("825a"),o=r("3bbe");t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var s=!1,a={},l;try{l=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,l.call(a,[]),s=a instanceof Array}catch(c){}return function(u,f){return i(u),o(f),s?l.call(u,f):u.__proto__=f,u}}():void 0)},d3b7:function(t,n,r){var i=r("00ee"),o=r("6eeb"),s=r("b041");i||o(Object.prototype,"toString",s,{unsafe:!0})},d44e:function(t,n,r){var i=r("9bf2").f,o=r("5135"),s=r("b622"),a=s("toStringTag");t.exports=function(l,c,u){l&&!o(l=u?l:l.prototype,a)&&i(l,a,{configurable:!0,value:c})}},d81d:function(t,n,r){var i=r("23e7"),o=r("b727").map,s=r("1dde"),a=s("map");i({target:"Array",proto:!0,forced:!a},{map:function(c){return o(this,c,arguments.length>1?arguments[1]:void 0)}})},da84:function(t,n,r){(function(i){var o=function(s){return s&&s.Math==Math&&s};t.exports=o(typeof globalThis=="object"&&globalThis)||o(typeof window=="object"&&window)||o(typeof self=="object"&&self)||o(typeof i=="object"&&i)||function(){return this}()||Function("return this")()}).call(this,r("c8ba"))},dbb4:function(t,n,r){var i=r("23e7"),o=r("83ab"),s=r("56ef"),a=r("fc6a"),l=r("06cf"),c=r("8418");i({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(f){for(var p=a(f),d=l.f,m=s(p),b={},v=0,S,g;m.length>v;)g=d(p,S=m[v++]),g!==void 0&&c(b,S,g);return b}})},ddb0:function(t,n,r){var i=r("da84"),o=r("fdbc"),s=r("e260"),a=r("9112"),l=r("b622"),c=l("iterator"),u=l("toStringTag"),f=s.values;for(var p in o){var d=i[p],m=d&&d.prototype;if(m){if(m[c]!==f)try{a(m,c,f)}catch(v){m[c]=f}if(m[u]||a(m,u,p),o[p]){for(var b in s)if(m[b]!==s[b])try{a(m,b,s[b])}catch(v){m[b]=s[b]}}}}},df75:function(t,n,r){var i=r("ca84"),o=r("7839");t.exports=Object.keys||function(a){return i(a,o)}},e01a:function(t,n,r){var i=r("23e7"),o=r("83ab"),s=r("da84"),a=r("5135"),l=r("861d"),c=r("9bf2").f,u=r("e893"),f=s.Symbol;if(o&&typeof f=="function"&&(!("description"in f.prototype)||f().description!==void 0)){var p={},d=function(){var O=arguments.length<1||arguments[0]===void 0?void 0:String(arguments[0]),E=this instanceof d?new f(O):O===void 0?f():f(O);return O===""&&(p[E]=!0),E};u(d,f);var m=d.prototype=f.prototype;m.constructor=d;var b=m.toString,v=String(f("test"))=="Symbol(test)",S=/^Symbol\((.*)\)[^)]+$/;c(m,"description",{configurable:!0,get:function(){var O=l(this)?this.valueOf():this,E=b.call(O);if(a(p,O))return"";var $=v?E.slice(7,-1):E.replace(S,"$1");return $===""?void 0:$}}),i({global:!0,forced:!0},{Symbol:d})}},e163:function(t,n,r){var i=r("5135"),o=r("7b0b"),s=r("f772"),a=r("e177"),l=s("IE_PROTO"),c=Object.prototype;t.exports=a?Object.getPrototypeOf:function(u){return u=o(u),i(u,l)?u[l]:typeof u.constructor=="function"&&u instanceof u.constructor?u.constructor.prototype:u instanceof Object?c:null}},e177:function(t,n,r){var i=r("d039");t.exports=!i(function(){function o(){}return o.prototype.constructor=null,Object.getPrototypeOf(new o)!==o.prototype})},e260:function(t,n,r){var i=r("fc6a"),o=r("44d2"),s=r("3f8c"),a=r("69f3"),l=r("7dd0"),c="Array Iterator",u=a.set,f=a.getterFor(c);t.exports=l(Array,"Array",function(p,d){u(this,{type:c,target:i(p),index:0,kind:d})},function(){var p=f(this),d=p.target,m=p.kind,b=p.index++;return!d||b>=d.length?(p.target=void 0,{value:void 0,done:!0}):m=="keys"?{value:b,done:!1}:m=="values"?{value:d[b],done:!1}:{value:[b,d[b]],done:!1}},"values"),s.Arguments=s.Array,o("keys"),o("values"),o("entries")},e439:function(t,n,r){var i=r("23e7"),o=r("d039"),s=r("fc6a"),a=r("06cf").f,l=r("83ab"),c=o(function(){a(1)}),u=!l||c;i({target:"Object",stat:!0,forced:u,sham:!l},{getOwnPropertyDescriptor:function(p,d){return a(s(p),d)}})},e538:function(t,n,r){var i=r("b622");n.f=i},e893:function(t,n,r){var i=r("5135"),o=r("56ef"),s=r("06cf"),a=r("9bf2");t.exports=function(l,c){for(var u=o(c),f=a.f,p=s.f,d=0;d<u.length;d++){var m=u[d];i(l,m)||f(l,m,p(c,m))}}},e8b5:function(t,n,r){var i=r("c6b6");t.exports=Array.isArray||function(s){return i(s)=="Array"}},e95a:function(t,n,r){var i=r("b622"),o=r("3f8c"),s=i("iterator"),a=Array.prototype;t.exports=function(l){return l!==void 0&&(o.Array===l||a[s]===l)}},f5df:function(t,n,r){var i=r("00ee"),o=r("c6b6"),s=r("b622"),a=s("toStringTag"),l=o(function(){return arguments}())=="Arguments",c=function(u,f){try{return u[f]}catch(p){}};t.exports=i?o:function(u){var f,p,d;return u===void 0?"Undefined":u===null?"Null":typeof(p=c(f=Object(u),a))=="string"?p:l?o(f):(d=o(f))=="Object"&&typeof f.callee=="function"?"Arguments":d}},f772:function(t,n,r){var i=r("5692"),o=r("90e3"),s=i("keys");t.exports=function(a){return s[a]||(s[a]=o(a))}},fae3:function(t,n,r){if(r.r(n),r.d(n,"Splitpanes",function(){return N}),r.d(n,"Pane",function(){return F}),typeof window!="undefined"){var i=window.document.currentScript;{var o=r("8875");i=o(),"currentScript"in document||Object.defineProperty(document,"currentScript",{get:o})}var s=i&&i.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);s&&(r.p=s[1])}r("b64b"),r("a4d3"),r("4de4"),r("e439"),r("159b"),r("dbb4");function a(C,w,M){return w in C?Object.defineProperty(C,w,{value:M,enumerable:!0,configurable:!0,writable:!0}):C[w]=M,C}function l(C,w){var M=Object.keys(C);if(Object.getOwnPropertySymbols){var L=Object.getOwnPropertySymbols(C);w&&(L=L.filter(function(z){return Object.getOwnPropertyDescriptor(C,z).enumerable})),M.push.apply(M,L)}return M}function c(C){for(var w=1;w<arguments.length;w++){var M=arguments[w]!=null?arguments[w]:{};w%2?l(Object(M),!0).forEach(function(L){a(C,L,M[L])}):Object.getOwnPropertyDescriptors?Object.defineProperties(C,Object.getOwnPropertyDescriptors(M)):l(Object(M)).forEach(function(L){Object.defineProperty(C,L,Object.getOwnPropertyDescriptor(M,L))})}return C}function u(C){if(Array.isArray(C))return C}r("e01a"),r("d3b7"),r("d28b"),r("e260"),r("3ca3"),r("ddb0");function f(C,w){var M=C==null?null:typeof Symbol!="undefined"&&C[Symbol.iterator]||C["@@iterator"];if(M!=null){var L=[],z=!0,B=!1,K,G;try{for(M=M.call(C);!(z=(K=M.next()).done)&&(L.push(K.value),!(w&&L.length===w));z=!0);}catch(de){B=!0,G=de}finally{try{!z&&M.return!=null&&M.return()}finally{if(B)throw G}}return L}}r("fb6a"),r("b0c0"),r("a630");function p(C,w){(w==null||w>C.length)&&(w=C.length);for(var M=0,L=new Array(w);M<w;M++)L[M]=C[M];return L}function d(C,w){if(!!C){if(typeof C=="string")return p(C,w);var M=Object.prototype.toString.call(C).slice(8,-1);if(M==="Object"&&C.constructor&&(M=C.constructor.name),M==="Map"||M==="Set")return Array.from(C);if(M==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(M))return p(C,w)}}function m(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
13 |
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function b(C,w){return u(C)||f(C,w)||d(C,w)||m()}function v(C,w){if(C==null)return{};var M={},L=Object.keys(C),z,B;for(B=0;B<L.length;B++)z=L[B],!(w.indexOf(z)>=0)&&(M[z]=C[z]);return M}function S(C,w){if(C==null)return{};var M=v(C,w),L,z;if(Object.getOwnPropertySymbols){var B=Object.getOwnPropertySymbols(C);for(z=0;z<B.length;z++)L=B[z],!(w.indexOf(L)>=0)&&(!Object.prototype.propertyIsEnumerable.call(C,L)||(M[L]=C[L]))}return M}function g(C){if(Array.isArray(C))return p(C)}function O(C){if(typeof Symbol!="undefined"&&C[Symbol.iterator]!=null||C["@@iterator"]!=null)return Array.from(C)}function E(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
|
14 |
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function $(C){return g(C)||O(C)||d(C)||E()}r("d81d"),r("7db0"),r("caad"),r("2532"),r("4fad"),r("a434"),r("c740");var R=r("8bbf"),T=["target"],P={name:"splitpanes",emits:["ready","resize","resized","pane-click","pane-maximize","pane-add","pane-remove","splitter-click"],props:{horizontal:{type:Boolean},pushOtherPanes:{type:Boolean,default:!0},dblClickSplitter:{type:Boolean,default:!0},rtl:{type:Boolean,default:!1},firstSplitter:{type:Boolean}},provide:function(){return{requestUpdate:this.requestUpdate,onPaneAdd:this.onPaneAdd,onPaneRemove:this.onPaneRemove,onPaneClick:this.onPaneClick}},data:function(){return{container:null,ready:!1,panes:[],touch:{mouseDown:!1,dragging:!1,activeSplitter:null},splitterTaps:{splitter:null,timeoutId:null}}},computed:{panesCount:function(){return this.panes.length},indexedPanes:function(){return this.panes.reduce(function(w,M){return(w[M.id]=M)&&w},{})}},methods:{updatePaneComponents:function(){var w=this;this.panes.forEach(function(M){M.update&&M.update(a({},w.horizontal?"height":"width","".concat(w.indexedPanes[M.id].size,"%")))})},bindEvents:function(){document.addEventListener("mousemove",this.onMouseMove,{passive:!1}),document.addEventListener("mouseup",this.onMouseUp),"ontouchstart"in window&&(document.addEventListener("touchmove",this.onMouseMove,{passive:!1}),document.addEventListener("touchend",this.onMouseUp))},unbindEvents:function(){document.removeEventListener("mousemove",this.onMouseMove,{passive:!1}),document.removeEventListener("mouseup",this.onMouseUp),"ontouchstart"in window&&(document.removeEventListener("touchmove",this.onMouseMove,{passive:!1}),document.removeEventListener("touchend",this.onMouseUp))},onMouseDown:function(w,M){this.bindEvents(),this.touch.mouseDown=!0,this.touch.activeSplitter=M},onMouseMove:function(w){this.touch.mouseDown&&(w.preventDefault(),this.touch.dragging=!0,this.calculatePanesSize(this.getCurrentMouseDrag(w)),this.$emit("resize",this.panes.map(function(M){return{min:M.min,max:M.max,size:M.size}})))},onMouseUp:function(){var w=this;this.touch.dragging&&this.$emit("resized",this.panes.map(function(M){return{min:M.min,max:M.max,size:M.size}})),this.touch.mouseDown=!1,setTimeout(function(){w.touch.dragging=!1,w.unbindEvents()},100)},onSplitterClick:function(w,M){var L=this;"ontouchstart"in window&&(w.preventDefault(),this.dblClickSplitter&&(this.splitterTaps.splitter===M?(clearTimeout(this.splitterTaps.timeoutId),this.splitterTaps.timeoutId=null,this.onSplitterDblClick(w,M),this.splitterTaps.splitter=null):(this.splitterTaps.splitter=M,this.splitterTaps.timeoutId=setTimeout(function(){L.splitterTaps.splitter=null},500)))),this.touch.dragging||this.$emit("splitter-click",this.panes[M])},onSplitterDblClick:function(w,M){var L=0;this.panes=this.panes.map(function(z,B){return z.size=B===M?z.max:z.min,B!==M&&(L+=z.min),z}),this.panes[M].size-=L,this.$emit("pane-maximize",this.panes[M])},onPaneClick:function(w,M){this.$emit("pane-click",this.indexedPanes[M])},getCurrentMouseDrag:function(w){var M=this.container.getBoundingClientRect(),L="ontouchstart"in window&&w.touches?w.touches[0]:w,z=L.clientX,B=L.clientY;return{x:z-M.left,y:B-M.top}},getCurrentDragPercentage:function(w){w=w[this.horizontal?"y":"x"];var M=this.container[this.horizontal?"clientHeight":"clientWidth"];return this.rtl&&!this.horizontal&&(w=M-w),w*100/M},calculatePanesSize:function(w){var M=this.touch.activeSplitter,L={prevPanesSize:this.sumPrevPanesSize(M),nextPanesSize:this.sumNextPanesSize(M),prevReachedMinPanes:0,nextReachedMinPanes:0},z=0+(this.pushOtherPanes?0:L.prevPanesSize),B=100-(this.pushOtherPanes?0:L.nextPanesSize),K=Math.max(Math.min(this.getCurrentDragPercentage(w),B),z),G=[M,M+1],de=this.panes[G[0]]||null,ce=this.panes[G[1]]||null,ve=de.max<100&&K>=de.max+L.prevPanesSize,Se=ce.max<100&&K<=100-(ce.max+this.sumNextPanesSize(M+1));if(ve||Se){ve?(de.size=de.max,ce.size=Math.max(100-de.max-L.prevPanesSize-L.nextPanesSize,0)):(de.size=Math.max(100-ce.max-L.prevPanesSize-this.sumNextPanesSize(M+1),0),ce.size=ce.max);return}if(this.pushOtherPanes){var Re=this.doPushOtherPanes(L,K);if(!Re)return;L=Re.sums,G=Re.panesToResize,de=this.panes[G[0]]||null,ce=this.panes[G[1]]||null}de!==null&&(de.size=Math.min(Math.max(K-L.prevPanesSize-L.prevReachedMinPanes,de.min),de.max)),ce!==null&&(ce.size=Math.min(Math.max(100-K-L.nextPanesSize-L.nextReachedMinPanes,ce.min),ce.max))},doPushOtherPanes:function(w,M){var L=this,z=this.touch.activeSplitter,B=[z,z+1];return M<w.prevPanesSize+this.panes[B[0]].min&&(B[0]=this.findPrevExpandedPane(z).index,w.prevReachedMinPanes=0,B[0]<z&&this.panes.forEach(function(K,G){G>B[0]&&G<=z&&(K.size=K.min,w.prevReachedMinPanes+=K.min)}),w.prevPanesSize=this.sumPrevPanesSize(B[0]),B[0]===void 0)?(w.prevReachedMinPanes=0,this.panes[0].size=this.panes[0].min,this.panes.forEach(function(K,G){G>0&&G<=z&&(K.size=K.min,w.prevReachedMinPanes+=K.min)}),this.panes[B[1]].size=100-w.prevReachedMinPanes-this.panes[0].min-w.prevPanesSize-w.nextPanesSize,null):M>100-w.nextPanesSize-this.panes[B[1]].min&&(B[1]=this.findNextExpandedPane(z).index,w.nextReachedMinPanes=0,B[1]>z+1&&this.panes.forEach(function(K,G){G>z&&G<B[1]&&(K.size=K.min,w.nextReachedMinPanes+=K.min)}),w.nextPanesSize=this.sumNextPanesSize(B[1]-1),B[1]===void 0)?(w.nextReachedMinPanes=0,this.panes[this.panesCount-1].size=this.panes[this.panesCount-1].min,this.panes.forEach(function(K,G){G<L.panesCount-1&&G>=z+1&&(K.size=K.min,w.nextReachedMinPanes+=K.min)}),this.panes[B[0]].size=100-w.prevPanesSize-w.nextReachedMinPanes-this.panes[this.panesCount-1].min-w.nextPanesSize,null):{sums:w,panesToResize:B}},sumPrevPanesSize:function(w){return this.panes.reduce(function(M,L,z){return M+(z<w?L.size:0)},0)},sumNextPanesSize:function(w){return this.panes.reduce(function(M,L,z){return M+(z>w+1?L.size:0)},0)},findPrevExpandedPane:function(w){var M=$(this.panes).reverse().find(function(L){return L.index<w&&L.size>L.min});return M||{}},findNextExpandedPane:function(w){var M=this.panes.find(function(L){return L.index>w+1&&L.size>L.min});return M||{}},checkSplitpanesNodes:function(){var w=Array.from(this.container.children);w.forEach(function(M){var L=M.classList.contains("splitpanes__pane"),z=M.classList.contains("splitpanes__splitter");if(!L&&!z){M.parentNode.removeChild(M),console.warn("Splitpanes: Only <pane> elements are allowed at the root of <splitpanes>. One of your DOM nodes was removed.");return}})},addSplitter:function(w,M){var L=this,z=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,B=w-1,K=document.createElement("div");K.classList.add("splitpanes__splitter"),z||(K.onmousedown=function(G){return L.onMouseDown(G,B)},typeof window!="undefined"&&"ontouchstart"in window&&(K.ontouchstart=function(G){return L.onMouseDown(G,B)}),K.onclick=function(G){return L.onSplitterClick(G,B+1)}),this.dblClickSplitter&&(K.ondblclick=function(G){return L.onSplitterDblClick(G,B+1)}),M.parentNode.insertBefore(K,M)},removeSplitter:function(w){w.onmousedown=void 0,w.onclick=void 0,w.ondblclick=void 0,w.parentNode.removeChild(w)},redoSplitters:function(){var w=this,M=Array.from(this.container.children);M.forEach(function(z){z.className.includes("splitpanes__splitter")&&w.removeSplitter(z)});var L=0;M.forEach(function(z){z.className.includes("splitpanes__pane")&&(!L&&w.firstSplitter?w.addSplitter(L,z,!0):L&&w.addSplitter(L,z),L++)})},requestUpdate:function(w){var M=w.target,L=S(w,T),z=this.indexedPanes[M._.uid];Object.entries(L).forEach(function(B){var K=b(B,2),G=K[0],de=K[1];return z[G]=de})},onPaneAdd:function(w){var M=this,L=-1;Array.from(w.$el.parentNode.children).some(function(K){return K.className.includes("splitpanes__pane")&&L++,K===w.$el});var z=parseFloat(w.minSize),B=parseFloat(w.maxSize);this.panes.splice(L,0,{id:w._.uid,index:L,min:isNaN(z)?0:z,max:isNaN(B)?100:B,size:w.size===null?null:parseFloat(w.size),givenSize:w.size,update:w.update}),this.panes.forEach(function(K,G){return K.index=G}),this.ready&&this.$nextTick(function(){M.redoSplitters(),M.resetPaneSizes({addedPane:M.panes[L]}),M.$emit("pane-add",{index:L,panes:M.panes.map(function(K){return{min:K.min,max:K.max,size:K.size}})})})},onPaneRemove:function(w){var M=this,L=this.panes.findIndex(function(B){return B.id===w._.uid}),z=this.panes.splice(L,1)[0];this.panes.forEach(function(B,K){return B.index=K}),this.$nextTick(function(){M.redoSplitters(),M.resetPaneSizes({removedPane:c(c({},z),{},{index:L})}),M.$emit("pane-remove",{removed:z,panes:M.panes.map(function(B){return{min:B.min,max:B.max,size:B.size}})})})},resetPaneSizes:function(){var w=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};!w.addedPane&&!w.removedPane?this.initialPanesSizing():this.panes.some(function(M){return M.givenSize!==null||M.min||M.max<100})?this.equalizeAfterAddOrRemove(w):this.equalize(),this.ready&&this.$emit("resized",this.panes.map(function(M){return{min:M.min,max:M.max,size:M.size}}))},equalize:function(){var w=100/this.panesCount,M=0,L=[],z=[];this.panes.forEach(function(B){B.size=Math.max(Math.min(w,B.max),B.min),M-=B.size,B.size>=B.max&&L.push(B.id),B.size<=B.min&&z.push(B.id)}),M>.1&&this.readjustSizes(M,L,z)},initialPanesSizing:function(){var w=this;100/this.panesCount;var M=100,L=[],z=[],B=0;this.panes.forEach(function(G){M-=G.size,G.size!==null&&B++,G.size>=G.max&&L.push(G.id),G.size<=G.min&&z.push(G.id)});var K=100;M>.1&&(this.panes.forEach(function(G){G.size===null&&(G.size=Math.max(Math.min(M/(w.panesCount-B),G.max),G.min)),K-=G.size}),K>.1&&this.readjustSizes(M,L,z))},equalizeAfterAddOrRemove:function(){var w=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},M=w.addedPane;w.removedPane;var L=100/this.panesCount,z=0,B=[],K=[];M&&M.givenSize!==null&&(L=(100-M.givenSize)/(this.panesCount-1)),this.panes.forEach(function(G){z-=G.size,G.size>=G.max&&B.push(G.id),G.size<=G.min&&K.push(G.id)}),!(Math.abs(z)<.1)&&(this.panes.forEach(function(G){M&&M.givenSize!==null&&M.id===G.id||(G.size=Math.max(Math.min(L,G.max),G.min)),z-=G.size,G.size>=G.max&&B.push(G.id),G.size<=G.min&&K.push(G.id)}),z>.1&&this.readjustSizes(z,B,K))},readjustSizes:function(w,M,L){var z=this,B;w>0?B=w/(this.panesCount-M.length):B=w/(this.panesCount-L.length),this.panes.forEach(function(K,G){if(w>0&&!M.includes(K.id)){var de=Math.max(Math.min(K.size+B,K.max),K.min),ce=de-K.size;w-=ce,K.size=de}else if(!L.includes(K.id)){var ve=Math.max(Math.min(K.size+B,K.max),K.min),Se=ve-K.size;w-=Se,K.size=ve}K.update(a({},z.horizontal?"height":"width","".concat(z.indexedPanes[K.id].size,"%")))}),Math.abs(w)>.1&&this.$nextTick(function(){z.ready&&console.warn("Splitpanes: Could not resize panes correctly due to their constraints.")})}},watch:{panes:{deep:!0,immediate:!1,handler:function(){this.updatePaneComponents()}},horizontal:function(){this.updatePaneComponents()},firstSplitter:function(){this.redoSplitters()},dblClickSplitter:function(w){var M=this,L=$(this.container.querySelectorAll(".splitpanes__splitter"));L.forEach(function(z,B){z.ondblclick=w?function(K){return M.onSplitterDblClick(K,B)}:void 0})}},beforeUnmount:function(){this.ready=!1},mounted:function(){this.container=this.$refs.container,this.checkSplitpanesNodes(),this.redoSplitters(),this.resetPaneSizes(),this.$emit("ready"),this.ready=!0},render:function(){return Object(R.h)("div",{ref:"container",class:["splitpanes","splitpanes--".concat(this.horizontal?"horizontal":"vertical"),{"splitpanes--dragging":this.touch.dragging}]},this.$slots.default())}};r("c14f");var N=P;function j(C,w,M,L,z,B){return Object(R.openBlock)(),Object(R.createBlock)("div",{class:"splitpanes__pane",onClick:w[1]||(w[1]=function(K){return B.onPaneClick(K,C._.uid)}),style:C.style},[Object(R.renderSlot)(C.$slots,"default")],4)}r("a9e3");var V={name:"pane",inject:["requestUpdate","onPaneAdd","onPaneRemove","onPaneClick"],props:{size:{type:[Number,String],default:null},minSize:{type:[Number,String],default:0},maxSize:{type:[Number,String],default:100}},data:function(){return{style:{}}},mounted:function(){this.onPaneAdd(this)},beforeUnmount:function(){this.onPaneRemove(this)},methods:{update:function(w){this.style=w}},computed:{sizeNumber:function(){return this.size||this.size===0?parseFloat(this.size):null},minSizeNumber:function(){return parseFloat(this.minSize)},maxSizeNumber:function(){return parseFloat(this.maxSize)}},watch:{sizeNumber:function(w){this.requestUpdate({target:this,size:w})},minSizeNumber:function(w){this.requestUpdate({target:this,min:w})},maxSizeNumber:function(w){this.requestUpdate({target:this,max:w})}}};V.render=j;var F=V},fb6a:function(t,n,r){var i=r("23e7"),o=r("861d"),s=r("e8b5"),a=r("23cb"),l=r("50c4"),c=r("fc6a"),u=r("8418"),f=r("b622"),p=r("1dde"),d=p("slice"),m=f("species"),b=[].slice,v=Math.max;i({target:"Array",proto:!0,forced:!d},{slice:function(g,O){var E=c(this),$=l(E.length),R=a(g,$),T=a(O===void 0?$:O,$),P,N,j;if(s(E)&&(P=E.constructor,typeof P=="function"&&(P===Array||s(P.prototype))?P=void 0:o(P)&&(P=P[m],P===null&&(P=void 0)),P===Array||P===void 0))return b.call(E,R,T);for(N=new(P===void 0?Array:P)(v(T-R,0)),j=0;R<T;R++,j++)R in E&&u(N,j,E[R]);return N.length=j,N}})},fc6a:function(t,n,r){var i=r("44ad"),o=r("1d80");t.exports=function(s){return i(o(s))}},fdbc:function(t,n){t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},fdbf:function(t,n,r){var i=r("4930");t.exports=i&&!Symbol.sham&&typeof Symbol.iterator=="symbol"}})})(fy);var dd=(e,t)=>{for(const[n,r]of t)e[n]=r;return e};function Gl(e){return e===0?!1:Array.isArray(e)&&e.length===0?!0:!e}function qb(e){return(...t)=>!e(...t)}function _b(e,t){return e===void 0&&(e="undefined"),e===null&&(e="null"),e===!1&&(e="false"),e.toString().toLowerCase().indexOf(t.trim())!==-1}function hd(e,t,n,r){return t?e.filter(i=>_b(r(i,n),t)).sort((i,o)=>r(i,n).length-r(o,n).length):e}function e0(e){return e.filter(t=>!t.$isLabel)}function Zl(e,t){return n=>n.reduce((r,i)=>i[e]&&i[e].length?(r.push({$groupLabel:i[t],$isLabel:!0}),r.concat(i[e])):r,[])}function t0(e,t,n,r,i){return o=>o.map(s=>{if(!s[n])return console.warn("Options passed to vue-multiselect do not contain groups, despite the config."),[];const a=hd(s[n],e,t,i);return a.length?{[r]:s[r],[n]:a}:[]})}const md=(...e)=>t=>e.reduce((n,r)=>r(n),t);var n0={data(){return{search:"",isOpen:!1,preferredOpenDirection:"below",optimizedHeight:this.maxHeight}},props:{internalSearch:{type:Boolean,default:!0},options:{type:Array,required:!0},multiple:{type:Boolean,default:!1},trackBy:{type:String},label:{type:String},searchable:{type:Boolean,default:!0},clearOnSelect:{type:Boolean,default:!0},hideSelected:{type:Boolean,default:!1},placeholder:{type:String,default:"Select option"},allowEmpty:{type:Boolean,default:!0},resetAfter:{type:Boolean,default:!1},closeOnSelect:{type:Boolean,default:!0},customLabel:{type:Function,default(e,t){return Gl(e)?"":t?e[t]:e}},taggable:{type:Boolean,default:!1},tagPlaceholder:{type:String,default:"Press enter to create a tag"},tagPosition:{type:String,default:"top"},max:{type:[Number,Boolean],default:!1},id:{default:null},optionsLimit:{type:Number,default:1e3},groupValues:{type:String},groupLabel:{type:String},groupSelect:{type:Boolean,default:!1},blockKeys:{type:Array,default(){return[]}},preserveSearch:{type:Boolean,default:!1},preselectFirst:{type:Boolean,default:!1}},mounted(){!this.multiple&&this.max&&console.warn("[Vue-Multiselect warn]: Max prop should not be used when prop Multiple equals false."),this.preselectFirst&&!this.internalValue.length&&this.options.length&&this.select(this.filteredOptions[0])},computed:{internalValue(){return this.modelValue||this.modelValue===0?Array.isArray(this.modelValue)?this.modelValue:[this.modelValue]:[]},filteredOptions(){const e=this.search||"",t=e.toLowerCase().trim();let n=this.options.concat();return this.internalSearch?n=this.groupValues?this.filterAndFlat(n,t,this.label):hd(n,t,this.label,this.customLabel):n=this.groupValues?Zl(this.groupValues,this.groupLabel)(n):n,n=this.hideSelected?n.filter(qb(this.isSelected)):n,this.taggable&&t.length&&!this.isExistingOption(t)&&(this.tagPosition==="bottom"?n.push({isTag:!0,label:e}):n.unshift({isTag:!0,label:e})),n.slice(0,this.optionsLimit)},valueKeys(){return this.trackBy?this.internalValue.map(e=>e[this.trackBy]):this.internalValue},optionKeys(){return(this.groupValues?this.flatAndStrip(this.options):this.options).map(t=>this.customLabel(t,this.label).toString().toLowerCase())},currentOptionLabel(){return this.multiple?this.searchable?"":this.placeholder:this.internalValue.length?this.getOptionLabel(this.internalValue[0]):this.searchable?"":this.placeholder}},watch:{internalValue(){this.resetAfter&&this.internalValue.length&&(this.search="",this.$emit("update:modelValue",this.multiple?[]:null))},search(){this.$emit("search-change",this.search)}},emits:["open","search-change","close","select","update:modelValue","remove","tag"],methods:{getValue(){return this.multiple?this.internalValue:this.internalValue.length===0?null:this.internalValue[0]},filterAndFlat(e,t,n){return md(t0(t,n,this.groupValues,this.groupLabel,this.customLabel),Zl(this.groupValues,this.groupLabel))(e)},flatAndStrip(e){return md(Zl(this.groupValues,this.groupLabel),e0)(e)},updateSearch(e){this.search=e},isExistingOption(e){return this.options?this.optionKeys.indexOf(e)>-1:!1},isSelected(e){const t=this.trackBy?e[this.trackBy]:e;return this.valueKeys.indexOf(t)>-1},isOptionDisabled(e){return!!e.$isDisabled},getOptionLabel(e){if(Gl(e))return"";if(e.isTag)return e.label;if(e.$isLabel)return e.$groupLabel;const t=this.customLabel(e,this.label);return Gl(t)?"":t},select(e,t){if(e.$isLabel&&this.groupSelect){this.selectGroup(e);return}if(!(this.blockKeys.indexOf(t)!==-1||this.disabled||e.$isDisabled||e.$isLabel)&&!(this.max&&this.multiple&&this.internalValue.length===this.max)&&!(t==="Tab"&&!this.pointerDirty)){if(e.isTag)this.$emit("tag",e.label,this.id),this.search="",this.closeOnSelect&&!this.multiple&&this.deactivate();else{if(this.isSelected(e)){t!=="Tab"&&this.removeElement(e);return}this.$emit("select",e,this.id),this.multiple?this.$emit("update:modelValue",this.internalValue.concat([e])):this.$emit("update:modelValue",e),this.clearOnSelect&&(this.search="")}this.closeOnSelect&&this.deactivate()}},selectGroup(e){const t=this.options.find(n=>n[this.groupLabel]===e.$groupLabel);if(!!t){if(this.wholeGroupSelected(t)){this.$emit("remove",t[this.groupValues],this.id);const n=this.internalValue.filter(r=>t[this.groupValues].indexOf(r)===-1);this.$emit("update:modelValue",n)}else{const n=t[this.groupValues].filter(r=>!(this.isOptionDisabled(r)||this.isSelected(r)));this.$emit("select",n,this.id),this.$emit("update:modelValue",this.internalValue.concat(n))}this.closeOnSelect&&this.deactivate()}},wholeGroupSelected(e){return e[this.groupValues].every(t=>this.isSelected(t)||this.isOptionDisabled(t))},wholeGroupDisabled(e){return e[this.groupValues].every(this.isOptionDisabled)},removeElement(e,t=!0){if(this.disabled||e.$isDisabled)return;if(!this.allowEmpty&&this.internalValue.length<=1){this.deactivate();return}const n=typeof e=="object"?this.valueKeys.indexOf(e[this.trackBy]):this.valueKeys.indexOf(e);if(this.$emit("remove",e,this.id),this.multiple){const r=this.internalValue.slice(0,n).concat(this.internalValue.slice(n+1));this.$emit("update:modelValue",r)}else this.$emit("update:modelValue",null);this.closeOnSelect&&t&&this.deactivate()},removeLastElement(){this.blockKeys.indexOf("Delete")===-1&&this.search.length===0&&Array.isArray(this.internalValue)&&this.internalValue.length&&this.removeElement(this.internalValue[this.internalValue.length-1],!1)},activate(){this.isOpen||this.disabled||(this.adjustPosition(),this.groupValues&&this.pointer===0&&this.filteredOptions.length&&(this.pointer=1),this.isOpen=!0,this.searchable?(this.preserveSearch||(this.search=""),this.$nextTick(()=>this.$refs.search&&this.$refs.search.focus())):this.$el.focus(),this.$emit("open",this.id))},deactivate(){!this.isOpen||(this.isOpen=!1,this.searchable?this.$refs.search&&this.$refs.search.blur():this.$el.blur(),this.preserveSearch||(this.search=""),this.$emit("close",this.getValue(),this.id))},toggle(){this.isOpen?this.deactivate():this.activate()},adjustPosition(){if(typeof window=="undefined")return;const e=this.$el.getBoundingClientRect().top,t=window.innerHeight-this.$el.getBoundingClientRect().bottom;t>this.maxHeight||t>e||this.openDirection==="below"||this.openDirection==="bottom"?(this.preferredOpenDirection="below",this.optimizedHeight=Math.min(t-40,this.maxHeight)):(this.preferredOpenDirection="above",this.optimizedHeight=Math.min(e-40,this.maxHeight))}}},r0={data(){return{pointer:0,pointerDirty:!1}},props:{showPointer:{type:Boolean,default:!0},optionHeight:{type:Number,default:40}},computed:{pointerPosition(){return this.pointer*this.optionHeight},visibleElements(){return this.optimizedHeight/this.optionHeight}},watch:{filteredOptions(){this.pointerAdjust()},isOpen(){this.pointerDirty=!1},pointer(){this.$refs.search&&this.$refs.search.setAttribute("aria-activedescendant",this.id+"-"+this.pointer.toString())}},methods:{optionHighlight(e,t){return{"multiselect__option--highlight":e===this.pointer&&this.showPointer,"multiselect__option--selected":this.isSelected(t)}},groupHighlight(e,t){if(!this.groupSelect)return["multiselect__option--disabled",{"multiselect__option--group":t.$isLabel}];const n=this.options.find(r=>r[this.groupLabel]===t.$groupLabel);return n&&!this.wholeGroupDisabled(n)?["multiselect__option--group",{"multiselect__option--highlight":e===this.pointer&&this.showPointer},{"multiselect__option--group-selected":this.wholeGroupSelected(n)}]:"multiselect__option--disabled"},addPointerElement({key:e}="Enter"){this.filteredOptions.length>0&&this.select(this.filteredOptions[this.pointer],e),this.pointerReset()},pointerForward(){this.pointer<this.filteredOptions.length-1&&(this.pointer++,this.$refs.list.scrollTop<=this.pointerPosition-(this.visibleElements-1)*this.optionHeight&&(this.$refs.list.scrollTop=this.pointerPosition-(this.visibleElements-1)*this.optionHeight),this.filteredOptions[this.pointer]&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerForward()),this.pointerDirty=!0},pointerBackward(){this.pointer>0?(this.pointer--,this.$refs.list.scrollTop>=this.pointerPosition&&(this.$refs.list.scrollTop=this.pointerPosition),this.filteredOptions[this.pointer]&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerBackward()):this.filteredOptions[this.pointer]&&this.filteredOptions[0].$isLabel&&!this.groupSelect&&this.pointerForward(),this.pointerDirty=!0},pointerReset(){!this.closeOnSelect||(this.pointer=0,this.$refs.list&&(this.$refs.list.scrollTop=0))},pointerAdjust(){this.pointer>=this.filteredOptions.length-1&&(this.pointer=this.filteredOptions.length?this.filteredOptions.length-1:0),this.filteredOptions.length>0&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerForward()},pointerSet(e){this.pointer=e,this.pointerDirty=!0}}},i0={name:"vue-multiselect",mixins:[n0,r0],props:{name:{type:String,default:""},modelValue:{type:null,default(){return[]}},selectLabel:{type:String,default:"Press enter to select"},selectGroupLabel:{type:String,default:"Press enter to select group"},selectedLabel:{type:String,default:"Selected"},deselectLabel:{type:String,default:"Press enter to remove"},deselectGroupLabel:{type:String,default:"Press enter to deselect group"},showLabels:{type:Boolean,default:!0},limit:{type:Number,default:99999},maxHeight:{type:Number,default:300},limitText:{type:Function,default:e=>`and ${e} more`},loading:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},openDirection:{type:String,default:""},showNoOptions:{type:Boolean,default:!0},showNoResults:{type:Boolean,default:!0},tabindex:{type:Number,default:0}},computed:{isSingleLabelVisible(){return(this.singleValue||this.singleValue===0)&&(!this.isOpen||!this.searchable)&&!this.visibleValues.length},isPlaceholderVisible(){return!this.internalValue.length&&(!this.searchable||!this.isOpen)},visibleValues(){return this.multiple?this.internalValue.slice(0,this.limit):[]},singleValue(){return this.internalValue[0]},deselectLabelText(){return this.showLabels?this.deselectLabel:""},deselectGroupLabelText(){return this.showLabels?this.deselectGroupLabel:""},selectLabelText(){return this.showLabels?this.selectLabel:""},selectGroupLabelText(){return this.showLabels?this.selectGroupLabel:""},selectedLabelText(){return this.showLabels?this.selectedLabel:""},inputStyle(){return this.searchable||this.multiple&&this.modelValue&&this.modelValue.length?this.isOpen?{width:"100%"}:{width:"0",position:"absolute",padding:"0"}:""},contentStyle(){return this.options.length?{display:"inline-block"}:{display:"block"}},isAbove(){return this.openDirection==="above"||this.openDirection==="top"?!0:this.openDirection==="below"||this.openDirection==="bottom"?!1:this.preferredOpenDirection==="above"},showSearchInput(){return this.searchable&&(this.hasSingleSelectedSlot&&(this.visibleSingleValue||this.visibleSingleValue===0)?this.isOpen:!0)}}};const o0={ref:"tags",class:"multiselect__tags"},s0={class:"multiselect__tags-wrap"},a0={class:"multiselect__spinner"},l0={key:0},c0={class:"multiselect__option"},u0={class:"multiselect__option"},f0=Nn("No elements found. Consider changing the search query."),p0={class:"multiselect__option"},d0=Nn("List is empty.");function h0(e,t,n,r,i,o){return Ie(),ke("div",{tabindex:e.searchable?-1:n.tabindex,class:[{"multiselect--active":e.isOpen,"multiselect--disabled":n.disabled,"multiselect--above":o.isAbove},"multiselect"],onFocus:t[14]||(t[14]=s=>e.activate()),onBlur:t[15]||(t[15]=s=>e.searchable?!1:e.deactivate()),onKeydown:[t[16]||(t[16]=Dt(Xe(s=>e.pointerForward(),["self","prevent"]),["down"])),t[17]||(t[17]=Dt(Xe(s=>e.pointerBackward(),["self","prevent"]),["up"]))],onKeypress:t[18]||(t[18]=Dt(Xe(s=>e.addPointerElement(s),["stop","self"]),["enter","tab"])),onKeyup:t[19]||(t[19]=Dt(s=>e.deactivate(),["esc"])),role:"combobox","aria-owns":"listbox-"+e.id},[qe(e.$slots,"caret",{toggle:e.toggle},()=>[he("div",{onMousedown:t[1]||(t[1]=Xe(s=>e.toggle(),["prevent","stop"])),class:"multiselect__select"},null,32)]),qe(e.$slots,"clear",{search:e.search}),he("div",o0,[qe(e.$slots,"selection",{search:e.search,remove:e.removeElement,values:o.visibleValues,isOpen:e.isOpen},()=>[xr(he("div",s0,[(Ie(!0),ke(Ye,null,ko(o.visibleValues,(s,a)=>qe(e.$slots,"tag",{option:s,search:e.search,remove:e.removeElement},()=>[(Ie(),ke("span",{class:"multiselect__tag",key:a},[he("span",{textContent:Jt(e.getOptionLabel(s))},null,8,["textContent"]),he("i",{tabindex:"1",onKeypress:Dt(Xe(l=>e.removeElement(s),["prevent"]),["enter"]),onMousedown:Xe(l=>e.removeElement(s),["prevent"]),class:"multiselect__tag-icon"},null,40,["onKeypress","onMousedown"])]))])),256))],512),[[sr,o.visibleValues.length>0]]),e.internalValue&&e.internalValue.length>n.limit?qe(e.$slots,"limit",{key:0},()=>[he("strong",{class:"multiselect__strong",textContent:Jt(n.limitText(e.internalValue.length-n.limit))},null,8,["textContent"])]):Lt("v-if",!0)]),he(Ni,{name:"multiselect__loading"},{default:qt(()=>[qe(e.$slots,"loading",{},()=>[xr(he("div",a0,null,512),[[sr,n.loading]])])]),_:3}),e.searchable?(Ie(),ke("input",{key:0,ref:"search",name:n.name,id:e.id,type:"text",autocomplete:"off",spellcheck:"false",placeholder:e.placeholder,style:o.inputStyle,value:e.search,disabled:n.disabled,tabindex:n.tabindex,onInput:t[2]||(t[2]=s=>e.updateSearch(s.target.value)),onFocus:t[3]||(t[3]=Xe(s=>e.activate(),["prevent"])),onBlur:t[4]||(t[4]=Xe(s=>e.deactivate(),["prevent"])),onKeyup:t[5]||(t[5]=Dt(s=>e.deactivate(),["esc"])),onKeydown:[t[6]||(t[6]=Dt(Xe(s=>e.pointerForward(),["prevent"]),["down"])),t[7]||(t[7]=Dt(Xe(s=>e.pointerBackward(),["prevent"]),["up"])),t[9]||(t[9]=Dt(Xe(s=>e.removeLastElement(),["stop"]),["delete"]))],onKeypress:t[8]||(t[8]=Dt(Xe(s=>e.addPointerElement(s),["prevent","stop","self"]),["enter"])),class:"multiselect__input","aria-controls":"listbox-"+e.id},null,44,["name","id","placeholder","value","disabled","tabindex","aria-controls"])):Lt("v-if",!0),o.isSingleLabelVisible?(Ie(),ke("span",{key:1,class:"multiselect__single",onMousedown:t[10]||(t[10]=Xe((...s)=>e.toggle&&e.toggle(...s),["prevent"]))},[qe(e.$slots,"singleLabel",{option:o.singleValue},()=>[Nn(Jt(e.currentOptionLabel),1)])],32)):Lt("v-if",!0),o.isPlaceholderVisible?(Ie(),ke("span",{key:2,class:"multiselect__placeholder",onMousedown:t[11]||(t[11]=Xe((...s)=>e.toggle&&e.toggle(...s),["prevent"]))},[qe(e.$slots,"placeholder",{},()=>[Nn(Jt(e.placeholder),1)])],32)):Lt("v-if",!0)],512),he(Ni,{name:"multiselect"},{default:qt(()=>[xr(he("div",{class:"multiselect__content-wrapper",onFocus:t[12]||(t[12]=(...s)=>e.activate&&e.activate(...s)),tabindex:"-1",onMousedown:t[13]||(t[13]=Xe(()=>{},["prevent"])),style:{maxHeight:e.optimizedHeight+"px"},ref:"list"},[he("ul",{class:"multiselect__content",style:o.contentStyle,role:"listbox",id:"listbox-"+e.id},[qe(e.$slots,"beforeList"),e.multiple&&e.max===e.internalValue.length?(Ie(),ke("li",l0,[he("span",c0,[qe(e.$slots,"maxElements",{},()=>[Nn("Maximum of "+Jt(e.max)+" options selected. First remove a selected option to select another.",1)])])])):Lt("v-if",!0),!e.max||e.internalValue.length<e.max?(Ie(!0),ke(Ye,{key:1},ko(e.filteredOptions,(s,a)=>(Ie(),ke("li",{class:"multiselect__element",key:a,id:e.id+"-"+a,role:s&&(s.$isLabel||s.$isDisabled)?null:"option"},[s&&(s.$isLabel||s.$isDisabled)?Lt("v-if",!0):(Ie(),ke("span",{key:0,class:[e.optionHighlight(a,s),"multiselect__option"],onClick:Xe(l=>e.select(s),["stop"]),onMouseenter:Xe(l=>e.pointerSet(a),["self"]),"data-select":s&&s.isTag?e.tagPlaceholder:o.selectLabelText,"data-selected":o.selectedLabelText,"data-deselect":o.deselectLabelText},[qe(e.$slots,"option",{option:s,search:e.search,index:a},()=>[he("span",null,Jt(e.getOptionLabel(s)),1)])],42,["onClick","onMouseenter","data-select","data-selected","data-deselect"])),s&&(s.$isLabel||s.$isDisabled)?(Ie(),ke("span",{key:1,"data-select":e.groupSelect&&o.selectGroupLabelText,"data-deselect":e.groupSelect&&o.deselectGroupLabelText,class:[e.groupHighlight(a,s),"multiselect__option"],onMouseenter:Xe(l=>e.groupSelect&&e.pointerSet(a),["self"]),onMousedown:Xe(l=>e.selectGroup(s),["prevent"])},[qe(e.$slots,"option",{option:s,search:e.search,index:a},()=>[he("span",null,Jt(e.getOptionLabel(s)),1)])],42,["data-select","data-deselect","onMouseenter","onMousedown"])):Lt("v-if",!0)],8,["id","role"]))),128)):Lt("v-if",!0),xr(he("li",null,[he("span",u0,[qe(e.$slots,"noResult",{search:e.search},()=>[f0])])],512),[[sr,n.showNoResults&&e.filteredOptions.length===0&&e.search&&!n.loading]]),xr(he("li",null,[he("span",p0,[qe(e.$slots,"noOptions",{},()=>[d0])])],512),[[sr,n.showNoOptions&&e.options.length===0&&!e.search&&!n.loading]]),qe(e.$slots,"afterList")],12,["id"])],36),[[sr,e.isOpen]])]),_:3})],42,["tabindex","aria-owns"])}i0.render=h0;function Jl(e){return[null,void 0,!1].indexOf(e)!==-1}function gd(e){var t={exports:{}};return e(t,t.exports),t.exports}function vd(e){return(vd=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}var yd=gd(function(e,t){e.exports=function(){var n=["decimals","thousand","mark","prefix","suffix","encoder","decoder","negativeBefore","negative","edit","undo"];function r(m){return m.split("").reverse().join("")}function i(m,b){return m.substring(0,b.length)===b}function o(m,b){return m.slice(-1*b.length)===b}function s(m,b,v){if((m[b]||m[v])&&m[b]===m[v])throw new Error(b)}function a(m){return typeof m=="number"&&isFinite(m)}function l(m,b){return m=m.toString().split("e"),(+((m=(m=Math.round(+(m[0]+"e"+(m[1]?+m[1]+b:b)))).toString().split("e"))[0]+"e"+(m[1]?+m[1]-b:-b))).toFixed(b)}function c(m,b,v,S,g,O,E,$,R,T,P,N){var j,V,F,C=N,w="",M="";return O&&(N=O(N)),!!a(N)&&(m!==!1&&parseFloat(N.toFixed(m))===0&&(N=0),N<0&&(j=!0,N=Math.abs(N)),m!==!1&&(N=l(N,m)),(N=N.toString()).indexOf(".")!==-1?(F=(V=N.split("."))[0],v&&(w=v+V[1])):F=N,b&&(F=r(F).match(/.{1,3}/g),F=r(F.join(r(b)))),j&&$&&(M+=$),S&&(M+=S),j&&R&&(M+=R),M+=F,M+=w,g&&(M+=g),T&&(M=T(M,C)),M)}function u(m,b,v,S,g,O,E,$,R,T,P,N){var j,V="";return P&&(N=P(N)),!(!N||typeof N!="string")&&($&&i(N,$)&&(N=N.replace($,""),j=!0),S&&i(N,S)&&(N=N.replace(S,"")),R&&i(N,R)&&(N=N.replace(R,""),j=!0),g&&o(N,g)&&(N=N.slice(0,-1*g.length)),b&&(N=N.split(b).join("")),v&&(N=N.replace(v,".")),j&&(V+="-"),(V=(V+=N).replace(/[^0-9\.\-.]/g,""))!==""&&(V=Number(V),E&&(V=E(V)),!!a(V)&&V))}function f(m){var b,v,S,g={};for(m.suffix===void 0&&(m.suffix=m.postfix),b=0;b<n.length;b+=1)if((S=m[v=n[b]])===void 0)v!=="negative"||g.negativeBefore?v==="mark"&&g.thousand!=="."?g[v]=".":g[v]=!1:g[v]="-";else if(v==="decimals"){if(!(S>=0&&S<8))throw new Error(v);g[v]=S}else if(v==="encoder"||v==="decoder"||v==="edit"||v==="undo"){if(typeof S!="function")throw new Error(v);g[v]=S}else{if(typeof S!="string")throw new Error(v);g[v]=S}return s(g,"mark","thousand"),s(g,"prefix","negative"),s(g,"prefix","negativeBefore"),g}function p(m,b,v){var S,g=[];for(S=0;S<n.length;S+=1)g.push(m[n[S]]);return g.push(v),b.apply("",g)}function d(m){if(!(this instanceof d))return new d(m);vd(m)==="object"&&(m=f(m),this.to=function(b){return p(m,c,b)},this.from=function(b){return p(m,u,b)})}return d}()});function Kr(e){return(Kr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}var m0=gd(function(e,t){e.exports=function(){var n="14.6.3";function r(y){return Kr(y)==="object"&&typeof y.to=="function"&&typeof y.from=="function"}function i(y){y.parentElement.removeChild(y)}function o(y){return y!=null}function s(y){y.preventDefault()}function a(y){return y.filter(function(h){return!this[h]&&(this[h]=!0)},{})}function l(y,h){return Math.round(y/h)*h}function c(y,h){var U=y.getBoundingClientRect(),Y=y.ownerDocument,Z=Y.documentElement,me=g(Y);return/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)&&(me.x=0),h?U.top+me.y-Z.clientTop:U.left+me.x-Z.clientLeft}function u(y){return typeof y=="number"&&!isNaN(y)&&isFinite(y)}function f(y,h,U){U>0&&(b(y,h),setTimeout(function(){v(y,h)},U))}function p(y){return Math.max(Math.min(y,100),0)}function d(y){return Array.isArray(y)?y:[y]}function m(y){var h=(y=String(y)).split(".");return h.length>1?h[1].length:0}function b(y,h){y.classList&&!/\s/.test(h)?y.classList.add(h):y.className+=" "+h}function v(y,h){y.classList&&!/\s/.test(h)?y.classList.remove(h):y.className=y.className.replace(new RegExp("(^|\\b)"+h.split(" ").join("|")+"(\\b|$)","gi")," ")}function S(y,h){return y.classList?y.classList.contains(h):new RegExp("\\b"+h+"\\b").test(y.className)}function g(y){var h=window.pageXOffset!==void 0,U=(y.compatMode||"")==="CSS1Compat";return{x:h?window.pageXOffset:U?y.documentElement.scrollLeft:y.body.scrollLeft,y:h?window.pageYOffset:U?y.documentElement.scrollTop:y.body.scrollTop}}function O(){return window.navigator.pointerEnabled?{start:"pointerdown",move:"pointermove",end:"pointerup"}:window.navigator.msPointerEnabled?{start:"MSPointerDown",move:"MSPointerMove",end:"MSPointerUp"}:{start:"mousedown touchstart",move:"mousemove touchmove",end:"mouseup touchend"}}function E(){var y=!1;try{var h=Object.defineProperty({},"passive",{get:function(){y=!0}});window.addEventListener("test",null,h)}catch(U){}return y}function $(){return window.CSS&&CSS.supports&&CSS.supports("touch-action","none")}function R(y,h){return 100/(h-y)}function T(y,h,U){return 100*h/(y[U+1]-y[U])}function P(y,h){return T(y,y[0]<0?h+Math.abs(y[0]):h-y[0],0)}function N(y,h){return h*(y[1]-y[0])/100+y[0]}function j(y,h){for(var U=1;y>=h[U];)U+=1;return U}function V(y,h,U){if(U>=y.slice(-1)[0])return 100;var Y=j(U,y),Z=y[Y-1],me=y[Y],Oe=h[Y-1],Fe=h[Y];return Oe+P([Z,me],U)/R(Oe,Fe)}function F(y,h,U){if(U>=100)return y.slice(-1)[0];var Y=j(U,h),Z=y[Y-1],me=y[Y],Oe=h[Y-1];return N([Z,me],(U-Oe)*R(Oe,h[Y]))}function C(y,h,U,Y){if(Y===100)return Y;var Z=j(Y,y),me=y[Z-1],Oe=y[Z];return U?Y-me>(Oe-me)/2?Oe:me:h[Z-1]?y[Z-1]+l(Y-y[Z-1],h[Z-1]):Y}function w(y,h,U){var Y;if(typeof h=="number"&&(h=[h]),!Array.isArray(h))throw new Error("noUiSlider ("+n+"): 'range' contains invalid value.");if(!u(Y=y==="min"?0:y==="max"?100:parseFloat(y))||!u(h[0]))throw new Error("noUiSlider ("+n+"): 'range' value isn't numeric.");U.xPct.push(Y),U.xVal.push(h[0]),Y?U.xSteps.push(!isNaN(h[1])&&h[1]):isNaN(h[1])||(U.xSteps[0]=h[1]),U.xHighestCompleteStep.push(0)}function M(y,h,U){if(h)if(U.xVal[y]!==U.xVal[y+1]){U.xSteps[y]=T([U.xVal[y],U.xVal[y+1]],h,0)/R(U.xPct[y],U.xPct[y+1]);var Y=(U.xVal[y+1]-U.xVal[y])/U.xNumSteps[y],Z=Math.ceil(Number(Y.toFixed(3))-1),me=U.xVal[y]+U.xNumSteps[y]*Z;U.xHighestCompleteStep[y]=me}else U.xSteps[y]=U.xHighestCompleteStep[y]=U.xVal[y]}function L(y,h,U){var Y;this.xPct=[],this.xVal=[],this.xSteps=[U||!1],this.xNumSteps=[!1],this.xHighestCompleteStep=[],this.snap=h;var Z=[];for(Y in y)y.hasOwnProperty(Y)&&Z.push([y[Y],Y]);for(Z.length&&Kr(Z[0][0])==="object"?Z.sort(function(me,Oe){return me[0][0]-Oe[0][0]}):Z.sort(function(me,Oe){return me[0]-Oe[0]}),Y=0;Y<Z.length;Y++)w(Z[Y][1],Z[Y][0],this);for(this.xNumSteps=this.xSteps.slice(0),Y=0;Y<this.xNumSteps.length;Y++)M(Y,this.xNumSteps[Y],this)}L.prototype.getDistance=function(y){var h,U=[];for(h=0;h<this.xNumSteps.length-1;h++){var Y=this.xNumSteps[h];if(Y&&y/Y%1!=0)throw new Error("noUiSlider ("+n+"): 'limit', 'margin' and 'padding' of "+this.xPct[h]+"% range must be divisible by step.");U[h]=T(this.xVal,y,h)}return U},L.prototype.getAbsoluteDistance=function(y,h,U){var Y,Z=0;if(y<this.xPct[this.xPct.length-1])for(;y>this.xPct[Z+1];)Z++;else y===this.xPct[this.xPct.length-1]&&(Z=this.xPct.length-2);U||y!==this.xPct[Z+1]||Z++;var me=1,Oe=h[Z],Fe=0,Le=0,ge=0,te=0;for(Y=U?(y-this.xPct[Z])/(this.xPct[Z+1]-this.xPct[Z]):(this.xPct[Z+1]-y)/(this.xPct[Z+1]-this.xPct[Z]);Oe>0;)Fe=this.xPct[Z+1+te]-this.xPct[Z+te],h[Z+te]*me+100-100*Y>100?(Le=Fe*Y,me=(Oe-100*Y)/h[Z+te],Y=1):(Le=h[Z+te]*Fe/100*me,me=0),U?(ge-=Le,this.xPct.length+te>=1&&te--):(ge+=Le,this.xPct.length-te>=1&&te++),Oe=h[Z+te]*me;return y+ge},L.prototype.toStepping=function(y){return y=V(this.xVal,this.xPct,y)},L.prototype.fromStepping=function(y){return F(this.xVal,this.xPct,y)},L.prototype.getStep=function(y){return y=C(this.xPct,this.xSteps,this.snap,y)},L.prototype.getDefaultStep=function(y,h,U){var Y=j(y,this.xPct);return(y===100||h&&y===this.xPct[Y-1])&&(Y=Math.max(Y-1,1)),(this.xVal[Y]-this.xVal[Y-1])/U},L.prototype.getNearbySteps=function(y){var h=j(y,this.xPct);return{stepBefore:{startValue:this.xVal[h-2],step:this.xNumSteps[h-2],highestStep:this.xHighestCompleteStep[h-2]},thisStep:{startValue:this.xVal[h-1],step:this.xNumSteps[h-1],highestStep:this.xHighestCompleteStep[h-1]},stepAfter:{startValue:this.xVal[h],step:this.xNumSteps[h],highestStep:this.xHighestCompleteStep[h]}}},L.prototype.countStepDecimals=function(){var y=this.xNumSteps.map(m);return Math.max.apply(null,y)},L.prototype.convert=function(y){return this.getStep(this.toStepping(y))};var z={to:function(y){return y!==void 0&&y.toFixed(2)},from:Number},B={target:"target",base:"base",origin:"origin",handle:"handle",handleLower:"handle-lower",handleUpper:"handle-upper",touchArea:"touch-area",horizontal:"horizontal",vertical:"vertical",background:"background",connect:"connect",connects:"connects",ltr:"ltr",rtl:"rtl",textDirectionLtr:"txt-dir-ltr",textDirectionRtl:"txt-dir-rtl",draggable:"draggable",drag:"state-drag",tap:"state-tap",active:"active",tooltip:"tooltip",pips:"pips",pipsHorizontal:"pips-horizontal",pipsVertical:"pips-vertical",marker:"marker",markerHorizontal:"marker-horizontal",markerVertical:"marker-vertical",markerNormal:"marker-normal",markerLarge:"marker-large",markerSub:"marker-sub",value:"value",valueHorizontal:"value-horizontal",valueVertical:"value-vertical",valueNormal:"value-normal",valueLarge:"value-large",valueSub:"value-sub"},K={tooltips:".__tooltips",aria:".__aria"};function G(y){if(r(y))return!0;throw new Error("noUiSlider ("+n+"): 'format' requires 'to' and 'from' methods.")}function de(y,h){if(!u(h))throw new Error("noUiSlider ("+n+"): 'step' is not numeric.");y.singleStep=h}function ce(y,h){if(!u(h))throw new Error("noUiSlider ("+n+"): 'keyboardPageMultiplier' is not numeric.");y.keyboardPageMultiplier=h}function ve(y,h){if(!u(h))throw new Error("noUiSlider ("+n+"): 'keyboardDefaultStep' is not numeric.");y.keyboardDefaultStep=h}function Se(y,h){if(Kr(h)!=="object"||Array.isArray(h))throw new Error("noUiSlider ("+n+"): 'range' is not an object.");if(h.min===void 0||h.max===void 0)throw new Error("noUiSlider ("+n+"): Missing 'min' or 'max' in 'range'.");if(h.min===h.max)throw new Error("noUiSlider ("+n+"): 'range' 'min' and 'max' cannot be equal.");y.spectrum=new L(h,y.snap,y.singleStep)}function Re(y,h){if(h=d(h),!Array.isArray(h)||!h.length)throw new Error("noUiSlider ("+n+"): 'start' option is incorrect.");y.handles=h.length,y.start=h}function Je(y,h){if(y.snap=h,typeof h!="boolean")throw new Error("noUiSlider ("+n+"): 'snap' option must be a boolean.")}function Qe(y,h){if(y.animate=h,typeof h!="boolean")throw new Error("noUiSlider ("+n+"): 'animate' option must be a boolean.")}function ft(y,h){if(y.animationDuration=h,typeof h!="number")throw new Error("noUiSlider ("+n+"): 'animationDuration' option must be a number.")}function kt(y,h){var U,Y=[!1];if(h==="lower"?h=[!0,!1]:h==="upper"&&(h=[!1,!0]),h===!0||h===!1){for(U=1;U<y.handles;U++)Y.push(h);Y.push(!1)}else{if(!Array.isArray(h)||!h.length||h.length!==y.handles+1)throw new Error("noUiSlider ("+n+"): 'connect' option doesn't match handle count.");Y=h}y.connect=Y}function Ve(y,h){switch(h){case"horizontal":y.ort=0;break;case"vertical":y.ort=1;break;default:throw new Error("noUiSlider ("+n+"): 'orientation' option is invalid.")}}function ze(y,h){if(!u(h))throw new Error("noUiSlider ("+n+"): 'margin' option must be numeric.");h!==0&&(y.margin=y.spectrum.getDistance(h))}function vt(y,h){if(!u(h))throw new Error("noUiSlider ("+n+"): 'limit' option must be numeric.");if(y.limit=y.spectrum.getDistance(h),!y.limit||y.handles<2)throw new Error("noUiSlider ("+n+"): 'limit' option is only supported on linear sliders with 2 or more handles.")}function x(y,h){var U;if(!u(h)&&!Array.isArray(h))throw new Error("noUiSlider ("+n+"): 'padding' option must be numeric or array of exactly 2 numbers.");if(Array.isArray(h)&&h.length!==2&&!u(h[0])&&!u(h[1]))throw new Error("noUiSlider ("+n+"): 'padding' option must be numeric or array of exactly 2 numbers.");if(h!==0){for(Array.isArray(h)||(h=[h,h]),y.padding=[y.spectrum.getDistance(h[0]),y.spectrum.getDistance(h[1])],U=0;U<y.spectrum.xNumSteps.length-1;U++)if(y.padding[0][U]<0||y.padding[1][U]<0)throw new Error("noUiSlider ("+n+"): 'padding' option must be a positive number(s).");var Y=h[0]+h[1],Z=y.spectrum.xVal[0];if(Y/(y.spectrum.xVal[y.spectrum.xVal.length-1]-Z)>1)throw new Error("noUiSlider ("+n+"): 'padding' option must not exceed 100% of the range.")}}function I(y,h){switch(h){case"ltr":y.dir=0;break;case"rtl":y.dir=1;break;default:throw new Error("noUiSlider ("+n+"): 'direction' option was not recognized.")}}function k(y,h){if(typeof h!="string")throw new Error("noUiSlider ("+n+"): 'behaviour' must be a string containing options.");var U=h.indexOf("tap")>=0,Y=h.indexOf("drag")>=0,Z=h.indexOf("fixed")>=0,me=h.indexOf("snap")>=0,Oe=h.indexOf("hover")>=0,Fe=h.indexOf("unconstrained")>=0;if(Z){if(y.handles!==2)throw new Error("noUiSlider ("+n+"): 'fixed' behaviour must be used with 2 handles");ze(y,y.start[1]-y.start[0])}if(Fe&&(y.margin||y.limit))throw new Error("noUiSlider ("+n+"): 'unconstrained' behaviour cannot be used with margin or limit");y.events={tap:U||me,drag:Y,fixed:Z,snap:me,hover:Oe,unconstrained:Fe}}function X(y,h){if(h!==!1)if(h===!0){y.tooltips=[];for(var U=0;U<y.handles;U++)y.tooltips.push(!0)}else{if(y.tooltips=d(h),y.tooltips.length!==y.handles)throw new Error("noUiSlider ("+n+"): must pass a formatter for all handles.");y.tooltips.forEach(function(Y){if(typeof Y!="boolean"&&(Kr(Y)!=="object"||typeof Y.to!="function"))throw new Error("noUiSlider ("+n+"): 'tooltips' must be passed a formatter or 'false'.")})}}function W(y,h){y.ariaFormat=h,G(h)}function q(y,h){y.format=h,G(h)}function ne(y,h){if(y.keyboardSupport=h,typeof h!="boolean")throw new Error("noUiSlider ("+n+"): 'keyboardSupport' option must be a boolean.")}function _(y,h){y.documentElement=h}function ee(y,h){if(typeof h!="string"&&h!==!1)throw new Error("noUiSlider ("+n+"): 'cssPrefix' must be a string or `false`.");y.cssPrefix=h}function Q(y,h){if(Kr(h)!=="object")throw new Error("noUiSlider ("+n+"): 'cssClasses' must be an object.");if(typeof y.cssPrefix=="string")for(var U in y.cssClasses={},h)h.hasOwnProperty(U)&&(y.cssClasses[U]=y.cssPrefix+h[U]);else y.cssClasses=h}function fe(y){var h={margin:0,limit:0,padding:0,animate:!0,animationDuration:300,ariaFormat:z,format:z},U={step:{r:!1,t:de},keyboardPageMultiplier:{r:!1,t:ce},keyboardDefaultStep:{r:!1,t:ve},start:{r:!0,t:Re},connect:{r:!0,t:kt},direction:{r:!0,t:I},snap:{r:!1,t:Je},animate:{r:!1,t:Qe},animationDuration:{r:!1,t:ft},range:{r:!0,t:Se},orientation:{r:!1,t:Ve},margin:{r:!1,t:ze},limit:{r:!1,t:vt},padding:{r:!1,t:x},behaviour:{r:!0,t:k},ariaFormat:{r:!1,t:W},format:{r:!1,t:q},tooltips:{r:!1,t:X},keyboardSupport:{r:!0,t:ne},documentElement:{r:!1,t:_},cssPrefix:{r:!0,t:ee},cssClasses:{r:!0,t:Q}},Y={connect:!1,direction:"ltr",behaviour:"tap",orientation:"horizontal",keyboardSupport:!0,cssPrefix:"noUi-",cssClasses:B,keyboardPageMultiplier:5,keyboardDefaultStep:10};y.format&&!y.ariaFormat&&(y.ariaFormat=y.format),Object.keys(U).forEach(function(Le){if(!o(y[Le])&&Y[Le]===void 0){if(U[Le].r)throw new Error("noUiSlider ("+n+"): '"+Le+"' is required.");return!0}U[Le].t(h,o(y[Le])?y[Le]:Y[Le])}),h.pips=y.pips;var Z=document.createElement("div"),me=Z.style.msTransform!==void 0,Oe=Z.style.transform!==void 0;h.transformRule=Oe?"transform":me?"msTransform":"webkitTransform";var Fe=[["left","top"],["right","bottom"]];return h.style=Fe[h.dir][h.ort],h}function le(y,h,U){var Y,Z,me,Oe,Fe,Le,ge=O(),te=$()&&E(),oe=y,ae=h.spectrum,we=[],Pe=[],yt=[],qr=0,bt={},gr=y.ownerDocument,so=h.documentElement||gr.documentElement,ao=gr.body,uh=-1,lo=0,Bs=1,Hs=2,fh=gr.dir==="rtl"||h.ort===1?0:100;function an(A,D){var H=gr.createElement("div");return D&&b(H,D),A.appendChild(H),H}function ph(A,D){var H=an(A,h.cssClasses.origin),J=an(H,h.cssClasses.handle);return an(J,h.cssClasses.touchArea),J.setAttribute("data-handle",D),h.keyboardSupport&&(J.setAttribute("tabindex","0"),J.addEventListener("keydown",function(re){return xh(re,D)})),J.setAttribute("role","slider"),J.setAttribute("aria-orientation",h.ort?"vertical":"horizontal"),D===0?b(J,h.cssClasses.handleLower):D===h.handles-1&&b(J,h.cssClasses.handleUpper),H}function mc(A,D){return!!D&&an(A,h.cssClasses.connect)}function dh(A,D){var H=an(D,h.cssClasses.connects);Z=[],(me=[]).push(mc(H,A[0]));for(var J=0;J<h.handles;J++)Z.push(ph(D,J)),yt[J]=J,me.push(mc(H,A[J+1]))}function hh(A){return b(A,h.cssClasses.target),h.dir===0?b(A,h.cssClasses.ltr):b(A,h.cssClasses.rtl),h.ort===0?b(A,h.cssClasses.horizontal):b(A,h.cssClasses.vertical),b(A,getComputedStyle(A).direction==="rtl"?h.cssClasses.textDirectionRtl:h.cssClasses.textDirectionLtr),an(A,h.cssClasses.base)}function mh(A,D){return!!h.tooltips[D]&&an(A.firstChild,h.cssClasses.tooltip)}function gc(){return oe.hasAttribute("disabled")}function ks(A){return Z[A].hasAttribute("disabled")}function Us(){Fe&&(_r("update"+K.tooltips),Fe.forEach(function(A){A&&i(A)}),Fe=null)}function vc(){Us(),Fe=Z.map(mh),Gs("update"+K.tooltips,function(A,D,H){if(Fe[D]){var J=A[D];h.tooltips[D]!==!0&&(J=h.tooltips[D].to(H[D])),Fe[D].innerHTML=J}})}function gh(){_r("update"+K.aria),Gs("update"+K.aria,function(A,D,H,J,re){yt.forEach(function(ie){var se=Z[ie],$e=co(Pe,ie,0,!0,!0,!0),De=co(Pe,ie,100,!0,!0,!0),Ue=re[ie],Ae=h.ariaFormat.to(H[ie]);$e=ae.fromStepping($e).toFixed(1),De=ae.fromStepping(De).toFixed(1),Ue=ae.fromStepping(Ue).toFixed(1),se.children[0].setAttribute("aria-valuemin",$e),se.children[0].setAttribute("aria-valuemax",De),se.children[0].setAttribute("aria-valuenow",Ue),se.children[0].setAttribute("aria-valuetext",Ae)})})}function vh(A,D,H){if(A==="range"||A==="steps")return ae.xVal;if(A==="count"){if(D<2)throw new Error("noUiSlider ("+n+"): 'values' (>= 2) required for mode 'count'.");var J=D-1,re=100/J;for(D=[];J--;)D[J]=J*re;D.push(100),A="positions"}return A==="positions"?D.map(function(ie){return ae.fromStepping(H?ae.getStep(ie):ie)}):A==="values"?H?D.map(function(ie){return ae.fromStepping(ae.getStep(ae.toStepping(ie)))}):D:void 0}function yh(A,D,H){function J(Ae,Ke){return(Ae+Ke).toFixed(7)/1}var re={},ie=ae.xVal[0],se=ae.xVal[ae.xVal.length-1],$e=!1,De=!1,Ue=0;return(H=a(H.slice().sort(function(Ae,Ke){return Ae-Ke})))[0]!==ie&&(H.unshift(ie),$e=!0),H[H.length-1]!==se&&(H.push(se),De=!0),H.forEach(function(Ae,Ke){var rt,We,yr,ei,Ut,xc,Qs,Cc,Mc,Ac,fo=Ae,br=H[Ke+1],Nc=D==="steps";if(Nc&&(rt=ae.xNumSteps[Ke]),rt||(rt=br-fo),fo!==!1)for(br===void 0&&(br=fo),rt=Math.max(rt,1e-7),We=fo;We<=br;We=J(We,rt)){for(Cc=(Ut=(ei=ae.toStepping(We))-Ue)/A,Ac=Ut/(Mc=Math.round(Cc)),yr=1;yr<=Mc;yr+=1)re[(xc=Ue+yr*Ac).toFixed(5)]=[ae.fromStepping(xc),0];Qs=H.indexOf(We)>-1?Bs:Nc?Hs:lo,!Ke&&$e&&We!==br&&(Qs=0),We===br&&De||(re[ei.toFixed(5)]=[We,Qs]),Ue=ei}}),re}function bh(A,D,H){var J=gr.createElement("div"),re=[];re[lo]=h.cssClasses.valueNormal,re[Bs]=h.cssClasses.valueLarge,re[Hs]=h.cssClasses.valueSub;var ie=[];ie[lo]=h.cssClasses.markerNormal,ie[Bs]=h.cssClasses.markerLarge,ie[Hs]=h.cssClasses.markerSub;var se=[h.cssClasses.valueHorizontal,h.cssClasses.valueVertical],$e=[h.cssClasses.markerHorizontal,h.cssClasses.markerVertical];function De(Ae,Ke){var rt=Ke===h.cssClasses.value,We=rt?re:ie;return Ke+" "+(rt?se:$e)[h.ort]+" "+We[Ae]}function Ue(Ae,Ke,rt){if((rt=D?D(Ke,rt):rt)!==uh){var We=an(J,!1);We.className=De(rt,h.cssClasses.marker),We.style[h.style]=Ae+"%",rt>lo&&((We=an(J,!1)).className=De(rt,h.cssClasses.value),We.setAttribute("data-value",Ke),We.style[h.style]=Ae+"%",We.innerHTML=H.to(Ke))}}return b(J,h.cssClasses.pips),b(J,h.ort===0?h.cssClasses.pipsHorizontal:h.cssClasses.pipsVertical),Object.keys(A).forEach(function(Ae){Ue(Ae,A[Ae][0],A[Ae][1])}),J}function Ks(){Oe&&(i(Oe),Oe=null)}function Ws(A){Ks();var D=A.mode,H=A.density||1,J=A.filter||!1,re=yh(H,D,vh(D,A.values||!1,A.stepped||!1)),ie=A.format||{to:Math.round};return Oe=oe.appendChild(bh(re,J,ie))}function yc(){var A=Y.getBoundingClientRect(),D="offset"+["Width","Height"][h.ort];return h.ort===0?A.width||Y[D]:A.height||Y[D]}function kn(A,D,H,J){var re=function(se){return!!(se=Sh(se,J.pageOffset,J.target||D))&&!(gc()&&!J.doNotReject)&&!(S(oe,h.cssClasses.tap)&&!J.doNotReject)&&!(A===ge.start&&se.buttons!==void 0&&se.buttons>1)&&(!J.hover||!se.buttons)&&(te||se.preventDefault(),se.calcPoint=se.points[h.ort],void H(se,J))},ie=[];return A.split(" ").forEach(function(se){D.addEventListener(se,re,!!te&&{passive:!0}),ie.push([se,re])}),ie}function Sh(A,D,H){var J,re,ie=A.type.indexOf("touch")===0,se=A.type.indexOf("mouse")===0,$e=A.type.indexOf("pointer")===0;if(A.type.indexOf("MSPointer")===0&&($e=!0),A.type==="mousedown"&&!A.buttons&&!A.touches)return!1;if(ie){var De=function(Ke){return Ke.target===H||H.contains(Ke.target)||Ke.target.shadowRoot&&Ke.target.shadowRoot.contains(H)};if(A.type==="touchstart"){var Ue=Array.prototype.filter.call(A.touches,De);if(Ue.length>1)return!1;J=Ue[0].pageX,re=Ue[0].pageY}else{var Ae=Array.prototype.find.call(A.changedTouches,De);if(!Ae)return!1;J=Ae.pageX,re=Ae.pageY}}return D=D||g(gr),(se||$e)&&(J=A.clientX+D.x,re=A.clientY+D.y),A.pageOffset=D,A.points=[J,re],A.cursor=se||$e,A}function bc(A){var D=100*(A-c(Y,h.ort))/yc();return D=p(D),h.dir?100-D:D}function Eh(A){var D=100,H=!1;return Z.forEach(function(J,re){if(!ks(re)){var ie=Pe[re],se=Math.abs(ie-A);(se<D||se<=D&&A>ie||se===100&&D===100)&&(H=re,D=se)}}),H}function Oh(A,D){A.type==="mouseout"&&A.target.nodeName==="HTML"&&A.relatedTarget===null&&Ys(A,D)}function wh(A,D){if(navigator.appVersion.indexOf("MSIE 9")===-1&&A.buttons===0&&D.buttonsProperty!==0)return Ys(A,D);var H=(h.dir?-1:1)*(A.calcPoint-D.startCalcPoint);Sc(H>0,100*H/D.baseSize,D.locations,D.handleNumbers)}function Ys(A,D){D.handle&&(v(D.handle,h.cssClasses.active),qr-=1),D.listeners.forEach(function(H){so.removeEventListener(H[0],H[1])}),qr===0&&(v(oe,h.cssClasses.drag),Js(),A.cursor&&(ao.style.cursor="",ao.removeEventListener("selectstart",s))),D.handleNumbers.forEach(function(H){_e("change",H),_e("set",H),_e("end",H)})}function Xs(A,D){if(D.handleNumbers.some(ks))return!1;var H;D.handleNumbers.length===1&&(H=Z[D.handleNumbers[0]].children[0],qr+=1,b(H,h.cssClasses.active)),A.stopPropagation();var J=[],re=kn(ge.move,so,wh,{target:A.target,handle:H,listeners:J,startCalcPoint:A.calcPoint,baseSize:yc(),pageOffset:A.pageOffset,handleNumbers:D.handleNumbers,buttonsProperty:A.buttons,locations:Pe.slice()}),ie=kn(ge.end,so,Ys,{target:A.target,handle:H,listeners:J,doNotReject:!0,handleNumbers:D.handleNumbers}),se=kn("mouseout",so,Oh,{target:A.target,handle:H,listeners:J,doNotReject:!0,handleNumbers:D.handleNumbers});J.push.apply(J,re.concat(ie,se)),A.cursor&&(ao.style.cursor=getComputedStyle(A.target).cursor,Z.length>1&&b(oe,h.cssClasses.drag),ao.addEventListener("selectstart",s,!1)),D.handleNumbers.forEach(function($e){_e("start",$e)})}function Th(A){A.stopPropagation();var D=bc(A.calcPoint),H=Eh(D);if(H===!1)return!1;h.events.snap||f(oe,h.cssClasses.tap,h.animationDuration),vr(H,D,!0,!0),Js(),_e("slide",H,!0),_e("update",H,!0),_e("change",H,!0),_e("set",H,!0),h.events.snap&&Xs(A,{handleNumbers:[H]})}function Ph(A){var D=bc(A.calcPoint),H=ae.getStep(D),J=ae.fromStepping(H);Object.keys(bt).forEach(function(re){re.split(".")[0]==="hover"&&bt[re].forEach(function(ie){ie.call(Le,J)})})}function xh(A,D){if(gc()||ks(D))return!1;var H=["Left","Right"],J=["Down","Up"],re=["PageDown","PageUp"],ie=["Home","End"];h.dir&&!h.ort?H.reverse():h.ort&&!h.dir&&(J.reverse(),re.reverse());var se,$e=A.key.replace("Arrow",""),De=$e===re[0],Ue=$e===re[1],Ae=$e===J[0]||$e===H[0]||De,Ke=$e===J[1]||$e===H[1]||Ue,rt=$e===ie[0],We=$e===ie[1];if(!(Ae||Ke||rt||We))return!0;if(A.preventDefault(),Ke||Ae){var yr=h.keyboardPageMultiplier,ei=Ae?0:1,Ut=Pc(D)[ei];if(Ut===null)return!1;Ut===!1&&(Ut=ae.getDefaultStep(Pe[D],Ae,h.keyboardDefaultStep)),(Ue||De)&&(Ut*=yr),Ut=Math.max(Ut,1e-7),Ut*=Ae?-1:1,se=we[D]+Ut}else se=We?h.spectrum.xVal[h.spectrum.xVal.length-1]:h.spectrum.xVal[0];return vr(D,ae.toStepping(se),!0,!0),_e("slide",D),_e("update",D),_e("change",D),_e("set",D),!1}function Ch(A){A.fixed||Z.forEach(function(D,H){kn(ge.start,D.children[0],Xs,{handleNumbers:[H]})}),A.tap&&kn(ge.start,Y,Th,{}),A.hover&&kn(ge.move,Y,Ph,{hover:!0}),A.drag&&me.forEach(function(D,H){if(D!==!1&&H!==0&&H!==me.length-1){var J=Z[H-1],re=Z[H],ie=[D];b(D,h.cssClasses.draggable),A.fixed&&(ie.push(J.children[0]),ie.push(re.children[0])),ie.forEach(function(se){kn(ge.start,se,Xs,{handles:[J,re],handleNumbers:[H-1,H]})})}})}function Gs(A,D){bt[A]=bt[A]||[],bt[A].push(D),A.split(".")[0]==="update"&&Z.forEach(function(H,J){_e("update",J)})}function Mh(A){return A===K.aria||A===K.tooltips}function _r(A){var D=A&&A.split(".")[0],H=D?A.substring(D.length):A;Object.keys(bt).forEach(function(J){var re=J.split(".")[0],ie=J.substring(re.length);D&&D!==re||H&&H!==ie||Mh(ie)&&H!==ie||delete bt[J]})}function _e(A,D,H){Object.keys(bt).forEach(function(J){var re=J.split(".")[0];A===re&&bt[J].forEach(function(ie){ie.call(Le,we.map(h.format.to),D,we.slice(),H||!1,Pe.slice(),Le)})})}function co(A,D,H,J,re,ie){var se;return Z.length>1&&!h.events.unconstrained&&(J&&D>0&&(se=ae.getAbsoluteDistance(A[D-1],h.margin,0),H=Math.max(H,se)),re&&D<Z.length-1&&(se=ae.getAbsoluteDistance(A[D+1],h.margin,1),H=Math.min(H,se))),Z.length>1&&h.limit&&(J&&D>0&&(se=ae.getAbsoluteDistance(A[D-1],h.limit,0),H=Math.min(H,se)),re&&D<Z.length-1&&(se=ae.getAbsoluteDistance(A[D+1],h.limit,1),H=Math.max(H,se))),h.padding&&(D===0&&(se=ae.getAbsoluteDistance(0,h.padding[0],0),H=Math.max(H,se)),D===Z.length-1&&(se=ae.getAbsoluteDistance(100,h.padding[1],1),H=Math.min(H,se))),!((H=p(H=ae.getStep(H)))===A[D]&&!ie)&&H}function Zs(A,D){var H=h.ort;return(H?D:A)+", "+(H?A:D)}function Sc(A,D,H,J){var re=H.slice(),ie=[!A,A],se=[A,!A];J=J.slice(),A&&J.reverse(),J.length>1?J.forEach(function(De,Ue){var Ae=co(re,De,re[De]+D,ie[Ue],se[Ue],!1);Ae===!1?D=0:(D=Ae-re[De],re[De]=Ae)}):ie=se=[!0];var $e=!1;J.forEach(function(De,Ue){$e=vr(De,H[De]+D,ie[Ue],se[Ue])||$e}),$e&&J.forEach(function(De){_e("update",De),_e("slide",De)})}function Ec(A,D){return h.dir?100-A-D:A}function Ah(A,D){Pe[A]=D,we[A]=ae.fromStepping(D);var H="translate("+Zs(10*(Ec(D,0)-fh)+"%","0")+")";Z[A].style[h.transformRule]=H,Oc(A),Oc(A+1)}function Js(){yt.forEach(function(A){var D=Pe[A]>50?-1:1,H=3+(Z.length+D*A);Z[A].style.zIndex=H})}function vr(A,D,H,J,re){return re||(D=co(Pe,A,D,H,J,!1)),D!==!1&&(Ah(A,D),!0)}function Oc(A){if(me[A]){var D=0,H=100;A!==0&&(D=Pe[A-1]),A!==me.length-1&&(H=Pe[A]);var J=H-D,re="translate("+Zs(Ec(D,J)+"%","0")+")",ie="scale("+Zs(J/100,"1")+")";me[A].style[h.transformRule]=re+" "+ie}}function wc(A,D){return A===null||A===!1||A===void 0?Pe[D]:(typeof A=="number"&&(A=String(A)),A=h.format.from(A),(A=ae.toStepping(A))===!1||isNaN(A)?Pe[D]:A)}function uo(A,D,H){var J=d(A),re=Pe[0]===void 0;D=D===void 0||!!D,h.animate&&!re&&f(oe,h.cssClasses.tap,h.animationDuration),yt.forEach(function(se){vr(se,wc(J[se],se),!0,!1,H)});for(var ie=yt.length===1?0:1;ie<yt.length;++ie)yt.forEach(function(se){vr(se,Pe[se],!0,!0,H)});Js(),yt.forEach(function(se){_e("update",se),J[se]!==null&&D&&_e("set",se)})}function Nh(A){uo(h.start,A)}function Rh(A,D,H,J){if(!((A=Number(A))>=0&&A<yt.length))throw new Error("noUiSlider ("+n+"): invalid handle number, got: "+A);vr(A,wc(D,A),!0,!0,J),_e("update",A),H&&_e("set",A)}function Tc(){var A=we.map(h.format.to);return A.length===1?A[0]:A}function Ih(){for(var A in _r(K.aria),_r(K.tooltips),h.cssClasses)h.cssClasses.hasOwnProperty(A)&&v(oe,h.cssClasses[A]);for(;oe.firstChild;)oe.removeChild(oe.firstChild);delete oe.noUiSlider}function Pc(A){var D=Pe[A],H=ae.getNearbySteps(D),J=we[A],re=H.thisStep.step,ie=null;if(h.snap)return[J-H.stepBefore.startValue||null,H.stepAfter.startValue-J||null];re!==!1&&J+re>H.stepAfter.startValue&&(re=H.stepAfter.startValue-J),ie=J>H.thisStep.startValue?H.thisStep.step:H.stepBefore.step!==!1&&J-H.stepBefore.highestStep,D===100?re=null:D===0&&(ie=null);var se=ae.countStepDecimals();return re!==null&&re!==!1&&(re=Number(re.toFixed(se))),ie!==null&&ie!==!1&&(ie=Number(ie.toFixed(se))),[ie,re]}function $h(){return yt.map(Pc)}function Lh(A,D){var H=Tc(),J=["margin","limit","padding","range","animate","snap","step","format","pips","tooltips"];J.forEach(function(ie){A[ie]!==void 0&&(U[ie]=A[ie])});var re=fe(U);J.forEach(function(ie){A[ie]!==void 0&&(h[ie]=re[ie])}),ae=re.spectrum,h.margin=re.margin,h.limit=re.limit,h.padding=re.padding,h.pips?Ws(h.pips):Ks(),h.tooltips?vc():Us(),Pe=[],uo(A.start||H,D)}function Dh(){Y=hh(oe),dh(h.connect,Y),Ch(h.events),uo(h.start),h.pips&&Ws(h.pips),h.tooltips&&vc(),gh()}return Dh(),Le={destroy:Ih,steps:$h,on:Gs,off:_r,get:Tc,set:uo,setHandle:Rh,reset:Nh,__moveHandles:function(A,D,H){Sc(A,D,Pe,H)},options:U,updateOptions:Lh,target:oe,removePips:Ks,removeTooltips:Us,getTooltips:function(){return Fe},getOrigins:function(){return Z},pips:Ws}}function pe(y,h){if(!y||!y.nodeName)throw new Error("noUiSlider ("+n+"): create requires a single element, got: "+y);if(y.noUiSlider)throw new Error("noUiSlider ("+n+"): Slider was already initialized.");var U=le(y,fe(h),h);return y.noUiSlider=U,U}return{__spectrum:L,version:n,cssClasses:B,create:pe}}()}),bd={name:"Slider",emits:["input","update:modelValue","update","change"],props:{value:{validator:function(e){return t=>typeof t=="number"||t instanceof Array||t==null||t===!1},required:!1},modelValue:{validator:function(e){return t=>typeof t=="number"||t instanceof Array||t==null||t===!1},required:!1},id:{type:[String,Number],required:!1,default:"slider"},disabled:{type:Boolean,required:!1,default:!1},min:{type:Number,required:!1,default:0},max:{type:Number,required:!1,default:100},step:{type:Number,required:!1,default:1},orientation:{type:String,required:!1,default:"horizontal"},direction:{type:String,required:!1,default:"ltr"},tooltips:{type:Boolean,required:!1,default:!0},options:{type:Object,required:!1,default:()=>({})},merge:{type:Number,required:!1,default:-1},height:{type:String,required:!1,default:"300px"},format:{type:[Object,Function,Boolean],required:!1,default:null}},setup(e,t){const n=function(s,a,l){var c=ci(s),u=c.value,f=c.modelValue,p=a.expose!==void 0?f:u,d=Pn(p.value);if(Jl(p.value))throw new Error("Slider v-model must be a Number or Array");if(Array.isArray(p.value)&&p.value.length==0)throw new Error("Slider v-model must not be an empty array");return{value:p,initialValue:d}}(e,t),r=function(s,a,l){var c=ci(s),u=c.orientation,f=c.height;return{style:xn(function(){return u.value=="vertical"?{height:f.value}:[]})}}(e),i=function(s,a,l){var c=ci(s),u=c.format,f=c.step,p=l.value,d=xn(function(){return u&&u.value?typeof u.value=="function"?{to:u.value}:yd(Object.assign({},u.value)):yd({decimals:f.value>=0?0:2})});return{tooltipsFormat:xn(function(){return Array.isArray(p.value)?p.value.map(function(m){return d.value}):d.value}),tooltipsMerge:function(m,b,v){var S=getComputedStyle(m).direction==="rtl",g=m.noUiSlider.options.direction==="rtl",O=m.noUiSlider.options.orientation==="vertical",E=m.noUiSlider.getTooltips(),$=m.noUiSlider.getOrigins();E.forEach(function(R,T){R&&$[T].appendChild(R)}),m.noUiSlider.on("update",function(R,T,P,N,j){var V=[[]],F=[[]],C=[[]],w=0;E[0]&&(V[0][0]=0,F[0][0]=j[0],C[0][0]=d.value.to(parseFloat(R[0])));for(var M=1;M<j.length;M++)(!E[M]||j[M]-j[M-1]>b)&&(V[++w]=[],C[w]=[],F[w]=[]),E[M]&&(V[w].push(M),C[w].push(d.value.to(parseFloat(R[M]))),F[w].push(j[M]));V.forEach(function(L,z){for(var B=L.length,K=0;K<B;K++){var G=L[K];if(K===B-1){var de=0;F[z].forEach(function(Re){de+=1e3-10*Re});var ce=O?"bottom":"right",ve=g?0:B-1,Se=1e3-10*F[z][ve];de=(S&&!O?100:0)+de/B-Se,E[G].innerHTML=C[z].join(v),E[G].style.display="block",E[G].style[ce]=de+"%"}else E[G].style.display="none"}})})}}}(e,0,{value:n.value}),o=function(s,a,l){var c=ci(s),u=c.options,f=c.orientation,p=c.direction,d=c.tooltips,m=c.step,b=c.min,v=c.max,S=c.merge,g=c.format,O=c.id,E=c.disabled,$=l.value,R=l.initialValue,T=l.tooltipsFormat,P=l.tooltipsMerge,N=l.style,j=Pn(null),V=Pn(null),F=Pn(!1),C=xn(function(){var ce={cssPrefix:"slider-",orientation:f.value,direction:p.value,tooltips:!!d.value&&T.value,connect:"lower",start:Jl($.value)?b.value:$.value,range:{min:b.value,max:v.value}};return m.value>0&&(ce.step=m.value),Array.isArray($.value)&&(ce.connect=!0),ce}),w=xn(function(){var ce={id:O.value,style:N.value};return E.value&&(ce.disabled=!0),ce}),M=xn(function(){return Array.isArray($.value)}),L=function(){var ce=V.value.get();return Array.isArray(ce)?ce.map(function(ve){return parseFloat(ve)}):parseFloat(ce)},z=function(ce){var ve=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1];V.value.set(ce,ve)},B=function(ce){a.emit("input",ce),a.emit("update:modelValue",ce),a.emit("update",ce)},K=function(){V.value=m0.create(j.value,Object.assign({},C.value,u.value)),d.value&&M.value&&S.value>=0&&P(j.value,S.value," - "),V.value.on("set",function(ce){a.emit("change",L())}),V.value.on("update",function(ce){F.value&&B(L())}),F.value=!0},G=function(){V.value.off(),V.value.destroy(),V.value=null},de=function(){F.value=!1,G(),K()};return Pr(K),vi(G),lt(M,de,{immediate:!1}),lt(b,de,{immediate:!1}),lt(v,de,{immediate:!1}),lt(m,de,{immediate:!1}),lt(f,de,{immediate:!1}),lt(p,de,{immediate:!1}),lt(d,de,{immediate:!1}),lt(g,de,{immediate:!1,deep:!0}),lt(S,de,{immediate:!1}),lt(u,de,{immediate:!1,deep:!0}),lt($,function(ce){var ve,Se,Re;Jl(ce)?z(b.value,!1):(M.value&&(ve=ce,Se=L(),Re=Se.slice().sort(),ve.length!==Se.length||!ve.slice().sort().every(function(Je,Qe){return Je===Re[Qe]}))||!M.value&&ce!=L())&&z(ce,!1)},{deep:!0}),{slider:j,slider$:V,isRange:M,sliderProps:w,init:K,destroy:G,refresh:de,update:z,reset:function(){B(R.value)}}}(e,t,{value:n.value,initialValue:n.initialValue,tooltipsFormat:i.tooltipsFormat,tooltipsMerge:i.tooltipsMerge,style:r.style});return po(po(po({},r),i),o)}};bd.render=function(e,t,n,r,i,o){return Ie(),ke("div",Ei(e.sliderProps,{ref:"slider"}),null,16)},bd.__file="src/Slider.vue";var Ql={d:(e,t)=>{for(var n in t)Ql.o(t,n)&&!Ql.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},Wr={};Ql.d(Wr,{vX:()=>dr,KV:()=>Sd,_b:()=>Yr,d2:()=>gt,ZP:()=>v0});class gt{static tokenize(t){var n=t.trim(),r=[],i=[[-2,/^([a-zA-Z_$][a-zA-Z_$1-9]*)\(\s*\)/],[-1,/^([a-zA-Z_$][a-zA-Z_$1-9]*)(\()/],[-11,/^([\<]{2}|[\>]{2,3}|[\*]{1,2}|[\?]{1,2}|[\&]{1,2}|[\|]{1,2}|[\=]{2,3}|[\!][\=]{1,2}|[\>\<][\=]|[\+\-\/\%\|\^\>\<\=\,\:\.])/],[-12,/^([\!\~])/],[-4,/^([-+]{0,1}(?:(?:[0-9]+[.][0-9]+)|(?:[0-9]+)))/,f=>parseFloat(f)],[-4,/^'((?:(\\')|[^'])*)'/],[-4,/^"((?:(\\")|[^"])*)"/],[-5,/^([a-zA-Z_$][a-zA-Z_$1-9]*)/],[-6,/^([\(\[\{])/],[-7,/^([\)\]\}])/]],o=0;e:for(;n!=""&&o<99;){n=n.trimLeft(),o++;for(var s=0;s<i.length;s++){let f=i[s],p=f[1];if(p.test(n)){var a=p.exec(n);if(a!=null){let d=a[0],m=a[1],b=d.length;a[2]&&(b-=a[2].length),n=n.substr(b),f[2]&&(m=f[2](m)),r.push([f[0],m]);continue e}}}}let l,c={NaN:[-4,NaN],undefined:[-4,void 0],void:[-12,"void"],typeof:[-12,"typeof"],null:[-4,null],true:[-4,!0],false:[-4,!1]};for(let f=0;f<r.length;f++)if(l=r[f],l[0]==-5&&c.hasOwnProperty(l[1])){let p=c[l[1]];p&&(l[0]=p[0],l[1]=p[1])}let u=[];for(let f=0;f<r.length;f++)l=r[f],l[0]==-6&&u.push(l[1]),l[0]==-7&&u.pop(),l[0]==-5&&u[u.length-1]=="{"&&(l[0]=-4);for(let f=0;f<r.length;f++){l=r[f];let p=f==0?null:r[f-1];l[0]!=-11||l[1]!="-"&&l[1]!="+"||p!=null&&!gt.isOperator(p)&&p[0]!=-6&&p[1]!=","||(l[0]=-12)}return r}static isInfix(t){return t[0]==-11}static isPrefix(t){return t[0]==-12}static isOperator(t){return t[0]==-11||t[0]==-12}static isFunctionCall(t){return t[0]==-1||t[0]==-2}static isOperatorOrFunctionCall(t){return gt.isOperator(t)||gt.isFunctionCall(t)}static isLiteral(t){return t[0]==-4}}const It=class{static getPrecedence(t){if(gt.isFunctionCall(t))return 100;if(gt.isOperator(t))return It.precendenceHash[t[1]]+1;if(gt.isLiteral(t)||t[0]==-5)return 100;throw new Error("Could not get precedence of token:"+JSON.stringify(t))}static isRightAssociative(t){return It.rightAssociative.indexOf(t[1])>-1}static createPrecendenceHash(t){It.precendenceHash===null&&(It.precendenceHash={},It.precendence.forEach(function(n,r){n.forEach?n.forEach(function(i){It.precendenceHash[i]=r}):It.precendenceHash[n]=r}))}static parse(t){It.createPrecendenceHash();let n,r=[],i=0;for(let o=0;o<t.length;o++)n=t[o],o==0||t[o-1],n[0]!=-12||n[1]!="-"&&n[1]!="+"||(n[1]=="+"?t.splice(o,1):n[1]="+/"+n[1]);for(let o=0;o<t.length;o++)if(n=t[o],n[0]==-6){let s=o==0?null:t[o-1],a=s!=null&&!gt.isOperator(s)&&s[0]!=-6&&s[1]!=",";n[1]=="["&&a&&n.push([-11,"."])}for(let o=0;o<t.length&&(i++,!(i>1e3));o++){let s=t[o];if(gt.isOperatorOrFunctionCall(s)){let a,l=It.getPrecedence(s),c=0,u=0;for(c=0;o+c<t.length-1;c++){if(a=t[o+c+1],a[0]==-7){if(u--,u<0)break;continue}if(a[0]==-6){u++;continue}if(u>0)continue;if(a==null){console.log("Warning: ran too long. This should not happen");break}let f=It.getPrecedence(a,t[o+c]);if(!(l<f)){if(l!=f){if(l>f)break;break}if(!It.isRightAssociative(a)||r.indexOf(a)>=0)break}}if(c>0){let f=t.splice(o,1);r.push(f[0]),t.splice(o+c,0,f[0]),o--}}}return t.filter(o=>!(o[1]=="("||o[1]==")"))}};let Yr=It;Sr(Yr,"precendence",[",",["?",":"],"??","||","&&","|","^","&",["==","!=","===","!=="],["<",">","<=",">="],["<<",">>",">>>"],["+","-"],["*","/","%"],"**",["!","~","+/-","+/+","typeof","void"],"."]),Sr(Yr,"rightAssociative",["?",":","**","!","~","+/-","+/+","typeof","void"]),Sr(Yr,"precendenceHash",null);class Ms extends Array{toArray(){return this.slice(0)}}class g0{constructor(t,n){this.a=t,this.b=n}}const Gt=class{static setGlobalContext(t,n="global"){Gt.contexts[n]=t}static getVariable(t,n,r=null){return n.hasOwnProperty(t)?n[t]:r!=null&&Gt.contexts.hasOwnProperty(r)&&Gt.contexts[r].hasOwnProperty(t)?Gt.contexts[r][t]:void 0}static evaluate(t,n={},r=null){let i,o,s=[];for(let a=0;a<t.length;a++){let l=t[a],c=l[0],u=l[1];if(c==-4)s.push(u);else if(gt.isInfix(l)){o=s.pop(),i=s.pop();let f=Gt.ops[u](i,o);s.push(f)}else if(gt.isPrefix(l))s.push(Gt.ops[u](s.pop()));else if(l[0]==-5){if(a<t.length-1&&t[a+1][1]=="."){s.push(l[1]);continue}let f=l[1];s.push(Gt.getVariable(f,n,r))}else if(c==-6)s.push(l);else if(c==-7){let f,p=[];if(i=s.pop(),i[0]==-6?f=i:(f=s.pop(),p=i instanceof Ms?i.toArray():[i]),u=="]"){if(f[1]!="[")throw Error("Bracket mismatch");if(f[2]){let d=f[2],m=d[1];gt.isInfix(d)&&s.push(Gt.ops[m](s.pop(),p[0]))}else s.push(p)}else if(u=="}"){if(f[1]!="{")throw Error("Curly bracket mismatch");let d={};p.forEach(m=>{d[m.a]=m.b}),s.push(d)}}else if(gt.isFunctionCall(l)){let f=l[1],p=Gt.getVariable(f,n,r);if(p==null)throw new Error("Function does not exist: "+f);if(l[0]==-2)s.push(p());else{let d=s.pop(),m=[];d instanceof Ms?m=d:m.push(d),s.push(p(...m))}}}return s[0]}};let dr=Gt;Sr(dr,"ops",{",":(t,n)=>t instanceof Ms?(t.push(n),t):new Ms(t,n),":":(t,n)=>new g0(t,n),"?":(t,n)=>t?n.a:n.b,"??":(t,n)=>t!=null?t:n,"||":(t,n)=>t||n,"&&":(t,n)=>t&&n,"|":(t,n)=>t|n,"^":(t,n)=>t^n,"&":(t,n)=>t&n,"==":(t,n)=>t==n,"!=":(t,n)=>t!=n,"===":(t,n)=>t===n,"!==":(t,n)=>t!==n,"<":(t,n)=>t<n,">":(t,n)=>t>n,"<=":(t,n)=>t<=n,">=":(t,n)=>t>=n,"<<":(t,n)=>t<<n,">>":(t,n)=>t>>n,">>>":(t,n)=>t>>>n,"+":(t,n)=>t+n,"-":(t,n)=>t-n,"*":(t,n)=>t*n,"/":(t,n)=>t/n,"%":(t,n)=>t%n,"**":(t,n)=>t**n,"!":t=>!t,"~":t=>~t,"+/-":t=>-t,"+/+":t=>t,typeof:t=>typeof t,".":(t,n)=>t[n],void:t=>{}}),Sr(dr,"contexts",{});class Sd{constructor(t=""){this.setExpression(t),this.extra={functions:{},variables:{}}}setExpression(t=""){this.expression=t,this.tokens=void 0,this.rpn=void 0}tokenize(){return this.tokens==null&&(this.tokens=gt.tokenize(this.expression)),this.tokens}parse(){return this.rpn==null&&(this.rpn=Yr.parse(this.tokenize())),this.rpn}setLocalContext(t){this.localContext=t}static setGlobalContext(t,n="global"){dr.setGlobalContext(t,n)}evaluate(t,n){return t!==void 0&&(typeof t=="string"?n=t:this.setLocalContext(t)),n==null&&dr.contexts.hasOwnProperty("global")&&(n="global"),dr.evaluate(this.parse(),this.localContext,n)}}const v0=Sd;Wr.vX;Wr.KV;Wr._b;Wr.d2;Wr.ZP;if(typeof Zi=="undefined")var Zi=window;var y0=Object.create,ql=Object.defineProperty,b0=Object.getPrototypeOf,S0=Object.prototype.hasOwnProperty,E0=Object.getOwnPropertyNames,O0=Object.getOwnPropertyDescriptor,w0=e=>ql(e,"__esModule",{value:!0}),Vt=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),T0=(e,t,n)=>{if(w0(e),t&&typeof t=="object"||typeof t=="function")for(let r of E0(t))!S0.call(e,r)&&r!=="default"&&ql(e,r,{get:()=>t[r],enumerable:!(n=O0(t,r))||n.enumerable});return e},P0=e=>e&&e.__esModule?e:T0(ql(e!=null?y0(b0(e)):{},"default",{value:e,enumerable:!0}),e),Ed=Vt((e,t)=>{function n(r){var i=typeof r;return r!=null&&(i=="object"||i=="function")}t.exports=n}),x0=Vt((e,t)=>{var n=typeof Zi=="object"&&Zi&&Zi.Object===Object&&Zi;t.exports=n}),Od=Vt((e,t)=>{var n=x0(),r=typeof self=="object"&&self&&self.Object===Object&&self,i=n||r||Function("return this")();t.exports=i}),C0=Vt((e,t)=>{var n=Od(),r=function(){return n.Date.now()};t.exports=r}),wd=Vt((e,t)=>{var n=Od(),r=n.Symbol;t.exports=r}),M0=Vt((e,t)=>{var n=wd(),r=Object.prototype,i=r.hasOwnProperty,o=r.toString,s=n?n.toStringTag:void 0;function a(l){var c=i.call(l,s),u=l[s];try{l[s]=void 0;var f=!0}catch(d){}var p=o.call(l);return f&&(c?l[s]=u:delete l[s]),p}t.exports=a}),A0=Vt((e,t)=>{var n=Object.prototype,r=n.toString;function i(o){return r.call(o)}t.exports=i}),N0=Vt((e,t)=>{var n=wd(),r=M0(),i=A0(),o="[object Null]",s="[object Undefined]",a=n?n.toStringTag:void 0;function l(c){return c==null?c===void 0?s:o:a&&a in Object(c)?r(c):i(c)}t.exports=l}),R0=Vt((e,t)=>{function n(r){return r!=null&&typeof r=="object"}t.exports=n}),I0=Vt((e,t)=>{var n=N0(),r=R0(),i="[object Symbol]";function o(s){return typeof s=="symbol"||r(s)&&n(s)==i}t.exports=o}),$0=Vt((e,t)=>{var n=Ed(),r=I0(),i=0/0,o=/^\s+|\s+$/g,s=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,l=/^0o[0-7]+$/i,c=parseInt;function u(f){if(typeof f=="number")return f;if(r(f))return i;if(n(f)){var p=typeof f.valueOf=="function"?f.valueOf():f;f=n(p)?p+"":p}if(typeof f!="string")return f===0?f:+f;f=f.replace(o,"");var d=a.test(f);return d||l.test(f)?c(f.slice(2),d?2:8):s.test(f)?i:+f}t.exports=u}),L0=Vt((e,t)=>{var n=Ed(),r=C0(),i=$0(),o="Expected a function",s=Math.max,a=Math.min;function l(c,u,f){var p,d,m,b,v,S,g=0,O=!1,E=!1,$=!0;if(typeof c!="function")throw new TypeError(o);u=i(u)||0,n(f)&&(O=!!f.leading,E="maxWait"in f,m=E?s(i(f.maxWait)||0,u):m,$="trailing"in f?!!f.trailing:$);function R(M){var L=p,z=d;return p=d=void 0,g=M,b=c.apply(z,L),b}function T(M){return g=M,v=setTimeout(j,u),O?R(M):b}function P(M){var L=M-S,z=M-g,B=u-L;return E?a(B,m-z):B}function N(M){var L=M-S,z=M-g;return S===void 0||L>=u||L<0||E&&z>=m}function j(){var M=r();if(N(M))return V(M);v=setTimeout(j,P(M))}function V(M){return v=void 0,$&&p?R(M):(p=d=void 0,b)}function F(){v!==void 0&&clearTimeout(v),g=0,p=S=d=v=void 0}function C(){return v===void 0?b:V(r())}function w(){var M=r(),L=N(M);if(p=arguments,d=this,S=M,L){if(v===void 0)return T(S);if(E)return clearTimeout(v),v=setTimeout(j,u),R(S)}return v===void 0&&(v=setTimeout(j,u)),b}return w.cancel=F,w.flush=C,w}t.exports=l}),D0=P0(L0()),F0=D0.default;function j0(){let e=[],t=[];function n(g,O){g.forEach(E=>{E.call(null,O)})}this.onSingleTap=function(g){typeof g=="function"&&!e.includes(g)&&e.push(g)},this.onDoubleTap=function(g){typeof g=="function"&&!t.includes(g)&&t.push(g)},this.attach=function(g){if(!(g instanceof Element)){console.error("TapDetector.attach: arg must be an Element");return}g.addEventListener("touchstart",c),g.addEventListener("touchmove",f),g.addEventListener("touchend",u),g.addEventListener("mousedown",p),g.addEventListener("mouseup",d),g.addEventListener("mousemove",m)},this.detach=function(g){g.removeEventListener("touchstart",c),g.removeEventListener("touchmove",f),g.removeEventListener("touchend",u),g.removeEventListener("mousedown",p),g.removeEventListener("mouseup",d),g.removeEventListener("mousemove",m)};let r=!1,i=0,o=0,s=0,a=0,l=0;function c(g){r=!0,g.touches.length===1&&b(g.touches[0].clientX,g.touches[0].clientY)}function u(g){g.touches.length===0&&v()}function f(g){g.touches.length===1&&S(g.touches[0].clientX,g.touches[0].clientY)}function p(g){r||b(g.clientX,g.clientY)}function d(g){r||v()}function m(g){r||g.button===0&&S(g.clientX,g.clientY)}function b(g,O){a=g,l=O,s=0}function v(){let g=Date.now();s<10&&(g-i<300?o+=1:o=1,i=Date.now(),n(e,{clientX:a,clientY:l}),o===2&&(n(t,{clientX:a,clientY:l}),o=0)),s=0}function S(g,O){let E=a-g,$=l-O;s+=Math.sqrt(E*E+$*$),a=g,l=O}}const V0={props:{minScale:{type:Number,default:1},maxScale:{type:Number,default:5},zoomed:{type:Boolean,default:!1},resetTrigger:{type:Number,default:1e5},aspectRatio:{type:Number,default:1},backgroundColor:{type:String,default:"transparent"},pivot:{type:String,default:"cursor"},zoomingElastic:{type:Boolean,default:!0},limitTranslation:{type:Boolean,default:!0},doubleClickToZoom:{type:Boolean,default:!0},mouseWheelToZoom:{type:Boolean,default:!0},lockPanOnNoScale:{type:Boolean,default:!0}},data(){return{containerWidth:1,containerHeight:1,containerLeft:0,containerTop:0,translateX:0,animTranslateX:0,translateY:0,animTranslateY:0,scale:1,animScale:1,lastFullWheelTime:0,lastWheelTime:0,lastWheelDirection:"y",isPointerDown:!1,pointerPosX:-1,pointerPosY:-1,twoFingerInitDist:0,panLocked:!0,raf:null,tapDetector:null}},computed:{wrapperStyle(){let e=this.containerWidth*this.animTranslateX,t=this.containerHeight*this.animTranslateY;return{transform:[`translate(${e}px, ${t}px)`,`scale(${this.animScale})`].join(" ")}}},watch:{scale(e){e!==1&&(this.$emit("update:zoomed",!0),this.panLocked=!1)},resetTrigger:"reset"},mounted(){this.tapDetector=new j0,this.tapDetector.attach(this.$refs.root),this.doubleClickToZoom&&this.tapDetector.onDoubleTap(this.onDoubleTap),window.addEventListener("resize",this.onWindowResize),this.onWindowResize(),this.refreshContainerPos(),this.loop()},beforeUnmount(){this.tapDetector.detach(this.$refs.root),window.removeEventListener("resize",this.onWindowResize),window.cancelAnimationFrame(this.raf)},methods:{reset(){this.scale=1,this.panLocked=!0,this.translateX=0,this.translateY=0},zoomIn(e=2){this.tryToScale(e),this.onInteractionEnd()},zoomOut(e=.5){this.tryToScale(e),this.onInteractionEnd()},tryToScale(e){let t=this.scale*e;if(this.zoomingElastic){if(t<this.minScale||t>this.maxScale){let n=Math.log2(e);n*=.2,e=Math.pow(2,n),t=this.scale*e}}else t<this.minScale?t=this.minScale:t>this.maxScale&&(t=this.maxScale);if(e=t/this.scale,this.scale=t,this.pivot!=="image-center"){let n=(this.pointerPosX-this.containerLeft)/this.containerWidth,r=(this.pointerPosY-this.containerTop)/this.containerHeight;this.translateX=(.5+this.translateX-n)*e+n-.5,this.translateY=(.5+this.translateY-r)*e+r-.5}},setPointerPosCenter(){this.pointerPosX=this.containerLeft+this.containerWidth/2,this.pointerPosY=this.containerTop+this.containerHeight/2},onPointerMove(e,t){if(this.isPointerDown){let n=e-this.pointerPosX,r=t-this.pointerPosY;(!this.lockPanOnNoScale||!this.panLocked)&&(this.translateX+=n/this.containerWidth,this.translateY+=r/this.containerHeight)}this.pointerPosX=e,this.pointerPosY=t},onInteractionEnd:F0(function(){this.limit(),this.panLocked=this.scale===1,this.$emit("update:zoomed",!this.panLocked)},100),limit(){if(this.scale<this.minScale?this.scale=this.minScale:this.scale>this.maxScale&&this.tryToScale(this.maxScale/this.scale),this.limitTranslation){let e=this.calcTranslateLimit();Math.abs(this.translateX)>e.x&&(this.translateX*=e.x/Math.abs(this.translateX)),Math.abs(this.translateY)>e.y&&(this.translateY*=e.y/Math.abs(this.translateY))}},calcTranslateLimit(){if(this.getMarginDirection()==="y"){let e=this.containerWidth/this.aspectRatio/this.containerHeight,t=(this.scale*e-1)/2;return t<0&&(t=0),{x:(this.scale-1)/2,y:t}}else{let e=this.containerHeight*this.aspectRatio/this.containerWidth,t=(this.scale*e-1)/2;return t<0&&(t=0),{x:t,y:(this.scale-1)/2}}},getMarginDirection(){return this.containerWidth/this.containerHeight>this.aspectRatio?"x":"y"},onDoubleTap(e){this.scale===1?(e.clientX>0&&(this.pointerPosX=e.clientX,this.pointerPosY=e.clientY),this.tryToScale(Math.min(3,this.maxScale))):this.reset(),this.onInteractionEnd()},onWindowResize(){let e=window.getComputedStyle(this.$refs.root);this.containerWidth=parseFloat(e.width),this.containerHeight=parseFloat(e.height),this.setPointerPosCenter(),this.limit()},refreshContainerPos(){let e=this.$refs.root.getBoundingClientRect();this.containerLeft=e.left,this.containerTop=e.top},loop(){this.animScale=this.gainOn(this.animScale,this.scale),this.animTranslateX=this.gainOn(this.animTranslateX,this.translateX),this.animTranslateY=this.gainOn(this.animTranslateY,this.translateY),this.raf=window.requestAnimationFrame(this.loop)},gainOn(e,t){let n=(t-e)*.3;return Math.abs(n)>1e-5?e+n:t},onMouseWheel(e){if(!this.mouseWheelToZoom)return;e.preventDefault(),e.detail&&(e.wheelDelta=e.detail*-10);let t=Date.now();Math.abs(e.wheelDelta)===120?t-this.lastFullWheelTime>50&&(this.onMouseWheelDo(e.wheelDelta),this.lastFullWheelTime=t):(t-this.lastWheelTime>50&&typeof e.deltaX=="number"&&(this.lastWheelDirection=e.detail==0&&Math.abs(e.deltaX)>Math.abs(e.deltaY)?"x":"y",this.lastWheelDirection==="x"&&this.$emit("swipe",e.deltaX>0?"left":"right")),this.lastWheelDirection==="y"&&this.onMouseWheelDo(e.wheelDelta)),this.lastWheelTime=t},onMouseWheelDo(e){let t=Math.pow(1.25,e/120);this.tryToScale(t),this.onInteractionEnd()},onMouseDown(e){this.refreshContainerPos(),this.isPointerDown=!0,this.pointerPosX=e.clientX,this.pointerPosY=e.clientY},onMouseUp(e){this.isPointerDown=!1,this.onInteractionEnd()},onMouseMove(e){this.onPointerMove(e.clientX,e.clientY)},onTouchStart(e){if(e.touches.length===1)this.refreshContainerPos(),this.pointerPosX=e.touches[0].clientX,this.pointerPosY=e.touches[0].clientY,this.isPointerDown=!0;else if(e.touches.length===2){this.isPointerDown=!0,this.pointerPosX=(e.touches[0].clientX+e.touches[1].clientX)/2,this.pointerPosY=(e.touches[0].clientY+e.touches[1].clientY)/2;let t=e.touches[0].clientX-e.touches[1].clientX,n=e.touches[0].clientY-e.touches[1].clientY;this.twoFingerInitDist=Math.sqrt(t*t+n*n)}},onTouchEnd(e){e.touches.length===0?(this.isPointerDown=!1,Math.abs(this.scale-1)<.1&&(this.scale=1),this.onInteractionEnd()):e.touches.length===1&&(this.pointerPosX=e.touches[0].clientX,this.pointerPosY=e.touches[0].clientY)},onTouchMove(e){if(e.touches.length===1)this.onPointerMove(e.touches[0].clientX,e.touches[0].clientY);else if(e.touches.length===2){let t=(e.touches[0].clientX+e.touches[1].clientX)/2,n=(e.touches[0].clientY+e.touches[1].clientY)/2;this.onPointerMove(t,n),this.pointerPosX=t,this.pointerPosY=n;let r=e.touches[0].clientX-e.touches[1].clientX,i=e.touches[0].clientY-e.touches[1].clientY,o=Math.sqrt(r*r+i*i);this.tryToScale(o/this.twoFingerInitDist),this.twoFingerInitDist=o}}}};function z0(e,t,n,r,i,o){return Ie(),Si("div",{ref:"root",class:"vue-zoomer",style:Zt({backgroundColor:n.backgroundColor}),onMousewheel:t[0]||(t[0]=(...s)=>o.onMouseWheel&&o.onMouseWheel(...s)),onDOMMouseScroll:t[1]||(t[1]=(...s)=>o.onMouseWheel&&o.onMouseWheel(...s)),onMousedown:t[2]||(t[2]=(...s)=>o.onMouseDown&&o.onMouseDown(...s)),onMouseup:t[3]||(t[3]=(...s)=>o.onMouseUp&&o.onMouseUp(...s)),onMousemove:t[4]||(t[4]=(...s)=>o.onMouseMove&&o.onMouseMove(...s)),onMouseout:t[5]||(t[5]=(...s)=>o.setPointerPosCenter&&o.setPointerPosCenter(...s)),onTouchstart:t[6]||(t[6]=(...s)=>o.onTouchStart&&o.onTouchStart(...s)),onTouchend:t[7]||(t[7]=(...s)=>o.onTouchEnd&&o.onTouchEnd(...s)),onTouchmove:t[8]||(t[8]=(...s)=>o.onTouchMove&&o.onTouchMove(...s))},[Ho("div",{class:"zoomer",style:Zt(o.wrapperStyle)},[qe(e.$slots,"default",{},void 0,!0)],4)],36)}var B0=dd(V0,[["render",z0],["__scopeId","data-v-3ce6d41b"]]);const H0=50,k0={props:{modelValue:{type:Number,required:!0},list:{type:Array,required:!0},backgroundColor:{type:String,default:"#333"},pivot:{type:String,default:"cursor"},zoomingElastic:{type:Boolean,default:!0},limitTranslation:{type:Boolean,default:!0},doubleClickToZoom:{type:Boolean,default:!0},mouseWheelToZoom:{type:Boolean,default:!0}},data(){return{zoomerRefs:[],containerWidth:1,containerHeight:1,selIndex:this.modelValue,animSelIndex:this.modelValue,currentZoomed:!1,autoSliding:!1,imageAspectRatios:[],isPointerDown:!1,lastPointerX:0,slideOffsetX:0}},computed:{middleStyle(){return{left:`${0+this.slideOffsetX}px`}},leftStyle(){return{left:`${-this.containerWidth+this.slideOffsetX}px`}},rightStyle(){return{left:`${this.containerWidth+this.slideOffsetX}px`}},slideThresh(){return Math.max(H0,this.containerWidth*.1)}},watch:{modelValue(e){e!==this.animSelIndex&&(this.selIndex=e,this.animSelIndex=e)},selIndex(){this.$nextTick(()=>{this.zoomerRefs.forEach(e=>{e.refreshContainerPos()})})}},mounted(){window.addEventListener("resize",this.onWindowResize),this.onWindowResize()},unmounted(){window.removeEventListener("resize",this.onWindowResize)},methods:{reset(){this.zoomerRefs.forEach(e=>{e.reset()})},zoomIn(e){this.zoomerRefs[1]&&this.zoomerRefs[1].zoomIn(e)},zoomOut(e){this.zoomerRefs[1]&&this.zoomerRefs[1].zoomOut(e)},onWindowResize(){let e=window.getComputedStyle(this.$refs.root);this.containerWidth=parseFloat(e.width),this.containerHeight=parseFloat(e.height)},onPointerMove(e){if(this.isPointerDown&&!this.currentZoomed){let t=this.selIndex===0&&e>0&&this.slideOffsetX+e>0||this.selIndex===this.list.length-1&&e<0&&this.slideOffsetX+e<0?.3:1;this.slideOffsetX+=e*t}},onPointerUp(){this.slideOffsetX<-this.slideThresh?this.paginate(1):this.slideOffsetX>this.slideThresh?this.paginate(-1):this.paginate(0)},onImageDragStart(e){return e.preventDefault(),!1},paginate(e){let t=this.selIndex+e;if(t<0||t>=this.list.length){this.slideOffsetX=0;return}this.slideOffsetX=this.containerWidth*-e,this.autoSliding=!0,this.$emit("update:modelValue",t),this.animSelIndex=t,setTimeout(()=>{this.selIndex=t,this.slideOffsetX=0,this.autoSliding=!1},400)},onMouseDown(e){this.isPointerDown=!0,this.lastPointerX=e.clientX},onMouseUp(e){this.isPointerDown=!1,this.onPointerUp()},onMouseMove(e){this.isPointerDown&&(this.onPointerMove(e.clientX-this.lastPointerX),this.lastPointerX=e.clientX)},onTouchStart(e){e.touches.length===1&&(this.isPointerDown=!0,this.lastPointerX=e.touches[0].clientX)},onTouchEnd(e){e.touches.length===0&&(this.isPointerDown=!1,this.onPointerUp())},onTouchMove(e){e.touches.length===1&&(this.onPointerMove(e.touches[0].clientX-this.lastPointerX),this.lastPointerX=e.touches[0].clientX)},onImageLoad(e,t){let n=t.target.naturalWidth/t.target.naturalHeight;this.imageAspectRatios[e]=n},onImageSwipe(e){this.paginate(e=="right"?-1:1)}}},U0=["src","onLoad"];function K0(e,t,n,r,i,o){const s=er("v-zoomer");return Ie(),Si("div",{ref:"root",class:vn([{anim:i.autoSliding&&!i.isPointerDown},"vue-zoomer-gallery"]),style:Zt({"background-color":n.backgroundColor}),onMousemove:t[2]||(t[2]=(...a)=>o.onMouseMove&&o.onMouseMove(...a)),onMousedown:t[3]||(t[3]=(...a)=>o.onMouseDown&&o.onMouseDown(...a)),onMouseout:t[4]||(t[4]=(...a)=>o.onMouseUp&&o.onMouseUp(...a)),onMouseup:t[5]||(t[5]=(...a)=>o.onMouseUp&&o.onMouseUp(...a)),onTouchstart:t[6]||(t[6]=(...a)=>o.onTouchStart&&o.onTouchStart(...a)),onTouchend:t[7]||(t[7]=(...a)=>o.onTouchEnd&&o.onTouchEnd(...a)),onTouchmove:t[8]||(t[8]=Xe((...a)=>o.onTouchMove&&o.onTouchMove(...a),["prevent"]))},[(Ie(),Si(Ye,null,ko(3,(a,l)=>he(s,{ref:c=>{i.zoomerRefs[l]=c},key:l+"-"+i.selIndex,class:vn([["left","middle","right"][l],"slide"]),style:Zt([o.leftStyle,o.middleStyle,o.rightStyle][l]),"max-scale":10,zoomed:i.currentZoomed,"onUpdate:zoomed":t[1]||(t[1]=c=>i.currentZoomed=c),"reset-trigger":l,"aspect-ratio":i.imageAspectRatios[i.selIndex+l-1]||1,pivot:n.pivot,"zooming-elastic":n.zoomingElastic,"limit-translation":n.limitTranslation,"double-click-to-zoom":n.doubleClickToZoom,"mouse-wheel-to-zoom":n.mouseWheelToZoom,onSwipe:o.onImageSwipe},{default:qt(()=>[i.selIndex+l-1>-1&&i.selIndex+l-1<n.list.length?(Ie(),Si("img",{key:0,src:n.list[i.selIndex+l-1],draggable:"false",style:{"object-fit":"contain",width:"100%",height:"100%"},onLoad:c=>o.onImageLoad(i.selIndex+l-1,c),onDragstart:t[0]||(t[0]=(...c)=>o.onImageDragStart&&o.onImageDragStart(...c))},null,40,U0)):Lt("",!0)]),_:2},1032,["class","style","zoomed","reset-trigger","aspect-ratio","pivot","zooming-elastic","limit-translation","double-click-to-zoom","mouse-wheel-to-zoom","onSwipe"])),64))],38)}var W0=dd(k0,[["render",K0],["__scopeId","data-v-1af1e362"]]),O1={install(e){e.component("VZoomer",B0),e.component("VZoomerGallery",W0)}},Nt="top",zt="bottom",Bt="right",Rt="left",_l="auto",Ji=[Nt,zt,Bt,Rt],Xr="start",Qi="end",Y0="clippingParents",Td="viewport",qi="popper",X0="reference",Pd=Ji.reduce(function(e,t){return e.concat([t+"-"+Xr,t+"-"+Qi])},[]),As=[].concat(Ji,[_l]).reduce(function(e,t){return e.concat([t,t+"-"+Xr,t+"-"+Qi])},[]),G0="beforeRead",Z0="read",J0="afterRead",Q0="beforeMain",q0="main",_0="afterMain",eS="beforeWrite",tS="write",nS="afterWrite",rS=[G0,Z0,J0,Q0,q0,_0,eS,tS,nS];function on(e){return e?(e.nodeName||"").toLowerCase():null}function Yt(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function _i(e){var t=Yt(e).Element;return e instanceof t||e instanceof Element}function Ht(e){var t=Yt(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function xd(e){if(typeof ShadowRoot=="undefined")return!1;var t=Yt(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function iS(e){var t=e.state;Object.keys(t.elements).forEach(function(n){var r=t.styles[n]||{},i=t.attributes[n]||{},o=t.elements[n];!Ht(o)||!on(o)||(Object.assign(o.style,r),Object.keys(i).forEach(function(s){var a=i[s];a===!1?o.removeAttribute(s):o.setAttribute(s,a===!0?"":a)}))})}function oS(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(r){var i=t.elements[r],o=t.attributes[r]||{},s=Object.keys(t.styles.hasOwnProperty(r)?t.styles[r]:n[r]),a=s.reduce(function(l,c){return l[c]="",l},{});!Ht(i)||!on(i)||(Object.assign(i.style,a),Object.keys(o).forEach(function(l){i.removeAttribute(l)}))})}}var sS={name:"applyStyles",enabled:!0,phase:"write",fn:iS,effect:oS,requires:["computeStyles"]};function sn(e){return e.split("-")[0]}function Gr(e,t){var n=e.getBoundingClientRect(),r=1,i=1;return{width:n.width/r,height:n.height/i,top:n.top/i,right:n.right/r,bottom:n.bottom/i,left:n.left/r,x:n.left/r,y:n.top/i}}function ec(e){var t=Gr(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function Cd(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&xd(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function gn(e){return Yt(e).getComputedStyle(e)}function aS(e){return["table","td","th"].indexOf(on(e))>=0}function Bn(e){return((_i(e)?e.ownerDocument:e.document)||window.document).documentElement}function Ns(e){return on(e)==="html"?e:e.assignedSlot||e.parentNode||(xd(e)?e.host:null)||Bn(e)}function Md(e){return!Ht(e)||gn(e).position==="fixed"?null:e.offsetParent}function lS(e){var t=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,n=navigator.userAgent.indexOf("Trident")!==-1;if(n&&Ht(e)){var r=gn(e);if(r.position==="fixed")return null}for(var i=Ns(e);Ht(i)&&["html","body"].indexOf(on(i))<0;){var o=gn(i);if(o.transform!=="none"||o.perspective!=="none"||o.contain==="paint"||["transform","perspective"].indexOf(o.willChange)!==-1||t&&o.willChange==="filter"||t&&o.filter&&o.filter!=="none")return i;i=i.parentNode}return null}function eo(e){for(var t=Yt(e),n=Md(e);n&&aS(n)&&gn(n).position==="static";)n=Md(n);return n&&(on(n)==="html"||on(n)==="body"&&gn(n).position==="static")?t:n||lS(e)||t}function tc(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}var Hn=Math.max,to=Math.min,Rs=Math.round;function Is(e,t,n){return Hn(e,to(t,n))}function Ad(){return{top:0,right:0,bottom:0,left:0}}function Nd(e){return Object.assign({},Ad(),e)}function Rd(e,t){return t.reduce(function(n,r){return n[r]=e,n},{})}var cS=function(t,n){return t=typeof t=="function"?t(Object.assign({},n.rects,{placement:n.placement})):t,Nd(typeof t!="number"?t:Rd(t,Ji))};function uS(e){var t,n=e.state,r=e.name,i=e.options,o=n.elements.arrow,s=n.modifiersData.popperOffsets,a=sn(n.placement),l=tc(a),c=[Rt,Bt].indexOf(a)>=0,u=c?"height":"width";if(!(!o||!s)){var f=cS(i.padding,n),p=ec(o),d=l==="y"?Nt:Rt,m=l==="y"?zt:Bt,b=n.rects.reference[u]+n.rects.reference[l]-s[l]-n.rects.popper[u],v=s[l]-n.rects.reference[l],S=eo(o),g=S?l==="y"?S.clientHeight||0:S.clientWidth||0:0,O=b/2-v/2,E=f[d],$=g-p[u]-f[m],R=g/2-p[u]/2+O,T=Is(E,R,$),P=l;n.modifiersData[r]=(t={},t[P]=T,t.centerOffset=T-R,t)}}function fS(e){var t=e.state,n=e.options,r=n.element,i=r===void 0?"[data-popper-arrow]":r;i!=null&&(typeof i=="string"&&(i=t.elements.popper.querySelector(i),!i)||!Cd(t.elements.popper,i)||(t.elements.arrow=i))}var pS={name:"arrow",enabled:!0,phase:"main",fn:uS,effect:fS,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Zr(e){return e.split("-")[1]}var dS={top:"auto",right:"auto",bottom:"auto",left:"auto"};function hS(e){var t=e.x,n=e.y,r=window,i=r.devicePixelRatio||1;return{x:Rs(Rs(t*i)/i)||0,y:Rs(Rs(n*i)/i)||0}}function Id(e){var t,n=e.popper,r=e.popperRect,i=e.placement,o=e.variation,s=e.offsets,a=e.position,l=e.gpuAcceleration,c=e.adaptive,u=e.roundOffsets,f=u===!0?hS(s):typeof u=="function"?u(s):s,p=f.x,d=p===void 0?0:p,m=f.y,b=m===void 0?0:m,v=s.hasOwnProperty("x"),S=s.hasOwnProperty("y"),g=Rt,O=Nt,E=window;if(c){var $=eo(n),R="clientHeight",T="clientWidth";$===Yt(n)&&($=Bn(n),gn($).position!=="static"&&a==="absolute"&&(R="scrollHeight",T="scrollWidth")),$=$,(i===Nt||(i===Rt||i===Bt)&&o===Qi)&&(O=zt,b-=$[R]-r.height,b*=l?1:-1),(i===Rt||(i===Nt||i===zt)&&o===Qi)&&(g=Bt,d-=$[T]-r.width,d*=l?1:-1)}var P=Object.assign({position:a},c&&dS);if(l){var N;return Object.assign({},P,(N={},N[O]=S?"0":"",N[g]=v?"0":"",N.transform=(E.devicePixelRatio||1)<=1?"translate("+d+"px, "+b+"px)":"translate3d("+d+"px, "+b+"px, 0)",N))}return Object.assign({},P,(t={},t[O]=S?b+"px":"",t[g]=v?d+"px":"",t.transform="",t))}function mS(e){var t=e.state,n=e.options,r=n.gpuAcceleration,i=r===void 0?!0:r,o=n.adaptive,s=o===void 0?!0:o,a=n.roundOffsets,l=a===void 0?!0:a,c={placement:sn(t.placement),variation:Zr(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:i};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,Id(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Id(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var gS={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:mS,data:{}},$s={passive:!0};function vS(e){var t=e.state,n=e.instance,r=e.options,i=r.scroll,o=i===void 0?!0:i,s=r.resize,a=s===void 0?!0:s,l=Yt(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&c.forEach(function(u){u.addEventListener("scroll",n.update,$s)}),a&&l.addEventListener("resize",n.update,$s),function(){o&&c.forEach(function(u){u.removeEventListener("scroll",n.update,$s)}),a&&l.removeEventListener("resize",n.update,$s)}}var yS={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:vS,data:{}},bS={left:"right",right:"left",bottom:"top",top:"bottom"};function Ls(e){return e.replace(/left|right|bottom|top/g,function(t){return bS[t]})}var SS={start:"end",end:"start"};function $d(e){return e.replace(/start|end/g,function(t){return SS[t]})}function nc(e){var t=Yt(e),n=t.pageXOffset,r=t.pageYOffset;return{scrollLeft:n,scrollTop:r}}function rc(e){return Gr(Bn(e)).left+nc(e).scrollLeft}function ES(e){var t=Yt(e),n=Bn(e),r=t.visualViewport,i=n.clientWidth,o=n.clientHeight,s=0,a=0;return r&&(i=r.width,o=r.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(s=r.offsetLeft,a=r.offsetTop)),{width:i,height:o,x:s+rc(e),y:a}}function OS(e){var t,n=Bn(e),r=nc(e),i=(t=e.ownerDocument)==null?void 0:t.body,o=Hn(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),s=Hn(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),a=-r.scrollLeft+rc(e),l=-r.scrollTop;return gn(i||n).direction==="rtl"&&(a+=Hn(n.clientWidth,i?i.clientWidth:0)-o),{width:o,height:s,x:a,y:l}}function ic(e){var t=gn(e),n=t.overflow,r=t.overflowX,i=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+i+r)}function Ld(e){return["html","body","#document"].indexOf(on(e))>=0?e.ownerDocument.body:Ht(e)&&ic(e)?e:Ld(Ns(e))}function no(e,t){var n;t===void 0&&(t=[]);var r=Ld(e),i=r===((n=e.ownerDocument)==null?void 0:n.body),o=Yt(r),s=i?[o].concat(o.visualViewport||[],ic(r)?r:[]):r,a=t.concat(s);return i?a:a.concat(no(Ns(s)))}function oc(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function wS(e){var t=Gr(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}function Dd(e,t){return t===Td?oc(ES(e)):Ht(t)?wS(t):oc(OS(Bn(e)))}function TS(e){var t=no(Ns(e)),n=["absolute","fixed"].indexOf(gn(e).position)>=0,r=n&&Ht(e)?eo(e):e;return _i(r)?t.filter(function(i){return _i(i)&&Cd(i,r)&&on(i)!=="body"}):[]}function PS(e,t,n){var r=t==="clippingParents"?TS(e):[].concat(t),i=[].concat(r,[n]),o=i[0],s=i.reduce(function(a,l){var c=Dd(e,l);return a.top=Hn(c.top,a.top),a.right=to(c.right,a.right),a.bottom=to(c.bottom,a.bottom),a.left=Hn(c.left,a.left),a},Dd(e,o));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}function Fd(e){var t=e.reference,n=e.element,r=e.placement,i=r?sn(r):null,o=r?Zr(r):null,s=t.x+t.width/2-n.width/2,a=t.y+t.height/2-n.height/2,l;switch(i){case Nt:l={x:s,y:t.y-n.height};break;case zt:l={x:s,y:t.y+t.height};break;case Bt:l={x:t.x+t.width,y:a};break;case Rt:l={x:t.x-n.width,y:a};break;default:l={x:t.x,y:t.y}}var c=i?tc(i):null;if(c!=null){var u=c==="y"?"height":"width";switch(o){case Xr:l[c]=l[c]-(t[u]/2-n[u]/2);break;case Qi:l[c]=l[c]+(t[u]/2-n[u]/2);break}}return l}function ro(e,t){t===void 0&&(t={});var n=t,r=n.placement,i=r===void 0?e.placement:r,o=n.boundary,s=o===void 0?Y0:o,a=n.rootBoundary,l=a===void 0?Td:a,c=n.elementContext,u=c===void 0?qi:c,f=n.altBoundary,p=f===void 0?!1:f,d=n.padding,m=d===void 0?0:d,b=Nd(typeof m!="number"?m:Rd(m,Ji)),v=u===qi?X0:qi,S=e.rects.popper,g=e.elements[p?v:u],O=PS(_i(g)?g:g.contextElement||Bn(e.elements.popper),s,l),E=Gr(e.elements.reference),$=Fd({reference:E,element:S,strategy:"absolute",placement:i}),R=oc(Object.assign({},S,$)),T=u===qi?R:E,P={top:O.top-T.top+b.top,bottom:T.bottom-O.bottom+b.bottom,left:O.left-T.left+b.left,right:T.right-O.right+b.right},N=e.modifiersData.offset;if(u===qi&&N){var j=N[i];Object.keys(P).forEach(function(V){var F=[Bt,zt].indexOf(V)>=0?1:-1,C=[Nt,zt].indexOf(V)>=0?"y":"x";P[V]+=j[C]*F})}return P}function xS(e,t){t===void 0&&(t={});var n=t,r=n.placement,i=n.boundary,o=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=l===void 0?As:l,u=Zr(r),f=u?a?Pd:Pd.filter(function(m){return Zr(m)===u}):Ji,p=f.filter(function(m){return c.indexOf(m)>=0});p.length===0&&(p=f);var d=p.reduce(function(m,b){return m[b]=ro(e,{placement:b,boundary:i,rootBoundary:o,padding:s})[sn(b)],m},{});return Object.keys(d).sort(function(m,b){return d[m]-d[b]})}function CS(e){if(sn(e)===_l)return[];var t=Ls(e);return[$d(e),t,$d(t)]}function MS(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var i=n.mainAxis,o=i===void 0?!0:i,s=n.altAxis,a=s===void 0?!0:s,l=n.fallbackPlacements,c=n.padding,u=n.boundary,f=n.rootBoundary,p=n.altBoundary,d=n.flipVariations,m=d===void 0?!0:d,b=n.allowedAutoPlacements,v=t.options.placement,S=sn(v),g=S===v,O=l||(g||!m?[Ls(v)]:CS(v)),E=[v].concat(O).reduce(function(Se,Re){return Se.concat(sn(Re)===_l?xS(t,{placement:Re,boundary:u,rootBoundary:f,padding:c,flipVariations:m,allowedAutoPlacements:b}):Re)},[]),$=t.rects.reference,R=t.rects.popper,T=new Map,P=!0,N=E[0],j=0;j<E.length;j++){var V=E[j],F=sn(V),C=Zr(V)===Xr,w=[Nt,zt].indexOf(F)>=0,M=w?"width":"height",L=ro(t,{placement:V,boundary:u,rootBoundary:f,altBoundary:p,padding:c}),z=w?C?Bt:Rt:C?zt:Nt;$[M]>R[M]&&(z=Ls(z));var B=Ls(z),K=[];if(o&&K.push(L[F]<=0),a&&K.push(L[z]<=0,L[B]<=0),K.every(function(Se){return Se})){N=V,P=!1;break}T.set(V,K)}if(P)for(var G=m?3:1,de=function(Re){var Je=E.find(function(Qe){var ft=T.get(Qe);if(ft)return ft.slice(0,Re).every(function(kt){return kt})});if(Je)return N=Je,"break"},ce=G;ce>0;ce--){var ve=de(ce);if(ve==="break")break}t.placement!==N&&(t.modifiersData[r]._skip=!0,t.placement=N,t.reset=!0)}}var AS={name:"flip",enabled:!0,phase:"main",fn:MS,requiresIfExists:["offset"],data:{_skip:!1}};function jd(e,t,n){return n===void 0&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function Vd(e){return[Nt,Bt,zt,Rt].some(function(t){return e[t]>=0})}function NS(e){var t=e.state,n=e.name,r=t.rects.reference,i=t.rects.popper,o=t.modifiersData.preventOverflow,s=ro(t,{elementContext:"reference"}),a=ro(t,{altBoundary:!0}),l=jd(s,r),c=jd(a,i,o),u=Vd(l),f=Vd(c);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}var RS={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:NS};function IS(e,t,n){var r=sn(e),i=[Rt,Nt].indexOf(r)>=0?-1:1,o=typeof n=="function"?n(Object.assign({},t,{placement:e})):n,s=o[0],a=o[1];return s=s||0,a=(a||0)*i,[Rt,Bt].indexOf(r)>=0?{x:a,y:s}:{x:s,y:a}}function $S(e){var t=e.state,n=e.options,r=e.name,i=n.offset,o=i===void 0?[0,0]:i,s=As.reduce(function(u,f){return u[f]=IS(f,t.rects,o),u},{}),a=s[t.placement],l=a.x,c=a.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=s}var LS={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:$S};function DS(e){var t=e.state,n=e.name;t.modifiersData[n]=Fd({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}var FS={name:"popperOffsets",enabled:!0,phase:"read",fn:DS,data:{}};function jS(e){return e==="x"?"y":"x"}function VS(e){var t=e.state,n=e.options,r=e.name,i=n.mainAxis,o=i===void 0?!0:i,s=n.altAxis,a=s===void 0?!1:s,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,f=n.padding,p=n.tether,d=p===void 0?!0:p,m=n.tetherOffset,b=m===void 0?0:m,v=ro(t,{boundary:l,rootBoundary:c,padding:f,altBoundary:u}),S=sn(t.placement),g=Zr(t.placement),O=!g,E=tc(S),$=jS(E),R=t.modifiersData.popperOffsets,T=t.rects.reference,P=t.rects.popper,N=typeof b=="function"?b(Object.assign({},t.rects,{placement:t.placement})):b,j={x:0,y:0};if(!!R){if(o||a){var V=E==="y"?Nt:Rt,F=E==="y"?zt:Bt,C=E==="y"?"height":"width",w=R[E],M=R[E]+v[V],L=R[E]-v[F],z=d?-P[C]/2:0,B=g===Xr?T[C]:P[C],K=g===Xr?-P[C]:-T[C],G=t.elements.arrow,de=d&&G?ec(G):{width:0,height:0},ce=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:Ad(),ve=ce[V],Se=ce[F],Re=Is(0,T[C],de[C]),Je=O?T[C]/2-z-Re-ve-N:B-Re-ve-N,Qe=O?-T[C]/2+z+Re+Se+N:K+Re+Se+N,ft=t.elements.arrow&&eo(t.elements.arrow),kt=ft?E==="y"?ft.clientTop||0:ft.clientLeft||0:0,Ve=t.modifiersData.offset?t.modifiersData.offset[t.placement][E]:0,ze=R[E]+Je-Ve-kt,vt=R[E]+Qe-Ve;if(o){var x=Is(d?to(M,ze):M,w,d?Hn(L,vt):L);R[E]=x,j[E]=x-w}if(a){var I=E==="x"?Nt:Rt,k=E==="x"?zt:Bt,X=R[$],W=X+v[I],q=X-v[k],ne=Is(d?to(W,ze):W,X,d?Hn(q,vt):q);R[$]=ne,j[$]=ne-X}}t.modifiersData[r]=j}}var zS={name:"preventOverflow",enabled:!0,phase:"main",fn:VS,requiresIfExists:["offset"]};function BS(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function HS(e){return e===Yt(e)||!Ht(e)?nc(e):BS(e)}function kS(e){var t=e.getBoundingClientRect(),n=t.width/e.offsetWidth||1,r=t.height/e.offsetHeight||1;return n!==1||r!==1}function US(e,t,n){n===void 0&&(n=!1);var r=Ht(t);Ht(t)&&kS(t);var i=Bn(t),o=Gr(e),s={scrollLeft:0,scrollTop:0},a={x:0,y:0};return(r||!r&&!n)&&((on(t)!=="body"||ic(i))&&(s=HS(t)),Ht(t)?(a=Gr(t),a.x+=t.clientLeft,a.y+=t.clientTop):i&&(a.x=rc(i))),{x:o.left+s.scrollLeft-a.x,y:o.top+s.scrollTop-a.y,width:o.width,height:o.height}}function KS(e){var t=new Map,n=new Set,r=[];e.forEach(function(o){t.set(o.name,o)});function i(o){n.add(o.name);var s=[].concat(o.requires||[],o.requiresIfExists||[]);s.forEach(function(a){if(!n.has(a)){var l=t.get(a);l&&i(l)}}),r.push(o)}return e.forEach(function(o){n.has(o.name)||i(o)}),r}function WS(e){var t=KS(e);return rS.reduce(function(n,r){return n.concat(t.filter(function(i){return i.phase===r}))},[])}function YS(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function XS(e){var t=e.reduce(function(n,r){var i=n[r.name];return n[r.name]=i?Object.assign({},i,r,{options:Object.assign({},i.options,r.options),data:Object.assign({},i.data,r.data)}):r,n},{});return Object.keys(t).map(function(n){return t[n]})}var zd={placement:"bottom",modifiers:[],strategy:"absolute"};function Bd(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return!t.some(function(r){return!(r&&typeof r.getBoundingClientRect=="function")})}function GS(e){e===void 0&&(e={});var t=e,n=t.defaultModifiers,r=n===void 0?[]:n,i=t.defaultOptions,o=i===void 0?zd:i;return function(a,l,c){c===void 0&&(c=o);var u={placement:"bottom",orderedModifiers:[],options:Object.assign({},zd,o),modifiersData:{},elements:{reference:a,popper:l},attributes:{},styles:{}},f=[],p=!1,d={state:u,setOptions:function(S){var g=typeof S=="function"?S(u.options):S;b(),u.options=Object.assign({},o,u.options,g),u.scrollParents={reference:_i(a)?no(a):a.contextElement?no(a.contextElement):[],popper:no(l)};var O=WS(XS([].concat(r,u.options.modifiers)));return u.orderedModifiers=O.filter(function(E){return E.enabled}),m(),d.update()},forceUpdate:function(){if(!p){var S=u.elements,g=S.reference,O=S.popper;if(!!Bd(g,O)){u.rects={reference:US(g,eo(O),u.options.strategy==="fixed"),popper:ec(O)},u.reset=!1,u.placement=u.options.placement,u.orderedModifiers.forEach(function(j){return u.modifiersData[j.name]=Object.assign({},j.data)});for(var E=0;E<u.orderedModifiers.length;E++){if(u.reset===!0){u.reset=!1,E=-1;continue}var $=u.orderedModifiers[E],R=$.fn,T=$.options,P=T===void 0?{}:T,N=$.name;typeof R=="function"&&(u=R({state:u,options:P,name:N,instance:d})||u)}}}},update:YS(function(){return new Promise(function(v){d.forceUpdate(),v(u)})}),destroy:function(){b(),p=!0}};if(!Bd(a,l))return d;d.setOptions(c).then(function(v){!p&&c.onFirstUpdate&&c.onFirstUpdate(v)});function m(){u.orderedModifiers.forEach(function(v){var S=v.name,g=v.options,O=g===void 0?{}:g,E=v.effect;if(typeof E=="function"){var $=E({state:u,name:S,instance:d,options:O}),R=function(){};f.push($||R)}})}function b(){f.forEach(function(v){return v()}),f=[]}return d}}var ZS=[yS,FS,gS,sS,LS,AS,zS,pS,RS],JS=GS({defaultModifiers:ZS});function QS(){var e=window.navigator.userAgent,t=e.indexOf("MSIE ");if(t>0)return parseInt(e.substring(t+5,e.indexOf(".",t)),10);var n=e.indexOf("Trident/");if(n>0){var r=e.indexOf("rv:");return parseInt(e.substring(r+3,e.indexOf(".",r)),10)}var i=e.indexOf("Edge/");return i>0?parseInt(e.substring(i+5,e.indexOf(".",i)),10):-1}let Ds;function sc(){sc.init||(sc.init=!0,Ds=QS()!==-1)}var Fs={name:"ResizeObserver",props:{emitOnMount:{type:Boolean,default:!1},ignoreWidth:{type:Boolean,default:!1},ignoreHeight:{type:Boolean,default:!1}},emits:["notify"],mounted(){sc(),Xo(()=>{this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitOnMount&&this.emitSize()});const e=document.createElement("object");this._resizeObject=e,e.setAttribute("aria-hidden","true"),e.setAttribute("tabindex",-1),e.onload=this.addResizeHandlers,e.type="text/html",Ds&&this.$el.appendChild(e),e.data="about:blank",Ds||this.$el.appendChild(e)},beforeUnmount(){this.removeResizeHandlers()},methods:{compareAndNotify(){(!this.ignoreWidth&&this._w!==this.$el.offsetWidth||!this.ignoreHeight&&this._h!==this.$el.offsetHeight)&&(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitSize())},emitSize(){this.$emit("notify",{width:this._w,height:this._h})},addResizeHandlers(){this._resizeObject.contentDocument.defaultView.addEventListener("resize",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers(){this._resizeObject&&this._resizeObject.onload&&(!Ds&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener("resize",this.compareAndNotify),this.$el.removeChild(this._resizeObject),this._resizeObject.onload=null,this._resizeObject=null)}}};const qS=Su("data-v-b329ee4c");yu("data-v-b329ee4c");const _S={class:"resize-observer",tabindex:"-1"};bu();const e1=qS((e,t,n,r,i,o)=>(Ie(),ke("div",_S)));Fs.render=e1;Fs.__scopeId="data-v-b329ee4c";Fs.__file="src/components/ResizeObserver.vue";function io(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?io=function(t){return typeof t}:io=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},io(e)}function Hd(e,t,n,r,i,o,s){try{var a=e[o](s),l=a.value}catch(c){n(c);return}a.done?t(l):Promise.resolve(l).then(r,i)}function hr(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var o=e.apply(t,n);function s(l){Hd(o,r,i,s,a,"next",l)}function a(l){Hd(o,r,i,s,a,"throw",l)}s(void 0)})}}function t1(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function kd(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function Xt(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?kd(Object(n),!0).forEach(function(r){t1(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):kd(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function Ud(e){return n1(e)||r1(e)||Kd(e)||i1()}function n1(e){if(Array.isArray(e))return ac(e)}function r1(e){if(typeof Symbol!="undefined"&&Symbol.iterator in Object(e))return Array.from(e)}function Kd(e,t){if(!!e){if(typeof e=="string")return ac(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ac(e,t)}}function ac(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function i1(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
|
15 |
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function lc(e,t){var n;if(typeof Symbol=="undefined"||e[Symbol.iterator]==null){if(Array.isArray(e)||(n=Kd(e))||t&&e&&typeof e.length=="number"){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(l){throw l},f:i}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
|
16 |
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var o=!0,s=!1,a;return{s:function(){n=e[Symbol.iterator]()},n:function(){var l=n.next();return o=l.done,l},e:function(l){s=!0,a=l},f:function(){try{!o&&n.return!=null&&n.return()}finally{if(s)throw a}}}}function Wd(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(io(t[n])==="object"&&e[n]?Wd(e[n],t[n]):e[n]=t[n])}var mr={disabled:!1,offset:[0,5],container:"body",boundary:void 0,instantMove:!1,disposeTimeout:5e3,popperTriggers:[],strategy:"absolute",modifiers:[],popperOptions:{},themes:{tooltip:{placement:"top",triggers:["hover","focus","touch"],hideTriggers:function(t){return[].concat(Ud(t),["click"])},delay:{show:200,hide:0},handleResize:!1,html:!1,loadingContent:"..."},dropdown:{placement:"bottom",triggers:["click"],delay:0,handleResize:!0,autoHide:!0},menu:{$extend:"dropdown",triggers:["hover","focus"],popperTriggers:["hover","focus"],delay:{show:0,hide:400}}}};function He(e,t){var n=mr.themes[e]||{},r;do r=n[t],typeof r=="undefined"?n.$extend?n=mr.themes[n.$extend]||{}:(n=null,r=mr[t]):n=null;while(n);return r}function o1(e){var t=[e],n=mr.themes[e]||{};do n.$extend&&!n.$resetCss?(t.push(n.$extend),n=mr.themes[n.$extend]||{}):n=null;while(n);return t.map(function(r){return"v-popper--theme-".concat(r)})}var js=!1;if(typeof window!="undefined"){js=!1;try{var s1=Object.defineProperty({},"passive",{get:function(){js=!0}});window.addEventListener("test",null,s1)}catch(e){}}var Yd=!1;typeof window!="undefined"&&typeof navigator!="undefined"&&(Yd=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream);function Vs(e,t,n){var r=e.find(function(i){return i.name===t});r||(r={name:t,options:{}},e.push(r)),Object.assign(r.options,n)}var Xd={hover:"mouseenter",focus:"focus",click:"click",touch:"touchstart"},Gd={hover:"mouseleave",focus:"blur",click:"click",touch:"touchend"};function a1(e,t){var n=e.indexOf(t);n!==-1&&e.splice(n,1)}var Jr=[],Qr=null,cc=function(){};typeof window!="undefined"&&(cc=window.Element);var Zd=function(){return{name:"VPopper",props:{theme:{type:String,required:!0},targetNodes:{type:Function,required:!0},referenceNode:{type:Function,required:!0},popperNode:{type:Function,required:!0},arrowNode:{type:Function,default:null},shown:{type:Boolean,default:!1},showGroup:{type:String,default:null},ariaId:{default:null},disabled:{type:Boolean,default:function(t){return He(t.theme,"disabled")}},placement:{type:String,default:function(t){return He(t.theme,"placement")},validator:function(t){return As.includes(t)}},delay:{type:[String,Number,Object],default:function(t){return He(t.theme,"delay")}},offset:{type:[Array,Function],default:function(t){return He(t.theme,"offset")}},triggers:{type:Array,default:function(t){return He(t.theme,"triggers")}},showTriggers:{type:[Array,Function],default:function(t){return He(t.theme,"showTriggers")}},hideTriggers:{type:[Array,Function],default:function(t){return He(t.theme,"hideTriggers")}},popperTriggers:{type:Array,default:function(t){return He(t.theme,"popperTriggers")}},popperShowTriggers:{type:[Array,Function],default:function(t){return He(t.theme,"popperShowTriggers")}},popperHideTriggers:{type:[Array,Function],default:function(t){return He(t.theme,"popperHideTriggers")}},container:{type:[String,Object,cc,Boolean],default:function(t){return He(t.theme,"container")}},boundary:{type:[String,cc],default:function(t){return He(t.theme,"boundary")}},strategy:{type:String,validator:function(t){return["absolute","fixed"].includes(t)},default:function(t){return He(t.theme,"strategy")}},modifiers:{type:Array,default:function(t){return He(t.theme,"modifiers")}},popperOptions:{type:Object,default:function(t){return He(t.theme,"popperOptions")}},autoHide:{type:Boolean,default:function(t){return He(t.theme,"autoHide")}},handleResize:{type:Boolean,default:function(t){return He(t.theme,"handleResize")}},instantMove:{type:Boolean,default:function(t){return He(t.theme,"instantMove")}},eagerMount:{type:Boolean,default:function(t){return He(t.theme,"eagerMount")}}},emits:["show","hide","update:shown","apply-show","apply-hide","close-group","close-directive","auto-hide","resize","dispose"],data:function(){return{isShown:!1,isMounted:!1,skipTransition:!1,classes:{showFrom:!1,showTo:!1,hideFrom:!1,hideTo:!0}}},computed:{popperId:function(){return this.ariaId!=null?this.ariaId:this.randomId},shouldMountContent:function(){return this.eagerMount||this.isMounted},slotData:function(){return{popperId:this.popperId,isShown:this.isShown,shouldMountContent:this.shouldMountContent,skipTransition:this.skipTransition,autoHide:this.autoHide,hide:this.hide,handleResize:this.handleResize,onResize:this.onResize,classes:Xt({},this.classes)}}},watch:{shown:"$_autoShowHide",disabled:function(t){t?this.dispose():this.init()},container:function(){var t=this;return hr(function*(){t.isShown&&t.popperInstance&&(t.$_ensureContainer(),yield t.popperInstance.update())})()},triggers:function(){this.$_removeEventListeners(),this.$_addEventListeners()},placement:"$_refreshPopperOptions",offset:"$_refreshPopperOptions",boundary:"$_refreshPopperOptions",strategy:"$_refreshPopperOptions",modifiers:"$_refreshPopperOptions",popperOptions:{handler:"$_refreshPopperOptions",deep:!0}},created:function(){this.randomId="popper_".concat([Math.random(),Date.now()].map(function(t){return t.toString(36).substr(2,10)}).join("_"))},mounted:function(){this.init()},activated:function(){this.$_autoShowHide()},deactivated:function(){this.hide()},beforeUnmount:function(){this.dispose()},methods:{show:function(){var t=this,n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=n.event,i=n.skipDelay,o=i===void 0?!1:i,s=n.force,a=s===void 0?!1:s;(a||!this.disabled)&&(this.$_scheduleShow(r,o),this.$emit("show"),this.$_showFrameLocked=!0,requestAnimationFrame(function(){t.$_showFrameLocked=!1})),this.$emit("update:shown",!0)},hide:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=t.event,r=t.skipDelay,i=r===void 0?!1:r;this.$_scheduleHide(n,i),this.$emit("hide"),this.$emit("update:shown",!1)},init:function(){this.$_isDisposed=!1,this.isMounted=!1,this.$_events=[],this.$_preventShow=!1,this.$_targetNodes=this.targetNodes().filter(function(t){return t.nodeType===t.ELEMENT_NODE}),this.$_popperNode=this.popperNode(),this.$_swapTargetAttrs("title","data-original-title"),this.$_detachPopperNode(),this.triggers.length&&this.$_addEventListeners(),this.shown&&this.show()},dispose:function(){this.$_isDisposed=!0,this.$_removeEventListeners(),this.hide({skipDelay:!0}),this.popperInstance&&(this.popperInstance.destroy(),this.$_detachPopperNode()),this.isMounted=!1,this.popperInstance=null,this.isShown=!1,this.$_swapTargetAttrs("data-original-title","title"),this.$emit("dispose")},onResize:function(){var t=this;return hr(function*(){t.isShown&&t.popperInstance&&(yield t.popperInstance.update(),t.$emit("resize"))})()},$_getPopperOptions:function(){var t=this,n=Xt(Xt({},this.popperOptions),{},{placement:this.placement,strategy:this.strategy,modifiers:this.modifiers,onFirstUpdate:function(){var r=hr(function*(o){t.popperOptions.onFirstUpdate&&t.popperOptions.onFirstUpdate(o),yield t.$_applyShowEffect()});function i(o){return r.apply(this,arguments)}return i}()});return n.modifiers||(n.modifiers=[]),Vs(n.modifiers,"arrow",{element:this.arrowNode&&this.arrowNode()||"[data-popper-arrow]"}),this.offset&&Vs(n.modifiers,"offset",{offset:this.offset}),this.boundary&&Vs(n.modifiers,"preventOverflow",{boundary:this.boundary}),this.isShown||Vs(n.modifiers,"eventListeners",{enabled:!1}),n},$_refreshPopperOptions:function(){var t=this;return hr(function*(){t.popperInstance&&(yield t.popperInstance.setOptions(t.$_getPopperOptions()))})()},$_scheduleShow:function(){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(this.$_hideInProgress=!1,clearTimeout(this.$_scheduleTimer),Qr&&this.instantMove&&Qr.instantMove){Qr.$_applyHide(!0),this.$_applyShow(!0);return}t?this.$_applyShow():this.$_scheduleTimer=setTimeout(this.$_applyShow.bind(this),this.$_computeDelay("show"))},$_scheduleHide:function(){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;this.$_hideInProgress=!0,clearTimeout(this.$_scheduleTimer),this.isShown&&(Qr=this),t?this.$_applyHide():this.$_scheduleTimer=setTimeout(this.$_applyHide.bind(this),this.$_computeDelay("hide"))},$_computeDelay:function(t){var n=this.delay;return parseInt(n&&n[t]||n||0)},$_applyShow:function(){var t=arguments,n=this;return hr(function*(){var r=t.length>0&&t[0]!==void 0?t[0]:!1;clearTimeout(n.$_disposeTimer),clearTimeout(n.$_scheduleTimer),n.skipTransition=r,!n.isShown&&(n.isMounted||(n.$_ensureContainer(),n.isMounted=!0),n.popperInstance?(yield n.popperInstance.update(),yield n.$_refreshPopperOptions(),yield n.$_applyShowEffect()):n.popperInstance=JS(n.referenceNode(),n.$_popperNode,n.$_getPopperOptions()))})()},$_applyShowEffect:function(){var t=this;return hr(function*(){if(!t.$_hideInProgress){t.isShown=!0,t.$_applyAttrsToTarget({"aria-describedby":t.popperId,"data-popper-shown":""});var n=t.showGroup;if(n)for(var r,i=0;i<Jr.length;i++)r=Jr[i],r.showGroup!==n&&(r.hide(),r.$emit("close-group"));Jr.push(t),t.$emit("apply-show"),t.$_popperNode.setAttribute("data-popper-placement",t.popperInstance.state.placement),t.classes.showFrom=!0,t.classes.showTo=!1,t.classes.hideFrom=!1,t.classes.hideTo=!1,yield Qd(),t.classes.showFrom=!1,t.classes.showTo=!0}})()},$_applyHide:function(){var t=arguments,n=this;return hr(function*(){var r=t.length>0&&t[0]!==void 0?t[0]:!1;if(clearTimeout(n.$_scheduleTimer),!!n.isShown){n.skipTransition=r,a1(Jr,n),Qr===n&&(Qr=null),n.isShown=!1,n.popperInstance&&(yield n.$_refreshPopperOptions()),n.$_applyAttrsToTarget({"aria-describedby":void 0,"data-popper-shown":void 0}),clearTimeout(n.$_disposeTimer);var i=He(n.theme,"disposeTimeout");i!==null&&(n.$_disposeTimer=setTimeout(function(){n.$_popperNode&&(n.$_detachPopperNode(),n.isMounted=!1)},i)),n.$emit("apply-hide"),n.classes.showFrom=!1,n.classes.showTo=!1,n.classes.hideFrom=!0,n.classes.hideTo=!1,yield Qd(),n.classes.hideFrom=!1,n.classes.hideTo=!0}})()},$_autoShowHide:function(){this.shown?this.show():this.hide()},$_ensureContainer:function(){var t=this.container;if(typeof t=="string"?t=window.document.querySelector(t):t===!1&&(t=this.$_targetNodes[0].parentNode),!t)throw new Error("No container for popover: "+this.container);t.appendChild(this.$_popperNode)},$_addEventListeners:function(){var t=this,n=function(s,a,l,c,u){var f=l;c!=null&&(f=typeof c=="function"?c(f):c),f.forEach(function(p){var d=a[p];d&&(t.$_events.push({targetNodes:s,eventType:d,handler:u}),s.forEach(function(m){return m.addEventListener(d,u)}))})},r=function(s){t.isShown&&!t.$_hideInProgress||(s.usedByTooltip=!0,!t.$_preventShow&&t.show({event:s}))};n(this.$_targetNodes,Xd,this.triggers,this.showTriggers,r),n([this.$_popperNode],Xd,this.popperTriggers,this.popperShowTriggers,r);var i=function(s){s.usedByTooltip||t.hide({event:s})};n(this.$_targetNodes,Gd,this.triggers,this.hideTriggers,i),n([this.$_popperNode],Gd,this.popperTriggers,this.popperHideTriggers,i)},$_removeEventListeners:function(){this.$_events.forEach(function(t){var n=t.targetNodes,r=t.eventType,i=t.handler;n.forEach(function(o){return o.removeEventListener(r,i)})}),this.$_events=[]},$_handleGlobalClose:function(t){var n=this,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;this.$_showFrameLocked||(this.hide({event:t}),t.closePopover?this.$emit("close-directive"):this.$emit("auto-hide"),r&&(this.$_preventShow=!0,setTimeout(function(){n.$_preventShow=!1},300)))},$_detachPopperNode:function(){this.$_popperNode.parentNode&&this.$_popperNode.parentNode.removeChild(this.$_popperNode)},$_swapTargetAttrs:function(t,n){var r=lc(this.$_targetNodes),i;try{for(r.s();!(i=r.n()).done;){var o=i.value,s=o.getAttribute(t);s&&(o.removeAttribute(t),o.setAttribute(n,s))}}catch(a){r.e(a)}finally{r.f()}},$_applyAttrsToTarget:function(t){var n=lc(this.$_targetNodes),r;try{for(n.s();!(r=n.n()).done;){var i=r.value;for(var o in t){var s=t[o];s==null?i.removeAttribute(o):i.setAttribute(o,s)}}}catch(a){n.e(a)}finally{n.f()}}},render:function(){return this.$slots.default(this.slotData)}}};typeof document!="undefined"&&typeof window!="undefined"&&(Yd?document.addEventListener("touchend",c1,js?{passive:!0,capture:!0}:!0):window.addEventListener("click",l1,!0));function l1(e){Jd(e)}function c1(e){Jd(e,!0)}function Jd(e){for(var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=function(o){var s=Jr[o],a=s.popperNode(),l=a.contains(e.target);requestAnimationFrame(function(){(e.closeAllPopover||e.closePopover&&l||s.autoHide&&!l)&&s.$_handleGlobalClose(e,t)})},r=0;r<Jr.length;r++)n(r)}function Qd(){return new Promise(function(e){return requestAnimationFrame(e)})}var qd={computed:{themeClass:function(){return o1(this.theme)}}},zs={name:"VPopperContent",components:{ResizeObserver:Fs},mixins:[qd],props:{popperId:String,theme:String,shown:Boolean,mounted:Boolean,skipTransition:Boolean,autoHide:Boolean,handleResize:Boolean,classes:Object},emits:["hide","resize"]},u1={class:"v-popper__wrapper"},f1={ref:"inner",class:"v-popper__inner"},p1={ref:"arrow",class:"v-popper__arrow-container"},d1=he("div",{class:"v-popper__arrow"},null,-1);function h1(e,t,n,r,i,o){var s=er("ResizeObserver");return Ie(),ke("div",{id:n.popperId,ref:"popover",class:["v-popper__popper",[e.themeClass,{"v-popper__popper--shown":n.shown,"v-popper__popper--hidden":!n.shown,"v-popper__popper--show-from":n.classes.showFrom,"v-popper__popper--show-to":n.classes.showTo,"v-popper__popper--hide-from":n.classes.hideFrom,"v-popper__popper--hide-to":n.classes.hideTo,"v-popper__popper--skip-transition":n.skipTransition}]],"aria-hidden":n.shown?"false":"true",tabindex:n.autoHide?0:void 0,onKeyup:t[2]||(t[2]=Dt(function(a){return n.autoHide&&e.$emit("hide")},["esc"]))},[he("div",u1,[he("div",f1,[n.mounted?(Ie(),ke(Ye,{key:0},[he("div",null,[qe(e.$slots,"default")]),n.handleResize?(Ie(),ke(s,{key:0,onNotify:t[1]||(t[1]=function(a){return e.$emit("resize",a)})})):Lt("v-if",!0)],64)):Lt("v-if",!0)],512),he("div",p1,[d1],512)])],42,["id","aria-hidden","tabindex"])}zs.render=h1;zs.__file="src/components/PopperContent.vue";var _d={methods:{show:function(){var t;return(t=this.$refs.popper).show.apply(t,arguments)},hide:function(){var t;return(t=this.$refs.popper).hide.apply(t,arguments)},dispose:function(){var t;return(t=this.$refs.popper).dispose.apply(t,arguments)},onResize:function(){var t;return(t=this.$refs.popper).onResize.apply(t,arguments)}}},oo={name:"VPopperWrapper",components:{Popper:Zd(),PopperContent:zs},mixins:[_d,qd],inheritAttrs:!1,props:{theme:{type:String,default:null}},computed:{finalTheme:function(){var t;return(t=this.theme)!==null&&t!==void 0?t:this.$options.vPopperTheme}},methods:{getTargetNodes:function(){var t=Ud(this.$refs.reference.children);return t.slice(0,t.length-1).filter(Boolean)}}};function m1(e,t,n,r,i,o){var s=er("PopperContent"),a=er("Popper");return Ie(),ke(a,Ei({ref:"popper"},e.$attrs,{theme:o.finalTheme,"target-nodes":o.getTargetNodes,"reference-node":function(){return e.$refs.reference},"popper-node":function(){return e.$refs.popperContent.$el},"arrow-node":function(){return e.$refs.popperContent.$refs.arrow}}),{default:qt(function(l){var c=l.popperId,u=l.isShown,f=l.shouldMountContent,p=l.skipTransition,d=l.autoHide,m=l.hide,b=l.handleResize,v=l.onResize,S=l.classes;return[he("div",{ref:"reference",class:["v-popper",[e.themeClass,{"v-popper--shown":u}]]},[qe(e.$slots,"default"),he(s,{ref:"popperContent","popper-id":c,theme:o.finalTheme,shown:u,mounted:f,"skip-transition":p,"auto-hide":d,"handle-resize":b,classes:S,onHide:m,onResize:v},{default:qt(function(){return[qe(e.$slots,"popper",{shown:u})]}),_:2},1032,["popper-id","theme","shown","mounted","skip-transition","auto-hide","handle-resize","classes","onHide","onResize"])],2)]}),_:3},16,["theme","target-nodes","reference-node","popper-node","arrow-node"])}oo.render=m1;oo.__file="src/components/PopperWrapper.vue";var uc=Xt(Xt({},oo),{},{name:"VDropdown",vPopperTheme:"dropdown"});uc.__file="src/components/Dropdown.vue";var fc=Xt(Xt({},oo),{},{name:"VMenu",vPopperTheme:"menu"});fc.__file="src/components/Menu.vue";var pc=Xt(Xt({},oo),{},{name:"VTooltip",vPopperTheme:"tooltip"});pc.__file="src/components/Tooltip.vue";var dc={name:"VTooltipDirective",components:{Popper:Zd(),PopperContent:zs},mixins:[_d],inheritAttrs:!1,props:{theme:{type:String,default:"tooltip"},html:{type:Boolean,default:function(t){return He(t.theme,"html")}},content:{type:[String,Number,Function],default:null},loadingContent:{type:String,default:function(t){return He(t.theme,"loadingContent")}}},data:function(){return{asyncContent:null}},computed:{isContentAsync:function(){return typeof this.content=="function"},loading:function(){return this.isContentAsync&&this.asyncContent==null},finalContent:function(){return this.isContentAsync?this.loading?this.loadingContent:this.asyncContent:this.content}},watch:{content:{handler:function(){this.fetchContent(!0)},immediate:!0},finalContent:function(t){var n=this;this.$nextTick(function(){n.$refs.popper.onResize()})}},created:function(){this.$_fetchId=0},methods:{fetchContent:function(t){var n=this;if(typeof this.content=="function"&&this.$_isShown&&(t||!this.$_loading&&this.asyncContent==null)){this.asyncContent=null,this.$_loading=!0;var r=++this.$_fetchId,i=this.content(this);i.then?i.then(function(o){return n.onResult(r,o)}):this.onResult(r,i)}},onResult:function(t,n){t===this.$_fetchId&&(this.$_loading=!1,this.asyncContent=n)},onShow:function(){this.$_isShown=!0,this.fetchContent()},onHide:function(){this.$_isShown=!1}}};function g1(e,t,n,r,i,o){var s=er("PopperContent"),a=er("Popper");return Ie(),ke(a,Ei({ref:"popper"},e.$attrs,{theme:n.theme,"popper-node":function(){return e.$refs.popperContent.$el},"arrow-node":function(){return e.$refs.popperContent.$refs.arrow},onApplyShow:o.onShow,onApplyHide:o.onHide}),{default:qt(function(l){var c=l.popperId,u=l.isShown,f=l.shouldMountContent,p=l.skipTransition,d=l.autoHide,m=l.hide,b=l.handleResize,v=l.onResize,S=l.classes;return[he(s,{ref:"popperContent",class:{"v-popper--tooltip-loading":o.loading},"popper-id":c,theme:n.theme,shown:u,mounted:f,"skip-transition":p,"auto-hide":d,"handle-resize":b,classes:S,onHide:m,onResize:v},{default:qt(function(){return[n.html?(Ie(),ke("div",{key:0,innerHTML:o.finalContent},null,8,["innerHTML"])):(Ie(),ke("div",{key:1,textContent:Jt(o.finalContent)},null,8,["textContent"]))]}),_:2},1032,["class","popper-id","theme","shown","mounted","skip-transition","auto-hide","handle-resize","classes","onHide","onResize"])]}),_:1},16,["theme","popper-node","arrow-node","onApplyShow","onApplyHide"])}dc.render=g1;dc.__file="src/components/TooltipDirective.vue";var eh="v-popper--has-tooltip";function v1(e,t){var n=e.placement;if(!n&&t){var r=lc(As),i;try{for(r.s();!(i=r.n()).done;){var o=i.value;t[o]&&(n=o)}}catch(s){r.e(s)}finally{r.f()}}return n||(n=He(e.theme||"tooltip","placement")),n}function th(e,t,n){var r,i=io(t);return i==="string"?r={content:t}:t&&i==="object"?r=t:r={content:!1},r.placement=v1(r,n),r.targetNodes=function(){return[e]},r.referenceNode=function(){return e},r}function y1(e,t,n){var r=th(e,t,n),i=e.$_popper=ip({name:"VTooltipDirective",data:function(){return{options:r}},render:function(){return tl(dc,Xt(Xt({},this.options),{},{ref:"tooltip"}))}}),o=document.createElement("div");return document.body.appendChild(o),i.mount(o),e.classList&&e.classList.add(eh),i}function nh(e){e.$_popper&&(e.$_popper.unmount(),delete e.$_popper,delete e.$_popperOldShown),e.classList&&e.classList.remove(eh)}function rh(e,t){var n=t.value,r=t.modifiers,i=th(e,n,r);if(!i.content||He(i.theme||"tooltip","disabled"))nh(e);else{var o;e.$_popper?(o=e.$_popper,o.options=i):o=y1(e,n,r),typeof n.shown!="undefined"&&n.shown!==e.$_popperOldShown&&(e.$_popperOldShown=n.shown,n.shown?o.$refs.tooltip.show():o.$refs.tooltip.hide())}}var b1={beforeMount:rh,updated:rh,beforeUnmount:function(t){nh(t)}};function ih(e){e.addEventListener("click",sh),e.addEventListener("touchstart",ah,js?{passive:!0}:!1)}function oh(e){e.removeEventListener("click",sh),e.removeEventListener("touchstart",ah),e.removeEventListener("touchend",lh),e.removeEventListener("touchcancel",ch)}function sh(e){var t=e.currentTarget;e.closePopover=!t.$_vclosepopover_touch,e.closeAllPopover=t.$_closePopoverModifiers&&!!t.$_closePopoverModifiers.all}function ah(e){if(e.changedTouches.length===1){var t=e.currentTarget;t.$_vclosepopover_touch=!0;var n=e.changedTouches[0];t.$_vclosepopover_touchPoint=n,t.addEventListener("touchend",lh),t.addEventListener("touchcancel",ch)}}function lh(e){var t=e.currentTarget;if(t.$_vclosepopover_touch=!1,e.changedTouches.length===1){var n=e.changedTouches[0],r=t.$_vclosepopover_touchPoint;e.closePopover=Math.abs(n.screenY-r.screenY)<20&&Math.abs(n.screenX-r.screenX)<20,e.closeAllPopover=t.$_closePopoverModifiers&&!!t.$_closePopoverModifiers.all}}function ch(e){var t=e.currentTarget;t.$_vclosepopover_touch=!1}var S1={beforeMount:function(t,n){var r=n.value,i=n.modifiers;t.$_closePopoverModifiers=i,(typeof r=="undefined"||r)&&ih(t)},updated:function(t,n){var r=n.value,i=n.oldValue,o=n.modifiers;t.$_closePopoverModifiers=o,r!==i&&(typeof r=="undefined"||r?ih(t):oh(t))},beforeUnmount:function(t){oh(t)}};function hc(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};hc.installed||(hc.installed=!0,Wd(mr,t),e.directive("tooltip",b1),e.directive("close-popper",S1),e.component("v-tooltip",pc),e.component("VTooltip",pc),e.component("v-dropdown",uc),e.component("VDropdown",uc),e.component("v-menu",fc),e.component("VMenu",fc))}var w1={version:"4.0.0-alpha.1",install:hc,options:mr};export{Ye as F,O1 as V,dd as _,jg as a,Ho as b,Si as c,Lt as d,Nn as e,bu as f,he as g,ko as h,ke as i,Zt as j,qe as k,xr as l,bd as m,vn as n,Ie as o,yu as p,ip as q,er as r,fy as s,Jt as t,w1 as u,sr as v,qt as w};
|
lib/wcfm/wcfm-options.js
CHANGED
@@ -3,8 +3,8 @@ window["wcfmoptions"] = {};
|
|
3 |
|
4 |
window["wcfmoptions"]['poster'] = function(action, options, successCallback, errorCallback) {
|
5 |
|
6 |
-
console.log('wcfmoptions.poster called. Action: ' + action);
|
7 |
-
console.log('wcfmoptions.poster called. Options: ' + JSON.stringify(options));
|
8 |
|
9 |
// Call the API
|
10 |
jQuery.ajax({
|
@@ -22,14 +22,40 @@ window["wcfmoptions"]['poster'] = function(action, options, successCallback, err
|
|
22 |
console.log(errorThrown);
|
23 |
},
|
24 |
success: function(responseText) {
|
25 |
-
console.log('ajax response', responseText);
|
26 |
//response = "[{name:'hello'}]";
|
27 |
try {
|
28 |
responseObj = JSON.parse(responseText);
|
29 |
-
successCallback(responseObj);
|
30 |
} catch (e) {
|
31 |
-
|
|
|
|
|
|
|
32 |
}
|
|
|
33 |
}
|
34 |
});
|
35 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
4 |
window["wcfmoptions"]['poster'] = function(action, options, successCallback, errorCallback) {
|
5 |
|
6 |
+
//console.log('wcfmoptions.poster called. Action: ' + action);
|
7 |
+
//console.log('wcfmoptions.poster called. Options: ' + JSON.stringify(options));
|
8 |
|
9 |
// Call the API
|
10 |
jQuery.ajax({
|
22 |
console.log(errorThrown);
|
23 |
},
|
24 |
success: function(responseText) {
|
25 |
+
//console.log('ajax response', responseText);
|
26 |
//response = "[{name:'hello'}]";
|
27 |
try {
|
28 |
responseObj = JSON.parse(responseText);
|
|
|
29 |
} catch (e) {
|
30 |
+
console.log('The "' + action + '" response could not be parsed as JSON. ' + e.name + ':' + e.message);
|
31 |
+
console.log('response:' + responseText);
|
32 |
+
errorCallback(responseText);
|
33 |
+
return
|
34 |
}
|
35 |
+
successCallback(responseObj);
|
36 |
}
|
37 |
});
|
38 |
}
|
39 |
+
|
40 |
+
function adjustWCFMHeight() {
|
41 |
+
var usedHeight =
|
42 |
+
document.getElementById('wpadminbar').offsetHeight +
|
43 |
+
document.getElementById('wpfooter').offsetHeight +
|
44 |
+
document.getElementById('screen-meta').offsetHeight +
|
45 |
+
document.getElementById('wcfmintro').offsetHeight;
|
46 |
+
|
47 |
+
var wcfm = document.getElementById('webpconvert-filemanager');
|
48 |
+
|
49 |
+
var h = Math.max(document.body.clientHeight - usedHeight - 30, 300);
|
50 |
+
//console.log('setting height', h, document.body.clientHeight, usedHeight);
|
51 |
+
wcfm.style.height = h + 'px';
|
52 |
+
}
|
53 |
+
|
54 |
+
window.addEventListener('load', function(event) {
|
55 |
+
adjustWCFMHeight();
|
56 |
+
});
|
57 |
+
|
58 |
+
|
59 |
+
window.addEventListener('resize', function(event) {
|
60 |
+
adjustWCFMHeight();
|
61 |
+
});
|
lib/wcfm/wcfm.js
CHANGED
@@ -1 +1,27 @@
|
|
1 |
-
function e(e,t){const n=Object.create(null),o=e.split(",");for(let e=0;e<o.length;e++)n[o[e]]=!0;return t?e=>!!n[e.toLowerCase()]:e=>!!n[e]}const t=e("Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl"),n=e("itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly");function o(e){if(k(e)){const t={};for(let n=0;n<e.length;n++){const l=e[n],s=o(E(l)?i(l):l);if(s)for(const e in s)t[e]=s[e]}return t}if(F(e))return e}const l=/;(?![^(]*\))/g,s=/:(.+)/;function i(e){const t={};return e.split(l).forEach((e=>{if(e){const n=e.split(s);n.length>1&&(t[n[0].trim()]=n[1].trim())}})),t}function r(e){let t="";if(E(e))t=e;else if(k(e))for(let n=0;n<e.length;n++)t+=r(e[n])+" ";else if(F(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}function c(e,t){if(e===t)return!0;let n=O(e),o=O(t);if(n||o)return!(!n||!o)&&e.getTime()===t.getTime();if(n=k(e),o=k(t),n||o)return!(!n||!o)&&function(e,t){if(e.length!==t.length)return!1;let n=!0;for(let o=0;n&&o<e.length;o++)n=c(e[o],t[o]);return n}(e,t);if(n=F(e),o=F(t),n||o){if(!n||!o)return!1;if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e){const o=e.hasOwnProperty(n),l=t.hasOwnProperty(n);if(o&&!l||!o&&l||!c(e[n],t[n]))return!1}}return String(e)===String(t)}function a(e,t){return e.findIndex((e=>c(e,t)))}const u=e=>null==e?"":F(e)?JSON.stringify(e,d,2):String(e),d=(e,t)=>S(t)?{[`Map(${t.size})`]:[...t.entries()].reduce(((e,[t,n])=>(e[t+" =>"]=n,e)),{})}:C(t)?{[`Set(${t.size})`]:[...t.values()]}:!F(t)||k(t)||P(t)?t:String(t),p={},f=[],h=()=>{},m=()=>!1,v=/^on[^a-z]/,g=e=>v.test(e),y=e=>e.startsWith("onUpdate:"),b=Object.assign,_=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},w=Object.prototype.hasOwnProperty,x=(e,t)=>w.call(e,t),k=Array.isArray,S=e=>"[object Map]"===q(e),C=e=>"[object Set]"===q(e),O=e=>e instanceof Date,V=e=>"function"==typeof e,E=e=>"string"==typeof e,L=e=>"symbol"==typeof e,F=e=>null!==e&&"object"==typeof e,M=e=>F(e)&&V(e.then)&&V(e.catch),R=Object.prototype.toString,q=e=>R.call(e),P=e=>"[object Object]"===q(e),U=e=>E(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,I=e(",key,ref,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),z=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},D=/-(\w)/g,$=z((e=>e.replace(D,((e,t)=>t?t.toUpperCase():"")))),A=/\B([A-Z])/g,T=z((e=>e.replace(A,"-$1").toLowerCase())),j=z((e=>e.charAt(0).toUpperCase()+e.slice(1))),N=z((e=>e?"on"+j(e):"")),B=(e,t)=>e!==t&&(e==e||t==t),H=(e,t)=>{for(let n=0;n<e.length;n++)e[n](t)},W=(e,t,n)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},K=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Q=new WeakMap,G=[];let Y;const J=Symbol(""),X=Symbol("");function Z(e,t=p){(function(e){return e&&!0===e._isEffect})(e)&&(e=e.raw);const n=function(e,t){const n=function(){if(!n.active)return t.scheduler?void 0:e();if(!G.includes(n)){ne(n);try{return le.push(oe),oe=!0,G.push(n),Y=n,e()}finally{G.pop(),ie(),Y=G[G.length-1]}}};return n.id=te++,n.allowRecurse=!!t.allowRecurse,n._isEffect=!0,n.active=!0,n.raw=e,n.deps=[],n.options=t,n}(e,t);return t.lazy||n(),n}function ee(e){e.active&&(ne(e),e.options.onStop&&e.options.onStop(),e.active=!1)}let te=0;function ne(e){const{deps:t}=e;if(t.length){for(let n=0;n<t.length;n++)t[n].delete(e);t.length=0}}let oe=!0;const le=[];function se(){le.push(oe),oe=!1}function ie(){const e=le.pop();oe=void 0===e||e}function re(e,t,n){if(!oe||void 0===Y)return;let o=Q.get(e);o||Q.set(e,o=new Map);let l=o.get(n);l||o.set(n,l=new Set),l.has(Y)||(l.add(Y),Y.deps.push(l))}function ce(e,t,n,o,l,s){const i=Q.get(e);if(!i)return;const r=new Set,c=e=>{e&&e.forEach((e=>{(e!==Y||e.allowRecurse)&&r.add(e)}))};if("clear"===t)i.forEach(c);else if("length"===n&&k(e))i.forEach(((e,t)=>{("length"===t||t>=o)&&c(e)}));else switch(void 0!==n&&c(i.get(n)),t){case"add":k(e)?U(n)&&c(i.get("length")):(c(i.get(J)),S(e)&&c(i.get(X)));break;case"delete":k(e)||(c(i.get(J)),S(e)&&c(i.get(X)));break;case"set":S(e)&&c(i.get(J))}r.forEach((e=>{e.options.scheduler?e.options.scheduler(e):e()}))}const ae=new Set(Object.getOwnPropertyNames(Symbol).map((e=>Symbol[e])).filter(L)),ue=me(),de=me(!1,!0),pe=me(!0),fe=me(!0,!0),he={};function me(e=!1,t=!1){return function(n,o,l){if("__v_isReactive"===o)return!e;if("__v_isReadonly"===o)return e;if("__v_raw"===o&&l===(e?je:Te).get(n))return n;const s=k(n);if(s&&x(he,o))return Reflect.get(he,o,l);const i=Reflect.get(n,o,l);if(L(o)?ae.has(o):"__proto__"===o||"__v_isRef"===o)return i;if(e||re(n,0,o),t)return i;if(Je(i)){return!s||!U(o)?i.value:i}return F(i)?e?He(i):Be(i):i}}["includes","indexOf","lastIndexOf"].forEach((e=>{const t=Array.prototype[e];he[e]=function(...e){const n=Ye(this);for(let e=0,t=this.length;e<t;e++)re(n,0,e+"");const o=t.apply(n,e);return-1===o||!1===o?t.apply(n,e.map(Ye)):o}})),["push","pop","shift","unshift","splice"].forEach((e=>{const t=Array.prototype[e];he[e]=function(...e){se();const n=t.apply(this,e);return ie(),n}}));function ve(e=!1){return function(t,n,o,l){const s=t[n];if(!e&&(o=Ye(o),!k(t)&&Je(s)&&!Je(o)))return s.value=o,!0;const i=k(t)&&U(n)?Number(n)<t.length:x(t,n),r=Reflect.set(t,n,o,l);return t===Ye(l)&&(i?B(o,s)&&ce(t,"set",n,o):ce(t,"add",n,o)),r}}const ge={get:ue,set:ve(),deleteProperty:function(e,t){const n=x(e,t),o=(e[t],Reflect.deleteProperty(e,t));return o&&n&&ce(e,"delete",t,void 0),o},has:function(e,t){const n=Reflect.has(e,t);return L(t)&&ae.has(t)||re(e,0,t),n},ownKeys:function(e){return re(e,0,k(e)?"length":J),Reflect.ownKeys(e)}},ye={get:pe,set:(e,t)=>!0,deleteProperty:(e,t)=>!0},be=b({},ge,{get:de,set:ve(!0)}),_e=(b({},ye,{get:fe}),e=>F(e)?Be(e):e),we=e=>F(e)?He(e):e,xe=e=>e,ke=e=>Reflect.getPrototypeOf(e);function Se(e,t,n=!1,o=!1){const l=Ye(e=e.__v_raw),s=Ye(t);t!==s&&!n&&re(l,0,t),!n&&re(l,0,s);const{has:i}=ke(l),r=n?we:o?xe:_e;return i.call(l,t)?r(e.get(t)):i.call(l,s)?r(e.get(s)):void 0}function Ce(e,t=!1){const n=this.__v_raw,o=Ye(n),l=Ye(e);return e!==l&&!t&&re(o,0,e),!t&&re(o,0,l),e===l?n.has(e):n.has(e)||n.has(l)}function Oe(e,t=!1){return e=e.__v_raw,!t&&re(Ye(e),0,J),Reflect.get(e,"size",e)}function Ve(e){e=Ye(e);const t=Ye(this),n=ke(t).has.call(t,e),o=t.add(e);return n||ce(t,"add",e,e),o}function Ee(e,t){t=Ye(t);const n=Ye(this),{has:o,get:l}=ke(n);let s=o.call(n,e);s||(e=Ye(e),s=o.call(n,e));const i=l.call(n,e),r=n.set(e,t);return s?B(t,i)&&ce(n,"set",e,t):ce(n,"add",e,t),r}function Le(e){const t=Ye(this),{has:n,get:o}=ke(t);let l=n.call(t,e);l||(e=Ye(e),l=n.call(t,e));o&&o.call(t,e);const s=t.delete(e);return l&&ce(t,"delete",e,void 0),s}function Fe(){const e=Ye(this),t=0!==e.size,n=e.clear();return t&&ce(e,"clear",void 0,void 0),n}function Me(e,t){return function(n,o){const l=this,s=l.__v_raw,i=Ye(s),r=e?we:t?xe:_e;return!e&&re(i,0,J),s.forEach(((e,t)=>n.call(o,r(e),r(t),l)))}}function Re(e,t,n){return function(...o){const l=this.__v_raw,s=Ye(l),i=S(s),r="entries"===e||e===Symbol.iterator&&i,c="keys"===e&&i,a=l[e](...o),u=t?we:n?xe:_e;return!t&&re(s,0,c?X:J),{next(){const{value:e,done:t}=a.next();return t?{value:e,done:t}:{value:r?[u(e[0]),u(e[1])]:u(e),done:t}},[Symbol.iterator](){return this}}}}function qe(e){return function(...t){return"delete"!==e&&this}}const Pe={get(e){return Se(this,e)},get size(){return Oe(this)},has:Ce,add:Ve,set:Ee,delete:Le,clear:Fe,forEach:Me(!1,!1)},Ue={get(e){return Se(this,e,!1,!0)},get size(){return Oe(this)},has:Ce,add:Ve,set:Ee,delete:Le,clear:Fe,forEach:Me(!1,!0)},Ie={get(e){return Se(this,e,!0)},get size(){return Oe(this,!0)},has(e){return Ce.call(this,e,!0)},add:qe("add"),set:qe("set"),delete:qe("delete"),clear:qe("clear"),forEach:Me(!0,!1)};function ze(e,t){const n=t?Ue:e?Ie:Pe;return(t,o,l)=>"__v_isReactive"===o?!e:"__v_isReadonly"===o?e:"__v_raw"===o?t:Reflect.get(x(n,o)&&o in t?n:t,o,l)}["keys","values","entries",Symbol.iterator].forEach((e=>{Pe[e]=Re(e,!1,!1),Ie[e]=Re(e,!0,!1),Ue[e]=Re(e,!1,!0)}));const De={get:ze(!1,!1)},$e={get:ze(!1,!0)},Ae={get:ze(!0,!1)},Te=new WeakMap,je=new WeakMap;function Ne(e){return e.__v_skip||!Object.isExtensible(e)?0:function(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}((e=>q(e).slice(8,-1))(e))}function Be(e){return e&&e.__v_isReadonly?e:We(e,!1,ge,De)}function He(e){return We(e,!0,ye,Ae)}function We(e,t,n,o){if(!F(e))return e;if(e.__v_raw&&(!t||!e.__v_isReactive))return e;const l=t?je:Te,s=l.get(e);if(s)return s;const i=Ne(e);if(0===i)return e;const r=new Proxy(e,2===i?o:n);return l.set(e,r),r}function Ke(e){return Qe(e)?Ke(e.__v_raw):!(!e||!e.__v_isReactive)}function Qe(e){return!(!e||!e.__v_isReadonly)}function Ge(e){return Ke(e)||Qe(e)}function Ye(e){return e&&Ye(e.__v_raw)||e}function Je(e){return Boolean(e&&!0===e.__v_isRef)}const Xe={get:(e,t,n)=>{return Je(o=Reflect.get(e,t,n))?o.value:o;var o},set:(e,t,n,o)=>{const l=e[t];return Je(l)&&!Je(n)?(l.value=n,!0):Reflect.set(e,t,n,o)}};class Ze{constructor(e,t,n){this._setter=t,this._dirty=!0,this.__v_isRef=!0,this.effect=Z(e,{lazy:!0,scheduler:()=>{this._dirty||(this._dirty=!0,ce(Ye(this),"set","value"))}}),this.__v_isReadonly=n}get value(){return this._dirty&&(this._value=this.effect(),this._dirty=!1),re(Ye(this),0,"value"),this._value}set value(e){this._setter(e)}}function et(e,t,n,o){let l;try{l=o?e(...o):e()}catch(e){nt(e,t,n)}return l}function tt(e,t,n,o){if(V(e)){const l=et(e,t,n,o);return l&&M(l)&&l.catch((e=>{nt(e,t,n)})),l}const l=[];for(let s=0;s<e.length;s++)l.push(tt(e[s],t,n,o));return l}function nt(e,t,n,o=!0){t&&t.vnode;if(t){let o=t.parent;const l=t.proxy,s=n;for(;o;){const t=o.ec;if(t)for(let n=0;n<t.length;n++)if(!1===t[n](e,l,s))return;o=o.parent}const i=t.appContext.config.errorHandler;if(i)return void et(i,null,10,[e,l,s])}!function(e,t,n,o=!0){console.error(e)}(e,0,0,o)}let ot=!1,lt=!1;const st=[];let it=0;const rt=[];let ct=null,at=0;const ut=[];let dt=null,pt=0;const ft=Promise.resolve();let ht=null,mt=null;function vt(e){const t=ht||ft;return e?t.then(this?e.bind(this):e):t}function gt(e){st.length&&st.includes(e,ot&&e.allowRecurse?it+1:it)||e===mt||(st.push(e),yt())}function yt(){ot||lt||(lt=!0,ht=ft.then(kt))}function bt(e,t,n,o){k(e)?n.push(...e):t&&t.includes(e,e.allowRecurse?o+1:o)||n.push(e),yt()}function _t(e,t=null){if(rt.length){for(mt=t,ct=[...new Set(rt)],rt.length=0,at=0;at<ct.length;at++)ct[at]();ct=null,at=0,mt=null,_t(e,t)}}function wt(e){if(ut.length){const e=[...new Set(ut)];if(ut.length=0,dt)return void dt.push(...e);for(dt=e,dt.sort(((e,t)=>xt(e)-xt(t))),pt=0;pt<dt.length;pt++)dt[pt]();dt=null,pt=0}}const xt=e=>null==e.id?1/0:e.id;function kt(e){lt=!1,ot=!0,_t(e),st.sort(((e,t)=>xt(e)-xt(t)));try{for(it=0;it<st.length;it++){const e=st[it];e&&et(e,null,14)}}finally{it=0,st.length=0,wt(),ot=!1,ht=null,(st.length||ut.length)&&kt(e)}}function St(e,t,...n){const o=e.vnode.props||p;let l=n;const s=t.startsWith("update:"),i=s&&t.slice(7);if(i&&i in o){const e=("modelValue"===i?"model":i)+"Modifiers",{number:t,trim:s}=o[e]||p;s?l=n.map((e=>e.trim())):t&&(l=n.map(K))}let r=N($(t)),c=o[r];!c&&s&&(r=N(T(t)),c=o[r]),c&&tt(c,e,6,l);const a=o[r+"Once"];if(a){if(e.emitted){if(e.emitted[r])return}else(e.emitted={})[r]=!0;tt(a,e,6,l)}}function Ct(e,t,n=!1){if(!t.deopt&&void 0!==e.__emits)return e.__emits;const o=e.emits;let l={},s=!1;if(!V(e)){const o=e=>{s=!0,b(l,Ct(e,t,!0))};!n&&t.mixins.length&&t.mixins.forEach(o),e.extends&&o(e.extends),e.mixins&&e.mixins.forEach(o)}return o||s?(k(o)?o.forEach((e=>l[e]=null)):b(l,o),e.__emits=l):e.__emits=null}function Ot(e,t){return!(!e||!g(t))&&(t=t.replace(/Once$/,""),x(e,t[2].toLowerCase()+t.slice(3))||x(e,t.slice(2)))}let Vt=null;function Et(e){Vt=e}function Lt(e){const{type:t,vnode:n,proxy:o,withProxy:l,props:s,propsOptions:[i],slots:r,attrs:c,emit:a,render:u,renderCache:d,data:p,setupState:f,ctx:h}=e;let m;Vt=e;try{let e;if(4&n.shapeFlag){const t=l||o;m=to(u.call(t,t,d,s,f,p,h)),e=c}else{const n=t;0,m=to(n.length>1?n(s,{attrs:c,slots:r,emit:a}):n(s,null)),e=t.props?c:Mt(c)}let v=m;if(!1!==t.inheritAttrs&&e){const t=Object.keys(e),{shapeFlag:n}=v;t.length&&(1&n||6&n)&&(i&&t.some(y)&&(e=Rt(e,i)),v=Xn(v,e))}n.dirs&&(v.dirs=v.dirs?v.dirs.concat(n.dirs):n.dirs),n.transition&&(v.transition=n.transition),m=v}catch(t){nt(t,e,1),m=Jn($n)}return Vt=null,m}function Ft(e){const t=e.filter((e=>!(Wn(e)&&e.type===$n&&"v-if"!==e.children)));return 1===t.length&&Wn(t[0])?t[0]:null}const Mt=e=>{let t;for(const n in e)("class"===n||"style"===n||g(n))&&((t||(t={}))[n]=e[n]);return t},Rt=(e,t)=>{const n={};for(const o in e)y(o)&&o.slice(9)in t||(n[o]=e[o]);return n};function qt(e,t,n){const o=Object.keys(t);if(o.length!==Object.keys(e).length)return!0;for(let l=0;l<o.length;l++){const s=o[l];if(t[s]!==e[s]&&!Ot(n,s))return!0}return!1}function Pt(e){if(V(e)&&(e=e()),k(e)){e=Ft(e)}return to(e)}let Ut=0;const It=e=>Ut+=e;function zt(e,t,n={},o){let l=e[t];Ut++;const s=(Nn(),Hn(zn,{key:n.key},l?l(n):o?o():[],1===e._?64:-2));return Ut--,s}function Dt(e,t=Vt){if(!t)return e;const n=(...n)=>{Ut||Nn(!0);const o=Vt;Et(t);const l=e(...n);return Et(o),Ut||Bn(),l};return n._c=!0,n}let $t=null;const At=[];function Tt(e){At.push($t=e)}function jt(){At.pop(),$t=At[At.length-1]||null}function Nt(e){return t=>Dt((function(){Tt(e);const n=t.apply(this,arguments);return jt(),n}))}function Bt(e,t,n,o=!1){const l={},s={};W(s,Qn,1),Ht(e,t,l,s),n?e.props=o?l:We(l,!1,be,$e):e.type.props?e.props=l:e.props=s,e.attrs=s}function Ht(e,t,n,o){const[l,s]=e.propsOptions;if(t)for(const s in t){const i=t[s];if(I(s))continue;let r;l&&x(l,r=$(s))?n[r]=i:Ot(e.emitsOptions,s)||(o[s]=i)}if(s){const t=Ye(n);for(let o=0;o<s.length;o++){const i=s[o];n[i]=Wt(l,t,i,t[i],e)}}}function Wt(e,t,n,o,l){const s=e[n];if(null!=s){const e=x(s,"default");if(e&&void 0===o){const e=s.default;s.type!==Function&&V(e)?(xo(l),o=e(t),xo(null)):o=e}s[0]&&(x(t,n)||e?!s[1]||""!==o&&o!==T(n)||(o=!0):o=!1)}return o}function Kt(e,t,n=!1){if(!t.deopt&&e.__props)return e.__props;const o=e.props,l={},s=[];let i=!1;if(!V(e)){const o=e=>{i=!0;const[n,o]=Kt(e,t,!0);b(l,n),o&&s.push(...o)};!n&&t.mixins.length&&t.mixins.forEach(o),e.extends&&o(e.extends),e.mixins&&e.mixins.forEach(o)}if(!o&&!i)return e.__props=f;if(k(o))for(let e=0;e<o.length;e++){const t=$(o[e]);Qt(t)&&(l[t]=p)}else if(o)for(const e in o){const t=$(e);if(Qt(t)){const n=o[e],i=l[t]=k(n)||V(n)?{type:n}:n;if(i){const e=Jt(Boolean,i.type),n=Jt(String,i.type);i[0]=e>-1,i[1]=n<0||e<n,(e>-1||x(i,"default"))&&s.push(t)}}}return e.__props=[l,s]}function Qt(e){return"$"!==e[0]}function Gt(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:""}function Yt(e,t){return Gt(e)===Gt(t)}function Jt(e,t){if(k(t)){for(let n=0,o=t.length;n<o;n++)if(Yt(t[n],e))return n}else if(V(t))return Yt(t,e)?0:-1;return-1}function Xt(e,t,n=wo,o=!1){if(n){const l=n[e]||(n[e]=[]),s=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;se(),xo(n);const l=tt(t,n,e,o);return xo(null),ie(),l});return o?l.unshift(s):l.push(s),s}}const Zt=e=>(t,n=wo)=>!ko&&Xt(e,t,n),en=Zt("bm"),tn=Zt("m"),nn=Zt("bu"),on=Zt("u"),ln=Zt("bum"),sn=Zt("um"),rn=Zt("rtg"),cn=Zt("rtc"),an={};function un(e,t,n){return dn(e,t,n)}function dn(e,t,{immediate:n,deep:o,flush:l,onTrack:s,onTrigger:i}=p,r=wo){let c,a,u=!1;if(Je(e)?(c=()=>e.value,u=!!e._shallow):Ke(e)?(c=()=>e,o=!0):c=k(e)?()=>e.map((e=>Je(e)?e.value:Ke(e)?fn(e):V(e)?et(e,r,2):void 0)):V(e)?t?()=>et(e,r,2):()=>{if(!r||!r.isUnmounted)return a&&a(),et(e,r,3,[d])}:h,t&&o){const e=c;c=()=>fn(e())}const d=e=>{a=g.options.onStop=()=>{et(e,r,4)}};let f=k(e)?[]:an;const m=()=>{if(g.active)if(t){const e=g();(o||u||B(e,f))&&(a&&a(),tt(t,r,3,[e,f===an?void 0:f,d]),f=e)}else g()};let v;m.allowRecurse=!!t,v="sync"===l?m:"post"===l?()=>En(m,r&&r.suspense):()=>{!r||r.isMounted?function(e){bt(e,ct,rt,at)}(m):m()};const g=Z(c,{lazy:!0,onTrack:s,onTrigger:i,scheduler:v});return Oo(g),t?n?m():f=g():"post"===l?En(g,r&&r.suspense):g(),()=>{ee(g),r&&_(r.effects,g)}}function pn(e,t,n){const o=this.proxy;return dn(E(e)?()=>o[e]:e.bind(o),t.bind(o),n,this)}function fn(e,t=new Set){if(!F(e)||t.has(e))return e;if(t.add(e),Je(e))fn(e.value,t);else if(k(e))for(let n=0;n<e.length;n++)fn(e[n],t);else if(C(e)||S(e))e.forEach((e=>{fn(e,t)}));else for(const n in e)fn(e[n],t);return e}const hn=e=>e.type.__isKeepAlive;function mn(e,t,n=wo){const o=e.__wdc||(e.__wdc=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}e()});if(Xt(t,o,n),n){let e=n.parent;for(;e&&e.parent;)hn(e.parent.vnode)&&vn(o,t,n,e),e=e.parent}}function vn(e,t,n,o){const l=Xt(t,e,o,!0);sn((()=>{_(o[t],l)}),n)}const gn=e=>"_"===e[0]||"$stable"===e,yn=e=>k(e)?e.map(to):[to(e)],bn=(e,t,n)=>Dt((e=>yn(t(e))),n),_n=(e,t)=>{const n=e._ctx;for(const o in e){if(gn(o))continue;const l=e[o];if(V(l))t[o]=bn(0,l,n);else if(null!=l){const e=yn(l);t[o]=()=>e}}},wn=(e,t)=>{const n=yn(t);e.slots.default=()=>n};function xn(e,t){if(null===Vt)return e;const n=Vt.proxy,o=e.dirs||(e.dirs=[]);for(let e=0;e<t.length;e++){let[l,s,i,r=p]=t[e];V(l)&&(l={mounted:l,updated:l}),o.push({dir:l,instance:n,value:s,oldValue:void 0,arg:i,modifiers:r})}return e}function kn(e,t,n,o){const l=e.dirs,s=t&&t.dirs;for(let i=0;i<l.length;i++){const r=l[i];s&&(r.oldValue=s[i].value);const c=r.dir[o];c&&tt(c,n,8,[e.el,r,e,t])}}function Sn(){return{app:null,config:{isNativeTag:m,performance:!1,globalProperties:{},optionMergeStrategies:{},isCustomElement:m,errorHandler:void 0,warnHandler:void 0},mixins:[],components:{},directives:{},provides:Object.create(null)}}let Cn=0;function On(e,t){return function(n,o=null){null==o||F(o)||(o=null);const l=Sn(),s=new Set;let i=!1;const r=l.app={_uid:Cn++,_component:n,_props:o,_container:null,_context:l,version:Lo,get config(){return l.config},set config(e){},use:(e,...t)=>(s.has(e)||(e&&V(e.install)?(s.add(e),e.install(r,...t)):V(e)&&(s.add(e),e(r,...t))),r),mixin:e=>(l.mixins.includes(e)||(l.mixins.push(e),(e.props||e.emits)&&(l.deopt=!0)),r),component:(e,t)=>t?(l.components[e]=t,r):l.components[e],directive:(e,t)=>t?(l.directives[e]=t,r):l.directives[e],mount(s,c){if(!i){const a=Jn(n,o);return a.appContext=l,c&&t?t(a,s):e(a,s),i=!0,r._container=s,s.__vue_app__=r,a.component.proxy}},unmount(){i&&e(null,r._container)},provide:(e,t)=>(l.provides[e]=t,r)};return r}}const Vn={scheduler:gt,allowRecurse:!0},En=function(e,t){t&&t.pendingBranch?k(e)?t.effects.push(...e):t.effects.push(e):bt(e,dt,ut,pt)},Ln=(e,t,n,o,l)=>{if(k(e))return void e.forEach(((e,s)=>Ln(e,t&&(k(t)?t[s]:t),n,o,l)));let s;s=l?4&l.shapeFlag?l.component.proxy:l.el:null;const{i:i,r:r}=e,c=t&&t.r,a=i.refs===p?i.refs={}:i.refs,u=i.setupState;if(null!=c&&c!==r&&(E(c)?(a[c]=null,x(u,c)&&(u[c]=null)):Je(c)&&(c.value=null)),E(r)){const e=()=>{a[r]=s,x(u,r)&&(u[r]=s)};s?(e.id=-1,En(e,o)):e()}else if(Je(r)){const e=()=>{r.value=s};s?(e.id=-1,En(e,o)):e()}else V(r)&&et(r,n,12,[s,a])};function Fn(e){return function(e,t){const{insert:n,remove:o,patchProp:l,forcePatchProp:s,createElement:i,createText:r,createComment:c,setText:a,setElementText:u,parentNode:d,nextSibling:m,setScopeId:v=h,cloneNode:g,insertStaticContent:y}=e,_=(e,t,n,o=null,l=null,s=null,i=!1,r=!1)=>{e&&!Kn(e,t)&&(o=te(e),Q(e,l,s,!0),e=null),-2===t.patchFlag&&(r=!1,t.dynamicChildren=null);const{type:c,ref:a,shapeFlag:u}=t;switch(c){case Dn:w(e,t,n,o);break;case $n:k(e,t,n,o);break;case An:null==e&&S(t,n,o,i);break;case zn:q(e,t,n,o,l,s,i,r);break;default:1&u?C(e,t,n,o,l,s,i,r):6&u?P(e,t,n,o,l,s,i,r):(64&u||128&u)&&c.process(e,t,n,o,l,s,i,r,oe)}null!=a&&l&&Ln(a,e&&e.ref,l,s,t)},w=(e,t,o,l)=>{if(null==e)n(t.el=r(t.children),o,l);else{const n=t.el=e.el;t.children!==e.children&&a(n,t.children)}},k=(e,t,o,l)=>{null==e?n(t.el=c(t.children||""),o,l):t.el=e.el},S=(e,t,n,o)=>{[e.el,e.anchor]=y(e.children,t,n,o)},C=(e,t,n,o,l,s,i,r)=>{i=i||"svg"===t.type,null==e?O(t,n,o,l,s,i,r):L(e,t,l,s,i,r)},O=(e,t,o,s,r,c,a)=>{let d,p;const{type:f,props:h,shapeFlag:m,transition:v,scopeId:y,patchFlag:b,dirs:_}=e;if(e.el&&void 0!==g&&-1===b)d=e.el=g(e.el);else{if(d=e.el=i(e.type,c,h&&h.is),8&m?u(d,e.children):16&m&&E(e.children,d,null,s,r,c&&"foreignObject"!==f,a||!!e.dynamicChildren),_&&kn(e,null,s,"created"),h){for(const t in h)I(t)||l(d,t,null,h[t],c,e.children,s,r,X);(p=h.onVnodeBeforeMount)&&Mn(p,s,e)}V(d,y,e,s)}_&&kn(e,null,s,"beforeMount");const w=(!r||r&&!r.pendingBranch)&&v&&!v.persisted;w&&v.beforeEnter(d),n(d,t,o),((p=h&&h.onVnodeMounted)||w||_)&&En((()=>{p&&Mn(p,s,e),w&&v.enter(d),_&&kn(e,null,s,"mounted")}),r)},V=(e,t,n,o)=>{if(t&&v(e,t),o){const l=o.type.__scopeId;l&&l!==t&&v(e,l+"-s"),n===o.subTree&&V(e,o.vnode.scopeId,o.vnode,o.parent)}},E=(e,t,n,o,l,s,i,r=0)=>{for(let c=r;c<e.length;c++){const r=e[c]=i?no(e[c]):to(e[c]);_(null,r,t,n,o,l,s,i)}},L=(e,t,n,o,i,r)=>{const c=t.el=e.el;let{patchFlag:a,dynamicChildren:d,dirs:f}=t;a|=16&e.patchFlag;const h=e.props||p,m=t.props||p;let v;if((v=m.onVnodeBeforeUpdate)&&Mn(v,n,t,e),f&&kn(t,e,n,"beforeUpdate"),a>0){if(16&a)R(c,t,h,m,n,o,i);else if(2&a&&h.class!==m.class&&l(c,"class",null,m.class,i),4&a&&l(c,"style",h.style,m.style,i),8&a){const r=t.dynamicProps;for(let t=0;t<r.length;t++){const a=r[t],u=h[a],d=m[a];(d!==u||s&&s(c,a))&&l(c,a,u,d,i,e.children,n,o,X)}}1&a&&e.children!==t.children&&u(c,t.children)}else r||null!=d||R(c,t,h,m,n,o,i);const g=i&&"foreignObject"!==t.type;d?F(e.dynamicChildren,d,c,n,o,g):r||j(e,t,c,null,n,o,g),((v=m.onVnodeUpdated)||f)&&En((()=>{v&&Mn(v,n,t,e),f&&kn(t,e,n,"updated")}),o)},F=(e,t,n,o,l,s)=>{for(let i=0;i<t.length;i++){const r=e[i],c=t[i],a=r.type===zn||!Kn(r,c)||6&r.shapeFlag||64&r.shapeFlag?d(r.el):n;_(r,c,a,null,o,l,s,!0)}},R=(e,t,n,o,i,r,c)=>{if(n!==o){for(const a in o){if(I(a))continue;const u=o[a],d=n[a];(u!==d||s&&s(e,a))&&l(e,a,d,u,c,t.children,i,r,X)}if(n!==p)for(const s in n)I(s)||s in o||l(e,s,n[s],null,c,t.children,i,r,X)}},q=(e,t,o,l,s,i,c,a)=>{const u=t.el=e?e.el:r(""),d=t.anchor=e?e.anchor:r("");let{patchFlag:p,dynamicChildren:f}=t;p>0&&(a=!0),null==e?(n(u,o,l),n(d,o,l),E(t.children,o,d,s,i,c,a)):p>0&&64&p&&f?(F(e.dynamicChildren,f,o,s,i,c),(null!=t.key||s&&t===s.subTree)&&Rn(e,t,!0)):j(e,t,o,d,s,i,c,a)},P=(e,t,n,o,l,s,i,r)=>{null==e?512&t.shapeFlag?l.ctx.activate(t,n,o,i,r):U(t,n,o,l,s,i,r):z(e,t,r)},U=(e,t,n,o,l,s,i)=>{const r=e.component=function(e,t,n){const o=e.type,l=(t?t.appContext:e.appContext)||bo,s={uid:_o++,vnode:e,type:o,parent:t,appContext:l,root:null,next:null,subTree:null,update:null,render:null,proxy:null,withProxy:null,effects:null,provides:t?t.provides:Object.create(l.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Kt(o,l),emitsOptions:Ct(o,l),emit:null,emitted:null,ctx:p,data:p,props:p,attrs:p,slots:p,refs:p,setupState:p,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null};return s.ctx={_:s},s.root=t?t.root:s,s.emit=St.bind(null,s),s}(e,o,l);if(hn(e)&&(r.ctx.renderer=oe),function(e,t=!1){ko=t;const{props:n,children:o,shapeFlag:l}=e.vnode,s=4&l;Bt(e,n,s,t),((e,t)=>{if(32&e.vnode.shapeFlag){const n=t._;n?(e.slots=t,W(t,"_",n)):_n(t,e.slots={})}else e.slots={},t&&wn(e,t);W(e.slots,Qn,1)})(e,o);const i=s?function(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,go);const{setup:o}=n;if(o){const n=e.setupContext=o.length>1?function(e){return{attrs:e.attrs,slots:e.slots,emit:e.emit}}(e):null;wo=e,se();const l=et(o,e,0,[e.props,n]);if(ie(),wo=null,M(l)){if(t)return l.then((t=>{So(e,t)}));e.asyncDep=l}else So(e,l)}else Co(e)}(e,t):void 0;ko=!1}(r),r.asyncDep){if(l&&l.registerDep(r,D),!e.el){const e=r.subTree=Jn($n);k(null,e,t,n)}}else D(r,e,t,n,l,s,i)},z=(e,t,n)=>{const o=t.component=e.component;if(function(e,t,n){const{props:o,children:l,component:s}=e,{props:i,children:r,patchFlag:c}=t,a=s.emitsOptions;if(t.dirs||t.transition)return!0;if(!(n&&c>0))return!(!l&&!r||r&&r.$stable)||o!==i&&(o?!i||qt(o,i,a):!!i);if(1024&c)return!0;if(16&c)return o?qt(o,i,a):!!i;if(8&c){const e=t.dynamicProps;for(let t=0;t<e.length;t++){const n=e[t];if(i[n]!==o[n]&&!Ot(a,n))return!0}}return!1}(e,t,n)){if(o.asyncDep&&!o.asyncResolved)return void A(o,t,n);o.next=t,function(e){const t=st.indexOf(e);t>-1&&(st[t]=null)}(o.update),o.update()}else t.component=e.component,t.el=e.el,o.vnode=t},D=(e,t,n,o,l,s,i)=>{e.update=Z((function(){if(e.isMounted){let t,{next:n,bu:o,u:r,parent:c,vnode:a}=e,u=n;n?(n.el=a.el,A(e,n,i)):n=a,o&&H(o),(t=n.props&&n.props.onVnodeBeforeUpdate)&&Mn(t,c,n,a);const p=Lt(e),f=e.subTree;e.subTree=p,_(f,p,d(f.el),te(f),e,l,s),n.el=p.el,null===u&&function({vnode:e,parent:t},n){for(;t&&t.subTree===e;)(e=t.vnode).el=n,t=t.parent}(e,p.el),r&&En(r,l),(t=n.props&&n.props.onVnodeUpdated)&&En((()=>{Mn(t,c,n,a)}),l)}else{let i;const{el:r,props:c}=t,{bm:a,m:u,parent:d}=e;a&&H(a),(i=c&&c.onVnodeBeforeMount)&&Mn(i,d,t);const p=e.subTree=Lt(e);r&&re?re(t.el,p,e,l):(_(null,p,n,o,e,l,s),t.el=p.el),u&&En(u,l),(i=c&&c.onVnodeMounted)&&En((()=>{Mn(i,d,t)}),l);const{a:f}=e;f&&256&t.shapeFlag&&En(f,l),e.isMounted=!0}}),Vn)},A=(e,t,n)=>{t.component=e;const o=e.vnode.props;e.vnode=t,e.next=null,function(e,t,n,o){const{props:l,attrs:s,vnode:{patchFlag:i}}=e,r=Ye(l),[c]=e.propsOptions;if(!(o||i>0)||16&i){let o;Ht(e,t,l,s);for(const s in r)t&&(x(t,s)||(o=T(s))!==s&&x(t,o))||(c?!n||void 0===n[s]&&void 0===n[o]||(l[s]=Wt(c,t||p,s,void 0,e)):delete l[s]);if(s!==r)for(const e in s)t&&x(t,e)||delete s[e]}else if(8&i){const n=e.vnode.dynamicProps;for(let o=0;o<n.length;o++){const i=n[o],a=t[i];if(c)if(x(s,i))s[i]=a;else{const t=$(i);l[t]=Wt(c,r,t,a,e)}else s[i]=a}}ce(e,"set","$attrs")}(e,t.props,o,n),((e,t)=>{const{vnode:n,slots:o}=e;let l=!0,s=p;if(32&n.shapeFlag){const e=t._;e?1===e?l=!1:b(o,t):(l=!t.$stable,_n(t,o)),s=t}else t&&(wn(e,t),s={default:1});if(l)for(const e in o)gn(e)||e in s||delete o[e]})(e,t.children),_t(void 0,e.update)},j=(e,t,n,o,l,s,i,r=!1)=>{const c=e&&e.children,a=e?e.shapeFlag:0,d=t.children,{patchFlag:p,shapeFlag:f}=t;if(p>0){if(128&p)return void B(c,d,n,o,l,s,i,r);if(256&p)return void N(c,d,n,o,l,s,i,r)}8&f?(16&a&&X(c,l,s),d!==c&&u(n,d)):16&a?16&f?B(c,d,n,o,l,s,i,r):X(c,l,s,!0):(8&a&&u(n,""),16&f&&E(d,n,o,l,s,i,r))},N=(e,t,n,o,l,s,i,r)=>{t=t||f;const c=(e=e||f).length,a=t.length,u=Math.min(c,a);let d;for(d=0;d<u;d++){const o=t[d]=r?no(t[d]):to(t[d]);_(e[d],o,n,null,l,s,i,r)}c>a?X(e,l,s,!0,!1,u):E(t,n,o,l,s,i,r,u)},B=(e,t,n,o,l,s,i,r)=>{let c=0;const a=t.length;let u=e.length-1,d=a-1;for(;c<=u&&c<=d;){const o=e[c],a=t[c]=r?no(t[c]):to(t[c]);if(!Kn(o,a))break;_(o,a,n,null,l,s,i,r),c++}for(;c<=u&&c<=d;){const o=e[u],c=t[d]=r?no(t[d]):to(t[d]);if(!Kn(o,c))break;_(o,c,n,null,l,s,i,r),u--,d--}if(c>u){if(c<=d){const e=d+1,u=e<a?t[e].el:o;for(;c<=d;)_(null,t[c]=r?no(t[c]):to(t[c]),n,u,l,s,i),c++}}else if(c>d)for(;c<=u;)Q(e[c],l,s,!0),c++;else{const p=c,h=c,m=new Map;for(c=h;c<=d;c++){const e=t[c]=r?no(t[c]):to(t[c]);null!=e.key&&m.set(e.key,c)}let v,g=0;const y=d-h+1;let b=!1,w=0;const x=new Array(y);for(c=0;c<y;c++)x[c]=0;for(c=p;c<=u;c++){const o=e[c];if(g>=y){Q(o,l,s,!0);continue}let a;if(null!=o.key)a=m.get(o.key);else for(v=h;v<=d;v++)if(0===x[v-h]&&Kn(o,t[v])){a=v;break}void 0===a?Q(o,l,s,!0):(x[a-h]=c+1,a>=w?w=a:b=!0,_(o,t[a],n,null,l,s,i,r),g++)}const k=b?function(e){const t=e.slice(),n=[0];let o,l,s,i,r;const c=e.length;for(o=0;o<c;o++){const c=e[o];if(0!==c){if(l=n[n.length-1],e[l]<c){t[o]=l,n.push(o);continue}for(s=0,i=n.length-1;s<i;)r=(s+i)/2|0,e[n[r]]<c?s=r+1:i=r;c<e[n[s]]&&(s>0&&(t[o]=n[s-1]),n[s]=o)}}s=n.length,i=n[s-1];for(;s-- >0;)n[s]=i,i=t[i];return n}(x):f;for(v=k.length-1,c=y-1;c>=0;c--){const e=h+c,r=t[e],u=e+1<a?t[e+1].el:o;0===x[c]?_(null,r,n,u,l,s,i):b&&(v<0||c!==k[v]?K(r,n,u,2):v--)}}},K=(e,t,o,l,s=null)=>{const{el:i,type:r,transition:c,children:a,shapeFlag:u}=e;if(6&u)return void K(e.component.subTree,t,o,l);if(128&u)return void e.suspense.move(t,o,l);if(64&u)return void r.move(e,t,o,oe);if(r===zn){n(i,t,o);for(let e=0;e<a.length;e++)K(a[e],t,o,l);return void n(e.anchor,t,o)}if(2!==l&&1&u&&c)if(0===l)c.beforeEnter(i),n(i,t,o),En((()=>c.enter(i)),s);else{const{leave:e,delayLeave:l,afterLeave:s}=c,r=()=>n(i,t,o),a=()=>{e(i,(()=>{r(),s&&s()}))};l?l(i,r,a):a()}else n(i,t,o)},Q=(e,t,n,o=!1,l=!1)=>{const{type:s,props:i,ref:r,children:c,dynamicChildren:a,shapeFlag:u,patchFlag:d,dirs:p}=e;if(null!=r&&t&&Ln(r,null,t,n,null),256&u)return void t.ctx.deactivate(e);const f=1&u&&p;let h;if((h=i&&i.onVnodeBeforeUnmount)&&Mn(h,t,e),6&u)J(e.component,n,o);else{if(128&u)return void e.suspense.unmount(n,o);f&&kn(e,null,t,"beforeUnmount"),a&&(s!==zn||d>0&&64&d)?X(a,t,n,!1,!0):(s===zn&&(128&d||256&d)||!l&&16&u)&&X(c,t,n),64&u&&(o||!qn(e.props))&&e.type.remove(e,oe),o&&G(e)}((h=i&&i.onVnodeUnmounted)||f)&&En((()=>{h&&Mn(h,t,e),f&&kn(e,null,t,"unmounted")}),n)},G=e=>{const{type:t,el:n,anchor:l,transition:s}=e;if(t===zn)return void Y(n,l);const i=()=>{o(n),s&&!s.persisted&&s.afterLeave&&s.afterLeave()};if(1&e.shapeFlag&&s&&!s.persisted){const{leave:t,delayLeave:o}=s,l=()=>t(n,i);o?o(e.el,i,l):l()}else i()},Y=(e,t)=>{let n;for(;e!==t;)n=m(e),o(e),e=n;o(t)},J=(e,t,n)=>{const{bum:o,effects:l,update:s,subTree:i,um:r}=e;if(o&&H(o),l)for(let e=0;e<l.length;e++)ee(l[e]);s&&(ee(s),Q(i,e,t,n)),r&&En(r,t),En((()=>{e.isUnmounted=!0}),t),t&&t.pendingBranch&&!t.isUnmounted&&e.asyncDep&&!e.asyncResolved&&e.suspenseId===t.pendingId&&(t.deps--,0===t.deps&&t.resolve())},X=(e,t,n,o=!1,l=!1,s=0)=>{for(let i=s;i<e.length;i++)Q(e[i],t,n,o,l)},te=e=>6&e.shapeFlag?te(e.component.subTree):128&e.shapeFlag?e.suspense.next():m(e.anchor||e.el),ne=(e,t)=>{null==e?t._vnode&&Q(t._vnode,null,null,!0):_(t._vnode||null,e,t),wt(),t._vnode=e},oe={p:_,um:Q,m:K,r:G,mt:U,mc:E,pc:j,pbc:F,n:te,o:e};let le,re;t&&([le,re]=t(oe));return{render:ne,hydrate:le,createApp:On(ne,le)}}(e)}function Mn(e,t,n,o=null){tt(e,t,7,[n,o])}function Rn(e,t,n=!1){const o=e.children,l=t.children;if(k(o)&&k(l))for(let e=0;e<o.length;e++){const t=o[e];let s=l[e];1&s.shapeFlag&&!s.dynamicChildren&&((s.patchFlag<=0||32===s.patchFlag)&&(s=l[e]=no(l[e]),s.el=t.el),n||Rn(t,s))}}const qn=e=>e&&(e.disabled||""===e.disabled);function Pn(e){return function(e,t,n=!0){const o=Vt||wo;if(o){const n=o.type;if("components"===e){const e=n.displayName||n.name;if(e&&(e===t||e===$(t)||e===j($(t))))return n}return In(o[e]||n[e],t)||In(o.appContext[e],t)}}("components",e)||e}const Un=Symbol();function In(e,t){return e&&(e[t]||e[$(t)]||e[j($(t))])}const zn=Symbol(void 0),Dn=Symbol(void 0),$n=Symbol(void 0),An=Symbol(void 0),Tn=[];let jn=null;function Nn(e=!1){Tn.push(jn=e?null:[])}function Bn(){Tn.pop(),jn=Tn[Tn.length-1]||null}function Hn(e,t,n,o,l){const s=Jn(e,t,n,o,l,!0);return s.dynamicChildren=jn||f,Bn(),jn&&jn.push(s),s}function Wn(e){return!!e&&!0===e.__v_isVNode}function Kn(e,t){return e.type===t.type&&e.key===t.key}const Qn="__vInternal",Gn=({key:e})=>null!=e?e:null,Yn=({ref:e})=>null!=e?k(e)?e:{i:Vt,r:e}:null,Jn=function(e,t=null,n=null,l=0,s=null,i=!1){e&&e!==Un||(e=$n);if(Wn(e)){const o=Xn(e,t,!0);return n&&oo(o,n),o}c=e,V(c)&&"__vccOpts"in c&&(e=e.__vccOpts);var c;if(t){(Ge(t)||Qn in t)&&(t=b({},t));let{class:e,style:n}=t;e&&!E(e)&&(t.class=r(e)),F(n)&&(Ge(n)&&!k(n)&&(n=b({},n)),t.style=o(n))}const a=E(e)?1:(e=>e.__isSuspense)(e)?128:(e=>e.__isTeleport)(e)?64:F(e)?4:V(e)?2:0,u={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Gn(t),ref:t&&Yn(t),scopeId:$t,children:null,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:a,patchFlag:l,dynamicProps:s,dynamicChildren:null,appContext:null};if(oo(u,n),128&a){const{content:e,fallback:t}=function(e){const{shapeFlag:t,children:n}=e;let o,l;return 32&t?(o=Pt(n.default),l=Pt(n.fallback)):(o=Pt(n),l=to(null)),{content:o,fallback:l}}(u);u.ssContent=e,u.ssFallback=t}!i&&jn&&(l>0||6&a)&&32!==l&&jn.push(u);return u};function Xn(e,t,n=!1){const{props:l,ref:s,patchFlag:i}=e,c=t?function(...e){const t=b({},e[0]);for(let n=1;n<e.length;n++){const l=e[n];for(const e in l)if("class"===e)t.class!==l.class&&(t.class=r([t.class,l.class]));else if("style"===e)t.style=o([t.style,l.style]);else if(g(e)){const n=t[e],o=l[e];n!==o&&(t[e]=n?[].concat(n,l[e]):o)}else""!==e&&(t[e]=l[e])}return t}(l||{},t):l;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:c,key:c&&Gn(c),ref:t&&t.ref?n&&s?k(s)?s.concat(Yn(t)):[s,Yn(t)]:Yn(t):s,scopeId:e.scopeId,children:e.children,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==zn?-1===i?16:16|i:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Xn(e.ssContent),ssFallback:e.ssFallback&&Xn(e.ssFallback),el:e.el,anchor:e.anchor}}function Zn(e=" ",t=0){return Jn(Dn,null,e,t)}function eo(e="",t=!1){return t?(Nn(),Hn($n,null,e)):Jn($n,null,e)}function to(e){return null==e||"boolean"==typeof e?Jn($n):k(e)?Jn(zn,null,e):"object"==typeof e?null===e.el?e:Xn(e):Jn(Dn,null,String(e))}function no(e){return null===e.el?e:Xn(e)}function oo(e,t){let n=0;const{shapeFlag:o}=e;if(null==t)t=null;else if(k(t))n=16;else if("object"==typeof t){if(1&o||64&o){const n=t.default;return void(n&&(n._c&&It(1),oo(e,n()),n._c&&It(-1)))}{n=32;const o=t._;o||Qn in t?3===o&&Vt&&(1024&Vt.vnode.patchFlag?(t._=2,e.patchFlag|=1024):t._=1):t._ctx=Vt}}else V(t)?(t={default:t,_ctx:Vt},n=32):(t=String(t),64&o?(n=16,t=[Zn(t)]):n=8);e.children=t,e.shapeFlag|=n}function lo(e,t){if(wo){let n=wo.provides;const o=wo.parent&&wo.parent.provides;o===n&&(n=wo.provides=Object.create(o)),n[e]=t}else;}function so(e,t,n=!1){const o=wo||Vt;if(o){const l=null==o.parent?o.vnode.appContext&&o.vnode.appContext.provides:o.parent.provides;if(l&&e in l)return l[e];if(arguments.length>1)return n&&V(t)?t():t}}let io=!1;function ro(e,t,n=[],o=[],l=[],s=!1){const{mixins:i,extends:r,data:c,computed:a,methods:u,watch:d,provide:p,inject:f,components:m,directives:v,beforeMount:g,mounted:y,beforeUpdate:_,updated:w,activated:x,deactivated:S,beforeDestroy:C,beforeUnmount:O,destroyed:E,unmounted:L,render:M,renderTracked:R,renderTriggered:q,errorCaptured:P}=t,U=e.proxy,I=e.ctx,z=e.appContext.mixins;if(s&&M&&e.render===h&&(e.render=M),s||(io=!0,co("beforeCreate","bc",t,e,z),io=!1,po(e,z,n,o,l)),r&&ro(e,r,n,o,l,!0),i&&po(e,i,n,o,l),f)if(k(f))for(let e=0;e<f.length;e++){const t=f[e];I[t]=so(t)}else for(const e in f){const t=f[e];F(t)?I[e]=so(t.from||e,t.default,!0):I[e]=so(t)}if(u)for(const e in u){const t=u[e];V(t)&&(I[e]=t.bind(U))}if(s?c&&n.push(c):(n.length&&n.forEach((t=>fo(e,t,U))),c&&fo(e,c,U)),a)for(const e in a){const t=a[e],n=Vo({get:V(t)?t.bind(U,U):V(t.get)?t.get.bind(U,U):h,set:!V(t)&&V(t.set)?t.set.bind(U):h});Object.defineProperty(I,e,{enumerable:!0,configurable:!0,get:()=>n.value,set:e=>n.value=e})}var D;d&&o.push(d),!s&&o.length&&o.forEach((e=>{for(const t in e)ho(e[t],I,U,t)})),p&&l.push(p),!s&&l.length&&l.forEach((e=>{const t=V(e)?e.call(U):e;for(const e in t)lo(e,t[e])})),s&&(m&&b(e.components||(e.components=b({},e.type.components)),m),v&&b(e.directives||(e.directives=b({},e.type.directives)),v)),s||co("created","c",t,e,z),g&&en(g.bind(U)),y&&tn(y.bind(U)),_&&nn(_.bind(U)),w&&on(w.bind(U)),x&&mn(x.bind(U),"a",D),S&&function(e,t){mn(e,"da",t)}(S.bind(U)),P&&((e,t=wo)=>{Xt("ec",e,t)})(P.bind(U)),R&&cn(R.bind(U)),q&&rn(q.bind(U)),O&&ln(O.bind(U)),L&&sn(L.bind(U))}function co(e,t,n,o,l){uo(e,t,l,o);const{extends:s,mixins:i}=n;s&&ao(e,t,s,o),i&&uo(e,t,i,o);const r=n[e];r&&tt(r.bind(o.proxy),o,t)}function ao(e,t,n,o){n.extends&&ao(e,t,n.extends,o);const l=n[e];l&&tt(l.bind(o.proxy),o,t)}function uo(e,t,n,o){for(let l=0;l<n.length;l++){const s=n[l].mixins;s&&uo(e,t,s,o);const i=n[l][e];i&&tt(i.bind(o.proxy),o,t)}}function po(e,t,n,o,l){for(let s=0;s<t.length;s++)ro(e,t[s],n,o,l,!0)}function fo(e,t,n){const o=t.call(n,n);F(o)&&(e.data===p?e.data=Be(o):b(e.data,o))}function ho(e,t,n,o){const l=o.includes(".")?function(e,t){const n=t.split(".");return()=>{let t=e;for(let e=0;e<n.length&&t;e++)t=t[n[e]];return t}}(n,o):()=>n[o];if(E(e)){const n=t[e];V(n)&&un(l,n)}else if(V(e))un(l,e.bind(n));else if(F(e))if(k(e))e.forEach((e=>ho(e,t,n,o)));else{const o=V(e.handler)?e.handler.bind(n):t[e.handler];V(o)&&un(l,o,e)}}function mo(e,t,n){const o=n.appContext.config.optionMergeStrategies,{mixins:l,extends:s}=t;s&&mo(e,s,n),l&&l.forEach((t=>mo(e,t,n)));for(const l in t)o&&x(o,l)?e[l]=o[l](e[l],t[l],n.proxy,l):e[l]=t[l]}const vo=b(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>e.parent&&e.parent.proxy,$root:e=>e.root&&e.root.proxy,$emit:e=>e.emit,$options:e=>function(e){const t=e.type,{__merged:n,mixins:o,extends:l}=t;if(n)return n;const s=e.appContext.mixins;if(!s.length&&!o&&!l)return t;const i={};return s.forEach((t=>mo(i,t,e))),mo(i,t,e),t.__merged=i}(e),$forceUpdate:e=>()=>gt(e.update),$nextTick:e=>vt.bind(e.proxy),$watch:e=>pn.bind(e)}),go={get({_:e},t){const{ctx:n,setupState:o,data:l,props:s,accessCache:i,type:r,appContext:c}=e;if("__v_skip"===t)return!0;let a;if("$"!==t[0]){const r=i[t];if(void 0!==r)switch(r){case 0:return o[t];case 1:return l[t];case 3:return n[t];case 2:return s[t]}else{if(o!==p&&x(o,t))return i[t]=0,o[t];if(l!==p&&x(l,t))return i[t]=1,l[t];if((a=e.propsOptions[0])&&x(a,t))return i[t]=2,s[t];if(n!==p&&x(n,t))return i[t]=3,n[t];io||(i[t]=4)}}const u=vo[t];let d,f;return u?("$attrs"===t&&re(e,0,t),u(e)):(d=r.__cssModules)&&(d=d[t])?d:n!==p&&x(n,t)?(i[t]=3,n[t]):(f=c.config.globalProperties,x(f,t)?f[t]:void 0)},set({_:e},t,n){const{data:o,setupState:l,ctx:s}=e;if(l!==p&&x(l,t))l[t]=n;else if(o!==p&&x(o,t))o[t]=n;else if(t in e.props)return!1;return("$"!==t[0]||!(t.slice(1)in e))&&(s[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:o,appContext:l,propsOptions:s}},i){let r;return void 0!==n[i]||e!==p&&x(e,i)||t!==p&&x(t,i)||(r=s[0])&&x(r,i)||x(o,i)||x(vo,i)||x(l.config.globalProperties,i)}},yo=b({},go,{get(e,t){if(t!==Symbol.unscopables)return go.get(e,t,e)},has:(e,n)=>"_"!==n[0]&&!t(n)}),bo=Sn();let _o=0;let wo=null;const xo=e=>{wo=e};let ko=!1;function So(e,t,n){var o;V(t)?e.render=t:F(t)&&(e.setupState=Ke(o=t)?o:new Proxy(o,Xe)),Co(e)}function Co(e,t){const n=e.type;e.render||(e.render=n.render||h,e.render._rc&&(e.withProxy=new Proxy(e.ctx,yo))),wo=e,ro(e,n),wo=null}function Oo(e){wo&&(wo.effects||(wo.effects=[])).push(e)}function Vo(e){const t=function(e){let t,n;return V(e)?(t=e,n=h):(t=e.get,n=e.set),new Ze(t,n,V(e)||!e.set)}(e);return Oo(t.effect),t}function Eo(e,t){let n;if(k(e)||E(e)){n=new Array(e.length);for(let o=0,l=e.length;o<l;o++)n[o]=t(e[o],o)}else if("number"==typeof e){n=new Array(e);for(let o=0;o<e;o++)n[o]=t(o+1,o)}else if(F(e))if(e[Symbol.iterator])n=Array.from(e,t);else{const o=Object.keys(e);n=new Array(o.length);for(let l=0,s=o.length;l<s;l++){const s=o[l];n[l]=t(e[s],s,l)}}else n=[];return n}const Lo="3.0.2",Fo="http://www.w3.org/2000/svg",Mo="undefined"!=typeof document?document:null;let Ro,qo;const Po={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n)=>t?Mo.createElementNS(Fo,e):Mo.createElement(e,n?{is:n}:void 0),createText:e=>Mo.createTextNode(e),createComment:e=>Mo.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Mo.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},cloneNode:e=>e.cloneNode(!0),insertStaticContent(e,t,n,o){const l=o?qo||(qo=Mo.createElementNS(Fo,"svg")):Ro||(Ro=Mo.createElement("div"));l.innerHTML=e;const s=l.firstChild;let i=s,r=i;for(;i;)r=i,Po.insert(i,t,n),i=l.firstChild;return[s,r]}};const Uo=/\s*!important$/;function Io(e,t,n){if(k(n))n.forEach((n=>Io(e,t,n)));else if(t.startsWith("--"))e.setProperty(t,n);else{const o=function(e,t){const n=Do[t];if(n)return n;let o=$(t);if("filter"!==o&&o in e)return Do[t]=o;o=j(o);for(let n=0;n<zo.length;n++){const l=zo[n]+o;if(l in e)return Do[t]=l}return t}(e,t);Uo.test(n)?e.setProperty(T(o),n.replace(Uo,""),"important"):e[o]=n}}const zo=["Webkit","Moz","ms"],Do={};const $o="http://www.w3.org/1999/xlink";let Ao=Date.now;"undefined"!=typeof document&&Ao()>document.createEvent("Event").timeStamp&&(Ao=()=>performance.now());let To=0;const jo=Promise.resolve(),No=()=>{To=0};function Bo(e,t,n,o){e.addEventListener(t,n,o)}function Ho(e,t,n,o,l=null){const s=e._vei||(e._vei={}),i=s[t];if(o&&i)i.value=o;else{const[n,r]=function(e){let t;if(Wo.test(e)){let n;for(t={};n=e.match(Wo);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[e.slice(2).toLowerCase(),t]}(t);if(o){Bo(e,n,s[t]=function(e,t){const n=e=>{(e.timeStamp||Ao())>=n.attached-1&&tt(function(e,t){if(k(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map((e=>t=>!t._stopped&&e(t)))}return t}(e,n.value),t,5,[e])};return n.value=e,n.attached=(()=>To||(jo.then(No),To=Ao()))(),n}(o,l),r)}else i&&(!function(e,t,n,o){e.removeEventListener(t,n,o)}(e,n,i,r),s[t]=void 0)}}const Wo=/(?:Once|Passive|Capture)$/;const Ko=/^on[a-z]/;const Qo=e=>{const t=e.props["onUpdate:modelValue"];return k(t)?e=>H(t,e):t};function Go(e){e.target.composing=!0}function Yo(e){const t=e.target;t.composing&&(t.composing=!1,function(e,t){const n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}(t,"input"))}const Jo={created(e,{modifiers:{lazy:t,trim:n,number:o}},l){e._assign=Qo(l);const s=o||"number"===e.type;Bo(e,t?"change":"input",(t=>{if(t.target.composing)return;let o=e.value;n?o=o.trim():s&&(o=K(o)),e._assign(o)})),n&&Bo(e,"change",(()=>{e.value=e.value.trim()})),t||(Bo(e,"compositionstart",Go),Bo(e,"compositionend",Yo),Bo(e,"change",Yo))},mounted(e,{value:t}){e.value=null==t?"":t},beforeUpdate(e,{value:t,modifiers:{trim:n,number:o}},l){if(e._assign=Qo(l),e.composing)return;if(document.activeElement===e){if(n&&e.value.trim()===t)return;if((o||"number"===e.type)&&K(e.value)===t)return}const s=null==t?"":t;e.value!==s&&(e.value=s)}},Xo={created(e,t,n){Zo(e,t,n),e._assign=Qo(n),Bo(e,"change",(()=>{const t=e._modelValue,n=function(e){return"_value"in e?e._value:e.value}(e),o=e.checked,l=e._assign;if(k(t)){const e=a(t,n),s=-1!==e;if(o&&!s)l(t.concat(n));else if(!o&&s){const n=[...t];n.splice(e,1),l(n)}}else C(t)?o?t.add(n):t.delete(n):l(el(e,o))}))},beforeUpdate(e,t,n){e._assign=Qo(n),Zo(e,t,n)}};function Zo(e,{value:t,oldValue:n},o){e._modelValue=t,k(t)?e.checked=a(t,o.props.value)>-1:C(t)?e.checked=t.has(o.props.value):t!==n&&(e.checked=c(t,el(e,!0)))}function el(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const tl=["ctrl","shift","alt","meta"],nl={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&0!==e.button,middle:e=>"button"in e&&1!==e.button,right:e=>"button"in e&&2!==e.button,exact:(e,t)=>tl.some((n=>e[n+"Key"]&&!t.includes(n)))},ol=(e,t)=>(n,...o)=>{for(let e=0;e<t.length;e++){const o=nl[t[e]];if(o&&o(n,t))return}return e(n,...o)},ll={beforeMount(e,{value:t},{transition:n}){e._vod="none"===e.style.display?"":e.style.display,n&&t?n.beforeEnter(e):sl(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:o}){!t!=!n&&(o?t?(o.beforeEnter(e),sl(e,!0),o.enter(e)):o.leave(e,(()=>{sl(e,!1)})):sl(e,t))},beforeUnmount(e,{value:t}){sl(e,t)}};function sl(e,t){e.style.display=t?e._vod:"none"}const il=b({patchProp:(e,t,o,l,s=!1,i,r,c,a)=>{switch(t){case"class":!function(e,t,n){if(null==t&&(t=""),n)e.setAttribute("class",t);else{const n=e._vtc;n&&(t=(t?[t,...n]:[...n]).join(" ")),e.className=t}}(e,l,s);break;case"style":!function(e,t,n){const o=e.style;if(n)if(E(n))t!==n&&(o.cssText=n);else{for(const e in n)Io(o,e,n[e]);if(t&&!E(t))for(const e in t)null==n[e]&&Io(o,e,"")}else e.removeAttribute("style")}(e,o,l);break;default:g(t)?y(t)||Ho(e,t,0,l,r):function(e,t,n,o){if(o)return"innerHTML"===t||!!(t in e&&Ko.test(t)&&V(n));if("spellcheck"===t||"draggable"===t)return!1;if("form"===t&&"string"==typeof n)return!1;if("list"===t&&"INPUT"===e.tagName)return!1;if(Ko.test(t)&&E(n))return!1;return t in e}(e,t,l,s)?function(e,t,n,o,l,s,i){if("innerHTML"===t||"textContent"===t)return o&&i(o,l,s),void(e[t]=null==n?"":n);if("value"!==t||"PROGRESS"===e.tagName)if(""===n&&"boolean"==typeof e[t])e[t]=!0;else if(null==n&&"string"==typeof e[t])e[t]="",e.removeAttribute(t);else try{e[t]=n}catch(e){}else{e._value=n;const t=null==n?"":n;e.value!==t&&(e.value=t)}}(e,t,l,i,r,c,a):("true-value"===t?e._trueValue=l:"false-value"===t&&(e._falseValue=l),function(e,t,o,l){if(l&&t.startsWith("xlink:"))null==o?e.removeAttributeNS($o,t.slice(6,t.length)):e.setAttributeNS($o,t,o);else{const l=n(t);null==o||l&&!1===o?e.removeAttribute(t):e.setAttribute(t,l?"":o)}}(e,t,l,s))}},forcePatchProp:(e,t)=>"value"===t},Po);let rl;class cl{static post(e,t,n){var o=this;window.wcfmoptions.poster(e,t,(function(e){n.call(o,e)}),(function(){console.log("failure")}))}}const al={style:{position:"absolute",width:"0",height:"0"},width:"0",height:"0",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},ul=Jn("defs",null,[Jn("symbol",{id:"icon-folder",viewBox:"0 0 309.267 309.267"},[Jn("g",null,[Jn("path",{style:{fill:"#D0994B"},d:"M260.944,43.491H125.64c0,0-18.324-28.994-28.994-28.994H48.323c-10.67,0-19.329,8.65-19.329,19.329\n \t\tv222.286c0,10.67,8.659,19.329,19.329,19.329h212.621c10.67,0,19.329-8.659,19.329-19.329V62.82\n \t\tC280.273,52.15,271.614,43.491,260.944,43.491z"}),Jn("path",{style:{fill:"#E4E7E7"},d:"M28.994,72.484h251.279v77.317H28.994V72.484z"}),Jn("path",{style:{fill:"#F4B459"},d:"M19.329,91.814h270.609c10.67,0,19.329,8.65,19.329,19.329l-19.329,164.298\n \t\tc0,10.67-8.659,19.329-19.329,19.329H38.658c-10.67,0-19.329-8.659-19.329-19.329L0,111.143C0,100.463,8.659,91.814,19.329,91.814z\n \t\t"})])]),Jn("symbol",{id:"icon-unfold",viewBox:"0 0 32 32"},[Jn("path",{d:"M28,14H18V4c0-1.104-0.896-2-2-2s-2,0.896-2,2v10H4c-1.104,0-2,0.896-2,2s0.896,2,2,2h10v10c0,1.104,0.896,2,2,2 s2-0.896,2-2V18h10c1.104,0,2-0.896,2-2S29.104,14,28,14z"})]),Jn("symbol",{id:"icon-fold",viewBox:"0 0 24 24"},[Jn("g",{fill:"none",stroke:"#000","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"},[Jn("line",{x1:"5",y1:"12",x2:"19",y2:"12"})])]),Jn("symbol",{id:"icon-file",viewBox:"0 0 56 56"},[Jn("g",null,[Jn("path",{style:{fill:"#E9E9E0"},d:"M36.985,0H7.963C7.155,0,6.5,0.655,6.5,1.926V55c0,0.345,0.655,1,1.463,1h40.074\n \t\tc0.808,0,1.463-0.655,1.463-1V12.978c0-0.696-0.093-0.92-0.257-1.085L37.607,0.257C37.442,0.093,37.218,0,36.985,0z"}),Jn("polygon",{style:{fill:"#D9D7CA"},points:"37.5,0.151 37.5,12 49.349,12 \t"}),Jn("circle",{style:{fill:"#F3D55B"},cx:"18.931",cy:"14.431",r:"4.569"}),Jn("polygon",{style:{fill:"#26B99A"},points:"6.5,39 17.5,39 49.5,39 49.5,28 39.5,18.5 29,30 23.517,24.517 \t"}),Jn("path",{style:{fill:"#14A085"},d:"M48.037,56H7.963C7.155,56,6.5,55.345,6.5,54.537V39h43v15.537C49.5,55.345,48.845,56,48.037,56z"}),Jn("g")])]),Jn("svg",{id:"icon-ok",viewBox:"0 0 256 256"},[Jn("g",{fill:"green",stroke:"none",transform:"translate(0.000000,256.000000) scale(0.100000,-0.100000)"},[Jn("path",{d:"M1064 2545 c-406 -72 -744 -324 -927 -690 -96 -193 -127 -333 -127 -575 0 -243 33 -387 133 -585 177 -351 518 -606 907 -676 118 -22 393 -17 511 8 110 24 252 78 356 136 327 183 569 525 628 887 19 122 19 338 0 460 -81 498 -483 914 -990 1025 -101 22 -389 28 -491 10z m814 -745 c39 -27 73 -59 77 -70 9 -27 10 -25 -372 -590 -345 -510 -357 -524 -420 -512 -19 4 -98 74 -250 225 -123 121 -225 228 -228 238 -3 10 1 31 9 47 20 40 125 132 149 132 11 0 79 -59 162 -140 79 -77 146 -140 149 -140 3 0 38 48 78 108 95 143 465 678 496 720 35 46 64 42 150 -18z"})])]),Jn("svg",{id:"icon-not-available",viewBox:"0 0 500.000000 500.000000",preserveAspectRatio:"xMidYMid meet"},[Jn("g",{fill:"#b11010",stroke:"none",transform:"translate(0.000000,500.000000) scale(0.100000,-0.100000)"},[Jn("path",{d:"M2315 4800 c-479 -35 -928 -217 -1303 -527 -352 -293 -615 -702 -738 -1151 -104 -380 -104 -824 0 -1204 107 -389 302 -724 591 -1013 354 -354 785 -572 1279 -646 196 -30 476 -30 672 0 494 74 925 292 1279 646 354 354 571 784 646 1279 30 197 30 475 0 672 -75 495 -292 925 -646 1279 -289 289 -624 484 -1013 591 -228 62 -528 91 -767 74z m353 -511 c458 -50 874 -272 1170 -624 417 -497 536 -1174 308 -1763 -56 -145 -176 -367 -235 -434 -4 -4 -566 552 -1250 1236 l-1243 1243 94 60 c354 229 754 327 1156 282z m864 -3200 c-67 -59 -289 -179 -434 -235 -946 -366 -2024 172 -2322 1158 -47 155 -66 276 -73 453 -13 362 84 704 290 1023 l60 94 1243 -1243 c684 -684 1240 -1246 1236 -1250z"})])])],-1);const dl={render:function(e,t){return Nn(),Hn("svg",al,[ul])}};var pl={name:"SelectBox",props:{options:Array,optionsLabel:String,optionsKey:String,placeholder:String,modelValue:String},emits:["update:modelValue"],data:()=>({selectedOption:null,isOpen:!1}),watch:{modelValue(e,t){this.select(e)}},mounted(){document.addEventListener("click",this.onDocumentClick),this.select(this.modelValue)},beforeUnmount:function(){document.removeEventListener("click",this.onDocumentClick)},methods:{onDocumentClick(e){e.target.parentNode!=this.$el&&(this.isOpen=!1)},onBoxClick(){this.isOpen=!this.isOpen},onOptionClick(e){this.isOpen=!1,this.select(e.target.getAttribute("data-key")),this.$emit("update:modelValue",this.selectedOption[this.optionsKey])},getOptionByKey(e){return this.options.find((t=>t[this.optionsKey]==e))},select(e){this.selectedOption=this.getOptionByKey(e)}}};const fl=Nt("data-v-a8799ec4");Tt("data-v-a8799ec4");const hl={class:"selectbox"},ml={class:"dropdown"},vl={class:"icon"};jt();const gl=fl((function(e,t,n,o,l,s){return Nn(),Hn("div",hl,[Jn("div",{class:["box",{"is-open":l.isOpen}],onClick:t[1]||(t[1]=(...e)=>s.onBoxClick(...e))},u(l.selectedOption?l.selectedOption[n.optionsLabel]:n.placeholder),3),xn(Jn("div",ml,[(Nn(!0),Hn(zn,null,Eo(n.options,(o=>(Nn(),Hn("div",null,[Jn("div",{class:"option","data-key":o[n.optionsKey],onClick:t[2]||(t[2]=e=>s.onOptionClick(e))},[Zn(u(o[n.optionsLabel])+" ",1),o.icon?zt(e.$slots,"default",{key:0},(()=>[(Nn(),Hn("svg",vl,[Jn("use",{"xlink:href":"#icon-"+o.icon},null,8,["xlink:href"])]))])):eo("",!0)],8,["data-key"])])))),256))],512),[[ll,l.isOpen]])])}));pl.render=gl,pl.__scopeId="data-v-a8799ec4";var yl={name:"EncodingSelector",components:{SelectBox:pl},props:{converter:String,modelValue:String},emits:["update:modelValue"],data(){return{encoding:this.modelValue,encodings:[{id:"auto",name:"Auto"},{id:"lossy",name:"Lossy"},{id:"lossless",name:"Lossless"}]}},watch:{modelValue(e,t){this.encoding=e}},methods:{onUpdate(){this.$emit("update:modelValue",this.encoding)},encodingSupported(){return"gd"!=this.converter&&"ewww"!=this.converter}}};const bl=Nt("data-v-8124cea8");Tt("data-v-8124cea8");const _l={class:"encoding-selector"};jt();const wl=bl((function(e,t,n,o,l,s){const i=Pn("SelectBox");return Nn(),Hn("div",_l,[xn(Jn("div",null,"lossy (gd can only produce lossy webp)",512),[[ll,"gd"==n.converter]]),xn(Jn("div",null,"lossy for jpeg, lossy for png (ewww behaviour)",512),[[ll,"ewww"==n.converter]]),xn(Jn("div",null,[Jn(i,{modelValue:l.encoding,"onUpdate:modelValue":[t[1]||(t[1]=e=>l.encoding=e),s.onUpdate],options:l.encodings,optionsLabel:"name",optionsKey:"id",placeholder:"Select"},null,8,["modelValue","options","onUpdate:modelValue"])],512),[[ll,s.encodingSupported()]])])}));yl.render=wl,yl.__scopeId="data-v-8124cea8";var xl={name:"QualityLossy",components:{},props:{converter:String,qualityDetectionSupported:Boolean,modelValue:Object},emits:["update:modelValue"],mounted(){this.updateLocalModel(this.modelValue)},data:()=>({auto:{max:15,limit:!0},noAuto:{quality:75}}),watch:{modelValue(e,t){this.updateLocalModel(e)}},methods:{updateLocalModel(e){this.auto.max=e.max,this.auto.limit="auto"==e.quality,this.noAuto.quality=e.default},onLocalChange(){this.qualityDetectionSupported?this.$emit("update:modelValue",{quality:this.auto.limit?"auto":this.auto.max,max:this.auto.max,default:this.auto.max}):this.$emit("update:modelValue",{quality:this.noAuto.quality,max:this.noAuto.quality,default:this.noAuto.quality})}}};const kl=Nt("data-v-74dc2e9e");Tt("data-v-74dc2e9e");const Sl={class:"quality-lossy"},Cl={key:0,class:"auto"},Ol=Jn("label",null,"Prevent excess?",-1),Vl={key:1,class:"no-auto"};jt();const El=kl((function(e,t,n,o,l,s){return Nn(),Hn("div",Sl,[n.qualityDetectionSupported?(Nn(),Hn("div",Cl,[xn(Jn("input",{type:"number",class:"input-quality","onUpdate:modelValue":t[1]||(t[1]=e=>l.auto.max=e),onInput:t[2]||(t[2]=e=>s.onLocalChange())},null,544),[[Jo,l.auto.max]]),Ol,xn(Jn("input",{type:"checkbox","onUpdate:modelValue":t[3]||(t[3]=e=>l.auto.limit=e),onInput:t[4]||(t[4]=e=>s.onLocalChange())},null,544),[[Xo,l.auto.limit]])])):eo("",!0),n.qualityDetectionSupported?eo("",!0):(Nn(),Hn("div",Vl,[xn(Jn("input",{class:"input-quality","onUpdate:modelValue":t[5]||(t[5]=e=>l.noAuto.quality=e),type:"number",onInput:t[6]||(t[6]=e=>s.onLocalChange())},null,544),[[Jo,l.noAuto.quality]])]))])}));xl.render=El,xl.__scopeId="data-v-74dc2e9e";var Ll={name:"QualityLossless",components:{},props:{modelValue:Object},emits:["update:modelValue"],mounted(){this.updateLocalModel(this.modelValue)},data:()=>({quality:60}),watch:{modelValue(e,t){this.updateLocalModel(e)}},methods:{updateLocalModel(e){this.quality=e.quality},onLocalChange(){this.$emit("update:modelValue",{quality:this.quality})}}};const Fl=Nt("data-v-db8a8a84");Tt("data-v-db8a8a84");const Ml={class:"quality-lossless"};jt();const Rl=Fl((function(e,t,n,o,l,s){return Nn(),Hn("div",Ml,[xn(Jn("input",{class:"input-quality","onUpdate:modelValue":t[1]||(t[1]=e=>l.quality=e),type:"number",onInput:t[2]||(t[2]=e=>s.onLocalChange())},null,544),[[Jo,l.quality]])])}));Ll.render=Rl,Ll.__scopeId="data-v-db8a8a84";var ql={name:"ConvertOptions",components:{SelectBox:pl,EncodingSelector:yl,QualityLossy:xl,QualityLossless:Ll},props:{item:Object},computed:{converterSupportsEncoding(){return this.converterSupports("encoding")},converterSupportsNearLossless(){return this.converterSupports("nearLossless")},converterSupportsMethod(){return this.converterSupports("method")}},data:()=>({converters:[{id:"cwebp",name:"cwebp"},{id:"vips",name:"vips"},{id:"ewww",name:"ewww"},{id:"gd",name:"gd"}],supportedOptions:{encoding:["cwebp","vips","imagick","gmagick","imagemagick","graphicsmagick","ffmpeg","wpc"],method:["cwebp","imagick","gmagick","imagemagick","graphicsmagick","ffmpeg","wpc"],nearLossless:["cwebp","vips","wpc"]},qualityDetectionSupported:!0,encoding:"auto",converter:"cwebp",qualityLossy:{quality:"auto",max:85,default:75},"use-nice":!0,qualityLossless:{quality:60},method:5,converterOptions:{ewww:{"api-key":"bogus-key-for-testing","check-key-status-before-converting":!1},cwebp:{}}}),mounted(){var e=this;cl.post("conversion-settings",{folder:""},(function(t){if(t.supportedStandardOptions){var n=t.supportedStandardOptions;n.encoding&&(e.supportedOptions.encoding=n.encoding),n.method&&(e.supportedOptions.method=n.method),n.nearLossless&&(e.supportedOptions.nearLossless=n.nearLossless)}var o=null;if(t.converters?o=t.converters:t.systemStatus.converterRequirements&&(o=e.converters),t.systemStatus.converterRequirements)for(var l=t.systemStatus.converterRequirements,s=0;s<o.length;s++){var i=o[s].id;if(l[i]){var r=l[i];for(var c in r)!1===r[c]&&(o[s].icon="not-available")}}if(o){e.converters=o;var a=e.converter;e.converter="vips",e.converter=a}if(t.overrideDefaults){var u=t.overrideDefaults;u.converter&&(e.converter=u.converter),u.encoding&&(e.encoding=u.encoding),u.method&&(e.method=u.method)}})),this.qualityDetectionSupported||(this.qualityLossy.quality=this.qualityLossy.default)},watch:{converter(e,t){}},methods:{optionSupported(e,t){t=this.converter;return this.supportedOptions[e].find((function(e){return e==t}))},converterSupports(e){return this.optionSupported(e,this.converter)}}};const Pl=Nt("data-v-115f004a");Tt("data-v-115f004a");const Ul={class:"table-table convert-options"},Il=Jn("div",null,[Jn("label",null,"Converter")],-1),zl=Jn("div",null,[Jn("label",null,"WebP encoding")],-1),Dl=Jn("div",null,[Jn("label",null,"Method (0-5)")],-1),$l={key:0},Al=Jn("div",null,[Jn("label",null,"Api key")],-1);jt();const Tl=Pl((function(e,t,n,o,l,s){const i=Pn("SelectBox"),r=Pn("EncodingSelector"),c=Pn("QualityLossy"),a=Pn("QualityLossless");return Nn(),Hn(zn,null,[Jn("div",Ul,[Jn("div",null,[Il,Jn("div",null,[Jn(i,{modelValue:l.converter,"onUpdate:modelValue":t[1]||(t[1]=e=>l.converter=e),options:l.converters,optionsLabel:"name",optionsKey:"id",placeholder:"Select converter"},null,8,["modelValue","options"])])]),xn(Jn("div",null,[zl,Jn("div",null,[Jn(r,{modelValue:l.encoding,"onUpdate:modelValue":t[2]||(t[2]=e=>l.encoding=e),converter:l.converter},null,8,["modelValue","converter"])])],512),[[ll,l.converter&&s.converterSupportsEncoding]]),xn(Jn("div",null,[Jn("div",null,[Jn("label",null,"Quality"+u(s.converterSupportsEncoding&&"lossy"!=l.encoding?" (lossy)":""),1)]),Jn("div",null,[Jn(c,{modelValue:l.qualityLossy,"onUpdate:modelValue":t[3]||(t[3]=e=>l.qualityLossy=e),converter:l.converter,qualityDetectionSupported:l.qualityDetectionSupported},null,8,["modelValue","converter","qualityDetectionSupported"])])],512),[[ll,l.converter&&("auto"==l.encoding||"lossy"==l.encoding||!s.converterSupportsEncoding)]]),xn(Jn("div",null,[Jn("div",null,[Jn("label",null,"Quality"+u("lossless"!=l.encoding?" (lossless)":""),1)]),Jn("div",null,[Jn(a,{modelValue:l.qualityLossless,"onUpdate:modelValue":t[4]||(t[4]=e=>l.qualityLossless=e),converter:l.converter},null,8,["modelValue","converter"])])],512),[[ll,s.converterSupportsNearLossless&&("auto"==l.encoding||"lossless"==l.encoding)]]),xn(Jn("div",null,[Dl,Jn("div",null,[xn(Jn("input",{type:"number",class:"method","onUpdate:modelValue":t[5]||(t[5]=e=>l.method=e)},null,512),[[Jo,l.method]])])],512),[[ll,s.converterSupportsMethod]]),"ewww"==l.converter?(Nn(),Hn("div",$l,[Al,Jn("div",null,[xn(Jn("input",{"onUpdate:modelValue":t[6]||(t[6]=e=>l.converterOptions.ewww["api-key"]=e)},null,512),[[Jo,l.converterOptions.ewww["api-key"]]])])])):eo("",!0)]),Jn("pre",null," Converter: "+u(l.converter)+"\n Encoding: "+u(l.encoding)+"\n Quality (lossy):\n quality: "+u(l.qualityLossy.quality)+",\n max: "+u(l.qualityLossy.max)+",\n\n default: "+u(l.qualityLossy.default)+"\n",1)],64)}));ql.render=Tl,ql.__scopeId="data-v-115f004a";var jl={name:"FileItem",emits:["foldUnfoldClick"],props:{item:Object},data:()=>({hover:!1}),inject:["wcfm"],methods:{getWCFM(){return this.wcfm},getFullPath(){for(var e=this.$parent,t=[];null!==e&&null!==e.$parent;)e.item&&t.push(e.item.name),e=e.$parent;return t.reverse().join("/")},infoClick(){this.getWCFM().displayInfo(this.getFullPath())},convertClick(){this.getWCFM().onConvertClick(this.getFullPath())}}};const Nl=Nt("data-v-a2787766");Tt("data-v-a2787766");const Bl={key:0,class:"icon-fold"},Hl=Jn("use",{"xlink:href":"#icon-fold"},null,-1),Wl={key:1,class:"icon-unfold"},Kl=Jn("use",{"xlink:href":"#icon-unfold"},null,-1),Ql=Jn("use",{"xlink:href":"#icon-folder"},null,-1),Gl={key:2,class:"icon-file"},Yl=Jn("use",{"xlink:href":"#icon-file"},null,-1),Jl={class:"buttons"};jt();const Xl=Nl((function(e,t,n,o,l,s){return Nn(),Hn("div",{class:"fileitem",onMouseover:t[5]||(t[5]=e=>l.hover=!0),onMouseleave:t[6]||(t[6]=e=>l.hover=!1)},[Jn("p",null,[n.item.isDir?(Nn(),Hn("span",{key:0,class:"foldUnfold",onClick:t[1]||(t[1]=e=>this.$emit("foldUnfoldClick"))},[n.item.isOpen?(Nn(),Hn("svg",Bl,[Hl])):eo("",!0),n.item.isOpen?eo("",!0):(Nn(),Hn("svg",Wl,[Kl]))])):eo("",!0),n.item.isDir?(Nn(),Hn("svg",{key:1,class:"icon-folder",onClick:t[2]||(t[2]=e=>this.$emit("foldUnfoldClick"))},[Ql])):eo("",!0),n.item.isDir?eo("",!0):(Nn(),Hn("svg",Gl,[Yl])),Zn(" "+u(n.item.name)+" ",1),Jn("div",Jl,[l.hover?(Nn(),Hn("button",{key:0,onClick:t[3]||(t[3]=ol((e=>s.infoClick()),["stop"]))},"Info")):eo("",!0),l.hover?(Nn(),Hn("button",{key:1,onClick:t[4]||(t[4]=ol((e=>s.convertClick()),["stop"])),innerHTML:n.item.isConverted?"Reconvert":"Convert"},null,8,["innerHTML"])):eo("",!0)])])],32)}));jl.render=Xl,jl.__scopeId="data-v-a2787766";var Zl={name:"FileTree",components:{FileItem:jl},props:{item:Object},methods:{toggle(){this.item.isOpen=!this.item.isOpen}}};const es={key:0,class:"tree"};Zl.render=function(e,t,n,o,l,s){const i=Pn("FileItem"),r=Pn("FileTree");return Nn(),Hn(zn,null,[Jn(i,{item:n.item,onDblclick:t[1]||(t[1]=e=>s.toggle()),onClick:t[2]||(t[2]=e=>s.toggle())},null,8,["item"]),void 0!==n.item.children&&n.item.isOpen?(Nn(),Hn("ul",es,[(Nn(!0),Hn(zn,null,Eo(n.item.children,(e=>(Nn(),Hn("li",null,[Jn(r,{item:e},null,8,["item"])])))),256))])):eo("",!0)],64)};var ts={name:"InfoPane",components:{},props:{info:Object},methods:{}};const ns={key:0},os=Jn("h2",null,"Original",-1),ls=Jn("br",null,null,-1),ss=Jn("br",null,null,-1),is={key:1},rs=Jn("h2",null,"Converted",-1),cs=Jn("br",null,null,-1),as=Jn("br",null,null,-1),us={key:2},ds=Jn("h2",null,"Conversion log",-1);ts.render=function(e,t,n,o,l,s){return Nn(),Hn(zn,null,[n.info.original?(Nn(),Hn("div",ns,[os,Zn(" Filename: "+u(n.info.original.name),1),ls,Zn(" Size: "+u(n.info.original.size),1),ss])):eo("",!0),n.info.converted?(Nn(),Hn("div",is,[rs,Zn(" Filename: "+u(n.info.converted.name),1),cs,Zn(" Size: "+u(n.info.converted.size),1),as])):eo("",!0),n.info.log?(Nn(),Hn("div",us,[ds,Zn(" "+u(n.info.log),1)])):eo("",!0)],64)};var ps={name:"multipane",props:{layout:{type:String,default:"vertical"}},data:()=>({isResizing:!1}),computed:{classnames(){return["multipane","layout-"+this.layout.slice(0,1),this.isResizing?"is-resizing":""]},cursor(){return this.isResizing?"vertical"==this.layout?"col-resize":"row-resize":""},userSelect(){return this.isResizing?"none":""}},methods:{onMouseDown({target:e,pageX:t,pageY:n}){if("string"==typeof e.className&&e.className.match("multipane-resizer")){let o=this,{$el:l,layout:s}=o,i=e.previousElementSibling,{offsetWidth:r,offsetHeight:c}=i,a=!!(i.style.width+"").match("%");const{addEventListener:u,removeEventListener:d}=window,p=(e,t=0)=>{if(t-=30,"vertical"==s){let n=l.clientWidth,o=e+t;return i.style.width=a?o/n*100+"%":o+"px"}if("horizontal"==s){let n=l.clientHeight,o=e+t;return i.style.height=a?o/n*100+"%":o+"px"}};o.isResizing=!0;let f=p();o.$emit("paneResizeStart",i,e,f);const h=function({pageX:l,pageY:a}){f="vertical"==s?p(r,l-t):p(c,a-n),o.$emit("paneResize",i,e,f)},m=function(){f=p("vertical"==s?i.clientWidth:i.clientHeight),o.isResizing=!1,d("mousemove",h),d("mouseup",m),o.$emit("paneResizeStop",i,e,f)};u("mousemove",h),u("mouseup",m)}}}};ps.render=function(e,t,n,o,l,s){return Nn(),Hn("div",{class:s.classnames,style:{cursor:s.cursor,userSelect:s.userSelect},onMousedown:t[1]||(t[1]=(...e)=>s.onMouseDown(...e))},[zt(e.$slots,"default")],38)};const fs={class:"multipane-resizer"},hs=Jn("div",null,null,-1);const ms={render:function(e,t){return Nn(),Hn("div",fs,[hs,zt(e.$slots,"default")])}};var vs={name:"WCFM",components:{SVGs:dl,ConvertOptions:ql,FileTree:Zl,InfoPane:ts,Multipane:ps,MultipaneResizer:ms},methods:{onConvertClick(e){alert(e)},displayInfo(e){var t=this;cl.post("info",{path:e},(function(e){t.selectedInfo=e}))}},mounted(){var e=this;cl.post("get-tree",{folder:""},(function(t){e.item=t}))},data:()=>({selectedPath:null,selectedItem:null,item:{},selectedInfo:{}}),provide(){return{wcfm:this}}};const gs={class:"pane",style:{width:"48%"}},ys={class:"pane",style:{flexGrow:1}},bs=Jn("hr",null,null,-1);vs.render=function(e,t,n,o,l,s){const i=Pn("SVGs"),r=Pn("FileTree"),c=Pn("multipane-resizer"),a=Pn("ConvertOptions"),u=Pn("InfoPane"),d=Pn("multipane");return Nn(),Hn(zn,null,[Jn(i),Jn(d,{class:"mainpanel",layout:"vertical"},{default:Dt((()=>[Jn("div",gs,[Jn(r,{item:l.item},null,8,["item"])]),Jn(c),Jn("div",ys,[Jn(a),bs,Jn(u,{info:l.selectedInfo},null,8,["info"])])])),_:1})],64)};const _s=((...e)=>{const t=(rl||(rl=Fn(il))).createApp(...e),{mount:n}=t;return t.mount=e=>{const o=function(e){if(E(e)){return document.querySelector(e)}return e}(e);if(!o)return;const l=t._component;V(l)||l.render||l.template||(l.template=o.innerHTML),o.innerHTML="";const s=n(o);return o.removeAttribute("v-cloak"),o.setAttribute("data-v-app",""),s},t})(vs);window.wcfmoptions||(window.wcfmoptions={},window.wcfmoptions.poster=function(e,t,n,o){switch(e){case"get-tree":var l={name:"root",isDir:!0,isOpen:!0,children:[{name:"folder",isDir:!0,children:[{name:"file",isDir:!1},{name:"subfolder",isDir:!0,children:[{name:"file",isDir:!1}]},{name:"file",isDir:!1}]},{name:"file",isDir:!1,isConverted:!0},{name:"file2",isDir:!1,isConverted:!1}]};break;case"conversion-settings":l={converters:[{id:"cwebp",name:"cwebp"},{id:"vips",name:"vips"},{id:"ewww",name:"ewww"},{id:"gd",name:"gd"}],supportedStandardOptions:{encoding:["cwebp","vips","imagick","gmagick","imagemagick","graphicsmagick","ffmpeg","wpc"],method:["cwebp","imagick","gmagick","imagemagick","graphicsmagick","ffmpeg","wpc"],nearLossless:["cwebp","vips","wpc"]},overrideDefaults:{converter:"cwebp",encoding:"lossless",method:3},systemStatus:{converterRequirements:{gd:{extensionLoaded:!1,compiledWithWebP:!0}}}};break;case"info":l={original:{name:"file.png",size:100,url:""},converted:{name:"file.png.webp",size:70,url:""},log:"blah blah blah"};break;default:l="ok"}n(l)}),_s.mount("#webpconvert-filemanager");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import{_ as u,o as c,c as d,a as Z,b as n,n as w,d as m,e as v,t as f,p as C,f as S,r as h,g as _,F as z,h as F,i as y,j as M,k as P,m as H,V as R,w as b,l as k,v as V,s as Y,q as L,u as j}from"./vendor.b4e4e155.js";const B=function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))l(s);new MutationObserver(s=>{for(const i of s)if(i.type==="childList")for(const a of i.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&l(a)}).observe(document,{childList:!0,subtree:!0});function o(s){const i={};return s.integrity&&(i.integrity=s.integrity),s.referrerpolicy&&(i.referrerPolicy=s.referrerpolicy),s.crossorigin==="use-credentials"?i.credentials="include":s.crossorigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function l(s){if(s.ep)return;s.ep=!0;const i=o(s);fetch(s.href,i)}};B();class x{static post(t,o,l){var s=this;window.wcfmoptions.poster(t,o,function(i){l.call(s,i)},function(){console.log("failure")})}}const U={},E={style:{position:"absolute",width:"0",height:"0"},width:"0",height:"0",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},A=Z(`<defs><symbol id="icon-folder" viewBox="0 0 309.267 309.267"><g><path style="fill:#D0994B;" d="M260.944,43.491H125.64c0,0-18.324-28.994-28.994-28.994H48.323c-10.67,0-19.329,8.65-19.329,19.329
|
2 |
+
v222.286c0,10.67,8.659,19.329,19.329,19.329h212.621c10.67,0,19.329-8.659,19.329-19.329V62.82
|
3 |
+
C280.273,52.15,271.614,43.491,260.944,43.491z"></path><path style="fill:#E4E7E7;" d="M28.994,72.484h251.279v77.317H28.994V72.484z"></path><path style="fill:#F4B459;" d="M19.329,91.814h270.609c10.67,0,19.329,8.65,19.329,19.329l-19.329,164.298
|
4 |
+
c0,10.67-8.659,19.329-19.329,19.329H38.658c-10.67,0-19.329-8.659-19.329-19.329L0,111.143C0,100.463,8.659,91.814,19.329,91.814z
|
5 |
+
"></path></g></symbol><symbol id="icon-unfold" viewBox="0 0 32 32"><path d="M28,14H18V4c0-1.104-0.896-2-2-2s-2,0.896-2,2v10H4c-1.104,0-2,0.896-2,2s0.896,2,2,2h10v10c0,1.104,0.896,2,2,2 s2-0.896,2-2V18h10c1.104,0,2-0.896,2-2S29.104,14,28,14z"></path></symbol><symbol id="icon-fold" viewBox="0 0 24 24"><g fill="none" stroke="#000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line></g></symbol><symbol id="icon-file" viewBox="0 0 56 56"><g><path style="fill:#E9E9E0;" d="M36.985,0H7.963C7.155,0,6.5,0.655,6.5,1.926V55c0,0.345,0.655,1,1.463,1h40.074
|
6 |
+
c0.808,0,1.463-0.655,1.463-1V12.978c0-0.696-0.093-0.92-0.257-1.085L37.607,0.257C37.442,0.093,37.218,0,36.985,0z"></path><polygon style="fill:#D9D7CA;" points="37.5,0.151 37.5,12 49.349,12 "></polygon><circle style="fill:#F3D55B;" cx="18.931" cy="14.431" r="4.569"></circle><polygon style="fill:#26B99A;" points="6.5,39 17.5,39 49.5,39 49.5,28 39.5,18.5 29,30 23.517,24.517 "></polygon><path style="fill:#14A085;" d="M48.037,56H7.963C7.155,56,6.5,55.345,6.5,54.537V39h43v15.537C49.5,55.345,48.845,56,48.037,56z"></path><g></g></g></symbol><svg id="icon-ok" viewBox="0 0 256 256"><g fill="green" stroke="none" transform="translate(0.000000,256.000000) scale(0.100000,-0.100000)"><path d="M1064 2545 c-406 -72 -744 -324 -927 -690 -96 -193 -127 -333 -127 -575 0 -243 33 -387 133 -585 177 -351 518 -606 907 -676 118 -22 393 -17 511 8 110 24 252 78 356 136 327 183 569 525 628 887 19 122 19 338 0 460 -81 498 -483 914 -990 1025 -101 22 -389 28 -491 10z m814 -745 c39 -27 73 -59 77 -70 9 -27 10 -25 -372 -590 -345 -510 -357 -524 -420 -512 -19 4 -98 74 -250 225 -123 121 -225 228 -228 238 -3 10 1 31 9 47 20 40 125 132 149 132 11 0 79 -59 162 -140 79 -77 146 -140 149 -140 3 0 38 48 78 108 95 143 465 678 496 720 35 46 64 42 150 -18z"></path></g></svg><svg id="icon-not-available" viewBox="0 0 500.000000 500.000000" preserveAspectRatio="xMidYMid meet"><g fill="#b11010" stroke="none" transform="translate(0.000000,500.000000) scale(0.100000,-0.100000)"><path d="M2315 4800 c-479 -35 -928 -217 -1303 -527 -352 -293 -615 -702 -738 -1151 -104 -380 -104 -824 0 -1204 107 -389 302 -724 591 -1013 354 -354 785 -572 1279 -646 196 -30 476 -30 672 0 494 74 925 292 1279 646 354 354 571 784 646 1279 30 197 30 475 0 672 -75 495 -292 925 -646 1279 -289 289 -624 484 -1013 591 -228 62 -528 91 -767 74z m353 -511 c458 -50 874 -272 1170 -624 417 -497 536 -1174 308 -1763 -56 -145 -176 -367 -235 -434 -4 -4 -566 552 -1250 1236 l-1243 1243 94 60 c354 229 754 327 1156 282z m864 -3200 c-67 -59 -289 -179 -434 -235 -946 -366 -2024 172 -2322 1158 -47 155 -66 276 -73 453 -13 362 84 704 290 1023 l60 94 1243 -1243 c684 -684 1240 -1246 1236 -1250z"></path></g></svg><svg id="icon-help" viewBox="0 0 400 400" style="enable-background:new 0 0 400 400;" xml:space="preserve"><g><path style="fill:#cccccc;" d="M199.996,0C89.719,0,0,89.72,0,200c0,110.279,89.719,200,199.996,200C310.281,400,400,310.279,400,200
|
7 |
+
C400,89.72,310.281,0,199.996,0z M199.996,373.77C104.187,373.77,26.23,295.816,26.23,200
|
8 |
+
c0-95.817,77.957-173.769,173.766-173.769c95.816,0,173.772,77.953,173.772,173.769
|
9 |
+
C373.769,295.816,295.812,373.77,199.996,373.77z"></path><path style="fill:#000000;" d="M199.996,91.382c-35.176,0-63.789,28.616-63.789,63.793c0,7.243,5.871,13.115,13.113,13.115
|
10 |
+
c7.246,0,13.117-5.873,13.117-13.115c0-20.71,16.848-37.562,37.559-37.562c20.719,0,37.566,16.852,37.566,37.562
|
11 |
+
c0,20.714-16.849,37.566-37.566,37.566c-7.242,0-13.113,5.873-13.113,13.114v45.684c0,7.243,5.871,13.115,13.113,13.115
|
12 |
+
s13.117-5.872,13.117-13.115v-33.938c28.905-6.064,50.68-31.746,50.68-62.427C263.793,119.998,235.176,91.382,199.996,91.382z"></path><path d="M200.004,273.738c-9.086,0-16.465,7.371-16.465,16.462s7.379,16.465,16.465,16.465c9.094,0,16.457-7.374,16.457-16.465
|
13 |
+
S209.098,273.738,200.004,273.738z"></path></g></svg><svg id="icon-help2" viewBox="0 0 431.855 431.855" style="enable-background:new 0 0 431.855 431.855;" xml:space="preserve"><g><path style="fill:#aaaaaa;" d="M215.936,0C96.722,0,0.008,96.592,0.008,215.814c0,119.336,96.714,216.041,215.927,216.041
|
14 |
+
c119.279,0,215.911-96.706,215.911-216.041C431.847,96.592,335.214,0,215.936,0z M231.323,335.962
|
15 |
+
c-5.015,4.463-10.827,6.706-17.411,6.706c-6.812,0-12.754-2.203-17.826-6.617c-5.08-4.406-7.625-10.575-7.625-18.501
|
16 |
+
c0-7.031,2.463-12.949,7.373-17.745c4.91-4.796,10.933-7.194,18.078-7.194c7.031,0,12.949,2.398,17.753,7.194
|
17 |
+
c4.796,4.796,7.202,10.713,7.202,17.745C238.858,325.362,236.346,331.5,231.323,335.962z M293.856,180.934
|
18 |
+
c-3.853,7.145-8.429,13.306-13.737,18.501c-5.292,5.194-14.81,13.924-28.548,26.198c-3.788,3.463-6.836,6.503-9.12,9.12
|
19 |
+
c-2.284,2.626-3.991,5.023-5.105,7.202c-1.122,2.178-1.983,4.357-2.593,6.535c-0.61,2.17-1.528,5.999-2.772,11.469
|
20 |
+
c-2.113,11.608-8.754,17.411-19.915,17.411c-5.804,0-10.681-1.894-14.656-5.69c-3.959-3.796-5.934-9.429-5.934-16.907
|
21 |
+
c0-9.372,1.455-17.493,4.357-24.361c2.886-6.869,6.747-12.892,11.543-18.086c4.804-5.194,11.274-11.356,19.427-18.501
|
22 |
+
c7.145-6.251,12.307-10.965,15.485-14.144c3.186-3.186,5.861-6.73,8.031-10.632c2.187-3.91,3.26-8.145,3.26-12.721
|
23 |
+
c0-8.933-3.308-16.46-9.957-22.597c-6.641-6.137-15.209-9.21-25.703-9.21c-12.282,0-21.321,3.097-27.125,9.291
|
24 |
+
c-5.804,6.194-10.705,15.314-14.729,27.369c-3.804,12.616-11.006,18.923-21.598,18.923c-6.251,0-11.526-2.203-15.826-6.609
|
25 |
+
c-4.292-4.406-6.438-9.177-6.438-14.314c0-10.6,3.406-21.346,10.21-32.23c6.812-10.884,16.745-19.899,29.807-27.036
|
26 |
+
c13.054-7.145,28.296-10.722,45.699-10.722c16.184,0,30.466,2.991,42.854,8.966c12.388,5.966,21.963,14.087,28.718,24.361
|
27 |
+
c6.747,10.266,10.128,21.427,10.128,33.482C299.635,165.473,297.709,173.789,293.856,180.934z"></path></g></svg></defs>`,1),q=[A];function G(e,t){return c(),d("svg",E,q)}var K=u(U,[["render",G]]);const J={name:"FileItem",emits:["toggle","select"],props:{item:Object},data(){return{hover:!1,selected:!1}},inject:["wcfm"],methods:{onClick(e){this.selected=!0,this.$emit("select",this)},getWCFM(){return this.wcfm},getFullPath(){for(var e=this.$parent,t=[];e!==null&&e.$parent!==null;)e.item&&t.push(e.item.name),e=e.$parent;return t.pop(),t.reverse().join("/")},infoClick(){this.getWCFM().displayInfo(this.getFullPath())},convertClick(){this.getWCFM().onConvertClick(this.getFullPath())}}},$=e=>(C("data-v-1c7f963e"),e=e(),S(),e),Q={key:0,class:"icon-fold"},ee=$(()=>n("use",{"xlink:href":"#icon-fold"},null,-1)),te=[ee],oe={key:1,class:"icon-unfold"},se=$(()=>n("use",{"xlink:href":"#icon-unfold"},null,-1)),ie=[se],ne=$(()=>n("use",{"xlink:href":"#icon-folder"},null,-1)),le=[ne],ae={key:2,class:"icon-file"},re=$(()=>n("use",{"xlink:href":"#icon-file"},null,-1)),ce=[re];function de(e,t,o,l,s,i){return c(),d("div",{class:w({fileitem:!0,selected:s.selected}),onMouseover:t[2]||(t[2]=a=>s.hover=!0),onMouseleave:t[3]||(t[3]=a=>s.hover=!1),onClick:t[4]||(t[4]=(...a)=>i.onClick&&i.onClick(...a))},[n("p",null,[o.item.isDir?(c(),d("span",{key:0,class:w({"fold-unfold":!0,empty:o.item.children.length==0}),onClick:t[0]||(t[0]=a=>this.$emit("toggle"))},[o.item.isOpen?(c(),d("svg",Q,te)):m("",!0),o.item.isOpen?m("",!0):(c(),d("svg",oe,ie))],2)):m("",!0),o.item.isDir?(c(),d("svg",{key:1,class:"icon-folder",onClick:t[1]||(t[1]=a=>this.$emit("toggle"))},le)):m("",!0),o.item.isDir?m("",!0):(c(),d("svg",ae,ce)),v(" "+f(o.item.name),1)])],34)}var he=u(J,[["render",de],["__scopeId","data-v-1c7f963e"]]);const ue={name:"FileTree",components:{FileItem:he},emits:["select"],props:{item:Object},methods:{toggle(){this.item.isOpen=!this.item.isOpen},onSelect(e){this.$emit("select",e)}}},me={key:0,class:"tree"};function _e(e,t,o,l,s,i){const a=h("FileItem"),r=h("FileTree",!0);return c(),d(z,null,[_(a,{item:o.item,onDblclick:i.toggle,onToggle:i.toggle,onSelect:i.onSelect},null,8,["item","onDblclick","onToggle","onSelect"]),o.item.children!==void 0&&o.item.isOpen?(c(),d("ul",me,[(c(!0),d(z,null,F(o.item.children,p=>(c(),d("li",null,[_(r,{item:p,onSelect:i.onSelect},null,8,["item","onSelect"])]))),256))])):m("",!0)],64)}var fe=u(ue,[["render",_e]]);const pe={name:"Files",components:{FileTree:fe},emits:["select"],props:{item:Object,statusText:String},methods:{onSelect(e){this.selectedItem&&(this.selectedItem.selected=!1),this.selectedItem=e,this.$emit("select",this.selectedItem.getFullPath(),this.selectedItem.item.isDir)}},data(){return{selected:null}}},ge={key:1};function ve(e,t,o,l,s,i){const a=h("FileTree");return c(),d(z,null,[o.item?(c(),y(a,{key:0,item:o.item,onSelect:i.onSelect},null,8,["item","onSelect"])):m("",!0),o.item?m("",!0):(c(),d("div",ge,f(o.statusText),1))],64)}var ye=u(pe,[["render",ve]]);const ze={name:"Modal",emits:["close"],props:{title:{type:String},closeButtonText:{type:String},alignment:{type:String},width:{type:[Number,String],default:"95%"},height:{type:[Number,String],default:"95%"},maxheight:{type:[Number,String],default:"700px"}},computed:{containerStyle(){let e={width:this.width,height:this.height,"max-height":this.maxheight};return this.alignment=="center"&&(e.margin="0px auto"),this.alignment=="right"&&(e.position="absolute",e.right="10px"),e}},methods:{onCloseClick(){this.$emit("close")}}},be={class:"modal-mask"},xe={class:"modal-wrapper"},$e={class:"title"},we={class:"modal-body"},Ce={class:"content"},Se=v(" default body "),ke={class:"close-button-with-text"};function Ve(e,t,o,l,s,i){return c(),d("div",be,[n("div",xe,[n("div",{class:"modal-container",style:M(i.containerStyle)},[n("a",{class:"close-button",onClick:t[0]||(t[0]=(...a)=>i.onCloseClick&&i.onCloseClick(...a))},"X"),n("div",$e,f(o.title),1),n("div",we,[n("div",Ce,[P(e.$slots,"default",{},()=>[Se]),n("div",ke,[n("button",{onClick:t[1]||(t[1]=(...a)=>i.onCloseClick&&i.onCloseClick(...a))},f(o.closeButtonText),1)])])])],4)])])}var Ie=u(ze,[["render",Ve]]);const Fe={name:"ZoomSlider",components:{Slider:H},emits:["update:zoom"],props:{zoom:{type:Number,default:1}},watch:{exp(e,t){this.$emit("update:zoom",2**e)},zoom(e,t){this.exp=Math.log2(e)}},methods:{sliderFormat(e){return Math.round(2**e*100)+"%"}},mounted(){},data(){return{exp:0}}},Me={class:"zoom-slider"};function Re(e,t,o,l,s,i){const a=h("Slider");return c(),d("div",Me,[_(a,{modelValue:s.exp,"onUpdate:modelValue":t[0]||(t[0]=r=>s.exp=r),min:-4,max:4,width:100,step:-1,format:i.sliderFormat,tooltipPosition:"bottom",orientation:"horizontal"},null,8,["modelValue","format"])])}var Ye=u(Fe,[["render",Re]]);const Xe={name:"ImageViewport",components:{VueZoomer:R,ZoomSlider:Ye},emits:["update:zoom","update:translateX","update:translateY","load","resize"],props:{src:{type:String},height:{type:Number,default:500},zoom:{type:Number,default:1},scaleZoomRatio:{type:Number},translateX:{type:Number,default:1},translateY:{type:Number,default:1}},data(){return{ratio:1,ro:null}},watch:{height(e,t){var o;((o=this.$refs)==null?void 0:o.zoomer)&&(this.$refs.zoomer.onWindowResize(),this.$refs.zoomer.refreshContainerPos())},scaleZoomRatio(e){var t;((t=this.$refs)==null?void 0:t.zoomer)&&(this.$refs.zoomer.onWindowResize(),this.$refs.zoomer.refreshContainerPos()),this.$refs.zoomer.scale=this.zoom*this.scaleZoomRatio},zoom(e,t){this.isImageReady(),this.$refs.zoomer.scale=e*this.scaleZoomRatio},translateX(e,t){this.$refs.zoomer.translateX!=e&&(this.$refs.zoomer.translateX=e)},translateY(e,t){this.$refs.zoomer.translateY!=e&&(this.$refs.zoomer.translateY=e)}},methods:{getGoodContainerHeight(){var e,t,o;if((t=(e=this.$refs)==null?void 0:e.theimg)==null?void 0:t.naturalWidth){let l=this.$refs.theimg.naturalWidth/this.$refs.theimg.naturalHeight,i=((o=this.$refs.root)==null?void 0:o.offsetWidth)/l;return i>300&&(i=300),i}return 300},updateContainerHeight(){},isImageReady(){var e,t,o;return!(!((t=(e=this.$refs)==null?void 0:e.theimg)==null?void 0:t.naturalWidth)||!((o=this.$refs.root)==null?void 0:o.offsetWidth))},calcScaleZoomRatio(){var l,s;if(!this.isImageReady())return 1;let e=this.$refs.theimg.naturalWidth/((l=this.$refs.root)==null?void 0:l.offsetWidth),t=this.$refs.theimg.naturalHeight/((s=this.$refs.root)==null?void 0:s.offsetHeight),o=Math.max(e,t);return isNaN(o)?1:o},updateRatio(){},updateScale(){this.zoom&&(this.$refs.zoomer.scale=this.zoom*this.scaleZoomRatio)},zoomToFit(){},onImgLoad(){var e,t;((t=(e=this.$refs)==null?void 0:e.theimg)==null?void 0:t.naturalWidth)&&this.$emit("load")},onResize(){this.$emit("resize")},onDoubleTap(){console.log("double tab - zoom to 100%"),this.$emit("update:zoom",1),this.$emit("update:translateX",0),this.$emit("update:translateY",0)}},mounted(){window.ResizeObserver&&(this.ro=new ResizeObserver(this.onResize).observe(this.$refs.root)),this.$refs.zoomer.tapDetector.onDoubleTap(this.onDoubleTap),this.$watch("$refs.zoomer.scale",(e,t)=>{this.isImageReady(),this.$emit("update:zoom",e/this.scaleZoomRatio)}),this.$watch("$refs.zoomer.translateX",(e,t)=>{this.$emit("update:translateX",e)}),this.$watch("$refs.zoomer.translateY",(e,t)=>{this.$emit("update:translateY",e)})},beforeDestroy(){window.ResizeObserver&&this.ro.unobserve(this.$refs.zoomer)}},Oe={ref:"root",class:"image-viewport"},Te=["src"],De={class:"zoom-info"};function We(e,t,o,l,s,i){const a=h("v-zoomer");return c(),d("div",Oe,[_(a,{ref:"zoomer",class:"zoomer",minScale:.1,maxScale:8,onResize:i.onResize,doubleClickToZoom:!1,style:M({height:o.height+"px"}),pivot:"cursor",limitTranslation:!1,lockPanOnNoScale:!1},{default:b(()=>[n("img",{ref:"theimg",src:o.src,onLoad:t[0]||(t[0]=(...r)=>i.onImgLoad&&i.onImgLoad(...r))},null,40,Te)]),_:1},8,["minScale","onResize","style"]),n("div",De," zoom: "+f(Math.round(o.zoom*100))+"% ",1)],512)}var Ne=u(Xe,[["render",We]]);const Ze={name:"Variant",components:{ImageViewport:Ne},emits:["select","update:zoom","update:translateX","update:translateY","load","resize"],props:{title:{type:String},info:{type:Object},url:{type:String,default:""},height:{type:Number},zoom:{type:Number},scaleZoomRatio:{type:Number},translateX:{type:Number},translateY:{type:Number},variantIndex:{type:Number}},computed:{imageUrl:function(){var e;return(e=this.info)==null?void 0:e.url},filesize:function(){var t;if(!((t=this.info)==null?void 0:t.size))return"";let e=this.info.size;return e<1024?e+" bytes":(e/=1024,e<1024?Math.round(e*10)/10+" kb":(e/=1024,Math.round(e*10)/10+" MB"))}},methods:{onVariantSelect(){this.$emit("select",this.variantIndex)},onLoad(){this.$emit("load")},zoomToFit(){this.$refs.theport.zoomToFit()}},mounted(){this.$watch("$refs.theport.zoom",(e,t)=>{this.$emit("update:zoom",e)}),this.$watch("$refs.theport.translateX",(e,t)=>{this.$emit("update:translateX",e)}),this.$watch("$refs.theport.translateY",(e,t)=>{this.$emit("update:translateY",e)})},data(){return{}}},Pe={class:"variant"},He={class:"header"},Le={class:"title"},je={class:"size"};function Be(e,t,o,l,s,i){const a=h("ImageViewport");return c(),d("div",Pe,[n("div",He,[n("div",Le,f(o.title),1),n("div",je,f(i.filesize),1)]),_(a,{ref:"theport",src:i.imageUrl,height:o.height,zoom:o.zoom,"onUpdate:zoom":t[0]||(t[0]=r=>o.zoom=r),scaleZoomRatio:o.scaleZoomRatio,translateX:o.translateX,"onUpdate:translateX":t[1]||(t[1]=r=>o.translateX=r),translateY:o.translateY,"onUpdate:translateY":t[2]||(t[2]=r=>o.translateY=r),onLoad:i.onLoad,onResize:t[3]||(t[3]=r=>this.$emit("resize"))},null,8,["src","height","zoom","scaleZoomRatio","translateX","translateY","onLoad"])])}var X=u(Ze,[["render",Be],["__scopeId","data-v-0372e854"]]);const Ue={name:"Variants",components:{Variant:X},emits:["update:zoom","update:translateX","update:translateY"],props:{file:{type:Object},viewport:{type:Object},height:{type:Number},zoom:{type:Number,default:1},translateX:{type:Number,default:0},translateY:{type:Number,default:0}},watch:{file(e,t){}},methods:{onZoomChange(e){this.$emit("update:zoom",e)},onTranslateXChange(e){this.$emit("update:translateX",e)},onTranslateYChange(e){this.$emit("update:translateY",e)},sliderFormat(e){return Math.round(e*100)+"%"},changeImage(){this.imageUrl=="http://localhost:3000/src/assets/dummy.jpg"?this.imageUrl="http://localhost:3000/src/assets/dummy2.jpg":this.imageUrl="http://localhost:3000/src/assets/dummy.jpg",this.selectedVariant=-1},onVariantSelect(e){this.selectedVariant=e}},mounted(){this.$watch("$refs.variants.zoom",(e,t)=>{})},data(){var e="http://localhost:3000/src/assets/200x100.jpg";return{imageUrl:"",selectedVariant:-1,variants:[{title:"Existing conversion",size:732,url:e},{title:"Lossy, q:20",size:35e5,url:e}]}}},O=e=>(C("data-v-25a3327e"),e=e(),S(),e),Ee={class:"variants-component"},Ae=O(()=>n("br",null,null,-1)),qe=O(()=>n("br",null,null,-1)),Ge={class:"variants"};function Ke(e,t,o,l,s,i){const a=h("Variant");return c(),d("div",Ee,[v(" File: "+f(o.file)+" ",1),n("button",{onClick:t[0]||(t[0]=r=>i.changeImage())},"Change image"),Ae,qe,n("div",Ge,[(c(!0),d(z,null,F(s.variants,(r,p)=>(c(),y(a,{title:r.title,info:r,variantIndex:p,class:w({selected:p==s.selectedVariant}),height:o.height,zoom:o.zoom,"onUpdate:zoom":[t[1]||(t[1]=g=>o.zoom=g),i.onZoomChange],translateX:o.translateX,"onUpdate:translateX":[t[2]||(t[2]=g=>o.translateX=g),i.onTranslateXChange],translateY:o.translateY,"onUpdate:translateY":[t[3]||(t[3]=g=>o.translateY=g),i.onTranslateYChange],onSelect:i.onVariantSelect},null,8,["title","info","variantIndex","class","height","zoom","translateX","translateY","onSelect","onUpdate:zoom","onUpdate:translateX","onUpdate:translateY"]))),256))])])}var Je=u(Ue,[["render",Ke],["__scopeId","data-v-25a3327e"]]);const Qe={name:"FileProperties",components:{Variant:X,Variants:Je},props:{file:{type:Object,default:{}}},watch:{file(e,t){e.isDir||this.load(e.path)}},methods:{onVariantSelect(e){this.selectedVariant=e},onOriginalLoad(){if(this.updateHeight(),this.$refs.original.$refs.theport.calcScaleZoomRatio()>1){let t=this.$refs.original.$refs.theport,o=t.$refs.theimg,l=t.$refs.root,s=o.naturalWidth,i=o.naturalHeight,a=l.offsetWidth,p=this.height/i,g=a/s;this.zoom=Math.min(p,g)}else this.zoom=1;this.translateX=0,this.translateY=0},onOriginalResize(){this.updateHeight()},updateHeight(){this.$refs.original&&(this.height=this.$refs.original.$refs.theport.getGoodContainerHeight(),this.scaleZoomRatio=this.$refs.original.$refs.theport.calcScaleZoomRatio())},reset(){this.originalInfo=null,this.convertedInfo=null,this.errorMsg=""},load(e){let t=this;t.reset(),t.loading=!0,x.post("info",{path:e},function(o){o.success||(t.errorMsg=o.data),t.loading=!1,t.originalInfo=o.original,o.converted&&(t.convertedInfo=o.converted)})}},mounted(){this.file&&this.load(this.file.path)},data(){return{zoom:1,scaleZoomRatio:1,translateX:0,translateY:0,height:100,loading:!1,errorMsg:"",originalInfo:null,convertedInfo:null}}},T=e=>(C("data-v-32d950b3"),e=e(),S(),e),et={class:"file-properties"},tt={class:"path"},ot=v(" Path: "),st={class:"path"},it={key:0,class:"error"},nt=T(()=>n("p",null," Above, you see the original image. If it has been converted, you also see the converted image (provided that your browser supports webp). ",-1)),lt=T(()=>n("p",null," You can zoom in on the image, ie using scroll wheel. Both images will zoom, allowing you to compare the quality. Double-click the image to set zoom to 100%. You can also drag the image. ",-1));function at(e,t,o,l,s,i){const a=h("Variant");return c(),d("div",et,[n("div",tt,[ot,n("span",st,f(o.file.path),1)]),s.errorMsg?(c(),d("div",it,f(s.errorMsg),1)):m("",!0),k(n("div",null,"Getting info...",512),[[V,s.loading]]),k(_(a,{ref:"original",title:"Original",info:s.originalInfo,height:s.height,zoom:s.zoom,"onUpdate:zoom":t[0]||(t[0]=r=>s.zoom=r),scaleZoomRatio:s.scaleZoomRatio,translateX:s.translateX,"onUpdate:translateX":t[1]||(t[1]=r=>s.translateX=r),translateY:s.translateY,"onUpdate:translateY":t[2]||(t[2]=r=>s.translateY=r),onLoad:i.onOriginalLoad,onResize:i.onOriginalResize},null,8,["info","height","zoom","scaleZoomRatio","translateX","translateY","onLoad","onResize"]),[[V,s.originalInfo]]),k(_(a,{title:"Existing conversion",info:s.convertedInfo,height:s.height,zoom:s.zoom,"onUpdate:zoom":t[3]||(t[3]=r=>s.zoom=r),scaleZoomRatio:s.scaleZoomRatio,translateX:s.translateX,"onUpdate:translateX":t[4]||(t[4]=r=>s.translateX=r),translateY:s.translateY,"onUpdate:translateY":t[5]||(t[5]=r=>s.translateY=r)},null,8,["info","height","zoom","scaleZoomRatio","translateX","translateY"]),[[V,s.convertedInfo]]),nt,lt])}var rt=u(Qe,[["render",at],["__scopeId","data-v-32d950b3"]]);const ct={name:"FolderProperties",components:{},props:{file:{type:Object,default:{}}},watch:{file(e,t){}}},dt={class:"folder-properties"},ht={class:"path"},ut=v(" Path: "),mt={class:"path"},_t=n("p",null," You cannot do anything on folders yet. Browse to an image... ",-1);function ft(e,t,o,l,s,i){return c(),d("div",dt,[n("div",ht,[ut,n("span",mt,f(o.file.path),1)]),_t])}var pt=u(ct,[["render",ft]]);const gt={name:"Welcome"},vt={class:"welcome"},yt=n("p",{class:"headline"},[n("div",null,"Welcome to"),n("h3",null,"WebP Convert file manager 0.1")],-1),zt=n("p",null,[v(" At current stage you can browse the image files and compare the original vs the converted file."),n("br"),v(' To open a folder, click the "+" sign next to the folder name or double click the folder name')],-1),bt=n("p",null,[n("h4",null,"Whats new?"),v(" Everything is new! This is the first tentative pre-alpha work-in-progress release. ")],-1),xt=n("p",null,[n("h4",null,"Whats planned ahead?"),v(" Next thing is of course to enable you to trigger conversions. To support development, you can "),n("a",{href:"https://ko-fi.com/rosell",target:"_blank"},"buy me a cup of coffee")],-1),$t=[yt,zt,bt,xt];function wt(e,t,o,l,s,i){return c(),d("div",vt,$t)}var Ct=u(gt,[["render",wt]]);const St={name:"WCFM",components:{SVGs:K,FileProperties:rt,FolderProperties:pt,Modal:Ie,Files:ye,Splitpanes:Y.exports.Splitpanes,Pane:Y.exports.Pane,Welcome:Ct},methods:{onConvertClick(e){var l,s;let t=(s=(l=this.$refs.convertOptions)==null?void 0:l.general)==null?void 0:s.data,o={path:e,convertOptions:t};console.log(o),x.post("convert",o,function(i){console.log("convert response:",i)})},onConvertCloseClick(){console.log("CLRCL"),this.showConvertOptions=!1},onFileSelect(e,t){this.file={path:e,isDir:t}},displayInfo(e){var t=this;x.post("info",{path:e},function(o){t.selectedInfo=o})},sortTree(e){var t=this;return e.children.sort(function(o,l){return o.isDir&&!l.isDir?-1:!o.isDir&&l.isDir||o.name>l.name?1:o.name<l.name?-1:0}),e.children.forEach(function(o){o.isDir&&(o=t.sortTree(o))}),e}},mounted(){var e=this;x.post("get-tree",{folder:""},function(t){e.treeStatusText="sorting...",e.item=e.sortTree(t)})},data(){return{file:null,selectedItem:null,item:null,treeStatusText:"loading file tree...",selectedInfo:{},showConvertOptions:!1}},provide(){return{wcfm:this}}},kt={class:"wcfm",style:{overflow:"hidden"}},Vt={class:"pane-content"},It={key:0,class:"pane-content"};function Ft(e,t,o,l,s,i){const a=h("SVGs"),r=h("Files"),p=h("pane"),g=h("FileProperties"),D=h("FolderProperties"),W=h("Welcome"),N=h("splitpanes");return c(),d("div",kt,[_(a),_(N,{class:"default-theme",style:{position:"absolute",top:"0",left:"0"}},{default:b(()=>[_(p,{size:"30"},{default:b(()=>[n("div",Vt,[n("div",null,[_(r,{item:s.item,statusText:s.treeStatusText,onSelect:i.onFileSelect},null,8,["item","statusText","onSelect"])])])]),_:1}),_(p,{size:"70",style:{"overflow-y":"auto"}},{default:b(()=>[s.file?(c(),d("div",It,[s.file.isDir?m("",!0):(c(),y(g,{key:0,file:s.file},null,8,["file"])),s.file.isDir?(c(),y(D,{key:1,file:s.file},null,8,["file"])):m("",!0)])):m("",!0),s.file?m("",!0):(c(),y(W,{key:1}))]),_:1})]),_:1})])}var Mt=u(St,[["render",Ft]]);const I=L(Mt);I.use(R);I.use(j,{defaultHtml:!1});window.wcfmoptions||(window.wcfmoptions={},window.wcfmoptions.poster=function(e,t,o,l){switch(e){case"get-tree":var s={name:"root",isDir:!0,isOpen:!0,children:[{name:"empty-folder",isDir:!0,children:[]},{name:"file",isDir:!1,isConverted:!0},{name:"aaa",isDir:!1,isConverted:!0},{name:"test-folder",isDir:!0,children:[{name:"banana",isDir:!1},{name:"subfolder",isDir:!0,children:[{name:"file2",isDir:!1},{name:"file1",isDir:!1}]},{name:"apple",isDir:!1}]},{name:"file2",isDir:!1,isConverted:!1}]};break;case"conversion-settings":var s={systemStatus:{converterRequirements:{gd:{extensionLoaded:!1,compiledWithWebP:!0}}}};break;case"info":if(t.path=="root/file2")var s={original:{filename:"file.png",size:100,url:"http://localhost:3000/src/assets/200x100.jpg"},converted:{filename:"file.png.webp",size:70,url:"http://localhost:3000/src/assets/200x100.jpg"},log:"blah blah blah"};else if(t.path=="root/file")var s={original:{filename:"file.png",size:100,url:"http://localhost:3000/src/assets/dummy2.jpg"},log:"blah blah blah"};else var s={original:{filename:"file.png",size:100,url:"http://localhost:3000/src/assets/dummy.jpg"},converted:{filename:"file.png.webp",size:70,url:"http://localhost:3000/src/assets/dummy.jpg"},log:"blah blah blah"};break;case"convert":var s={success:!1,msg:"Image type could not be detected"};break;default:var s="ok";break}o(s)});I.mount("#webpconvert-filemanager");
|
vendor/composer/ClassLoader.php
CHANGED
@@ -42,30 +42,75 @@ namespace Composer\Autoload;
|
|
42 |
*/
|
43 |
class ClassLoader
|
44 |
{
|
|
|
45 |
private $vendorDir;
|
46 |
|
47 |
// PSR-4
|
|
|
|
|
|
|
|
|
48 |
private $prefixLengthsPsr4 = array();
|
|
|
|
|
|
|
|
|
49 |
private $prefixDirsPsr4 = array();
|
|
|
|
|
|
|
|
|
50 |
private $fallbackDirsPsr4 = array();
|
51 |
|
52 |
// PSR-0
|
|
|
|
|
|
|
|
|
53 |
private $prefixesPsr0 = array();
|
|
|
|
|
|
|
|
|
54 |
private $fallbackDirsPsr0 = array();
|
55 |
|
|
|
56 |
private $useIncludePath = false;
|
|
|
|
|
|
|
|
|
|
|
57 |
private $classMap = array();
|
|
|
|
|
58 |
private $classMapAuthoritative = false;
|
|
|
|
|
|
|
|
|
|
|
59 |
private $missingClasses = array();
|
|
|
|
|
60 |
private $apcuPrefix;
|
61 |
|
|
|
|
|
|
|
62 |
private static $registeredLoaders = array();
|
63 |
|
|
|
|
|
|
|
64 |
public function __construct($vendorDir = null)
|
65 |
{
|
66 |
$this->vendorDir = $vendorDir;
|
67 |
}
|
68 |
|
|
|
|
|
|
|
69 |
public function getPrefixes()
|
70 |
{
|
71 |
if (!empty($this->prefixesPsr0)) {
|
@@ -75,28 +120,47 @@ class ClassLoader
|
|
75 |
return array();
|
76 |
}
|
77 |
|
|
|
|
|
|
|
|
|
78 |
public function getPrefixesPsr4()
|
79 |
{
|
80 |
return $this->prefixDirsPsr4;
|
81 |
}
|
82 |
|
|
|
|
|
|
|
|
|
83 |
public function getFallbackDirs()
|
84 |
{
|
85 |
return $this->fallbackDirsPsr0;
|
86 |
}
|
87 |
|
|
|
|
|
|
|
|
|
88 |
public function getFallbackDirsPsr4()
|
89 |
{
|
90 |
return $this->fallbackDirsPsr4;
|
91 |
}
|
92 |
|
|
|
|
|
|
|
|
|
93 |
public function getClassMap()
|
94 |
{
|
95 |
return $this->classMap;
|
96 |
}
|
97 |
|
98 |
/**
|
99 |
-
* @param
|
|
|
|
|
|
|
100 |
*/
|
101 |
public function addClassMap(array $classMap)
|
102 |
{
|
@@ -111,9 +175,11 @@ class ClassLoader
|
|
111 |
* Registers a set of PSR-0 directories for a given prefix, either
|
112 |
* appending or prepending to the ones previously set for this prefix.
|
113 |
*
|
114 |
-
* @param string
|
115 |
-
* @param
|
116 |
-
* @param bool
|
|
|
|
|
117 |
*/
|
118 |
public function add($prefix, $paths, $prepend = false)
|
119 |
{
|
@@ -156,11 +222,13 @@ class ClassLoader
|
|
156 |
* Registers a set of PSR-4 directories for a given namespace, either
|
157 |
* appending or prepending to the ones previously set for this namespace.
|
158 |
*
|
159 |
-
* @param string
|
160 |
-
* @param
|
161 |
-
* @param bool
|
162 |
*
|
163 |
* @throws \InvalidArgumentException
|
|
|
|
|
164 |
*/
|
165 |
public function addPsr4($prefix, $paths, $prepend = false)
|
166 |
{
|
@@ -204,8 +272,10 @@ class ClassLoader
|
|
204 |
* Registers a set of PSR-0 directories for a given prefix,
|
205 |
* replacing any others previously set for this prefix.
|
206 |
*
|
207 |
-
* @param string
|
208 |
-
* @param
|
|
|
|
|
209 |
*/
|
210 |
public function set($prefix, $paths)
|
211 |
{
|
@@ -220,10 +290,12 @@ class ClassLoader
|
|
220 |
* Registers a set of PSR-4 directories for a given namespace,
|
221 |
* replacing any others previously set for this namespace.
|
222 |
*
|
223 |
-
* @param string
|
224 |
-
* @param
|
225 |
*
|
226 |
* @throws \InvalidArgumentException
|
|
|
|
|
227 |
*/
|
228 |
public function setPsr4($prefix, $paths)
|
229 |
{
|
@@ -243,6 +315,8 @@ class ClassLoader
|
|
243 |
* Turns on searching the include path for class files.
|
244 |
*
|
245 |
* @param bool $useIncludePath
|
|
|
|
|
246 |
*/
|
247 |
public function setUseIncludePath($useIncludePath)
|
248 |
{
|
@@ -265,6 +339,8 @@ class ClassLoader
|
|
265 |
* that have not been registered with the class map.
|
266 |
*
|
267 |
* @param bool $classMapAuthoritative
|
|
|
|
|
268 |
*/
|
269 |
public function setClassMapAuthoritative($classMapAuthoritative)
|
270 |
{
|
@@ -285,6 +361,8 @@ class ClassLoader
|
|
285 |
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
|
286 |
*
|
287 |
* @param string|null $apcuPrefix
|
|
|
|
|
288 |
*/
|
289 |
public function setApcuPrefix($apcuPrefix)
|
290 |
{
|
@@ -305,6 +383,8 @@ class ClassLoader
|
|
305 |
* Registers this instance as an autoloader.
|
306 |
*
|
307 |
* @param bool $prepend Whether to prepend the autoloader or not
|
|
|
|
|
308 |
*/
|
309 |
public function register($prepend = false)
|
310 |
{
|
@@ -324,6 +404,8 @@ class ClassLoader
|
|
324 |
|
325 |
/**
|
326 |
* Unregisters this instance as an autoloader.
|
|
|
|
|
327 |
*/
|
328 |
public function unregister()
|
329 |
{
|
@@ -403,6 +485,11 @@ class ClassLoader
|
|
403 |
return self::$registeredLoaders;
|
404 |
}
|
405 |
|
|
|
|
|
|
|
|
|
|
|
406 |
private function findFileWithExtension($class, $ext)
|
407 |
{
|
408 |
// PSR-4 lookup
|
@@ -474,6 +561,10 @@ class ClassLoader
|
|
474 |
* Scope isolated include.
|
475 |
*
|
476 |
* Prevents access to $this/self from included files.
|
|
|
|
|
|
|
|
|
477 |
*/
|
478 |
function includeFile($file)
|
479 |
{
|
42 |
*/
|
43 |
class ClassLoader
|
44 |
{
|
45 |
+
/** @var ?string */
|
46 |
private $vendorDir;
|
47 |
|
48 |
// PSR-4
|
49 |
+
/**
|
50 |
+
* @var array[]
|
51 |
+
* @psalm-var array<string, array<string, int>>
|
52 |
+
*/
|
53 |
private $prefixLengthsPsr4 = array();
|
54 |
+
/**
|
55 |
+
* @var array[]
|
56 |
+
* @psalm-var array<string, array<int, string>>
|
57 |
+
*/
|
58 |
private $prefixDirsPsr4 = array();
|
59 |
+
/**
|
60 |
+
* @var array[]
|
61 |
+
* @psalm-var array<string, string>
|
62 |
+
*/
|
63 |
private $fallbackDirsPsr4 = array();
|
64 |
|
65 |
// PSR-0
|
66 |
+
/**
|
67 |
+
* @var array[]
|
68 |
+
* @psalm-var array<string, array<string, string[]>>
|
69 |
+
*/
|
70 |
private $prefixesPsr0 = array();
|
71 |
+
/**
|
72 |
+
* @var array[]
|
73 |
+
* @psalm-var array<string, string>
|
74 |
+
*/
|
75 |
private $fallbackDirsPsr0 = array();
|
76 |
|
77 |
+
/** @var bool */
|
78 |
private $useIncludePath = false;
|
79 |
+
|
80 |
+
/**
|
81 |
+
* @var string[]
|
82 |
+
* @psalm-var array<string, string>
|
83 |
+
*/
|
84 |
private $classMap = array();
|
85 |
+
|
86 |
+
/** @var bool */
|
87 |
private $classMapAuthoritative = false;
|
88 |
+
|
89 |
+
/**
|
90 |
+
* @var bool[]
|
91 |
+
* @psalm-var array<string, bool>
|
92 |
+
*/
|
93 |
private $missingClasses = array();
|
94 |
+
|
95 |
+
/** @var ?string */
|
96 |
private $apcuPrefix;
|
97 |
|
98 |
+
/**
|
99 |
+
* @var self[]
|
100 |
+
*/
|
101 |
private static $registeredLoaders = array();
|
102 |
|
103 |
+
/**
|
104 |
+
* @param ?string $vendorDir
|
105 |
+
*/
|
106 |
public function __construct($vendorDir = null)
|
107 |
{
|
108 |
$this->vendorDir = $vendorDir;
|
109 |
}
|
110 |
|
111 |
+
/**
|
112 |
+
* @return string[]
|
113 |
+
*/
|
114 |
public function getPrefixes()
|
115 |
{
|
116 |
if (!empty($this->prefixesPsr0)) {
|
120 |
return array();
|
121 |
}
|
122 |
|
123 |
+
/**
|
124 |
+
* @return array[]
|
125 |
+
* @psalm-return array<string, array<int, string>>
|
126 |
+
*/
|
127 |
public function getPrefixesPsr4()
|
128 |
{
|
129 |
return $this->prefixDirsPsr4;
|
130 |
}
|
131 |
|
132 |
+
/**
|
133 |
+
* @return array[]
|
134 |
+
* @psalm-return array<string, string>
|
135 |
+
*/
|
136 |
public function getFallbackDirs()
|
137 |
{
|
138 |
return $this->fallbackDirsPsr0;
|
139 |
}
|
140 |
|
141 |
+
/**
|
142 |
+
* @return array[]
|
143 |
+
* @psalm-return array<string, string>
|
144 |
+
*/
|
145 |
public function getFallbackDirsPsr4()
|
146 |
{
|
147 |
return $this->fallbackDirsPsr4;
|
148 |
}
|
149 |
|
150 |
+
/**
|
151 |
+
* @return string[] Array of classname => path
|
152 |
+
* @psalm-var array<string, string>
|
153 |
+
*/
|
154 |
public function getClassMap()
|
155 |
{
|
156 |
return $this->classMap;
|
157 |
}
|
158 |
|
159 |
/**
|
160 |
+
* @param string[] $classMap Class to filename map
|
161 |
+
* @psalm-param array<string, string> $classMap
|
162 |
+
*
|
163 |
+
* @return void
|
164 |
*/
|
165 |
public function addClassMap(array $classMap)
|
166 |
{
|
175 |
* Registers a set of PSR-0 directories for a given prefix, either
|
176 |
* appending or prepending to the ones previously set for this prefix.
|
177 |
*
|
178 |
+
* @param string $prefix The prefix
|
179 |
+
* @param string[]|string $paths The PSR-0 root directories
|
180 |
+
* @param bool $prepend Whether to prepend the directories
|
181 |
+
*
|
182 |
+
* @return void
|
183 |
*/
|
184 |
public function add($prefix, $paths, $prepend = false)
|
185 |
{
|
222 |
* Registers a set of PSR-4 directories for a given namespace, either
|
223 |
* appending or prepending to the ones previously set for this namespace.
|
224 |
*
|
225 |
+
* @param string $prefix The prefix/namespace, with trailing '\\'
|
226 |
+
* @param string[]|string $paths The PSR-4 base directories
|
227 |
+
* @param bool $prepend Whether to prepend the directories
|
228 |
*
|
229 |
* @throws \InvalidArgumentException
|
230 |
+
*
|
231 |
+
* @return void
|
232 |
*/
|
233 |
public function addPsr4($prefix, $paths, $prepend = false)
|
234 |
{
|
272 |
* Registers a set of PSR-0 directories for a given prefix,
|
273 |
* replacing any others previously set for this prefix.
|
274 |
*
|
275 |
+
* @param string $prefix The prefix
|
276 |
+
* @param string[]|string $paths The PSR-0 base directories
|
277 |
+
*
|
278 |
+
* @return void
|
279 |
*/
|
280 |
public function set($prefix, $paths)
|
281 |
{
|
290 |
* Registers a set of PSR-4 directories for a given namespace,
|
291 |
* replacing any others previously set for this namespace.
|
292 |
*
|
293 |
+
* @param string $prefix The prefix/namespace, with trailing '\\'
|
294 |
+
* @param string[]|string $paths The PSR-4 base directories
|
295 |
*
|
296 |
* @throws \InvalidArgumentException
|
297 |
+
*
|
298 |
+
* @return void
|
299 |
*/
|
300 |
public function setPsr4($prefix, $paths)
|
301 |
{
|
315 |
* Turns on searching the include path for class files.
|
316 |
*
|
317 |
* @param bool $useIncludePath
|
318 |
+
*
|
319 |
+
* @return void
|
320 |
*/
|
321 |
public function setUseIncludePath($useIncludePath)
|
322 |
{
|
339 |
* that have not been registered with the class map.
|
340 |
*
|
341 |
* @param bool $classMapAuthoritative
|
342 |
+
*
|
343 |
+
* @return void
|
344 |
*/
|
345 |
public function setClassMapAuthoritative($classMapAuthoritative)
|
346 |
{
|
361 |
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
|
362 |
*
|
363 |
* @param string|null $apcuPrefix
|
364 |
+
*
|
365 |
+
* @return void
|
366 |
*/
|
367 |
public function setApcuPrefix($apcuPrefix)
|
368 |
{
|
383 |
* Registers this instance as an autoloader.
|
384 |
*
|
385 |
* @param bool $prepend Whether to prepend the autoloader or not
|
386 |
+
*
|
387 |
+
* @return void
|
388 |
*/
|
389 |
public function register($prepend = false)
|
390 |
{
|
404 |
|
405 |
/**
|
406 |
* Unregisters this instance as an autoloader.
|
407 |
+
*
|
408 |
+
* @return void
|
409 |
*/
|
410 |
public function unregister()
|
411 |
{
|
485 |
return self::$registeredLoaders;
|
486 |
}
|
487 |
|
488 |
+
/**
|
489 |
+
* @param string $class
|
490 |
+
* @param string $ext
|
491 |
+
* @return string|false
|
492 |
+
*/
|
493 |
private function findFileWithExtension($class, $ext)
|
494 |
{
|
495 |
// PSR-4 lookup
|
561 |
* Scope isolated include.
|
562 |
*
|
563 |
* Prevents access to $this/self from included files.
|
564 |
+
*
|
565 |
+
* @param string $file
|
566 |
+
* @return void
|
567 |
+
* @private
|
568 |
*/
|
569 |
function includeFile($file)
|
570 |
{
|
vendor/composer/InstalledVersions.php
CHANGED
@@ -1,363 +1,337 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
|
13 |
namespace Composer;
|
14 |
|
15 |
use Composer\Autoload\ClassLoader;
|
16 |
use Composer\Semver\VersionParser;
|
17 |
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
class InstalledVersions
|
26 |
{
|
27 |
-
private static $installed
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
{
|
140 |
-
$
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
}
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
{
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
{
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
}
|
259 |
-
|
260 |
-
|
261 |
-
return
|
262 |
-
}
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
}
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
private static function getInstalled()
|
342 |
-
{
|
343 |
-
if (null === self::$canGetVendors) {
|
344 |
-
self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
|
345 |
-
}
|
346 |
-
|
347 |
-
$installed = array();
|
348 |
-
|
349 |
-
if (self::$canGetVendors) {
|
350 |
-
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
|
351 |
-
if (isset(self::$installedByVendor[$vendorDir])) {
|
352 |
-
$installed[] = self::$installedByVendor[$vendorDir];
|
353 |
-
} elseif (is_file($vendorDir.'/composer/installed.php')) {
|
354 |
-
$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
|
355 |
-
}
|
356 |
-
}
|
357 |
-
}
|
358 |
-
|
359 |
-
$installed[] = self::$installed;
|
360 |
-
|
361 |
-
return $installed;
|
362 |
-
}
|
363 |
}
|
1 |
<?php
|
2 |
|
3 |
+
/*
|
4 |
+
* This file is part of Composer.
|
5 |
+
*
|
6 |
+
* (c) Nils Adermann <naderman@naderman.de>
|
7 |
+
* Jordi Boggiano <j.boggiano@seld.be>
|
8 |
+
*
|
9 |
+
* For the full copyright and license information, please view the LICENSE
|
10 |
+
* file that was distributed with this source code.
|
11 |
+
*/
|
12 |
|
13 |
namespace Composer;
|
14 |
|
15 |
use Composer\Autoload\ClassLoader;
|
16 |
use Composer\Semver\VersionParser;
|
17 |
|
18 |
+
/**
|
19 |
+
* This class is copied in every Composer installed project and available to all
|
20 |
+
*
|
21 |
+
* See also https://getcomposer.org/doc/07-runtime.md#installed-versions
|
22 |
+
*
|
23 |
+
* To require its presence, you can require `composer-runtime-api ^2.0`
|
24 |
+
*/
|
25 |
class InstalledVersions
|
26 |
{
|
27 |
+
private static $installed;
|
28 |
+
private static $canGetVendors;
|
29 |
+
private static $installedByVendor = array();
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Returns a list of all package names which are present, either by being installed, replaced or provided
|
33 |
+
*
|
34 |
+
* @return string[]
|
35 |
+
* @psalm-return list<string>
|
36 |
+
*/
|
37 |
+
public static function getInstalledPackages()
|
38 |
+
{
|
39 |
+
$packages = array();
|
40 |
+
foreach (self::getInstalled() as $installed) {
|
41 |
+
$packages[] = array_keys($installed['versions']);
|
42 |
+
}
|
43 |
+
|
44 |
+
if (1 === \count($packages)) {
|
45 |
+
return $packages[0];
|
46 |
+
}
|
47 |
+
|
48 |
+
return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Returns a list of all package names with a specific type e.g. 'library'
|
53 |
+
*
|
54 |
+
* @param string $type
|
55 |
+
* @return string[]
|
56 |
+
* @psalm-return list<string>
|
57 |
+
*/
|
58 |
+
public static function getInstalledPackagesByType($type)
|
59 |
+
{
|
60 |
+
$packagesByType = array();
|
61 |
+
|
62 |
+
foreach (self::getInstalled() as $installed) {
|
63 |
+
foreach ($installed['versions'] as $name => $package) {
|
64 |
+
if (isset($package['type']) && $package['type'] === $type) {
|
65 |
+
$packagesByType[] = $name;
|
66 |
+
}
|
67 |
+
}
|
68 |
+
}
|
69 |
+
|
70 |
+
return $packagesByType;
|
71 |
+
}
|
72 |
+
|
73 |
+
/**
|
74 |
+
* Checks whether the given package is installed
|
75 |
+
*
|
76 |
+
* This also returns true if the package name is provided or replaced by another package
|
77 |
+
*
|
78 |
+
* @param string $packageName
|
79 |
+
* @param bool $includeDevRequirements
|
80 |
+
* @return bool
|
81 |
+
*/
|
82 |
+
public static function isInstalled($packageName, $includeDevRequirements = true)
|
83 |
+
{
|
84 |
+
foreach (self::getInstalled() as $installed) {
|
85 |
+
if (isset($installed['versions'][$packageName])) {
|
86 |
+
return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
|
87 |
+
}
|
88 |
+
}
|
89 |
+
|
90 |
+
return false;
|
91 |
+
}
|
92 |
+
|
93 |
+
/**
|
94 |
+
* Checks whether the given package satisfies a version constraint
|
95 |
+
*
|
96 |
+
* e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
|
97 |
+
*
|
98 |
+
* Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
|
99 |
+
*
|
100 |
+
* @param VersionParser $parser Install composer/semver to have access to this class and functionality
|
101 |
+
* @param string $packageName
|
102 |
+
* @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
|
103 |
+
* @return bool
|
104 |
+
*/
|
105 |
+
public static function satisfies(VersionParser $parser, $packageName, $constraint)
|
106 |
+
{
|
107 |
+
$constraint = $parser->parseConstraints($constraint);
|
108 |
+
$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
|
109 |
+
|
110 |
+
return $provided->matches($constraint);
|
111 |
+
}
|
112 |
+
|
113 |
+
/**
|
114 |
+
* Returns a version constraint representing all the range(s) which are installed for a given package
|
115 |
+
*
|
116 |
+
* It is easier to use this via isInstalled() with the $constraint argument if you need to check
|
117 |
+
* whether a given version of a package is installed, and not just whether it exists
|
118 |
+
*
|
119 |
+
* @param string $packageName
|
120 |
+
* @return string Version constraint usable with composer/semver
|
121 |
+
*/
|
122 |
+
public static function getVersionRanges($packageName)
|
123 |
+
{
|
124 |
+
foreach (self::getInstalled() as $installed) {
|
125 |
+
if (!isset($installed['versions'][$packageName])) {
|
126 |
+
continue;
|
127 |
+
}
|
128 |
+
|
129 |
+
$ranges = array();
|
130 |
+
if (isset($installed['versions'][$packageName]['pretty_version'])) {
|
131 |
+
$ranges[] = $installed['versions'][$packageName]['pretty_version'];
|
132 |
+
}
|
133 |
+
if (array_key_exists('aliases', $installed['versions'][$packageName])) {
|
134 |
+
$ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
|
135 |
+
}
|
136 |
+
if (array_key_exists('replaced', $installed['versions'][$packageName])) {
|
137 |
+
$ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
|
138 |
+
}
|
139 |
+
if (array_key_exists('provided', $installed['versions'][$packageName])) {
|
140 |
+
$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
|
141 |
+
}
|
142 |
+
|
143 |
+
return implode(' || ', $ranges);
|
144 |
+
}
|
145 |
+
|
146 |
+
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
147 |
+
}
|
148 |
+
|
149 |
+
/**
|
150 |
+
* @param string $packageName
|
151 |
+
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
|
152 |
+
*/
|
153 |
+
public static function getVersion($packageName)
|
154 |
+
{
|
155 |
+
foreach (self::getInstalled() as $installed) {
|
156 |
+
if (!isset($installed['versions'][$packageName])) {
|
157 |
+
continue;
|
158 |
+
}
|
159 |
+
|
160 |
+
if (!isset($installed['versions'][$packageName]['version'])) {
|
161 |
+
return null;
|
162 |
+
}
|
163 |
+
|
164 |
+
return $installed['versions'][$packageName]['version'];
|
165 |
+
}
|
166 |
+
|
167 |
+
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
168 |
+
}
|
169 |
+
|
170 |
+
/**
|
171 |
+
* @param string $packageName
|
172 |
+
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
|
173 |
+
*/
|
174 |
+
public static function getPrettyVersion($packageName)
|
175 |
+
{
|
176 |
+
foreach (self::getInstalled() as $installed) {
|
177 |
+
if (!isset($installed['versions'][$packageName])) {
|
178 |
+
continue;
|
179 |
+
}
|
180 |
+
|
181 |
+
if (!isset($installed['versions'][$packageName]['pretty_version'])) {
|
182 |
+
return null;
|
183 |
+
}
|
184 |
+
|
185 |
+
return $installed['versions'][$packageName]['pretty_version'];
|
186 |
+
}
|
187 |
+
|
188 |
+
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
189 |
+
}
|
190 |
+
|
191 |
+
/**
|
192 |
+
* @param string $packageName
|
193 |
+
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
|
194 |
+
*/
|
195 |
+
public static function getReference($packageName)
|
196 |
+
{
|
197 |
+
foreach (self::getInstalled() as $installed) {
|
198 |
+
if (!isset($installed['versions'][$packageName])) {
|
199 |
+
continue;
|
200 |
+
}
|
201 |
+
|
202 |
+
if (!isset($installed['versions'][$packageName]['reference'])) {
|
203 |
+
return null;
|
204 |
+
}
|
205 |
+
|
206 |
+
return $installed['versions'][$packageName]['reference'];
|
207 |
+
}
|
208 |
+
|
209 |
+
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
210 |
+
}
|
211 |
+
|
212 |
+
/**
|
213 |
+
* @param string $packageName
|
214 |
+
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
|
215 |
+
*/
|
216 |
+
public static function getInstallPath($packageName)
|
217 |
+
{
|
218 |
+
foreach (self::getInstalled() as $installed) {
|
219 |
+
if (!isset($installed['versions'][$packageName])) {
|
220 |
+
continue;
|
221 |
+
}
|
222 |
+
|
223 |
+
return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
|
224 |
+
}
|
225 |
+
|
226 |
+
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
227 |
+
}
|
228 |
+
|
229 |
+
/**
|
230 |
+
* @return array
|
231 |
+
* @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}
|
232 |
+
*/
|
233 |
+
public static function getRootPackage()
|
234 |
+
{
|
235 |
+
$installed = self::getInstalled();
|
236 |
+
|
237 |
+
return $installed[0]['root'];
|
238 |
+
}
|
239 |
+
|
240 |
+
/**
|
241 |
+
* Returns the raw installed.php data for custom implementations
|
242 |
+
*
|
243 |
+
* @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
|
244 |
+
* @return array[]
|
245 |
+
* @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}
|
246 |
+
*/
|
247 |
+
public static function getRawData()
|
248 |
+
{
|
249 |
+
@trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);
|
250 |
+
|
251 |
+
if (null === self::$installed) {
|
252 |
+
// only require the installed.php file if this file is loaded from its dumped location,
|
253 |
+
// and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
|
254 |
+
if (substr(__DIR__, -8, 1) !== 'C') {
|
255 |
+
self::$installed = include __DIR__ . '/installed.php';
|
256 |
+
} else {
|
257 |
+
self::$installed = array();
|
258 |
+
}
|
259 |
+
}
|
260 |
+
|
261 |
+
return self::$installed;
|
262 |
+
}
|
263 |
+
|
264 |
+
/**
|
265 |
+
* Returns the raw data of all installed.php which are currently loaded for custom implementations
|
266 |
+
*
|
267 |
+
* @return array[]
|
268 |
+
* @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
|
269 |
+
*/
|
270 |
+
public static function getAllRawData()
|
271 |
+
{
|
272 |
+
return self::getInstalled();
|
273 |
+
}
|
274 |
+
|
275 |
+
/**
|
276 |
+
* Lets you reload the static array from another file
|
277 |
+
*
|
278 |
+
* This is only useful for complex integrations in which a project needs to use
|
279 |
+
* this class but then also needs to execute another project's autoloader in process,
|
280 |
+
* and wants to ensure both projects have access to their version of installed.php.
|
281 |
+
*
|
282 |
+
* A typical case would be PHPUnit, where it would need to make sure it reads all
|
283 |
+
* the data it needs from this class, then call reload() with
|
284 |
+
* `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
|
285 |
+
* the project in which it runs can then also use this class safely, without
|
286 |
+
* interference between PHPUnit's dependencies and the project's dependencies.
|
287 |
+
*
|
288 |
+
* @param array[] $data A vendor/composer/installed.php data set
|
289 |
+
* @return void
|
290 |
+
*
|
291 |
+
* @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>} $data
|
292 |
+
*/
|
293 |
+
public static function reload($data)
|
294 |
+
{
|
295 |
+
self::$installed = $data;
|
296 |
+
self::$installedByVendor = array();
|
297 |
+
}
|
298 |
+
|
299 |
+
/**
|
300 |
+
* @return array[]
|
301 |
+
* @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
|
302 |
+
*/
|
303 |
+
private static function getInstalled()
|
304 |
+
{
|
305 |
+
if (null === self::$canGetVendors) {
|
306 |
+
self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
|
307 |
+
}
|
308 |
+
|
309 |
+
$installed = array();
|
310 |
+
|
311 |
+
if (self::$canGetVendors) {
|
312 |
+
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
|
313 |
+
if (isset(self::$installedByVendor[$vendorDir])) {
|
314 |
+
$installed[] = self::$installedByVendor[$vendorDir];
|
315 |
+
} elseif (is_file($vendorDir.'/composer/installed.php')) {
|
316 |
+
$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
|
317 |
+
if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
|
318 |
+
self::$installed = $installed[count($installed) - 1];
|
319 |
+
}
|
320 |
+
}
|
321 |
+
}
|
322 |
+
}
|
323 |
+
|
324 |
+
if (null === self::$installed) {
|
325 |
+
// only require the installed.php file if this file is loaded from its dumped location,
|
326 |
+
// and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
|
327 |
+
if (substr(__DIR__, -8, 1) !== 'C') {
|
328 |
+
self::$installed = require __DIR__ . '/installed.php';
|
329 |
+
} else {
|
330 |
+
self::$installed = array();
|
331 |
+
}
|
332 |
+
}
|
333 |
+
$installed[] = self::$installed;
|
334 |
+
|
335 |
+
return $installed;
|
336 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
337 |
}
|
vendor/composer/autoload_classmap.php
CHANGED
@@ -68,6 +68,7 @@ return array(
|
|
68 |
'Composer\\Installers\\OsclassInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/OsclassInstaller.php',
|
69 |
'Composer\\Installers\\OxidInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/OxidInstaller.php',
|
70 |
'Composer\\Installers\\PPIInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PPIInstaller.php',
|
|
|
71 |
'Composer\\Installers\\PhiftyInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PhiftyInstaller.php',
|
72 |
'Composer\\Installers\\PhpBBInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PhpBBInstaller.php',
|
73 |
'Composer\\Installers\\PimcoreInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PimcoreInstaller.php',
|
@@ -207,6 +208,7 @@ return array(
|
|
207 |
'WebPConvert\\Options\\IntegerOrNullOption' => $vendorDir . '/rosell-dk/webp-convert/src/Options/IntegerOrNullOption.php',
|
208 |
'WebPConvert\\Options\\MetadataOption' => $vendorDir . '/rosell-dk/webp-convert/src/Options/MetadataOption.php',
|
209 |
'WebPConvert\\Options\\Option' => $vendorDir . '/rosell-dk/webp-convert/src/Options/Option.php',
|
|
|
210 |
'WebPConvert\\Options\\Options' => $vendorDir . '/rosell-dk/webp-convert/src/Options/Options.php',
|
211 |
'WebPConvert\\Options\\QualityOption' => $vendorDir . '/rosell-dk/webp-convert/src/Options/QualityOption.php',
|
212 |
'WebPConvert\\Options\\SensitiveArrayOption' => $vendorDir . '/rosell-dk/webp-convert/src/Options/SensitiveArrayOption.php',
|
68 |
'Composer\\Installers\\OsclassInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/OsclassInstaller.php',
|
69 |
'Composer\\Installers\\OxidInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/OxidInstaller.php',
|
70 |
'Composer\\Installers\\PPIInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PPIInstaller.php',
|
71 |
+
'Composer\\Installers\\PantheonInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PantheonInstaller.php',
|
72 |
'Composer\\Installers\\PhiftyInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PhiftyInstaller.php',
|
73 |
'Composer\\Installers\\PhpBBInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PhpBBInstaller.php',
|
74 |
'Composer\\Installers\\PimcoreInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PimcoreInstaller.php',
|
208 |
'WebPConvert\\Options\\IntegerOrNullOption' => $vendorDir . '/rosell-dk/webp-convert/src/Options/IntegerOrNullOption.php',
|
209 |
'WebPConvert\\Options\\MetadataOption' => $vendorDir . '/rosell-dk/webp-convert/src/Options/MetadataOption.php',
|
210 |
'WebPConvert\\Options\\Option' => $vendorDir . '/rosell-dk/webp-convert/src/Options/Option.php',
|
211 |
+
'WebPConvert\\Options\\OptionFactory' => $vendorDir . '/rosell-dk/webp-convert/src/Options/OptionFactory.php',
|
212 |
'WebPConvert\\Options\\Options' => $vendorDir . '/rosell-dk/webp-convert/src/Options/Options.php',
|
213 |
'WebPConvert\\Options\\QualityOption' => $vendorDir . '/rosell-dk/webp-convert/src/Options/QualityOption.php',
|
214 |
'WebPConvert\\Options\\SensitiveArrayOption' => $vendorDir . '/rosell-dk/webp-convert/src/Options/SensitiveArrayOption.php',
|
vendor/composer/autoload_static.php
CHANGED
@@ -120,6 +120,7 @@ class ComposerStaticInit16597e36dd1bfcd787ed5a8e6d908243
|
|
120 |
'Composer\\Installers\\OsclassInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/OsclassInstaller.php',
|
121 |
'Composer\\Installers\\OxidInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/OxidInstaller.php',
|
122 |
'Composer\\Installers\\PPIInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PPIInstaller.php',
|
|
|
123 |
'Composer\\Installers\\PhiftyInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PhiftyInstaller.php',
|
124 |
'Composer\\Installers\\PhpBBInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PhpBBInstaller.php',
|
125 |
'Composer\\Installers\\PimcoreInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PimcoreInstaller.php',
|
@@ -259,6 +260,7 @@ class ComposerStaticInit16597e36dd1bfcd787ed5a8e6d908243
|
|
259 |
'WebPConvert\\Options\\IntegerOrNullOption' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/IntegerOrNullOption.php',
|
260 |
'WebPConvert\\Options\\MetadataOption' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/MetadataOption.php',
|
261 |
'WebPConvert\\Options\\Option' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/Option.php',
|
|
|
262 |
'WebPConvert\\Options\\Options' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/Options.php',
|
263 |
'WebPConvert\\Options\\QualityOption' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/QualityOption.php',
|
264 |
'WebPConvert\\Options\\SensitiveArrayOption' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/SensitiveArrayOption.php',
|
120 |
'Composer\\Installers\\OsclassInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/OsclassInstaller.php',
|
121 |
'Composer\\Installers\\OxidInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/OxidInstaller.php',
|
122 |
'Composer\\Installers\\PPIInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PPIInstaller.php',
|
123 |
+
'Composer\\Installers\\PantheonInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PantheonInstaller.php',
|
124 |
'Composer\\Installers\\PhiftyInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PhiftyInstaller.php',
|
125 |
'Composer\\Installers\\PhpBBInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PhpBBInstaller.php',
|
126 |
'Composer\\Installers\\PimcoreInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PimcoreInstaller.php',
|
260 |
'WebPConvert\\Options\\IntegerOrNullOption' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/IntegerOrNullOption.php',
|
261 |
'WebPConvert\\Options\\MetadataOption' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/MetadataOption.php',
|
262 |
'WebPConvert\\Options\\Option' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/Option.php',
|
263 |
+
'WebPConvert\\Options\\OptionFactory' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/OptionFactory.php',
|
264 |
'WebPConvert\\Options\\Options' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/Options.php',
|
265 |
'WebPConvert\\Options\\QualityOption' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/QualityOption.php',
|
266 |
'WebPConvert\\Options\\SensitiveArrayOption' => __DIR__ . '/..' . '/rosell-dk/webp-convert/src/Options/SensitiveArrayOption.php',
|
vendor/composer/installed.json
CHANGED
@@ -2,17 +2,17 @@
|
|
2 |
"packages": [
|
3 |
{
|
4 |
"name": "composer/installers",
|
5 |
-
"version": "v1.
|
6 |
-
"version_normalized": "1.
|
7 |
"source": {
|
8 |
"type": "git",
|
9 |
"url": "https://github.com/composer/installers.git",
|
10 |
-
"reference": "
|
11 |
},
|
12 |
"dist": {
|
13 |
"type": "zip",
|
14 |
-
"url": "https://api.github.com/repos/composer/installers/zipball/
|
15 |
-
"reference": "
|
16 |
"shasum": ""
|
17 |
},
|
18 |
"require": {
|
@@ -30,7 +30,7 @@
|
|
30 |
"symfony/phpunit-bridge": "^4.2 || ^5",
|
31 |
"symfony/process": "^2.3"
|
32 |
},
|
33 |
-
"time": "2021-
|
34 |
"type": "composer-plugin",
|
35 |
"extra": {
|
36 |
"class": "Composer\\Installers\\Plugin",
|
@@ -113,6 +113,7 @@
|
|
113 |
"modx",
|
114 |
"moodle",
|
115 |
"osclass",
|
|
|
116 |
"phpbb",
|
117 |
"piwik",
|
118 |
"ppi",
|
@@ -135,7 +136,7 @@
|
|
135 |
],
|
136 |
"support": {
|
137 |
"issues": "https://github.com/composer/installers/issues",
|
138 |
-
"source": "https://github.com/composer/installers/tree/v1.
|
139 |
},
|
140 |
"funding": [
|
141 |
{
|
@@ -155,28 +156,25 @@
|
|
155 |
},
|
156 |
{
|
157 |
"name": "rosell-dk/dom-util-for-webp",
|
158 |
-
"version": "0.4.
|
159 |
-
"version_normalized": "0.4.
|
160 |
"source": {
|
161 |
"type": "git",
|
162 |
"url": "https://github.com/rosell-dk/dom-util-for-webp.git",
|
163 |
-
"reference": "
|
164 |
},
|
165 |
"dist": {
|
166 |
"type": "zip",
|
167 |
-
"url": "https://api.github.com/repos/rosell-dk/dom-util-for-webp/zipball/
|
168 |
-
"reference": "
|
169 |
"shasum": ""
|
170 |
},
|
171 |
"require-dev": {
|
172 |
"friendsofphp/php-cs-fixer": "^2.11",
|
173 |
-
"phpunit/phpunit": "
|
174 |
"squizlabs/php_codesniffer": "3.*"
|
175 |
},
|
176 |
-
"
|
177 |
-
"phpstan/phpstan": "Suggested for dev, in order to analyse code before committing"
|
178 |
-
},
|
179 |
-
"time": "2020-02-02T11:16:27+00:00",
|
180 |
"type": "library",
|
181 |
"extra": {
|
182 |
"scripts-descriptions": {
|
@@ -212,6 +210,20 @@
|
|
212 |
"images",
|
213 |
"replace"
|
214 |
],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
215 |
"install-path": "../rosell-dk/dom-util-for-webp"
|
216 |
},
|
217 |
{
|
@@ -279,25 +291,25 @@
|
|
279 |
},
|
280 |
{
|
281 |
"name": "rosell-dk/image-mime-type-guesser",
|
282 |
-
"version": "0.3",
|
283 |
-
"version_normalized": "0.3.
|
284 |
"source": {
|
285 |
"type": "git",
|
286 |
"url": "https://github.com/rosell-dk/image-mime-type-guesser.git",
|
287 |
-
"reference": "
|
288 |
},
|
289 |
"dist": {
|
290 |
"type": "zip",
|
291 |
-
"url": "https://api.github.com/repos/rosell-dk/image-mime-type-guesser/zipball/
|
292 |
-
"reference": "
|
293 |
"shasum": ""
|
294 |
},
|
295 |
"require-dev": {
|
296 |
"friendsofphp/php-cs-fixer": "^2.11",
|
297 |
-
"phpunit/phpunit": "^
|
298 |
"squizlabs/php_codesniffer": "3.*"
|
299 |
},
|
300 |
-
"time": "
|
301 |
"type": "library",
|
302 |
"extra": {
|
303 |
"scripts-descriptions": {
|
@@ -333,21 +345,35 @@
|
|
333 |
"mime",
|
334 |
"mime type"
|
335 |
],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
336 |
"install-path": "../rosell-dk/image-mime-type-guesser"
|
337 |
},
|
338 |
{
|
339 |
"name": "rosell-dk/webp-convert",
|
340 |
-
"version": "2.
|
341 |
-
"version_normalized": "2.
|
342 |
"source": {
|
343 |
"type": "git",
|
344 |
"url": "https://github.com/rosell-dk/webp-convert.git",
|
345 |
-
"reference": "
|
346 |
},
|
347 |
"dist": {
|
348 |
"type": "zip",
|
349 |
-
"url": "https://api.github.com/repos/rosell-dk/webp-convert/zipball/
|
350 |
-
"reference": "
|
351 |
"shasum": ""
|
352 |
},
|
353 |
"require": {
|
@@ -365,7 +391,7 @@
|
|
365 |
"ext-vips": "to use Vips extension for converting.",
|
366 |
"php-stan/php-stan": "Suggested for dev, in order to analyse code before committing"
|
367 |
},
|
368 |
-
"time": "2021-
|
369 |
"type": "library",
|
370 |
"extra": {
|
371 |
"scripts-descriptions": {
|
@@ -414,7 +440,7 @@
|
|
414 |
],
|
415 |
"support": {
|
416 |
"issues": "https://github.com/rosell-dk/webp-convert/issues",
|
417 |
-
"source": "https://github.com/rosell-dk/webp-convert/tree/2.
|
418 |
},
|
419 |
"funding": [
|
420 |
{
|
2 |
"packages": [
|
3 |
{
|
4 |
"name": "composer/installers",
|
5 |
+
"version": "v1.12.0",
|
6 |
+
"version_normalized": "1.12.0.0",
|
7 |
"source": {
|
8 |
"type": "git",
|
9 |
"url": "https://github.com/composer/installers.git",
|
10 |
+
"reference": "d20a64ed3c94748397ff5973488761b22f6d3f19"
|
11 |
},
|
12 |
"dist": {
|
13 |
"type": "zip",
|
14 |
+
"url": "https://api.github.com/repos/composer/installers/zipball/d20a64ed3c94748397ff5973488761b22f6d3f19",
|
15 |
+
"reference": "d20a64ed3c94748397ff5973488761b22f6d3f19",
|
16 |
"shasum": ""
|
17 |
},
|
18 |
"require": {
|
30 |
"symfony/phpunit-bridge": "^4.2 || ^5",
|
31 |
"symfony/process": "^2.3"
|
32 |
},
|
33 |
+
"time": "2021-09-13T08:19:44+00:00",
|
34 |
"type": "composer-plugin",
|
35 |
"extra": {
|
36 |
"class": "Composer\\Installers\\Plugin",
|
113 |
"modx",
|
114 |
"moodle",
|
115 |
"osclass",
|
116 |
+
"pantheon",
|
117 |
"phpbb",
|
118 |
"piwik",
|
119 |
"ppi",
|
136 |
],
|
137 |
"support": {
|
138 |
"issues": "https://github.com/composer/installers/issues",
|
139 |
+
"source": "https://github.com/composer/installers/tree/v1.12.0"
|
140 |
},
|
141 |
"funding": [
|
142 |
{
|
156 |
},
|
157 |
{
|
158 |
"name": "rosell-dk/dom-util-for-webp",
|
159 |
+
"version": "0.4.1",
|
160 |
+
"version_normalized": "0.4.1.0",
|
161 |
"source": {
|
162 |
"type": "git",
|
163 |
"url": "https://github.com/rosell-dk/dom-util-for-webp.git",
|
164 |
+
"reference": "f06a38fe0950e2ca0e5137a6ecd44e93d9b6b2d9"
|
165 |
},
|
166 |
"dist": {
|
167 |
"type": "zip",
|
168 |
+
"url": "https://api.github.com/repos/rosell-dk/dom-util-for-webp/zipball/f06a38fe0950e2ca0e5137a6ecd44e93d9b6b2d9",
|
169 |
+
"reference": "f06a38fe0950e2ca0e5137a6ecd44e93d9b6b2d9",
|
170 |
"shasum": ""
|
171 |
},
|
172 |
"require-dev": {
|
173 |
"friendsofphp/php-cs-fixer": "^2.11",
|
174 |
+
"phpunit/phpunit": "^9.3",
|
175 |
"squizlabs/php_codesniffer": "3.*"
|
176 |
},
|
177 |
+
"time": "2021-06-23T17:58:50+00:00",
|
|
|
|
|
|
|
178 |
"type": "library",
|
179 |
"extra": {
|
180 |
"scripts-descriptions": {
|
210 |
"images",
|
211 |
"replace"
|
212 |
],
|
213 |
+
"support": {
|
214 |
+
"issues": "https://github.com/rosell-dk/dom-util-for-webp/issues",
|
215 |
+
"source": "https://github.com/rosell-dk/dom-util-for-webp/tree/0.4.1"
|
216 |
+
},
|
217 |
+
"funding": [
|
218 |
+
{
|
219 |
+
"url": "https://github.com/rosell-dk",
|
220 |
+
"type": "github"
|
221 |
+
},
|
222 |
+
{
|
223 |
+
"url": "https://ko-fi.com/rosell",
|
224 |
+
"type": "ko_fi"
|
225 |
+
}
|
226 |
+
],
|
227 |
"install-path": "../rosell-dk/dom-util-for-webp"
|
228 |
},
|
229 |
{
|
291 |
},
|
292 |
{
|
293 |
"name": "rosell-dk/image-mime-type-guesser",
|
294 |
+
"version": "0.3.1",
|
295 |
+
"version_normalized": "0.3.1.0",
|
296 |
"source": {
|
297 |
"type": "git",
|
298 |
"url": "https://github.com/rosell-dk/image-mime-type-guesser.git",
|
299 |
+
"reference": "5915934d66a7869cecc7141adf90581aad81023d"
|
300 |
},
|
301 |
"dist": {
|
302 |
"type": "zip",
|
303 |
+
"url": "https://api.github.com/repos/rosell-dk/image-mime-type-guesser/zipball/5915934d66a7869cecc7141adf90581aad81023d",
|
304 |
+
"reference": "5915934d66a7869cecc7141adf90581aad81023d",
|
305 |
"shasum": ""
|
306 |
},
|
307 |
"require-dev": {
|
308 |
"friendsofphp/php-cs-fixer": "^2.11",
|
309 |
+
"phpunit/phpunit": "^9.3",
|
310 |
"squizlabs/php_codesniffer": "3.*"
|
311 |
},
|
312 |
+
"time": "2021-06-30T19:14:59+00:00",
|
313 |
"type": "library",
|
314 |
"extra": {
|
315 |
"scripts-descriptions": {
|
345 |
"mime",
|
346 |
"mime type"
|
347 |
],
|
348 |
+
"support": {
|
349 |
+
"issues": "https://github.com/rosell-dk/image-mime-type-guesser/issues",
|
350 |
+
"source": "https://github.com/rosell-dk/image-mime-type-guesser/tree/0.3.1"
|
351 |
+
},
|
352 |
+
"funding": [
|
353 |
+
{
|
354 |
+
"url": "https://github.com/rosell-dk",
|
355 |
+
"type": "github"
|
356 |
+
},
|
357 |
+
{
|
358 |
+
"url": "https://ko-fi.com/rosell",
|
359 |
+
"type": "ko_fi"
|
360 |
+
}
|
361 |
+
],
|
362 |
"install-path": "../rosell-dk/image-mime-type-guesser"
|
363 |
},
|
364 |
{
|
365 |
"name": "rosell-dk/webp-convert",
|
366 |
+
"version": "2.7.0",
|
367 |
+
"version_normalized": "2.7.0.0",
|
368 |
"source": {
|
369 |
"type": "git",
|
370 |
"url": "https://github.com/rosell-dk/webp-convert.git",
|
371 |
+
"reference": "9f1677e56352b7aa23f00680d4ed41d53f3c4d8a"
|
372 |
},
|
373 |
"dist": {
|
374 |
"type": "zip",
|
375 |
+
"url": "https://api.github.com/repos/rosell-dk/webp-convert/zipball/9f1677e56352b7aa23f00680d4ed41d53f3c4d8a",
|
376 |
+
"reference": "9f1677e56352b7aa23f00680d4ed41d53f3c4d8a",
|
377 |
"shasum": ""
|
378 |
},
|
379 |
"require": {
|
391 |
"ext-vips": "to use Vips extension for converting.",
|
392 |
"php-stan/php-stan": "Suggested for dev, in order to analyse code before committing"
|
393 |
},
|
394 |
+
"time": "2021-10-25T08:34:22+00:00",
|
395 |
"type": "library",
|
396 |
"extra": {
|
397 |
"scripts-descriptions": {
|
440 |
],
|
441 |
"support": {
|
442 |
"issues": "https://github.com/rosell-dk/webp-convert/issues",
|
443 |
+
"source": "https://github.com/rosell-dk/webp-convert/tree/2.7.0"
|
444 |
},
|
445 |
"funding": [
|
446 |
{
|
vendor/composer/installed.php
CHANGED
@@ -1,102 +1,89 @@
|
|
1 |
-
<?php return array
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
|
|
|
|
|
|
8 |
),
|
9 |
-
'
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
),
|
25 |
-
'rosell-dk/dom-util-for-webp' =>
|
26 |
-
array (
|
27 |
-
'pretty_version' => '0.4.0',
|
28 |
-
'version' => '0.4.0.0',
|
29 |
-
'aliases' =>
|
30 |
-
array (
|
31 |
-
),
|
32 |
-
'reference' => '5928aecf64d59124b341dce23ce8ecf48a6eded6',
|
33 |
-
'dev-requirement' => false,
|
34 |
-
),
|
35 |
-
'rosell-dk/htaccess-capability-tester' =>
|
36 |
-
array (
|
37 |
-
'pretty_version' => '0.9',
|
38 |
-
'version' => '0.9.0.0',
|
39 |
-
'aliases' =>
|
40 |
-
array (
|
41 |
-
),
|
42 |
-
'reference' => '2eb2cf38a9f42fc3aa647d6e9c896e124bfebf4c',
|
43 |
-
'dev-requirement' => false,
|
44 |
-
),
|
45 |
-
'rosell-dk/image-mime-type-guesser' =>
|
46 |
-
array (
|
47 |
-
'pretty_version' => '0.3',
|
48 |
-
'version' => '0.3.0.0',
|
49 |
-
'aliases' =>
|
50 |
-
array (
|
51 |
-
),
|
52 |
-
'reference' => '204fd61ca81e3b0ba46c6165dab8f74816b1fe99',
|
53 |
-
'dev-requirement' => false,
|
54 |
-
),
|
55 |
-
'rosell-dk/webp-convert' =>
|
56 |
-
array (
|
57 |
-
'pretty_version' => '2.6.0',
|
58 |
-
'version' => '2.6.0.0',
|
59 |
-
'aliases' =>
|
60 |
-
array (
|
61 |
-
),
|
62 |
-
'reference' => 'ed230afe56d3157dc402c33585e3ab7f15c7ac80',
|
63 |
-
'dev-requirement' => false,
|
64 |
-
),
|
65 |
-
'rosell-dk/webp-convert-cloud-service' =>
|
66 |
-
array (
|
67 |
-
'pretty_version' => '2.0.1',
|
68 |
-
'version' => '2.0.1.0',
|
69 |
-
'aliases' =>
|
70 |
-
array (
|
71 |
-
),
|
72 |
-
'reference' => '703c2f1c76d30468ee3977170bfa3da138d8c4ad',
|
73 |
-
'dev-requirement' => false,
|
74 |
-
),
|
75 |
-
'rosell-dk/webp-express' =>
|
76 |
-
array (
|
77 |
-
'pretty_version' => 'dev-master',
|
78 |
-
'version' => 'dev-master',
|
79 |
-
'aliases' =>
|
80 |
-
array (
|
81 |
-
),
|
82 |
-
'reference' => '936c03c18aaf2ecd964705afb55866b9803bc713',
|
83 |
-
'dev-requirement' => false,
|
84 |
-
),
|
85 |
-
'roundcube/plugin-installer' =>
|
86 |
-
array (
|
87 |
-
'dev-requirement' => false,
|
88 |
-
'replaced' =>
|
89 |
-
array (
|
90 |
-
0 => '*',
|
91 |
-
),
|
92 |
-
),
|
93 |
-
'shama/baton' =>
|
94 |
-
array (
|
95 |
-
'dev-requirement' => false,
|
96 |
-
'replaced' =>
|
97 |
-
array (
|
98 |
-
0 => '*',
|
99 |
-
),
|
100 |
-
),
|
101 |
-
),
|
102 |
);
|
1 |
+
<?php return array(
|
2 |
+
'root' => array(
|
3 |
+
'pretty_version' => 'dev-master',
|
4 |
+
'version' => 'dev-master',
|
5 |
+
'type' => 'wordpress-plugin',
|
6 |
+
'install_path' => __DIR__ . '/../../',
|
7 |
+
'aliases' => array(),
|
8 |
+
'reference' => 'b010c2c57ab39a7ca057ff68360803b6fb940428',
|
9 |
+
'name' => 'rosell-dk/webp-express',
|
10 |
+
'dev' => true,
|
11 |
),
|
12 |
+
'versions' => array(
|
13 |
+
'composer/installers' => array(
|
14 |
+
'pretty_version' => 'v1.12.0',
|
15 |
+
'version' => '1.12.0.0',
|
16 |
+
'type' => 'composer-plugin',
|
17 |
+
'install_path' => __DIR__ . '/./installers',
|
18 |
+
'aliases' => array(),
|
19 |
+
'reference' => 'd20a64ed3c94748397ff5973488761b22f6d3f19',
|
20 |
+
'dev_requirement' => false,
|
21 |
+
),
|
22 |
+
'rosell-dk/dom-util-for-webp' => array(
|
23 |
+
'pretty_version' => '0.4.1',
|
24 |
+
'version' => '0.4.1.0',
|
25 |
+
'type' => 'library',
|
26 |
+
'install_path' => __DIR__ . '/../rosell-dk/dom-util-for-webp',
|
27 |
+
'aliases' => array(),
|
28 |
+
'reference' => 'f06a38fe0950e2ca0e5137a6ecd44e93d9b6b2d9',
|
29 |
+
'dev_requirement' => false,
|
30 |
+
),
|
31 |
+
'rosell-dk/htaccess-capability-tester' => array(
|
32 |
+
'pretty_version' => '0.9',
|
33 |
+
'version' => '0.9.0.0',
|
34 |
+
'type' => 'library',
|
35 |
+
'install_path' => __DIR__ . '/../rosell-dk/htaccess-capability-tester',
|
36 |
+
'aliases' => array(),
|
37 |
+
'reference' => '2eb2cf38a9f42fc3aa647d6e9c896e124bfebf4c',
|
38 |
+
'dev_requirement' => false,
|
39 |
+
),
|
40 |
+
'rosell-dk/image-mime-type-guesser' => array(
|
41 |
+
'pretty_version' => '0.3.1',
|
42 |
+
'version' => '0.3.1.0',
|
43 |
+
'type' => 'library',
|
44 |
+
'install_path' => __DIR__ . '/../rosell-dk/image-mime-type-guesser',
|
45 |
+
'aliases' => array(),
|
46 |
+
'reference' => '5915934d66a7869cecc7141adf90581aad81023d',
|
47 |
+
'dev_requirement' => false,
|
48 |
+
),
|
49 |
+
'rosell-dk/webp-convert' => array(
|
50 |
+
'pretty_version' => '2.7.0',
|
51 |
+
'version' => '2.7.0.0',
|
52 |
+
'type' => 'library',
|
53 |
+
'install_path' => __DIR__ . '/../rosell-dk/webp-convert',
|
54 |
+
'aliases' => array(),
|
55 |
+
'reference' => '9f1677e56352b7aa23f00680d4ed41d53f3c4d8a',
|
56 |
+
'dev_requirement' => false,
|
57 |
+
),
|
58 |
+
'rosell-dk/webp-convert-cloud-service' => array(
|
59 |
+
'pretty_version' => '2.0.1',
|
60 |
+
'version' => '2.0.1.0',
|
61 |
+
'type' => 'library',
|
62 |
+
'install_path' => __DIR__ . '/../rosell-dk/webp-convert-cloud-service',
|
63 |
+
'aliases' => array(),
|
64 |
+
'reference' => '703c2f1c76d30468ee3977170bfa3da138d8c4ad',
|
65 |
+
'dev_requirement' => false,
|
66 |
+
),
|
67 |
+
'rosell-dk/webp-express' => array(
|
68 |
+
'pretty_version' => 'dev-master',
|
69 |
+
'version' => 'dev-master',
|
70 |
+
'type' => 'wordpress-plugin',
|
71 |
+
'install_path' => __DIR__ . '/../../',
|
72 |
+
'aliases' => array(),
|
73 |
+
'reference' => 'b010c2c57ab39a7ca057ff68360803b6fb940428',
|
74 |
+
'dev_requirement' => false,
|
75 |
+
),
|
76 |
+
'roundcube/plugin-installer' => array(
|
77 |
+
'dev_requirement' => false,
|
78 |
+
'replaced' => array(
|
79 |
+
0 => '*',
|
80 |
+
),
|
81 |
+
),
|
82 |
+
'shama/baton' => array(
|
83 |
+
'dev_requirement' => false,
|
84 |
+
'replaced' => array(
|
85 |
+
0 => '*',
|
86 |
+
),
|
87 |
+
),
|
88 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
);
|
vendor/composer/installers/composer.json
CHANGED
@@ -51,6 +51,7 @@
|
|
51 |
"osclass",
|
52 |
"MODULEWork",
|
53 |
"Moodle",
|
|
|
54 |
"Piwik",
|
55 |
"pxcms",
|
56 |
"phpBB",
|
51 |
"osclass",
|
52 |
"MODULEWork",
|
53 |
"Moodle",
|
54 |
+
"Pantheon",
|
55 |
"Piwik",
|
56 |
"pxcms",
|
57 |
"phpBB",
|
vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php
CHANGED
@@ -47,6 +47,7 @@ class CakePHPInstaller extends BaseInstaller
|
|
47 |
* @param string $matcher
|
48 |
* @param string $version
|
49 |
* @return bool
|
|
|
50 |
*/
|
51 |
protected function matchesCakeVersion($matcher, $version)
|
52 |
{
|
47 |
* @param string $matcher
|
48 |
* @param string $version
|
49 |
* @return bool
|
50 |
+
* @phpstan-param Constraint::STR_OP_* $matcher
|
51 |
*/
|
52 |
protected function matchesCakeVersion($matcher, $version)
|
53 |
{
|
vendor/composer/installers/src/Composer/Installers/Installer.php
CHANGED
@@ -91,6 +91,7 @@ class Installer extends LibraryInstaller
|
|
91 |
'phifty' => 'PhiftyInstaller',
|
92 |
'porto' => 'PortoInstaller',
|
93 |
'processwire' => 'ProcessWireInstaller',
|
|
|
94 |
'redaxo' => 'RedaxoInstaller',
|
95 |
'redaxo5' => 'Redaxo5Installer',
|
96 |
'reindex' => 'ReIndexInstaller',
|
91 |
'phifty' => 'PhiftyInstaller',
|
92 |
'porto' => 'PortoInstaller',
|
93 |
'processwire' => 'ProcessWireInstaller',
|
94 |
+
'quicksilver' => 'PantheonInstaller',
|
95 |
'redaxo' => 'RedaxoInstaller',
|
96 |
'redaxo5' => 'Redaxo5Installer',
|
97 |
'reindex' => 'ReIndexInstaller',
|
vendor/composer/installers/src/Composer/Installers/PantheonInstaller.php
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Composer\Installers;
|
4 |
+
|
5 |
+
class PantheonInstaller extends BaseInstaller
|
6 |
+
{
|
7 |
+
/** @var array<string, string> */
|
8 |
+
protected $locations = array(
|
9 |
+
'script' => 'web/private/scripts/quicksilver/{$name}',
|
10 |
+
'module' => 'web/private/scripts/quicksilver/{$name}',
|
11 |
+
);
|
12 |
+
}
|
vendor/rosell-dk/dom-util-for-webp/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
# dom-util-for-webp
|
2 |
|
3 |
-
[![Latest Stable Version](https://img.shields.io/packagist/v/rosell-dk/
|
4 |
[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%205.6-8892BF.svg?style=flat-square)](https://php.net)
|
5 |
-
[![Build Status](https://img.shields.io/travis/rosell-dk/dom-util-for-webp/master.svg?style=flat-square)](https://travis-ci.
|
6 |
[![Coverage Status](https://img.shields.io/scrutinizer/coverage/g/rosell-dk/dom-util-for-webp.svg?style=flat-square)](https://scrutinizer-ci.com/g/rosell-dk/dom-util-for-webp/code-structure/master)
|
7 |
[![Quality Score](https://img.shields.io/scrutinizer/g/rosell-dk/dom-util-for-webp.svg?style=flat-square)](https://scrutinizer-ci.com/g/rosell-dk/dom-util-for-webp/)
|
8 |
[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](https://github.com/rosell-dk/dom-util-for-webp/blob/master/LICENSE)
|
1 |
# dom-util-for-webp
|
2 |
|
3 |
+
[![Latest Stable Version](https://img.shields.io/packagist/v/rosell-dk/dom-util-for-webp.svg?style=flat-square)](https://packagist.org/packages/rosell-dk/dom-util-for-webp)
|
4 |
[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%205.6-8892BF.svg?style=flat-square)](https://php.net)
|
5 |
+
[![Build Status](https://img.shields.io/travis/com/rosell-dk/dom-util-for-webp/master.svg?style=flat-square)](https://travis-ci.com/github/rosell-dk/dom-util-for-webp)
|
6 |
[![Coverage Status](https://img.shields.io/scrutinizer/coverage/g/rosell-dk/dom-util-for-webp.svg?style=flat-square)](https://scrutinizer-ci.com/g/rosell-dk/dom-util-for-webp/code-structure/master)
|
7 |
[![Quality Score](https://img.shields.io/scrutinizer/g/rosell-dk/dom-util-for-webp.svg?style=flat-square)](https://scrutinizer-ci.com/g/rosell-dk/dom-util-for-webp/)
|
8 |
[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](https://github.com/rosell-dk/dom-util-for-webp/blob/master/LICENSE)
|
vendor/rosell-dk/dom-util-for-webp/composer.json
CHANGED
@@ -11,7 +11,7 @@
|
|
11 |
"@test",
|
12 |
"@phpcs-all",
|
13 |
"@composer validate --no-check-all --strict",
|
14 |
-
"@phpstan
|
15 |
],
|
16 |
"cs-fix-all": [
|
17 |
"php-cs-fixer fix src"
|
@@ -19,10 +19,11 @@
|
|
19 |
"cs-fix": "php-cs-fixer fix",
|
20 |
"cs-dry": "php-cs-fixer fix --dry-run --diff",
|
21 |
"test": "phpunit --coverage-text --coverage-clover=coverage.clover",
|
|
|
|
|
22 |
"phpcs": "phpcs --standard=PSR2",
|
23 |
"phpcbf": "phpcbf --standard=PSR2",
|
24 |
-
"phpstan": "vendor/bin/phpstan analyse src --level=4"
|
25 |
-
"phpstan-global": "~/.composer/vendor/bin/phpstan analyse src --level=4"
|
26 |
},
|
27 |
"extra": {
|
28 |
"scripts-descriptions": {
|
@@ -47,17 +48,12 @@
|
|
47 |
"role": "Project Author"
|
48 |
}
|
49 |
],
|
50 |
-
"suggest": {
|
51 |
-
"phpstan/phpstan": "Suggested for dev, in order to analyse code before committing"
|
52 |
-
},
|
53 |
"require-dev": {
|
54 |
"friendsofphp/php-cs-fixer": "^2.11",
|
55 |
-
"phpunit/phpunit": "
|
56 |
"squizlabs/php_codesniffer": "3.*"
|
57 |
},
|
58 |
"config": {
|
59 |
"sort-packages": true
|
60 |
-
},
|
61 |
-
"require": {
|
62 |
}
|
63 |
}
|
11 |
"@test",
|
12 |
"@phpcs-all",
|
13 |
"@composer validate --no-check-all --strict",
|
14 |
+
"@phpstan"
|
15 |
],
|
16 |
"cs-fix-all": [
|
17 |
"php-cs-fixer fix src"
|
19 |
"cs-fix": "php-cs-fixer fix",
|
20 |
"cs-dry": "php-cs-fixer fix --dry-run --diff",
|
21 |
"test": "phpunit --coverage-text --coverage-clover=coverage.clover",
|
22 |
+
"test-41": "phpunit --coverage-text --configuration 'phpunit-41.xml.dist'",
|
23 |
+
"phpunit": "phpunit --no-coverage",
|
24 |
"phpcs": "phpcs --standard=PSR2",
|
25 |
"phpcbf": "phpcbf --standard=PSR2",
|
26 |
+
"phpstan": "vendor/bin/phpstan analyse src --level=4"
|
|
|
27 |
},
|
28 |
"extra": {
|
29 |
"scripts-descriptions": {
|
48 |
"role": "Project Author"
|
49 |
}
|
50 |
],
|
|
|
|
|
|
|
51 |
"require-dev": {
|
52 |
"friendsofphp/php-cs-fixer": "^2.11",
|
53 |
+
"phpunit/phpunit": "^9.3",
|
54 |
"squizlabs/php_codesniffer": "3.*"
|
55 |
},
|
56 |
"config": {
|
57 |
"sort-packages": true
|
|
|
|
|
58 |
}
|
59 |
}
|
vendor/rosell-dk/dom-util-for-webp/docs/development.md
ADDED
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Development
|
2 |
+
|
3 |
+
## Setting up the environment.
|
4 |
+
|
5 |
+
First, clone the repository:
|
6 |
+
```
|
7 |
+
cd whatever/folder/you/want
|
8 |
+
git clone git@github.com:rosell-dk/dom-util-for-webp.git
|
9 |
+
```
|
10 |
+
|
11 |
+
Then install the dev tools with composer:
|
12 |
+
|
13 |
+
```
|
14 |
+
composer install
|
15 |
+
```
|
16 |
+
|
17 |
+
If you don't have composer yet:
|
18 |
+
- Get it ([download phar](https://getcomposer.org/composer.phar) and move it to /usr/local/bin/composer)
|
19 |
+
- PS: PHPUnit requires php-xml, php-mbstring and php-curl. To install: `sudo apt install php-xml php-mbstring curl php-curl`
|
20 |
+
|
21 |
+
|
22 |
+
Make sure you have [xdebug](https://xdebug.org/docs/install) installed, if you want phpunit tog generate code coverage report
|
23 |
+
|
24 |
+
## Unit Testing
|
25 |
+
|
26 |
+
To run all the unit tests do this:
|
27 |
+
```
|
28 |
+
composer test
|
29 |
+
```
|
30 |
+
This also runs tests on the builds.
|
31 |
+
If you do not the coverage report:
|
32 |
+
```
|
33 |
+
composer phpunit
|
34 |
+
```
|
35 |
+
|
36 |
+
Individual test files can be executed like this:
|
37 |
+
```
|
38 |
+
composer phpunit tests/ImageUrlReplacerTest.php
|
39 |
+
composer phpunit tests/PictureTagsTest.php
|
40 |
+
```
|
41 |
+
|
42 |
+
Note:
|
43 |
+
The code coverage requires [xdebug](https://xdebug.org/docs/install)
|
vendor/rosell-dk/dom-util-for-webp/phpunit-41.xml.dist
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
|
3 |
+
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
4 |
+
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
|
5 |
+
backupGlobals="false"
|
6 |
+
backupStaticAttributes="false"
|
7 |
+
colors="true"
|
8 |
+
convertErrorsToExceptions="true"
|
9 |
+
convertNoticesToExceptions="true"
|
10 |
+
convertWarningsToExceptions="false"
|
11 |
+
processIsolation="false"
|
12 |
+
stopOnFailure="false"
|
13 |
+
bootstrap="vendor/autoload.php"
|
14 |
+
>
|
15 |
+
<testsuites>
|
16 |
+
<testsuite name="Dom util for WebP Test Suite">
|
17 |
+
<directory>./tests/</directory>
|
18 |
+
</testsuite>
|
19 |
+
</testsuites>
|
20 |
+
|
21 |
+
<filter>
|
22 |
+
<whitelist>
|
23 |
+
<directory suffix=".php">src/</directory>
|
24 |
+
<exclude>
|
25 |
+
<directory>./vendor</directory>
|
26 |
+
<directory>./tests</directory>
|
27 |
+
</exclude>
|
28 |
+
</whitelist>
|
29 |
+
</filter>
|
30 |
+
|
31 |
+
<logging>
|
32 |
+
<log type="junit" target="build/report.junit.xml"/>
|
33 |
+
<log type="coverage-clover" target="build/logs/clover.xml"/>
|
34 |
+
<log type="coverage-text" target="build/coverage.txt"/>
|
35 |
+
<!--<log type="coverage-html" target="build/coverage"/>-->
|
36 |
+
</logging>
|
37 |
+
|
38 |
+
</phpunit>
|
vendor/rosell-dk/dom-util-for-webp/phpunit.xml.dist
CHANGED
@@ -1,38 +1,25 @@
|
|
1 |
-
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
-
|
3 |
-
<
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
>
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
</
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
<directory>./tests</directory>
|
27 |
-
</exclude>
|
28 |
-
</whitelist>
|
29 |
-
</filter>
|
30 |
-
|
31 |
-
<logging>
|
32 |
-
<log type="junit" target="build/report.junit.xml"/>
|
33 |
-
<log type="coverage-clover" target="build/logs/clover.xml"/>
|
34 |
-
<log type="coverage-text" target="build/coverage.txt"/>
|
35 |
-
<!--<log type="coverage-html" target="build/coverage"/>-->
|
36 |
-
</logging>
|
37 |
-
|
38 |
-
</phpunit>
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" backupGlobals="false" backupStaticAttributes="false" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="false" processIsolation="false" stopOnFailure="false" bootstrap="vendor/autoload.php">
|
3 |
+
<coverage>
|
4 |
+
<include>
|
5 |
+
<directory suffix=".php">src/</directory>
|
6 |
+
</include>
|
7 |
+
<exclude>
|
8 |
+
<directory>./vendor</directory>
|
9 |
+
<directory>./tests</directory>
|
10 |
+
</exclude>
|
11 |
+
<report>
|
12 |
+
<clover outputFile="build/logs/clover.xml"/>
|
13 |
+
<text outputFile="build/coverage.txt"/>
|
14 |
+
</report>
|
15 |
+
</coverage>
|
16 |
+
<testsuites>
|
17 |
+
<testsuite name="Dom util for WebP Test Suite">
|
18 |
+
<directory>./tests/</directory>
|
19 |
+
</testsuite>
|
20 |
+
</testsuites>
|
21 |
+
<logging>
|
22 |
+
<junit outputFile="build/report.junit.xml"/>
|
23 |
+
<!--<log type="coverage-html" target="build/coverage"/>-->
|
24 |
+
</logging>
|
25 |
+
</phpunit>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/rosell-dk/dom-util-for-webp/src/ImageUrlReplacer.php
CHANGED
@@ -7,11 +7,11 @@ namespace DOMUtilForWebP;
|
|
7 |
/**
|
8 |
* Highly configurable class for replacing image URLs in HTML (both src and srcset syntax)
|
9 |
*
|
10 |
-
*
|
11 |
* The great thing about this library is that it supports working on invalid HTML and it only applies the changes you
|
12 |
-
* make - very gently.
|
13 |
-
*
|
14 |
-
*
|
15 |
*
|
16 |
* Behaviour can be customized by overriding the public methods (replaceUrl, $searchInTags, etc)
|
17 |
*
|
7 |
/**
|
8 |
* Highly configurable class for replacing image URLs in HTML (both src and srcset syntax)
|
9 |
*
|
10 |
+
* Uses http://simplehtmldom.sourceforge.net/ - a library for easily manipulating HTML by means of a DOM.
|
11 |
* The great thing about this library is that it supports working on invalid HTML and it only applies the changes you
|
12 |
+
* make - very gently (however, not as gently as we do in PictureTags).
|
13 |
+
* PS: The library is a bit old, so perhaps we should look for another.
|
14 |
+
* ie https://packagist.org/packages/masterminds/html5 ??
|
15 |
*
|
16 |
* Behaviour can be customized by overriding the public methods (replaceUrl, $searchInTags, etc)
|
17 |
*
|
vendor/rosell-dk/dom-util-for-webp/src/PictureTags.php
CHANGED
@@ -5,7 +5,21 @@ namespace DOMUtilForWebP;
|
|
5 |
//use Sunra\PhpSimple\HtmlDomParser;
|
6 |
/**
|
7 |
* Class PictureTags - convert an <img> tag to a <picture> tag and add the webp versions of the images
|
8 |
-
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
*/
|
10 |
|
11 |
use \WebPExpress\AlterHtmlHelper;
|
@@ -22,8 +36,11 @@ class PictureTags
|
|
22 |
*/
|
23 |
public final function __construct()
|
24 |
{
|
|
|
25 |
}
|
26 |
|
|
|
|
|
27 |
public function replaceUrl($url)
|
28 |
{
|
29 |
if (!preg_match('#(png|jpe?g)$#', $url)) {
|
@@ -118,7 +135,7 @@ class PictureTags
|
|
118 |
}
|
119 |
|
120 |
/**
|
121 |
-
* Replace <
|
122 |
*/
|
123 |
private function replaceCallback($match)
|
124 |
{
|
@@ -195,10 +212,40 @@ class PictureTags
|
|
195 |
/*
|
196 |
*
|
197 |
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
198 |
public function replaceHtml($content)
|
199 |
{
|
200 |
-
|
201 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
202 |
}
|
203 |
|
204 |
/* Main replacer function */
|
5 |
//use Sunra\PhpSimple\HtmlDomParser;
|
6 |
/**
|
7 |
* Class PictureTags - convert an <img> tag to a <picture> tag and add the webp versions of the images
|
8 |
+
* Code is based on code from the ShortPixel plugin, which in turn used code from Responsify WP plugin
|
9 |
+
*
|
10 |
+
* It works like this:
|
11 |
+
*
|
12 |
+
* 1. Remove existing <picture> tags and their content - replace with tokens in order to reinsert later
|
13 |
+
* 2. Process <img> tags.
|
14 |
+
* - The tags are found with regex.
|
15 |
+
* - The attributes are parsed with DOMDocument if it exists, otherwise with the Simple Html Dom library,
|
16 |
+
* which is included inside this library
|
17 |
+
* 3. Re-insert the existing <picture> tags
|
18 |
+
*
|
19 |
+
* This procedure is very gentle and needle-like. No need for a complete parse - so invalid HTML is no big issue
|
20 |
+
*
|
21 |
+
* PS:
|
22 |
+
* https://packagist.org/packages/masterminds/html5
|
23 |
*/
|
24 |
|
25 |
use \WebPExpress\AlterHtmlHelper;
|
36 |
*/
|
37 |
public final function __construct()
|
38 |
{
|
39 |
+
$this->existingPictureTags = [];
|
40 |
}
|
41 |
|
42 |
+
private $existingPictureTags;
|
43 |
+
|
44 |
public function replaceUrl($url)
|
45 |
{
|
46 |
if (!preg_match('#(png|jpe?g)$#', $url)) {
|
135 |
}
|
136 |
|
137 |
/**
|
138 |
+
* Replace <img> tag with <picture> tag.
|
139 |
*/
|
140 |
private function replaceCallback($match)
|
141 |
{
|
212 |
/*
|
213 |
*
|
214 |
*/
|
215 |
+
public function removePictureTagsTemporarily($content)
|
216 |
+
{
|
217 |
+
//print_r($content);
|
218 |
+
$this->existingPictureTags[] = $content[0];
|
219 |
+
return 'PICTURE_TAG_' . (count($this->existingPictureTags) - 1) . '_';
|
220 |
+
}
|
221 |
+
|
222 |
+
/*
|
223 |
+
*
|
224 |
+
*/
|
225 |
+
public function insertPictureTagsBack($content)
|
226 |
+
{
|
227 |
+
$numberString = $content[1];
|
228 |
+
$numberInt = intval($numberString);
|
229 |
+
return $this->existingPictureTags[$numberInt];
|
230 |
+
}
|
231 |
+
|
232 |
+
/**
|
233 |
+
*
|
234 |
+
*/
|
235 |
public function replaceHtml($content)
|
236 |
{
|
237 |
+
$this->existingPictureTags = [];
|
238 |
+
|
239 |
+
// Tempororily remove existing <picture> tags
|
240 |
+
$content = preg_replace_callback('/<picture[^>]*>.*?<\/picture>/i', array($this, 'removePictureTagsTemporarily'), $content);
|
241 |
+
|
242 |
+
// Replace "<img>" tags
|
243 |
+
$content = preg_replace_callback('/<img[^>]*>/i', array($this, 'replaceCallback'), $content);
|
244 |
+
|
245 |
+
// Re-insert <picture> tags that was removed
|
246 |
+
$content = preg_replace_callback('/PICTURE_TAG_(\d+)_/', array($this, 'insertPictureTagsBack'), $content);
|
247 |
+
|
248 |
+
return $content;
|
249 |
}
|
250 |
|
251 |
/* Main replacer function */
|
vendor/rosell-dk/image-mime-type-guesser/.circleci/config.yml
ADDED
@@ -0,0 +1,76 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# PHP CircleCI 2.0 configuration file
|
2 |
+
#
|
3 |
+
# Check https://circleci.com/docs/2.0/language-php/ for more details
|
4 |
+
#
|
5 |
+
version: 2
|
6 |
+
jobs:
|
7 |
+
build71:
|
8 |
+
docker:
|
9 |
+
- image: circleci/php:7.1
|
10 |
+
|
11 |
+
steps:
|
12 |
+
- checkout
|
13 |
+
|
14 |
+
- run: sudo apt update
|
15 |
+
- run: sudo docker-php-ext-install zip
|
16 |
+
|
17 |
+
- restore_cache:
|
18 |
+
keys:
|
19 |
+
# "composer.lock" can be used if it is committed to the repo
|
20 |
+
- v1-dependencies-{{ checksum "composer.json" }}
|
21 |
+
# fallback to using the latest cache if no exact match is found
|
22 |
+
- v1-dependencies-
|
23 |
+
|
24 |
+
- run: composer install -n --prefer-dist
|
25 |
+
|
26 |
+
- save_cache:
|
27 |
+
key: v1-dependencies-{{ checksum "composer.json" }}
|
28 |
+
paths:
|
29 |
+
- ./vendor
|
30 |
+
|
31 |
+
- run: ./vendor/bin/phpunit
|
32 |
+
- run: wget https://scrutinizer-ci.com/ocular.phar
|
33 |
+
- run: php ocular.phar code-coverage:upload --format=php-clover coverage.clover
|
34 |
+
|
35 |
+
|
36 |
+
build70:
|
37 |
+
docker:
|
38 |
+
- image: circleci/php:7.0
|
39 |
+
steps:
|
40 |
+
- checkout
|
41 |
+
- run: sudo apt update
|
42 |
+
- restore_cache:
|
43 |
+
keys:
|
44 |
+
- v0-dependencies-{{ checksum "composer.json" }}
|
45 |
+
- v0-dependencies-
|
46 |
+
- run: composer install -n --prefer-dist
|
47 |
+
- save_cache:
|
48 |
+
key: v0-dependencies-{{ checksum "composer.json" }}
|
49 |
+
paths:
|
50 |
+
- ./vendor
|
51 |
+
- run: composer test
|
52 |
+
|
53 |
+
build56:
|
54 |
+
docker:
|
55 |
+
- image: circleci/php:5.6
|
56 |
+
steps:
|
57 |
+
- checkout
|
58 |
+
- run: sudo apt update
|
59 |
+
- restore_cache:
|
60 |
+
keys:
|
61 |
+
- v56-dependencies-{{ checksum "composer.json" }}
|
62 |
+
- v56-dependencies-
|
63 |
+
- run: composer install -n --prefer-dist
|
64 |
+
- save_cache:
|
65 |
+
key: v56-dependencies-{{ checksum "composer.json" }}
|
66 |
+
paths:
|
67 |
+
- ./vendor
|
68 |
+
- run: composer test
|
69 |
+
|
70 |
+
workflows:
|
71 |
+
version: 2
|
72 |
+
build_and_test_all:
|
73 |
+
jobs:
|
74 |
+
#- build71
|
75 |
+
#- build70
|
76 |
+
#- build56
|
vendor/rosell-dk/image-mime-type-guesser/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
[![Latest Stable Version](https://img.shields.io/packagist/v/rosell-dk/image-mime-type-guesser.svg?style=flat-square)](https://packagist.org/packages/rosell-dk/image-mime-type-guesser)
|
4 |
[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%205.6-8892BF.svg?style=flat-square)](https://php.net)
|
5 |
-
[![Build Status](https://img.shields.io/
|
6 |
[![Coverage Status](https://img.shields.io/scrutinizer/coverage/g/rosell-dk/image-mime-type-guesser.svg?style=flat-square)](https://scrutinizer-ci.com/g/rosell-dk/image-mime-type-guesser/code-structure/master)
|
7 |
[![Quality Score](https://img.shields.io/scrutinizer/g/rosell-dk/image-mime-type-guesser.svg?style=flat-square)](https://scrutinizer-ci.com/g/rosell-dk/image-mime-type-guesser/)
|
8 |
[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](https://github.com/rosell-dk/image-mime-type-guesser/blob/master/LICENSE)
|
@@ -12,18 +12,16 @@
|
|
12 |
|
13 |
Do you need to determine if a file is an image?<br>
|
14 |
And perhaps you also want to know the mime type of the image?<br>
|
15 |
-
Do you basically need [exif_imagetype](https://www.php.net/manual/en/function.exif-imagetype.php), but which also works when PHP is compiled without exif?
|
16 |
|
17 |
– You come to the right library.
|
18 |
|
19 |
Ok, actually the library cannot offer mime type detection for images which works *on all platforms*, but it can try a whole stack of methods and optionally fall back to guess from the file extension.
|
20 |
|
21 |
The stack of detect methods are currently (and in that order):
|
22 |
-
- [`
|
23 |
-
- [
|
24 |
-
-
|
25 |
-
- [`
|
26 |
-
- [`mime_content_type`](https://www.php.net/manual/en/function.mime-content-type.php) *(PHP 4 >= 4.3.0, PHP 5, PHP 7)*
|
27 |
|
28 |
Note that these methods all uses the mime type mapping on the server. Not all servers for example detects `image/webp`.
|
29 |
|
2 |
|
3 |
[![Latest Stable Version](https://img.shields.io/packagist/v/rosell-dk/image-mime-type-guesser.svg?style=flat-square)](https://packagist.org/packages/rosell-dk/image-mime-type-guesser)
|
4 |
[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%205.6-8892BF.svg?style=flat-square)](https://php.net)
|
5 |
+
[![Build Status](https://img.shields.io/github/workflow/status/rosell-dk/image-mime-type-guesser/PHP?style=flat-square)](https://github.com/rosell-dk/image-mime-type-guesser/actions/workflows/php.yml)
|
6 |
[![Coverage Status](https://img.shields.io/scrutinizer/coverage/g/rosell-dk/image-mime-type-guesser.svg?style=flat-square)](https://scrutinizer-ci.com/g/rosell-dk/image-mime-type-guesser/code-structure/master)
|
7 |
[![Quality Score](https://img.shields.io/scrutinizer/g/rosell-dk/image-mime-type-guesser.svg?style=flat-square)](https://scrutinizer-ci.com/g/rosell-dk/image-mime-type-guesser/)
|
8 |
[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](https://github.com/rosell-dk/image-mime-type-guesser/blob/master/LICENSE)
|
12 |
|
13 |
Do you need to determine if a file is an image?<br>
|
14 |
And perhaps you also want to know the mime type of the image?<br>
|
|
|
15 |
|
16 |
– You come to the right library.
|
17 |
|
18 |
Ok, actually the library cannot offer mime type detection for images which works *on all platforms*, but it can try a whole stack of methods and optionally fall back to guess from the file extension.
|
19 |
|
20 |
The stack of detect methods are currently (and in that order):
|
21 |
+
- [`finfo`](https://www.php.net/manual/en/class.finfo.php) *Requires fileinfo extension to be enabled. (PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL fileinfo >= 0.1.0)*
|
22 |
+
- Our custom 4 byte sniffer (based on [this code](http://phil.lavin.me.uk/2011/12/php-accurately-detecting-the-type-of-a-file/)) *(PHP 4, PHP 5, PHP 7, PHP 8) - only detects png, gif and jpeg*
|
23 |
+
- [`exif_imagetype`](https://www.php.net/manual/en/function.exif-imagetype.php) *Requires that PHP is compiled with exif (PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)*
|
24 |
+
- [`mime_content_type`](https://www.php.net/manual/en/function.mime-content-type.php) *Requires fileinfo. (PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)*
|
|
|
25 |
|
26 |
Note that these methods all uses the mime type mapping on the server. Not all servers for example detects `image/webp`.
|
27 |
|
vendor/rosell-dk/image-mime-type-guesser/composer.json
CHANGED
@@ -15,7 +15,8 @@
|
|
15 |
],
|
16 |
"cs-fix": "php-cs-fixer fix",
|
17 |
"cs-dry": "php-cs-fixer fix --dry-run --diff",
|
18 |
-
"test": "phpunit
|
|
|
19 |
"test2": "phpunit tests",
|
20 |
"phpcs": "phpcs --standard=PSR2",
|
21 |
"phpcs-all": "phpcs --standard=PSR2 src",
|
@@ -46,7 +47,7 @@
|
|
46 |
],
|
47 |
"require-dev": {
|
48 |
"friendsofphp/php-cs-fixer": "^2.11",
|
49 |
-
"phpunit/phpunit": "^
|
50 |
"squizlabs/php_codesniffer": "3.*"
|
51 |
},
|
52 |
"config": {
|
15 |
],
|
16 |
"cs-fix": "php-cs-fixer fix",
|
17 |
"cs-dry": "php-cs-fixer fix --dry-run --diff",
|
18 |
+
"test": "phpunit --coverage-text --coverage-clover=build/logs/coverage.clover",
|
19 |
+
"test-no-cov": "phpunit tests",
|
20 |
"test2": "phpunit tests",
|
21 |
"phpcs": "phpcs --standard=PSR2",
|
22 |
"phpcs-all": "phpcs --standard=PSR2 src",
|
47 |
],
|
48 |
"require-dev": {
|
49 |
"friendsofphp/php-cs-fixer": "^2.11",
|
50 |
+
"phpunit/phpunit": "^9.3",
|
51 |
"squizlabs/php_codesniffer": "3.*"
|
52 |
},
|
53 |
"config": {
|
vendor/rosell-dk/image-mime-type-guesser/src/Detectors/ExifImageType.php
CHANGED
@@ -30,9 +30,12 @@ class ExifImageType extends AbstractDetector
|
|
30 |
return ($imageType ? image_type_to_mime_type($imageType) : false);
|
31 |
} catch (\Exception $e) {
|
32 |
// Might for example get "Read error!"
|
|
|
|
|
|
|
33 |
// well well, don't let this stop us
|
34 |
//echo $e->getMessage();
|
35 |
-
//
|
36 |
}
|
37 |
}
|
38 |
return null;
|
30 |
return ($imageType ? image_type_to_mime_type($imageType) : false);
|
31 |
} catch (\Exception $e) {
|
32 |
// Might for example get "Read error!"
|
33 |
+
// (for some reason, this happens on very small files)
|
34 |
+
// We handle such errors as indeterminable (null)
|
35 |
+
return null;
|
36 |
// well well, don't let this stop us
|
37 |
//echo $e->getMessage();
|
38 |
+
//throw($e);
|
39 |
}
|
40 |
}
|
41 |
return null;
|
vendor/rosell-dk/image-mime-type-guesser/src/Detectors/FInfo.php
CHANGED
@@ -24,13 +24,19 @@ class FInfo extends AbstractDetector
|
|
24 |
if (class_exists('finfo')) {
|
25 |
// phpcs:ignore PHPCompatibility.PHP.NewClasses.finfoFound
|
26 |
$finfo = new \finfo(FILEINFO_MIME);
|
27 |
-
$
|
28 |
-
$result
|
29 |
-
|
30 |
-
|
31 |
-
return $result;
|
32 |
} else {
|
33 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
}
|
35 |
}
|
36 |
return null;
|
24 |
if (class_exists('finfo')) {
|
25 |
// phpcs:ignore PHPCompatibility.PHP.NewClasses.finfoFound
|
26 |
$finfo = new \finfo(FILEINFO_MIME);
|
27 |
+
$result = $finfo->file($filePath);
|
28 |
+
if ($result === false) {
|
29 |
+
// false means an error occured
|
30 |
+
return null;
|
|
|
31 |
} else {
|
32 |
+
$mime = explode('; ', $result);
|
33 |
+
$result = $mime[0];
|
34 |
+
|
35 |
+
if (strpos($result, 'image/') === 0) {
|
36 |
+
return $result;
|
37 |
+
} else {
|
38 |
+
return false;
|
39 |
+
}
|
40 |
}
|
41 |
}
|
42 |
return null;
|
vendor/rosell-dk/image-mime-type-guesser/src/Detectors/MimeContentType.php
CHANGED
@@ -34,6 +34,11 @@ class MimeContentType extends AbstractDetector
|
|
34 |
}
|
35 |
} catch (\Exception $e) {
|
36 |
// we are unstoppable!
|
|
|
|
|
|
|
|
|
|
|
37 |
}
|
38 |
}
|
39 |
return null;
|
34 |
}
|
35 |
} catch (\Exception $e) {
|
36 |
// we are unstoppable!
|
37 |
+
|
38 |
+
// TODO:
|
39 |
+
// We should probably throw... - we will do in version 1.0.0
|
40 |
+
//throw $e;
|
41 |
+
|
42 |
}
|
43 |
}
|
44 |
return null;
|
vendor/rosell-dk/image-mime-type-guesser/src/Detectors/Stack.php
CHANGED
@@ -20,10 +20,10 @@ class Stack extends AbstractDetector
|
|
20 |
protected function doDetect($filePath)
|
21 |
{
|
22 |
$detectors = [
|
23 |
-
'ExifImageType',
|
24 |
'FInfo',
|
25 |
'SniffFirstFourBytes',
|
26 |
-
'
|
|
|
27 |
'MimeContentType',
|
28 |
];
|
29 |
|
20 |
protected function doDetect($filePath)
|
21 |
{
|
22 |
$detectors = [
|
|
|
23 |
'FInfo',
|
24 |
'SniffFirstFourBytes',
|
25 |
+
'ExifImageType',
|
26 |
+
//'GetImageSize', // Disabled, as documentation says it is unreliable
|
27 |
'MimeContentType',
|
28 |
];
|
29 |
|
vendor/rosell-dk/webp-convert/README.md
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
[![Latest Stable Version](https://img.shields.io/packagist/v/rosell-dk/webp-convert.svg?style=flat-square)](https://packagist.org/packages/rosell-dk/webp-convert)
|
4 |
[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%205.6-8892BF.svg?style=flat-square)](https://php.net)
|
5 |
[![Build Status](https://travis-ci.org/rosell-dk/webp-convert.png?branch=master)](https://travis-ci.org/rosell-dk/webp-convert)
|
6 |
-
[![Coverage Status](https://img.shields.io/
|
7 |
[![Quality Score](https://img.shields.io/scrutinizer/g/rosell-dk/webp-convert.svg?style=flat-square)](https://scrutinizer-ci.com/g/rosell-dk/webp-convert/)
|
8 |
[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](https://github.com/rosell-dk/webp-convert/blob/master/LICENSE)
|
9 |
|
@@ -25,18 +25,6 @@ The library can convert using the following methods:
|
|
25 |
|
26 |
In addition to converting, the library also has a method for *serving* converted images, and we have instructions here on how to set up a solution for automatically serving webp images to browsers that supports webp.
|
27 |
|
28 |
-
## News: 2.6.0 has just been released
|
29 |
-
- Introduced [auto-limit](https://github.com/rosell-dk/webp-convert/blob/master/docs/v2.0/converting/options.md#auto-limit) option which replaces setting "quality" to "auto" [#281](https://github.com/rosell-dk/webp-convert/issues/281)
|
30 |
-
- Added "sharp-yuv" option and made it default on. [Its great](https://www.ctrl.blog/entry/webp-sharp-yuv.html), use it! Works in most converters (works in cwebp, vips, imagemagick, graphicsmagick, imagick and gmagick) [#267](https://github.com/rosell-dk/webp-convert/issues/267), [#280](https://github.com/rosell-dk/webp-convert/issues/280), [#284](https://github.com/rosell-dk/webp-convert/issues/284)
|
31 |
-
- Bumped cwebp binaries to 1.2.0 [#273](https://github.com/rosell-dk/webp-convert/issues/273)
|
32 |
-
- vips now supports "method" option and "preset" option.
|
33 |
-
- graphicsmagick now supports "auto-filter" potion
|
34 |
-
- vips, imagick, imagemagick, graphicsmagick and gmagick now supports "preset" option [#275(https://github.com/rosell-dk/webp-convert/issues/275)
|
35 |
-
- cwebp now only validates hash of supplied precompiled binaries when necessary. This cuts down conversion time. [#287](https://github.com/rosell-dk/webp-convert/issues/287)
|
36 |
-
- Added [new option](https://github.com/rosell-dk/webp-convert/blob/master/docs/v2.0/converting/options.md#cwebp-skip-these-precompiled-binaries) to cwebp for skipping precompiled binaries that are known not to work on current system. This will cut down on conversion time. [#288](https://github.com/rosell-dk/webp-convert/issues/288)
|
37 |
-
- And more (view closed issues [here](https://github.com/rosell-dk/webp-convert/milestone/22?closed=1))
|
38 |
-
|
39 |
-
|
40 |
## Installation
|
41 |
Require the library with *Composer*, like this:
|
42 |
|
@@ -129,7 +117,7 @@ Bread on the table don't come for free, even though this library does, and alway
|
|
129 |
- [Become a backer or sponsor on Patreon](https://www.patreon.com/rosell).
|
130 |
- [Buy me a Coffee](https://ko-fi.com/rosell)
|
131 |
|
132 |
-
## Supporters
|
133 |
*Persons currently backing the project via patreon - Thanks!*
|
134 |
|
135 |
- Max Kreminsky
|
@@ -150,3 +138,20 @@ Bread on the table don't come for free, even though this library does, and alway
|
|
150 |
- Tammy Lee ($90)
|
151 |
- Max Kreminsky ($65)
|
152 |
- Steven Sullivan ($51)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
[![Latest Stable Version](https://img.shields.io/packagist/v/rosell-dk/webp-convert.svg?style=flat-square)](https://packagist.org/packages/rosell-dk/webp-convert)
|
4 |
[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%205.6-8892BF.svg?style=flat-square)](https://php.net)
|
5 |
[![Build Status](https://travis-ci.org/rosell-dk/webp-convert.png?branch=master)](https://travis-ci.org/rosell-dk/webp-convert)
|
6 |
+
[![Coverage Status](https://img.shields.io/github/workflow/status/rosell-dk/webp-convert/PHP?logo=GitHub&style=flat-square)](https://github.com/rosell-dk/webp-convert/actions/workflows/php.yml)
|
7 |
[![Quality Score](https://img.shields.io/scrutinizer/g/rosell-dk/webp-convert.svg?style=flat-square)](https://scrutinizer-ci.com/g/rosell-dk/webp-convert/)
|
8 |
[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](https://github.com/rosell-dk/webp-convert/blob/master/LICENSE)
|
9 |
|
25 |
|
26 |
In addition to converting, the library also has a method for *serving* converted images, and we have instructions here on how to set up a solution for automatically serving webp images to browsers that supports webp.
|
27 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
## Installation
|
29 |
Require the library with *Composer*, like this:
|
30 |
|
117 |
- [Become a backer or sponsor on Patreon](https://www.patreon.com/rosell).
|
118 |
- [Buy me a Coffee](https://ko-fi.com/rosell)
|
119 |
|
120 |
+
## Supporters
|
121 |
*Persons currently backing the project via patreon - Thanks!*
|
122 |
|
123 |
- Max Kreminsky
|
138 |
- Tammy Lee ($90)
|
139 |
- Max Kreminsky ($65)
|
140 |
- Steven Sullivan ($51)
|
141 |
+
|
142 |
+
## New in 2.7.0:
|
143 |
+
- ImageMagick now supports the "near-lossless" option (provided Imagick >= 7.0.10-54) [#299](https://github.com/rosell-dk/webp-convert/issues/299)
|
144 |
+
- Added "try-common-system-paths" option for ImageMagick (default: true). So ImageMagick will now peek for "convert" in common system paths [#293](https://github.com/rosell-dk/webp-convert/issues/293)
|
145 |
+
- Fixed memory leak in Gd on very old versions of PHP [#264](https://github.com/rosell-dk/webp-convert/issues/264)
|
146 |
+
- And more (view closed issues [here](https://github.com/rosell-dk/webp-convert/milestone/24?closed=1)
|
147 |
+
|
148 |
+
## New in 2.6.0:
|
149 |
+
- Introduced [auto-limit](https://github.com/rosell-dk/webp-convert/blob/master/docs/v2.0/converting/options.md#auto-limit) option which replaces setting "quality" to "auto" [#281](https://github.com/rosell-dk/webp-convert/issues/281)
|
150 |
+
- Added "sharp-yuv" option and made it default on. [Its great](https://www.ctrl.blog/entry/webp-sharp-yuv.html), use it! Works in most converters (works in cwebp, vips, imagemagick, graphicsmagick, imagick and gmagick) [#267](https://github.com/rosell-dk/webp-convert/issues/267), [#280](https://github.com/rosell-dk/webp-convert/issues/280), [#284](https://github.com/rosell-dk/webp-convert/issues/284)
|
151 |
+
- Bumped cwebp binaries to 1.2.0 [#273](https://github.com/rosell-dk/webp-convert/issues/273)
|
152 |
+
- vips now supports "method" option and "preset" option.
|
153 |
+
- graphicsmagick now supports "auto-filter" potion
|
154 |
+
- vips, imagick, imagemagick, graphicsmagick and gmagick now supports "preset" option [#275](https://github.com/rosell-dk/webp-convert/issues/275)
|
155 |
+
- cwebp now only validates hash of supplied precompiled binaries when necessary. This cuts down conversion time. [#287](https://github.com/rosell-dk/webp-convert/issues/287)
|
156 |
+
- Added [new option](https://github.com/rosell-dk/webp-convert/blob/master/docs/v2.0/converting/options.md#cwebp-skip-these-precompiled-binaries) to cwebp for skipping precompiled binaries that are known not to work on current system. This will cut down on conversion time. [#288](https://github.com/rosell-dk/webp-convert/issues/288)
|
157 |
+
- And more (view closed issues [here](https://github.com/rosell-dk/webp-convert/milestone/22?closed=1))
|
vendor/rosell-dk/webp-convert/src/Convert/Converters/AbstractConverter.php
CHANGED
@@ -120,7 +120,7 @@ abstract class AbstractConverter
|
|
120 |
$this->setProvidedOptions($options);
|
121 |
|
122 |
if (!isset($this->options['_skip_input_check'])) {
|
123 |
-
$this->log('WebP Convert 2.
|
124 |
$this->logLn(' ignited.');
|
125 |
$this->logLn('- PHP version: ' . phpversion());
|
126 |
if (isset($_SERVER['SERVER_SOFTWARE'])) {
|
120 |
$this->setProvidedOptions($options);
|
121 |
|
122 |
if (!isset($this->options['_skip_input_check'])) {
|
123 |
+
$this->log('WebP Convert 2.7.0', 'italic');
|
124 |
$this->logLn(' ignited.');
|
125 |
$this->logLn('- PHP version: ' . phpversion());
|
126 |
if (isset($_SERVER['SERVER_SOFTWARE'])) {
|
vendor/rosell-dk/webp-convert/src/Convert/Converters/BaseTraits/OptionsTrait.php
CHANGED
@@ -7,15 +7,9 @@ use WebPConvert\Convert\Exceptions\ConversionFailed\ConversionSkippedException;
|
|
7 |
use WebPConvert\Options\Exceptions\InvalidOptionValueException;
|
8 |
use WebPConvert\Options\Exceptions\InvalidOptionTypeException;
|
9 |
|
10 |
-
use WebPConvert\Options\ArrayOption;
|
11 |
-
use WebPConvert\Options\BooleanOption;
|
12 |
use WebPConvert\Options\GhostOption;
|
13 |
-
use WebPConvert\Options\IntegerOption;
|
14 |
-
use WebPConvert\Options\IntegerOrNullOption;
|
15 |
-
use WebPConvert\Options\MetadataOption;
|
16 |
use WebPConvert\Options\Options;
|
17 |
-
use WebPConvert\Options\
|
18 |
-
use WebPConvert\Options\QualityOption;
|
19 |
|
20 |
/**
|
21 |
* Trait for handling options
|
@@ -55,33 +49,235 @@ trait OptionsTrait
|
|
55 |
{
|
56 |
$isPng = ($imageType == 'png');
|
57 |
|
58 |
-
|
59 |
-
$defaultQualityOption->markDeprecated();
|
60 |
-
|
61 |
-
$maxQualityOption = new IntegerOption('max-quality', 85, 0, 100);
|
62 |
-
$maxQualityOption->markDeprecated();
|
63 |
-
|
64 |
return [
|
65 |
-
new IntegerOption('alpha-quality', 85, 0, 100),
|
66 |
-
new BooleanOption('auto-limit', true),
|
67 |
//new IntegerOption('auto-limit-adjustment', 5, -100, 100),
|
68 |
-
new BooleanOption('auto-filter', false),
|
69 |
-
$defaultQualityOption,
|
70 |
-
new StringOption('encoding', 'auto', ['lossy', 'lossless', 'auto']),
|
71 |
-
new BooleanOption('low-memory', false),
|
72 |
new BooleanOption('log-call-arguments', false),
|
73 |
-
$maxQualityOption,
|
74 |
-
new MetadataOption('metadata', 'none'),
|
75 |
-
new IntegerOption('method', 6, 0, 6),
|
76 |
-
new IntegerOption('near-lossless', 60, 0, 100),
|
77 |
-
new StringOption('preset', 'none', ['none', 'default', 'photo', 'picture', 'drawing', 'icon', 'text']),
|
78 |
-
new QualityOption('quality', ($isPng ? 85 : 75)),
|
79 |
-
new IntegerOrNullOption('size-in-percentage', null, 0, 100),
|
80 |
-
new BooleanOption('sharp-yuv', true),
|
81 |
new BooleanOption('skip', false),
|
82 |
new BooleanOption('use-nice', false),
|
83 |
new ArrayOption('jpeg', []),
|
84 |
new ArrayOption('png', [])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
85 |
];
|
86 |
}
|
87 |
|
@@ -97,7 +293,6 @@ trait OptionsTrait
|
|
97 |
return [];
|
98 |
}
|
99 |
|
100 |
-
|
101 |
/**
|
102 |
* Create options.
|
103 |
*
|
@@ -308,6 +503,114 @@ trait OptionsTrait
|
|
308 |
return [];
|
309 |
}
|
310 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
311 |
/*
|
312 |
public static function getUniqueOptions($imageType = 'png')
|
313 |
{
|
7 |
use WebPConvert\Options\Exceptions\InvalidOptionValueException;
|
8 |
use WebPConvert\Options\Exceptions\InvalidOptionTypeException;
|
9 |
|
|
|
|
|
10 |
use WebPConvert\Options\GhostOption;
|
|
|
|
|
|
|
11 |
use WebPConvert\Options\Options;
|
12 |
+
use WebPConvert\Options\OptionFactory;
|
|
|
13 |
|
14 |
/**
|
15 |
* Trait for handling options
|
49 |
{
|
50 |
$isPng = ($imageType == 'png');
|
51 |
|
52 |
+
/*
|
|
|
|
|
|
|
|
|
|
|
53 |
return [
|
|
|
|
|
54 |
//new IntegerOption('auto-limit-adjustment', 5, -100, 100),
|
|
|
|
|
|
|
|
|
55 |
new BooleanOption('log-call-arguments', false),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
new BooleanOption('skip', false),
|
57 |
new BooleanOption('use-nice', false),
|
58 |
new ArrayOption('jpeg', []),
|
59 |
new ArrayOption('png', [])
|
60 |
+
];*/
|
61 |
+
|
62 |
+
$introMd = 'https://github.com/rosell-dk/webp-convert/blob/master/docs/v2.0/' .
|
63 |
+
'converting/introduction-for-converting.md';
|
64 |
+
|
65 |
+
return OptionFactory::createOptions([
|
66 |
+
['encoding', 'string', [
|
67 |
+
'title' => 'Encoding',
|
68 |
+
'description' => 'Set encoding for the webp. ' .
|
69 |
+
'If you choose "auto", webp-convert will ' .
|
70 |
+
'convert to both lossy and lossless and pick the smallest result',
|
71 |
+
'default' => 'auto',
|
72 |
+
'enum' => ['auto', 'lossy', 'lossless'],
|
73 |
+
'ui' => [
|
74 |
+
'component' => 'select',
|
75 |
+
'links' => [['Guide', $introMd . '#auto-selecting-between-losslesslossy-encoding']],
|
76 |
+
]
|
77 |
+
]],
|
78 |
+
['quality', 'int', [
|
79 |
+
'title' => 'Quality (Lossy)',
|
80 |
+
'description' => 'Quality for lossy encoding. ',
|
81 |
+
'default' => ($isPng ? 85 : 75),
|
82 |
+
'default-png' => 85,
|
83 |
+
'default-jpeg' => 75,
|
84 |
+
//'minimum' => 0,
|
85 |
+
//'maximum' => 100,
|
86 |
+
"oneOf" => [
|
87 |
+
["type" => "number", "minimum" => 0, 'maximum' => 100],
|
88 |
+
["type" => "string", "enum" => ["auto"]]
|
89 |
+
],
|
90 |
+
'ui' => [
|
91 |
+
'component' => 'slider',
|
92 |
+
'display' => "option.encoding != 'lossless'"
|
93 |
+
]
|
94 |
+
]],
|
95 |
+
['auto-limit', 'boolean', [
|
96 |
+
'title' => 'Auto-limit',
|
97 |
+
'description' =>
|
98 |
+
'Enable this option to prevent an unnecessarily high quality setting for low ' .
|
99 |
+
'quality jpegs. You really should enable this.',
|
100 |
+
'default' => true,
|
101 |
+
'ui' => [
|
102 |
+
'component' => 'checkbox',
|
103 |
+
'advanced' => true,
|
104 |
+
'links' => [
|
105 |
+
[
|
106 |
+
'Guide',
|
107 |
+
$introMd . '#preventing-unnecessarily-high-quality-setting-for-low-quality-jpegs'
|
108 |
+
]
|
109 |
+
],
|
110 |
+
'display' => "option.encoding != 'lossless'"
|
111 |
+
]
|
112 |
+
]],
|
113 |
+
['alpha-quality', 'int', [
|
114 |
+
'title' => 'Alpha quality',
|
115 |
+
'description' =>
|
116 |
+
'Quality of alpha channel. ' .
|
117 |
+
'Often, there is no need for high quality transparency layer and in some cases you ' .
|
118 |
+
'can tweak this all the way down to 10 and save a lot in file size. The option only ' .
|
119 |
+
'has effect with lossy encoding, and of course only on images with transparency.',
|
120 |
+
'default' => 85,
|
121 |
+
'minimum' => 0,
|
122 |
+
'maximum' => 100,
|
123 |
+
'ui' => [
|
124 |
+
'component' => 'slider',
|
125 |
+
'links' => [['Guide', $introMd . '#alpha-quality']],
|
126 |
+
'display' => "(option.encoding != 'lossless') && (imageType!='jpeg')"
|
127 |
+
]
|
128 |
+
]],
|
129 |
+
['near-lossless', 'int', [
|
130 |
+
'title' => '"Near lossless" quality',
|
131 |
+
'description' =>
|
132 |
+
'This option allows you to get impressively better compression for lossless encoding, with ' .
|
133 |
+
'minimal impact on visual quality. The range is 0 (maximum preprocessing) to 100 (no ' .
|
134 |
+
'preprocessing). Read the guide for more info.',
|
135 |
+
'default' => 60,
|
136 |
+
'minimum' => 0,
|
137 |
+
'maximum' => 100,
|
138 |
+
'ui' => [
|
139 |
+
'component' => 'slider',
|
140 |
+
'links' => [['Guide', $introMd . '#near-lossless']],
|
141 |
+
'display' => "option.encoding != 'lossy'"
|
142 |
+
]
|
143 |
+
]],
|
144 |
+
['metadata', 'string', [
|
145 |
+
'title' => 'Metadata',
|
146 |
+
'description' =>
|
147 |
+
'Determines which metadata that should be copied over to the webp. ' .
|
148 |
+
'Setting it to "all" preserves all metadata, setting it to "none" strips all metadata. ' .
|
149 |
+
'*cwebp* can take a comma-separated list of which kinds of metadata that should be copied ' .
|
150 |
+
'(ie "exif,icc"). *gd* will always remove all metadata and *ffmpeg* will always keep all ' .
|
151 |
+
'metadata. The rest can either strip all or keep all (they will keep all, unless the option ' .
|
152 |
+
'is set to *none*)',
|
153 |
+
'default' => 'none',
|
154 |
+
'ui' => [
|
155 |
+
'component' => 'multi-select',
|
156 |
+
'options' => ['all', 'none', 'exif', 'icc', 'xmp'],
|
157 |
+
]
|
158 |
+
// TODO: set regex validation
|
159 |
+
]],
|
160 |
+
['method', 'int', [
|
161 |
+
'title' => 'Reduction effort (0-6)',
|
162 |
+
'description' =>
|
163 |
+
'Controls the trade off between encoding speed and the compressed file size and quality. ' .
|
164 |
+
'Possible values range from 0 to 6. 0 is fastest. 6 results in best quality and compression. ' .
|
165 |
+
'PS: The option corresponds to the "method" option in libwebp',
|
166 |
+
'default' => 6,
|
167 |
+
'minimum' => 0,
|
168 |
+
'maximum' => 6,
|
169 |
+
'ui' => [
|
170 |
+
'component' => 'slider',
|
171 |
+
'advanced' => true,
|
172 |
+
]
|
173 |
+
]],
|
174 |
+
['sharp-yuv', 'boolean', [
|
175 |
+
'title' => 'Sharp YUV',
|
176 |
+
'description' =>
|
177 |
+
'Better RGB->YUV color conversion (sharper and more accurate) at the expense of a little extra ' .
|
178 |
+
'conversion time.',
|
179 |
+
'default' => true,
|
180 |
+
'ui' => [
|
181 |
+
'component' => 'checkbox',
|
182 |
+
'advanced' => true,
|
183 |
+
'links' => [
|
184 |
+
['Ctrl.blog', 'https://www.ctrl.blog/entry/webp-sharp-yuv.html'],
|
185 |
+
],
|
186 |
+
]
|
187 |
+
]],
|
188 |
+
['auto-filter', 'boolean', [
|
189 |
+
'title' => 'Auto-filter',
|
190 |
+
'description' =>
|
191 |
+
'Turns auto-filter on. ' .
|
192 |
+
'This algorithm will spend additional time optimizing the filtering strength to reach a well-' .
|
193 |
+
'balanced quality. Unfortunately, it is extremely expensive in terms of computation. It takes ' .
|
194 |
+
'about 5-10 times longer to do a conversion. A 1MB picture which perhaps typically takes about ' .
|
195 |
+
'2 seconds to convert, will takes about 15 seconds to convert with auto-filter. ',
|
196 |
+
'default' => false,
|
197 |
+
'ui' => [
|
198 |
+
'component' => 'checkbox',
|
199 |
+
'advanced' => true,
|
200 |
+
]
|
201 |
+
]],
|
202 |
+
['low-memory', 'boolean', [
|
203 |
+
'title' => 'Low memory',
|
204 |
+
'description' =>
|
205 |
+
'Reduce memory usage of lossy encoding at the cost of ~30% longer encoding time and marginally ' .
|
206 |
+
'larger output size. Only effective when the *method* option is 3 or more. Read more in ' .
|
207 |
+
'[the docs](https://developers.google.com/speed/webp/docs/cwebp)',
|
208 |
+
'default' => false,
|
209 |
+
'ui' => [
|
210 |
+
'component' => 'checkbox',
|
211 |
+
'advanced' => true,
|
212 |
+
'display' => "(option.encoding != 'lossless') && (option.method>2)"
|
213 |
+
]
|
214 |
+
]],
|
215 |
+
['preset', 'string', [
|
216 |
+
'title' => 'Preset',
|
217 |
+
'description' =>
|
218 |
+
'Using a preset will set many of the other options to suit a particular type of ' .
|
219 |
+
'source material. It even overrides them. It does however not override the quality option. ' .
|
220 |
+
'"none" means that no preset will be set',
|
221 |
+
'default' => 'none',
|
222 |
+
'enum' => ['none', 'default', 'photo', 'picture', 'drawing', 'icon', 'text']],
|
223 |
+
'ui' => [
|
224 |
+
'component' => 'select',
|
225 |
+
'advanced' => true,
|
226 |
+
]
|
227 |
+
],
|
228 |
+
['size-in-percentage', 'int', ['default' => null, 'minimum' => 0, 'maximum' => 100, 'allow-null' => true]],
|
229 |
+
['skip', 'boolean', ['default' => false]],
|
230 |
+
['log-call-arguments', 'boolean', ['default' => false]],
|
231 |
+
// TODO: use-nice should not be a "general" option
|
232 |
+
['use-nice', 'boolean', ['default' => false]],
|
233 |
+
['jpeg', 'array', ['default' => []]],
|
234 |
+
['png', 'array', ['default' => []]],
|
235 |
+
|
236 |
+
// Deprecated options
|
237 |
+
['default-quality', 'int', [
|
238 |
+
'default' => ($isPng ? 85 : 75),
|
239 |
+
'minimum' => 0,
|
240 |
+
'maximum' => 100,
|
241 |
+
'deprecated' => true]
|
242 |
+
],
|
243 |
+
['max-quality', 'int', ['default' => 85, 'minimum' => 0, 'maximum' => 100, 'deprecated' => true]],
|
244 |
+
]);
|
245 |
+
}
|
246 |
+
|
247 |
+
/**
|
248 |
+
* Get ui definitions for the general options.
|
249 |
+
*
|
250 |
+
* You can automatically build a gui with these (suggested) components
|
251 |
+
*
|
252 |
+
* @param string $imageType (png | jpeg) The image type - determines the defaults
|
253 |
+
*
|
254 |
+
* @return array Hash of ui definitions indexed by option id
|
255 |
+
*/
|
256 |
+
public function getUIForGeneralOptions($imageType)
|
257 |
+
{
|
258 |
+
return [
|
259 |
+
/*
|
260 |
+
['preset', 'string', [
|
261 |
+
'default' => 'none',
|
262 |
+
'enum' => ['none', 'default', 'photo', 'picture', 'drawing', 'icon', 'text']]
|
263 |
+
],
|
264 |
+
*/
|
265 |
+
/* {
|
266 |
+
"id": "metadata",
|
267 |
+
"type": "string",
|
268 |
+
"default": 'exif',
|
269 |
+
"ui": {
|
270 |
+
"component": "multi-select",
|
271 |
+
"label": "Metadata",
|
272 |
+
"options": ['all', 'none', 'exif', 'icc', 'xmp'],
|
273 |
+
"optionLabels": {
|
274 |
+
'all': 'All',
|
275 |
+
'none': 'None',
|
276 |
+
'exif': 'Exif',
|
277 |
+
'icc': 'ICC',
|
278 |
+
'xmp': 'XMP'
|
279 |
+
}
|
280 |
+
},*/
|
281 |
];
|
282 |
}
|
283 |
|
293 |
return [];
|
294 |
}
|
295 |
|
|
|
296 |
/**
|
297 |
* Create options.
|
298 |
*
|
503 |
return [];
|
504 |
}
|
505 |
|
506 |
+
public function getUnsupportedGeneralOptions()
|
507 |
+
{
|
508 |
+
return $this->getUnsupportedDefaultOptions();
|
509 |
+
}
|
510 |
+
|
511 |
+
/**
|
512 |
+
* Get unique option definitions.
|
513 |
+
*
|
514 |
+
* Gets definitions of the converters "unique" options (that is, those options that
|
515 |
+
* are not general). It was added in order to give GUI's a way to automatically adjust
|
516 |
+
* their setting screens.
|
517 |
+
*
|
518 |
+
* @param string $imageType (png | jpeg) The image type - determines the defaults
|
519 |
+
*
|
520 |
+
* @return array Array of options definitions - ready to be json encoded, or whatever
|
521 |
+
*/
|
522 |
+
public function getUniqueOptionDefinitions($imageType = 'png')
|
523 |
+
{
|
524 |
+
$uniqueOptions = new Options();
|
525 |
+
$uniqueOptions->addOptions(... $this->getUniqueOptions($imageType));
|
526 |
+
//$uniqueOptions->setUI($this->getUniqueOptionsUI($imageType));
|
527 |
+
return $uniqueOptions->getDefinitions();
|
528 |
+
}
|
529 |
+
|
530 |
+
/**
|
531 |
+
* Get general option definitions.
|
532 |
+
*
|
533 |
+
* Gets definitions of all general options (not just the ones supported by current converter)
|
534 |
+
* For UI's, as a way to automatically adjust their setting screens.
|
535 |
+
*
|
536 |
+
* @param string $imageType (png | jpeg) The image type - determines the defaults
|
537 |
+
*
|
538 |
+
* @return array Array of options definitions - ready to be json encoded, or whatever
|
539 |
+
*/
|
540 |
+
public function getGeneralOptionDefinitions($imageType = 'png')
|
541 |
+
{
|
542 |
+
$generalOptions = new Options();
|
543 |
+
$generalOptions->addOptions(... $this->getGeneralOptions($imageType));
|
544 |
+
//$generalOptions->setUI($this->getUIForGeneralOptions($imageType));
|
545 |
+
return $generalOptions->getDefinitions();
|
546 |
+
}
|
547 |
+
|
548 |
+
public function getSupportedGeneralOptions($imageType = 'png')
|
549 |
+
{
|
550 |
+
$unsupportedGeneral = $this->getUnsupportedDefaultOptions();
|
551 |
+
$generalOptionsArr = $this->getGeneralOptions($imageType);
|
552 |
+
$supportedIds = [];
|
553 |
+
foreach ($generalOptionsArr as $i => $option) {
|
554 |
+
if (in_array($option->getId(), $unsupportedGeneral)) {
|
555 |
+
unset($generalOptionsArr[$i]);
|
556 |
+
}
|
557 |
+
}
|
558 |
+
return $generalOptionsArr;
|
559 |
+
}
|
560 |
+
|
561 |
+
/**
|
562 |
+
* Get general option definitions.
|
563 |
+
*
|
564 |
+
* Gets definitions of the converters "general" options. (that is, those options that
|
565 |
+
* It was added in order to give GUI's a way to automatically adjust their setting screens.
|
566 |
+
*
|
567 |
+
* @param string $imageType (png | jpeg) The image type - determines the defaults
|
568 |
+
*
|
569 |
+
* @return array Array of options definitions - ready to be json encoded, or whatever
|
570 |
+
*/
|
571 |
+
public function getSupportedGeneralOptionDefinitions($imageType = 'png')
|
572 |
+
{
|
573 |
+
$generalOptions = new Options();
|
574 |
+
$generalOptions->addOptions(... $this->getSupportedGeneralOptions($imageType));
|
575 |
+
return $generalOptions->getDefinitions();
|
576 |
+
}
|
577 |
+
|
578 |
+
public function getSupportedGeneralOptionIds()
|
579 |
+
{
|
580 |
+
$supportedGeneralOptions = $this->getSupportedGeneralOptions();
|
581 |
+
$supportedGeneralIds = [];
|
582 |
+
foreach ($supportedGeneralOptions as $option) {
|
583 |
+
$supportedGeneralIds[] = $option->getId();
|
584 |
+
}
|
585 |
+
return $supportedGeneralIds;
|
586 |
+
}
|
587 |
+
|
588 |
+
/**
|
589 |
+
* Get option definitions.
|
590 |
+
*
|
591 |
+
* Added in order to give GUI's a way to automatically adjust their setting screens.
|
592 |
+
*
|
593 |
+
* @param string $imageType (png | jpeg) The image type - determines the defaults
|
594 |
+
* @param bool $returnGeneral Whether the general setting definitions should be returned
|
595 |
+
* @param bool $returnGeneralSupport Whether the ids of supported/unsupported general options
|
596 |
+
* should be returned
|
597 |
+
*
|
598 |
+
* @return array Array of options definitions - ready to be json encoded, or whatever
|
599 |
+
*/
|
600 |
+
public function getOptionDefinitions($imageType = 'png', $returnGeneral = true, $returnGeneralSupport = true)
|
601 |
+
{
|
602 |
+
$result = [
|
603 |
+
'unique' => $this->getUniqueOptionDefinitions($imageType),
|
604 |
+
];
|
605 |
+
if ($returnGeneral) {
|
606 |
+
$result['general'] = $this->getSupportedGeneralOptionDefinitions($imageType);
|
607 |
+
}
|
608 |
+
if ($returnGeneralSupport) {
|
609 |
+
$result['supported-general'] = $this->getSupportedGeneralOptionIds();
|
610 |
+
$result['unsupported-general'] = $this->getUnsupportedDefaultOptions();
|
611 |
+
}
|
612 |
+
return $result;
|
613 |
+
}
|
614 |
/*
|
615 |
public static function getUniqueOptions($imageType = 'png')
|
616 |
{
|
vendor/rosell-dk/webp-convert/src/Convert/Converters/Cwebp.php
CHANGED
@@ -10,9 +10,7 @@ use WebPConvert\Convert\Exceptions\ConversionFailed\ConverterNotOperational\Syst
|
|
10 |
use WebPConvert\Convert\Exceptions\ConversionFailedException;
|
11 |
use WebPConvert\Convert\Exceptions\ConversionFailed\ConverterNotOperationalException;
|
12 |
use WebPConvert\Helpers\BinaryDiscovery;
|
13 |
-
use WebPConvert\Options\
|
14 |
-
use WebPConvert\Options\SensitiveStringOption;
|
15 |
-
use WebPConvert\Options\StringOption;
|
16 |
|
17 |
/**
|
18 |
* Convert images to webp by calling cwebp binary.
|
@@ -33,24 +31,114 @@ class Cwebp extends AbstractConverter
|
|
33 |
}
|
34 |
|
35 |
/**
|
36 |
-
|
37 |
*
|
38 |
-
*
|
39 |
*/
|
40 |
public function getUniqueOptions($imageType)
|
41 |
{
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
new SensitiveStringOption('rel-path-to-precompiled-binaries', './Binaries'),
|
49 |
-
new StringOption('skip-these-precompiled-binaries', '')
|
50 |
-
];
|
51 |
-
}
|
52 |
-
|
53 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
|
55 |
|
56 |
// OS-specific binaries included in this library, along with hashes
|
@@ -304,8 +392,10 @@ class Cwebp extends AbstractConverter
|
|
304 |
if ($versionNum < 0.5) {
|
305 |
$this->logLn('Ignoring near-lossless option (requires cwebp 0.5)', 'italic');
|
306 |
} else {
|
307 |
-
//
|
308 |
-
//
|
|
|
|
|
309 |
if ($options['encoding'] == 'lossless') {
|
310 |
$cmdOptions[] = '-near_lossless ' . $options['near-lossless'];
|
311 |
} else {
|
@@ -473,6 +563,9 @@ class Cwebp extends AbstractConverter
|
|
473 |
}
|
474 |
|
475 |
/**
|
|
|
|
|
|
|
476 |
*
|
477 |
* @return string|int Version string (ie "1.0.2") OR return code, in case of failure
|
478 |
*/
|
@@ -513,9 +606,11 @@ class Cwebp extends AbstractConverter
|
|
513 |
}
|
514 |
|
515 |
/**
|
516 |
-
*
|
|
|
|
|
517 |
*
|
518 |
-
*
|
519 |
* the "failed" key holds failed binaries and their error codes.
|
520 |
*/
|
521 |
private function detectVersions($binaries)
|
10 |
use WebPConvert\Convert\Exceptions\ConversionFailedException;
|
11 |
use WebPConvert\Convert\Exceptions\ConversionFailed\ConverterNotOperationalException;
|
12 |
use WebPConvert\Helpers\BinaryDiscovery;
|
13 |
+
use WebPConvert\Options\OptionFactory;
|
|
|
|
|
14 |
|
15 |
/**
|
16 |
* Convert images to webp by calling cwebp binary.
|
31 |
}
|
32 |
|
33 |
/**
|
34 |
+
* Get the options unique for this converter
|
35 |
*
|
36 |
+
* @return array Array of options
|
37 |
*/
|
38 |
public function getUniqueOptions($imageType)
|
39 |
{
|
40 |
+
$binariesForOS = [];
|
41 |
+
if (isset(self::$suppliedBinariesInfo[PHP_OS])) {
|
42 |
+
foreach (self::$suppliedBinariesInfo[PHP_OS] as $i => list($file, $hash, $version)) {
|
43 |
+
$binariesForOS[] = $file;
|
44 |
+
}
|
45 |
+
}
|
|
|
|
|
|
|
|
|
|
|
46 |
|
47 |
+
return OptionFactory::createOptions([
|
48 |
+
['try-cwebp', 'boolean', [
|
49 |
+
'title' => 'Try plain cwebp command',
|
50 |
+
'description' =>
|
51 |
+
'If set, the converter will try executing "cwebp -version". In case it succeeds, ' .
|
52 |
+
'and the version is higher than those working cwebps found using other methods, ' .
|
53 |
+
'the conversion will be done by executing this cwebp.',
|
54 |
+
'default' => true,
|
55 |
+
'ui' => [
|
56 |
+
'component' => 'checkbox',
|
57 |
+
'advanced' => true
|
58 |
+
]
|
59 |
+
]],
|
60 |
+
['try-discovering-cwebp', 'boolean', [
|
61 |
+
'title' => 'Try discovering cwebp binary',
|
62 |
+
'description' =>
|
63 |
+
'If set, the converter will try to discover installed cwebp binaries using a "which -a cwebp" ' .
|
64 |
+
'command, or in case that fails, a "whereis -b cwebp" command. These commands will find ' .
|
65 |
+
'cwebp binaries residing in PATH',
|
66 |
+
'default' => true,
|
67 |
+
'ui' => [
|
68 |
+
'component' => 'checkbox',
|
69 |
+
'advanced' => true
|
70 |
+
]
|
71 |
+
]],
|
72 |
+
['try-common-system-paths', 'boolean', [
|
73 |
+
'title' => 'Try locating cwebp in common system paths',
|
74 |
+
'description' =>
|
75 |
+
'If set, the converter will look for a cwebp binaries residing in common system locations ' .
|
76 |
+
'such as "/usr/bin/cwebp". If such exist, it is assumed that they are valid cwebp binaries. ' .
|
77 |
+
'A version check will be run on the binaries found (they are executed with the "-version" flag. ' .
|
78 |
+
'The cwebp with the highest version found using this method and the other enabled methods will ' .
|
79 |
+
'be used for the actual conversion.' .
|
80 |
+
'Note: All methods for discovering cwebp binaries are per default enabled. You can save a few ' .
|
81 |
+
'microseconds by disabling some, but it is probably not worth it, as your ' .
|
82 |
+
'setup will then become less resilient to system changes.',
|
83 |
+
'default' => true,
|
84 |
+
'ui' => [
|
85 |
+
'component' => 'checkbox',
|
86 |
+
'advanced' => true
|
87 |
+
]
|
88 |
+
]],
|
89 |
+
['try-supplied-binary-for-os', 'boolean', [
|
90 |
+
'title' => 'Try precompiled cwebp binaries',
|
91 |
+
'description' =>
|
92 |
+
'If set, the converter will try use a precompiled cwebp binary that comes with webp-convert. ' .
|
93 |
+
'But only if it has a higher version that those found by other methods. As the library knows ' .
|
94 |
+
'the versions of its bundled binaries, no additional time is spent executing them with the ' .
|
95 |
+
'"-version" parameter. The binaries are hash-checked before executed. ' .
|
96 |
+
'The library btw. comes with several versions of precompiled cwebps because they have different ' .
|
97 |
+
'dependencies - some works on some systems and others on others.',
|
98 |
+
'default' => true,
|
99 |
+
'ui' => [
|
100 |
+
'component' => 'checkbox',
|
101 |
+
'advanced' => true
|
102 |
+
]
|
103 |
+
]],
|
104 |
+
['skip-these-precompiled-binaries', 'string', [
|
105 |
+
'title' => 'Skip these precompiled binaries',
|
106 |
+
'description' =>
|
107 |
+
'',
|
108 |
+
'default' => '',
|
109 |
+
'ui' => [
|
110 |
+
'component' => 'multi-select',
|
111 |
+
'advanced' => true,
|
112 |
+
'options' => $binariesForOS,
|
113 |
+
'display' => "notEquals(state('option', 'try-supplied-binary-for-os'), false)"
|
114 |
+
]
|
115 |
+
|
116 |
+
]],
|
117 |
+
['rel-path-to-precompiled-binaries', 'string', [
|
118 |
+
'title' => 'Rel path to precompiled binaries',
|
119 |
+
'description' =>
|
120 |
+
'',
|
121 |
+
'default' => './Binaries',
|
122 |
+
'ui' => [
|
123 |
+
'component' => '',
|
124 |
+
'advanced' => true,
|
125 |
+
'display' => "option['try-supplied-binary-for-os'] == true"
|
126 |
+
],
|
127 |
+
'sensitive' => true
|
128 |
+
]],
|
129 |
+
['command-line-options', 'string', [
|
130 |
+
'title' => 'Command line options',
|
131 |
+
'description' =>
|
132 |
+
'',
|
133 |
+
'default' => '',
|
134 |
+
'ui' => [
|
135 |
+
'component' => 'input',
|
136 |
+
'advanced' => true,
|
137 |
+
]
|
138 |
+
|
139 |
+
]],
|
140 |
+
]);
|
141 |
+
}
|
142 |
|
143 |
|
144 |
// OS-specific binaries included in this library, along with hashes
|
392 |
if ($versionNum < 0.5) {
|
393 |
$this->logLn('Ignoring near-lossless option (requires cwebp 0.5)', 'italic');
|
394 |
} else {
|
395 |
+
// The "-near_lossless" flag triggers lossless encoding. We don't want that to happen,
|
396 |
+
// we want the "encoding" option to be respected, and we need it to be in order for
|
397 |
+
// encoding=auto to work.
|
398 |
+
// So: Only set when "encoding" is set to "lossless"
|
399 |
if ($options['encoding'] == 'lossless') {
|
400 |
$cmdOptions[] = '-near_lossless ' . $options['near-lossless'];
|
401 |
} else {
|
563 |
}
|
564 |
|
565 |
/**
|
566 |
+
* Detect the version of a cwebp binary.
|
567 |
+
*
|
568 |
+
* @param string $binary The binary to detect version for (path to cwebp or simply "cwebp")
|
569 |
*
|
570 |
* @return string|int Version string (ie "1.0.2") OR return code, in case of failure
|
571 |
*/
|
606 |
}
|
607 |
|
608 |
/**
|
609 |
+
* Check versions for an array of binaries.
|
610 |
+
*
|
611 |
+
* @param array $binaries array of binaries to detect the version of
|
612 |
*
|
613 |
+
* @return array the "detected" key holds working binaries and their version numbers, the
|
614 |
* the "failed" key holds failed binaries and their error codes.
|
615 |
*/
|
616 |
private function detectVersions($binaries)
|
vendor/rosell-dk/webp-convert/src/Convert/Converters/Ewww.php
CHANGED
@@ -11,6 +11,7 @@ use WebPConvert\Convert\Exceptions\ConversionFailed\ConverterNotOperational\Inva
|
|
11 |
use WebPConvert\Convert\Exceptions\ConversionFailed\ConverterNotOperational\SystemRequirementsNotMetException;
|
12 |
use WebPConvert\Options\BooleanOption;
|
13 |
use WebPConvert\Options\SensitiveStringOption;
|
|
|
14 |
|
15 |
/**
|
16 |
* Convert images to webp using ewww cloud service.
|
@@ -29,10 +30,32 @@ class Ewww extends AbstractConverter
|
|
29 |
|
30 |
public function getUniqueOptions($imageType)
|
31 |
{
|
32 |
-
return [
|
33 |
-
|
34 |
-
|
35 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
}
|
37 |
|
38 |
protected function getUnsupportedDefaultOptions()
|
11 |
use WebPConvert\Convert\Exceptions\ConversionFailed\ConverterNotOperational\SystemRequirementsNotMetException;
|
12 |
use WebPConvert\Options\BooleanOption;
|
13 |
use WebPConvert\Options\SensitiveStringOption;
|
14 |
+
use WebPConvert\Options\OptionFactory;
|
15 |
|
16 |
/**
|
17 |
* Convert images to webp using ewww cloud service.
|
30 |
|
31 |
public function getUniqueOptions($imageType)
|
32 |
{
|
33 |
+
return OptionFactory::createOptions([
|
34 |
+
['api-key', 'string', [
|
35 |
+
'title' => 'Ewww API key',
|
36 |
+
'description' => 'ewww API key. ' .
|
37 |
+
'If you choose "auto", webp-convert will ' .
|
38 |
+
'convert to both lossy and lossless and pick the smallest result',
|
39 |
+
'default' => '',
|
40 |
+
'sensitive' => true,
|
41 |
+
'ui' => [
|
42 |
+
'component' => 'input',
|
43 |
+
]
|
44 |
+
]],
|
45 |
+
['check-key-status-before-converting', 'boolean', [
|
46 |
+
'title' => 'Check key status before converting',
|
47 |
+
'description' =>
|
48 |
+
'If enabled, the api key will be validated (relative inexpensive) before trying ' .
|
49 |
+
'to convert. For automatic conversions, you should enable it. Otherwise you run the ' .
|
50 |
+
'risk that the same files will be uploaded to ewww cloud service over and over again, ' .
|
51 |
+
'in case the key has expired. For manually triggered conversions, you can safely disable ' .
|
52 |
+
'the option.',
|
53 |
+
'default' => true,
|
54 |
+
'ui' => [
|
55 |
+
'component' => 'checkbox',
|
56 |
+
]
|
57 |
+
]],
|
58 |
+
]);
|
59 |
}
|
60 |
|
61 |
protected function getUnsupportedDefaultOptions()
|
vendor/rosell-dk/webp-convert/src/Convert/Converters/FFMpeg.php
CHANGED
@@ -29,6 +29,7 @@ class FFMpeg extends AbstractConverter
|
|
29 |
'auto-filter',
|
30 |
'encoding',
|
31 |
'low-memory',
|
|
|
32 |
'near-lossless',
|
33 |
'preset',
|
34 |
'sharp-yuv',
|
29 |
'auto-filter',
|
30 |
'encoding',
|
31 |
'low-memory',
|
32 |
+
'metadata',
|
33 |
'near-lossless',
|
34 |
'preset',
|
35 |
'sharp-yuv',
|
vendor/rosell-dk/webp-convert/src/Convert/Converters/Gd.php
CHANGED
@@ -126,35 +126,32 @@ class Gd extends AbstractConverter
|
|
126 |
return false;
|
127 |
}
|
128 |
|
129 |
-
|
130 |
-
if (imagealphablending($dst, false) === false) {
|
131 |
-
return false;
|
132 |
-
}
|
133 |
-
|
134 |
-
//change the RGB values if you need, but leave alpha at 127
|
135 |
-
$transparent = imagecolorallocatealpha($dst, 255, 255, 255, 127);
|
136 |
-
|
137 |
-
if ($transparent === false) {
|
138 |
-
return false;
|
139 |
-
}
|
140 |
|
141 |
-
//
|
142 |
-
if (
|
143 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
144 |
}
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
if (imagecopy($dst, $image, 0, 0, 0, 0, imagesx($image), imagesy($image)) === false) {
|
152 |
-
return false;
|
153 |
}
|
154 |
-
|
155 |
-
|
156 |
-
$image = $dst;
|
157 |
-
return true;
|
158 |
} else {
|
159 |
// The necessary methods for converting color palette are not avalaible
|
160 |
return false;
|
@@ -176,7 +173,9 @@ class Gd extends AbstractConverter
|
|
176 |
if (function_exists('imagepalettetotruecolor')) {
|
177 |
return imagepalettetotruecolor($image);
|
178 |
} else {
|
179 |
-
|
|
|
|
|
180 |
return $this->makeTrueColorUsingWorkaround($image);
|
181 |
}
|
182 |
}
|
@@ -435,8 +434,8 @@ class Gd extends AbstractConverter
|
|
435 |
// takes care of preparing stuff before calling doConvert, and validating after.
|
436 |
protected function doActualConvert()
|
437 |
{
|
438 |
-
|
439 |
-
$this->logLn('GD Version: ' .
|
440 |
|
441 |
// Btw: Check out processWebp here:
|
442 |
// https://github.com/Intervention/image/blob/master/src/Intervention/Image/Gd/Encoder.php
|
@@ -449,6 +448,23 @@ class Gd extends AbstractConverter
|
|
449 |
|
450 |
|
451 |
if ($this->getMimeTypeOfSource() == 'image/png') {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
452 |
// Try to set alpha blending
|
453 |
$this->trySettingAlphaBlending($image);
|
454 |
}
|
126 |
return false;
|
127 |
}
|
128 |
|
129 |
+
$success = false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
130 |
|
131 |
+
//prevent blending with default black
|
132 |
+
if (imagealphablending($dst, false) !== false) {
|
133 |
+
//change the RGB values if you need, but leave alpha at 127
|
134 |
+
$transparent = imagecolorallocatealpha($dst, 255, 255, 255, 127);
|
135 |
+
|
136 |
+
if ($transparent !== false) {
|
137 |
+
//simpler than flood fill
|
138 |
+
if (imagefilledrectangle($dst, 0, 0, imagesx($image), imagesy($image), $transparent) !== false) {
|
139 |
+
//restore default blending
|
140 |
+
if (imagealphablending($dst, true) !== false) {
|
141 |
+
if (imagecopy($dst, $image, 0, 0, 0, 0, imagesx($image), imagesy($image)) !== false) {
|
142 |
+
$success = true;
|
143 |
+
}
|
144 |
+
};
|
145 |
+
}
|
146 |
+
}
|
147 |
}
|
148 |
+
if ($success) {
|
149 |
+
imagedestroy($image);
|
150 |
+
$image = $dst;
|
151 |
+
} else {
|
152 |
+
imagedestroy($dst);
|
|
|
|
|
|
|
153 |
}
|
154 |
+
return $success;
|
|
|
|
|
|
|
155 |
} else {
|
156 |
// The necessary methods for converting color palette are not avalaible
|
157 |
return false;
|
173 |
if (function_exists('imagepalettetotruecolor')) {
|
174 |
return imagepalettetotruecolor($image);
|
175 |
} else {
|
176 |
+
$this->logLn(
|
177 |
+
'imagepalettetotruecolor() is not available on this system - using custom implementation instead'
|
178 |
+
);
|
179 |
return $this->makeTrueColorUsingWorkaround($image);
|
180 |
}
|
181 |
}
|
434 |
// takes care of preparing stuff before calling doConvert, and validating after.
|
435 |
protected function doActualConvert()
|
436 |
{
|
437 |
+
$versionString = gd_info()["GD Version"];
|
438 |
+
$this->logLn('GD Version: ' . $versionString);
|
439 |
|
440 |
// Btw: Check out processWebp here:
|
441 |
// https://github.com/Intervention/image/blob/master/src/Intervention/Image/Gd/Encoder.php
|
448 |
|
449 |
|
450 |
if ($this->getMimeTypeOfSource() == 'image/png') {
|
451 |
+
if (function_exists('version_compare')) {
|
452 |
+
if (version_compare($versionString, "2.1.1", "<=")) {
|
453 |
+
$this->logLn(
|
454 |
+
'BEWARE: Your version of Gd looses the alpha chanel when converting to webp.' .
|
455 |
+
'You should upgrade Gd, use another converter or stop converting PNGs. ' .
|
456 |
+
'See: https://github.com/rosell-dk/webp-convert/issues/238'
|
457 |
+
);
|
458 |
+
} elseif (version_compare($versionString, "2.2.4", "<=")) {
|
459 |
+
$this->logLn(
|
460 |
+
'BEWARE: Older versions of Gd looses the alpha chanel when converting to webp.' .
|
461 |
+
'We have not tested if transparency fails on your (rather old) version of Gd. ' .
|
462 |
+
'Please let us know. ' .
|
463 |
+
'See: https://github.com/rosell-dk/webp-convert/issues/238'
|
464 |
+
);
|
465 |
+
}
|
466 |
+
}
|
467 |
+
|
468 |
// Try to set alpha blending
|
469 |
$this->trySettingAlphaBlending($image);
|
470 |
}
|
vendor/rosell-dk/webp-convert/src/Convert/Converters/Gmagick.php
CHANGED
@@ -107,7 +107,7 @@ class Gmagick extends AbstractConverter
|
|
107 |
|
108 |
$im->setimageformat('WEBP');
|
109 |
|
110 |
-
//
|
111 |
if (method_exists($im, 'setimageoption')) {
|
112 |
// Finally cracked setting webp options.
|
113 |
// See #167
|
107 |
|
108 |
$im->setimageformat('WEBP');
|
109 |
|
110 |
+
// setimageoption() has not always been there, so check first. #169
|
111 |
if (method_exists($im, 'setimageoption')) {
|
112 |
// Finally cracked setting webp options.
|
113 |
// See #167
|
vendor/rosell-dk/webp-convert/src/Convert/Converters/GraphicsMagick.php
CHANGED
@@ -93,9 +93,8 @@ class GraphicsMagick extends AbstractConverter
|
|
93 |
*/
|
94 |
private function createCommandLineOptions()
|
95 |
{
|
96 |
-
//
|
97 |
-
//
|
98 |
-
// news page: http://www.graphicsmagick.org/NEWS.html
|
99 |
|
100 |
$commandArguments = [];
|
101 |
|
93 |
*/
|
94 |
private function createCommandLineOptions()
|
95 |
{
|
96 |
+
// For available webp options, check out:
|
97 |
+
// https://github.com/kstep/graphicsmagick/blob/master/coders/webp.c
|
|
|
98 |
|
99 |
$commandArguments = [];
|
100 |
|
vendor/rosell-dk/webp-convert/src/Convert/Converters/ImageMagick.php
CHANGED
@@ -7,6 +7,8 @@ use WebPConvert\Convert\Converters\ConverterTraits\ExecTrait;
|
|
7 |
use WebPConvert\Convert\Converters\ConverterTraits\EncodingAutoTrait;
|
8 |
use WebPConvert\Convert\Exceptions\ConversionFailed\ConverterNotOperational\SystemRequirementsNotMetException;
|
9 |
use WebPConvert\Convert\Exceptions\ConversionFailedException;
|
|
|
|
|
10 |
|
11 |
//use WebPConvert\Convert\Exceptions\ConversionFailed\InvalidInput\TargetNotFoundException;
|
12 |
|
@@ -25,11 +27,33 @@ class ImageMagick extends AbstractConverter
|
|
25 |
protected function getUnsupportedDefaultOptions()
|
26 |
{
|
27 |
return [
|
28 |
-
'near-lossless',
|
29 |
'size-in-percentage',
|
30 |
];
|
31 |
}
|
32 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
// To futher improve this converter, I could check out:
|
34 |
// https://github.com/Orbitale/ImageMagickPHP
|
35 |
|
@@ -41,6 +65,14 @@ class ImageMagick extends AbstractConverter
|
|
41 |
if (!empty(getenv('WEBPCONVERT_IMAGEMAGICK_PATH'))) {
|
42 |
return getenv('WEBPCONVERT_IMAGEMAGICK_PATH');
|
43 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
return 'convert';
|
45 |
}
|
46 |
|
@@ -105,12 +137,14 @@ class ImageMagick extends AbstractConverter
|
|
105 |
/**
|
106 |
* Build command line options
|
107 |
*
|
|
|
108 |
* @return string
|
109 |
*/
|
110 |
-
private function createCommandLineOptions()
|
111 |
{
|
112 |
-
//
|
113 |
-
// https://imagemagick.org/script/webp.php
|
|
|
114 |
|
115 |
// We should perhaps implement low-memory. Its already in cwebp, it
|
116 |
// could perhaps be promoted to a general option
|
@@ -127,6 +161,7 @@ class ImageMagick extends AbstractConverter
|
|
127 |
$options = $this->options;
|
128 |
|
129 |
if (!is_null($options['preset'])) {
|
|
|
130 |
if ($options['preset'] != 'none') {
|
131 |
$imageHint = $options['preset'];
|
132 |
switch ($imageHint) {
|
@@ -142,28 +177,56 @@ class ImageMagick extends AbstractConverter
|
|
142 |
$commandArguments[] = '-define webp:image-hint=' . escapeshellarg($imageHint);
|
143 |
}
|
144 |
}
|
|
|
145 |
if ($options['encoding'] == 'lossless') {
|
|
|
146 |
$commandArguments[] = '-define webp:lossless=true';
|
147 |
}
|
|
|
148 |
if ($options['low-memory']) {
|
|
|
149 |
$commandArguments[] = '-define webp:low-memory=true';
|
150 |
}
|
|
|
151 |
if ($options['auto-filter'] === true) {
|
|
|
152 |
$commandArguments[] = '-define webp:auto-filter=true';
|
153 |
}
|
|
|
154 |
if ($options['metadata'] == 'none') {
|
155 |
$commandArguments[] = '-strip';
|
156 |
}
|
|
|
157 |
if ($options['alpha-quality'] !== 100) {
|
|
|
158 |
$commandArguments[] = '-define webp:alpha-quality=' . strval($options['alpha-quality']);
|
159 |
}
|
|
|
160 |
if ($options['sharp-yuv'] === true) {
|
161 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
162 |
}
|
163 |
|
164 |
-
|
165 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
166 |
|
|
|
167 |
$commandArguments[] = '-define webp:method=' . $options['method'];
|
168 |
|
169 |
$commandArguments[] = escapeshellarg($this->source);
|
@@ -174,9 +237,16 @@ class ImageMagick extends AbstractConverter
|
|
174 |
|
175 |
protected function doActualConvert()
|
176 |
{
|
177 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
178 |
|
179 |
-
$command = $this->getPath() . ' ' . $this->createCommandLineOptions() . ' 2>&1';
|
180 |
|
181 |
$useNice = (($this->options['use-nice']) && self::hasNiceSupport()) ? true : false;
|
182 |
if ($useNice) {
|
7 |
use WebPConvert\Convert\Converters\ConverterTraits\EncodingAutoTrait;
|
8 |
use WebPConvert\Convert\Exceptions\ConversionFailed\ConverterNotOperational\SystemRequirementsNotMetException;
|
9 |
use WebPConvert\Convert\Exceptions\ConversionFailedException;
|
10 |
+
use WebPConvert\Helpers\BinaryDiscovery;
|
11 |
+
use WebPConvert\Options\OptionFactory;
|
12 |
|
13 |
//use WebPConvert\Convert\Exceptions\ConversionFailed\InvalidInput\TargetNotFoundException;
|
14 |
|
27 |
protected function getUnsupportedDefaultOptions()
|
28 |
{
|
29 |
return [
|
|
|
30 |
'size-in-percentage',
|
31 |
];
|
32 |
}
|
33 |
|
34 |
+
/**
|
35 |
+
* Get the options unique for this converter
|
36 |
+
*
|
37 |
+
* @return array Array of options
|
38 |
+
*/
|
39 |
+
public function getUniqueOptions($imageType)
|
40 |
+
{
|
41 |
+
return OptionFactory::createOptions([
|
42 |
+
['try-common-system-paths', 'boolean', [
|
43 |
+
'title' => 'Try locating ImageMagick in common system paths',
|
44 |
+
'description' =>
|
45 |
+
'If set, the converter will look for a ImageMagick binaries residing in common system locations ' .
|
46 |
+
'such as "/usr/bin/convert". ' .
|
47 |
+
'If such exist, it is assumed that they are valid ImageMagick binaries. ',
|
48 |
+
'default' => true,
|
49 |
+
'ui' => [
|
50 |
+
'component' => 'checkbox',
|
51 |
+
'advanced' => true
|
52 |
+
]
|
53 |
+
]],
|
54 |
+
]);
|
55 |
+
}
|
56 |
+
|
57 |
// To futher improve this converter, I could check out:
|
58 |
// https://github.com/Orbitale/ImageMagickPHP
|
59 |
|
65 |
if (!empty(getenv('WEBPCONVERT_IMAGEMAGICK_PATH'))) {
|
66 |
return getenv('WEBPCONVERT_IMAGEMAGICK_PATH');
|
67 |
}
|
68 |
+
|
69 |
+
if ($this->options['try-common-system-paths']) {
|
70 |
+
$binaries = BinaryDiscovery::discoverInCommonSystemPaths('convert');
|
71 |
+
if (!empty($binaries)) {
|
72 |
+
return $binaries[0];
|
73 |
+
}
|
74 |
+
}
|
75 |
+
|
76 |
return 'convert';
|
77 |
}
|
78 |
|
137 |
/**
|
138 |
* Build command line options
|
139 |
*
|
140 |
+
* @param string $versionNumber. Ie "6.9.10-23"
|
141 |
* @return string
|
142 |
*/
|
143 |
+
private function createCommandLineOptions($versionNumber = 'unknown')
|
144 |
{
|
145 |
+
// Available webp options for imagemagick are documented here:
|
146 |
+
// - https://imagemagick.org/script/webp.php
|
147 |
+
// - https://github.com/ImageMagick/ImageMagick/blob/main/coders/webp.c
|
148 |
|
149 |
// We should perhaps implement low-memory. Its already in cwebp, it
|
150 |
// could perhaps be promoted to a general option
|
161 |
$options = $this->options;
|
162 |
|
163 |
if (!is_null($options['preset'])) {
|
164 |
+
// "image-hint" is at least available from 6.9.4-0 (I can't see further back)
|
165 |
if ($options['preset'] != 'none') {
|
166 |
$imageHint = $options['preset'];
|
167 |
switch ($imageHint) {
|
177 |
$commandArguments[] = '-define webp:image-hint=' . escapeshellarg($imageHint);
|
178 |
}
|
179 |
}
|
180 |
+
|
181 |
if ($options['encoding'] == 'lossless') {
|
182 |
+
// lossless is at least available from 6.9.4-0 (I can't see further back)
|
183 |
$commandArguments[] = '-define webp:lossless=true';
|
184 |
}
|
185 |
+
|
186 |
if ($options['low-memory']) {
|
187 |
+
// low-memory is at least available from 6.9.4-0 (I can't see further back)
|
188 |
$commandArguments[] = '-define webp:low-memory=true';
|
189 |
}
|
190 |
+
|
191 |
if ($options['auto-filter'] === true) {
|
192 |
+
// auto-filter is at least available from 6.9.4-0 (I can't see further back)
|
193 |
$commandArguments[] = '-define webp:auto-filter=true';
|
194 |
}
|
195 |
+
|
196 |
if ($options['metadata'] == 'none') {
|
197 |
$commandArguments[] = '-strip';
|
198 |
}
|
199 |
+
|
200 |
if ($options['alpha-quality'] !== 100) {
|
201 |
+
// alpha-quality is at least available from 6.9.4-0 (I can't see further back)
|
202 |
$commandArguments[] = '-define webp:alpha-quality=' . strval($options['alpha-quality']);
|
203 |
}
|
204 |
+
|
205 |
if ($options['sharp-yuv'] === true) {
|
206 |
+
if (version_compare($versionNumber, '7.0.8-26', '>=')) {
|
207 |
+
$commandArguments[] = '-define webp:use-sharp-yuv=true';
|
208 |
+
} else {
|
209 |
+
$this->logLn(
|
210 |
+
'Note: "sharp-yuv" option is not supported in your version of ImageMagick. ' .
|
211 |
+
'ImageMagic >= 7.0.8-26 is required',
|
212 |
+
'italic'
|
213 |
+
);
|
214 |
+
}
|
215 |
}
|
216 |
|
217 |
+
if ($options['near-lossless'] != 100) {
|
218 |
+
if (version_compare($versionNumber, '7.0.10-54', '>=')) { // #299
|
219 |
+
$commandArguments[] = '-define webp:near-lossless=' . escapeshellarg($options['near-lossless']);
|
220 |
+
} else {
|
221 |
+
$this->logLn(
|
222 |
+
'Note: "near-lossless" option is not supported in your version of ImageMagick. ' .
|
223 |
+
'ImageMagic >= 7.0.10-54 is required',
|
224 |
+
'italic'
|
225 |
+
);
|
226 |
+
}
|
227 |
+
}
|
228 |
|
229 |
+
// "method" is at least available from 6.9.4-0 (I can't see further back)
|
230 |
$commandArguments[] = '-define webp:method=' . $options['method'];
|
231 |
|
232 |
$commandArguments[] = escapeshellarg($this->source);
|
237 |
|
238 |
protected function doActualConvert()
|
239 |
{
|
240 |
+
$version = $this->getVersion();
|
241 |
+
|
242 |
+
$this->logLn($version);
|
243 |
+
|
244 |
+
preg_match('#\d+\.\d+\.\d+[\d\.\-]+#', $version, $matches);
|
245 |
+
$versionNumber = (isset($matches[0]) ? $matches[0] : 'unknown');
|
246 |
+
|
247 |
+
$this->logLn('Extracted version number: ' . $versionNumber);
|
248 |
|
249 |
+
$command = $this->getPath() . ' ' . $this->createCommandLineOptions($versionNumber) . ' 2>&1';
|
250 |
|
251 |
$useNice = (($this->options['use-nice']) && self::hasNiceSupport()) ? true : false;
|
252 |
if ($useNice) {
|
vendor/rosell-dk/webp-convert/src/Convert/Converters/Imagick.php
CHANGED
@@ -24,7 +24,6 @@ class Imagick extends AbstractConverter
|
|
24 |
protected function getUnsupportedDefaultOptions()
|
25 |
{
|
26 |
return [
|
27 |
-
'near-lossless',
|
28 |
'size-in-percentage',
|
29 |
'use-nice'
|
30 |
];
|
@@ -105,11 +104,21 @@ class Imagick extends AbstractConverter
|
|
105 |
|
106 |
// This might throw - we let it!
|
107 |
$im = new \Imagick($this->source);
|
108 |
-
|
109 |
//$im = new \Imagick();
|
110 |
//$im->pingImage($this->source);
|
111 |
//$im->readImage($this->source);
|
112 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
113 |
$im->setImageFormat('WEBP');
|
114 |
|
115 |
if (!is_null($options['preset'])) {
|
@@ -134,12 +143,32 @@ class Imagick extends AbstractConverter
|
|
134 |
$im->setOption('webp:low-memory', $options['low-memory'] ? 'true' : 'false');
|
135 |
$im->setOption('webp:alpha-quality', $options['alpha-quality']);
|
136 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
137 |
if ($options['auto-filter'] === true) {
|
138 |
$im->setOption('webp:auto-filter', 'true');
|
139 |
}
|
140 |
|
141 |
if ($options['sharp-yuv'] === true) {
|
142 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
143 |
}
|
144 |
|
145 |
if ($options['metadata'] == 'none') {
|
24 |
protected function getUnsupportedDefaultOptions()
|
25 |
{
|
26 |
return [
|
|
|
27 |
'size-in-percentage',
|
28 |
'use-nice'
|
29 |
];
|
104 |
|
105 |
// This might throw - we let it!
|
106 |
$im = new \Imagick($this->source);
|
|
|
107 |
//$im = new \Imagick();
|
108 |
//$im->pingImage($this->source);
|
109 |
//$im->readImage($this->source);
|
110 |
|
111 |
+
$version = \Imagick::getVersion();
|
112 |
+
$this->logLn('ImageMagic API version (full): ' . $version['versionString']);
|
113 |
+
|
114 |
+
preg_match('#\d+\.\d+\.\d+[\d\.\-]+#', $version['versionString'], $matches);
|
115 |
+
$versionNumber = (isset($matches[0]) ? $matches[0] : 'unknown');
|
116 |
+
$this->logLn('ImageMagic API version (just the number): ' . $versionNumber);
|
117 |
+
|
118 |
+
// Note: good enough for info, but not entirely reliable - see #304
|
119 |
+
$extVersion = (defined('\Imagick::IMAGICK_EXTVER') ? \Imagick::IMAGICK_EXTVER : phpversion('imagick'));
|
120 |
+
$this->logLn('Imagic extension version: ' . $extVersion);
|
121 |
+
|
122 |
$im->setImageFormat('WEBP');
|
123 |
|
124 |
if (!is_null($options['preset'])) {
|
143 |
$im->setOption('webp:low-memory', $options['low-memory'] ? 'true' : 'false');
|
144 |
$im->setOption('webp:alpha-quality', $options['alpha-quality']);
|
145 |
|
146 |
+
if ($options['near-lossless'] != 100) {
|
147 |
+
if (version_compare($versionNumber, '7.0.10-54', '>=')) {
|
148 |
+
$im->setOption('webp:near-lossless', $options['near-lossless']);
|
149 |
+
} else {
|
150 |
+
$this->logLn(
|
151 |
+
'Note: near-lossless is not supported in your version of ImageMagick. ' .
|
152 |
+
'ImageMagic >= 7.0.10-54 is required',
|
153 |
+
'italic'
|
154 |
+
);
|
155 |
+
}
|
156 |
+
}
|
157 |
+
|
158 |
if ($options['auto-filter'] === true) {
|
159 |
$im->setOption('webp:auto-filter', 'true');
|
160 |
}
|
161 |
|
162 |
if ($options['sharp-yuv'] === true) {
|
163 |
+
if (version_compare($versionNumber, '7.0.8-26', '>=')) {
|
164 |
+
$im->setOption('webp:use-sharp-yuv', 'true');
|
165 |
+
} else {
|
166 |
+
$this->logLn(
|
167 |
+
'Note: "sharp-yuv" option is not supported in your version of ImageMagick. ' .
|
168 |
+
'ImageMagic >= 7.0.8-26 is required',
|
169 |
+
'italic'
|
170 |
+
);
|
171 |
+
}
|
172 |
}
|
173 |
|
174 |
if ($options['metadata'] == 'none') {
|
vendor/rosell-dk/webp-convert/src/Options/ArrayOption.php
CHANGED
@@ -16,7 +16,7 @@ class ArrayOption extends Option
|
|
16 |
{
|
17 |
|
18 |
protected $typeId = 'array';
|
19 |
-
protected $
|
20 |
|
21 |
public function check()
|
22 |
{
|
@@ -31,11 +31,11 @@ class ArrayOption extends Option
|
|
31 |
return parent::getValueForPrint();
|
32 |
}
|
33 |
}
|
34 |
-
|
35 |
public function getDefinition()
|
36 |
{
|
37 |
$obj = parent::getDefinition();
|
38 |
$obj['sensitive'] = false;
|
39 |
return $obj;
|
40 |
-
}
|
41 |
}
|
16 |
{
|
17 |
|
18 |
protected $typeId = 'array';
|
19 |
+
protected $schemaType = ['array'];
|
20 |
|
21 |
public function check()
|
22 |
{
|
31 |
return parent::getValueForPrint();
|
32 |
}
|
33 |
}
|
34 |
+
|
35 |
public function getDefinition()
|
36 |
{
|
37 |
$obj = parent::getDefinition();
|
38 |
$obj['sensitive'] = false;
|
39 |
return $obj;
|
40 |
+
}
|
41 |
}
|
vendor/rosell-dk/webp-convert/src/Options/BooleanOption.php
CHANGED
@@ -16,7 +16,7 @@ class BooleanOption extends Option
|
|
16 |
{
|
17 |
|
18 |
protected $typeId = 'boolean';
|
19 |
-
protected $
|
20 |
|
21 |
public function check()
|
22 |
{
|
16 |
{
|
17 |
|
18 |
protected $typeId = 'boolean';
|
19 |
+
protected $schemaType = ['boolean'];
|
20 |
|
21 |
public function check()
|
22 |
{
|
vendor/rosell-dk/webp-convert/src/Options/IntegerOption.php
CHANGED
@@ -14,8 +14,8 @@ use WebPConvert\Options\Exceptions\InvalidOptionValueException;
|
|
14 |
*/
|
15 |
class IntegerOption extends Option
|
16 |
{
|
17 |
-
protected $typeId = '
|
18 |
-
protected $
|
19 |
protected $minValue;
|
20 |
protected $maxValue;
|
21 |
|
@@ -65,4 +65,12 @@ class IntegerOption extends Option
|
|
65 |
$this->checkType('integer');
|
66 |
$this->checkMinMax();
|
67 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
}
|
14 |
*/
|
15 |
class IntegerOption extends Option
|
16 |
{
|
17 |
+
protected $typeId = 'int';
|
18 |
+
protected $schemaType = ['integer'];
|
19 |
protected $minValue;
|
20 |
protected $maxValue;
|
21 |
|
65 |
$this->checkType('integer');
|
66 |
$this->checkMinMax();
|
67 |
}
|
68 |
+
|
69 |
+
public function getSchema()
|
70 |
+
{
|
71 |
+
$obj = parent::getSchema();
|
72 |
+
$obj['minimum'] = $this->minValue;
|
73 |
+
$obj['maximum'] = $this->maxValue;
|
74 |
+
return $obj;
|
75 |
+
}
|
76 |
}
|
vendor/rosell-dk/webp-convert/src/Options/IntegerOrNullOption.php
CHANGED
@@ -14,7 +14,7 @@ use WebPConvert\Options\Exceptions\InvalidOptionValueException;
|
|
14 |
*/
|
15 |
class IntegerOrNullOption extends IntegerOption
|
16 |
{
|
17 |
-
protected $
|
18 |
|
19 |
public function __construct($id, $defaultValue, $minValue = null, $maxValue = null)
|
20 |
{
|
@@ -41,4 +41,10 @@ class IntegerOrNullOption extends IntegerOption
|
|
41 |
}
|
42 |
return parent::getValueForPrint();
|
43 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
}
|
14 |
*/
|
15 |
class IntegerOrNullOption extends IntegerOption
|
16 |
{
|
17 |
+
protected $schemaType = ['integer', 'null'];
|
18 |
|
19 |
public function __construct($id, $defaultValue, $minValue = null, $maxValue = null)
|
20 |
{
|
41 |
}
|
42 |
return parent::getValueForPrint();
|
43 |
}
|
44 |
+
|
45 |
+
public function getDefinition()
|
46 |
+
{
|
47 |
+
$obj = parent::getDefinition();
|
48 |
+
return $obj;
|
49 |
+
}
|
50 |
}
|
vendor/rosell-dk/webp-convert/src/Options/MetadataOption.php
CHANGED
@@ -16,7 +16,7 @@ class MetadataOption extends StringOption
|
|
16 |
{
|
17 |
|
18 |
protected $typeId = 'metadata';
|
19 |
-
protected $
|
20 |
|
21 |
public function __construct($id, $defaultValue)
|
22 |
{
|
16 |
{
|
17 |
|
18 |
protected $typeId = 'metadata';
|
19 |
+
protected $schemaType = ['string'];
|
20 |
|
21 |
public function __construct($id, $defaultValue)
|
22 |
{
|
vendor/rosell-dk/webp-convert/src/Options/Option.php
CHANGED
@@ -29,8 +29,11 @@ class Option
|
|
29 |
/** @var string An option must supply a type id */
|
30 |
protected $typeId;
|
31 |
|
32 |
-
/** @var array Type constraints for the value */
|
33 |
-
protected $
|
|
|
|
|
|
|
34 |
|
35 |
/** @var boolean Whether the option has been deprecated */
|
36 |
protected $deprecated = false;
|
@@ -38,6 +41,12 @@ class Option
|
|
38 |
/** @var string Help text */
|
39 |
protected $helpText = '';
|
40 |
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
|
42 |
/**
|
43 |
* Constructor.
|
@@ -156,21 +165,80 @@ class Option
|
|
156 |
return print_r($this->getValue(), true);
|
157 |
}
|
158 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
159 |
|
160 |
-
/* POST-PONED till 2.7.0
|
161 |
|
162 |
public function getDefinition()
|
163 |
{
|
164 |
$obj = [
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
'default' => $this->defaultValue,
|
169 |
-
'help-text' => $this->helpText,
|
170 |
];
|
171 |
if ($this->deprecated) {
|
172 |
$obj['deprecated'] = true;
|
173 |
}
|
174 |
return $obj;
|
175 |
-
}
|
176 |
}
|
29 |
/** @var string An option must supply a type id */
|
30 |
protected $typeId;
|
31 |
|
32 |
+
/** @var array Type constraints for the value (JSON schema syntax) */
|
33 |
+
protected $schemaType = [];
|
34 |
+
|
35 |
+
/** @var array|null Array of allowed values (JSON schema syntax) */
|
36 |
+
protected $enum = null; //https://json-schema.org/understanding-json-schema/reference/generic.html#enumerated-values
|
37 |
|
38 |
/** @var boolean Whether the option has been deprecated */
|
39 |
protected $deprecated = false;
|
41 |
/** @var string Help text */
|
42 |
protected $helpText = '';
|
43 |
|
44 |
+
/** @var array UI Def */
|
45 |
+
protected $ui;
|
46 |
+
|
47 |
+
/** @var array Extra Schema Def (ie holding 'title', 'description' or other)*/
|
48 |
+
protected $extraSchemaDefs;
|
49 |
+
|
50 |
|
51 |
/**
|
52 |
* Constructor.
|
165 |
return print_r($this->getValue(), true);
|
166 |
}
|
167 |
|
168 |
+
/**
|
169 |
+
* Set help text for the option
|
170 |
+
*
|
171 |
+
* @param string $helpText The help text
|
172 |
+
* @return void
|
173 |
+
*/
|
174 |
+
public function setHelpText($helpText)
|
175 |
+
{
|
176 |
+
$this->helpText = $helpText;
|
177 |
+
}
|
178 |
+
|
179 |
+
/**
|
180 |
+
* Get help text for the option
|
181 |
+
*
|
182 |
+
* @return string $helpText The help text
|
183 |
+
*/
|
184 |
+
public function getHelpText()
|
185 |
+
{
|
186 |
+
return $this->helpText;
|
187 |
+
}
|
188 |
+
|
189 |
+
/**
|
190 |
+
* Set ui definition for the option
|
191 |
+
*
|
192 |
+
* @param array $ui The UI def
|
193 |
+
* @return void
|
194 |
+
*/
|
195 |
+
public function setUI($ui)
|
196 |
+
{
|
197 |
+
$this->ui = $ui;
|
198 |
+
}
|
199 |
+
|
200 |
+
public function setExtraSchemaDefs($def)
|
201 |
+
{
|
202 |
+
$this->extraSchemaDefs = $def;
|
203 |
+
}
|
204 |
+
|
205 |
+
|
206 |
+
/**
|
207 |
+
* Get ui definition for the option
|
208 |
+
*
|
209 |
+
* @return array $ui The UI def
|
210 |
+
*/
|
211 |
+
public function getUI()
|
212 |
+
{
|
213 |
+
return $this->ui;
|
214 |
+
}
|
215 |
+
|
216 |
+
public function getSchema()
|
217 |
+
{
|
218 |
+
if (isset($this->extraSchemaDefs)) {
|
219 |
+
$schema = $this->extraSchemaDefs;
|
220 |
+
} else {
|
221 |
+
$schema = [];
|
222 |
+
}
|
223 |
+
$schema['type'] = $this->schemaType;
|
224 |
+
$schema['default'] = $this->defaultValue;
|
225 |
+
if (!is_null($this->enum)) {
|
226 |
+
$schema['enum'] = $this->enum;
|
227 |
+
}
|
228 |
+
return $schema;
|
229 |
+
}
|
230 |
|
|
|
231 |
|
232 |
public function getDefinition()
|
233 |
{
|
234 |
$obj = [
|
235 |
+
'id' => $this->id,
|
236 |
+
'schema' => $this->getSchema(),
|
237 |
+
'ui' => $this->ui,
|
|
|
|
|
238 |
];
|
239 |
if ($this->deprecated) {
|
240 |
$obj['deprecated'] = true;
|
241 |
}
|
242 |
return $obj;
|
243 |
+
}
|
244 |
}
|
vendor/rosell-dk/webp-convert/src/Options/OptionFactory.php
ADDED
@@ -0,0 +1,92 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WebPConvert\Options;
|
4 |
+
|
5 |
+
use WebPConvert\Options\ArrayOption;
|
6 |
+
use WebPConvert\Options\BooleanOption;
|
7 |
+
use WebPConvert\Options\IntegerOption;
|
8 |
+
use WebPConvert\Options\IntegerOrNullOption;
|
9 |
+
use WebPConvert\Options\MetadataOption;
|
10 |
+
use WebPConvert\Options\StringOption;
|
11 |
+
use WebPConvert\Options\SensitiveStringOption;
|
12 |
+
use WebPConvert\Options\QualityOption;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Abstract option class
|
16 |
+
*
|
17 |
+
* @package WebPConvert
|
18 |
+
* @author Bjørn Rosell <it@rosell.dk>
|
19 |
+
* @since Class available since Release 2.7.0
|
20 |
+
*/
|
21 |
+
class OptionFactory
|
22 |
+
{
|
23 |
+
|
24 |
+
public static function createOption($optionName, $optionType, $def)
|
25 |
+
{
|
26 |
+
$option = null;
|
27 |
+
switch ($optionType) {
|
28 |
+
case 'int':
|
29 |
+
$minValue = (isset($def['minimum']) ? $def['minimum'] : null);
|
30 |
+
$maxValue = (isset($def['maximum']) ? $def['maximum'] : null);
|
31 |
+
unset($def['minimum']);
|
32 |
+
unset($def['maximum']);
|
33 |
+
if (isset($def['allow-null']) && $def['allow-null']) {
|
34 |
+
$option = new IntegerOrNullOption($optionName, $def['default'], $minValue, $maxValue);
|
35 |
+
} else {
|
36 |
+
if ($optionName == 'quality') {
|
37 |
+
$option = new QualityOption($optionName, $def['default']);
|
38 |
+
} else {
|
39 |
+
$option = new IntegerOption($optionName, $def['default'], $minValue, $maxValue);
|
40 |
+
}
|
41 |
+
}
|
42 |
+
break;
|
43 |
+
|
44 |
+
case 'string':
|
45 |
+
if ($optionName == 'metadata') {
|
46 |
+
$option = new MetadataOption($optionName, $def['default']);
|
47 |
+
} else {
|
48 |
+
$enum = (isset($def['enum']) ? $def['enum'] : null);
|
49 |
+
if (isset($def['sensitive']) && ($def['sensitive'] == true)) {
|
50 |
+
unset($def['sensitive']);
|
51 |
+
$option = new SensitiveStringOption($optionName, $def['default'], $enum);
|
52 |
+
} else {
|
53 |
+
$option = new StringOption($optionName, $def['default'], $enum);
|
54 |
+
}
|
55 |
+
}
|
56 |
+
break;
|
57 |
+
|
58 |
+
case 'boolean':
|
59 |
+
$option = new BooleanOption($optionName, $def['default']);
|
60 |
+
break;
|
61 |
+
|
62 |
+
case 'array':
|
63 |
+
$option = new ArrayOption($optionName, $def['default']);
|
64 |
+
break;
|
65 |
+
}
|
66 |
+
unset($def['default']);
|
67 |
+
|
68 |
+
if (!is_null($option)) {
|
69 |
+
if (isset($def['deprecated'])) {
|
70 |
+
$option->markDeprecated();
|
71 |
+
}
|
72 |
+
if (isset($def['ui'])) {
|
73 |
+
$option->setUI($def['ui']);
|
74 |
+
unset($def['ui']);
|
75 |
+
}
|
76 |
+
}
|
77 |
+
$option->setExtraSchemaDefs($def);
|
78 |
+
return $option;
|
79 |
+
}
|
80 |
+
|
81 |
+
public static function createOptions($def)
|
82 |
+
{
|
83 |
+
$result = [];
|
84 |
+
foreach ($def as $i => list($optionName, $optionType, $optionDef)) {
|
85 |
+
$option = self::createOption($optionName, $optionType, $optionDef);
|
86 |
+
if (!is_null($option)) {
|
87 |
+
$result[] = $option;
|
88 |
+
}
|
89 |
+
}
|
90 |
+
return $result;
|
91 |
+
}
|
92 |
+
}
|
vendor/rosell-dk/webp-convert/src/Options/Options.php
CHANGED
@@ -168,9 +168,34 @@ class Options
|
|
168 |
}
|
169 |
}
|
170 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
171 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
172 |
|
173 |
-
/* POST-PONED till 2.7.0
|
174 |
public function getDefinitions($deprecatedToo = false)
|
175 |
{
|
176 |
$defs = [];
|
@@ -180,5 +205,5 @@ class Options
|
|
180 |
}
|
181 |
}
|
182 |
return $defs;
|
183 |
-
}
|
184 |
}
|
168 |
}
|
169 |
}
|
170 |
|
171 |
+
/**
|
172 |
+
* Set help texts on multiple options
|
173 |
+
*
|
174 |
+
* @param array $helpTexts Hash of helptexts indexed by option id
|
175 |
+
*/
|
176 |
+
public function setHelpTexts($helpTexts)
|
177 |
+
{
|
178 |
+
foreach ($this->options as $option) {
|
179 |
+
if (array_key_exists($option->getId(), $helpTexts)) {
|
180 |
+
$option->setHelpText($helpTexts[$option->getId()]);
|
181 |
+
}
|
182 |
+
}
|
183 |
+
}
|
184 |
|
185 |
+
/**
|
186 |
+
* Set ui definitions on multiple options
|
187 |
+
*
|
188 |
+
* @param array $uis Hash of ui definitions indexed by option id
|
189 |
+
*/
|
190 |
+
public function setUI($uis)
|
191 |
+
{
|
192 |
+
foreach ($this->options as $option) {
|
193 |
+
if (array_key_exists($option->getId(), $uis)) {
|
194 |
+
$option->setUI($uis[$option->getId()]);
|
195 |
+
}
|
196 |
+
}
|
197 |
+
}
|
198 |
|
|
|
199 |
public function getDefinitions($deprecatedToo = false)
|
200 |
{
|
201 |
$defs = [];
|
205 |
}
|
206 |
}
|
207 |
return $defs;
|
208 |
+
}
|
209 |
}
|
vendor/rosell-dk/webp-convert/src/Options/QualityOption.php
CHANGED
@@ -16,8 +16,8 @@ use WebPConvert\Options\Exceptions\InvalidOptionValueException;
|
|
16 |
*/
|
17 |
class QualityOption extends Option
|
18 |
{
|
19 |
-
protected $typeId = '
|
20 |
-
protected $
|
21 |
|
22 |
public function __construct($id, $defaultValue)
|
23 |
{
|
16 |
*/
|
17 |
class QualityOption extends Option
|
18 |
{
|
19 |
+
protected $typeId = 'int';
|
20 |
+
protected $schemaType = ['integer', 'string'];
|
21 |
|
22 |
public function __construct($id, $defaultValue)
|
23 |
{
|
vendor/rosell-dk/webp-convert/src/Options/SensitiveArrayOption.php
CHANGED
@@ -29,4 +29,11 @@ class SensitiveArrayOption extends ArrayOption
|
|
29 |
}
|
30 |
//return '*****';
|
31 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
}
|
29 |
}
|
30 |
//return '*****';
|
31 |
}
|
32 |
+
|
33 |
+
public function getDefinition()
|
34 |
+
{
|
35 |
+
$obj = parent::getDefinition();
|
36 |
+
$obj['sensitive'] = true;
|
37 |
+
return $obj;
|
38 |
+
}
|
39 |
}
|
vendor/rosell-dk/webp-convert/src/Options/SensitiveStringOption.php
CHANGED
@@ -15,9 +15,9 @@ use WebPConvert\Options\Exceptions\InvalidOptionValueException;
|
|
15 |
class SensitiveStringOption extends StringOption
|
16 |
{
|
17 |
|
18 |
-
public function __construct($id, $defaultValue, $
|
19 |
{
|
20 |
-
parent::__construct($id, $defaultValue, $
|
21 |
}
|
22 |
|
23 |
public function check()
|
@@ -32,4 +32,11 @@ class SensitiveStringOption extends StringOption
|
|
32 |
}
|
33 |
return '*****';
|
34 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
}
|
15 |
class SensitiveStringOption extends StringOption
|
16 |
{
|
17 |
|
18 |
+
public function __construct($id, $defaultValue, $enum = null)
|
19 |
{
|
20 |
+
parent::__construct($id, $defaultValue, $enum);
|
21 |
}
|
22 |
|
23 |
public function check()
|
32 |
}
|
33 |
return '*****';
|
34 |
}
|
35 |
+
|
36 |
+
public function getDefinition()
|
37 |
+
{
|
38 |
+
$obj = parent::getDefinition();
|
39 |
+
$obj['sensitive'] = true;
|
40 |
+
return $obj;
|
41 |
+
}
|
42 |
}
|
vendor/rosell-dk/webp-convert/src/Options/StringOption.php
CHANGED
@@ -16,12 +16,12 @@ class StringOption extends Option
|
|
16 |
{
|
17 |
|
18 |
protected $typeId = 'string';
|
19 |
-
protected $
|
20 |
-
protected $
|
21 |
|
22 |
-
public function __construct($id, $defaultValue, $
|
23 |
{
|
24 |
-
$this->
|
25 |
parent::__construct($id, $defaultValue);
|
26 |
}
|
27 |
|
@@ -29,10 +29,10 @@ class StringOption extends Option
|
|
29 |
{
|
30 |
$this->checkType('string');
|
31 |
|
32 |
-
if (!is_null($this->
|
33 |
throw new InvalidOptionValueException(
|
34 |
'"' . $this->id . '" option must be on of these values: ' .
|
35 |
-
'[' . implode(', ', $this->
|
36 |
'It was however set to: "' . $this->getValue() . '"'
|
37 |
);
|
38 |
}
|
@@ -42,4 +42,14 @@ class StringOption extends Option
|
|
42 |
{
|
43 |
return '"' . $this->getValue() . '"';
|
44 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
}
|
16 |
{
|
17 |
|
18 |
protected $typeId = 'string';
|
19 |
+
protected $enum;
|
20 |
+
protected $schemaType = ['string'];
|
21 |
|
22 |
+
public function __construct($id, $defaultValue, $enum = null)
|
23 |
{
|
24 |
+
$this->enum = $enum;
|
25 |
parent::__construct($id, $defaultValue);
|
26 |
}
|
27 |
|
29 |
{
|
30 |
$this->checkType('string');
|
31 |
|
32 |
+
if (!is_null($this->enum) && (!in_array($this->getValue(), $this->enum))) {
|
33 |
throw new InvalidOptionValueException(
|
34 |
'"' . $this->id . '" option must be on of these values: ' .
|
35 |
+
'[' . implode(', ', $this->enum) . ']. ' .
|
36 |
'It was however set to: "' . $this->getValue() . '"'
|
37 |
);
|
38 |
}
|
42 |
{
|
43 |
return '"' . $this->getValue() . '"';
|
44 |
}
|
45 |
+
|
46 |
+
public function getDefinition()
|
47 |
+
{
|
48 |
+
$obj = parent::getDefinition();
|
49 |
+
$obj['sensitive'] = false;
|
50 |
+
if (!is_null($this->enum)) {
|
51 |
+
$obj['options'] = $this->enum;
|
52 |
+
}
|
53 |
+
return $obj;
|
54 |
+
}
|
55 |
}
|
vendor/rosell-dk/webp-convert/src/WebPConvert.php
CHANGED
@@ -6,6 +6,7 @@ namespace WebPConvert;
|
|
6 |
use WebPConvert\Convert\Converters\Stack;
|
7 |
//use WebPConvert\Serve\ServeExistingOrHandOver;
|
8 |
use WebPConvert\Convert\ConverterFactory;
|
|
|
9 |
use WebPConvert\Serve\ServeConvertedWebP;
|
10 |
use WebPConvert\Serve\ServeConvertedWebPWithErrorHandling;
|
11 |
|
@@ -100,20 +101,75 @@ class WebPConvert
|
|
100 |
*
|
101 |
* @return array Array of options definitions - ready to be json encoded, or whatever
|
102 |
*/
|
103 |
-
/*
|
|
|
|
|
|
|
104 |
public static function getConverterOptionDefinitions(
|
105 |
$imageType = 'png',
|
106 |
$returnGeneral = true,
|
107 |
$returnGeneralSupport = true
|
108 |
) {
|
109 |
|
110 |
-
|
|
|
|
|
111 |
$result = [];
|
112 |
-
foreach ($ids as $id) {
|
113 |
-
$c = ConverterFactory::makeConverter($id, '', '');
|
114 |
-
$optionDefinitions = $c->getOptionDefinitions($imageType, $returnGeneral, $returnGeneralSupport);
|
115 |
|
116 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
117 |
}
|
118 |
return $result;
|
119 |
}*/
|
6 |
use WebPConvert\Convert\Converters\Stack;
|
7 |
//use WebPConvert\Serve\ServeExistingOrHandOver;
|
8 |
use WebPConvert\Convert\ConverterFactory;
|
9 |
+
use WebPConvert\Options\OptionFactory;
|
10 |
use WebPConvert\Serve\ServeConvertedWebP;
|
11 |
use WebPConvert\Serve\ServeConvertedWebPWithErrorHandling;
|
12 |
|
101 |
*
|
102 |
* @return array Array of options definitions - ready to be json encoded, or whatever
|
103 |
*/
|
104 |
+
/*
|
105 |
+
Commented out, as it is not ready for release yet
|
106 |
+
|
107 |
+
|
108 |
public static function getConverterOptionDefinitions(
|
109 |
$imageType = 'png',
|
110 |
$returnGeneral = true,
|
111 |
$returnGeneralSupport = true
|
112 |
) {
|
113 |
|
114 |
+
// TODO: Return converter too - even though it is no a "real" option
|
115 |
+
|
116 |
+
$converterIds = self::getConverterIds();
|
117 |
$result = [];
|
|
|
|
|
|
|
118 |
|
119 |
+
$ewww = ConverterFactory::makeConverter('ewww', '', '');
|
120 |
+
|
121 |
+
//$result['general'] = $ewww->getGeneralOptionDefinitions();
|
122 |
+
$result['general'] = $ewww->getGeneralOptionDefinitions();
|
123 |
+
$generalOptionHash = [];
|
124 |
+
$generalOptionIds = [];
|
125 |
+
foreach ($result['general'] as &$option) {
|
126 |
+
$generalOptionIds[] = $option['id'];
|
127 |
+
//$option['supportedBy'] = $converterIds; // we will remove the unsupported below
|
128 |
+
$option['unsupportedBy'] = [];
|
129 |
+
$generalOptionHash[$option['id']] = &$option;
|
130 |
+
}
|
131 |
+
//$result['general'] = $generalOptionIds;
|
132 |
+
array_unshift($result['general'], OptionFactory::createOption('converter', 'string', [
|
133 |
+
'title' => 'Converter',
|
134 |
+
'description' => 'Conversion method',
|
135 |
+
'description' => "Cwebp and vips are best. " .
|
136 |
+
'the *magick are nearly as good, but only recent versions supports near-lossless. ' .
|
137 |
+
'gd is poor, as it does not support any webp options. ' .
|
138 |
+
'For full discussion, check the guide',
|
139 |
+
'default' => 'cwebp', // TODO: set to best working
|
140 |
+
'enum' => $converterIds,
|
141 |
+
'ui' => [
|
142 |
+
'component' => 'select',
|
143 |
+
'links' => [
|
144 |
+
[
|
145 |
+
'Guide',
|
146 |
+
'https://github.com/rosell-dk/webp-convert/blob/master/docs/v1.3/converting/converters.md'
|
147 |
+
]
|
148 |
+
],
|
149 |
+
]
|
150 |
+
])->getDefinition());
|
151 |
+
|
152 |
+
|
153 |
+
//getUIForGeneralOptions
|
154 |
+
//$generalOption->addOptions(... $this->getGeneralOptions($imageType));
|
155 |
+
|
156 |
+
$supportedBy = [];
|
157 |
+
|
158 |
+
foreach ($converterIds as $converterId) {
|
159 |
+
$c = ConverterFactory::makeConverter($converterId, '', '');
|
160 |
+
|
161 |
+
//$supports = $generalOptionIds;
|
162 |
+
foreach ($c->getUnsupportedGeneralOptions() as $optionId) {
|
163 |
+
//$result['general']
|
164 |
+
//if ()$support[]
|
165 |
+
//unsupportedBy
|
166 |
+
$generalOptionHash[$optionId]['unsupportedBy'][] = $converterId;
|
167 |
+
}
|
168 |
+
|
169 |
+
|
170 |
+
//$optionDefinitions = $c->getOptionDefinitions($imageType, $returnGeneral, $returnGeneralSupport);
|
171 |
+
$optionDefinitions = $c->getUniqueOptionDefinitions($imageType);
|
172 |
+
$result[$converterId] = $optionDefinitions;
|
173 |
}
|
174 |
return $result;
|
175 |
}*/
|
webp-express.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Plugin Name: WebP Express
|
4 |
* Plugin URI: https://github.com/rosell-dk/webp-express
|
5 |
* Description: Serve autogenerated WebP images instead of jpeg/png to browsers that supports WebP. Works on anything (media library images, galleries, theme images etc).
|
6 |
-
* Version: 0.
|
7 |
* Author: Bjørn Rosell
|
8 |
* Author URI: https://www.bitwise-it.dk
|
9 |
* License: GPL2
|
3 |
* Plugin Name: WebP Express
|
4 |
* Plugin URI: https://github.com/rosell-dk/webp-express
|
5 |
* Description: Serve autogenerated WebP images instead of jpeg/png to browsers that supports WebP. Works on anything (media library images, galleries, theme images etc).
|
6 |
+
* Version: 0.21.0
|
7 |
* Author: Bjørn Rosell
|
8 |
* Author URI: https://www.bitwise-it.dk
|
9 |
* License: GPL2
|