diff --git a/.github/workflows/auto-pr.yml b/.github/workflows/auto-pr.yml
index d4cd30c876..533fbb878e 100644
--- a/.github/workflows/auto-pr.yml
+++ b/.github/workflows/auto-pr.yml
@@ -1,10 +1,10 @@
-name: Merge branch dev with rel-4.4
+name: Merge branch dev with rel-5.0
on:
push:
branches:
- - rel-4.4
+ - rel-5.0
jobs:
- merge-dev-with-rel-4-4:
+ merge-dev-with-rel-5-0:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
@@ -12,13 +12,13 @@ jobs:
ref: dev
- name: Reset promotion branch
run: |
- git fetch origin rel-4.4:rel-4.4
- git reset --hard rel-4.4
+ git fetch origin rel-5.0:rel-5.0
+ git reset --hard rel-5.0
- name: Create Pull Request
uses: peter-evans/create-pull-request@v3
with:
- branch: auto-merge/rel-4-4/${{github.run_number}}
- title: Merge branch dev with rel-4.4
- body: This PR generated automatically to merge dev with rel-4.4. Please review the changed files before merging to prevent any errors that may occur.
+ branch: auto-merge/rel-5-0/${{github.run_number}}
+ title: Merge branch dev with rel-5.0
+ body: This PR generated automatically to merge dev with rel-5.0. Please review the changed files before merging to prevent any errors that may occur.
reviewers: ${{github.actor}}
token: ${{ github.token }}
diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json
index 9410a7813f..923535cfdd 100644
--- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json
+++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json
@@ -346,9 +346,12 @@
"Volo.AbpIo.Commercial:030002": "Once activated, trial license cannot be set to requested!",
"Volo.AbpIo.Commercial:030003": "There is no such status!",
"Volo.AbpIo.Commercial:030004": "Status could not be changed due to an unexpected error!",
- "Volo.AbpIo.Commercial:030005": "Start date and end date cannot be given when the trial license is in the requested state!",
+ "Volo.AbpIo.Commercial:030005": "Start and end date can be updated when the trial license is in the -activated- status!",
"Volo.AbpIo.Commercial:030006": "End date must always be greater than start date!",
"Volo.AbpIo.Commercial:030007": "This trial license has already been activated once!",
"Volo.AbpIo.Commercial:030008": "Purchase date can be set only when status is Purchased!",
+ "Volo.AbpIo.Commercial:030009": "User not found!",
+ "Volo.AbpIo.Commercial:030010": "To purchase the trial license, first you need to activate your trial license!",
+ "Volo.AbpIo.Commercial:030011": "You cannot delete a trial license when it is purchased!"
}
}
diff --git a/common.props b/common.props
index ea1df61a0f..753259efb2 100644
--- a/common.props
+++ b/common.props
@@ -1,7 +1,7 @@
latest
- 5.0.0
+ 5.0.0-beta.1
$(NoWarn);CS1591;CS0436
https://abp.io/assets/abp_nupkg.png
https://abp.io/
diff --git a/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/POST.md b/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/POST.md
new file mode 100644
index 0000000000..14d23f61fc
--- /dev/null
+++ b/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/POST.md
@@ -0,0 +1,285 @@
+# ABP Platform 5.0 Beta 1 Has Been Released
+
+Today, we are excited to release the [ABP Framework](https://abp.io/) and the [ABP Commercial](https://commercial.abp.io/) version **5.0 Beta 1**. This blog post introduces the new features and important changes in this new version.
+
+> **The planned release date for the [5.0.0 Release Candidate](https://github.com/abpframework/abp/milestone/51) version is November, 2021**.
+
+Please try the beta 1 version and provide feedback for a more stable ABP version 5.0! Thank you all.
+
+## Get Started with the 5.0 Beta 1
+
+follow the steps below to try the version 5.0.0 beta 1 today;
+
+1) **Upgrade** the ABP CLI to the version `5.0.0-beta.1` using a command line terminal:
+
+````bash
+dotnet tool update Volo.Abp.Cli -g --version 5.0.0-beta.1
+````
+
+**or install** if you haven't installed before:
+
+````bash
+dotnet tool install Volo.Abp.Cli -g --version 5.0.0-beta.1
+````
+
+2) Create a **new application** with the `--preview` option:
+
+````bash
+abp new BookStore --preview
+````
+
+See the [ABP CLI documentation](https://docs.abp.io/en/abp/latest/CLI) for all the available options.
+
+> You can also use the *Direct Download* tab on the [Get Started](https://abp.io/get-started) page by selecting the **Preview checkbox**.
+
+### Visual Studio Upgrade
+
+As .NET 6 is a preview version you need to make changes on your current Visual Studio. If you want to run a .NET 6 project on Visual Studio 2019, you need to enable the `Use Previews of the .NET SDK` option from Visual Studio 2019 options. See the screenshot:
+
+
+
+Alternatively you can download the latest Visual Studio 2022 preview to run/create the .NET 6 projects. We have tested the ABP solution with the Visual Studio 2022 `17.0.0 Preview 4.1`. Check out https://visualstudio.microsoft.com/vs/preview/ for more information.
+
+### Migration Notes & Breaking Changes
+
+This is a major version and there are some breaking changes and upgrade steps. Here, a list of important breaking changes in this version:
+
+* Upgraded to .NET 6.0-rc.1, so you need to move your solution to .NET 6.0 if you want to use the ABP 5.0.
+* `IRepository` doesn't inherit from `IQueryable` anymore. It was already made obsolete in 4.2.
+* Removed NGXS and states from the Angular UI.
+* Removed gulp dependency from the MVC / Razor Pages UI in favor of `abp install-libs` command of ABP CLI.
+
+Please see the [migration document](https://docs.abp.io/en/abp/5.0/Migration-Guides/Abp-5_0) for all the details. You can also see all [the closed issues and pull request](https://github.com/abpframework/abp/releases/tag/5.0.0-beta.1) on GitHub.
+
+## What's new with Beta 1?
+
+In this section, I will introduce some major features released with beta 1.
+
+### Static (Generated) Client Proxies for C# and JavaScript
+
+Dynamic C# ([see](https://docs.abp.io/en/abp/latest/API/Dynamic-CSharp-API-Clients)) and JavaScript ([see](https://docs.abp.io/en/abp/latest/UI/AspNetCore/Dynamic-JavaScript-Proxies)) client proxy system is one of the most loved features of the ABP Framework. It generates the proxy code on runtime and makes client-to-server calls a breeze. With ABP 5.0, we are providing an alternative approach: You can generate the client proxy code on development-time.
+
+Development-time client proxy generation has a performance advantage since it doesn't need to obtain the HTTP API definition on runtime. It also makes it easier to consume a (micro)service behind an API Gateway. With dynamic proxies, we should return a combined HTTP API definition from the API Gateway and need to add HTTP API layers of the microservices to the gateway. Static proxies removes this requirement. One disadvantage is that you should re-generate the client proxy code whenever you change your API endpoint definition. Yes, software development always has tradeoffs :)
+
+Working with static client proxy generation is simple with the ABP CLI. You first need to run the server application, open a command-line terminal, locate to the root folder of your client application, then run the `generate-proxy` command of the ABP CLI.
+
+#### Creating C# client proxies
+
+C# client proxies are useful to consume APIs from Blazor WebAssembly applications. It is also useful for microservice to microservice HTTP API calls. Notice that the client application need to have a reference to the application service contracts (typically, the `.Application.Contracts` project in your solution) in order to consume the services.
+
+**Example usage:**
+
+````bash
+abp generate-proxy -t csharp -u https://localhost:44305
+````
+
+`-t` indicates the client type, C# here. `-u` is the URL of the server application. It creates the proxies for the application (the app module) by default. You can specify the module name as `-m ` if you are building a modular system. The following figure shows the generated files:
+
+
+
+Once the proxies are generated, you can inject and use the application service interfaces of these proxies, like `IProductAppService` in this example. Usage is same of the [dynamic C# client proxies](https://docs.abp.io/en/abp/latest/API/Dynamic-CSharp-API-Clients).
+
+#### Creating JavaScript client proxies
+
+JavaScript proxies are useful to consume APIs from MVC / Razor Pages UI. It works on JQuery AJAX API, just like the [dynamic JavaScript proxies](https://docs.abp.io/en/abp/latest/UI/AspNetCore/Dynamic-JavaScript-Proxies).
+
+**Example usage:**
+
+````bash
+abp generate-proxy -t js -u https://localhost:44305
+````
+
+The following figure shows the generated file:
+
+
+
+Then you can consume the server-side APIs from your JavaScript code just like the [dynamic JavaScript proxies](https://docs.abp.io/en/abp/latest/UI/AspNetCore/Dynamic-JavaScript-Proxies).
+
+#### Creating Angular client proxies
+
+Angular developers knows that the generate-proxy command was already available in ABP's previous versions to create client-side proxy services in the Angular UI. The same functionality continues to be available and already [documented here](https://docs.abp.io/en/abp/latest/UI/Angular/Service-Proxies).
+
+**Example usage:**
+
+````bash
+abp generate-proxy -t ng -u https://localhost:44305
+````
+
+### Transactional Outbox & Inbox for the Distributed Event Bus
+
+This was one of the most awaited features by distributed software developers.
+
+The [transactional outbox pattern](https://microservices.io/patterns/data/transactional-outbox.html) is used to publishing distributed events within the same transaction that manipulates the application database. Distributed events are saved into the database inside the same transaction with your data changes, then sent to the message broker (like RabbitMQ or Kafka) by a separate background worker with a re-try system. In this way, it ensures the consistency between your database state and the published events.
+
+The transactional inbox pattern, on the other hand, saves incoming events into database first, then executes the event handler in a transactional manner and removes the event from the inbox queue in the same transaction. It also ensures that the event is only executed one time by keeping the processed messages for a while and discarding the duplicate events received from the message broker.
+
+Enabling the inbox and outbox patterns requires a few manual steps for your application. We've created a simple [console application example](https://github.com/abpframework/abp/tree/dev/test/DistEvents), but I will also explain all the steps here.
+
+#### Pre-requirements
+
+First of all, you need to have EF Core or MongoDB installed into your solution. It should be already installed if you'd created a solution from the ABP startup template.
+
+#### Install the package
+
+Install the new [Volo.Abp.EventBus.Boxes](https://www.nuget.org/packages/Volo.Abp.EventBus.Boxes) NuGet package to your database layer (to `EntityFrameworkCore` or `MongoDB` project) or to the host application. Open a command-line terminal at the root directory of your database (or host) project and execute the following command:
+
+````csharp
+abp add-package Volo.Abp.EventBus.Boxes
+````
+
+This will install the package and setup the ABP module dependency.
+
+#### Configure the DbContext
+
+Open your `DbContext` class, implement the `IHasEventInbox` and the `IHasEventOutbox` interfaces. You should end up by adding two `DbSet` properties into your `DbContext` class:
+
+````csharp
+public DbSet IncomingEvents { get; set; }
+public DbSet OutgoingEvents { get; set; }
+````
+
+Add the following lines inside the `OnModelCreating` method of your `DbContext` class:
+
+````csharp
+builder.ConfigureEventInbox();
+builder.ConfigureEventOutbox();
+````
+
+It is similar for MongoDB; implement the `IHasEventInbox` and the `IHasEventOutbox` interfaces. There is no `Configure...` method for MongoDB.
+
+Now, we've added inbox/outbox related tables to our database schema. Now, for EF Core, use the standard `Add-Migration` and `Update-Database` commands to apply changes into your database (you can skip this step for MongoDB). If you want to use the command-line terminal, run the following commands in the root directory of the database integration project:
+
+````bash
+dotnet ef migrations add "Added_Event_Boxes"
+dotnet ef database update
+````
+
+#### Configure the distributed event bus options
+
+As the last step, write the following configuration code inside the `ConfigureServices` method of your module class:
+
+````csharp
+Configure(options =>
+{
+ options.Outboxes.Configure(config =>
+ {
+ config.UseDbContext();
+ });
+
+ options.Inboxes.Configure(config =>
+ {
+ config.UseDbContext();
+ });
+});
+````
+
+Replace `YourDbContext` with your `DbContext` class.
+
+That's all. You can continue to publishing and consuming events just as before. See the [distributed event bus documentation](https://docs.abp.io/en/abp/latest/Distributed-Event-Bus) if you don't know how to use it.
+
+### Publishing events in transaction
+
+The previous feature (outbox & inbox) solves the transactional event publishing problem for distributed systems. This feature, publishing events in transaction, solves the problem of executing event handlers in the same transaction that the events are published in for non-distributed applications. With 5.0, all events (local or distributed) are handled in the same transaction. If any handler fails, the transaction is rolled back. If you don't want that, you should use try/catch and ignore the exception inside your event handler.
+
+Remember that if you don't install a real distributed event provider (like [RabbitMQ](https://docs.abp.io/en/abp/latest/Distributed-Event-Bus-RabbitMQ-Integration) or [Kafka](https://docs.abp.io/en/abp/latest/Distributed-Event-Bus-Kafka-Integration)), the [distributed events](https://docs.abp.io/en/abp/latest/Distributed-Event-Bus) are actually executed in-process, just like the [local events](https://docs.abp.io/en/abp/latest/Local-Event-Bus). So, with this development, all the events become transactional, even if your system is distributed or not.
+
+No action needed to take. It will just work by default. There is a [deprecation note](https://github.com/abpframework/abp/issues/9897) related to this change (some pre-defined events [will be removed](https://github.com/abpframework/abp/issues/9908) in the next major version since they are not needed anymore)
+
+### Inactivating a user
+
+The [Identity module](https://docs.abp.io/en/abp/latest/Modules/Identity) has a new feature to make a user active or inactive. Inactive users can not login to the system. In this way, you can disable a user account without deleting it. An *Active* checkbox is added to the user create/edit dialog to control it on the UI:
+
+
+
+EF Core developers should add a new database migration since this brings a new field to the `AbpUsers` table.
+
+### Overriding email settings per tenant
+
+If you're building a multi-tenant application, it is now possible to override email sending settings per tenant. To make this possible, you should first enable that [feature](https://docs.abp.io/en/abp/latest/Features) to the tenant you want, by clicking the *Actions -> Features* for the tenant.
+
+
+
+Enable the feature using the checkbox as shown in the following modal:
+
+
+
+Then the tenant admin can open the email settings page under the Administration -> Settings menu (on development environment, logout, switch to the tenant and re-login with the tenant admin):
+
+
+
+### Hangfire dashboard permission
+
+ABP allows to use Hangfire as the background job manager when you install the integration package [as documented](https://docs.abp.io/en/abp/5.0/Background-Jobs-Hangfire). Hangfire's dashboard is used to monitor and control the background job queues. Here, a screenshot from the dashboard:
+
+
+
+Hangfire's dashboard is not authorized by default, so any user can navigate to the `/hangfire` URL and see/control the jobs. With the ABP version 5.0, we've added a built-in authorization implementation for the Hangfire dashboard. Instead of `app.UseHangfireDashboard();`, you can use the following middleware configuration:
+
+````csharp
+app.UseHangfireDashboard("/hangfire", new DashboardOptions
+{
+ AsyncAuthorization = new[] { new AbpHangfireAuthorizationFilter() }
+});
+````
+
+In this way, only the authenticated users can see the dashboard. However, we suggest to set a permission name, so only the users with that permission can see the dashboard:
+
+````csharp
+app.UseHangfireDashboard("/hangfire", new DashboardOptions
+{
+ AsyncAuthorization = new[] {
+ new AbpHangfireAuthorizationFilter("MyPermissionName")
+ }
+});
+````
+
+You can define the permission (`MyPermissionName` in this example) using the standard [permission system](https://docs.abp.io/en/abp/5.0/Authorization#permission-system).
+
+### Introducing AbpControllerBase
+
+ABP provides an `AbpController` class that you can inherit your MVC controllers from. It provides some pre-injected services to simplify your controllers. With v5.0, we are adding a second base controller class, `AbpControllerBase`, which is more proper to create API controllers (without view features). It is suggested to inherit from the `AbpControllerBase` class to create API controllers, instead of the `AbpController` class.
+
+**Example:**
+
+````csharp
+[Route("api/products")]
+public class ProductController : AbpControllerBase
+{
+ // TODO: ...
+}
+````
+
+## Ongoing Works & Next Release
+
+We'd published important features and changes with this beta 1 release. However, there are still some major works in development. The most important work is the **Bootstrap 5 upgrade**. ABP 5.0 will work on Bootstrap 5, which is an important change for existing applications. We suggest to prepare for this change from now.
+
+The next release will be 5.0.0-beta.2. It will include the Bootstrap 5 upgrade. We don't plan make another big work for the version 5.0. After the beta.2, we will work on tests, feedbacks and documentation to prepare a stable final release.
+
+## Community News
+
+### ABP was on ASP.NET Community Startup!
+
+It was great for us to be invited to Microsoft's [ASP.NET Community Weekly Standup](https://dotnet.microsoft.com/live/community-standup) show, at September 28. There was a very high attention and that made us very happy. Thanks to the ABP Community and all the watchers :) If you've missed the talk, [you can watch it here](https://www.youtube.com/watch?v=vMWM-_ihjwM).
+
+### Upcoming ABP Book!
+
+I am currently authoring the first official book for the ABP Framework and it is on [pre-sale on Amazon](https://www.amazon.com/Mastering-ABP-Framework-maintainable-implementing-dp-1801079242/dp/1801079242) now.
+
+
+
+This books is a complete guide to start working with the ABP Framework, explore the ABP features and concepts. It also contains chapters for DDD, modular application development and multi-tenancy to learn and practically work with the ABP architecture to build maintainable software solutions and create SaaS applications. The book will be based on ABP 5.0 and published in the beginning of 2022. You can [pre-order now](https://www.amazon.com/Mastering-ABP-Framework-maintainable-implementing-dp-1801079242/dp/1801079242)!
+
+### New ABP Community posts
+
+Here, the latest posts added to the [ABP community](https://community.abp.io/):
+
+* [Deploy ABP Framework .NET Core tiered application to docker swarm](https://community.abp.io/articles/deploy-abp-framework-dotnet-core-tiered-app-to-docker-swarm-kcrjbjec)
+* [How to override localization strings of depending modules](https://community.abp.io/articles/how-to-override-localization-strings-of-depending-modules-ba1oy03l)
+* [Centralized logging for .NET Core ABP microservices application using Seq](https://community.abp.io/articles/centralized-logging-for-.net-core-abp-microservices-app-using-seq-g1xe7e7y)
+* [Extend Tenant management and add custom host to your ABP application](https://community.abp.io/articles/extend-tenant-management-and-add-custom-host-to-your-abp-app-lwmi9lr5)
+
+Thanks to the ABP Community for all the contents they have published. You can also post your ABP and .NET related (text or video) contents to the ABP Community.
+
+## Conclusion
+
+The ABP version 5.0 is coming with important changes (like .NET 6 and Bootstrap 5) and features. In this blog post, I summarized the news about that new version. Please try it and provide feedback by opening issues on [the GitHub repository](https://github.com/abpframework/abp). Thank you all!
diff --git a/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/abp-book-cover.png b/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/abp-book-cover.png
new file mode 100644
index 0000000000..bfd2c54599
Binary files /dev/null and b/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/abp-book-cover.png differ
diff --git a/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/csharp-proxies.png b/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/csharp-proxies.png
new file mode 100644
index 0000000000..1805b5238e
Binary files /dev/null and b/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/csharp-proxies.png differ
diff --git a/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/email-settings.png b/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/email-settings.png
new file mode 100644
index 0000000000..438696e170
Binary files /dev/null and b/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/email-settings.png differ
diff --git a/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/enable-email-tenant.png b/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/enable-email-tenant.png
new file mode 100644
index 0000000000..90e747cc76
Binary files /dev/null and b/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/enable-email-tenant.png differ
diff --git a/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/hangfire-dashboard.png b/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/hangfire-dashboard.png
new file mode 100644
index 0000000000..a7df71a3e3
Binary files /dev/null and b/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/hangfire-dashboard.png differ
diff --git a/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/js-proxies.png b/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/js-proxies.png
new file mode 100644
index 0000000000..4cc9e41308
Binary files /dev/null and b/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/js-proxies.png differ
diff --git a/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/tenant-features.png b/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/tenant-features.png
new file mode 100644
index 0000000000..8146f45992
Binary files /dev/null and b/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/tenant-features.png differ
diff --git a/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/use-preview-visual-studio.png b/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/use-preview-visual-studio.png
new file mode 100644
index 0000000000..317cf1d209
Binary files /dev/null and b/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/use-preview-visual-studio.png differ
diff --git a/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/user-active.png b/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/user-active.png
new file mode 100644
index 0000000000..07cb5c7dca
Binary files /dev/null and b/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/user-active.png differ
diff --git a/docs/en/Migration-Guides/Abp-5_0.md b/docs/en/Migration-Guides/Abp-5_0.md
index a41a794ed6..2dc880be3b 100644
--- a/docs/en/Migration-Guides/Abp-5_0.md
+++ b/docs/en/Migration-Guides/Abp-5_0.md
@@ -2,9 +2,12 @@
## IdentityUser
-We added an `IsActive(bool)` property to `IdentityUser` to [control whether it is available](https://github.com/abpframework/abp/pull/10185). **Please set it to `true` of the old user after the upgrade.**
+`IsActive ` property is added to the `IdentityUser`. This flag will be checked during the authentication of the users. See the related [PR](https://github.com/abpframework/abp/pull/10185).
+**After the migration, set this property to `true` for the existing users: `UPDATE AbpUsers SET IsActive=1`**
+
+For EFCore you can set `defaultValue` to `true` in the migration class:
+(This will add the column with `true` value for the existing records.)
-For EF Core you can change `defaultValue` to `true` in the migration class:
```cs
public partial class AddIsActiveToIdentityUser : Migration
{
@@ -27,16 +30,22 @@ public partial class AddIsActiveToIdentityUser : Migration
}
```
-
+For document base databases like MongoDB, you need to manually update the `IsActive` field for the existing user records.
+
## MongoDB
-ABP Framework will serialize the datetime based on [AbpClockOptions](https://docs.abp.io/en/abp/latest/Timing#clock-options) start from 5.0, before `DateTime` values in MongoDB are [always saved as UTC](https://mongodb.github.io/mongo-csharp-driver/2.13/reference/bson/mapping/#datetime-serialization-options).
+ABP Framework will serialize the datetime based on [AbpClockOptions](https://docs.abp.io/en/abp/latest/Timing#clock-options) starting from ABP v5.0. It was saving `DateTime` values as UTC in MongoDB. Check out [MongoDB Datetime Serialization Options](https://mongodb.github.io/mongo-csharp-driver/2.13/reference/bson/mapping/#datetime-serialization-options).
+
+To revert back this feature, set `UseAbpClockHandleDateTime = false` in `AbpMongoDbOptions`:
-You can disable this behavior by configure `AbpMongoDbOptions`.
```cs
services.Configure(x => x.UseAbpClockHandleDateTime = false);
```
+## IApiScopeRepository
+
+`GetByNameAsync` method renamed as `FindByNameAsync`.
+
## Angular UI
-See the [Angular UI Migration Guide](Abp-5_0-Angular.md).
+See the [Angular UI 5.0 Migration Guide](Abp-5_0-Angular.md).
diff --git a/docs/en/Modules/Cms-Kit/Index.md b/docs/en/Modules/Cms-Kit/Index.md
index eb08a0c53c..4c422b0bf3 100644
--- a/docs/en/Modules/Cms-Kit/Index.md
+++ b/docs/en/Modules/Cms-Kit/Index.md
@@ -20,11 +20,16 @@ All features are individually usable. If you disable a feature, it completely di
## How to Install
+> This module is depends on [BlobStoring](../../Blob-Storing.md) module, please install `BlobStoring` module first and add a provider. For more information, check the [documentation](../../Blob-Storing.md).
+
[ABP CLI](../../CLI.md) allows installing a module to a solution using the `add-module` command. You can install the CMS Kit module in a command-line terminal with the following command:
```bash
abp add-module Volo.CmsKit
```
+
+> By default, Cms-Kit is disabled by `GlobalFeature`. Because of that the initial migration will be empty. So you can skip the migration by adding `--skip-db-migrations` to command when installing if you are using Entity Framework Core. After enabling Cms-Kit global feture, please add new migration.
+
After the installation process, open the `GlobalFeatureConfigurator` class in the `Domain.Shared` project of your solution and place the following code into the `Configure` method to enable all the features in the CMS Kit module.
```csharp
diff --git a/docs/en/SignalR-Integration.md b/docs/en/SignalR-Integration.md
index 7ebf4f6539..35f109b8e6 100644
--- a/docs/en/SignalR-Integration.md
+++ b/docs/en/SignalR-Integration.md
@@ -52,15 +52,15 @@ Client side installation depends on your UI framework / client type.
Run the following command in the root folder of your web project:
-````bash
+```bash
yarn add @abp/signalr
-````
+```
> This requires to [install yarn](https://yarnpkg.com/) if you haven't install before.
This will add the `@abp/signalr` to the dependencies in the `package.json` of your project:
-````json
+```json
{
...
"dependencies": {
@@ -68,25 +68,25 @@ This will add the `@abp/signalr` to the dependencies in the `package.json` of yo
"@abp/signalr": "~2.7.0"
}
}
-````
+```
Run the following [ABP CLI](CLI.md) command in the root folder of your web project:
-````bash
+```bash
abp install-libs
-````
+```
This will copy the SignalR JavaScript files into your project:

-Finally, add the following code to your page/view to include the `signalr.js` file
+Finally, add the following code to your page/view to include the `signalr.js` file
-````xml
+```xml
@section scripts {
}
-````
+```
It requires to add `@using Volo.Abp.AspNetCore.Mvc.UI.Packages.SignalR` to your page/view.
@@ -108,27 +108,27 @@ ABP automatically registers all the hubs to the [dependency injection](Dependenc
Example:
-````csharp
+```csharp
public class MessagingHub : Hub
{
//...
}
-````
+```
The hub route will be `/signalr-hubs/messaging` for the `MessagingHub`:
-* Adding a standard `/signalr-hubs/` prefix
-* Continue with the **camel case** hub name, without the `Hub` suffix.
+- Adding a standard `/signalr-hubs/` prefix
+- Continue with the **kebab-case** hub name, without the `Hub` suffix.
If you want to specify the route, you can use the `HubRoute` attribute:
-````csharp
+```csharp
[HubRoute("/my-messaging-hub")]
public class MessagingHub : Hub
{
//...
}
-````
+```
### AbpHub Base Classes
@@ -136,7 +136,7 @@ Instead of the standard `Hub` and `Hub` classes, you can inherit from the `Ab
Example:
-````csharp
+```csharp
public class MessagingHub : AbpHub
{
public async Task SendMessage(string targetUserName, string message)
@@ -145,7 +145,7 @@ public class MessagingHub : AbpHub
var txt = L["MyText"]; //Localization
}
}
-````
+```
> While you could inject the same properties into your hub constructor, this way simplifies your hub class.
@@ -153,9 +153,9 @@ public class MessagingHub : AbpHub
ABP automatically registers all the hubs to the [dependency injection](Dependency-Injection.md) as a **transient service**. If you want to **disable auto dependency injection** registration for your hub class, just add a `DisableConventionalRegistration` attribute. You can still register your hub class to dependency injection in the `ConfigureServices` method of your module if you like:
-````csharp
+```csharp
context.Services.AddTransient();
-````
+```
When **you or ABP** register the class to the dependency injection, it is automatically mapped to the endpoint route configuration just as described in the previous sections. You can use `DisableAutoHubMap` attribute if you want to manually map your hub class.
@@ -163,7 +163,7 @@ For manual mapping, you have two options:
1. Use the `AbpSignalROptions` to add your map configuration (in the `ConfigureServices` method of your [module](Module-Development-Basics.md)), so ABP still performs the endpoint mapping for your hub:
-````csharp
+```csharp
Configure(options =>
{
options.Hubs.Add(
@@ -178,13 +178,13 @@ Configure(options =>
)
);
});
-````
+```
This is a good way to provide additional SignalR options.
If you don't want to disable auto hub map, but still want to perform additional SignalR configuration, use the `options.Hubs.AddOrUpdate(...)` method:
-````csharp
+```csharp
Configure(options =>
{
options.Hubs.AddOrUpdate(
@@ -200,13 +200,13 @@ Configure(options =>
}
);
});
-````
+```
This is the way you can modify the options of a hub class defined in a depended module (where you don't have the source code access).
2. Change `app.UseConfiguredEndpoints` in the `OnApplicationInitialization` method of your [module](Module-Development-Basics.md) as shown below (added a lambda method as the parameter).
-````csharp
+```csharp
app.UseConfiguredEndpoints(endpoints =>
{
endpoints.MapHub("/my-messaging-hub", options =>
@@ -214,7 +214,7 @@ app.UseConfiguredEndpoints(endpoints =>
options.LongPolling.PollTimeout = TimeSpan.FromSeconds(30);
});
});
-````
+```
### UserIdProvider
@@ -234,5 +234,5 @@ Refer to the Microsoft's documentation to [host and scale](https://docs.microsof
## See Also
-* [Microsoft SignalR documentation](https://docs.microsoft.com/en-us/aspnet/core/signalr/introduction)
-* [Real-Time Messaging In A Distributed Architecture Using ABP, SingalR & RabbitMQ](https://volosoft.com/blog/RealTime-Messaging-Distributed-Architecture-Abp-SingalR-RabbitMQ)
+- [Microsoft SignalR documentation](https://docs.microsoft.com/en-us/aspnet/core/signalr/introduction)
+- [Real-Time Messaging In A Distributed Architecture Using ABP, SingalR & RabbitMQ](https://volosoft.com/blog/RealTime-Messaging-Distributed-Architecture-Abp-SingalR-RabbitMQ)
diff --git a/framework/src/Volo.Abp.BlazoriseUI/Components/ToolbarButton.razor b/framework/src/Volo.Abp.BlazoriseUI/Components/ToolbarButton.razor
index 0cd13de50d..4d6ca27595 100644
--- a/framework/src/Volo.Abp.BlazoriseUI/Components/ToolbarButton.razor
+++ b/framework/src/Volo.Abp.BlazoriseUI/Components/ToolbarButton.razor
@@ -1,7 +1,7 @@
@if (Icon != null)
{
-
+
}
@Text
diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/ReflectionHelper.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/ReflectionHelper.cs
index 132c198aa9..e0b999ac3d 100644
--- a/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/ReflectionHelper.cs
+++ b/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/ReflectionHelper.cs
@@ -134,7 +134,7 @@ namespace Volo.Abp.Reflection
var currentType = objectType;
var objectPath = currentType.FullName;
var absolutePropertyPath = propertyPath;
- if (objectPath != null && absolutePropertyPath.StartsWith(objectPath))
+ if (objectPath != null && absolutePropertyPath.StartsWith(objectPath))
{
absolutePropertyPath = absolutePropertyPath.Replace(objectPath + ".", "");
}
@@ -144,7 +144,10 @@ namespace Volo.Abp.Reflection
var property = currentType.GetProperty(propertyName);
if (property != null)
{
- value = property.GetValue(value, null);
+ if (value != null)
+ {
+ value = property.GetValue(value, null);
+ }
currentType = property.PropertyType;
}
else
diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.PostgreSql/Volo.Abp.EntityFrameworkCore.PostgreSql.csproj b/framework/src/Volo.Abp.EntityFrameworkCore.PostgreSql/Volo.Abp.EntityFrameworkCore.PostgreSql.csproj
index 5704a8a2c0..9acb67c7ea 100644
--- a/framework/src/Volo.Abp.EntityFrameworkCore.PostgreSql/Volo.Abp.EntityFrameworkCore.PostgreSql.csproj
+++ b/framework/src/Volo.Abp.EntityFrameworkCore.PostgreSql/Volo.Abp.EntityFrameworkCore.PostgreSql.csproj
@@ -19,7 +19,7 @@
-
+
diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/AbpHttpClientProxyingOptions.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/AbpHttpClientProxyingOptions.cs
new file mode 100644
index 0000000000..87ee7de37c
--- /dev/null
+++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/AbpHttpClientProxyingOptions.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+
+namespace Volo.Abp.Http.Client.ClientProxying
+{
+ public class AbpHttpClientProxyingOptions
+ {
+ public Dictionary QueryStringConverts { get; set; }
+
+ public Dictionary FormDataConverts { get; set; }
+
+ public AbpHttpClientProxyingOptions()
+ {
+ QueryStringConverts = new Dictionary();
+ FormDataConverts = new Dictionary();
+ }
+ }
+}
diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyBase.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyBase.cs
index 5254b10238..9b47208141 100644
--- a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyBase.cs
+++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyBase.cs
@@ -28,15 +28,15 @@ namespace Volo.Abp.Http.Client.ClientProxying
protected IClientProxyApiDescriptionFinder ClientProxyApiDescriptionFinder => LazyServiceProvider.LazyGetRequiredService();
protected ICancellationTokenProvider CancellationTokenProvider => LazyServiceProvider.LazyGetRequiredService();
protected ICorrelationIdProvider CorrelationIdProvider => LazyServiceProvider.LazyGetRequiredService();
- protected ICurrentTenant CurrentTenant => LazyServiceProvider.LazyGetRequiredService();
- protected IOptions AbpCorrelationIdOptions => LazyServiceProvider.LazyGetRequiredService>();
- protected IProxyHttpClientFactory HttpClientFactory => LazyServiceProvider.LazyGetRequiredService();
- protected IRemoteServiceConfigurationProvider RemoteServiceConfigurationProvider => LazyServiceProvider.LazyGetRequiredService();
- protected IOptions ClientOptions => LazyServiceProvider.LazyGetRequiredService>();
- protected IJsonSerializer JsonSerializer => LazyServiceProvider.LazyGetRequiredService();
- protected IRemoteServiceHttpClientAuthenticator ClientAuthenticator => LazyServiceProvider.LazyGetRequiredService();
- protected ClientProxyRequestPayloadBuilder ClientProxyRequestPayloadBuilder => LazyServiceProvider.LazyGetRequiredService();
- protected ClientProxyUrlBuilder ClientProxyUrlBuilder => LazyServiceProvider.LazyGetRequiredService();
+ protected ICurrentTenant CurrentTenant => LazyServiceProvider.LazyGetRequiredService();
+ protected IOptions AbpCorrelationIdOptions => LazyServiceProvider.LazyGetRequiredService>();
+ protected IProxyHttpClientFactory HttpClientFactory => LazyServiceProvider.LazyGetRequiredService();
+ protected IRemoteServiceConfigurationProvider RemoteServiceConfigurationProvider => LazyServiceProvider.LazyGetRequiredService();
+ protected IOptions ClientOptions => LazyServiceProvider.LazyGetRequiredService>();
+ protected IJsonSerializer JsonSerializer => LazyServiceProvider.LazyGetRequiredService();
+ protected IRemoteServiceHttpClientAuthenticator ClientAuthenticator => LazyServiceProvider.LazyGetRequiredService();
+ protected ClientProxyRequestPayloadBuilder ClientProxyRequestPayloadBuilder => LazyServiceProvider.LazyGetRequiredService();
+ protected ClientProxyUrlBuilder ClientProxyUrlBuilder => LazyServiceProvider.LazyGetRequiredService();
protected virtual async Task RequestAsync(string methodName, ClientProxyRequestTypeValue arguments = null)
{
@@ -114,7 +114,7 @@ namespace Volo.Abp.Http.Client.ClientProxying
var requestMessage = new HttpRequestMessage(requestContext.Action.GetHttpMethod(), url)
{
- Content = ClientProxyRequestPayloadBuilder.BuildContent(requestContext.Action, requestContext.Arguments, JsonSerializer, apiVersion)
+ Content = await ClientProxyRequestPayloadBuilder.BuildContentAsync(requestContext.Action, requestContext.Arguments, JsonSerializer, apiVersion)
};
AddHeaders(requestContext.Arguments, requestContext.Action, requestMessage, apiVersion);
@@ -156,14 +156,14 @@ namespace Volo.Abp.Http.Client.ClientProxying
return new ApiVersionInfo(versionParam?.BindingSourceId, apiVersion);
}
- protected virtual Task GetUrlWithParametersAsync(ClientProxyRequestContext requestContext, ApiVersionInfo apiVersion)
+ protected virtual async Task GetUrlWithParametersAsync(ClientProxyRequestContext requestContext, ApiVersionInfo apiVersion)
{
- return Task.FromResult(ClientProxyUrlBuilder.GenerateUrlWithParameters(requestContext.Action, requestContext.Arguments, apiVersion));
+ return await ClientProxyUrlBuilder.GenerateUrlWithParametersAsync(requestContext.Action, requestContext.Arguments, apiVersion);
}
- protected virtual Task GetHttpContentAsync(ClientProxyRequestContext requestContext, ApiVersionInfo apiVersion)
+ protected virtual async Task GetHttpContentAsync(ClientProxyRequestContext requestContext, ApiVersionInfo apiVersion)
{
- return Task.FromResult(ClientProxyRequestPayloadBuilder.BuildContent(requestContext.Action, requestContext.Arguments, JsonSerializer, apiVersion));
+ return await ClientProxyRequestPayloadBuilder.BuildContentAsync(requestContext.Action, requestContext.Arguments, JsonSerializer, apiVersion);
}
protected virtual async Task FindBestApiVersionAsync(ClientProxyRequestContext requestContext)
diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyRequestPayloadBuilder.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyRequestPayloadBuilder.cs
index 3ba7026c8e..a91a9904de 100644
--- a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyRequestPayloadBuilder.cs
+++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyRequestPayloadBuilder.cs
@@ -3,8 +3,12 @@ using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Headers;
+using System.Reflection;
using System.Text;
+using System.Threading.Tasks;
using JetBrains.Annotations;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Options;
using Volo.Abp.Content;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Http.Client.Proxying;
@@ -16,21 +20,40 @@ namespace Volo.Abp.Http.Client.ClientProxying
{
public class ClientProxyRequestPayloadBuilder : ITransientDependency
{
+ protected static MethodInfo CallObjectToFormDataAsyncMethod { get; }
+
+ static ClientProxyRequestPayloadBuilder()
+ {
+ CallObjectToFormDataAsyncMethod = typeof(ClientProxyRequestPayloadBuilder)
+ .GetMethods(BindingFlags.NonPublic | BindingFlags.Instance)
+ .First(m => m.Name == nameof(ObjectToFormDataAsync) && m.IsGenericMethodDefinition);
+ }
+
+ protected IServiceScopeFactory ServiceScopeFactory { get; }
+
+ protected AbpHttpClientProxyingOptions HttpClientProxyingOptions { get; }
+
+ public ClientProxyRequestPayloadBuilder(IServiceScopeFactory serviceScopeFactory, IOptions httpClientProxyingOptions)
+ {
+ ServiceScopeFactory = serviceScopeFactory;
+ HttpClientProxyingOptions = httpClientProxyingOptions.Value;
+ }
+
[CanBeNull]
- public virtual HttpContent BuildContent(ActionApiDescriptionModel action, IReadOnlyDictionary methodArguments, IJsonSerializer jsonSerializer, ApiVersionInfo apiVersion)
+ public virtual async Task BuildContentAsync(ActionApiDescriptionModel action, IReadOnlyDictionary methodArguments, IJsonSerializer jsonSerializer, ApiVersionInfo apiVersion)
{
- var body = GenerateBody(action, methodArguments, jsonSerializer);
+ var body = await GenerateBodyAsync(action, methodArguments, jsonSerializer);
if (body != null)
{
return body;
}
- body = GenerateFormPostData(action, methodArguments);
+ body = await GenerateFormPostDataAsync(action, methodArguments);
return body;
}
- protected virtual HttpContent GenerateBody(ActionApiDescriptionModel action, IReadOnlyDictionary methodArguments, IJsonSerializer jsonSerializer)
+ protected virtual Task GenerateBodyAsync(ActionApiDescriptionModel action, IReadOnlyDictionary methodArguments, IJsonSerializer jsonSerializer)
{
var parameters = action
.Parameters
@@ -39,7 +62,7 @@ namespace Volo.Abp.Http.Client.ClientProxying
if (parameters.Length <= 0)
{
- return null;
+ return Task.FromResult(null);
}
if (parameters.Length > 1)
@@ -52,13 +75,13 @@ namespace Volo.Abp.Http.Client.ClientProxying
var value = HttpActionParameterHelper.FindParameterValue(methodArguments, parameters[0]);
if (value == null)
{
- return null;
+ return Task.FromResult(null);
}
- return new StringContent(jsonSerializer.Serialize(value), Encoding.UTF8, MimeTypes.Application.Json);
+ return Task.FromResult(new StringContent(jsonSerializer.Serialize(value), Encoding.UTF8, MimeTypes.Application.Json));
}
- protected virtual HttpContent GenerateFormPostData(ActionApiDescriptionModel action, IReadOnlyDictionary methodArguments)
+ protected virtual async Task GenerateFormPostDataAsync(ActionApiDescriptionModel action, IReadOnlyDictionary methodArguments)
{
var parameters = action
.Parameters
@@ -70,71 +93,76 @@ namespace Volo.Abp.Http.Client.ClientProxying
return null;
}
- if (parameters.Any(x => x.BindingSourceId == ParameterBindingSources.FormFile))
+ var formData = new MultipartFormDataContent();
+
+ foreach (var parameter in parameters)
{
- var formData = new MultipartFormDataContent();
- foreach (var parameter in parameters)
+ var value = HttpActionParameterHelper.FindParameterValue(methodArguments, parameter);
+ if (value == null)
{
- var value = HttpActionParameterHelper.FindParameterValue(methodArguments, parameter);
- if (value == null)
- {
- continue;
- }
+ continue;
+ }
- if (value is IRemoteStreamContent remoteStreamContent)
- {
- var stream = remoteStreamContent.GetStream();
- var streamContent = new StreamContent(stream);
- if (!remoteStreamContent.ContentType.IsNullOrWhiteSpace())
- {
- streamContent.Headers.ContentType = new MediaTypeHeaderValue(remoteStreamContent.ContentType);
- }
- streamContent.Headers.ContentLength = remoteStreamContent.ContentLength;
- formData.Add(streamContent, parameter.Name, remoteStreamContent.FileName ?? parameter.Name);
- }
- else if (value is IEnumerable remoteStreamContents)
+ if (HttpClientProxyingOptions.FormDataConverts.ContainsKey(value.GetType()))
+ {
+ using (var scope = ServiceScopeFactory.CreateScope())
{
- foreach (var content in remoteStreamContents)
+ var formDataContents = await (Task>>)CallObjectToFormDataAsyncMethod
+ .MakeGenericMethod(value.GetType())
+ .Invoke(this, new object[]
+ {
+ scope.ServiceProvider.GetRequiredService(HttpClientProxyingOptions.FormDataConverts[value.GetType()]),
+ value
+ });
+
+ if (formDataContents != null)
{
- var stream = content.GetStream();
- var streamContent = new StreamContent(stream);
- if (!content.ContentType.IsNullOrWhiteSpace())
+ foreach (var content in formDataContents)
{
- streamContent.Headers.ContentType = new MediaTypeHeaderValue(content.ContentType);
+ formData.Add(content.Value, content.Key);
}
- streamContent.Headers.ContentLength = content.ContentLength;
- formData.Add(streamContent, parameter.Name, content.FileName ?? parameter.Name);
+ continue;
}
}
- else
+ }
+
+ if (value is IRemoteStreamContent remoteStreamContent)
+ {
+ var stream = remoteStreamContent.GetStream();
+ var streamContent = new StreamContent(stream);
+ if (!remoteStreamContent.ContentType.IsNullOrWhiteSpace())
{
- formData.Add(new StringContent(value.ToString(), Encoding.UTF8), parameter.Name);
+ streamContent.Headers.ContentType = new MediaTypeHeaderValue(remoteStreamContent.ContentType);
}
+ streamContent.Headers.ContentLength = remoteStreamContent.ContentLength;
+ formData.Add(streamContent, parameter.Name, remoteStreamContent.FileName ?? parameter.Name);
}
-
- return formData;
- }
- else
- {
- var postDataBuilder = new StringBuilder();
-
- var isFirstParam = true;
- foreach (var parameter in parameters.Where(p => p.BindingSourceId == ParameterBindingSources.Form))
+ else if (value is IEnumerable remoteStreamContents)
{
- var value = HttpActionParameterHelper.FindParameterValue(methodArguments, parameter);
- if (value == null)
+ foreach (var content in remoteStreamContents)
{
- continue;
+ var stream = content.GetStream();
+ var streamContent = new StreamContent(stream);
+ if (!content.ContentType.IsNullOrWhiteSpace())
+ {
+ streamContent.Headers.ContentType = new MediaTypeHeaderValue(content.ContentType);
+ }
+ streamContent.Headers.ContentLength = content.ContentLength;
+ formData.Add(streamContent, parameter.Name, content.FileName ?? parameter.Name);
}
-
- postDataBuilder.Append(isFirstParam ? "?" : "&");
- postDataBuilder.Append(parameter.Name + "=" + System.Net.WebUtility.UrlEncode(value.ToString()));
-
- isFirstParam = false;
}
-
- return new StringContent(postDataBuilder.ToString(), Encoding.UTF8, MimeTypes.Application.XWwwFormUrlencoded);
+ else
+ {
+ formData.Add(new StringContent(value.ToString(), Encoding.UTF8), parameter.Name);
+ }
}
+
+ return formData;
+ }
+
+ protected virtual async Task>> ObjectToFormDataAsync(IObjectToFormData converter, T value)
+ {
+ return await converter.ConvertAsync(value);
}
}
}
diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyUrlBuilder.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyUrlBuilder.cs
index e6a9b8ff71..12f7bc1ac8 100644
--- a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyUrlBuilder.cs
+++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyUrlBuilder.cs
@@ -3,8 +3,12 @@ using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
+using System.Reflection;
using System.Text;
+using System.Threading.Tasks;
using JetBrains.Annotations;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Options;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Http.Client.Proxying;
using Volo.Abp.Http.Modeling;
@@ -15,7 +19,25 @@ namespace Volo.Abp.Http.Client.ClientProxying
{
public class ClientProxyUrlBuilder : ITransientDependency
{
- public string GenerateUrlWithParameters(ActionApiDescriptionModel action, IReadOnlyDictionary methodArguments, ApiVersionInfo apiVersion)
+ protected static MethodInfo CallObjectToQueryStringAsyncMethod { get; }
+
+ static ClientProxyUrlBuilder()
+ {
+ CallObjectToQueryStringAsyncMethod = typeof(ClientProxyUrlBuilder)
+ .GetMethods(BindingFlags.NonPublic | BindingFlags.Instance)
+ .First(m => m.Name == nameof(ObjectToQueryStringAsync) && m.IsGenericMethodDefinition);
+ }
+
+ protected IServiceScopeFactory ServiceScopeFactory { get; }
+ protected AbpHttpClientProxyingOptions HttpClientProxyingOptions { get; }
+
+ public ClientProxyUrlBuilder(IServiceScopeFactory serviceScopeFactory, IOptions httpClientProxyingOptions)
+ {
+ ServiceScopeFactory = serviceScopeFactory;
+ HttpClientProxyingOptions = httpClientProxyingOptions.Value;
+ }
+
+ public async Task GenerateUrlWithParametersAsync(ActionApiDescriptionModel action, IReadOnlyDictionary methodArguments, ApiVersionInfo apiVersion)
{
// The ASP.NET Core route value provider and query string value provider:
// Treat values as invariant culture.
@@ -24,14 +46,14 @@ namespace Volo.Abp.Http.Client.ClientProxying
{
var urlBuilder = new StringBuilder(action.Url);
- ReplacePathVariables(urlBuilder, action.Parameters, methodArguments, apiVersion);
- AddQueryStringParameters(urlBuilder, action.Parameters, methodArguments, apiVersion);
+ await ReplacePathVariablesAsync(urlBuilder, action.Parameters, methodArguments, apiVersion);
+ await AddQueryStringParametersAsync(urlBuilder, action.Parameters, methodArguments, apiVersion);
return urlBuilder.ToString();
}
}
- protected virtual void ReplacePathVariables(StringBuilder urlBuilder, IList actionParameters, IReadOnlyDictionary methodArguments, ApiVersionInfo apiVersion)
+ protected virtual Task ReplacePathVariablesAsync(StringBuilder urlBuilder, IList actionParameters, IReadOnlyDictionary methodArguments, ApiVersionInfo apiVersion)
{
var pathParameters = actionParameters
.Where(p => p.BindingSourceId == ParameterBindingSources.Path)
@@ -39,7 +61,7 @@ namespace Volo.Abp.Http.Client.ClientProxying
if (!pathParameters.Any())
{
- return;
+ return Task.CompletedTask;
}
if (pathParameters.Any(p => p.Name == "apiVersion"))
@@ -71,9 +93,11 @@ namespace Volo.Abp.Http.Client.ClientProxying
urlBuilder = urlBuilder.Replace($"{{{pathParameter.Name}}}", value.ToString());
}
}
+
+ return Task.CompletedTask;
}
- protected virtual void AddQueryStringParameters(StringBuilder urlBuilder, IList actionParameters, IReadOnlyDictionary methodArguments, ApiVersionInfo apiVersion)
+ protected virtual async Task AddQueryStringParametersAsync(StringBuilder urlBuilder, IList actionParameters, IReadOnlyDictionary methodArguments, ApiVersionInfo apiVersion)
{
var queryStringParameters = actionParameters
.Where(p => p.BindingSourceId.IsIn(ParameterBindingSources.ModelBinding, ParameterBindingSources.Query))
@@ -89,7 +113,29 @@ namespace Volo.Abp.Http.Client.ClientProxying
continue;
}
- if (AddQueryStringParameter(urlBuilder, isFirstParam, queryStringParameter.Name, value))
+ if (HttpClientProxyingOptions.QueryStringConverts.ContainsKey(value.GetType()))
+ {
+ using (var scope = ServiceScopeFactory.CreateScope())
+ {
+ var queryString = await (Task)CallObjectToQueryStringAsyncMethod
+ .MakeGenericMethod(value.GetType())
+ .Invoke(this, new object[]
+ {
+ scope.ServiceProvider.GetRequiredService(HttpClientProxyingOptions.QueryStringConverts[value.GetType()]),
+ value
+ });
+
+ if (queryString != null)
+ {
+ urlBuilder.Append(isFirstParam ? "?" : "&");
+ urlBuilder.Append(queryString);
+ isFirstParam = false;
+ continue;
+ }
+ }
+ }
+
+ if (await AddQueryStringParameterAsync(urlBuilder, isFirstParam, queryStringParameter.Name, value))
{
isFirstParam = false;
}
@@ -97,11 +143,16 @@ namespace Volo.Abp.Http.Client.ClientProxying
if (apiVersion.ShouldSendInQueryString())
{
- AddQueryStringParameter(urlBuilder, isFirstParam, "api-version", apiVersion.Version); //TODO: Constant!
+ await AddQueryStringParameterAsync(urlBuilder, isFirstParam, "api-version", apiVersion.Version); //TODO: Constant!
}
}
- protected virtual bool AddQueryStringParameter(
+ protected virtual async Task ObjectToQueryStringAsync(IObjectToQueryString converter, T value)
+ {
+ return await converter.ConvertAsync(value);
+ }
+
+ protected virtual async Task AddQueryStringParameterAsync(
StringBuilder urlBuilder,
bool isFirstParam,
string name,
@@ -116,7 +167,7 @@ namespace Volo.Abp.Http.Client.ClientProxying
{
urlBuilder.Append(isFirstParam ? "?" : "&");
}
- urlBuilder.Append(name + $"[{index++}]=" + System.Net.WebUtility.UrlEncode(ConvertValueToString(item)) + "&");
+ urlBuilder.Append(name + $"[{index++}]=" + System.Net.WebUtility.UrlEncode(await ConvertValueToStringAsync(item)) + "&");
}
if (index > 0)
@@ -130,18 +181,18 @@ namespace Volo.Abp.Http.Client.ClientProxying
}
urlBuilder.Append(isFirstParam ? "?" : "&");
- urlBuilder.Append(name + "=" + System.Net.WebUtility.UrlEncode(ConvertValueToString(value)));
+ urlBuilder.Append(name + "=" + System.Net.WebUtility.UrlEncode(await ConvertValueToStringAsync(value)));
return true;
}
- protected virtual string ConvertValueToString([CanBeNull] object value)
+ protected virtual Task ConvertValueToStringAsync([CanBeNull] object value)
{
if (value is DateTime dateTimeValue)
{
- return dateTimeValue.ToUniversalTime().ToString("O");
+ return Task.FromResult(dateTimeValue.ToUniversalTime().ToString("O"));
}
- return value?.ToString();
+ return Task.FromResult(value?.ToString());
}
}
}
diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/IObjectToFormData.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/IObjectToFormData.cs
new file mode 100644
index 0000000000..5aec4252e3
--- /dev/null
+++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/IObjectToFormData.cs
@@ -0,0 +1,11 @@
+using System.Collections.Generic;
+using System.Net.Http;
+using System.Threading.Tasks;
+
+namespace Volo.Abp.Http.Client.ClientProxying
+{
+ public interface IObjectToFormData
+ {
+ Task>> ConvertAsync(TValue value);
+ }
+}
diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/IObjectToQueryString.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/IObjectToQueryString.cs
new file mode 100644
index 0000000000..ef223a903d
--- /dev/null
+++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/IObjectToQueryString.cs
@@ -0,0 +1,9 @@
+using System.Threading.Tasks;
+
+namespace Volo.Abp.Http.Client.ClientProxying
+{
+ public interface IObjectToQueryString
+ {
+ Task ConvertAsync(TValue value);
+ }
+}
diff --git a/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/AbpHttpClientTestModule.cs b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/AbpHttpClientTestModule.cs
index 966ab01840..d90ef50006 100644
--- a/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/AbpHttpClientTestModule.cs
+++ b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/AbpHttpClientTestModule.cs
@@ -1,7 +1,9 @@
-using Microsoft.Extensions.DependencyInjection;
+using System.Collections.Generic;
+using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc.Conventions;
using Volo.Abp.Http.Client;
+using Volo.Abp.Http.Client.ClientProxying;
using Volo.Abp.Http.DynamicProxying;
using Volo.Abp.Http.Localization;
using Volo.Abp.Localization;
@@ -52,6 +54,12 @@ namespace Volo.Abp.Http
options.ConventionalControllers.FormBodyBindingIgnoredTypes.Add(typeof(CreateFileInput));
options.ConventionalControllers.FormBodyBindingIgnoredTypes.Add(typeof(CreateMultipleFileInput));
});
+
+ Configure(options =>
+ {
+ options.QueryStringConverts.Add(typeof(List), typeof(TestObjectToQueryString));
+ options.FormDataConverts.Add(typeof(List), typeof(TestObjectToFormData));
+ });
}
}
}
diff --git a/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/PersonAppServiceClientProxy_Tests.cs b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/PersonAppServiceClientProxy_Tests.cs
index b040c3e3d4..789c552861 100644
--- a/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/PersonAppServiceClientProxy_Tests.cs
+++ b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/PersonAppServiceClientProxy_Tests.cs
@@ -276,5 +276,59 @@ namespace Volo.Abp.Http.DynamicProxying
});
result.ShouldBe("123.rtf:File1:application/rtf:1-1.rtf123.rtf:File2:application/rtf2:1-2.rtf789.rtf:File3:application/rtf3:i-789.rtf");
}
+
+ [Fact]
+ public async Task GetParamsFromQueryAsync()
+ {
+ var result = await _peopleAppService.GetParamsFromQueryAsync(new GetParamsInput()
+ {
+ NameValues = new List()
+ {
+ new GetParamsNameValue()
+ {
+ Name = "name1",
+ Value = "value1"
+ },
+ new GetParamsNameValue()
+ {
+ Name = "name2",
+ Value = "value2"
+ }
+ },
+ NameValue = new GetParamsNameValue()
+ {
+ Name = "name3",
+ Value = "value3"
+ }
+ });
+ result.ShouldBe("name1-value1:name2-value2:name3-value3");
+ }
+
+ [Fact]
+ public async Task GetParamsFromFormAsync()
+ {
+ var result = await _peopleAppService.GetParamsFromFormAsync(new GetParamsInput()
+ {
+ NameValues = new List()
+ {
+ new GetParamsNameValue()
+ {
+ Name = "name1",
+ Value = "value1"
+ },
+ new GetParamsNameValue()
+ {
+ Name = "name2",
+ Value = "value2"
+ }
+ },
+ NameValue = new GetParamsNameValue()
+ {
+ Name = "name3",
+ Value = "value3"
+ }
+ });
+ result.ShouldBe("name1-value1:name2-value2:name3-value3");
+ }
}
}
diff --git a/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/TestObjectToFormData.cs b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/TestObjectToFormData.cs
new file mode 100644
index 0000000000..65b65fc54b
--- /dev/null
+++ b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/TestObjectToFormData.cs
@@ -0,0 +1,30 @@
+using System.Collections.Generic;
+using System.Net.Http;
+using System.Text;
+using System.Threading.Tasks;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Http.Client.ClientProxying;
+using Volo.Abp.TestApp.Application.Dto;
+
+namespace Volo.Abp.Http.DynamicProxying
+{
+ public class TestObjectToFormData : IObjectToFormData>, ITransientDependency
+ {
+ public Task>> ConvertAsync(List values)
+ {
+ if (values.IsNullOrEmpty())
+ {
+ return null;
+ }
+
+ var formDataContents = new List>();
+ for (var i = 0; i < values.Count; i++)
+ {
+ formDataContents.Add(new KeyValuePair($"NameValues[{i}].Name", new StringContent(values[i].Name, Encoding.UTF8)));
+ formDataContents.Add(new KeyValuePair($"NameValues[{i}].Value", new StringContent(values[i].Value, Encoding.UTF8)));
+ }
+
+ return Task.FromResult(formDataContents);
+ }
+ }
+}
diff --git a/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/TestObjectToQueryString.cs b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/TestObjectToQueryString.cs
new file mode 100644
index 0000000000..ae11a7bf2f
--- /dev/null
+++ b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/TestObjectToQueryString.cs
@@ -0,0 +1,30 @@
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Http.Client.ClientProxying;
+using Volo.Abp.TestApp.Application.Dto;
+
+namespace Volo.Abp.Http.DynamicProxying
+{
+ public class TestObjectToQueryString : IObjectToQueryString>, ITransientDependency
+ {
+ public Task ConvertAsync(List values)
+ {
+ if (values.IsNullOrEmpty())
+ {
+ return null;
+ }
+
+ var sb = new StringBuilder();
+
+ for (var i = 0; i < values.Count; i++)
+ {
+ sb.Append($"NameValues[{i}].Name={values[i].Name}&NameValues[{i}].Value={values[i].Value}&");
+ }
+
+ sb.Remove(sb.Length - 1, 1);
+ return Task.FromResult(sb.ToString());
+ }
+ }
+}
diff --git a/framework/test/Volo.Abp.TestApp/Volo.Abp.TestApp.csproj b/framework/test/Volo.Abp.TestApp/Volo.Abp.TestApp.csproj
index 6dc99c23c3..0664ad2b7b 100644
--- a/framework/test/Volo.Abp.TestApp/Volo.Abp.TestApp.csproj
+++ b/framework/test/Volo.Abp.TestApp/Volo.Abp.TestApp.csproj
@@ -1,4 +1,4 @@
-
+
diff --git a/framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/Application/Dto/GetParamsInput.cs b/framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/Application/Dto/GetParamsInput.cs
new file mode 100644
index 0000000000..93a643491c
--- /dev/null
+++ b/framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/Application/Dto/GetParamsInput.cs
@@ -0,0 +1,18 @@
+using System.Collections.Generic;
+
+namespace Volo.Abp.TestApp.Application.Dto
+{
+ public class GetParamsInput
+ {
+ public List NameValues { get; set; }
+
+ public GetParamsNameValue NameValue { get; set; }
+ }
+
+ public class GetParamsNameValue
+ {
+ public string Name { get; set; }
+
+ public string Value { get; set; }
+ }
+}
diff --git a/framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/Application/IPeopleAppService.cs b/framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/Application/IPeopleAppService.cs
index 844e7fd383..b9cb2e0887 100644
--- a/framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/Application/IPeopleAppService.cs
+++ b/framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/Application/IPeopleAppService.cs
@@ -32,5 +32,8 @@ namespace Volo.Abp.TestApp.Application
Task CreateMultipleFileAsync(CreateMultipleFileInput input);
+ Task GetParamsFromQueryAsync(GetParamsInput input);
+
+ Task GetParamsFromFormAsync(GetParamsInput input);
}
}
diff --git a/framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/Application/PeopleAppService.cs b/framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/Application/PeopleAppService.cs
index a3d8764423..4baa2a4ec2 100644
--- a/framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/Application/PeopleAppService.cs
+++ b/framework/test/Volo.Abp.TestApp/Volo/Abp/TestApp/Application/PeopleAppService.cs
@@ -5,6 +5,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
using Volo.Abp.Application.Dtos;
using Volo.Abp.TestApp.Domain;
using Volo.Abp.Domain.Repositories;
@@ -125,5 +126,21 @@ namespace Volo.Abp.TestApp.Application
return str;
}
+
+ public Task GetParamsFromQueryAsync([FromQuery]GetParamsInput input)
+ {
+ return Task.FromResult(input.NameValues?.FirstOrDefault()?.Name + "-" +
+ input.NameValues?.FirstOrDefault()?.Value + ":" +
+ input.NameValues?.LastOrDefault()?.Name + "-" + input.NameValues?.LastOrDefault()?.Value + ":" +
+ input.NameValue?.Name + "-" + input.NameValue?.Value);
+ }
+
+ public Task GetParamsFromFormAsync([FromForm]GetParamsInput input)
+ {
+ return Task.FromResult(input.NameValues?.FirstOrDefault()?.Name + "-" +
+ input.NameValues?.FirstOrDefault()?.Value + ":" +
+ input.NameValues?.LastOrDefault()?.Name + "-" + input.NameValues?.LastOrDefault()?.Value + ":" +
+ input.NameValue?.Name + "-" + input.NameValue?.Value);
+ }
}
}
diff --git a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/da.json b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/da.json
new file mode 100644
index 0000000000..38d81e8516
--- /dev/null
+++ b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/da.json
@@ -0,0 +1,67 @@
+{
+ "culture": "da",
+ "texts": {
+ "UserName": "Brugernavn",
+ "EmailAddress": "Email",
+ "UserNameOrEmailAddress": "Brugernavn eller email",
+ "Password": "Kodeord",
+ "RememberMe": "Husk mig",
+ "UseAnotherServiceToLogin": "Brug en anden service til at logge ind",
+ "UserLockedOutMessage": "Brugerkontoen er blevet låst grundet forkerte login forsøg. Vent venligst og prøv igen.",
+ "InvalidUserNameOrPassword": "Forkert brugernavn eller kodeord!",
+ "LoginIsNotAllowed": "Du kan ikke logge ind! Du skal bekræfte den angivne email/telefonnummer.",
+ "SelfRegistrationDisabledMessage": "Selvregistrering er deaktiveret for denne applikation. Kontakt venligst applikationens administrator for at registrere en ny bruger.",
+ "LocalLoginDisabledMessage": "Lokalt login er deaktiveret for denne appliaktion.",
+ "Login": "Login",
+ "Cancel": "Annullér",
+ "Register": "Registrér",
+ "AreYouANewUser": "Er du ny bruger?",
+ "AlreadyRegistered": "Allerede registreret?",
+ "InvalidLoginRequest": "Forkert login forespørgsel",
+ "ThereAreNoLoginSchemesConfiguredForThisClient": "Der er ingen konfigurerede login skemaer for denne klient.",
+ "LogInUsingYourProviderAccount": "Login med din {0} konto",
+ "DisplayName:CurrentPassword": "Nuværende kodeord",
+ "DisplayName:NewPassword": "Nyt kodeord",
+ "DisplayName:NewPasswordConfirm": "Bekræft nyt kodeord",
+ "PasswordChangedMessage": "Dit kodeord er blevet ændret.",
+ "DisplayName:UserName": "Brugernavn",
+ "DisplayName:Email": "Email",
+ "DisplayName:Name": "Fornavn",
+ "DisplayName:Surname": "Efternavn",
+ "DisplayName:Password": "Kodeord",
+ "DisplayName:EmailAddress": "Email",
+ "DisplayName:PhoneNumber": "Telefonnummer",
+ "PersonalSettings": "Personlige indstillinger",
+ "PersonalSettingsSaved": "Personlige indstillinger gemt",
+ "PasswordChanged": "Kodeord gemt",
+ "NewPasswordConfirmFailed": "Bekræft venligst det nye kodeord.",
+ "Manage": "Administrer",
+ "MyAccount": "Min konto",
+ "DisplayName:Abp.Account.IsSelfRegistrationEnabled": "Er registrering aktiveret",
+ "Description:Abp.Account.IsSelfRegistrationEnabled": "Om en bruger kan registrere kontoen selv.",
+ "DisplayName:Abp.Account.EnableLocalLogin": "Godkende med en lokal konto",
+ "Description:Abp.Account.EnableLocalLogin": "Indikerer om serveren vil tillade brugere at logge ind med lokal konto.",
+ "LoggedOutTitle": "Logget ud",
+ "LoggedOutText": "Du er blevet logget ud og vil blive videresendt snarest.",
+ "ReturnToText": "Klik her for at returnere til applikationen",
+ "OrLoginWith": "Eller login med:",
+ "ForgotPassword": "Glemt kodeord?",
+ "SendPasswordResetLink_Information": "Et link til at nulstille dit kodeord vil blive sendt til din email. Hvis du ikke modtager en email indenfor et par minutter, venligst prøv igen.",
+ "PasswordResetMailSentMessage": "Gendannelse af konto er sendt til din email. Hvis du ikke har modtaget emailen indenfor 15 minutter, kig i din spam folder. Hvis du finder den dér, venligst markér den som -Ikke Spam-. ",
+ "ResetPassword": "Nulstil Kodeord",
+ "ConfirmPassword": "Bekræft (gentag) kodeordet",
+ "ResetPassword_Information": "Venligst indtast dit nye kodeord.",
+ "YourPasswordIsSuccessfullyReset": "Dit kodeord blev ændret.",
+ "GoToTheApplication": "Gå til applikationen",
+ "BackToLogin": "Tilbage til login",
+ "ProfileTab:Password": "Skift kodeord",
+ "ProfileTab:PersonalInfo": "Personlig info",
+ "ReturnToApplication": "Gå tilbage til applikationen",
+ "Volo.Account:InvalidEmailAddress": "Kan ikke finde den angivne email: {0}",
+ "PasswordReset": "Nulstil kodeord",
+ "PasswordResetInfoInEmail": "Vi har modtaget en forespørgsel for gendannelse af konto! Hvis du har lavet denne forespørgsel, klik på det efterfølgende link for at nulstille dit kodeord.",
+ "ResetMyPassword": "Nulstil mit kodeord",
+ "AccessDenied": "Adgang nægtet!",
+ "AccessDeniedMessage": "Du har ikke adgang til denne ressource."
+ }
+}
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json
index 9f4494dc6e..ca739c8c9a 100644
--- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json
@@ -3,7 +3,7 @@
"name": "asp.net",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.shared": "^4.4.2",
+ "@abp/aspnetcore.mvc.ui.theme.shared": "^5.0.0-beta.1",
"highlight.js": "^9.13.1"
},
"devDependencies": {}
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/sweetalert/sweetalert.min.js b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/sweetalert/sweetalert.min.js
deleted file mode 100644
index dc8f5e78ec..0000000000
--- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/sweetalert/sweetalert.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.swal=e():t.swal=e()}(this,function(){return function(t){function e(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var n={};return e.m=t,e.c=n,e.d=function(t,n,o){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:o})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=8)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o="swal-button";e.CLASS_NAMES={MODAL:"swal-modal",OVERLAY:"swal-overlay",SHOW_MODAL:"swal-overlay--show-modal",MODAL_TITLE:"swal-title",MODAL_TEXT:"swal-text",ICON:"swal-icon",ICON_CUSTOM:"swal-icon--custom",CONTENT:"swal-content",FOOTER:"swal-footer",BUTTON_CONTAINER:"swal-button-container",BUTTON:o,CONFIRM_BUTTON:o+"--confirm",CANCEL_BUTTON:o+"--cancel",DANGER_BUTTON:o+"--danger",BUTTON_LOADING:o+"--loading",BUTTON_LOADER:o+"__loader"},e.default=e.CLASS_NAMES},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getNode=function(t){var e="."+t;return document.querySelector(e)},e.stringToNode=function(t){var e=document.createElement("div");return e.innerHTML=t.trim(),e.firstChild},e.insertAfter=function(t,e){var n=e.nextSibling;e.parentNode.insertBefore(t,n)},e.removeNode=function(t){t.parentElement.removeChild(t)},e.throwErr=function(t){throw t=t.replace(/ +(?= )/g,""),"SweetAlert: "+(t=t.trim())},e.isPlainObject=function(t){if("[object Object]"!==Object.prototype.toString.call(t))return!1;var e=Object.getPrototypeOf(t);return null===e||e===Object.prototype},e.ordinalSuffixOf=function(t){var e=t%10,n=t%100;return 1===e&&11!==n?t+"st":2===e&&12!==n?t+"nd":3===e&&13!==n?t+"rd":t+"th"}},function(t,e,n){"use strict";function o(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),o(n(25));var r=n(26);e.overlayMarkup=r.default,o(n(27)),o(n(28)),o(n(29));var i=n(0),a=i.default.MODAL_TITLE,s=i.default.MODAL_TEXT,c=i.default.ICON,l=i.default.FOOTER;e.iconMarkup='\n
',e.titleMarkup='\n
\n',e.textMarkup='\n
',e.footerMarkup='\n
\n'},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1);e.CONFIRM_KEY="confirm",e.CANCEL_KEY="cancel";var r={visible:!0,text:null,value:null,className:"",closeModal:!0},i=Object.assign({},r,{visible:!1,text:"Cancel",value:null}),a=Object.assign({},r,{text:"OK",value:!0});e.defaultButtonList={cancel:i,confirm:a};var s=function(t){switch(t){case e.CONFIRM_KEY:return a;case e.CANCEL_KEY:return i;default:var n=t.charAt(0).toUpperCase()+t.slice(1);return Object.assign({},r,{text:n,value:t})}},c=function(t,e){var n=s(t);return!0===e?Object.assign({},n,{visible:!0}):"string"==typeof e?Object.assign({},n,{visible:!0,text:e}):o.isPlainObject(e)?Object.assign({visible:!0},n,e):Object.assign({},n,{visible:!1})},l=function(t){for(var e={},n=0,o=Object.keys(t);n=0&&w.splice(e,1)}function s(t){var e=document.createElement("style");return t.attrs.type="text/css",l(e,t.attrs),i(t,e),e}function c(t){var e=document.createElement("link");return t.attrs.type="text/css",t.attrs.rel="stylesheet",l(e,t.attrs),i(t,e),e}function l(t,e){Object.keys(e).forEach(function(n){t.setAttribute(n,e[n])})}function u(t,e){var n,o,r,i;if(e.transform&&t.css){if(!(i=e.transform(t.css)))return function(){};t.css=i}if(e.singleton){var l=h++;n=g||(g=s(e)),o=f.bind(null,n,l,!1),r=f.bind(null,n,l,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=c(e),o=p.bind(null,n,e),r=function(){a(n),n.href&&URL.revokeObjectURL(n.href)}):(n=s(e),o=d.bind(null,n),r=function(){a(n)});return o(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;o(t=e)}else r()}}function f(t,e,n,o){var r=n?"":o.css;if(t.styleSheet)t.styleSheet.cssText=x(e,r);else{var i=document.createTextNode(r),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(i,a[e]):t.appendChild(i)}}function d(t,e){var n=e.css,o=e.media;if(o&&t.setAttribute("media",o),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}function p(t,e,n){var o=n.css,r=n.sourceMap,i=void 0===e.convertToAbsoluteUrls&&r;(e.convertToAbsoluteUrls||i)&&(o=y(o)),r&&(o+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */");var a=new Blob([o],{type:"text/css"}),s=t.href;t.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}var m={},b=function(t){var e;return function(){return void 0===e&&(e=t.apply(this,arguments)),e}}(function(){return window&&document&&document.all&&!window.atob}),v=function(t){var e={};return function(n){return void 0===e[n]&&(e[n]=t.call(this,n)),e[n]}}(function(t){return document.querySelector(t)}),g=null,h=0,w=[],y=n(15);t.exports=function(t,e){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");e=e||{},e.attrs="object"==typeof e.attrs?e.attrs:{},e.singleton||(e.singleton=b()),e.insertInto||(e.insertInto="head"),e.insertAt||(e.insertAt="bottom");var n=r(t,e);return o(n,e),function(t){for(var i=[],a=0;athis.length)&&-1!==this.indexOf(t,e)}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(t,e){if(null==this)throw new TypeError('"this" is null or not defined');var n=Object(this),o=n.length>>>0;if(0===o)return!1;for(var r=0|e,i=Math.max(r>=0?r:o-Math.abs(r),0);i=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(19),e.setImmediate=setImmediate,e.clearImmediate=clearImmediate},function(t,e,n){(function(t,e){!function(t,n){"use strict";function o(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n1)for(var n=1;n',e.default=e.modalMarkup},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.OVERLAY,i='\n
';e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.ICON;e.errorIconMarkup=function(){var t=r+"--error",e=t+"__line";return'\n \n \n \n
\n '},e.warningIconMarkup=function(){var t=r+"--warning";return'\n \n \n \n '},e.successIconMarkup=function(){var t=r+"--success";return'\n \n \n\n
\n
\n '}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.CONTENT;e.contentMarkup='\n \n\n
\n'},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.BUTTON_CONTAINER,i=o.default.BUTTON,a=o.default.BUTTON_LOADER;e.buttonMarkup='\n \n'},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(4),r=n(2),i=n(0),a=i.default.ICON,s=i.default.ICON_CUSTOM,c=["error","warning","success","info"],l={error:r.errorIconMarkup(),warning:r.warningIconMarkup(),success:r.successIconMarkup()},u=function(t,e){var n=a+"--"+t;e.classList.add(n);var o=l[t];o&&(e.innerHTML=o)},f=function(t,e){e.classList.add(s);var n=document.createElement("img");n.src=t,e.appendChild(n)},d=function(t){if(t){var e=o.injectElIntoModal(r.iconMarkup);c.includes(t)?u(t,e):f(t,e)}};e.default=d},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(2),r=n(4),i=function(t){navigator.userAgent.includes("AppleWebKit")&&(t.style.display="none",t.offsetHeight,t.style.display="")};e.initTitle=function(t){if(t){var e=r.injectElIntoModal(o.titleMarkup);e.textContent=t,i(e)}},e.initText=function(t){if(t){var e=document.createDocumentFragment();t.split("\n").forEach(function(t,n,o){e.appendChild(document.createTextNode(t)),n0}).forEach(function(t){b.classList.add(t)})}n&&t===c.CONFIRM_KEY&&b.classList.add(s),b.textContent=r;var g={};return g[t]=i,f.setActionValue(g),f.setActionOptionsFor(t,{closeModal:p}),b.addEventListener("click",function(){return u.onAction(t)}),m},p=function(t,e){var n=r.injectElIntoModal(l.footerMarkup);for(var o in t){var i=t[o],a=d(o,i,e);i.visible&&n.appendChild(a)}0===n.children.length&&n.remove()};e.default=p},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(3),r=n(4),i=n(2),a=n(5),s=n(6),c=n(0),l=c.default.CONTENT,u=function(t){t.addEventListener("input",function(t){var e=t.target,n=e.value;a.setActionValue(n)}),t.addEventListener("keyup",function(t){if("Enter"===t.key)return s.onAction(o.CONFIRM_KEY)}),setTimeout(function(){t.focus(),a.setActionValue("")},0)},f=function(t,e,n){var o=document.createElement(e),r=l+"__"+e;o.classList.add(r);for(var i in n){var a=n[i];o[i]=a}"input"===e&&u(o),t.appendChild(o)},d=function(t){if(t){var e=r.injectElIntoModal(i.contentMarkup),n=t.element,o=t.attributes;"string"==typeof n?f(e,n,o):e.appendChild(n)}};e.default=d},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=n(2),i=function(){var t=o.stringToNode(r.overlayMarkup);document.body.appendChild(t)};e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(5),r=n(6),i=n(1),a=n(3),s=n(0),c=s.default.MODAL,l=s.default.BUTTON,u=s.default.OVERLAY,f=function(t){t.preventDefault(),v()},d=function(t){t.preventDefault(),g()},p=function(t){if(o.default.isOpen)switch(t.key){case"Escape":return r.onAction(a.CANCEL_KEY)}},m=function(t){if(o.default.isOpen)switch(t.key){case"Tab":return f(t)}},b=function(t){if(o.default.isOpen)return"Tab"===t.key&&t.shiftKey?d(t):void 0},v=function(){var t=i.getNode(l);t&&(t.tabIndex=0,t.focus())},g=function(){var t=i.getNode(c),e=t.querySelectorAll("."+l),n=e.length-1,o=e[n];o&&o.focus()},h=function(t){t[t.length-1].addEventListener("keydown",m)},w=function(t){t[0].addEventListener("keydown",b)},y=function(){var t=i.getNode(c),e=t.querySelectorAll("."+l);e.length&&(h(e),w(e))},x=function(t){if(i.getNode(u)===t.target)return r.onAction(a.CANCEL_KEY)},_=function(t){var e=i.getNode(u);e.removeEventListener("click",x),t&&e.addEventListener("click",x)},k=function(t){o.default.timer&&clearTimeout(o.default.timer),t&&(o.default.timer=window.setTimeout(function(){return r.onAction(a.CANCEL_KEY)},t))},O=function(t){t.closeOnEsc?document.addEventListener("keyup",p):document.removeEventListener("keyup",p),t.dangerMode?v():g(),y(),_(t.closeOnClickOutside),k(t.timer)};e.default=O},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=n(3),i=n(37),a=n(38),s={title:null,text:null,icon:null,buttons:r.defaultButtonList,content:null,className:null,closeOnClickOutside:!0,closeOnEsc:!0,dangerMode:!1,timer:null},c=Object.assign({},s);e.setDefaults=function(t){c=Object.assign({},s,t)};var l=function(t){var e=t&&t.button,n=t&&t.buttons;return void 0!==e&&void 0!==n&&o.throwErr("Cannot set both 'button' and 'buttons' options!"),void 0!==e?{confirm:e}:n},u=function(t){return o.ordinalSuffixOf(t+1)},f=function(t,e){o.throwErr(u(e)+" argument ('"+t+"') is invalid")},d=function(t,e){var n=t+1,r=e[n];o.isPlainObject(r)||void 0===r||o.throwErr("Expected "+u(n)+" argument ('"+r+"') to be a plain object")},p=function(t,e){var n=t+1,r=e[n];void 0!==r&&o.throwErr("Unexpected "+u(n)+" argument ("+r+")")},m=function(t,e,n,r){var i=typeof e,a="string"===i,s=e instanceof Element;if(a){if(0===n)return{text:e};if(1===n)return{text:e,title:r[0]};if(2===n)return d(n,r),{icon:e};f(e,n)}else{if(s&&0===n)return d(n,r),{content:e};if(o.isPlainObject(e))return p(n,r),e;f(e,n)}};e.getOpts=function(){for(var t=[],e=0;e {
+ const result = [];
+
+ for (let i = 0; i < arr.length; i++) {
+ if (result.indexOf(arr[i]) === -1) {
+ result.push(arr[i]);
+ }
+ }
+
+ return result;
+ };
+ /**
+ * Capitalize the first letter of a string
+ * @param str
+ */
+
+ const capitalizeFirstLetter = str => str.charAt(0).toUpperCase() + str.slice(1);
+ /**
+ * Convert NodeList to Array
+ * @param nodeList
+ */
+
+ const toArray = nodeList => Array.prototype.slice.call(nodeList);
+ /**
+ * Standardise console warnings
+ * @param message
+ */
+
+ const warn = message => {
+ console.warn("".concat(consolePrefix, " ").concat(typeof message === 'object' ? message.join(' ') : message));
+ };
+ /**
+ * Standardise console errors
+ * @param message
+ */
+
+ const error = message => {
+ console.error("".concat(consolePrefix, " ").concat(message));
+ };
+ /**
+ * Private global state for `warnOnce`
+ * @type {Array}
+ * @private
+ */
+
+ const previousWarnOnceMessages = [];
+ /**
+ * Show a console warning, but only if it hasn't already been shown
+ * @param message
+ */
+
+ const warnOnce = message => {
+ if (!previousWarnOnceMessages.includes(message)) {
+ previousWarnOnceMessages.push(message);
+ warn(message);
+ }
+ };
+ /**
+ * Show a one-time console warning about deprecated params/methods
+ */
+
+ const warnAboutDeprecation = (deprecatedParam, useInstead) => {
+ warnOnce("\"".concat(deprecatedParam, "\" is deprecated and will be removed in the next major release. Please use \"").concat(useInstead, "\" instead."));
+ };
+ /**
+ * If `arg` is a function, call it (with no arguments or context) and return the result.
+ * Otherwise, just pass the value through
+ * @param arg
+ */
+
+ const callIfFunction = arg => typeof arg === 'function' ? arg() : arg;
+ const hasToPromiseFn = arg => arg && typeof arg.toPromise === 'function';
+ const asPromise = arg => hasToPromiseFn(arg) ? arg.toPromise() : Promise.resolve(arg);
+ const isPromise = arg => arg && Promise.resolve(arg) === arg;
+
+ const isJqueryElement = elem => typeof elem === 'object' && elem.jquery;
+
+ const isElement = elem => elem instanceof Element || isJqueryElement(elem);
+
+ const argsToParams = args => {
+ const params = {};
+
+ if (typeof args[0] === 'object' && !isElement(args[0])) {
+ Object.assign(params, args[0]);
+ } else {
+ ['title', 'html', 'icon'].forEach((name, index) => {
+ const arg = args[index];
+
+ if (typeof arg === 'string' || isElement(arg)) {
+ params[name] = arg;
+ } else if (arg !== undefined) {
+ error("Unexpected type of ".concat(name, "! Expected \"string\" or \"Element\", got ").concat(typeof arg));
+ }
+ });
+ }
+
+ return params;
+ };
+
+ const swalPrefix = 'swal2-';
+ const prefix = items => {
+ const result = {};
+
+ for (const i in items) {
+ result[items[i]] = swalPrefix + items[i];
+ }
+
+ return result;
+ };
+ const swalClasses = prefix(['container', 'shown', 'height-auto', 'iosfix', 'popup', 'modal', 'no-backdrop', 'no-transition', 'toast', 'toast-shown', 'show', 'hide', 'close', 'title', 'html-container', 'actions', 'confirm', 'deny', 'cancel', 'default-outline', 'footer', 'icon', 'icon-content', 'image', 'input', 'file', 'range', 'select', 'radio', 'checkbox', 'label', 'textarea', 'inputerror', 'input-label', 'validation-message', 'progress-steps', 'active-progress-step', 'progress-step', 'progress-step-line', 'loader', 'loading', 'styled', 'top', 'top-start', 'top-end', 'top-left', 'top-right', 'center', 'center-start', 'center-end', 'center-left', 'center-right', 'bottom', 'bottom-start', 'bottom-end', 'bottom-left', 'bottom-right', 'grow-row', 'grow-column', 'grow-fullscreen', 'rtl', 'timer-progress-bar', 'timer-progress-bar-container', 'scrollbar-measure', 'icon-success', 'icon-warning', 'icon-info', 'icon-question', 'icon-error']);
+ const iconTypes = prefix(['success', 'warning', 'info', 'question', 'error']);
+
+ const getContainer = () => document.body.querySelector(".".concat(swalClasses.container));
+ const elementBySelector = selectorString => {
+ const container = getContainer();
+ return container ? container.querySelector(selectorString) : null;
+ };
+
+ const elementByClass = className => {
+ return elementBySelector(".".concat(className));
+ };
+
+ const getPopup = () => elementByClass(swalClasses.popup);
+ const getIcon = () => elementByClass(swalClasses.icon);
+ const getTitle = () => elementByClass(swalClasses.title);
+ const getHtmlContainer = () => elementByClass(swalClasses['html-container']);
+ const getImage = () => elementByClass(swalClasses.image);
+ const getProgressSteps = () => elementByClass(swalClasses['progress-steps']);
+ const getValidationMessage = () => elementByClass(swalClasses['validation-message']);
+ const getConfirmButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.confirm));
+ const getDenyButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.deny));
+ const getInputLabel = () => elementByClass(swalClasses['input-label']);
+ const getLoader = () => elementBySelector(".".concat(swalClasses.loader));
+ const getCancelButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.cancel));
+ const getActions = () => elementByClass(swalClasses.actions);
+ const getFooter = () => elementByClass(swalClasses.footer);
+ const getTimerProgressBar = () => elementByClass(swalClasses['timer-progress-bar']);
+ const getCloseButton = () => elementByClass(swalClasses.close); // https://github.com/jkup/focusable/blob/master/index.js
+
+ const focusable = "\n a[href],\n area[href],\n input:not([disabled]),\n select:not([disabled]),\n textarea:not([disabled]),\n button:not([disabled]),\n iframe,\n object,\n embed,\n [tabindex=\"0\"],\n [contenteditable],\n audio[controls],\n video[controls],\n summary\n";
+ const getFocusableElements = () => {
+ const focusableElementsWithTabindex = toArray(getPopup().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')) // sort according to tabindex
+ .sort((a, b) => {
+ a = parseInt(a.getAttribute('tabindex'));
+ b = parseInt(b.getAttribute('tabindex'));
+
+ if (a > b) {
+ return 1;
+ } else if (a < b) {
+ return -1;
+ }
+
+ return 0;
+ });
+ const otherFocusableElements = toArray(getPopup().querySelectorAll(focusable)).filter(el => el.getAttribute('tabindex') !== '-1');
+ return uniqueArray(focusableElementsWithTabindex.concat(otherFocusableElements)).filter(el => isVisible(el));
+ };
+ const isModal = () => {
+ return !isToast() && !document.body.classList.contains(swalClasses['no-backdrop']);
+ };
+ const isToast = () => {
+ return document.body.classList.contains(swalClasses['toast-shown']);
+ };
+ const isLoading = () => {
+ return getPopup().hasAttribute('data-loading');
+ };
+
+ const states = {
+ previousBodyPadding: null
+ };
+ const setInnerHtml = (elem, html) => {
+ // #1926
+ elem.textContent = '';
+
+ if (html) {
+ const parser = new DOMParser();
+ const parsed = parser.parseFromString(html, "text/html");
+ toArray(parsed.querySelector('head').childNodes).forEach(child => {
+ elem.appendChild(child);
+ });
+ toArray(parsed.querySelector('body').childNodes).forEach(child => {
+ elem.appendChild(child);
+ });
+ }
+ };
+ const hasClass = (elem, className) => {
+ if (!className) {
+ return false;
+ }
+
+ const classList = className.split(/\s+/);
+
+ for (let i = 0; i < classList.length; i++) {
+ if (!elem.classList.contains(classList[i])) {
+ return false;
+ }
+ }
+
+ return true;
+ };
+
+ const removeCustomClasses = (elem, params) => {
+ toArray(elem.classList).forEach(className => {
+ if (!Object.values(swalClasses).includes(className) && !Object.values(iconTypes).includes(className) && !Object.values(params.showClass).includes(className)) {
+ elem.classList.remove(className);
+ }
+ });
+ };
+
+ const applyCustomClass = (elem, params, className) => {
+ removeCustomClasses(elem, params);
+
+ if (params.customClass && params.customClass[className]) {
+ if (typeof params.customClass[className] !== 'string' && !params.customClass[className].forEach) {
+ return warn("Invalid type of customClass.".concat(className, "! Expected string or iterable object, got \"").concat(typeof params.customClass[className], "\""));
+ }
+
+ addClass(elem, params.customClass[className]);
+ }
+ };
+ const getInput = (popup, inputType) => {
+ if (!inputType) {
+ return null;
+ }
+
+ switch (inputType) {
+ case 'select':
+ case 'textarea':
+ case 'file':
+ return getChildByClass(popup, swalClasses[inputType]);
+
+ case 'checkbox':
+ return popup.querySelector(".".concat(swalClasses.checkbox, " input"));
+
+ case 'radio':
+ return popup.querySelector(".".concat(swalClasses.radio, " input:checked")) || popup.querySelector(".".concat(swalClasses.radio, " input:first-child"));
+
+ case 'range':
+ return popup.querySelector(".".concat(swalClasses.range, " input"));
+
+ default:
+ return getChildByClass(popup, swalClasses.input);
+ }
+ };
+ const focusInput = input => {
+ input.focus(); // place cursor at end of text in text input
+
+ if (input.type !== 'file') {
+ // http://stackoverflow.com/a/2345915
+ const val = input.value;
+ input.value = '';
+ input.value = val;
+ }
+ };
+ const toggleClass = (target, classList, condition) => {
+ if (!target || !classList) {
+ return;
+ }
+
+ if (typeof classList === 'string') {
+ classList = classList.split(/\s+/).filter(Boolean);
+ }
+
+ classList.forEach(className => {
+ if (target.forEach) {
+ target.forEach(elem => {
+ condition ? elem.classList.add(className) : elem.classList.remove(className);
+ });
+ } else {
+ condition ? target.classList.add(className) : target.classList.remove(className);
+ }
+ });
+ };
+ const addClass = (target, classList) => {
+ toggleClass(target, classList, true);
+ };
+ const removeClass = (target, classList) => {
+ toggleClass(target, classList, false);
+ };
+ const getChildByClass = (elem, className) => {
+ for (let i = 0; i < elem.childNodes.length; i++) {
+ if (hasClass(elem.childNodes[i], className)) {
+ return elem.childNodes[i];
+ }
+ }
+ };
+ const applyNumericalStyle = (elem, property, value) => {
+ if (value === "".concat(parseInt(value))) {
+ value = parseInt(value);
+ }
+
+ if (value || parseInt(value) === 0) {
+ elem.style[property] = typeof value === 'number' ? "".concat(value, "px") : value;
+ } else {
+ elem.style.removeProperty(property);
+ }
+ };
+ const show = (elem, display = 'flex') => {
+ elem.style.display = display;
+ };
+ const hide = elem => {
+ elem.style.display = 'none';
+ };
+ const setStyle = (parent, selector, property, value) => {
+ const el = parent.querySelector(selector);
+
+ if (el) {
+ el.style[property] = value;
+ }
+ };
+ const toggle = (elem, condition, display) => {
+ condition ? show(elem, display) : hide(elem);
+ }; // borrowed from jquery $(elem).is(':visible') implementation
+
+ const isVisible = elem => !!(elem && (elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length));
+ const allButtonsAreHidden = () => !isVisible(getConfirmButton()) && !isVisible(getDenyButton()) && !isVisible(getCancelButton());
+ const isScrollable = elem => !!(elem.scrollHeight > elem.clientHeight); // borrowed from https://stackoverflow.com/a/46352119
+
+ const hasCssAnimation = elem => {
+ const style = window.getComputedStyle(elem);
+ const animDuration = parseFloat(style.getPropertyValue('animation-duration') || '0');
+ const transDuration = parseFloat(style.getPropertyValue('transition-duration') || '0');
+ return animDuration > 0 || transDuration > 0;
+ };
+ const animateTimerProgressBar = (timer, reset = false) => {
+ const timerProgressBar = getTimerProgressBar();
+
+ if (isVisible(timerProgressBar)) {
+ if (reset) {
+ timerProgressBar.style.transition = 'none';
+ timerProgressBar.style.width = '100%';
+ }
+
+ setTimeout(() => {
+ timerProgressBar.style.transition = "width ".concat(timer / 1000, "s linear");
+ timerProgressBar.style.width = '0%';
+ }, 10);
+ }
+ };
+ const stopTimerProgressBar = () => {
+ const timerProgressBar = getTimerProgressBar();
+ const timerProgressBarWidth = parseInt(window.getComputedStyle(timerProgressBar).width);
+ timerProgressBar.style.removeProperty('transition');
+ timerProgressBar.style.width = '100%';
+ const timerProgressBarFullWidth = parseInt(window.getComputedStyle(timerProgressBar).width);
+ const timerProgressBarPercent = parseInt(timerProgressBarWidth / timerProgressBarFullWidth * 100);
+ timerProgressBar.style.removeProperty('transition');
+ timerProgressBar.style.width = "".concat(timerProgressBarPercent, "%");
+ };
+
+ // Detect Node env
+ const isNodeEnv = () => typeof window === 'undefined' || typeof document === 'undefined';
+
+ const sweetHTML = "\n \n").replace(/(^|\n)\s*/g, '');
+
+ const resetOldContainer = () => {
+ const oldContainer = getContainer();
+
+ if (!oldContainer) {
+ return false;
+ }
+
+ oldContainer.remove();
+ removeClass([document.documentElement, document.body], [swalClasses['no-backdrop'], swalClasses['toast-shown'], swalClasses['has-column']]);
+ return true;
+ };
+
+ const resetValidationMessage = () => {
+ if (Swal.isVisible()) {
+ Swal.resetValidationMessage();
+ }
+ };
+
+ const addInputChangeListeners = () => {
+ const popup = getPopup();
+ const input = getChildByClass(popup, swalClasses.input);
+ const file = getChildByClass(popup, swalClasses.file);
+ const range = popup.querySelector(".".concat(swalClasses.range, " input"));
+ const rangeOutput = popup.querySelector(".".concat(swalClasses.range, " output"));
+ const select = getChildByClass(popup, swalClasses.select);
+ const checkbox = popup.querySelector(".".concat(swalClasses.checkbox, " input"));
+ const textarea = getChildByClass(popup, swalClasses.textarea);
+ input.oninput = resetValidationMessage;
+ file.onchange = resetValidationMessage;
+ select.onchange = resetValidationMessage;
+ checkbox.onchange = resetValidationMessage;
+ textarea.oninput = resetValidationMessage;
+
+ range.oninput = () => {
+ resetValidationMessage();
+ rangeOutput.value = range.value;
+ };
+
+ range.onchange = () => {
+ resetValidationMessage();
+ range.nextSibling.value = range.value;
+ };
+ };
+
+ const getTarget = target => typeof target === 'string' ? document.querySelector(target) : target;
+
+ const setupAccessibility = params => {
+ const popup = getPopup();
+ popup.setAttribute('role', params.toast ? 'alert' : 'dialog');
+ popup.setAttribute('aria-live', params.toast ? 'polite' : 'assertive');
+
+ if (!params.toast) {
+ popup.setAttribute('aria-modal', 'true');
+ }
+ };
+
+ const setupRTL = targetElement => {
+ if (window.getComputedStyle(targetElement).direction === 'rtl') {
+ addClass(getContainer(), swalClasses.rtl);
+ }
+ };
+ /*
+ * Add modal + backdrop to DOM
+ */
+
+
+ const init = params => {
+ // Clean up the old popup container if it exists
+ const oldContainerExisted = resetOldContainer();
+ /* istanbul ignore if */
+
+ if (isNodeEnv()) {
+ error('SweetAlert2 requires document to initialize');
+ return;
+ }
+
+ const container = document.createElement('div');
+ container.className = swalClasses.container;
+
+ if (oldContainerExisted) {
+ addClass(container, swalClasses['no-transition']);
+ }
+
+ setInnerHtml(container, sweetHTML);
+ const targetElement = getTarget(params.target);
+ targetElement.appendChild(container);
+ setupAccessibility(params);
+ setupRTL(targetElement);
+ addInputChangeListeners();
+ };
+
+ const parseHtmlToContainer = (param, target) => {
+ // DOM element
+ if (param instanceof HTMLElement) {
+ target.appendChild(param); // Object
+ } else if (typeof param === 'object') {
+ handleObject(param, target); // Plain string
+ } else if (param) {
+ setInnerHtml(target, param);
+ }
+ };
+
+ const handleObject = (param, target) => {
+ // JQuery element(s)
+ if (param.jquery) {
+ handleJqueryElem(target, param); // For other objects use their string representation
+ } else {
+ setInnerHtml(target, param.toString());
+ }
+ };
+
+ const handleJqueryElem = (target, elem) => {
+ target.textContent = '';
+
+ if (0 in elem) {
+ for (let i = 0; (i in elem); i++) {
+ target.appendChild(elem[i].cloneNode(true));
+ }
+ } else {
+ target.appendChild(elem.cloneNode(true));
+ }
+ };
+
+ const animationEndEvent = (() => {
+ // Prevent run in Node env
+
+ /* istanbul ignore if */
+ if (isNodeEnv()) {
+ return false;
+ }
+
+ const testEl = document.createElement('div');
+ const transEndEventNames = {
+ WebkitAnimation: 'webkitAnimationEnd',
+ OAnimation: 'oAnimationEnd oanimationend',
+ animation: 'animationend'
+ };
+
+ for (const i in transEndEventNames) {
+ if (Object.prototype.hasOwnProperty.call(transEndEventNames, i) && typeof testEl.style[i] !== 'undefined') {
+ return transEndEventNames[i];
+ }
+ }
+
+ return false;
+ })();
+
+ // https://github.com/twbs/bootstrap/blob/master/js/src/modal.js
+
+ const measureScrollbar = () => {
+ const scrollDiv = document.createElement('div');
+ scrollDiv.className = swalClasses['scrollbar-measure'];
+ document.body.appendChild(scrollDiv);
+ const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
+ document.body.removeChild(scrollDiv);
+ return scrollbarWidth;
+ };
+
+ const renderActions = (instance, params) => {
+ const actions = getActions();
+ const loader = getLoader();
+ const confirmButton = getConfirmButton();
+ const denyButton = getDenyButton();
+ const cancelButton = getCancelButton(); // Actions (buttons) wrapper
+
+ if (!params.showConfirmButton && !params.showDenyButton && !params.showCancelButton) {
+ hide(actions);
+ } else {
+ show(actions);
+ } // Custom class
+
+
+ applyCustomClass(actions, params, 'actions'); // Render buttons
+
+ renderButton(confirmButton, 'confirm', params);
+ renderButton(denyButton, 'deny', params);
+ renderButton(cancelButton, 'cancel', params);
+ handleButtonsStyling(confirmButton, denyButton, cancelButton, params);
+
+ if (params.reverseButtons) {
+ actions.insertBefore(cancelButton, loader);
+ actions.insertBefore(denyButton, loader);
+ actions.insertBefore(confirmButton, loader);
+ } // Loader
+
+
+ setInnerHtml(loader, params.loaderHtml);
+ applyCustomClass(loader, params, 'loader');
+ };
+
+ function handleButtonsStyling(confirmButton, denyButton, cancelButton, params) {
+ if (!params.buttonsStyling) {
+ return removeClass([confirmButton, denyButton, cancelButton], swalClasses.styled);
+ }
+
+ addClass([confirmButton, denyButton, cancelButton], swalClasses.styled); // Buttons background colors
+
+ if (params.confirmButtonColor) {
+ confirmButton.style.backgroundColor = params.confirmButtonColor;
+ addClass(confirmButton, swalClasses['default-outline']);
+ }
+
+ if (params.denyButtonColor) {
+ denyButton.style.backgroundColor = params.denyButtonColor;
+ addClass(denyButton, swalClasses['default-outline']);
+ }
+
+ if (params.cancelButtonColor) {
+ cancelButton.style.backgroundColor = params.cancelButtonColor;
+ addClass(cancelButton, swalClasses['default-outline']);
+ }
+ }
+
+ function renderButton(button, buttonType, params) {
+ toggle(button, params["show".concat(capitalizeFirstLetter(buttonType), "Button")], 'inline-block');
+ setInnerHtml(button, params["".concat(buttonType, "ButtonText")]); // Set caption text
+
+ button.setAttribute('aria-label', params["".concat(buttonType, "ButtonAriaLabel")]); // ARIA label
+ // Add buttons custom classes
+
+ button.className = swalClasses[buttonType];
+ applyCustomClass(button, params, "".concat(buttonType, "Button"));
+ addClass(button, params["".concat(buttonType, "ButtonClass")]);
+ }
+
+ function handleBackdropParam(container, backdrop) {
+ if (typeof backdrop === 'string') {
+ container.style.background = backdrop;
+ } else if (!backdrop) {
+ addClass([document.documentElement, document.body], swalClasses['no-backdrop']);
+ }
+ }
+
+ function handlePositionParam(container, position) {
+ if (position in swalClasses) {
+ addClass(container, swalClasses[position]);
+ } else {
+ warn('The "position" parameter is not valid, defaulting to "center"');
+ addClass(container, swalClasses.center);
+ }
+ }
+
+ function handleGrowParam(container, grow) {
+ if (grow && typeof grow === 'string') {
+ const growClass = "grow-".concat(grow);
+
+ if (growClass in swalClasses) {
+ addClass(container, swalClasses[growClass]);
+ }
+ }
+ }
+
+ const renderContainer = (instance, params) => {
+ const container = getContainer();
+
+ if (!container) {
+ return;
+ }
+
+ handleBackdropParam(container, params.backdrop);
+ handlePositionParam(container, params.position);
+ handleGrowParam(container, params.grow); // Custom class
+
+ applyCustomClass(container, params, 'container');
+ };
+
+ /**
+ * This module containts `WeakMap`s for each effectively-"private property" that a `Swal` has.
+ * For example, to set the private property "foo" of `this` to "bar", you can `privateProps.foo.set(this, 'bar')`
+ * This is the approach that Babel will probably take to implement private methods/fields
+ * https://github.com/tc39/proposal-private-methods
+ * https://github.com/babel/babel/pull/7555
+ * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module*
+ * then we can use that language feature.
+ */
+ var privateProps = {
+ promise: new WeakMap(),
+ innerParams: new WeakMap(),
+ domCache: new WeakMap()
+ };
+
+ const inputTypes = ['input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea'];
+ const renderInput = (instance, params) => {
+ const popup = getPopup();
+ const innerParams = privateProps.innerParams.get(instance);
+ const rerender = !innerParams || params.input !== innerParams.input;
+ inputTypes.forEach(inputType => {
+ const inputClass = swalClasses[inputType];
+ const inputContainer = getChildByClass(popup, inputClass); // set attributes
+
+ setAttributes(inputType, params.inputAttributes); // set class
+
+ inputContainer.className = inputClass;
+
+ if (rerender) {
+ hide(inputContainer);
+ }
+ });
+
+ if (params.input) {
+ if (rerender) {
+ showInput(params);
+ } // set custom class
+
+
+ setCustomClass(params);
+ }
+ };
+
+ const showInput = params => {
+ if (!renderInputType[params.input]) {
+ return error("Unexpected type of input! Expected \"text\", \"email\", \"password\", \"number\", \"tel\", \"select\", \"radio\", \"checkbox\", \"textarea\", \"file\" or \"url\", got \"".concat(params.input, "\""));
+ }
+
+ const inputContainer = getInputContainer(params.input);
+ const input = renderInputType[params.input](inputContainer, params);
+ show(input); // input autofocus
+
+ setTimeout(() => {
+ focusInput(input);
+ });
+ };
+
+ const removeAttributes = input => {
+ for (let i = 0; i < input.attributes.length; i++) {
+ const attrName = input.attributes[i].name;
+
+ if (!['type', 'value', 'style'].includes(attrName)) {
+ input.removeAttribute(attrName);
+ }
+ }
+ };
+
+ const setAttributes = (inputType, inputAttributes) => {
+ const input = getInput(getPopup(), inputType);
+
+ if (!input) {
+ return;
+ }
+
+ removeAttributes(input);
+
+ for (const attr in inputAttributes) {
+ input.setAttribute(attr, inputAttributes[attr]);
+ }
+ };
+
+ const setCustomClass = params => {
+ const inputContainer = getInputContainer(params.input);
+
+ if (params.customClass) {
+ addClass(inputContainer, params.customClass.input);
+ }
+ };
+
+ const setInputPlaceholder = (input, params) => {
+ if (!input.placeholder || params.inputPlaceholder) {
+ input.placeholder = params.inputPlaceholder;
+ }
+ };
+
+ const setInputLabel = (input, prependTo, params) => {
+ if (params.inputLabel) {
+ input.id = swalClasses.input;
+ const label = document.createElement('label');
+ const labelClass = swalClasses['input-label'];
+ label.setAttribute('for', input.id);
+ label.className = labelClass;
+ addClass(label, params.customClass.inputLabel);
+ label.innerText = params.inputLabel;
+ prependTo.insertAdjacentElement('beforebegin', label);
+ }
+ };
+
+ const getInputContainer = inputType => {
+ const inputClass = swalClasses[inputType] ? swalClasses[inputType] : swalClasses.input;
+ return getChildByClass(getPopup(), inputClass);
+ };
+
+ const renderInputType = {};
+
+ renderInputType.text = renderInputType.email = renderInputType.password = renderInputType.number = renderInputType.tel = renderInputType.url = (input, params) => {
+ if (typeof params.inputValue === 'string' || typeof params.inputValue === 'number') {
+ input.value = params.inputValue;
+ } else if (!isPromise(params.inputValue)) {
+ warn("Unexpected type of inputValue! Expected \"string\", \"number\" or \"Promise\", got \"".concat(typeof params.inputValue, "\""));
+ }
+
+ setInputLabel(input, input, params);
+ setInputPlaceholder(input, params);
+ input.type = params.input;
+ return input;
+ };
+
+ renderInputType.file = (input, params) => {
+ setInputLabel(input, input, params);
+ setInputPlaceholder(input, params);
+ return input;
+ };
+
+ renderInputType.range = (range, params) => {
+ const rangeInput = range.querySelector('input');
+ const rangeOutput = range.querySelector('output');
+ rangeInput.value = params.inputValue;
+ rangeInput.type = params.input;
+ rangeOutput.value = params.inputValue;
+ setInputLabel(rangeInput, range, params);
+ return range;
+ };
+
+ renderInputType.select = (select, params) => {
+ select.textContent = '';
+
+ if (params.inputPlaceholder) {
+ const placeholder = document.createElement('option');
+ setInnerHtml(placeholder, params.inputPlaceholder);
+ placeholder.value = '';
+ placeholder.disabled = true;
+ placeholder.selected = true;
+ select.appendChild(placeholder);
+ }
+
+ setInputLabel(select, select, params);
+ return select;
+ };
+
+ renderInputType.radio = radio => {
+ radio.textContent = '';
+ return radio;
+ };
+
+ renderInputType.checkbox = (checkboxContainer, params) => {
+ const checkbox = getInput(getPopup(), 'checkbox');
+ checkbox.value = 1;
+ checkbox.id = swalClasses.checkbox;
+ checkbox.checked = Boolean(params.inputValue);
+ const label = checkboxContainer.querySelector('span');
+ setInnerHtml(label, params.inputPlaceholder);
+ return checkboxContainer;
+ };
+
+ renderInputType.textarea = (textarea, params) => {
+ textarea.value = params.inputValue;
+ setInputPlaceholder(textarea, params);
+ setInputLabel(textarea, textarea, params);
+
+ const getMargin = el => parseInt(window.getComputedStyle(el).marginLeft) + parseInt(window.getComputedStyle(el).marginRight);
+
+ setTimeout(() => {
+ // #2291
+ if ('MutationObserver' in window) {
+ // #1699
+ const initialPopupWidth = parseInt(window.getComputedStyle(getPopup()).width);
+
+ const textareaResizeHandler = () => {
+ const textareaWidth = textarea.offsetWidth + getMargin(textarea);
+
+ if (textareaWidth > initialPopupWidth) {
+ getPopup().style.width = "".concat(textareaWidth, "px");
+ } else {
+ getPopup().style.width = null;
+ }
+ };
+
+ new MutationObserver(textareaResizeHandler).observe(textarea, {
+ attributes: true,
+ attributeFilter: ['style']
+ });
+ }
+ });
+ return textarea;
+ };
+
+ const renderContent = (instance, params) => {
+ const htmlContainer = getHtmlContainer();
+ applyCustomClass(htmlContainer, params, 'htmlContainer'); // Content as HTML
+
+ if (params.html) {
+ parseHtmlToContainer(params.html, htmlContainer);
+ show(htmlContainer, 'block'); // Content as plain text
+ } else if (params.text) {
+ htmlContainer.textContent = params.text;
+ show(htmlContainer, 'block'); // No content
+ } else {
+ hide(htmlContainer);
+ }
+
+ renderInput(instance, params);
+ };
+
+ const renderFooter = (instance, params) => {
+ const footer = getFooter();
+ toggle(footer, params.footer);
+
+ if (params.footer) {
+ parseHtmlToContainer(params.footer, footer);
+ } // Custom class
+
+
+ applyCustomClass(footer, params, 'footer');
+ };
+
+ const renderCloseButton = (instance, params) => {
+ const closeButton = getCloseButton();
+ setInnerHtml(closeButton, params.closeButtonHtml); // Custom class
+
+ applyCustomClass(closeButton, params, 'closeButton');
+ toggle(closeButton, params.showCloseButton);
+ closeButton.setAttribute('aria-label', params.closeButtonAriaLabel);
+ };
+
+ const renderIcon = (instance, params) => {
+ const innerParams = privateProps.innerParams.get(instance);
+ const icon = getIcon(); // if the given icon already rendered, apply the styling without re-rendering the icon
+
+ if (innerParams && params.icon === innerParams.icon) {
+ // Custom or default content
+ setContent(icon, params);
+ applyStyles(icon, params);
+ return;
+ }
+
+ if (!params.icon && !params.iconHtml) {
+ return hide(icon);
+ }
+
+ if (params.icon && Object.keys(iconTypes).indexOf(params.icon) === -1) {
+ error("Unknown icon! Expected \"success\", \"error\", \"warning\", \"info\" or \"question\", got \"".concat(params.icon, "\""));
+ return hide(icon);
+ }
+
+ show(icon); // Custom or default content
+
+ setContent(icon, params);
+ applyStyles(icon, params); // Animate icon
+
+ addClass(icon, params.showClass.icon);
+ };
+
+ const applyStyles = (icon, params) => {
+ for (const iconType in iconTypes) {
+ if (params.icon !== iconType) {
+ removeClass(icon, iconTypes[iconType]);
+ }
+ }
+
+ addClass(icon, iconTypes[params.icon]); // Icon color
+
+ setColor(icon, params); // Success icon background color
+
+ adjustSuccessIconBackgoundColor(); // Custom class
+
+ applyCustomClass(icon, params, 'icon');
+ }; // Adjust success icon background color to match the popup background color
+
+
+ const adjustSuccessIconBackgoundColor = () => {
+ const popup = getPopup();
+ const popupBackgroundColor = window.getComputedStyle(popup).getPropertyValue('background-color');
+ const successIconParts = popup.querySelectorAll('[class^=swal2-success-circular-line], .swal2-success-fix');
+
+ for (let i = 0; i < successIconParts.length; i++) {
+ successIconParts[i].style.backgroundColor = popupBackgroundColor;
+ }
+ };
+
+ const setContent = (icon, params) => {
+ icon.textContent = '';
+
+ if (params.iconHtml) {
+ setInnerHtml(icon, iconContent(params.iconHtml));
+ } else if (params.icon === 'success') {
+ setInnerHtml(icon, "\n
\n \n
\n
\n ");
+ } else if (params.icon === 'error') {
+ setInnerHtml(icon, "\n \n \n \n \n ");
+ } else {
+ const defaultIconHtml = {
+ question: '?',
+ warning: '!',
+ info: 'i'
+ };
+ setInnerHtml(icon, iconContent(defaultIconHtml[params.icon]));
+ }
+ };
+
+ const setColor = (icon, params) => {
+ if (!params.iconColor) {
+ return;
+ }
+
+ icon.style.color = params.iconColor;
+ icon.style.borderColor = params.iconColor;
+
+ for (const sel of ['.swal2-success-line-tip', '.swal2-success-line-long', '.swal2-x-mark-line-left', '.swal2-x-mark-line-right']) {
+ setStyle(icon, sel, 'backgroundColor', params.iconColor);
+ }
+
+ setStyle(icon, '.swal2-success-ring', 'borderColor', params.iconColor);
+ };
+
+ const iconContent = content => "").concat(content, "
");
+
+ const renderImage = (instance, params) => {
+ const image = getImage();
+
+ if (!params.imageUrl) {
+ return hide(image);
+ }
+
+ show(image, ''); // Src, alt
+
+ image.setAttribute('src', params.imageUrl);
+ image.setAttribute('alt', params.imageAlt); // Width, height
+
+ applyNumericalStyle(image, 'width', params.imageWidth);
+ applyNumericalStyle(image, 'height', params.imageHeight); // Class
+
+ image.className = swalClasses.image;
+ applyCustomClass(image, params, 'image');
+ };
+
+ const createStepElement = step => {
+ const stepEl = document.createElement('li');
+ addClass(stepEl, swalClasses['progress-step']);
+ setInnerHtml(stepEl, step);
+ return stepEl;
+ };
+
+ const createLineElement = params => {
+ const lineEl = document.createElement('li');
+ addClass(lineEl, swalClasses['progress-step-line']);
+
+ if (params.progressStepsDistance) {
+ lineEl.style.width = params.progressStepsDistance;
+ }
+
+ return lineEl;
+ };
+
+ const renderProgressSteps = (instance, params) => {
+ const progressStepsContainer = getProgressSteps();
+
+ if (!params.progressSteps || params.progressSteps.length === 0) {
+ return hide(progressStepsContainer);
+ }
+
+ show(progressStepsContainer);
+ progressStepsContainer.textContent = '';
+
+ if (params.currentProgressStep >= params.progressSteps.length) {
+ warn('Invalid currentProgressStep parameter, it should be less than progressSteps.length ' + '(currentProgressStep like JS arrays starts from 0)');
+ }
+
+ params.progressSteps.forEach((step, index) => {
+ const stepEl = createStepElement(step);
+ progressStepsContainer.appendChild(stepEl);
+
+ if (index === params.currentProgressStep) {
+ addClass(stepEl, swalClasses['active-progress-step']);
+ }
+
+ if (index !== params.progressSteps.length - 1) {
+ const lineEl = createLineElement(params);
+ progressStepsContainer.appendChild(lineEl);
+ }
+ });
+ };
+
+ const renderTitle = (instance, params) => {
+ const title = getTitle();
+ toggle(title, params.title || params.titleText, 'block');
+
+ if (params.title) {
+ parseHtmlToContainer(params.title, title);
+ }
+
+ if (params.titleText) {
+ title.innerText = params.titleText;
+ } // Custom class
+
+
+ applyCustomClass(title, params, 'title');
+ };
+
+ const renderPopup = (instance, params) => {
+ const container = getContainer();
+ const popup = getPopup(); // Width
+
+ if (params.toast) {
+ // #2170
+ applyNumericalStyle(container, 'width', params.width);
+ popup.style.width = '100%';
+ popup.insertBefore(getLoader(), getIcon());
+ } else {
+ applyNumericalStyle(popup, 'width', params.width);
+ } // Padding
+
+
+ applyNumericalStyle(popup, 'padding', params.padding); // Background
+
+ if (params.background) {
+ popup.style.background = params.background;
+ }
+
+ hide(getValidationMessage()); // Classes
+
+ addClasses(popup, params);
+ };
+
+ const addClasses = (popup, params) => {
+ // Default Class + showClass when updating Swal.update({})
+ popup.className = "".concat(swalClasses.popup, " ").concat(isVisible(popup) ? params.showClass.popup : '');
+
+ if (params.toast) {
+ addClass([document.documentElement, document.body], swalClasses['toast-shown']);
+ addClass(popup, swalClasses.toast);
+ } else {
+ addClass(popup, swalClasses.modal);
+ } // Custom class
+
+
+ applyCustomClass(popup, params, 'popup');
+
+ if (typeof params.customClass === 'string') {
+ addClass(popup, params.customClass);
+ } // Icon class (#1842)
+
+
+ if (params.icon) {
+ addClass(popup, swalClasses["icon-".concat(params.icon)]);
+ }
+ };
+
+ const render = (instance, params) => {
+ renderPopup(instance, params);
+ renderContainer(instance, params);
+ renderProgressSteps(instance, params);
+ renderIcon(instance, params);
+ renderImage(instance, params);
+ renderTitle(instance, params);
+ renderCloseButton(instance, params);
+ renderContent(instance, params);
+ renderActions(instance, params);
+ renderFooter(instance, params);
+
+ if (typeof params.didRender === 'function') {
+ params.didRender(getPopup());
+ }
+ };
+
+ /*
+ * Global function to determine if SweetAlert2 popup is shown
+ */
+
+ const isVisible$1 = () => {
+ return isVisible(getPopup());
+ };
+ /*
+ * Global function to click 'Confirm' button
+ */
+
+ const clickConfirm = () => getConfirmButton() && getConfirmButton().click();
+ /*
+ * Global function to click 'Deny' button
+ */
+
+ const clickDeny = () => getDenyButton() && getDenyButton().click();
+ /*
+ * Global function to click 'Cancel' button
+ */
+
+ const clickCancel = () => getCancelButton() && getCancelButton().click();
+
+ function fire(...args) {
+ const Swal = this;
+ return new Swal(...args);
+ }
+
+ /**
+ * Returns an extended version of `Swal` containing `params` as defaults.
+ * Useful for reusing Swal configuration.
+ *
+ * For example:
+ *
+ * Before:
+ * const textPromptOptions = { input: 'text', showCancelButton: true }
+ * const {value: firstName} = await Swal.fire({ ...textPromptOptions, title: 'What is your first name?' })
+ * const {value: lastName} = await Swal.fire({ ...textPromptOptions, title: 'What is your last name?' })
+ *
+ * After:
+ * const TextPrompt = Swal.mixin({ input: 'text', showCancelButton: true })
+ * const {value: firstName} = await TextPrompt('What is your first name?')
+ * const {value: lastName} = await TextPrompt('What is your last name?')
+ *
+ * @param mixinParams
+ */
+ function mixin(mixinParams) {
+ class MixinSwal extends this {
+ _main(params, priorityMixinParams) {
+ return super._main(params, Object.assign({}, mixinParams, priorityMixinParams));
+ }
+
+ }
+
+ return MixinSwal;
+ }
+
+ /**
+ * Shows loader (spinner), this is useful with AJAX requests.
+ * By default the loader be shown instead of the "Confirm" button.
+ */
+
+ const showLoading = buttonToReplace => {
+ let popup = getPopup();
+
+ if (!popup) {
+ Swal.fire();
+ }
+
+ popup = getPopup();
+ const loader = getLoader();
+
+ if (isToast()) {
+ hide(getIcon());
+ } else {
+ replaceButton(popup, buttonToReplace);
+ }
+
+ show(loader);
+ popup.setAttribute('data-loading', true);
+ popup.setAttribute('aria-busy', true);
+ popup.focus();
+ };
+
+ const replaceButton = (popup, buttonToReplace) => {
+ const actions = getActions();
+ const loader = getLoader();
+
+ if (!buttonToReplace && isVisible(getConfirmButton())) {
+ buttonToReplace = getConfirmButton();
+ }
+
+ show(actions);
+
+ if (buttonToReplace) {
+ hide(buttonToReplace);
+ loader.setAttribute('data-button-to-replace', buttonToReplace.className);
+ }
+
+ loader.parentNode.insertBefore(loader, buttonToReplace);
+ addClass([popup, actions], swalClasses.loading);
+ };
+
+ const RESTORE_FOCUS_TIMEOUT = 100;
+
+ const globalState = {};
+
+ const focusPreviousActiveElement = () => {
+ if (globalState.previousActiveElement && globalState.previousActiveElement.focus) {
+ globalState.previousActiveElement.focus();
+ globalState.previousActiveElement = null;
+ } else if (document.body) {
+ document.body.focus();
+ }
+ }; // Restore previous active (focused) element
+
+
+ const restoreActiveElement = returnFocus => {
+ return new Promise(resolve => {
+ if (!returnFocus) {
+ return resolve();
+ }
+
+ const x = window.scrollX;
+ const y = window.scrollY;
+ globalState.restoreFocusTimeout = setTimeout(() => {
+ focusPreviousActiveElement();
+ resolve();
+ }, RESTORE_FOCUS_TIMEOUT); // issues/900
+
+ window.scrollTo(x, y);
+ });
+ };
+
+ /**
+ * If `timer` parameter is set, returns number of milliseconds of timer remained.
+ * Otherwise, returns undefined.
+ */
+
+ const getTimerLeft = () => {
+ return globalState.timeout && globalState.timeout.getTimerLeft();
+ };
+ /**
+ * Stop timer. Returns number of milliseconds of timer remained.
+ * If `timer` parameter isn't set, returns undefined.
+ */
+
+ const stopTimer = () => {
+ if (globalState.timeout) {
+ stopTimerProgressBar();
+ return globalState.timeout.stop();
+ }
+ };
+ /**
+ * Resume timer. Returns number of milliseconds of timer remained.
+ * If `timer` parameter isn't set, returns undefined.
+ */
+
+ const resumeTimer = () => {
+ if (globalState.timeout) {
+ const remaining = globalState.timeout.start();
+ animateTimerProgressBar(remaining);
+ return remaining;
+ }
+ };
+ /**
+ * Resume timer. Returns number of milliseconds of timer remained.
+ * If `timer` parameter isn't set, returns undefined.
+ */
+
+ const toggleTimer = () => {
+ const timer = globalState.timeout;
+ return timer && (timer.running ? stopTimer() : resumeTimer());
+ };
+ /**
+ * Increase timer. Returns number of milliseconds of an updated timer.
+ * If `timer` parameter isn't set, returns undefined.
+ */
+
+ const increaseTimer = n => {
+ if (globalState.timeout) {
+ const remaining = globalState.timeout.increase(n);
+ animateTimerProgressBar(remaining, true);
+ return remaining;
+ }
+ };
+ /**
+ * Check if timer is running. Returns true if timer is running
+ * or false if timer is paused or stopped.
+ * If `timer` parameter isn't set, returns undefined
+ */
+
+ const isTimerRunning = () => {
+ return globalState.timeout && globalState.timeout.isRunning();
+ };
+
+ let bodyClickListenerAdded = false;
+ const clickHandlers = {};
+ function bindClickHandler(attr = 'data-swal-template') {
+ clickHandlers[attr] = this;
+
+ if (!bodyClickListenerAdded) {
+ document.body.addEventListener('click', bodyClickListener);
+ bodyClickListenerAdded = true;
+ }
+ }
+
+ const bodyClickListener = event => {
+ for (let el = event.target; el && el !== document; el = el.parentNode) {
+ for (const attr in clickHandlers) {
+ const template = el.getAttribute(attr);
+
+ if (template) {
+ clickHandlers[attr].fire({
+ template
+ });
+ return;
+ }
+ }
+ }
+ };
+
+ const defaultParams = {
+ title: '',
+ titleText: '',
+ text: '',
+ html: '',
+ footer: '',
+ icon: undefined,
+ iconColor: undefined,
+ iconHtml: undefined,
+ template: undefined,
+ toast: false,
+ showClass: {
+ popup: 'swal2-show',
+ backdrop: 'swal2-backdrop-show',
+ icon: 'swal2-icon-show'
+ },
+ hideClass: {
+ popup: 'swal2-hide',
+ backdrop: 'swal2-backdrop-hide',
+ icon: 'swal2-icon-hide'
+ },
+ customClass: {},
+ target: 'body',
+ backdrop: true,
+ heightAuto: true,
+ allowOutsideClick: true,
+ allowEscapeKey: true,
+ allowEnterKey: true,
+ stopKeydownPropagation: true,
+ keydownListenerCapture: false,
+ showConfirmButton: true,
+ showDenyButton: false,
+ showCancelButton: false,
+ preConfirm: undefined,
+ preDeny: undefined,
+ confirmButtonText: 'OK',
+ confirmButtonAriaLabel: '',
+ confirmButtonColor: undefined,
+ denyButtonText: 'No',
+ denyButtonAriaLabel: '',
+ denyButtonColor: undefined,
+ cancelButtonText: 'Cancel',
+ cancelButtonAriaLabel: '',
+ cancelButtonColor: undefined,
+ buttonsStyling: true,
+ reverseButtons: false,
+ focusConfirm: true,
+ focusDeny: false,
+ focusCancel: false,
+ returnFocus: true,
+ showCloseButton: false,
+ closeButtonHtml: '×',
+ closeButtonAriaLabel: 'Close this dialog',
+ loaderHtml: '',
+ showLoaderOnConfirm: false,
+ showLoaderOnDeny: false,
+ imageUrl: undefined,
+ imageWidth: undefined,
+ imageHeight: undefined,
+ imageAlt: '',
+ timer: undefined,
+ timerProgressBar: false,
+ width: undefined,
+ padding: undefined,
+ background: undefined,
+ input: undefined,
+ inputPlaceholder: '',
+ inputLabel: '',
+ inputValue: '',
+ inputOptions: {},
+ inputAutoTrim: true,
+ inputAttributes: {},
+ inputValidator: undefined,
+ returnInputValueOnDeny: false,
+ validationMessage: undefined,
+ grow: false,
+ position: 'center',
+ progressSteps: [],
+ currentProgressStep: undefined,
+ progressStepsDistance: undefined,
+ willOpen: undefined,
+ didOpen: undefined,
+ didRender: undefined,
+ willClose: undefined,
+ didClose: undefined,
+ didDestroy: undefined,
+ scrollbarPadding: true
+ };
+ const updatableParams = ['allowEscapeKey', 'allowOutsideClick', 'background', 'buttonsStyling', 'cancelButtonAriaLabel', 'cancelButtonColor', 'cancelButtonText', 'closeButtonAriaLabel', 'closeButtonHtml', 'confirmButtonAriaLabel', 'confirmButtonColor', 'confirmButtonText', 'currentProgressStep', 'customClass', 'denyButtonAriaLabel', 'denyButtonColor', 'denyButtonText', 'didClose', 'didDestroy', 'footer', 'hideClass', 'html', 'icon', 'iconColor', 'iconHtml', 'imageAlt', 'imageHeight', 'imageUrl', 'imageWidth', 'preConfirm', 'preDeny', 'progressSteps', 'returnFocus', 'reverseButtons', 'showCancelButton', 'showCloseButton', 'showConfirmButton', 'showDenyButton', 'text', 'title', 'titleText', 'willClose'];
+ const deprecatedParams = {};
+ const toastIncompatibleParams = ['allowOutsideClick', 'allowEnterKey', 'backdrop', 'focusConfirm', 'focusDeny', 'focusCancel', 'returnFocus', 'heightAuto', 'keydownListenerCapture'];
+ /**
+ * Is valid parameter
+ * @param {String} paramName
+ */
+
+ const isValidParameter = paramName => {
+ return Object.prototype.hasOwnProperty.call(defaultParams, paramName);
+ };
+ /**
+ * Is valid parameter for Swal.update() method
+ * @param {String} paramName
+ */
+
+ const isUpdatableParameter = paramName => {
+ return updatableParams.indexOf(paramName) !== -1;
+ };
+ /**
+ * Is deprecated parameter
+ * @param {String} paramName
+ */
+
+ const isDeprecatedParameter = paramName => {
+ return deprecatedParams[paramName];
+ };
+
+ const checkIfParamIsValid = param => {
+ if (!isValidParameter(param)) {
+ warn("Unknown parameter \"".concat(param, "\""));
+ }
+ };
+
+ const checkIfToastParamIsValid = param => {
+ if (toastIncompatibleParams.includes(param)) {
+ warn("The parameter \"".concat(param, "\" is incompatible with toasts"));
+ }
+ };
+
+ const checkIfParamIsDeprecated = param => {
+ if (isDeprecatedParameter(param)) {
+ warnAboutDeprecation(param, isDeprecatedParameter(param));
+ }
+ };
+ /**
+ * Show relevant warnings for given params
+ *
+ * @param params
+ */
+
+
+ const showWarningsForParams = params => {
+ if (!params.backdrop && params.allowOutsideClick) {
+ warn('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`');
+ }
+
+ for (const param in params) {
+ checkIfParamIsValid(param);
+
+ if (params.toast) {
+ checkIfToastParamIsValid(param);
+ }
+
+ checkIfParamIsDeprecated(param);
+ }
+ };
+
+
+
+ var staticMethods = /*#__PURE__*/Object.freeze({
+ isValidParameter: isValidParameter,
+ isUpdatableParameter: isUpdatableParameter,
+ isDeprecatedParameter: isDeprecatedParameter,
+ argsToParams: argsToParams,
+ isVisible: isVisible$1,
+ clickConfirm: clickConfirm,
+ clickDeny: clickDeny,
+ clickCancel: clickCancel,
+ getContainer: getContainer,
+ getPopup: getPopup,
+ getTitle: getTitle,
+ getHtmlContainer: getHtmlContainer,
+ getImage: getImage,
+ getIcon: getIcon,
+ getInputLabel: getInputLabel,
+ getCloseButton: getCloseButton,
+ getActions: getActions,
+ getConfirmButton: getConfirmButton,
+ getDenyButton: getDenyButton,
+ getCancelButton: getCancelButton,
+ getLoader: getLoader,
+ getFooter: getFooter,
+ getTimerProgressBar: getTimerProgressBar,
+ getFocusableElements: getFocusableElements,
+ getValidationMessage: getValidationMessage,
+ isLoading: isLoading,
+ fire: fire,
+ mixin: mixin,
+ showLoading: showLoading,
+ enableLoading: showLoading,
+ getTimerLeft: getTimerLeft,
+ stopTimer: stopTimer,
+ resumeTimer: resumeTimer,
+ toggleTimer: toggleTimer,
+ increaseTimer: increaseTimer,
+ isTimerRunning: isTimerRunning,
+ bindClickHandler: bindClickHandler
+ });
+
+ /**
+ * Hides loader and shows back the button which was hidden by .showLoading()
+ */
+
+ function hideLoading() {
+ // do nothing if popup is closed
+ const innerParams = privateProps.innerParams.get(this);
+
+ if (!innerParams) {
+ return;
+ }
+
+ const domCache = privateProps.domCache.get(this);
+ hide(domCache.loader);
+
+ if (isToast()) {
+ if (innerParams.icon) {
+ show(getIcon());
+ }
+ } else {
+ showRelatedButton(domCache);
+ }
+
+ removeClass([domCache.popup, domCache.actions], swalClasses.loading);
+ domCache.popup.removeAttribute('aria-busy');
+ domCache.popup.removeAttribute('data-loading');
+ domCache.confirmButton.disabled = false;
+ domCache.denyButton.disabled = false;
+ domCache.cancelButton.disabled = false;
+ }
+
+ const showRelatedButton = domCache => {
+ const buttonToReplace = domCache.popup.getElementsByClassName(domCache.loader.getAttribute('data-button-to-replace'));
+
+ if (buttonToReplace.length) {
+ show(buttonToReplace[0], 'inline-block');
+ } else if (allButtonsAreHidden()) {
+ hide(domCache.actions);
+ }
+ };
+
+ function getInput$1(instance) {
+ const innerParams = privateProps.innerParams.get(instance || this);
+ const domCache = privateProps.domCache.get(instance || this);
+
+ if (!domCache) {
+ return null;
+ }
+
+ return getInput(domCache.popup, innerParams.input);
+ }
+
+ const fixScrollbar = () => {
+ // for queues, do not do this more than once
+ if (states.previousBodyPadding !== null) {
+ return;
+ } // if the body has overflow
+
+
+ if (document.body.scrollHeight > window.innerHeight) {
+ // add padding so the content doesn't shift after removal of scrollbar
+ states.previousBodyPadding = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right'));
+ document.body.style.paddingRight = "".concat(states.previousBodyPadding + measureScrollbar(), "px");
+ }
+ };
+ const undoScrollbar = () => {
+ if (states.previousBodyPadding !== null) {
+ document.body.style.paddingRight = "".concat(states.previousBodyPadding, "px");
+ states.previousBodyPadding = null;
+ }
+ };
+
+ /* istanbul ignore file */
+
+ const iOSfix = () => {
+ const iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1;
+
+ if (iOS && !hasClass(document.body, swalClasses.iosfix)) {
+ const offset = document.body.scrollTop;
+ document.body.style.top = "".concat(offset * -1, "px");
+ addClass(document.body, swalClasses.iosfix);
+ lockBodyScroll();
+ addBottomPaddingForTallPopups(); // #1948
+ }
+ };
+
+ const addBottomPaddingForTallPopups = () => {
+ const safari = !navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i);
+
+ if (safari) {
+ const bottomPanelHeight = 44;
+
+ if (getPopup().scrollHeight > window.innerHeight - bottomPanelHeight) {
+ getContainer().style.paddingBottom = "".concat(bottomPanelHeight, "px");
+ }
+ }
+ };
+
+ const lockBodyScroll = () => {
+ // #1246
+ const container = getContainer();
+ let preventTouchMove;
+
+ container.ontouchstart = e => {
+ preventTouchMove = shouldPreventTouchMove(e);
+ };
+
+ container.ontouchmove = e => {
+ if (preventTouchMove) {
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ };
+ };
+
+ const shouldPreventTouchMove = event => {
+ const target = event.target;
+ const container = getContainer();
+
+ if (isStylys(event) || isZoom(event)) {
+ return false;
+ }
+
+ if (target === container) {
+ return true;
+ }
+
+ if (!isScrollable(container) && target.tagName !== 'INPUT' && // #1603
+ target.tagName !== 'TEXTAREA' && // #2266
+ !(isScrollable(getHtmlContainer()) && // #1944
+ getHtmlContainer().contains(target))) {
+ return true;
+ }
+
+ return false;
+ };
+
+ const isStylys = event => {
+ // #1786
+ return event.touches && event.touches.length && event.touches[0].touchType === 'stylus';
+ };
+
+ const isZoom = event => {
+ // #1891
+ return event.touches && event.touches.length > 1;
+ };
+
+ const undoIOSfix = () => {
+ if (hasClass(document.body, swalClasses.iosfix)) {
+ const offset = parseInt(document.body.style.top, 10);
+ removeClass(document.body, swalClasses.iosfix);
+ document.body.style.top = '';
+ document.body.scrollTop = offset * -1;
+ }
+ };
+
+ // Adding aria-hidden="true" to elements outside of the active modal dialog ensures that
+ // elements not within the active modal dialog will not be surfaced if a user opens a screen
+ // reader’s list of elements (headings, form controls, landmarks, etc.) in the document.
+
+ const setAriaHidden = () => {
+ const bodyChildren = toArray(document.body.children);
+ bodyChildren.forEach(el => {
+ if (el === getContainer() || el.contains(getContainer())) {
+ return;
+ }
+
+ if (el.hasAttribute('aria-hidden')) {
+ el.setAttribute('data-previous-aria-hidden', el.getAttribute('aria-hidden'));
+ }
+
+ el.setAttribute('aria-hidden', 'true');
+ });
+ };
+ const unsetAriaHidden = () => {
+ const bodyChildren = toArray(document.body.children);
+ bodyChildren.forEach(el => {
+ if (el.hasAttribute('data-previous-aria-hidden')) {
+ el.setAttribute('aria-hidden', el.getAttribute('data-previous-aria-hidden'));
+ el.removeAttribute('data-previous-aria-hidden');
+ } else {
+ el.removeAttribute('aria-hidden');
+ }
+ });
+ };
+
+ /**
+ * This module containts `WeakMap`s for each effectively-"private property" that a `Swal` has.
+ * For example, to set the private property "foo" of `this` to "bar", you can `privateProps.foo.set(this, 'bar')`
+ * This is the approach that Babel will probably take to implement private methods/fields
+ * https://github.com/tc39/proposal-private-methods
+ * https://github.com/babel/babel/pull/7555
+ * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module*
+ * then we can use that language feature.
+ */
+ var privateMethods = {
+ swalPromiseResolve: new WeakMap()
+ };
+
+ /*
+ * Instance method to close sweetAlert
+ */
+
+ function removePopupAndResetState(instance, container, returnFocus, didClose) {
+ if (isToast()) {
+ triggerDidCloseAndDispose(instance, didClose);
+ } else {
+ restoreActiveElement(returnFocus).then(() => triggerDidCloseAndDispose(instance, didClose));
+ globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, {
+ capture: globalState.keydownListenerCapture
+ });
+ globalState.keydownHandlerAdded = false;
+ }
+
+ const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); // workaround for #2088
+ // for some reason removing the container in Safari will scroll the document to bottom
+
+ if (isSafari) {
+ container.setAttribute('style', 'display:none !important');
+ container.removeAttribute('class');
+ container.innerHTML = '';
+ } else {
+ container.remove();
+ }
+
+ if (isModal()) {
+ undoScrollbar();
+ undoIOSfix();
+ unsetAriaHidden();
+ }
+
+ removeBodyClasses();
+ }
+
+ function removeBodyClasses() {
+ removeClass([document.documentElement, document.body], [swalClasses.shown, swalClasses['height-auto'], swalClasses['no-backdrop'], swalClasses['toast-shown']]);
+ }
+
+ function close(resolveValue) {
+ const popup = getPopup();
+
+ if (!popup) {
+ return;
+ }
+
+ resolveValue = prepareResolveValue(resolveValue);
+ const innerParams = privateProps.innerParams.get(this);
+
+ if (!innerParams || hasClass(popup, innerParams.hideClass.popup)) {
+ return;
+ }
+
+ const swalPromiseResolve = privateMethods.swalPromiseResolve.get(this);
+ removeClass(popup, innerParams.showClass.popup);
+ addClass(popup, innerParams.hideClass.popup);
+ const backdrop = getContainer();
+ removeClass(backdrop, innerParams.showClass.backdrop);
+ addClass(backdrop, innerParams.hideClass.backdrop);
+ handlePopupAnimation(this, popup, innerParams); // Resolve Swal promise
+
+ swalPromiseResolve(resolveValue);
+ }
+
+ const prepareResolveValue = resolveValue => {
+ // When user calls Swal.close()
+ if (typeof resolveValue === 'undefined') {
+ return {
+ isConfirmed: false,
+ isDenied: false,
+ isDismissed: true
+ };
+ }
+
+ return Object.assign({
+ isConfirmed: false,
+ isDenied: false,
+ isDismissed: false
+ }, resolveValue);
+ };
+
+ const handlePopupAnimation = (instance, popup, innerParams) => {
+ const container = getContainer(); // If animation is supported, animate
+
+ const animationIsSupported = animationEndEvent && hasCssAnimation(popup);
+
+ if (typeof innerParams.willClose === 'function') {
+ innerParams.willClose(popup);
+ }
+
+ if (animationIsSupported) {
+ animatePopup(instance, popup, container, innerParams.returnFocus, innerParams.didClose);
+ } else {
+ // Otherwise, remove immediately
+ removePopupAndResetState(instance, container, innerParams.returnFocus, innerParams.didClose);
+ }
+ };
+
+ const animatePopup = (instance, popup, container, returnFocus, didClose) => {
+ globalState.swalCloseEventFinishedCallback = removePopupAndResetState.bind(null, instance, container, returnFocus, didClose);
+ popup.addEventListener(animationEndEvent, function (e) {
+ if (e.target === popup) {
+ globalState.swalCloseEventFinishedCallback();
+ delete globalState.swalCloseEventFinishedCallback;
+ }
+ });
+ };
+
+ const triggerDidCloseAndDispose = (instance, didClose) => {
+ setTimeout(() => {
+ if (typeof didClose === 'function') {
+ didClose.bind(instance.params)();
+ }
+
+ instance._destroy();
+ });
+ };
+
+ function setButtonsDisabled(instance, buttons, disabled) {
+ const domCache = privateProps.domCache.get(instance);
+ buttons.forEach(button => {
+ domCache[button].disabled = disabled;
+ });
+ }
+
+ function setInputDisabled(input, disabled) {
+ if (!input) {
+ return false;
+ }
+
+ if (input.type === 'radio') {
+ const radiosContainer = input.parentNode.parentNode;
+ const radios = radiosContainer.querySelectorAll('input');
+
+ for (let i = 0; i < radios.length; i++) {
+ radios[i].disabled = disabled;
+ }
+ } else {
+ input.disabled = disabled;
+ }
+ }
+
+ function enableButtons() {
+ setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], false);
+ }
+ function disableButtons() {
+ setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], true);
+ }
+ function enableInput() {
+ return setInputDisabled(this.getInput(), false);
+ }
+ function disableInput() {
+ return setInputDisabled(this.getInput(), true);
+ }
+
+ function showValidationMessage(error) {
+ const domCache = privateProps.domCache.get(this);
+ const params = privateProps.innerParams.get(this);
+ setInnerHtml(domCache.validationMessage, error);
+ domCache.validationMessage.className = swalClasses['validation-message'];
+
+ if (params.customClass && params.customClass.validationMessage) {
+ addClass(domCache.validationMessage, params.customClass.validationMessage);
+ }
+
+ show(domCache.validationMessage);
+ const input = this.getInput();
+
+ if (input) {
+ input.setAttribute('aria-invalid', true);
+ input.setAttribute('aria-describedby', swalClasses['validation-message']);
+ focusInput(input);
+ addClass(input, swalClasses.inputerror);
+ }
+ } // Hide block with validation message
+
+ function resetValidationMessage$1() {
+ const domCache = privateProps.domCache.get(this);
+
+ if (domCache.validationMessage) {
+ hide(domCache.validationMessage);
+ }
+
+ const input = this.getInput();
+
+ if (input) {
+ input.removeAttribute('aria-invalid');
+ input.removeAttribute('aria-describedby');
+ removeClass(input, swalClasses.inputerror);
+ }
+ }
+
+ function getProgressSteps$1() {
+ const domCache = privateProps.domCache.get(this);
+ return domCache.progressSteps;
+ }
+
+ class Timer {
+ constructor(callback, delay) {
+ this.callback = callback;
+ this.remaining = delay;
+ this.running = false;
+ this.start();
+ }
+
+ start() {
+ if (!this.running) {
+ this.running = true;
+ this.started = new Date();
+ this.id = setTimeout(this.callback, this.remaining);
+ }
+
+ return this.remaining;
+ }
+
+ stop() {
+ if (this.running) {
+ this.running = false;
+ clearTimeout(this.id);
+ this.remaining -= new Date() - this.started;
+ }
+
+ return this.remaining;
+ }
+
+ increase(n) {
+ const running = this.running;
+
+ if (running) {
+ this.stop();
+ }
+
+ this.remaining += n;
+
+ if (running) {
+ this.start();
+ }
+
+ return this.remaining;
+ }
+
+ getTimerLeft() {
+ if (this.running) {
+ this.stop();
+ this.start();
+ }
+
+ return this.remaining;
+ }
+
+ isRunning() {
+ return this.running;
+ }
+
+ }
+
+ var defaultInputValidators = {
+ email: (string, validationMessage) => {
+ return /^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid email address');
+ },
+ url: (string, validationMessage) => {
+ // taken from https://stackoverflow.com/a/3809435 with a small change from #1306 and #2013
+ return /^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid URL');
+ }
+ };
+
+ function setDefaultInputValidators(params) {
+ // Use default `inputValidator` for supported input types if not provided
+ if (!params.inputValidator) {
+ Object.keys(defaultInputValidators).forEach(key => {
+ if (params.input === key) {
+ params.inputValidator = defaultInputValidators[key];
+ }
+ });
+ }
+ }
+
+ function validateCustomTargetElement(params) {
+ // Determine if the custom target element is valid
+ if (!params.target || typeof params.target === 'string' && !document.querySelector(params.target) || typeof params.target !== 'string' && !params.target.appendChild) {
+ warn('Target parameter is not valid, defaulting to "body"');
+ params.target = 'body';
+ }
+ }
+ /**
+ * Set type, text and actions on popup
+ *
+ * @param params
+ * @returns {boolean}
+ */
+
+
+ function setParameters(params) {
+ setDefaultInputValidators(params); // showLoaderOnConfirm && preConfirm
+
+ if (params.showLoaderOnConfirm && !params.preConfirm) {
+ warn('showLoaderOnConfirm is set to true, but preConfirm is not defined.\n' + 'showLoaderOnConfirm should be used together with preConfirm, see usage example:\n' + 'https://sweetalert2.github.io/#ajax-request');
+ }
+
+ validateCustomTargetElement(params); // Replace newlines with in title
+
+ if (typeof params.title === 'string') {
+ params.title = params.title.split('\n').join(' ');
+ }
+
+ init(params);
+ }
+
+ const swalStringParams = ['swal-title', 'swal-html', 'swal-footer'];
+ const getTemplateParams = params => {
+ const template = typeof params.template === 'string' ? document.querySelector(params.template) : params.template;
+
+ if (!template) {
+ return {};
+ }
+
+ const templateContent = template.content;
+ showWarningsForElements(templateContent);
+ const result = Object.assign(getSwalParams(templateContent), getSwalButtons(templateContent), getSwalImage(templateContent), getSwalIcon(templateContent), getSwalInput(templateContent), getSwalStringParams(templateContent, swalStringParams));
+ return result;
+ };
+
+ const getSwalParams = templateContent => {
+ const result = {};
+ toArray(templateContent.querySelectorAll('swal-param')).forEach(param => {
+ showWarningsForAttributes(param, ['name', 'value']);
+ const paramName = param.getAttribute('name');
+ let value = param.getAttribute('value');
+
+ if (typeof defaultParams[paramName] === 'boolean' && value === 'false') {
+ value = false;
+ }
+
+ if (typeof defaultParams[paramName] === 'object') {
+ value = JSON.parse(value);
+ }
+
+ result[paramName] = value;
+ });
+ return result;
+ };
+
+ const getSwalButtons = templateContent => {
+ const result = {};
+ toArray(templateContent.querySelectorAll('swal-button')).forEach(button => {
+ showWarningsForAttributes(button, ['type', 'color', 'aria-label']);
+ const type = button.getAttribute('type');
+ result["".concat(type, "ButtonText")] = button.innerHTML;
+ result["show".concat(capitalizeFirstLetter(type), "Button")] = true;
+
+ if (button.hasAttribute('color')) {
+ result["".concat(type, "ButtonColor")] = button.getAttribute('color');
+ }
+
+ if (button.hasAttribute('aria-label')) {
+ result["".concat(type, "ButtonAriaLabel")] = button.getAttribute('aria-label');
+ }
+ });
+ return result;
+ };
+
+ const getSwalImage = templateContent => {
+ const result = {};
+ const image = templateContent.querySelector('swal-image');
+
+ if (image) {
+ showWarningsForAttributes(image, ['src', 'width', 'height', 'alt']);
+
+ if (image.hasAttribute('src')) {
+ result.imageUrl = image.getAttribute('src');
+ }
+
+ if (image.hasAttribute('width')) {
+ result.imageWidth = image.getAttribute('width');
+ }
+
+ if (image.hasAttribute('height')) {
+ result.imageHeight = image.getAttribute('height');
+ }
+
+ if (image.hasAttribute('alt')) {
+ result.imageAlt = image.getAttribute('alt');
+ }
+ }
+
+ return result;
+ };
+
+ const getSwalIcon = templateContent => {
+ const result = {};
+ const icon = templateContent.querySelector('swal-icon');
+
+ if (icon) {
+ showWarningsForAttributes(icon, ['type', 'color']);
+
+ if (icon.hasAttribute('type')) {
+ result.icon = icon.getAttribute('type');
+ }
+
+ if (icon.hasAttribute('color')) {
+ result.iconColor = icon.getAttribute('color');
+ }
+
+ result.iconHtml = icon.innerHTML;
+ }
+
+ return result;
+ };
+
+ const getSwalInput = templateContent => {
+ const result = {};
+ const input = templateContent.querySelector('swal-input');
+
+ if (input) {
+ showWarningsForAttributes(input, ['type', 'label', 'placeholder', 'value']);
+ result.input = input.getAttribute('type') || 'text';
+
+ if (input.hasAttribute('label')) {
+ result.inputLabel = input.getAttribute('label');
+ }
+
+ if (input.hasAttribute('placeholder')) {
+ result.inputPlaceholder = input.getAttribute('placeholder');
+ }
+
+ if (input.hasAttribute('value')) {
+ result.inputValue = input.getAttribute('value');
+ }
+ }
+
+ const inputOptions = templateContent.querySelectorAll('swal-input-option');
+
+ if (inputOptions.length) {
+ result.inputOptions = {};
+ toArray(inputOptions).forEach(option => {
+ showWarningsForAttributes(option, ['value']);
+ const optionValue = option.getAttribute('value');
+ const optionName = option.innerHTML;
+ result.inputOptions[optionValue] = optionName;
+ });
+ }
+
+ return result;
+ };
+
+ const getSwalStringParams = (templateContent, paramNames) => {
+ const result = {};
+
+ for (const i in paramNames) {
+ const paramName = paramNames[i];
+ const tag = templateContent.querySelector(paramName);
+
+ if (tag) {
+ showWarningsForAttributes(tag, []);
+ result[paramName.replace(/^swal-/, '')] = tag.innerHTML.trim();
+ }
+ }
+
+ return result;
+ };
+
+ const showWarningsForElements = template => {
+ const allowedElements = swalStringParams.concat(['swal-param', 'swal-button', 'swal-image', 'swal-icon', 'swal-input', 'swal-input-option']);
+ toArray(template.children).forEach(el => {
+ const tagName = el.tagName.toLowerCase();
+
+ if (allowedElements.indexOf(tagName) === -1) {
+ warn("Unrecognized element <".concat(tagName, ">"));
+ }
+ });
+ };
+
+ const showWarningsForAttributes = (el, allowedAttributes) => {
+ toArray(el.attributes).forEach(attribute => {
+ if (allowedAttributes.indexOf(attribute.name) === -1) {
+ warn(["Unrecognized attribute \"".concat(attribute.name, "\" on <").concat(el.tagName.toLowerCase(), ">."), "".concat(allowedAttributes.length ? "Allowed attributes are: ".concat(allowedAttributes.join(', ')) : 'To set the value, use HTML within the element.')]);
+ }
+ });
+ };
+
+ const SHOW_CLASS_TIMEOUT = 10;
+ /**
+ * Open popup, add necessary classes and styles, fix scrollbar
+ *
+ * @param params
+ */
+
+ const openPopup = params => {
+ const container = getContainer();
+ const popup = getPopup();
+
+ if (typeof params.willOpen === 'function') {
+ params.willOpen(popup);
+ }
+
+ const bodyStyles = window.getComputedStyle(document.body);
+ const initialBodyOverflow = bodyStyles.overflowY;
+ addClasses$1(container, popup, params); // scrolling is 'hidden' until animation is done, after that 'auto'
+
+ setTimeout(() => {
+ setScrollingVisibility(container, popup);
+ }, SHOW_CLASS_TIMEOUT);
+
+ if (isModal()) {
+ fixScrollContainer(container, params.scrollbarPadding, initialBodyOverflow);
+ setAriaHidden();
+ }
+
+ if (!isToast() && !globalState.previousActiveElement) {
+ globalState.previousActiveElement = document.activeElement;
+ }
+
+ if (typeof params.didOpen === 'function') {
+ setTimeout(() => params.didOpen(popup));
+ }
+
+ removeClass(container, swalClasses['no-transition']);
+ };
+
+ const swalOpenAnimationFinished = event => {
+ const popup = getPopup();
+
+ if (event.target !== popup) {
+ return;
+ }
+
+ const container = getContainer();
+ popup.removeEventListener(animationEndEvent, swalOpenAnimationFinished);
+ container.style.overflowY = 'auto';
+ };
+
+ const setScrollingVisibility = (container, popup) => {
+ if (animationEndEvent && hasCssAnimation(popup)) {
+ container.style.overflowY = 'hidden';
+ popup.addEventListener(animationEndEvent, swalOpenAnimationFinished);
+ } else {
+ container.style.overflowY = 'auto';
+ }
+ };
+
+ const fixScrollContainer = (container, scrollbarPadding, initialBodyOverflow) => {
+ iOSfix();
+
+ if (scrollbarPadding && initialBodyOverflow !== 'hidden') {
+ fixScrollbar();
+ } // sweetalert2/issues/1247
+
+
+ setTimeout(() => {
+ container.scrollTop = 0;
+ });
+ };
+
+ const addClasses$1 = (container, popup, params) => {
+ addClass(container, params.showClass.backdrop); // the workaround with setting/unsetting opacity is needed for #2019 and 2059
+
+ popup.style.setProperty('opacity', '0', 'important');
+ show(popup, 'grid');
+ setTimeout(() => {
+ // Animate popup right after showing it
+ addClass(popup, params.showClass.popup); // and remove the opacity workaround
+
+ popup.style.removeProperty('opacity');
+ }, SHOW_CLASS_TIMEOUT); // 10ms in order to fix #2062
+
+ addClass([document.documentElement, document.body], swalClasses.shown);
+
+ if (params.heightAuto && params.backdrop && !params.toast) {
+ addClass([document.documentElement, document.body], swalClasses['height-auto']);
+ }
+ };
+
+ const handleInputOptionsAndValue = (instance, params) => {
+ if (params.input === 'select' || params.input === 'radio') {
+ handleInputOptions(instance, params);
+ } else if (['text', 'email', 'number', 'tel', 'textarea'].includes(params.input) && (hasToPromiseFn(params.inputValue) || isPromise(params.inputValue))) {
+ showLoading(getConfirmButton());
+ handleInputValue(instance, params);
+ }
+ };
+ const getInputValue = (instance, innerParams) => {
+ const input = instance.getInput();
+
+ if (!input) {
+ return null;
+ }
+
+ switch (innerParams.input) {
+ case 'checkbox':
+ return getCheckboxValue(input);
+
+ case 'radio':
+ return getRadioValue(input);
+
+ case 'file':
+ return getFileValue(input);
+
+ default:
+ return innerParams.inputAutoTrim ? input.value.trim() : input.value;
+ }
+ };
+
+ const getCheckboxValue = input => input.checked ? 1 : 0;
+
+ const getRadioValue = input => input.checked ? input.value : null;
+
+ const getFileValue = input => input.files.length ? input.getAttribute('multiple') !== null ? input.files : input.files[0] : null;
+
+ const handleInputOptions = (instance, params) => {
+ const popup = getPopup();
+
+ const processInputOptions = inputOptions => populateInputOptions[params.input](popup, formatInputOptions(inputOptions), params);
+
+ if (hasToPromiseFn(params.inputOptions) || isPromise(params.inputOptions)) {
+ showLoading(getConfirmButton());
+ asPromise(params.inputOptions).then(inputOptions => {
+ instance.hideLoading();
+ processInputOptions(inputOptions);
+ });
+ } else if (typeof params.inputOptions === 'object') {
+ processInputOptions(params.inputOptions);
+ } else {
+ error("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(typeof params.inputOptions));
+ }
+ };
+
+ const handleInputValue = (instance, params) => {
+ const input = instance.getInput();
+ hide(input);
+ asPromise(params.inputValue).then(inputValue => {
+ input.value = params.input === 'number' ? parseFloat(inputValue) || 0 : "".concat(inputValue);
+ show(input);
+ input.focus();
+ instance.hideLoading();
+ }).catch(err => {
+ error("Error in inputValue promise: ".concat(err));
+ input.value = '';
+ show(input);
+ input.focus();
+ instance.hideLoading();
+ });
+ };
+
+ const populateInputOptions = {
+ select: (popup, inputOptions, params) => {
+ const select = getChildByClass(popup, swalClasses.select);
+
+ const renderOption = (parent, optionLabel, optionValue) => {
+ const option = document.createElement('option');
+ option.value = optionValue;
+ setInnerHtml(option, optionLabel);
+ option.selected = isSelected(optionValue, params.inputValue);
+ parent.appendChild(option);
+ };
+
+ inputOptions.forEach(inputOption => {
+ const optionValue = inputOption[0];
+ const optionLabel = inputOption[1]; // spec:
+ // https://www.w3.org/TR/html401/interact/forms.html#h-17.6
+ // "...all OPTGROUP elements must be specified directly within a SELECT element (i.e., groups may not be nested)..."
+ // check whether this is a
+
+ if (Array.isArray(optionLabel)) {
+ // if it is an array, then it is an
+ const optgroup = document.createElement('optgroup');
+ optgroup.label = optionValue;
+ optgroup.disabled = false; // not configurable for now
+
+ select.appendChild(optgroup);
+ optionLabel.forEach(o => renderOption(optgroup, o[1], o[0]));
+ } else {
+ // case of
+ renderOption(select, optionLabel, optionValue);
+ }
+ });
+ select.focus();
+ },
+ radio: (popup, inputOptions, params) => {
+ const radio = getChildByClass(popup, swalClasses.radio);
+ inputOptions.forEach(inputOption => {
+ const radioValue = inputOption[0];
+ const radioLabel = inputOption[1];
+ const radioInput = document.createElement('input');
+ const radioLabelElement = document.createElement('label');
+ radioInput.type = 'radio';
+ radioInput.name = swalClasses.radio;
+ radioInput.value = radioValue;
+
+ if (isSelected(radioValue, params.inputValue)) {
+ radioInput.checked = true;
+ }
+
+ const label = document.createElement('span');
+ setInnerHtml(label, radioLabel);
+ label.className = swalClasses.label;
+ radioLabelElement.appendChild(radioInput);
+ radioLabelElement.appendChild(label);
+ radio.appendChild(radioLabelElement);
+ });
+ const radios = radio.querySelectorAll('input');
+
+ if (radios.length) {
+ radios[0].focus();
+ }
+ }
+ };
+ /**
+ * Converts `inputOptions` into an array of `[value, label]`s
+ * @param inputOptions
+ */
+
+ const formatInputOptions = inputOptions => {
+ const result = [];
+
+ if (typeof Map !== 'undefined' && inputOptions instanceof Map) {
+ inputOptions.forEach((value, key) => {
+ let valueFormatted = value;
+
+ if (typeof valueFormatted === 'object') {
+ // case of
+ valueFormatted = formatInputOptions(valueFormatted);
+ }
+
+ result.push([key, valueFormatted]);
+ });
+ } else {
+ Object.keys(inputOptions).forEach(key => {
+ let valueFormatted = inputOptions[key];
+
+ if (typeof valueFormatted === 'object') {
+ // case of
+ valueFormatted = formatInputOptions(valueFormatted);
+ }
+
+ result.push([key, valueFormatted]);
+ });
+ }
+
+ return result;
+ };
+
+ const isSelected = (optionValue, inputValue) => {
+ return inputValue && inputValue.toString() === optionValue.toString();
+ };
+
+ const handleConfirmButtonClick = instance => {
+ const innerParams = privateProps.innerParams.get(instance);
+ instance.disableButtons();
+
+ if (innerParams.input) {
+ handleConfirmOrDenyWithInput(instance, 'confirm');
+ } else {
+ confirm(instance, true);
+ }
+ };
+ const handleDenyButtonClick = instance => {
+ const innerParams = privateProps.innerParams.get(instance);
+ instance.disableButtons();
+
+ if (innerParams.returnInputValueOnDeny) {
+ handleConfirmOrDenyWithInput(instance, 'deny');
+ } else {
+ deny(instance, false);
+ }
+ };
+ const handleCancelButtonClick = (instance, dismissWith) => {
+ instance.disableButtons();
+ dismissWith(DismissReason.cancel);
+ };
+
+ const handleConfirmOrDenyWithInput = (instance, type
+ /* 'confirm' | 'deny' */
+ ) => {
+ const innerParams = privateProps.innerParams.get(instance);
+ const inputValue = getInputValue(instance, innerParams);
+
+ if (innerParams.inputValidator) {
+ handleInputValidator(instance, inputValue, type);
+ } else if (!instance.getInput().checkValidity()) {
+ instance.enableButtons();
+ instance.showValidationMessage(innerParams.validationMessage);
+ } else if (type === 'deny') {
+ deny(instance, inputValue);
+ } else {
+ confirm(instance, inputValue);
+ }
+ };
+
+ const handleInputValidator = (instance, inputValue, type
+ /* 'confirm' | 'deny' */
+ ) => {
+ const innerParams = privateProps.innerParams.get(instance);
+ instance.disableInput();
+ const validationPromise = Promise.resolve().then(() => asPromise(innerParams.inputValidator(inputValue, innerParams.validationMessage)));
+ validationPromise.then(validationMessage => {
+ instance.enableButtons();
+ instance.enableInput();
+
+ if (validationMessage) {
+ instance.showValidationMessage(validationMessage);
+ } else if (type === 'deny') {
+ deny(instance, inputValue);
+ } else {
+ confirm(instance, inputValue);
+ }
+ });
+ };
+
+ const deny = (instance, value) => {
+ const innerParams = privateProps.innerParams.get(instance || undefined);
+
+ if (innerParams.showLoaderOnDeny) {
+ showLoading(getDenyButton());
+ }
+
+ if (innerParams.preDeny) {
+ const preDenyPromise = Promise.resolve().then(() => asPromise(innerParams.preDeny(value, innerParams.validationMessage)));
+ preDenyPromise.then(preDenyValue => {
+ if (preDenyValue === false) {
+ instance.hideLoading();
+ } else {
+ instance.closePopup({
+ isDenied: true,
+ value: typeof preDenyValue === 'undefined' ? value : preDenyValue
+ });
+ }
+ });
+ } else {
+ instance.closePopup({
+ isDenied: true,
+ value
+ });
+ }
+ };
+
+ const succeedWith = (instance, value) => {
+ instance.closePopup({
+ isConfirmed: true,
+ value
+ });
+ };
+
+ const confirm = (instance, value) => {
+ const innerParams = privateProps.innerParams.get(instance || undefined);
+
+ if (innerParams.showLoaderOnConfirm) {
+ showLoading();
+ }
+
+ if (innerParams.preConfirm) {
+ instance.resetValidationMessage();
+ const preConfirmPromise = Promise.resolve().then(() => asPromise(innerParams.preConfirm(value, innerParams.validationMessage)));
+ preConfirmPromise.then(preConfirmValue => {
+ if (isVisible(getValidationMessage()) || preConfirmValue === false) {
+ instance.hideLoading();
+ } else {
+ succeedWith(instance, typeof preConfirmValue === 'undefined' ? value : preConfirmValue);
+ }
+ });
+ } else {
+ succeedWith(instance, value);
+ }
+ };
+
+ const addKeydownHandler = (instance, globalState, innerParams, dismissWith) => {
+ if (globalState.keydownTarget && globalState.keydownHandlerAdded) {
+ globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, {
+ capture: globalState.keydownListenerCapture
+ });
+ globalState.keydownHandlerAdded = false;
+ }
+
+ if (!innerParams.toast) {
+ globalState.keydownHandler = e => keydownHandler(instance, e, dismissWith);
+
+ globalState.keydownTarget = innerParams.keydownListenerCapture ? window : getPopup();
+ globalState.keydownListenerCapture = innerParams.keydownListenerCapture;
+ globalState.keydownTarget.addEventListener('keydown', globalState.keydownHandler, {
+ capture: globalState.keydownListenerCapture
+ });
+ globalState.keydownHandlerAdded = true;
+ }
+ }; // Focus handling
+
+ const setFocus = (innerParams, index, increment) => {
+ const focusableElements = getFocusableElements(); // search for visible elements and select the next possible match
+
+ if (focusableElements.length) {
+ index = index + increment; // rollover to first item
+
+ if (index === focusableElements.length) {
+ index = 0; // go to last item
+ } else if (index === -1) {
+ index = focusableElements.length - 1;
+ }
+
+ return focusableElements[index].focus();
+ } // no visible focusable elements, focus the popup
+
+
+ getPopup().focus();
+ };
+ const arrowKeysNextButton = ['ArrowRight', 'ArrowDown'];
+ const arrowKeysPreviousButton = ['ArrowLeft', 'ArrowUp'];
+
+ const keydownHandler = (instance, e, dismissWith) => {
+ const innerParams = privateProps.innerParams.get(instance);
+
+ if (!innerParams) {
+ return; // This instance has already been destroyed
+ }
+
+ if (innerParams.stopKeydownPropagation) {
+ e.stopPropagation();
+ } // ENTER
+
+
+ if (e.key === 'Enter') {
+ handleEnter(instance, e, innerParams); // TAB
+ } else if (e.key === 'Tab') {
+ handleTab(e, innerParams); // ARROWS - switch focus between buttons
+ } else if ([...arrowKeysNextButton, ...arrowKeysPreviousButton].includes(e.key)) {
+ handleArrows(e.key); // ESC
+ } else if (e.key === 'Escape') {
+ handleEsc(e, innerParams, dismissWith);
+ }
+ };
+
+ const handleEnter = (instance, e, innerParams) => {
+ // #720 #721
+ if (e.isComposing) {
+ return;
+ }
+
+ if (e.target && instance.getInput() && e.target.outerHTML === instance.getInput().outerHTML) {
+ if (['textarea', 'file'].includes(innerParams.input)) {
+ return; // do not submit
+ }
+
+ clickConfirm();
+ e.preventDefault();
+ }
+ };
+
+ const handleTab = (e, innerParams) => {
+ const targetElement = e.target;
+ const focusableElements = getFocusableElements();
+ let btnIndex = -1;
+
+ for (let i = 0; i < focusableElements.length; i++) {
+ if (targetElement === focusableElements[i]) {
+ btnIndex = i;
+ break;
+ }
+ }
+
+ if (!e.shiftKey) {
+ // Cycle to the next button
+ setFocus(innerParams, btnIndex, 1);
+ } else {
+ // Cycle to the prev button
+ setFocus(innerParams, btnIndex, -1);
+ }
+
+ e.stopPropagation();
+ e.preventDefault();
+ };
+
+ const handleArrows = key => {
+ const confirmButton = getConfirmButton();
+ const denyButton = getDenyButton();
+ const cancelButton = getCancelButton();
+
+ if (![confirmButton, denyButton, cancelButton].includes(document.activeElement)) {
+ return;
+ }
+
+ const sibling = arrowKeysNextButton.includes(key) ? 'nextElementSibling' : 'previousElementSibling';
+ const buttonToFocus = document.activeElement[sibling];
+
+ if (buttonToFocus) {
+ buttonToFocus.focus();
+ }
+ };
+
+ const handleEsc = (e, innerParams, dismissWith) => {
+ if (callIfFunction(innerParams.allowEscapeKey)) {
+ e.preventDefault();
+ dismissWith(DismissReason.esc);
+ }
+ };
+
+ const handlePopupClick = (instance, domCache, dismissWith) => {
+ const innerParams = privateProps.innerParams.get(instance);
+
+ if (innerParams.toast) {
+ handleToastClick(instance, domCache, dismissWith);
+ } else {
+ // Ignore click events that had mousedown on the popup but mouseup on the container
+ // This can happen when the user drags a slider
+ handleModalMousedown(domCache); // Ignore click events that had mousedown on the container but mouseup on the popup
+
+ handleContainerMousedown(domCache);
+ handleModalClick(instance, domCache, dismissWith);
+ }
+ };
+
+ const handleToastClick = (instance, domCache, dismissWith) => {
+ // Closing toast by internal click
+ domCache.popup.onclick = () => {
+ const innerParams = privateProps.innerParams.get(instance);
+
+ if (innerParams.showConfirmButton || innerParams.showDenyButton || innerParams.showCancelButton || innerParams.showCloseButton || innerParams.timer || innerParams.input) {
+ return;
+ }
+
+ dismissWith(DismissReason.close);
+ };
+ };
+
+ let ignoreOutsideClick = false;
+
+ const handleModalMousedown = domCache => {
+ domCache.popup.onmousedown = () => {
+ domCache.container.onmouseup = function (e) {
+ domCache.container.onmouseup = undefined; // We only check if the mouseup target is the container because usually it doesn't
+ // have any other direct children aside of the popup
+
+ if (e.target === domCache.container) {
+ ignoreOutsideClick = true;
+ }
+ };
+ };
+ };
+
+ const handleContainerMousedown = domCache => {
+ domCache.container.onmousedown = () => {
+ domCache.popup.onmouseup = function (e) {
+ domCache.popup.onmouseup = undefined; // We also need to check if the mouseup target is a child of the popup
+
+ if (e.target === domCache.popup || domCache.popup.contains(e.target)) {
+ ignoreOutsideClick = true;
+ }
+ };
+ };
+ };
+
+ const handleModalClick = (instance, domCache, dismissWith) => {
+ domCache.container.onclick = e => {
+ const innerParams = privateProps.innerParams.get(instance);
+
+ if (ignoreOutsideClick) {
+ ignoreOutsideClick = false;
+ return;
+ }
+
+ if (e.target === domCache.container && callIfFunction(innerParams.allowOutsideClick)) {
+ dismissWith(DismissReason.backdrop);
+ }
+ };
+ };
+
+ function _main(userParams, mixinParams = {}) {
+ showWarningsForParams(Object.assign({}, mixinParams, userParams));
+
+ if (globalState.currentInstance) {
+ globalState.currentInstance._destroy();
+
+ if (isModal()) {
+ unsetAriaHidden();
+ }
+ }
+
+ globalState.currentInstance = this;
+ const innerParams = prepareParams(userParams, mixinParams);
+ setParameters(innerParams);
+ Object.freeze(innerParams); // clear the previous timer
+
+ if (globalState.timeout) {
+ globalState.timeout.stop();
+ delete globalState.timeout;
+ } // clear the restore focus timeout
+
+
+ clearTimeout(globalState.restoreFocusTimeout);
+ const domCache = populateDomCache(this);
+ render(this, innerParams);
+ privateProps.innerParams.set(this, innerParams);
+ return swalPromise(this, domCache, innerParams);
+ }
+
+ const prepareParams = (userParams, mixinParams) => {
+ const templateParams = getTemplateParams(userParams);
+ const params = Object.assign({}, defaultParams, mixinParams, templateParams, userParams); // precedence is described in #2131
+
+ params.showClass = Object.assign({}, defaultParams.showClass, params.showClass);
+ params.hideClass = Object.assign({}, defaultParams.hideClass, params.hideClass);
+ return params;
+ };
+
+ const swalPromise = (instance, domCache, innerParams) => {
+ return new Promise(resolve => {
+ // functions to handle all closings/dismissals
+ const dismissWith = dismiss => {
+ instance.closePopup({
+ isDismissed: true,
+ dismiss
+ });
+ };
+
+ privateMethods.swalPromiseResolve.set(instance, resolve);
+
+ domCache.confirmButton.onclick = () => handleConfirmButtonClick(instance);
+
+ domCache.denyButton.onclick = () => handleDenyButtonClick(instance);
+
+ domCache.cancelButton.onclick = () => handleCancelButtonClick(instance, dismissWith);
+
+ domCache.closeButton.onclick = () => dismissWith(DismissReason.close);
+
+ handlePopupClick(instance, domCache, dismissWith);
+ addKeydownHandler(instance, globalState, innerParams, dismissWith);
+ handleInputOptionsAndValue(instance, innerParams);
+ openPopup(innerParams);
+ setupTimer(globalState, innerParams, dismissWith);
+ initFocus(domCache, innerParams); // Scroll container to top on open (#1247, #1946)
+
+ setTimeout(() => {
+ domCache.container.scrollTop = 0;
+ });
+ });
+ };
+
+ const populateDomCache = instance => {
+ const domCache = {
+ popup: getPopup(),
+ container: getContainer(),
+ actions: getActions(),
+ confirmButton: getConfirmButton(),
+ denyButton: getDenyButton(),
+ cancelButton: getCancelButton(),
+ loader: getLoader(),
+ closeButton: getCloseButton(),
+ validationMessage: getValidationMessage(),
+ progressSteps: getProgressSteps()
+ };
+ privateProps.domCache.set(instance, domCache);
+ return domCache;
+ };
+
+ const setupTimer = (globalState$$1, innerParams, dismissWith) => {
+ const timerProgressBar = getTimerProgressBar();
+ hide(timerProgressBar);
+
+ if (innerParams.timer) {
+ globalState$$1.timeout = new Timer(() => {
+ dismissWith('timer');
+ delete globalState$$1.timeout;
+ }, innerParams.timer);
+
+ if (innerParams.timerProgressBar) {
+ show(timerProgressBar);
+ setTimeout(() => {
+ if (globalState$$1.timeout && globalState$$1.timeout.running) {
+ // timer can be already stopped or unset at this point
+ animateTimerProgressBar(innerParams.timer);
+ }
+ });
+ }
+ }
+ };
+
+ const initFocus = (domCache, innerParams) => {
+ if (innerParams.toast) {
+ return;
+ }
+
+ if (!callIfFunction(innerParams.allowEnterKey)) {
+ return blurActiveElement();
+ }
+
+ if (!focusButton(domCache, innerParams)) {
+ setFocus(innerParams, -1, 1);
+ }
+ };
+
+ const focusButton = (domCache, innerParams) => {
+ if (innerParams.focusDeny && isVisible(domCache.denyButton)) {
+ domCache.denyButton.focus();
+ return true;
+ }
+
+ if (innerParams.focusCancel && isVisible(domCache.cancelButton)) {
+ domCache.cancelButton.focus();
+ return true;
+ }
+
+ if (innerParams.focusConfirm && isVisible(domCache.confirmButton)) {
+ domCache.confirmButton.focus();
+ return true;
+ }
+
+ return false;
+ };
+
+ const blurActiveElement = () => {
+ if (document.activeElement && typeof document.activeElement.blur === 'function') {
+ document.activeElement.blur();
+ }
+ };
+
+ /**
+ * Updates popup parameters.
+ */
+
+ function update(params) {
+ const popup = getPopup();
+ const innerParams = privateProps.innerParams.get(this);
+
+ if (!popup || hasClass(popup, innerParams.hideClass.popup)) {
+ return warn("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");
+ }
+
+ const validUpdatableParams = {}; // assign valid params from `params` to `defaults`
+
+ Object.keys(params).forEach(param => {
+ if (Swal.isUpdatableParameter(param)) {
+ validUpdatableParams[param] = params[param];
+ } else {
+ warn("Invalid parameter to update: \"".concat(param, "\". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\n\nIf you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md"));
+ }
+ });
+ const updatedParams = Object.assign({}, innerParams, validUpdatableParams);
+ render(this, updatedParams);
+ privateProps.innerParams.set(this, updatedParams);
+ Object.defineProperties(this, {
+ params: {
+ value: Object.assign({}, this.params, params),
+ writable: false,
+ enumerable: true
+ }
+ });
+ }
+
+ function _destroy() {
+ const domCache = privateProps.domCache.get(this);
+ const innerParams = privateProps.innerParams.get(this);
+
+ if (!innerParams) {
+ return; // This instance has already been destroyed
+ } // Check if there is another Swal closing
+
+
+ if (domCache.popup && globalState.swalCloseEventFinishedCallback) {
+ globalState.swalCloseEventFinishedCallback();
+ delete globalState.swalCloseEventFinishedCallback;
+ } // Check if there is a swal disposal defer timer
+
+
+ if (globalState.deferDisposalTimer) {
+ clearTimeout(globalState.deferDisposalTimer);
+ delete globalState.deferDisposalTimer;
+ }
+
+ if (typeof innerParams.didDestroy === 'function') {
+ innerParams.didDestroy();
+ }
+
+ disposeSwal(this);
+ }
+
+ const disposeSwal = instance => {
+ // Unset this.params so GC will dispose it (#1569)
+ delete instance.params; // Unset globalState props so GC will dispose globalState (#1569)
+
+ delete globalState.keydownHandler;
+ delete globalState.keydownTarget; // Unset WeakMaps so GC will be able to dispose them (#1569)
+
+ unsetWeakMaps(privateProps);
+ unsetWeakMaps(privateMethods); // Unset currentInstance
+
+ delete globalState.currentInstance;
+ };
+
+ const unsetWeakMaps = obj => {
+ for (const i in obj) {
+ obj[i] = new WeakMap();
+ }
+ };
+
+
+
+ var instanceMethods = /*#__PURE__*/Object.freeze({
+ hideLoading: hideLoading,
+ disableLoading: hideLoading,
+ getInput: getInput$1,
+ close: close,
+ closePopup: close,
+ closeModal: close,
+ closeToast: close,
+ enableButtons: enableButtons,
+ disableButtons: disableButtons,
+ enableInput: enableInput,
+ disableInput: disableInput,
+ showValidationMessage: showValidationMessage,
+ resetValidationMessage: resetValidationMessage$1,
+ getProgressSteps: getProgressSteps$1,
+ _main: _main,
+ update: update,
+ _destroy: _destroy
+ });
+
+ let currentInstance;
+
+ class SweetAlert {
+ constructor(...args) {
+ // Prevent run in Node env
+ if (typeof window === 'undefined') {
+ return;
+ }
+
+ currentInstance = this;
+ const outerParams = Object.freeze(this.constructor.argsToParams(args));
+ Object.defineProperties(this, {
+ params: {
+ value: outerParams,
+ writable: false,
+ enumerable: true,
+ configurable: true
+ }
+ });
+
+ const promise = this._main(this.params);
+
+ privateProps.promise.set(this, promise);
+ } // `catch` cannot be the name of a module export, so we define our thenable methods here instead
+
+
+ then(onFulfilled) {
+ const promise = privateProps.promise.get(this);
+ return promise.then(onFulfilled);
+ }
+
+ finally(onFinally) {
+ const promise = privateProps.promise.get(this);
+ return promise.finally(onFinally);
+ }
+
+ } // Assign instance methods from src/instanceMethods/*.js to prototype
+
+
+ Object.assign(SweetAlert.prototype, instanceMethods); // Assign static methods from src/staticMethods/*.js to constructor
+
+ Object.assign(SweetAlert, staticMethods); // Proxy to instance methods to constructor, for now, for backwards compatibility
+
+ Object.keys(instanceMethods).forEach(key => {
+ SweetAlert[key] = function (...args) {
+ if (currentInstance) {
+ return currentInstance[key](...args);
+ }
+ };
+ });
+ SweetAlert.DismissReason = DismissReason;
+ SweetAlert.version = '11.1.7';
+
+ const Swal = SweetAlert;
+ Swal.default = Swal;
+
+ return Swal;
+
+}));
+if (typeof this !== 'undefined' && this.Sweetalert2){ this.swal = this.sweetAlert = this.Swal = this.SweetAlert = this.Sweetalert2}
+
+"undefined"!=typeof document&&function(e,t){var n=e.createElement("style");if(e.getElementsByTagName("head")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,".swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4!important;grid-row:1/4!important;grid-template-columns:1fr 99fr 1fr;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:grid;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;box-sizing:border-box;grid-template-areas:\"top-start top top-end\" \"center-start center center-end\" \"bottom-start bottom-center bottom-end\";grid-template-rows:minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto);grid-template-rows:minmax(min-content,auto) minmax(min-content,auto) minmax(min-content,auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-bottom-start,.swal2-container.swal2-center-start,.swal2-container.swal2-top-start{grid-template-columns:minmax(0,1fr) auto auto}.swal2-container.swal2-bottom,.swal2-container.swal2-center,.swal2-container.swal2-top{grid-template-columns:auto minmax(0,1fr) auto}.swal2-container.swal2-bottom-end,.swal2-container.swal2-center-end,.swal2-container.swal2-top-end{grid-template-columns:auto auto minmax(0,1fr)}.swal2-container.swal2-top-start>.swal2-popup{align-self:start}.swal2-container.swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}.swal2-container.swal2-top-end>.swal2-popup,.swal2-container.swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}.swal2-container.swal2-center-left>.swal2-popup,.swal2-container.swal2-center-start>.swal2-popup{grid-row:2;align-self:center}.swal2-container.swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}.swal2-container.swal2-center-end>.swal2-popup,.swal2-container.swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}.swal2-container.swal2-bottom-left>.swal2-popup,.swal2-container.swal2-bottom-start>.swal2-popup{grid-column:1;grid-row:3;align-self:end}.swal2-container.swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}.swal2-container.swal2-bottom-end>.swal2-popup,.swal2-container.swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}.swal2-container.swal2-grow-fullscreen>.swal2-popup,.swal2-container.swal2-grow-row>.swal2-popup{grid-column:1/4;width:100%}.swal2-container.swal2-grow-column>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}.swal2-container.swal2-no-transition{transition:none!important}.swal2-popup{display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0,100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-title{position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px transparent;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7367f0;color:#fff;font-size:1em}.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px rgba(115,103,240,.5)}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#ea5455;color:#fff;font-size:1em}.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px rgba(234,84,85,.5)}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7d88;color:#fff;font-size:1em}.swal2-styled.swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,125,136,.5)}.swal2-styled.swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled:focus{outline:0}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto!important;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:2em auto 1em}.swal2-close{z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em 2em 0}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px transparent;color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em 2em 0;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-file{width:75%;margin-right:auto;margin-left:auto;background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto 0}.swal2-validation-message{align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:.25em solid transparent;border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{background-color:transparent!important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:transparent;pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}");
\ No newline at end of file
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/sweetalert2/sweetalert2.all.min.js b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/sweetalert2/sweetalert2.all.min.js
new file mode 100644
index 0000000000..7a84d6cdf6
--- /dev/null
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/sweetalert2/sweetalert2.all.min.js
@@ -0,0 +1,2 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Sweetalert2=t()}(this,function(){"use strict";const l=Object.freeze({cancel:"cancel",backdrop:"backdrop",close:"close",esc:"esc",timer:"timer"}),t="SweetAlert2:",o=e=>e.charAt(0).toUpperCase()+e.slice(1),a=e=>Array.prototype.slice.call(e),s=e=>{console.warn("".concat(t," ").concat("object"==typeof e?e.join(" "):e))},r=e=>{console.error("".concat(t," ").concat(e))},n=[],i=(e,t)=>{t='"'.concat(e,'" is deprecated and will be removed in the next major release. Please use "').concat(t,'" instead.'),n.includes(t)||(n.push(t),s(t))},c=e=>"function"==typeof e?e():e,u=e=>e&&"function"==typeof e.toPromise,d=e=>u(e)?e.toPromise():Promise.resolve(e),p=e=>e&&Promise.resolve(e)===e,m=e=>e instanceof Element||(e=>"object"==typeof e&&e.jquery)(e);var e=e=>{const t={};for(const n in e)t[e[n]]="swal2-"+e[n];return t};const h=e(["container","shown","height-auto","iosfix","popup","modal","no-backdrop","no-transition","toast","toast-shown","show","hide","close","title","html-container","actions","confirm","deny","cancel","default-outline","footer","icon","icon-content","image","input","file","range","select","radio","checkbox","label","textarea","inputerror","input-label","validation-message","progress-steps","active-progress-step","progress-step","progress-step-line","loader","loading","styled","top","top-start","top-end","top-left","top-right","center","center-start","center-end","center-left","center-right","bottom","bottom-start","bottom-end","bottom-left","bottom-right","grow-row","grow-column","grow-fullscreen","rtl","timer-progress-bar","timer-progress-bar-container","scrollbar-measure","icon-success","icon-warning","icon-info","icon-question","icon-error"]),g=e(["success","warning","info","question","error"]),b=()=>document.body.querySelector(".".concat(h.container)),f=e=>{const t=b();return t?t.querySelector(e):null},y=e=>f(".".concat(e)),v=()=>y(h.popup),w=()=>y(h.icon),C=()=>y(h.title),k=()=>y(h["html-container"]),A=()=>y(h.image),B=()=>y(h["progress-steps"]),x=()=>y(h["validation-message"]),P=()=>f(".".concat(h.actions," .").concat(h.confirm)),E=()=>f(".".concat(h.actions," .").concat(h.deny));const S=()=>f(".".concat(h.loader)),T=()=>f(".".concat(h.actions," .").concat(h.cancel)),L=()=>y(h.actions),O=()=>y(h.footer),j=()=>y(h["timer-progress-bar"]),D=()=>y(h.close),I=()=>{const e=a(v().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')).sort((e,t)=>(e=parseInt(e.getAttribute("tabindex")),(t=parseInt(t.getAttribute("tabindex")))"-1"!==e.getAttribute("tabindex"));return(t=>{const n=[];for(let e=0;eG(e))},M=()=>!H()&&!document.body.classList.contains(h["no-backdrop"]),H=()=>document.body.classList.contains(h["toast-shown"]);const q={previousBodyPadding:null},V=(t,e)=>{if(t.textContent="",e){const n=new DOMParser,o=n.parseFromString(e,"text/html");a(o.querySelector("head").childNodes).forEach(e=>{t.appendChild(e)}),a(o.querySelector("body").childNodes).forEach(e=>{t.appendChild(e)})}},N=(t,e)=>{if(!e)return!1;var n=e.split(/\s+/);for(let e=0;e{var o,i;if(o=e,i=t,a(o.classList).forEach(e=>{Object.values(h).includes(e)||Object.values(g).includes(e)||Object.values(i.showClass).includes(e)||o.classList.remove(e)}),t.customClass&&t.customClass[n]){if("string"!=typeof t.customClass[n]&&!t.customClass[n].forEach)return s("Invalid type of customClass.".concat(n,'! Expected string or iterable object, got "').concat(typeof t.customClass[n],'"'));W(e,t.customClass[n])}},F=(e,t)=>{if(!t)return null;switch(t){case"select":case"textarea":case"file":return K(e,h[t]);case"checkbox":return e.querySelector(".".concat(h.checkbox," input"));case"radio":return e.querySelector(".".concat(h.radio," input:checked"))||e.querySelector(".".concat(h.radio," input:first-child"));case"range":return e.querySelector(".".concat(h.range," input"));default:return K(e,h.input)}},R=e=>{var t;e.focus(),"file"!==e.type&&(t=e.value,e.value="",e.value=t)},z=(e,t,n)=>{e&&t&&(t="string"==typeof t?t.split(/\s+/).filter(Boolean):t).forEach(t=>{e.forEach?e.forEach(e=>{n?e.classList.add(t):e.classList.remove(t)}):n?e.classList.add(t):e.classList.remove(t)})},W=(e,t)=>{z(e,t,!0)},_=(e,t)=>{z(e,t,!1)},K=(t,n)=>{for(let e=0;e{(n=n==="".concat(parseInt(n))?parseInt(n):n)||0===parseInt(n)?e.style[t]="number"==typeof n?"".concat(n,"px"):n:e.style.removeProperty(t)},Z=(e,t="flex")=>{e.style.display=t},J=e=>{e.style.display="none"},X=(e,t,n,o)=>{const i=e.querySelector(t);i&&(i.style[n]=o)},$=(e,t,n)=>{t?Z(e,n):J(e)},G=e=>!(!e||!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)),Q=()=>!G(P())&&!G(E())&&!G(T()),ee=e=>!!(e.scrollHeight>e.clientHeight),te=e=>{const t=window.getComputedStyle(e);var n=parseFloat(t.getPropertyValue("animation-duration")||"0"),e=parseFloat(t.getPropertyValue("transition-duration")||"0");return 0{const n=j();G(n)&&(t&&(n.style.transition="none",n.style.width="100%"),setTimeout(()=>{n.style.transition="width ".concat(e/1e3,"s linear"),n.style.width="0%"},10))},oe=()=>"undefined"==typeof window||"undefined"==typeof document,ie='\n \n').replace(/(^|\n)\s*/g,""),ae=()=>{ln.isVisible()&&ln.resetValidationMessage()},se=e=>{var t=(()=>{const e=b();return!!e&&(e.remove(),_([document.documentElement,document.body],[h["no-backdrop"],h["toast-shown"],h["has-column"]]),!0)})();if(oe())r("SweetAlert2 requires document to initialize");else{const n=document.createElement("div");n.className=h.container,t&&W(n,h["no-transition"]),V(n,ie);const o="string"==typeof(t=e.target)?document.querySelector(t):t;o.appendChild(n),(e=>{const t=v();t.setAttribute("role",e.toast?"alert":"dialog"),t.setAttribute("aria-live",e.toast?"polite":"assertive"),e.toast||t.setAttribute("aria-modal","true")})(e),e=o,"rtl"===window.getComputedStyle(e).direction&&W(b(),h.rtl),(()=>{const e=v(),t=K(e,h.input),n=K(e,h.file),o=e.querySelector(".".concat(h.range," input")),i=e.querySelector(".".concat(h.range," output")),a=K(e,h.select),s=e.querySelector(".".concat(h.checkbox," input")),r=K(e,h.textarea);t.oninput=ae,n.onchange=ae,a.onchange=ae,s.onchange=ae,r.oninput=ae,o.oninput=()=>{ae(),i.value=o.value},o.onchange=()=>{ae(),o.nextSibling.value=o.value}})()}},re=(e,t)=>{e instanceof HTMLElement?t.appendChild(e):"object"==typeof e?ce(e,t):e&&V(t,e)},ce=(e,t)=>{e.jquery?le(t,e):V(t,e.toString())},le=(t,n)=>{if(t.textContent="",0 in n)for(let e=0;e in n;e++)t.appendChild(n[e].cloneNode(!0));else t.appendChild(n.cloneNode(!0))},ue=(()=>{if(oe())return!1;var e=document.createElement("div"),t={WebkitAnimation:"webkitAnimationEnd",OAnimation:"oAnimationEnd oanimationend",animation:"animationend"};for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&void 0!==e.style[n])return t[n];return!1})(),de=(e,t)=>{const n=L();var o=S(),i=P(),a=E(),s=T();(t.showConfirmButton||t.showDenyButton||t.showCancelButton?Z:J)(n),U(n,t,"actions"),pe(i,"confirm",t),pe(a,"deny",t),pe(s,"cancel",t),function(e,t,n,o){if(!o.buttonsStyling)return _([e,t,n],h.styled);W([e,t,n],h.styled),o.confirmButtonColor&&(e.style.backgroundColor=o.confirmButtonColor,W(e,h["default-outline"]));o.denyButtonColor&&(t.style.backgroundColor=o.denyButtonColor,W(t,h["default-outline"]));o.cancelButtonColor&&(n.style.backgroundColor=o.cancelButtonColor,W(n,h["default-outline"]))}(i,a,s,t),t.reverseButtons&&(n.insertBefore(s,o),n.insertBefore(a,o),n.insertBefore(i,o)),V(o,t.loaderHtml),U(o,t,"loader")};function pe(e,t,n){$(e,n["show".concat(o(t),"Button")],"inline-block"),V(e,n["".concat(t,"ButtonText")]),e.setAttribute("aria-label",n["".concat(t,"ButtonAriaLabel")]),e.className=h[t],U(e,n,"".concat(t,"Button")),W(e,n["".concat(t,"ButtonClass")])}const me=(e,t)=>{var n,o,i=b();i&&(o=i,"string"==typeof(n=t.backdrop)?o.style.background=n:n||W([document.documentElement,document.body],h["no-backdrop"]),o=i,(n=t.position)in h?W(o,h[n]):(s('The "position" parameter is not valid, defaulting to "center"'),W(o,h.center)),n=i,!(o=t.grow)||"string"!=typeof o||(o="grow-".concat(o))in h&&W(n,h[o]),U(i,t,"container"))};var he={promise:new WeakMap,innerParams:new WeakMap,domCache:new WeakMap};const ge=["input","file","range","select","radio","checkbox","textarea"],be=e=>{if(!ke[e.input])return r('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'.concat(e.input,'"'));var t=Ce(e.input);const n=ke[e.input](t,e);Z(n),setTimeout(()=>{R(n)})},fe=(e,t)=>{const n=F(v(),e);if(n){(t=>{for(let e=0;e{var t=Ce(e.input);e.customClass&&W(t,e.customClass.input)},ve=(e,t)=>{e.placeholder&&!t.inputPlaceholder||(e.placeholder=t.inputPlaceholder)},we=(e,t,n)=>{if(n.inputLabel){e.id=h.input;const i=document.createElement("label");var o=h["input-label"];i.setAttribute("for",e.id),i.className=o,W(i,n.customClass.inputLabel),i.innerText=n.inputLabel,t.insertAdjacentElement("beforebegin",i)}},Ce=e=>{e=h[e]||h.input;return K(v(),e)},ke={};ke.text=ke.email=ke.password=ke.number=ke.tel=ke.url=(e,t)=>("string"==typeof t.inputValue||"number"==typeof t.inputValue?e.value=t.inputValue:p(t.inputValue)||s('Unexpected type of inputValue! Expected "string", "number" or "Promise", got "'.concat(typeof t.inputValue,'"')),we(e,e,t),ve(e,t),e.type=t.input,e),ke.file=(e,t)=>(we(e,e,t),ve(e,t),e),ke.range=(e,t)=>{const n=e.querySelector("input"),o=e.querySelector("output");return n.value=t.inputValue,n.type=t.input,o.value=t.inputValue,we(n,e,t),e},ke.select=(e,t)=>{if(e.textContent="",t.inputPlaceholder){const n=document.createElement("option");V(n,t.inputPlaceholder),n.value="",n.disabled=!0,n.selected=!0,e.appendChild(n)}return we(e,e,t),e},ke.radio=e=>(e.textContent="",e),ke.checkbox=(e,t)=>{const n=F(v(),"checkbox");n.value=1,n.id=h.checkbox,n.checked=Boolean(t.inputValue);var o=e.querySelector("span");return V(o,t.inputPlaceholder),e},ke.textarea=(n,e)=>{n.value=e.inputValue,ve(n,e),we(n,n,e);return setTimeout(()=>{if("MutationObserver"in window){const t=parseInt(window.getComputedStyle(v()).width);new MutationObserver(()=>{var e,e=n.offsetWidth+(e=n,parseInt(window.getComputedStyle(e).marginLeft)+parseInt(window.getComputedStyle(e).marginRight));e>t?v().style.width="".concat(e,"px"):v().style.width=null}).observe(n,{attributes:!0,attributeFilter:["style"]})}}),n};const Ae=(e,t)=>{const n=k();U(n,t,"htmlContainer"),t.html?(re(t.html,n),Z(n,"block")):t.text?(n.textContent=t.text,Z(n,"block")):J(n),((e,o)=>{const i=v();e=he.innerParams.get(e);const a=!e||o.input!==e.input;ge.forEach(e=>{var t=h[e];const n=K(i,t);fe(e,o.inputAttributes),n.className=t,a&&J(n)}),o.input&&(a&&be(o),ye(o))})(e,t)},Be=(e,t)=>{for(const n in g)t.icon!==n&&_(e,g[n]);W(e,g[t.icon]),Ee(e,t),xe(),U(e,t,"icon")},xe=()=>{const e=v();var t=window.getComputedStyle(e).getPropertyValue("background-color");const n=e.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix");for(let e=0;e{var n;e.textContent="",t.iconHtml?V(e,Se(t.iconHtml)):"success"===t.icon?V(e,'\n
\n \n
\n
\n '):"error"===t.icon?V(e,'\n \n \n \n \n '):(n={question:"?",warning:"!",info:"i"},V(e,Se(n[t.icon])))},Ee=(e,t)=>{if(t.iconColor){e.style.color=t.iconColor,e.style.borderColor=t.iconColor;for(const n of[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"])X(e,n,"backgroundColor",t.iconColor);X(e,".swal2-success-ring","borderColor",t.iconColor)}},Se=e=>'').concat(e,"
"),Te=(e,o)=>{const i=B();if(!o.progressSteps||0===o.progressSteps.length)return J(i);Z(i),i.textContent="",o.currentProgressStep>=o.progressSteps.length&&s("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),o.progressSteps.forEach((e,t)=>{var n,e=(n=e,e=document.createElement("li"),W(e,h["progress-step"]),V(e,n),e);i.appendChild(e),t===o.currentProgressStep&&W(e,h["active-progress-step"]),t!==o.progressSteps.length-1&&(t=(e=>{const t=document.createElement("li");return W(t,h["progress-step-line"]),e.progressStepsDistance&&(t.style.width=e.progressStepsDistance),t})(o),i.appendChild(t))})},Le=(e,t)=>{e.className="".concat(h.popup," ").concat(G(e)?t.showClass.popup:""),t.toast?(W([document.documentElement,document.body],h["toast-shown"]),W(e,h.toast)):W(e,h.modal),U(e,t,"popup"),"string"==typeof t.customClass&&W(e,t.customClass),t.icon&&W(e,h["icon-".concat(t.icon)])},Oe=(e,t)=>{var n,o,i;(e=>{var t=b();const n=v();e.toast?(Y(t,"width",e.width),n.style.width="100%",n.insertBefore(S(),w())):Y(n,"width",e.width),Y(n,"padding",e.padding),e.background&&(n.style.background=e.background),J(x()),Le(n,e)})(t),me(0,t),Te(0,t),i=e,n=t,o=he.innerParams.get(i),i=w(),o&&n.icon===o.icon?(Pe(i,n),Be(i,n)):n.icon||n.iconHtml?n.icon&&-1===Object.keys(g).indexOf(n.icon)?(r('Unknown icon! Expected "success", "error", "warning", "info" or "question", got "'.concat(n.icon,'"')),J(i)):(Z(i),Pe(i,n),Be(i,n),W(i,n.showClass.icon)):J(i),(e=>{const t=A();if(!e.imageUrl)return J(t);Z(t,""),t.setAttribute("src",e.imageUrl),t.setAttribute("alt",e.imageAlt),Y(t,"width",e.imageWidth),Y(t,"height",e.imageHeight),t.className=h.image,U(t,e,"image")})(t),(e=>{const t=C();$(t,e.title||e.titleText,"block"),e.title&&re(e.title,t),e.titleText&&(t.innerText=e.titleText),U(t,e,"title")})(t),(e=>{const t=D();V(t,e.closeButtonHtml),U(t,e,"closeButton"),$(t,e.showCloseButton),t.setAttribute("aria-label",e.closeButtonAriaLabel)})(t),Ae(e,t),de(0,t),i=t,e=O(),$(e,i.footer),i.footer&&re(i.footer,e),U(e,i,"footer"),"function"==typeof t.didRender&&t.didRender(v())};const je=()=>P()&&P().click();const De=e=>{let t=v();t||ln.fire(),t=v();var n=S();H()?J(w()):Ie(t,e),Z(n),t.setAttribute("data-loading",!0),t.setAttribute("aria-busy",!0),t.focus()},Ie=(e,t)=>{var n=L();const o=S();!t&&G(P())&&(t=P()),Z(n),t&&(J(t),o.setAttribute("data-button-to-replace",t.className)),o.parentNode.insertBefore(o,t),W([e,n],h.loading)},Me={},He=o=>new Promise(e=>{if(!o)return e();var t=window.scrollX,n=window.scrollY;Me.restoreFocusTimeout=setTimeout(()=>{Me.previousActiveElement&&Me.previousActiveElement.focus?(Me.previousActiveElement.focus(),Me.previousActiveElement=null):document.body&&document.body.focus(),e()},100),window.scrollTo(t,n)});const qe=()=>{if(Me.timeout)return(()=>{const e=j();var t=parseInt(window.getComputedStyle(e).width);e.style.removeProperty("transition"),e.style.width="100%";var n=parseInt(window.getComputedStyle(e).width),n=parseInt(t/n*100);e.style.removeProperty("transition"),e.style.width="".concat(n,"%")})(),Me.timeout.stop()},Ve=()=>{if(Me.timeout){var e=Me.timeout.start();return ne(e),e}};let Ne=!1;const Ue={};const Fe=t=>{for(let e=t.target;e&&e!==document;e=e.parentNode)for(const o in Ue){var n=e.getAttribute(o);if(n)return void Ue[o].fire({template:n})}},Re={title:"",titleText:"",text:"",html:"",footer:"",icon:void 0,iconColor:void 0,iconHtml:void 0,template:void 0,toast:!1,showClass:{popup:"swal2-show",backdrop:"swal2-backdrop-show",icon:"swal2-icon-show"},hideClass:{popup:"swal2-hide",backdrop:"swal2-backdrop-hide",icon:"swal2-icon-hide"},customClass:{},target:"body",backdrop:!0,heightAuto:!0,allowOutsideClick:!0,allowEscapeKey:!0,allowEnterKey:!0,stopKeydownPropagation:!0,keydownListenerCapture:!1,showConfirmButton:!0,showDenyButton:!1,showCancelButton:!1,preConfirm:void 0,preDeny:void 0,confirmButtonText:"OK",confirmButtonAriaLabel:"",confirmButtonColor:void 0,denyButtonText:"No",denyButtonAriaLabel:"",denyButtonColor:void 0,cancelButtonText:"Cancel",cancelButtonAriaLabel:"",cancelButtonColor:void 0,buttonsStyling:!0,reverseButtons:!1,focusConfirm:!0,focusDeny:!1,focusCancel:!1,returnFocus:!0,showCloseButton:!1,closeButtonHtml:"×",closeButtonAriaLabel:"Close this dialog",loaderHtml:"",showLoaderOnConfirm:!1,showLoaderOnDeny:!1,imageUrl:void 0,imageWidth:void 0,imageHeight:void 0,imageAlt:"",timer:void 0,timerProgressBar:!1,width:void 0,padding:void 0,background:void 0,input:void 0,inputPlaceholder:"",inputLabel:"",inputValue:"",inputOptions:{},inputAutoTrim:!0,inputAttributes:{},inputValidator:void 0,returnInputValueOnDeny:!1,validationMessage:void 0,grow:!1,position:"center",progressSteps:[],currentProgressStep:void 0,progressStepsDistance:void 0,willOpen:void 0,didOpen:void 0,didRender:void 0,willClose:void 0,didClose:void 0,didDestroy:void 0,scrollbarPadding:!0},ze=["allowEscapeKey","allowOutsideClick","background","buttonsStyling","cancelButtonAriaLabel","cancelButtonColor","cancelButtonText","closeButtonAriaLabel","closeButtonHtml","confirmButtonAriaLabel","confirmButtonColor","confirmButtonText","currentProgressStep","customClass","denyButtonAriaLabel","denyButtonColor","denyButtonText","didClose","didDestroy","footer","hideClass","html","icon","iconColor","iconHtml","imageAlt","imageHeight","imageUrl","imageWidth","preConfirm","preDeny","progressSteps","returnFocus","reverseButtons","showCancelButton","showCloseButton","showConfirmButton","showDenyButton","text","title","titleText","willClose"],We={},_e=["allowOutsideClick","allowEnterKey","backdrop","focusConfirm","focusDeny","focusCancel","returnFocus","heightAuto","keydownListenerCapture"],Ke=e=>Object.prototype.hasOwnProperty.call(Re,e);const Ye=e=>We[e],Ze=e=>{!e.backdrop&&e.allowOutsideClick&&s('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`');for(const o in e)n=o,Ke(n)||s('Unknown parameter "'.concat(n,'"')),e.toast&&(t=o,_e.includes(t)&&s('The parameter "'.concat(t,'" is incompatible with toasts'))),t=o,Ye(t)&&i(t,Ye(t));var t,n};var Je=Object.freeze({isValidParameter:Ke,isUpdatableParameter:e=>-1!==ze.indexOf(e),isDeprecatedParameter:Ye,argsToParams:n=>{const o={};return"object"!=typeof n[0]||m(n[0])?["title","html","icon"].forEach((e,t)=>{t=n[t];"string"==typeof t||m(t)?o[e]=t:void 0!==t&&r("Unexpected type of ".concat(e,'! Expected "string" or "Element", got ').concat(typeof t))}):Object.assign(o,n[0]),o},isVisible:()=>G(v()),clickConfirm:je,clickDeny:()=>E()&&E().click(),clickCancel:()=>T()&&T().click(),getContainer:b,getPopup:v,getTitle:C,getHtmlContainer:k,getImage:A,getIcon:w,getInputLabel:()=>y(h["input-label"]),getCloseButton:D,getActions:L,getConfirmButton:P,getDenyButton:E,getCancelButton:T,getLoader:S,getFooter:O,getTimerProgressBar:j,getFocusableElements:I,getValidationMessage:x,isLoading:()=>v().hasAttribute("data-loading"),fire:function(...e){return new this(...e)},mixin:function(n){class e extends this{_main(e,t){return super._main(e,Object.assign({},n,t))}}return e},showLoading:De,enableLoading:De,getTimerLeft:()=>Me.timeout&&Me.timeout.getTimerLeft(),stopTimer:qe,resumeTimer:Ve,toggleTimer:()=>{var e=Me.timeout;return e&&(e.running?qe:Ve)()},increaseTimer:e=>{if(Me.timeout){e=Me.timeout.increase(e);return ne(e,!0),e}},isTimerRunning:()=>Me.timeout&&Me.timeout.isRunning(),bindClickHandler:function(e="data-swal-template"){Ue[e]=this,Ne||(document.body.addEventListener("click",Fe),Ne=!0)}});function Xe(){var e=he.innerParams.get(this);if(e){const t=he.domCache.get(this);J(t.loader),H()?e.icon&&Z(w()):(e=>{const t=e.popup.getElementsByClassName(e.loader.getAttribute("data-button-to-replace"));if(t.length)Z(t[0],"inline-block");else if(Q())J(e.actions)})(t),_([t.popup,t.actions],h.loading),t.popup.removeAttribute("aria-busy"),t.popup.removeAttribute("data-loading"),t.confirmButton.disabled=!1,t.denyButton.disabled=!1,t.cancelButton.disabled=!1}}const $e=()=>{null===q.previousBodyPadding&&document.body.scrollHeight>window.innerHeight&&(q.previousBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight="".concat(q.previousBodyPadding+(()=>{const e=document.createElement("div");e.className=h["scrollbar-measure"],document.body.appendChild(e);var t=e.getBoundingClientRect().width-e.clientWidth;return document.body.removeChild(e),t})(),"px"))},Ge=()=>{navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i)||v().scrollHeight>window.innerHeight-44&&(b().style.paddingBottom="".concat(44,"px"))},Qe=()=>{const e=b();let t;e.ontouchstart=e=>{t=et(e)},e.ontouchmove=e=>{t&&(e.preventDefault(),e.stopPropagation())}},et=e=>{var t=e.target,n=b();return!tt(e)&&!nt(e)&&(t===n||!(ee(n)||"INPUT"===t.tagName||"TEXTAREA"===t.tagName||ee(k())&&k().contains(t)))},tt=e=>e.touches&&e.touches.length&&"stylus"===e.touches[0].touchType,nt=e=>e.touches&&1{const e=a(document.body.children);e.forEach(e=>{e.hasAttribute("data-previous-aria-hidden")?(e.setAttribute("aria-hidden",e.getAttribute("data-previous-aria-hidden")),e.removeAttribute("data-previous-aria-hidden")):e.removeAttribute("aria-hidden")})};var it={swalPromiseResolve:new WeakMap};function at(e,t,n,o){H()?ct(e,o):(He(n).then(()=>ct(e,o)),Me.keydownTarget.removeEventListener("keydown",Me.keydownHandler,{capture:Me.keydownListenerCapture}),Me.keydownHandlerAdded=!1),/^((?!chrome|android).)*safari/i.test(navigator.userAgent)?(t.setAttribute("style","display:none !important"),t.removeAttribute("class"),t.innerHTML=""):t.remove(),M()&&(null!==q.previousBodyPadding&&(document.body.style.paddingRight="".concat(q.previousBodyPadding,"px"),q.previousBodyPadding=null),N(document.body,h.iosfix)&&(t=parseInt(document.body.style.top,10),_(document.body,h.iosfix),document.body.style.top="",document.body.scrollTop=-1*t),ot()),_([document.documentElement,document.body],[h.shown,h["height-auto"],h["no-backdrop"],h["toast-shown"]])}function st(e){var t=v();if(t){e=void 0!==(o=e)?Object.assign({isConfirmed:!1,isDenied:!1,isDismissed:!1},o):{isConfirmed:!1,isDenied:!1,isDismissed:!0};var n=he.innerParams.get(this);if(n&&!N(t,n.hideClass.popup)){const i=it.swalPromiseResolve.get(this);_(t,n.showClass.popup),W(t,n.hideClass.popup);var o=b();_(o,n.showClass.backdrop),W(o,n.hideClass.backdrop),((e,t,n)=>{const o=b(),i=ue&&te(t);if(typeof n.willClose==="function")n.willClose(t);if(i)rt(e,t,o,n.returnFocus,n.didClose);else at(e,o,n.returnFocus,n.didClose)})(this,t,n),i(e)}}}const rt=(e,t,n,o,i)=>{Me.swalCloseEventFinishedCallback=at.bind(null,e,n,o,i),t.addEventListener(ue,function(e){e.target===t&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback)})},ct=(e,t)=>{setTimeout(()=>{"function"==typeof t&&t.bind(e.params)(),e._destroy()})};function lt(e,t,n){const o=he.domCache.get(e);t.forEach(e=>{o[e].disabled=n})}function ut(e,t){if(!e)return!1;if("radio"===e.type){const n=e.parentNode.parentNode,o=n.querySelectorAll("input");for(let e=0;e/^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid email address"),url:(e,t)=>/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid URL")};function mt(e){var t,n;(t=e).inputValidator||Object.keys(pt).forEach(e=>{t.input===e&&(t.inputValidator=pt[e])}),e.showLoaderOnConfirm&&!e.preConfirm&&s("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request"),(n=e).target&&("string"!=typeof n.target||document.querySelector(n.target))&&("string"==typeof n.target||n.target.appendChild)||(s('Target parameter is not valid, defaulting to "body"'),n.target="body"),"string"==typeof e.title&&(e.title=e.title.split("\n").join(" ")),se(e)}const ht=["swal-title","swal-html","swal-footer"],gt=e=>{e="string"==typeof e.template?document.querySelector(e.template):e.template;if(!e)return{};e=e.content;return kt(e),Object.assign(bt(e),ft(e),yt(e),vt(e),wt(e),Ct(e,ht))},bt=e=>{const o={};return a(e.querySelectorAll("swal-param")).forEach(e=>{At(e,["name","value"]);var t=e.getAttribute("name");let n=e.getAttribute("value");"boolean"==typeof Re[t]&&"false"===n&&(n=!1),"object"==typeof Re[t]&&(n=JSON.parse(n)),o[t]=n}),o},ft=e=>{const n={};return a(e.querySelectorAll("swal-button")).forEach(e=>{At(e,["type","color","aria-label"]);var t=e.getAttribute("type");n["".concat(t,"ButtonText")]=e.innerHTML,n["show".concat(o(t),"Button")]=!0,e.hasAttribute("color")&&(n["".concat(t,"ButtonColor")]=e.getAttribute("color")),e.hasAttribute("aria-label")&&(n["".concat(t,"ButtonAriaLabel")]=e.getAttribute("aria-label"))}),n},yt=e=>{const t={},n=e.querySelector("swal-image");return n&&(At(n,["src","width","height","alt"]),n.hasAttribute("src")&&(t.imageUrl=n.getAttribute("src")),n.hasAttribute("width")&&(t.imageWidth=n.getAttribute("width")),n.hasAttribute("height")&&(t.imageHeight=n.getAttribute("height")),n.hasAttribute("alt")&&(t.imageAlt=n.getAttribute("alt"))),t},vt=e=>{const t={},n=e.querySelector("swal-icon");return n&&(At(n,["type","color"]),n.hasAttribute("type")&&(t.icon=n.getAttribute("type")),n.hasAttribute("color")&&(t.iconColor=n.getAttribute("color")),t.iconHtml=n.innerHTML),t},wt=e=>{const n={},t=e.querySelector("swal-input");t&&(At(t,["type","label","placeholder","value"]),n.input=t.getAttribute("type")||"text",t.hasAttribute("label")&&(n.inputLabel=t.getAttribute("label")),t.hasAttribute("placeholder")&&(n.inputPlaceholder=t.getAttribute("placeholder")),t.hasAttribute("value")&&(n.inputValue=t.getAttribute("value")));e=e.querySelectorAll("swal-input-option");return e.length&&(n.inputOptions={},a(e).forEach(e=>{At(e,["value"]);var t=e.getAttribute("value"),e=e.innerHTML;n.inputOptions[t]=e})),n},Ct=(e,t)=>{const n={};for(const o in t){const i=t[o],a=e.querySelector(i);a&&(At(a,[]),n[i.replace(/^swal-/,"")]=a.innerHTML.trim())}return n},kt=e=>{const t=ht.concat(["swal-param","swal-button","swal-image","swal-icon","swal-input","swal-input-option"]);a(e.children).forEach(e=>{e=e.tagName.toLowerCase();-1===t.indexOf(e)&&s("Unrecognized element <".concat(e,">"))})},At=(t,n)=>{a(t.attributes).forEach(e=>{-1===n.indexOf(e.name)&&s(['Unrecognized attribute "'.concat(e.name,'" on <').concat(t.tagName.toLowerCase(),">."),"".concat(n.length?"Allowed attributes are: ".concat(n.join(", ")):"To set the value, use HTML within the element.")])})},Bt=e=>{const t=b(),n=v();"function"==typeof e.willOpen&&e.willOpen(n);var o=window.getComputedStyle(document.body).overflowY;St(t,n,e),setTimeout(()=>{Pt(t,n)},10),M()&&(Et(t,e.scrollbarPadding,o),(()=>{const e=a(document.body.children);e.forEach(e=>{e===b()||e.contains(b())||(e.hasAttribute("aria-hidden")&&e.setAttribute("data-previous-aria-hidden",e.getAttribute("aria-hidden")),e.setAttribute("aria-hidden","true"))})})()),H()||Me.previousActiveElement||(Me.previousActiveElement=document.activeElement),"function"==typeof e.didOpen&&setTimeout(()=>e.didOpen(n)),_(t,h["no-transition"])},xt=e=>{const t=v();if(e.target===t){const n=b();t.removeEventListener(ue,xt),n.style.overflowY="auto"}},Pt=(e,t)=>{ue&&te(t)?(e.style.overflowY="hidden",t.addEventListener(ue,xt)):e.style.overflowY="auto"},Et=(e,t,n)=>{var o;(/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream||"MacIntel"===navigator.platform&&1{e.scrollTop=0})},St=(e,t,n)=>{W(e,n.showClass.backdrop),t.style.setProperty("opacity","0","important"),Z(t,"grid"),setTimeout(()=>{W(t,n.showClass.popup),t.style.removeProperty("opacity")},10),W([document.documentElement,document.body],h.shown),n.heightAuto&&n.backdrop&&!n.toast&&W([document.documentElement,document.body],h["height-auto"])},Tt=e=>e.checked?1:0,Lt=e=>e.checked?e.value:null,Ot=e=>e.files.length?null!==e.getAttribute("multiple")?e.files:e.files[0]:null,jt=(t,n)=>{const o=v(),i=e=>It[n.input](o,Mt(e),n);u(n.inputOptions)||p(n.inputOptions)?(De(P()),d(n.inputOptions).then(e=>{t.hideLoading(),i(e)})):"object"==typeof n.inputOptions?i(n.inputOptions):r("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(typeof n.inputOptions))},Dt=(t,n)=>{const o=t.getInput();J(o),d(n.inputValue).then(e=>{o.value="number"===n.input?parseFloat(e)||0:"".concat(e),Z(o),o.focus(),t.hideLoading()}).catch(e=>{r("Error in inputValue promise: ".concat(e)),o.value="",Z(o),o.focus(),t.hideLoading()})},It={select:(e,t,i)=>{const a=K(e,h.select),s=(e,t,n)=>{const o=document.createElement("option");o.value=n,V(o,t),o.selected=Ht(n,i.inputValue),e.appendChild(o)};t.forEach(e=>{var t=e[0];const n=e[1];if(Array.isArray(n)){const o=document.createElement("optgroup");o.label=t,o.disabled=!1,a.appendChild(o),n.forEach(e=>s(o,e[1],e[0]))}else s(a,n,t)}),a.focus()},radio:(e,t,a)=>{const s=K(e,h.radio);t.forEach(e=>{var t=e[0],e=e[1];const n=document.createElement("input"),o=document.createElement("label");n.type="radio",n.name=h.radio,n.value=t,Ht(t,a.inputValue)&&(n.checked=!0);const i=document.createElement("span");V(i,e),i.className=h.label,o.appendChild(n),o.appendChild(i),s.appendChild(o)});const n=s.querySelectorAll("input");n.length&&n[0].focus()}},Mt=n=>{const o=[];return"undefined"!=typeof Map&&n instanceof Map?n.forEach((e,t)=>{let n=e;"object"==typeof n&&(n=Mt(n)),o.push([t,n])}):Object.keys(n).forEach(e=>{let t=n[e];"object"==typeof t&&(t=Mt(t)),o.push([e,t])}),o},Ht=(e,t)=>t&&t.toString()===e.toString(),qt=(e,t)=>{var n=he.innerParams.get(e),o=((e,t)=>{const n=e.getInput();if(!n)return null;switch(t.input){case"checkbox":return Tt(n);case"radio":return Lt(n);case"file":return Ot(n);default:return t.inputAutoTrim?n.value.trim():n.value}})(e,n);n.inputValidator?Vt(e,o,t):e.getInput().checkValidity()?("deny"===t?Nt:Ft)(e,o):(e.enableButtons(),e.showValidationMessage(n.validationMessage))},Vt=(t,n,o)=>{const e=he.innerParams.get(t);t.disableInput();const i=Promise.resolve().then(()=>d(e.inputValidator(n,e.validationMessage)));i.then(e=>{t.enableButtons(),t.enableInput(),e?t.showValidationMessage(e):("deny"===o?Nt:Ft)(t,n)})},Nt=(t,n)=>{const e=he.innerParams.get(t||void 0);if(e.showLoaderOnDeny&&De(E()),e.preDeny){const o=Promise.resolve().then(()=>d(e.preDeny(n,e.validationMessage)));o.then(e=>{!1===e?t.hideLoading():t.closePopup({isDenied:!0,value:void 0===e?n:e})})}else t.closePopup({isDenied:!0,value:n})},Ut=(e,t)=>{e.closePopup({isConfirmed:!0,value:t})},Ft=(t,n)=>{const e=he.innerParams.get(t||void 0);if(e.showLoaderOnConfirm&&De(),e.preConfirm){t.resetValidationMessage();const o=Promise.resolve().then(()=>d(e.preConfirm(n,e.validationMessage)));o.then(e=>{G(x())||!1===e?t.hideLoading():Ut(t,void 0===e?n:e)})}else Ut(t,n)},Rt=(e,t,n)=>{const o=I();if(o.length)return(t+=n)===o.length?t=0:-1===t&&(t=o.length-1),o[t].focus();v().focus()},zt=["ArrowRight","ArrowDown"],Wt=["ArrowLeft","ArrowUp"],_t=(e,t,n)=>{var o=he.innerParams.get(e);o&&(o.stopKeydownPropagation&&t.stopPropagation(),"Enter"===t.key?Kt(e,t,o):"Tab"===t.key?Yt(t,o):[...zt,...Wt].includes(t.key)?Zt(t.key):"Escape"===t.key&&Jt(t,o,n))},Kt=(e,t,n)=>{t.isComposing||t.target&&e.getInput()&&t.target.outerHTML===e.getInput().outerHTML&&(["textarea","file"].includes(n.input)||(je(),t.preventDefault()))},Yt=(e,t)=>{var n=e.target,o=I();let i=-1;for(let e=0;e{const t=P(),n=E(),o=T();if([t,n,o].includes(document.activeElement)){e=zt.includes(e)?"nextElementSibling":"previousElementSibling";const i=document.activeElement[e];i&&i.focus()}},Jt=(e,t,n)=>{c(t.allowEscapeKey)&&(e.preventDefault(),n(l.esc))},Xt=(t,e,n)=>{e.popup.onclick=()=>{var e=he.innerParams.get(t);e.showConfirmButton||e.showDenyButton||e.showCancelButton||e.showCloseButton||e.timer||e.input||n(l.close)}};let $t=!1;const Gt=t=>{t.popup.onmousedown=()=>{t.container.onmouseup=function(e){t.container.onmouseup=void 0,e.target===t.container&&($t=!0)}}},Qt=t=>{t.container.onmousedown=()=>{t.popup.onmouseup=function(e){t.popup.onmouseup=void 0,e.target!==t.popup&&!t.popup.contains(e.target)||($t=!0)}}},en=(n,o,i)=>{o.container.onclick=e=>{var t=he.innerParams.get(n);$t?$t=!1:e.target===o.container&&c(t.allowOutsideClick)&&i(l.backdrop)}};const tn=(e,t,n)=>{var o=j();J(o),t.timer&&(e.timeout=new dt(()=>{n("timer"),delete e.timeout},t.timer),t.timerProgressBar&&(Z(o),setTimeout(()=>{e.timeout&&e.timeout.running&&ne(t.timer)})))},nn=(e,t)=>{if(!t.toast)return c(t.allowEnterKey)?void(on(e,t)||Rt(0,-1,1)):an()},on=(e,t)=>t.focusDeny&&G(e.denyButton)?(e.denyButton.focus(),!0):t.focusCancel&&G(e.cancelButton)?(e.cancelButton.focus(),!0):!(!t.focusConfirm||!G(e.confirmButton))&&(e.confirmButton.focus(),!0),an=()=>{document.activeElement&&"function"==typeof document.activeElement.blur&&document.activeElement.blur()};const sn=e=>{for(const t in e)e[t]=new WeakMap};e=Object.freeze({hideLoading:Xe,disableLoading:Xe,getInput:function(e){var t=he.innerParams.get(e||this);return(e=he.domCache.get(e||this))?F(e.popup,t.input):null},close:st,closePopup:st,closeModal:st,closeToast:st,enableButtons:function(){lt(this,["confirmButton","denyButton","cancelButton"],!1)},disableButtons:function(){lt(this,["confirmButton","denyButton","cancelButton"],!0)},enableInput:function(){return ut(this.getInput(),!1)},disableInput:function(){return ut(this.getInput(),!0)},showValidationMessage:function(e){const t=he.domCache.get(this);var n=he.innerParams.get(this);V(t.validationMessage,e),t.validationMessage.className=h["validation-message"],n.customClass&&n.customClass.validationMessage&&W(t.validationMessage,n.customClass.validationMessage),Z(t.validationMessage);const o=this.getInput();o&&(o.setAttribute("aria-invalid",!0),o.setAttribute("aria-describedby",h["validation-message"]),R(o),W(o,h.inputerror))},resetValidationMessage:function(){var e=he.domCache.get(this);e.validationMessage&&J(e.validationMessage);const t=this.getInput();t&&(t.removeAttribute("aria-invalid"),t.removeAttribute("aria-describedby"),_(t,h.inputerror))},getProgressSteps:function(){return he.domCache.get(this).progressSteps},_main:function(e,t={}){Ze(Object.assign({},t,e)),Me.currentInstance&&(Me.currentInstance._destroy(),M()&&ot()),Me.currentInstance=this,mt(e=((e,t)=>{const n=gt(e),o=Object.assign({},Re,t,n,e);return o.showClass=Object.assign({},Re.showClass,o.showClass),o.hideClass=Object.assign({},Re.hideClass,o.hideClass),o})(e,t)),Object.freeze(e),Me.timeout&&(Me.timeout.stop(),delete Me.timeout),clearTimeout(Me.restoreFocusTimeout);var s,r,c,t=(e=>{const t={popup:v(),container:b(),actions:L(),confirmButton:P(),denyButton:E(),cancelButton:T(),loader:S(),closeButton:D(),validationMessage:x(),progressSteps:B()};return he.domCache.set(e,t),t})(this);return Oe(this,e),he.innerParams.set(this,e),s=this,r=t,c=e,new Promise(e=>{const t=e=>{s.closePopup({isDismissed:!0,dismiss:e})};var n,o,i,a;it.swalPromiseResolve.set(s,e),r.confirmButton.onclick=()=>(e=>{var t=he.innerParams.get(e);e.disableButtons(),t.input?qt(e,"confirm"):Ft(e,!0)})(s),r.denyButton.onclick=()=>(e=>{var t=he.innerParams.get(e);e.disableButtons(),t.returnInputValueOnDeny?qt(e,"deny"):Nt(e,!1)})(s),r.cancelButton.onclick=()=>((e,t)=>{e.disableButtons(),t(l.cancel)})(s,t),r.closeButton.onclick=()=>t(l.close),n=s,a=r,e=t,he.innerParams.get(n).toast?Xt(n,a,e):(Gt(a),Qt(a),en(n,a,e)),o=s,a=Me,e=c,i=t,a.keydownTarget&&a.keydownHandlerAdded&&(a.keydownTarget.removeEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!1),e.toast||(a.keydownHandler=e=>_t(o,e,i),a.keydownTarget=e.keydownListenerCapture?window:v(),a.keydownListenerCapture=e.keydownListenerCapture,a.keydownTarget.addEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!0),e=s,"select"===(a=c).input||"radio"===a.input?jt(e,a):["text","email","number","tel","textarea"].includes(a.input)&&(u(a.inputValue)||p(a.inputValue))&&(De(P()),Dt(e,a)),Bt(c),tn(Me,c,t),nn(r,c),setTimeout(()=>{r.container.scrollTop=0})})},update:function(t){var e=v(),n=he.innerParams.get(this);if(!e||N(e,n.hideClass.popup))return s("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");const o={};Object.keys(t).forEach(e=>{ln.isUpdatableParameter(e)?o[e]=t[e]:s('Invalid parameter to update: "'.concat(e,'". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\n\nIf you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md'))}),n=Object.assign({},n,o),Oe(this,n),he.innerParams.set(this,n),Object.defineProperties(this,{params:{value:Object.assign({},this.params,t),writable:!1,enumerable:!0}})},_destroy:function(){var e=he.domCache.get(this);const t=he.innerParams.get(this);t&&(e.popup&&Me.swalCloseEventFinishedCallback&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback),Me.deferDisposalTimer&&(clearTimeout(Me.deferDisposalTimer),delete Me.deferDisposalTimer),"function"==typeof t.didDestroy&&t.didDestroy(),delete this.params,delete Me.keydownHandler,delete Me.keydownTarget,sn(he),sn(it),delete Me.currentInstance)}});let rn;class cn{constructor(...e){"undefined"!=typeof window&&(rn=this,e=Object.freeze(this.constructor.argsToParams(e)),Object.defineProperties(this,{params:{value:e,writable:!1,enumerable:!0,configurable:!0}}),e=this._main(this.params),he.promise.set(this,e))}then(e){const t=he.promise.get(this);return t.then(e)}finally(e){const t=he.promise.get(this);return t.finally(e)}}Object.assign(cn.prototype,e),Object.assign(cn,Je),Object.keys(e).forEach(t=>{cn[t]=function(...e){if(rn)return rn[t](...e)}}),cn.DismissReason=l,cn.version="11.1.7";const ln=cn;return ln.default=ln,ln}),void 0!==this&&this.Sweetalert2&&(this.swal=this.sweetAlert=this.Swal=this.SweetAlert=this.Sweetalert2);
+"undefined"!=typeof document&&function(e,t){var n=e.createElement("style");if(e.getElementsByTagName("head")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,".swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4!important;grid-row:1/4!important;grid-template-columns:1fr 99fr 1fr;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:grid;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;box-sizing:border-box;grid-template-areas:\"top-start top top-end\" \"center-start center center-end\" \"bottom-start bottom-center bottom-end\";grid-template-rows:minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto);grid-template-rows:minmax(min-content,auto) minmax(min-content,auto) minmax(min-content,auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-bottom-start,.swal2-container.swal2-center-start,.swal2-container.swal2-top-start{grid-template-columns:minmax(0,1fr) auto auto}.swal2-container.swal2-bottom,.swal2-container.swal2-center,.swal2-container.swal2-top{grid-template-columns:auto minmax(0,1fr) auto}.swal2-container.swal2-bottom-end,.swal2-container.swal2-center-end,.swal2-container.swal2-top-end{grid-template-columns:auto auto minmax(0,1fr)}.swal2-container.swal2-top-start>.swal2-popup{align-self:start}.swal2-container.swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}.swal2-container.swal2-top-end>.swal2-popup,.swal2-container.swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}.swal2-container.swal2-center-left>.swal2-popup,.swal2-container.swal2-center-start>.swal2-popup{grid-row:2;align-self:center}.swal2-container.swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}.swal2-container.swal2-center-end>.swal2-popup,.swal2-container.swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}.swal2-container.swal2-bottom-left>.swal2-popup,.swal2-container.swal2-bottom-start>.swal2-popup{grid-column:1;grid-row:3;align-self:end}.swal2-container.swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}.swal2-container.swal2-bottom-end>.swal2-popup,.swal2-container.swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}.swal2-container.swal2-grow-fullscreen>.swal2-popup,.swal2-container.swal2-grow-row>.swal2-popup{grid-column:1/4;width:100%}.swal2-container.swal2-grow-column>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}.swal2-container.swal2-no-transition{transition:none!important}.swal2-popup{display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0,100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-title{position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px transparent;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7367f0;color:#fff;font-size:1em}.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px rgba(115,103,240,.5)}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#ea5455;color:#fff;font-size:1em}.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px rgba(234,84,85,.5)}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7d88;color:#fff;font-size:1em}.swal2-styled.swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,125,136,.5)}.swal2-styled.swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled:focus{outline:0}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto!important;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:2em auto 1em}.swal2-close{z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em 2em 0}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px transparent;color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em 2em 0;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-file{width:75%;margin-right:auto;margin-left:auto;background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto 0}.swal2-validation-message{align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:.25em solid transparent;border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{background-color:transparent!important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:transparent;pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}");
\ No newline at end of file
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/sweetalert2/sweetalert2.css b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/sweetalert2/sweetalert2.css
new file mode 100644
index 0000000000..3c7543d3b3
--- /dev/null
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/sweetalert2/sweetalert2.css
@@ -0,0 +1,1316 @@
+.swal2-popup.swal2-toast {
+ box-sizing: border-box;
+ grid-column: 1/4 !important;
+ grid-row: 1/4 !important;
+ grid-template-columns: 1fr 99fr 1fr;
+ padding: 1em;
+ overflow-y: hidden;
+ background: #fff;
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0.075), 0 1px 2px rgba(0, 0, 0, 0.075), 1px 2px 4px rgba(0, 0, 0, 0.075), 1px 3px 8px rgba(0, 0, 0, 0.075), 2px 4px 16px rgba(0, 0, 0, 0.075);
+ pointer-events: all;
+}
+.swal2-popup.swal2-toast > * {
+ grid-column: 2;
+}
+.swal2-popup.swal2-toast .swal2-title {
+ margin: 0.5em 1em;
+ padding: 0;
+ font-size: 1em;
+ text-align: initial;
+}
+.swal2-popup.swal2-toast .swal2-loading {
+ justify-content: center;
+}
+.swal2-popup.swal2-toast .swal2-input {
+ height: 2em;
+ margin: 0.5em;
+ font-size: 1em;
+}
+.swal2-popup.swal2-toast .swal2-validation-message {
+ font-size: 1em;
+}
+.swal2-popup.swal2-toast .swal2-footer {
+ margin: 0.5em 0 0;
+ padding: 0.5em 0 0;
+ font-size: 0.8em;
+}
+.swal2-popup.swal2-toast .swal2-close {
+ grid-column: 3/3;
+ grid-row: 1/99;
+ align-self: center;
+ width: 0.8em;
+ height: 0.8em;
+ margin: 0;
+ font-size: 2em;
+}
+.swal2-popup.swal2-toast .swal2-html-container {
+ margin: 0.5em 1em;
+ padding: 0;
+ font-size: 1em;
+ text-align: initial;
+}
+.swal2-popup.swal2-toast .swal2-html-container:empty {
+ padding: 0;
+}
+.swal2-popup.swal2-toast .swal2-loader {
+ grid-column: 1;
+ grid-row: 1/99;
+ align-self: center;
+ width: 2em;
+ height: 2em;
+ margin: 0.25em;
+}
+.swal2-popup.swal2-toast .swal2-icon {
+ grid-column: 1;
+ grid-row: 1/99;
+ align-self: center;
+ width: 2em;
+ min-width: 2em;
+ height: 2em;
+ margin: 0 0.5em 0 0;
+}
+.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content {
+ display: flex;
+ align-items: center;
+ font-size: 1.8em;
+ font-weight: bold;
+}
+.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring {
+ width: 2em;
+ height: 2em;
+}
+.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line] {
+ top: 0.875em;
+ width: 1.375em;
+}
+.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left] {
+ left: 0.3125em;
+}
+.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right] {
+ right: 0.3125em;
+}
+.swal2-popup.swal2-toast .swal2-actions {
+ justify-content: flex-start;
+ height: auto;
+ margin: 0;
+ margin-top: 0.5em;
+ padding: 0 0.5em;
+}
+.swal2-popup.swal2-toast .swal2-styled {
+ margin: 0.25em 0.5em;
+ padding: 0.4em 0.6em;
+ font-size: 1em;
+}
+.swal2-popup.swal2-toast .swal2-success {
+ border-color: #a5dc86;
+}
+.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line] {
+ position: absolute;
+ width: 1.6em;
+ height: 3em;
+ transform: rotate(45deg);
+ border-radius: 50%;
+}
+.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left] {
+ top: -0.8em;
+ left: -0.5em;
+ transform: rotate(-45deg);
+ transform-origin: 2em 2em;
+ border-radius: 4em 0 0 4em;
+}
+.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right] {
+ top: -0.25em;
+ left: 0.9375em;
+ transform-origin: 0 1.5em;
+ border-radius: 0 4em 4em 0;
+}
+.swal2-popup.swal2-toast .swal2-success .swal2-success-ring {
+ width: 2em;
+ height: 2em;
+}
+.swal2-popup.swal2-toast .swal2-success .swal2-success-fix {
+ top: 0;
+ left: 0.4375em;
+ width: 0.4375em;
+ height: 2.6875em;
+}
+.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line] {
+ height: 0.3125em;
+}
+.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip] {
+ top: 1.125em;
+ left: 0.1875em;
+ width: 0.75em;
+}
+.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long] {
+ top: 0.9375em;
+ right: 0.1875em;
+ width: 1.375em;
+}
+.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip {
+ -webkit-animation: swal2-toast-animate-success-line-tip 0.75s;
+ animation: swal2-toast-animate-success-line-tip 0.75s;
+}
+.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long {
+ -webkit-animation: swal2-toast-animate-success-line-long 0.75s;
+ animation: swal2-toast-animate-success-line-long 0.75s;
+}
+.swal2-popup.swal2-toast.swal2-show {
+ -webkit-animation: swal2-toast-show 0.5s;
+ animation: swal2-toast-show 0.5s;
+}
+.swal2-popup.swal2-toast.swal2-hide {
+ -webkit-animation: swal2-toast-hide 0.1s forwards;
+ animation: swal2-toast-hide 0.1s forwards;
+}
+
+.swal2-container {
+ display: grid;
+ position: fixed;
+ z-index: 1060;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ box-sizing: border-box;
+ grid-template-areas: "top-start top top-end" "center-start center center-end" "bottom-start bottom-center bottom-end";
+ grid-template-rows: minmax(-webkit-min-content, auto) minmax(-webkit-min-content, auto) minmax(-webkit-min-content, auto);
+ grid-template-rows: minmax(min-content, auto) minmax(min-content, auto) minmax(min-content, auto);
+ height: 100%;
+ padding: 0.625em;
+ overflow-x: hidden;
+ transition: background-color 0.1s;
+ -webkit-overflow-scrolling: touch;
+}
+.swal2-container.swal2-backdrop-show, .swal2-container.swal2-noanimation {
+ background: rgba(0, 0, 0, 0.4);
+}
+.swal2-container.swal2-backdrop-hide {
+ background: transparent !important;
+}
+.swal2-container.swal2-top-start, .swal2-container.swal2-center-start, .swal2-container.swal2-bottom-start {
+ grid-template-columns: minmax(0, 1fr) auto auto;
+}
+.swal2-container.swal2-top, .swal2-container.swal2-center, .swal2-container.swal2-bottom {
+ grid-template-columns: auto minmax(0, 1fr) auto;
+}
+.swal2-container.swal2-top-end, .swal2-container.swal2-center-end, .swal2-container.swal2-bottom-end {
+ grid-template-columns: auto auto minmax(0, 1fr);
+}
+.swal2-container.swal2-top-start > .swal2-popup {
+ align-self: start;
+}
+.swal2-container.swal2-top > .swal2-popup {
+ grid-column: 2;
+ align-self: start;
+ justify-self: center;
+}
+.swal2-container.swal2-top-end > .swal2-popup, .swal2-container.swal2-top-right > .swal2-popup {
+ grid-column: 3;
+ align-self: start;
+ justify-self: end;
+}
+.swal2-container.swal2-center-start > .swal2-popup, .swal2-container.swal2-center-left > .swal2-popup {
+ grid-row: 2;
+ align-self: center;
+}
+.swal2-container.swal2-center > .swal2-popup {
+ grid-column: 2;
+ grid-row: 2;
+ align-self: center;
+ justify-self: center;
+}
+.swal2-container.swal2-center-end > .swal2-popup, .swal2-container.swal2-center-right > .swal2-popup {
+ grid-column: 3;
+ grid-row: 2;
+ align-self: center;
+ justify-self: end;
+}
+.swal2-container.swal2-bottom-start > .swal2-popup, .swal2-container.swal2-bottom-left > .swal2-popup {
+ grid-column: 1;
+ grid-row: 3;
+ align-self: end;
+}
+.swal2-container.swal2-bottom > .swal2-popup {
+ grid-column: 2;
+ grid-row: 3;
+ justify-self: center;
+ align-self: end;
+}
+.swal2-container.swal2-bottom-end > .swal2-popup, .swal2-container.swal2-bottom-right > .swal2-popup {
+ grid-column: 3;
+ grid-row: 3;
+ align-self: end;
+ justify-self: end;
+}
+.swal2-container.swal2-grow-row > .swal2-popup, .swal2-container.swal2-grow-fullscreen > .swal2-popup {
+ grid-column: 1/4;
+ width: 100%;
+}
+.swal2-container.swal2-grow-column > .swal2-popup, .swal2-container.swal2-grow-fullscreen > .swal2-popup {
+ grid-row: 1/4;
+ align-self: stretch;
+}
+.swal2-container.swal2-no-transition {
+ transition: none !important;
+}
+
+.swal2-popup {
+ display: none;
+ position: relative;
+ box-sizing: border-box;
+ grid-template-columns: minmax(0, 100%);
+ width: 32em;
+ max-width: 100%;
+ padding: 0 0 1.25em;
+ border: none;
+ border-radius: 5px;
+ background: #fff;
+ color: #545454;
+ font-family: inherit;
+ font-size: 1rem;
+}
+.swal2-popup:focus {
+ outline: none;
+}
+.swal2-popup.swal2-loading {
+ overflow-y: hidden;
+}
+
+.swal2-title {
+ position: relative;
+ max-width: 100%;
+ margin: 0;
+ padding: 0.8em 1em 0;
+ color: #595959;
+ font-size: 1.875em;
+ font-weight: 600;
+ text-align: center;
+ text-transform: none;
+ word-wrap: break-word;
+}
+
+.swal2-actions {
+ display: flex;
+ z-index: 1;
+ box-sizing: border-box;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: center;
+ width: auto;
+ margin: 1.25em auto 0;
+ padding: 0;
+}
+.swal2-actions:not(.swal2-loading) .swal2-styled[disabled] {
+ opacity: 0.4;
+}
+.swal2-actions:not(.swal2-loading) .swal2-styled:hover {
+ background-image: linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1));
+}
+.swal2-actions:not(.swal2-loading) .swal2-styled:active {
+ background-image: linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2));
+}
+
+.swal2-loader {
+ display: none;
+ align-items: center;
+ justify-content: center;
+ width: 2.2em;
+ height: 2.2em;
+ margin: 0 1.875em;
+ -webkit-animation: swal2-rotate-loading 1.5s linear 0s infinite normal;
+ animation: swal2-rotate-loading 1.5s linear 0s infinite normal;
+ border-width: 0.25em;
+ border-style: solid;
+ border-radius: 100%;
+ border-color: #2778c4 transparent #2778c4 transparent;
+}
+
+.swal2-styled {
+ margin: 0.3125em;
+ padding: 0.625em 1.1em;
+ transition: box-shadow 0.1s;
+ box-shadow: 0 0 0 3px transparent;
+ font-weight: 500;
+}
+.swal2-styled:not([disabled]) {
+ cursor: pointer;
+}
+.swal2-styled.swal2-confirm {
+ border: 0;
+ border-radius: 0.25em;
+ background: initial;
+ background-color: #7367f0;
+ color: #fff;
+ font-size: 1em;
+}
+.swal2-styled.swal2-confirm:focus {
+ box-shadow: 0 0 0 3px rgba(115, 103, 240, 0.5);
+}
+.swal2-styled.swal2-deny {
+ border: 0;
+ border-radius: 0.25em;
+ background: initial;
+ background-color: #ea5455;
+ color: #fff;
+ font-size: 1em;
+}
+.swal2-styled.swal2-deny:focus {
+ box-shadow: 0 0 0 3px rgba(234, 84, 85, 0.5);
+}
+.swal2-styled.swal2-cancel {
+ border: 0;
+ border-radius: 0.25em;
+ background: initial;
+ background-color: #6e7d88;
+ color: #fff;
+ font-size: 1em;
+}
+.swal2-styled.swal2-cancel:focus {
+ box-shadow: 0 0 0 3px rgba(110, 125, 136, 0.5);
+}
+.swal2-styled.swal2-default-outline:focus {
+ box-shadow: 0 0 0 3px rgba(100, 150, 200, 0.5);
+}
+.swal2-styled:focus {
+ outline: none;
+}
+.swal2-styled::-moz-focus-inner {
+ border: 0;
+}
+
+.swal2-footer {
+ justify-content: center;
+ margin: 1em 0 0;
+ padding: 1em 1em 0;
+ border-top: 1px solid #eee;
+ color: #545454;
+ font-size: 1em;
+}
+
+.swal2-timer-progress-bar-container {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ grid-column: auto !important;
+ height: 0.25em;
+ overflow: hidden;
+ border-bottom-right-radius: 5px;
+ border-bottom-left-radius: 5px;
+}
+
+.swal2-timer-progress-bar {
+ width: 100%;
+ height: 0.25em;
+ background: rgba(0, 0, 0, 0.2);
+}
+
+.swal2-image {
+ max-width: 100%;
+ margin: 2em auto 1em;
+}
+
+.swal2-close {
+ z-index: 2;
+ align-items: center;
+ justify-content: center;
+ width: 1.2em;
+ height: 1.2em;
+ margin-top: 0;
+ margin-right: 0;
+ margin-bottom: -1.2em;
+ padding: 0;
+ overflow: hidden;
+ transition: color 0.1s, box-shadow 0.1s;
+ border: none;
+ border-radius: 5px;
+ background: transparent;
+ color: #ccc;
+ font-family: serif;
+ font-family: monospace;
+ font-size: 2.5em;
+ cursor: pointer;
+ justify-self: end;
+}
+.swal2-close:hover {
+ transform: none;
+ background: transparent;
+ color: #f27474;
+}
+.swal2-close:focus {
+ outline: none;
+ box-shadow: inset 0 0 0 3px rgba(100, 150, 200, 0.5);
+}
+.swal2-close::-moz-focus-inner {
+ border: 0;
+}
+
+.swal2-html-container {
+ z-index: 1;
+ justify-content: center;
+ margin: 1em 1.6em 0.3em;
+ padding: 0;
+ overflow: auto;
+ color: #545454;
+ font-size: 1.125em;
+ font-weight: normal;
+ line-height: normal;
+ text-align: center;
+ word-wrap: break-word;
+ word-break: break-word;
+}
+
+.swal2-input,
+.swal2-file,
+.swal2-textarea,
+.swal2-select,
+.swal2-radio,
+.swal2-checkbox {
+ margin: 1em 2em 0;
+}
+
+.swal2-input,
+.swal2-file,
+.swal2-textarea {
+ box-sizing: border-box;
+ width: auto;
+ transition: border-color 0.1s, box-shadow 0.1s;
+ border: 1px solid #d9d9d9;
+ border-radius: 0.1875em;
+ background: inherit;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06), 0 0 0 3px transparent;
+ color: inherit;
+ font-size: 1.125em;
+}
+.swal2-input.swal2-inputerror,
+.swal2-file.swal2-inputerror,
+.swal2-textarea.swal2-inputerror {
+ border-color: #f27474 !important;
+ box-shadow: 0 0 2px #f27474 !important;
+}
+.swal2-input:focus,
+.swal2-file:focus,
+.swal2-textarea:focus {
+ border: 1px solid #b4dbed;
+ outline: none;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06), 0 0 0 3px rgba(100, 150, 200, 0.5);
+}
+.swal2-input::-moz-placeholder, .swal2-file::-moz-placeholder, .swal2-textarea::-moz-placeholder {
+ color: #ccc;
+}
+.swal2-input:-ms-input-placeholder, .swal2-file:-ms-input-placeholder, .swal2-textarea:-ms-input-placeholder {
+ color: #ccc;
+}
+.swal2-input::placeholder,
+.swal2-file::placeholder,
+.swal2-textarea::placeholder {
+ color: #ccc;
+}
+
+.swal2-range {
+ margin: 1em 2em 0;
+ background: #fff;
+}
+.swal2-range input {
+ width: 80%;
+}
+.swal2-range output {
+ width: 20%;
+ color: inherit;
+ font-weight: 600;
+ text-align: center;
+}
+.swal2-range input,
+.swal2-range output {
+ height: 2.625em;
+ padding: 0;
+ font-size: 1.125em;
+ line-height: 2.625em;
+}
+
+.swal2-input {
+ height: 2.625em;
+ padding: 0 0.75em;
+}
+
+.swal2-file {
+ width: 75%;
+ margin-right: auto;
+ margin-left: auto;
+ background: inherit;
+ font-size: 1.125em;
+}
+
+.swal2-textarea {
+ height: 6.75em;
+ padding: 0.75em;
+}
+
+.swal2-select {
+ min-width: 50%;
+ max-width: 100%;
+ padding: 0.375em 0.625em;
+ background: inherit;
+ color: inherit;
+ font-size: 1.125em;
+}
+
+.swal2-radio,
+.swal2-checkbox {
+ align-items: center;
+ justify-content: center;
+ background: #fff;
+ color: inherit;
+}
+.swal2-radio label,
+.swal2-checkbox label {
+ margin: 0 0.6em;
+ font-size: 1.125em;
+}
+.swal2-radio input,
+.swal2-checkbox input {
+ flex-shrink: 0;
+ margin: 0 0.4em;
+}
+
+.swal2-input-label {
+ display: flex;
+ justify-content: center;
+ margin: 1em auto 0;
+}
+
+.swal2-validation-message {
+ align-items: center;
+ justify-content: center;
+ margin: 1em 0 0;
+ padding: 0.625em;
+ overflow: hidden;
+ background: #f0f0f0;
+ color: #666666;
+ font-size: 1em;
+ font-weight: 300;
+}
+.swal2-validation-message::before {
+ content: "!";
+ display: inline-block;
+ width: 1.5em;
+ min-width: 1.5em;
+ height: 1.5em;
+ margin: 0 0.625em;
+ border-radius: 50%;
+ background-color: #f27474;
+ color: #fff;
+ font-weight: 600;
+ line-height: 1.5em;
+ text-align: center;
+}
+
+.swal2-icon {
+ position: relative;
+ box-sizing: content-box;
+ justify-content: center;
+ width: 5em;
+ height: 5em;
+ margin: 2.5em auto 0.6em;
+ border: 0.25em solid transparent;
+ border-radius: 50%;
+ border-color: #000;
+ font-family: inherit;
+ line-height: 5em;
+ cursor: default;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.swal2-icon .swal2-icon-content {
+ display: flex;
+ align-items: center;
+ font-size: 3.75em;
+}
+.swal2-icon.swal2-error {
+ border-color: #f27474;
+ color: #f27474;
+}
+.swal2-icon.swal2-error .swal2-x-mark {
+ position: relative;
+ flex-grow: 1;
+}
+.swal2-icon.swal2-error [class^=swal2-x-mark-line] {
+ display: block;
+ position: absolute;
+ top: 2.3125em;
+ width: 2.9375em;
+ height: 0.3125em;
+ border-radius: 0.125em;
+ background-color: #f27474;
+}
+.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left] {
+ left: 1.0625em;
+ transform: rotate(45deg);
+}
+.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right] {
+ right: 1em;
+ transform: rotate(-45deg);
+}
+.swal2-icon.swal2-error.swal2-icon-show {
+ -webkit-animation: swal2-animate-error-icon 0.5s;
+ animation: swal2-animate-error-icon 0.5s;
+}
+.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark {
+ -webkit-animation: swal2-animate-error-x-mark 0.5s;
+ animation: swal2-animate-error-x-mark 0.5s;
+}
+.swal2-icon.swal2-warning {
+ border-color: #facea8;
+ color: #f8bb86;
+}
+.swal2-icon.swal2-info {
+ border-color: #9de0f6;
+ color: #3fc3ee;
+}
+.swal2-icon.swal2-question {
+ border-color: #c9dae1;
+ color: #87adbd;
+}
+.swal2-icon.swal2-success {
+ border-color: #a5dc86;
+ color: #a5dc86;
+}
+.swal2-icon.swal2-success [class^=swal2-success-circular-line] {
+ position: absolute;
+ width: 3.75em;
+ height: 7.5em;
+ transform: rotate(45deg);
+ border-radius: 50%;
+}
+.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left] {
+ top: -0.4375em;
+ left: -2.0635em;
+ transform: rotate(-45deg);
+ transform-origin: 3.75em 3.75em;
+ border-radius: 7.5em 0 0 7.5em;
+}
+.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right] {
+ top: -0.6875em;
+ left: 1.875em;
+ transform: rotate(-45deg);
+ transform-origin: 0 3.75em;
+ border-radius: 0 7.5em 7.5em 0;
+}
+.swal2-icon.swal2-success .swal2-success-ring {
+ position: absolute;
+ z-index: 2;
+ top: -0.25em;
+ left: -0.25em;
+ box-sizing: content-box;
+ width: 100%;
+ height: 100%;
+ border: 0.25em solid rgba(165, 220, 134, 0.3);
+ border-radius: 50%;
+}
+.swal2-icon.swal2-success .swal2-success-fix {
+ position: absolute;
+ z-index: 1;
+ top: 0.5em;
+ left: 1.625em;
+ width: 0.4375em;
+ height: 5.625em;
+ transform: rotate(-45deg);
+}
+.swal2-icon.swal2-success [class^=swal2-success-line] {
+ display: block;
+ position: absolute;
+ z-index: 2;
+ height: 0.3125em;
+ border-radius: 0.125em;
+ background-color: #a5dc86;
+}
+.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip] {
+ top: 2.875em;
+ left: 0.8125em;
+ width: 1.5625em;
+ transform: rotate(45deg);
+}
+.swal2-icon.swal2-success [class^=swal2-success-line][class$=long] {
+ top: 2.375em;
+ right: 0.5em;
+ width: 2.9375em;
+ transform: rotate(-45deg);
+}
+.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip {
+ -webkit-animation: swal2-animate-success-line-tip 0.75s;
+ animation: swal2-animate-success-line-tip 0.75s;
+}
+.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long {
+ -webkit-animation: swal2-animate-success-line-long 0.75s;
+ animation: swal2-animate-success-line-long 0.75s;
+}
+.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right {
+ -webkit-animation: swal2-rotate-success-circular-line 4.25s ease-in;
+ animation: swal2-rotate-success-circular-line 4.25s ease-in;
+}
+
+.swal2-progress-steps {
+ flex-wrap: wrap;
+ align-items: center;
+ max-width: 100%;
+ margin: 1.25em auto;
+ padding: 0;
+ background: inherit;
+ font-weight: 600;
+}
+.swal2-progress-steps li {
+ display: inline-block;
+ position: relative;
+}
+.swal2-progress-steps .swal2-progress-step {
+ z-index: 20;
+ flex-shrink: 0;
+ width: 2em;
+ height: 2em;
+ border-radius: 2em;
+ background: #2778c4;
+ color: #fff;
+ line-height: 2em;
+ text-align: center;
+}
+.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step {
+ background: #2778c4;
+}
+.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step ~ .swal2-progress-step {
+ background: #add8e6;
+ color: #fff;
+}
+.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step ~ .swal2-progress-step-line {
+ background: #add8e6;
+}
+.swal2-progress-steps .swal2-progress-step-line {
+ z-index: 10;
+ flex-shrink: 0;
+ width: 2.5em;
+ height: 0.4em;
+ margin: 0 -1px;
+ background: #2778c4;
+}
+
+[class^=swal2] {
+ -webkit-tap-highlight-color: transparent;
+}
+
+.swal2-show {
+ -webkit-animation: swal2-show 0.3s;
+ animation: swal2-show 0.3s;
+}
+
+.swal2-hide {
+ -webkit-animation: swal2-hide 0.15s forwards;
+ animation: swal2-hide 0.15s forwards;
+}
+
+.swal2-noanimation {
+ transition: none;
+}
+
+.swal2-scrollbar-measure {
+ position: absolute;
+ top: -9999px;
+ width: 50px;
+ height: 50px;
+ overflow: scroll;
+}
+
+.swal2-rtl .swal2-close {
+ margin-right: initial;
+ margin-left: 0;
+}
+.swal2-rtl .swal2-timer-progress-bar {
+ right: 0;
+ left: auto;
+}
+
+@-webkit-keyframes swal2-toast-show {
+ 0% {
+ transform: translateY(-0.625em) rotateZ(2deg);
+ }
+ 33% {
+ transform: translateY(0) rotateZ(-2deg);
+ }
+ 66% {
+ transform: translateY(0.3125em) rotateZ(2deg);
+ }
+ 100% {
+ transform: translateY(0) rotateZ(0deg);
+ }
+}
+
+@keyframes swal2-toast-show {
+ 0% {
+ transform: translateY(-0.625em) rotateZ(2deg);
+ }
+ 33% {
+ transform: translateY(0) rotateZ(-2deg);
+ }
+ 66% {
+ transform: translateY(0.3125em) rotateZ(2deg);
+ }
+ 100% {
+ transform: translateY(0) rotateZ(0deg);
+ }
+}
+@-webkit-keyframes swal2-toast-hide {
+ 100% {
+ transform: rotateZ(1deg);
+ opacity: 0;
+ }
+}
+@keyframes swal2-toast-hide {
+ 100% {
+ transform: rotateZ(1deg);
+ opacity: 0;
+ }
+}
+@-webkit-keyframes swal2-toast-animate-success-line-tip {
+ 0% {
+ top: 0.5625em;
+ left: 0.0625em;
+ width: 0;
+ }
+ 54% {
+ top: 0.125em;
+ left: 0.125em;
+ width: 0;
+ }
+ 70% {
+ top: 0.625em;
+ left: -0.25em;
+ width: 1.625em;
+ }
+ 84% {
+ top: 1.0625em;
+ left: 0.75em;
+ width: 0.5em;
+ }
+ 100% {
+ top: 1.125em;
+ left: 0.1875em;
+ width: 0.75em;
+ }
+}
+@keyframes swal2-toast-animate-success-line-tip {
+ 0% {
+ top: 0.5625em;
+ left: 0.0625em;
+ width: 0;
+ }
+ 54% {
+ top: 0.125em;
+ left: 0.125em;
+ width: 0;
+ }
+ 70% {
+ top: 0.625em;
+ left: -0.25em;
+ width: 1.625em;
+ }
+ 84% {
+ top: 1.0625em;
+ left: 0.75em;
+ width: 0.5em;
+ }
+ 100% {
+ top: 1.125em;
+ left: 0.1875em;
+ width: 0.75em;
+ }
+}
+@-webkit-keyframes swal2-toast-animate-success-line-long {
+ 0% {
+ top: 1.625em;
+ right: 1.375em;
+ width: 0;
+ }
+ 65% {
+ top: 1.25em;
+ right: 0.9375em;
+ width: 0;
+ }
+ 84% {
+ top: 0.9375em;
+ right: 0;
+ width: 1.125em;
+ }
+ 100% {
+ top: 0.9375em;
+ right: 0.1875em;
+ width: 1.375em;
+ }
+}
+@keyframes swal2-toast-animate-success-line-long {
+ 0% {
+ top: 1.625em;
+ right: 1.375em;
+ width: 0;
+ }
+ 65% {
+ top: 1.25em;
+ right: 0.9375em;
+ width: 0;
+ }
+ 84% {
+ top: 0.9375em;
+ right: 0;
+ width: 1.125em;
+ }
+ 100% {
+ top: 0.9375em;
+ right: 0.1875em;
+ width: 1.375em;
+ }
+}
+@-webkit-keyframes swal2-show {
+ 0% {
+ transform: scale(0.7);
+ }
+ 45% {
+ transform: scale(1.05);
+ }
+ 80% {
+ transform: scale(0.95);
+ }
+ 100% {
+ transform: scale(1);
+ }
+}
+@keyframes swal2-show {
+ 0% {
+ transform: scale(0.7);
+ }
+ 45% {
+ transform: scale(1.05);
+ }
+ 80% {
+ transform: scale(0.95);
+ }
+ 100% {
+ transform: scale(1);
+ }
+}
+@-webkit-keyframes swal2-hide {
+ 0% {
+ transform: scale(1);
+ opacity: 1;
+ }
+ 100% {
+ transform: scale(0.5);
+ opacity: 0;
+ }
+}
+@keyframes swal2-hide {
+ 0% {
+ transform: scale(1);
+ opacity: 1;
+ }
+ 100% {
+ transform: scale(0.5);
+ opacity: 0;
+ }
+}
+@-webkit-keyframes swal2-animate-success-line-tip {
+ 0% {
+ top: 1.1875em;
+ left: 0.0625em;
+ width: 0;
+ }
+ 54% {
+ top: 1.0625em;
+ left: 0.125em;
+ width: 0;
+ }
+ 70% {
+ top: 2.1875em;
+ left: -0.375em;
+ width: 3.125em;
+ }
+ 84% {
+ top: 3em;
+ left: 1.3125em;
+ width: 1.0625em;
+ }
+ 100% {
+ top: 2.8125em;
+ left: 0.8125em;
+ width: 1.5625em;
+ }
+}
+@keyframes swal2-animate-success-line-tip {
+ 0% {
+ top: 1.1875em;
+ left: 0.0625em;
+ width: 0;
+ }
+ 54% {
+ top: 1.0625em;
+ left: 0.125em;
+ width: 0;
+ }
+ 70% {
+ top: 2.1875em;
+ left: -0.375em;
+ width: 3.125em;
+ }
+ 84% {
+ top: 3em;
+ left: 1.3125em;
+ width: 1.0625em;
+ }
+ 100% {
+ top: 2.8125em;
+ left: 0.8125em;
+ width: 1.5625em;
+ }
+}
+@-webkit-keyframes swal2-animate-success-line-long {
+ 0% {
+ top: 3.375em;
+ right: 2.875em;
+ width: 0;
+ }
+ 65% {
+ top: 3.375em;
+ right: 2.875em;
+ width: 0;
+ }
+ 84% {
+ top: 2.1875em;
+ right: 0;
+ width: 3.4375em;
+ }
+ 100% {
+ top: 2.375em;
+ right: 0.5em;
+ width: 2.9375em;
+ }
+}
+@keyframes swal2-animate-success-line-long {
+ 0% {
+ top: 3.375em;
+ right: 2.875em;
+ width: 0;
+ }
+ 65% {
+ top: 3.375em;
+ right: 2.875em;
+ width: 0;
+ }
+ 84% {
+ top: 2.1875em;
+ right: 0;
+ width: 3.4375em;
+ }
+ 100% {
+ top: 2.375em;
+ right: 0.5em;
+ width: 2.9375em;
+ }
+}
+@-webkit-keyframes swal2-rotate-success-circular-line {
+ 0% {
+ transform: rotate(-45deg);
+ }
+ 5% {
+ transform: rotate(-45deg);
+ }
+ 12% {
+ transform: rotate(-405deg);
+ }
+ 100% {
+ transform: rotate(-405deg);
+ }
+}
+@keyframes swal2-rotate-success-circular-line {
+ 0% {
+ transform: rotate(-45deg);
+ }
+ 5% {
+ transform: rotate(-45deg);
+ }
+ 12% {
+ transform: rotate(-405deg);
+ }
+ 100% {
+ transform: rotate(-405deg);
+ }
+}
+@-webkit-keyframes swal2-animate-error-x-mark {
+ 0% {
+ margin-top: 1.625em;
+ transform: scale(0.4);
+ opacity: 0;
+ }
+ 50% {
+ margin-top: 1.625em;
+ transform: scale(0.4);
+ opacity: 0;
+ }
+ 80% {
+ margin-top: -0.375em;
+ transform: scale(1.15);
+ }
+ 100% {
+ margin-top: 0;
+ transform: scale(1);
+ opacity: 1;
+ }
+}
+@keyframes swal2-animate-error-x-mark {
+ 0% {
+ margin-top: 1.625em;
+ transform: scale(0.4);
+ opacity: 0;
+ }
+ 50% {
+ margin-top: 1.625em;
+ transform: scale(0.4);
+ opacity: 0;
+ }
+ 80% {
+ margin-top: -0.375em;
+ transform: scale(1.15);
+ }
+ 100% {
+ margin-top: 0;
+ transform: scale(1);
+ opacity: 1;
+ }
+}
+@-webkit-keyframes swal2-animate-error-icon {
+ 0% {
+ transform: rotateX(100deg);
+ opacity: 0;
+ }
+ 100% {
+ transform: rotateX(0deg);
+ opacity: 1;
+ }
+}
+@keyframes swal2-animate-error-icon {
+ 0% {
+ transform: rotateX(100deg);
+ opacity: 0;
+ }
+ 100% {
+ transform: rotateX(0deg);
+ opacity: 1;
+ }
+}
+@-webkit-keyframes swal2-rotate-loading {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+@keyframes swal2-rotate-loading {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) {
+ overflow: hidden;
+}
+body.swal2-height-auto {
+ height: auto !important;
+}
+body.swal2-no-backdrop .swal2-container {
+ background-color: transparent !important;
+ pointer-events: none;
+}
+body.swal2-no-backdrop .swal2-container .swal2-popup {
+ pointer-events: all;
+}
+body.swal2-no-backdrop .swal2-container .swal2-modal {
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.4);
+}
+@media print {
+ body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) {
+ overflow-y: scroll !important;
+ }
+ body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) > [aria-hidden=true] {
+ display: none;
+ }
+ body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container {
+ position: static !important;
+ }
+}
+body.swal2-toast-shown .swal2-container {
+ box-sizing: border-box;
+ width: 360px;
+ max-width: 100%;
+ background-color: transparent;
+ pointer-events: none;
+}
+body.swal2-toast-shown .swal2-container.swal2-top {
+ top: 0;
+ right: auto;
+ bottom: auto;
+ left: 50%;
+ transform: translateX(-50%);
+}
+body.swal2-toast-shown .swal2-container.swal2-top-end, body.swal2-toast-shown .swal2-container.swal2-top-right {
+ top: 0;
+ right: 0;
+ bottom: auto;
+ left: auto;
+}
+body.swal2-toast-shown .swal2-container.swal2-top-start, body.swal2-toast-shown .swal2-container.swal2-top-left {
+ top: 0;
+ right: auto;
+ bottom: auto;
+ left: 0;
+}
+body.swal2-toast-shown .swal2-container.swal2-center-start, body.swal2-toast-shown .swal2-container.swal2-center-left {
+ top: 50%;
+ right: auto;
+ bottom: auto;
+ left: 0;
+ transform: translateY(-50%);
+}
+body.swal2-toast-shown .swal2-container.swal2-center {
+ top: 50%;
+ right: auto;
+ bottom: auto;
+ left: 50%;
+ transform: translate(-50%, -50%);
+}
+body.swal2-toast-shown .swal2-container.swal2-center-end, body.swal2-toast-shown .swal2-container.swal2-center-right {
+ top: 50%;
+ right: 0;
+ bottom: auto;
+ left: auto;
+ transform: translateY(-50%);
+}
+body.swal2-toast-shown .swal2-container.swal2-bottom-start, body.swal2-toast-shown .swal2-container.swal2-bottom-left {
+ top: auto;
+ right: auto;
+ bottom: 0;
+ left: 0;
+}
+body.swal2-toast-shown .swal2-container.swal2-bottom {
+ top: auto;
+ right: auto;
+ bottom: 0;
+ left: 50%;
+ transform: translateX(-50%);
+}
+body.swal2-toast-shown .swal2-container.swal2-bottom-end, body.swal2-toast-shown .swal2-container.swal2-bottom-right {
+ top: auto;
+ right: 0;
+ bottom: 0;
+ left: auto;
+}
\ No newline at end of file
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/sweetalert2/sweetalert2.js b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/sweetalert2/sweetalert2.js
new file mode 100644
index 0000000000..5bda4321cb
--- /dev/null
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/sweetalert2/sweetalert2.js
@@ -0,0 +1,3120 @@
+/*!
+* sweetalert2 v11.1.7
+* Released under the MIT License.
+*/
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global = global || self, global.Sweetalert2 = factory());
+}(this, function () { 'use strict';
+
+ const DismissReason = Object.freeze({
+ cancel: 'cancel',
+ backdrop: 'backdrop',
+ close: 'close',
+ esc: 'esc',
+ timer: 'timer'
+ });
+
+ const consolePrefix = 'SweetAlert2:';
+ /**
+ * Filter the unique values into a new array
+ * @param arr
+ */
+
+ const uniqueArray = arr => {
+ const result = [];
+
+ for (let i = 0; i < arr.length; i++) {
+ if (result.indexOf(arr[i]) === -1) {
+ result.push(arr[i]);
+ }
+ }
+
+ return result;
+ };
+ /**
+ * Capitalize the first letter of a string
+ * @param str
+ */
+
+ const capitalizeFirstLetter = str => str.charAt(0).toUpperCase() + str.slice(1);
+ /**
+ * Convert NodeList to Array
+ * @param nodeList
+ */
+
+ const toArray = nodeList => Array.prototype.slice.call(nodeList);
+ /**
+ * Standardise console warnings
+ * @param message
+ */
+
+ const warn = message => {
+ console.warn("".concat(consolePrefix, " ").concat(typeof message === 'object' ? message.join(' ') : message));
+ };
+ /**
+ * Standardise console errors
+ * @param message
+ */
+
+ const error = message => {
+ console.error("".concat(consolePrefix, " ").concat(message));
+ };
+ /**
+ * Private global state for `warnOnce`
+ * @type {Array}
+ * @private
+ */
+
+ const previousWarnOnceMessages = [];
+ /**
+ * Show a console warning, but only if it hasn't already been shown
+ * @param message
+ */
+
+ const warnOnce = message => {
+ if (!previousWarnOnceMessages.includes(message)) {
+ previousWarnOnceMessages.push(message);
+ warn(message);
+ }
+ };
+ /**
+ * Show a one-time console warning about deprecated params/methods
+ */
+
+ const warnAboutDeprecation = (deprecatedParam, useInstead) => {
+ warnOnce("\"".concat(deprecatedParam, "\" is deprecated and will be removed in the next major release. Please use \"").concat(useInstead, "\" instead."));
+ };
+ /**
+ * If `arg` is a function, call it (with no arguments or context) and return the result.
+ * Otherwise, just pass the value through
+ * @param arg
+ */
+
+ const callIfFunction = arg => typeof arg === 'function' ? arg() : arg;
+ const hasToPromiseFn = arg => arg && typeof arg.toPromise === 'function';
+ const asPromise = arg => hasToPromiseFn(arg) ? arg.toPromise() : Promise.resolve(arg);
+ const isPromise = arg => arg && Promise.resolve(arg) === arg;
+
+ const isJqueryElement = elem => typeof elem === 'object' && elem.jquery;
+
+ const isElement = elem => elem instanceof Element || isJqueryElement(elem);
+
+ const argsToParams = args => {
+ const params = {};
+
+ if (typeof args[0] === 'object' && !isElement(args[0])) {
+ Object.assign(params, args[0]);
+ } else {
+ ['title', 'html', 'icon'].forEach((name, index) => {
+ const arg = args[index];
+
+ if (typeof arg === 'string' || isElement(arg)) {
+ params[name] = arg;
+ } else if (arg !== undefined) {
+ error("Unexpected type of ".concat(name, "! Expected \"string\" or \"Element\", got ").concat(typeof arg));
+ }
+ });
+ }
+
+ return params;
+ };
+
+ const swalPrefix = 'swal2-';
+ const prefix = items => {
+ const result = {};
+
+ for (const i in items) {
+ result[items[i]] = swalPrefix + items[i];
+ }
+
+ return result;
+ };
+ const swalClasses = prefix(['container', 'shown', 'height-auto', 'iosfix', 'popup', 'modal', 'no-backdrop', 'no-transition', 'toast', 'toast-shown', 'show', 'hide', 'close', 'title', 'html-container', 'actions', 'confirm', 'deny', 'cancel', 'default-outline', 'footer', 'icon', 'icon-content', 'image', 'input', 'file', 'range', 'select', 'radio', 'checkbox', 'label', 'textarea', 'inputerror', 'input-label', 'validation-message', 'progress-steps', 'active-progress-step', 'progress-step', 'progress-step-line', 'loader', 'loading', 'styled', 'top', 'top-start', 'top-end', 'top-left', 'top-right', 'center', 'center-start', 'center-end', 'center-left', 'center-right', 'bottom', 'bottom-start', 'bottom-end', 'bottom-left', 'bottom-right', 'grow-row', 'grow-column', 'grow-fullscreen', 'rtl', 'timer-progress-bar', 'timer-progress-bar-container', 'scrollbar-measure', 'icon-success', 'icon-warning', 'icon-info', 'icon-question', 'icon-error']);
+ const iconTypes = prefix(['success', 'warning', 'info', 'question', 'error']);
+
+ const getContainer = () => document.body.querySelector(".".concat(swalClasses.container));
+ const elementBySelector = selectorString => {
+ const container = getContainer();
+ return container ? container.querySelector(selectorString) : null;
+ };
+
+ const elementByClass = className => {
+ return elementBySelector(".".concat(className));
+ };
+
+ const getPopup = () => elementByClass(swalClasses.popup);
+ const getIcon = () => elementByClass(swalClasses.icon);
+ const getTitle = () => elementByClass(swalClasses.title);
+ const getHtmlContainer = () => elementByClass(swalClasses['html-container']);
+ const getImage = () => elementByClass(swalClasses.image);
+ const getProgressSteps = () => elementByClass(swalClasses['progress-steps']);
+ const getValidationMessage = () => elementByClass(swalClasses['validation-message']);
+ const getConfirmButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.confirm));
+ const getDenyButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.deny));
+ const getInputLabel = () => elementByClass(swalClasses['input-label']);
+ const getLoader = () => elementBySelector(".".concat(swalClasses.loader));
+ const getCancelButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.cancel));
+ const getActions = () => elementByClass(swalClasses.actions);
+ const getFooter = () => elementByClass(swalClasses.footer);
+ const getTimerProgressBar = () => elementByClass(swalClasses['timer-progress-bar']);
+ const getCloseButton = () => elementByClass(swalClasses.close); // https://github.com/jkup/focusable/blob/master/index.js
+
+ const focusable = "\n a[href],\n area[href],\n input:not([disabled]),\n select:not([disabled]),\n textarea:not([disabled]),\n button:not([disabled]),\n iframe,\n object,\n embed,\n [tabindex=\"0\"],\n [contenteditable],\n audio[controls],\n video[controls],\n summary\n";
+ const getFocusableElements = () => {
+ const focusableElementsWithTabindex = toArray(getPopup().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')) // sort according to tabindex
+ .sort((a, b) => {
+ a = parseInt(a.getAttribute('tabindex'));
+ b = parseInt(b.getAttribute('tabindex'));
+
+ if (a > b) {
+ return 1;
+ } else if (a < b) {
+ return -1;
+ }
+
+ return 0;
+ });
+ const otherFocusableElements = toArray(getPopup().querySelectorAll(focusable)).filter(el => el.getAttribute('tabindex') !== '-1');
+ return uniqueArray(focusableElementsWithTabindex.concat(otherFocusableElements)).filter(el => isVisible(el));
+ };
+ const isModal = () => {
+ return !isToast() && !document.body.classList.contains(swalClasses['no-backdrop']);
+ };
+ const isToast = () => {
+ return document.body.classList.contains(swalClasses['toast-shown']);
+ };
+ const isLoading = () => {
+ return getPopup().hasAttribute('data-loading');
+ };
+
+ const states = {
+ previousBodyPadding: null
+ };
+ const setInnerHtml = (elem, html) => {
+ // #1926
+ elem.textContent = '';
+
+ if (html) {
+ const parser = new DOMParser();
+ const parsed = parser.parseFromString(html, "text/html");
+ toArray(parsed.querySelector('head').childNodes).forEach(child => {
+ elem.appendChild(child);
+ });
+ toArray(parsed.querySelector('body').childNodes).forEach(child => {
+ elem.appendChild(child);
+ });
+ }
+ };
+ const hasClass = (elem, className) => {
+ if (!className) {
+ return false;
+ }
+
+ const classList = className.split(/\s+/);
+
+ for (let i = 0; i < classList.length; i++) {
+ if (!elem.classList.contains(classList[i])) {
+ return false;
+ }
+ }
+
+ return true;
+ };
+
+ const removeCustomClasses = (elem, params) => {
+ toArray(elem.classList).forEach(className => {
+ if (!Object.values(swalClasses).includes(className) && !Object.values(iconTypes).includes(className) && !Object.values(params.showClass).includes(className)) {
+ elem.classList.remove(className);
+ }
+ });
+ };
+
+ const applyCustomClass = (elem, params, className) => {
+ removeCustomClasses(elem, params);
+
+ if (params.customClass && params.customClass[className]) {
+ if (typeof params.customClass[className] !== 'string' && !params.customClass[className].forEach) {
+ return warn("Invalid type of customClass.".concat(className, "! Expected string or iterable object, got \"").concat(typeof params.customClass[className], "\""));
+ }
+
+ addClass(elem, params.customClass[className]);
+ }
+ };
+ const getInput = (popup, inputType) => {
+ if (!inputType) {
+ return null;
+ }
+
+ switch (inputType) {
+ case 'select':
+ case 'textarea':
+ case 'file':
+ return getChildByClass(popup, swalClasses[inputType]);
+
+ case 'checkbox':
+ return popup.querySelector(".".concat(swalClasses.checkbox, " input"));
+
+ case 'radio':
+ return popup.querySelector(".".concat(swalClasses.radio, " input:checked")) || popup.querySelector(".".concat(swalClasses.radio, " input:first-child"));
+
+ case 'range':
+ return popup.querySelector(".".concat(swalClasses.range, " input"));
+
+ default:
+ return getChildByClass(popup, swalClasses.input);
+ }
+ };
+ const focusInput = input => {
+ input.focus(); // place cursor at end of text in text input
+
+ if (input.type !== 'file') {
+ // http://stackoverflow.com/a/2345915
+ const val = input.value;
+ input.value = '';
+ input.value = val;
+ }
+ };
+ const toggleClass = (target, classList, condition) => {
+ if (!target || !classList) {
+ return;
+ }
+
+ if (typeof classList === 'string') {
+ classList = classList.split(/\s+/).filter(Boolean);
+ }
+
+ classList.forEach(className => {
+ if (target.forEach) {
+ target.forEach(elem => {
+ condition ? elem.classList.add(className) : elem.classList.remove(className);
+ });
+ } else {
+ condition ? target.classList.add(className) : target.classList.remove(className);
+ }
+ });
+ };
+ const addClass = (target, classList) => {
+ toggleClass(target, classList, true);
+ };
+ const removeClass = (target, classList) => {
+ toggleClass(target, classList, false);
+ };
+ const getChildByClass = (elem, className) => {
+ for (let i = 0; i < elem.childNodes.length; i++) {
+ if (hasClass(elem.childNodes[i], className)) {
+ return elem.childNodes[i];
+ }
+ }
+ };
+ const applyNumericalStyle = (elem, property, value) => {
+ if (value === "".concat(parseInt(value))) {
+ value = parseInt(value);
+ }
+
+ if (value || parseInt(value) === 0) {
+ elem.style[property] = typeof value === 'number' ? "".concat(value, "px") : value;
+ } else {
+ elem.style.removeProperty(property);
+ }
+ };
+ const show = (elem, display = 'flex') => {
+ elem.style.display = display;
+ };
+ const hide = elem => {
+ elem.style.display = 'none';
+ };
+ const setStyle = (parent, selector, property, value) => {
+ const el = parent.querySelector(selector);
+
+ if (el) {
+ el.style[property] = value;
+ }
+ };
+ const toggle = (elem, condition, display) => {
+ condition ? show(elem, display) : hide(elem);
+ }; // borrowed from jquery $(elem).is(':visible') implementation
+
+ const isVisible = elem => !!(elem && (elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length));
+ const allButtonsAreHidden = () => !isVisible(getConfirmButton()) && !isVisible(getDenyButton()) && !isVisible(getCancelButton());
+ const isScrollable = elem => !!(elem.scrollHeight > elem.clientHeight); // borrowed from https://stackoverflow.com/a/46352119
+
+ const hasCssAnimation = elem => {
+ const style = window.getComputedStyle(elem);
+ const animDuration = parseFloat(style.getPropertyValue('animation-duration') || '0');
+ const transDuration = parseFloat(style.getPropertyValue('transition-duration') || '0');
+ return animDuration > 0 || transDuration > 0;
+ };
+ const animateTimerProgressBar = (timer, reset = false) => {
+ const timerProgressBar = getTimerProgressBar();
+
+ if (isVisible(timerProgressBar)) {
+ if (reset) {
+ timerProgressBar.style.transition = 'none';
+ timerProgressBar.style.width = '100%';
+ }
+
+ setTimeout(() => {
+ timerProgressBar.style.transition = "width ".concat(timer / 1000, "s linear");
+ timerProgressBar.style.width = '0%';
+ }, 10);
+ }
+ };
+ const stopTimerProgressBar = () => {
+ const timerProgressBar = getTimerProgressBar();
+ const timerProgressBarWidth = parseInt(window.getComputedStyle(timerProgressBar).width);
+ timerProgressBar.style.removeProperty('transition');
+ timerProgressBar.style.width = '100%';
+ const timerProgressBarFullWidth = parseInt(window.getComputedStyle(timerProgressBar).width);
+ const timerProgressBarPercent = parseInt(timerProgressBarWidth / timerProgressBarFullWidth * 100);
+ timerProgressBar.style.removeProperty('transition');
+ timerProgressBar.style.width = "".concat(timerProgressBarPercent, "%");
+ };
+
+ // Detect Node env
+ const isNodeEnv = () => typeof window === 'undefined' || typeof document === 'undefined';
+
+ const sweetHTML = "\n \n").replace(/(^|\n)\s*/g, '');
+
+ const resetOldContainer = () => {
+ const oldContainer = getContainer();
+
+ if (!oldContainer) {
+ return false;
+ }
+
+ oldContainer.remove();
+ removeClass([document.documentElement, document.body], [swalClasses['no-backdrop'], swalClasses['toast-shown'], swalClasses['has-column']]);
+ return true;
+ };
+
+ const resetValidationMessage = () => {
+ if (Swal.isVisible()) {
+ Swal.resetValidationMessage();
+ }
+ };
+
+ const addInputChangeListeners = () => {
+ const popup = getPopup();
+ const input = getChildByClass(popup, swalClasses.input);
+ const file = getChildByClass(popup, swalClasses.file);
+ const range = popup.querySelector(".".concat(swalClasses.range, " input"));
+ const rangeOutput = popup.querySelector(".".concat(swalClasses.range, " output"));
+ const select = getChildByClass(popup, swalClasses.select);
+ const checkbox = popup.querySelector(".".concat(swalClasses.checkbox, " input"));
+ const textarea = getChildByClass(popup, swalClasses.textarea);
+ input.oninput = resetValidationMessage;
+ file.onchange = resetValidationMessage;
+ select.onchange = resetValidationMessage;
+ checkbox.onchange = resetValidationMessage;
+ textarea.oninput = resetValidationMessage;
+
+ range.oninput = () => {
+ resetValidationMessage();
+ rangeOutput.value = range.value;
+ };
+
+ range.onchange = () => {
+ resetValidationMessage();
+ range.nextSibling.value = range.value;
+ };
+ };
+
+ const getTarget = target => typeof target === 'string' ? document.querySelector(target) : target;
+
+ const setupAccessibility = params => {
+ const popup = getPopup();
+ popup.setAttribute('role', params.toast ? 'alert' : 'dialog');
+ popup.setAttribute('aria-live', params.toast ? 'polite' : 'assertive');
+
+ if (!params.toast) {
+ popup.setAttribute('aria-modal', 'true');
+ }
+ };
+
+ const setupRTL = targetElement => {
+ if (window.getComputedStyle(targetElement).direction === 'rtl') {
+ addClass(getContainer(), swalClasses.rtl);
+ }
+ };
+ /*
+ * Add modal + backdrop to DOM
+ */
+
+
+ const init = params => {
+ // Clean up the old popup container if it exists
+ const oldContainerExisted = resetOldContainer();
+ /* istanbul ignore if */
+
+ if (isNodeEnv()) {
+ error('SweetAlert2 requires document to initialize');
+ return;
+ }
+
+ const container = document.createElement('div');
+ container.className = swalClasses.container;
+
+ if (oldContainerExisted) {
+ addClass(container, swalClasses['no-transition']);
+ }
+
+ setInnerHtml(container, sweetHTML);
+ const targetElement = getTarget(params.target);
+ targetElement.appendChild(container);
+ setupAccessibility(params);
+ setupRTL(targetElement);
+ addInputChangeListeners();
+ };
+
+ const parseHtmlToContainer = (param, target) => {
+ // DOM element
+ if (param instanceof HTMLElement) {
+ target.appendChild(param); // Object
+ } else if (typeof param === 'object') {
+ handleObject(param, target); // Plain string
+ } else if (param) {
+ setInnerHtml(target, param);
+ }
+ };
+
+ const handleObject = (param, target) => {
+ // JQuery element(s)
+ if (param.jquery) {
+ handleJqueryElem(target, param); // For other objects use their string representation
+ } else {
+ setInnerHtml(target, param.toString());
+ }
+ };
+
+ const handleJqueryElem = (target, elem) => {
+ target.textContent = '';
+
+ if (0 in elem) {
+ for (let i = 0; (i in elem); i++) {
+ target.appendChild(elem[i].cloneNode(true));
+ }
+ } else {
+ target.appendChild(elem.cloneNode(true));
+ }
+ };
+
+ const animationEndEvent = (() => {
+ // Prevent run in Node env
+
+ /* istanbul ignore if */
+ if (isNodeEnv()) {
+ return false;
+ }
+
+ const testEl = document.createElement('div');
+ const transEndEventNames = {
+ WebkitAnimation: 'webkitAnimationEnd',
+ OAnimation: 'oAnimationEnd oanimationend',
+ animation: 'animationend'
+ };
+
+ for (const i in transEndEventNames) {
+ if (Object.prototype.hasOwnProperty.call(transEndEventNames, i) && typeof testEl.style[i] !== 'undefined') {
+ return transEndEventNames[i];
+ }
+ }
+
+ return false;
+ })();
+
+ // https://github.com/twbs/bootstrap/blob/master/js/src/modal.js
+
+ const measureScrollbar = () => {
+ const scrollDiv = document.createElement('div');
+ scrollDiv.className = swalClasses['scrollbar-measure'];
+ document.body.appendChild(scrollDiv);
+ const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
+ document.body.removeChild(scrollDiv);
+ return scrollbarWidth;
+ };
+
+ const renderActions = (instance, params) => {
+ const actions = getActions();
+ const loader = getLoader();
+ const confirmButton = getConfirmButton();
+ const denyButton = getDenyButton();
+ const cancelButton = getCancelButton(); // Actions (buttons) wrapper
+
+ if (!params.showConfirmButton && !params.showDenyButton && !params.showCancelButton) {
+ hide(actions);
+ } else {
+ show(actions);
+ } // Custom class
+
+
+ applyCustomClass(actions, params, 'actions'); // Render buttons
+
+ renderButton(confirmButton, 'confirm', params);
+ renderButton(denyButton, 'deny', params);
+ renderButton(cancelButton, 'cancel', params);
+ handleButtonsStyling(confirmButton, denyButton, cancelButton, params);
+
+ if (params.reverseButtons) {
+ actions.insertBefore(cancelButton, loader);
+ actions.insertBefore(denyButton, loader);
+ actions.insertBefore(confirmButton, loader);
+ } // Loader
+
+
+ setInnerHtml(loader, params.loaderHtml);
+ applyCustomClass(loader, params, 'loader');
+ };
+
+ function handleButtonsStyling(confirmButton, denyButton, cancelButton, params) {
+ if (!params.buttonsStyling) {
+ return removeClass([confirmButton, denyButton, cancelButton], swalClasses.styled);
+ }
+
+ addClass([confirmButton, denyButton, cancelButton], swalClasses.styled); // Buttons background colors
+
+ if (params.confirmButtonColor) {
+ confirmButton.style.backgroundColor = params.confirmButtonColor;
+ addClass(confirmButton, swalClasses['default-outline']);
+ }
+
+ if (params.denyButtonColor) {
+ denyButton.style.backgroundColor = params.denyButtonColor;
+ addClass(denyButton, swalClasses['default-outline']);
+ }
+
+ if (params.cancelButtonColor) {
+ cancelButton.style.backgroundColor = params.cancelButtonColor;
+ addClass(cancelButton, swalClasses['default-outline']);
+ }
+ }
+
+ function renderButton(button, buttonType, params) {
+ toggle(button, params["show".concat(capitalizeFirstLetter(buttonType), "Button")], 'inline-block');
+ setInnerHtml(button, params["".concat(buttonType, "ButtonText")]); // Set caption text
+
+ button.setAttribute('aria-label', params["".concat(buttonType, "ButtonAriaLabel")]); // ARIA label
+ // Add buttons custom classes
+
+ button.className = swalClasses[buttonType];
+ applyCustomClass(button, params, "".concat(buttonType, "Button"));
+ addClass(button, params["".concat(buttonType, "ButtonClass")]);
+ }
+
+ function handleBackdropParam(container, backdrop) {
+ if (typeof backdrop === 'string') {
+ container.style.background = backdrop;
+ } else if (!backdrop) {
+ addClass([document.documentElement, document.body], swalClasses['no-backdrop']);
+ }
+ }
+
+ function handlePositionParam(container, position) {
+ if (position in swalClasses) {
+ addClass(container, swalClasses[position]);
+ } else {
+ warn('The "position" parameter is not valid, defaulting to "center"');
+ addClass(container, swalClasses.center);
+ }
+ }
+
+ function handleGrowParam(container, grow) {
+ if (grow && typeof grow === 'string') {
+ const growClass = "grow-".concat(grow);
+
+ if (growClass in swalClasses) {
+ addClass(container, swalClasses[growClass]);
+ }
+ }
+ }
+
+ const renderContainer = (instance, params) => {
+ const container = getContainer();
+
+ if (!container) {
+ return;
+ }
+
+ handleBackdropParam(container, params.backdrop);
+ handlePositionParam(container, params.position);
+ handleGrowParam(container, params.grow); // Custom class
+
+ applyCustomClass(container, params, 'container');
+ };
+
+ /**
+ * This module containts `WeakMap`s for each effectively-"private property" that a `Swal` has.
+ * For example, to set the private property "foo" of `this` to "bar", you can `privateProps.foo.set(this, 'bar')`
+ * This is the approach that Babel will probably take to implement private methods/fields
+ * https://github.com/tc39/proposal-private-methods
+ * https://github.com/babel/babel/pull/7555
+ * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module*
+ * then we can use that language feature.
+ */
+ var privateProps = {
+ promise: new WeakMap(),
+ innerParams: new WeakMap(),
+ domCache: new WeakMap()
+ };
+
+ const inputTypes = ['input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea'];
+ const renderInput = (instance, params) => {
+ const popup = getPopup();
+ const innerParams = privateProps.innerParams.get(instance);
+ const rerender = !innerParams || params.input !== innerParams.input;
+ inputTypes.forEach(inputType => {
+ const inputClass = swalClasses[inputType];
+ const inputContainer = getChildByClass(popup, inputClass); // set attributes
+
+ setAttributes(inputType, params.inputAttributes); // set class
+
+ inputContainer.className = inputClass;
+
+ if (rerender) {
+ hide(inputContainer);
+ }
+ });
+
+ if (params.input) {
+ if (rerender) {
+ showInput(params);
+ } // set custom class
+
+
+ setCustomClass(params);
+ }
+ };
+
+ const showInput = params => {
+ if (!renderInputType[params.input]) {
+ return error("Unexpected type of input! Expected \"text\", \"email\", \"password\", \"number\", \"tel\", \"select\", \"radio\", \"checkbox\", \"textarea\", \"file\" or \"url\", got \"".concat(params.input, "\""));
+ }
+
+ const inputContainer = getInputContainer(params.input);
+ const input = renderInputType[params.input](inputContainer, params);
+ show(input); // input autofocus
+
+ setTimeout(() => {
+ focusInput(input);
+ });
+ };
+
+ const removeAttributes = input => {
+ for (let i = 0; i < input.attributes.length; i++) {
+ const attrName = input.attributes[i].name;
+
+ if (!['type', 'value', 'style'].includes(attrName)) {
+ input.removeAttribute(attrName);
+ }
+ }
+ };
+
+ const setAttributes = (inputType, inputAttributes) => {
+ const input = getInput(getPopup(), inputType);
+
+ if (!input) {
+ return;
+ }
+
+ removeAttributes(input);
+
+ for (const attr in inputAttributes) {
+ input.setAttribute(attr, inputAttributes[attr]);
+ }
+ };
+
+ const setCustomClass = params => {
+ const inputContainer = getInputContainer(params.input);
+
+ if (params.customClass) {
+ addClass(inputContainer, params.customClass.input);
+ }
+ };
+
+ const setInputPlaceholder = (input, params) => {
+ if (!input.placeholder || params.inputPlaceholder) {
+ input.placeholder = params.inputPlaceholder;
+ }
+ };
+
+ const setInputLabel = (input, prependTo, params) => {
+ if (params.inputLabel) {
+ input.id = swalClasses.input;
+ const label = document.createElement('label');
+ const labelClass = swalClasses['input-label'];
+ label.setAttribute('for', input.id);
+ label.className = labelClass;
+ addClass(label, params.customClass.inputLabel);
+ label.innerText = params.inputLabel;
+ prependTo.insertAdjacentElement('beforebegin', label);
+ }
+ };
+
+ const getInputContainer = inputType => {
+ const inputClass = swalClasses[inputType] ? swalClasses[inputType] : swalClasses.input;
+ return getChildByClass(getPopup(), inputClass);
+ };
+
+ const renderInputType = {};
+
+ renderInputType.text = renderInputType.email = renderInputType.password = renderInputType.number = renderInputType.tel = renderInputType.url = (input, params) => {
+ if (typeof params.inputValue === 'string' || typeof params.inputValue === 'number') {
+ input.value = params.inputValue;
+ } else if (!isPromise(params.inputValue)) {
+ warn("Unexpected type of inputValue! Expected \"string\", \"number\" or \"Promise\", got \"".concat(typeof params.inputValue, "\""));
+ }
+
+ setInputLabel(input, input, params);
+ setInputPlaceholder(input, params);
+ input.type = params.input;
+ return input;
+ };
+
+ renderInputType.file = (input, params) => {
+ setInputLabel(input, input, params);
+ setInputPlaceholder(input, params);
+ return input;
+ };
+
+ renderInputType.range = (range, params) => {
+ const rangeInput = range.querySelector('input');
+ const rangeOutput = range.querySelector('output');
+ rangeInput.value = params.inputValue;
+ rangeInput.type = params.input;
+ rangeOutput.value = params.inputValue;
+ setInputLabel(rangeInput, range, params);
+ return range;
+ };
+
+ renderInputType.select = (select, params) => {
+ select.textContent = '';
+
+ if (params.inputPlaceholder) {
+ const placeholder = document.createElement('option');
+ setInnerHtml(placeholder, params.inputPlaceholder);
+ placeholder.value = '';
+ placeholder.disabled = true;
+ placeholder.selected = true;
+ select.appendChild(placeholder);
+ }
+
+ setInputLabel(select, select, params);
+ return select;
+ };
+
+ renderInputType.radio = radio => {
+ radio.textContent = '';
+ return radio;
+ };
+
+ renderInputType.checkbox = (checkboxContainer, params) => {
+ const checkbox = getInput(getPopup(), 'checkbox');
+ checkbox.value = 1;
+ checkbox.id = swalClasses.checkbox;
+ checkbox.checked = Boolean(params.inputValue);
+ const label = checkboxContainer.querySelector('span');
+ setInnerHtml(label, params.inputPlaceholder);
+ return checkboxContainer;
+ };
+
+ renderInputType.textarea = (textarea, params) => {
+ textarea.value = params.inputValue;
+ setInputPlaceholder(textarea, params);
+ setInputLabel(textarea, textarea, params);
+
+ const getMargin = el => parseInt(window.getComputedStyle(el).marginLeft) + parseInt(window.getComputedStyle(el).marginRight);
+
+ setTimeout(() => {
+ // #2291
+ if ('MutationObserver' in window) {
+ // #1699
+ const initialPopupWidth = parseInt(window.getComputedStyle(getPopup()).width);
+
+ const textareaResizeHandler = () => {
+ const textareaWidth = textarea.offsetWidth + getMargin(textarea);
+
+ if (textareaWidth > initialPopupWidth) {
+ getPopup().style.width = "".concat(textareaWidth, "px");
+ } else {
+ getPopup().style.width = null;
+ }
+ };
+
+ new MutationObserver(textareaResizeHandler).observe(textarea, {
+ attributes: true,
+ attributeFilter: ['style']
+ });
+ }
+ });
+ return textarea;
+ };
+
+ const renderContent = (instance, params) => {
+ const htmlContainer = getHtmlContainer();
+ applyCustomClass(htmlContainer, params, 'htmlContainer'); // Content as HTML
+
+ if (params.html) {
+ parseHtmlToContainer(params.html, htmlContainer);
+ show(htmlContainer, 'block'); // Content as plain text
+ } else if (params.text) {
+ htmlContainer.textContent = params.text;
+ show(htmlContainer, 'block'); // No content
+ } else {
+ hide(htmlContainer);
+ }
+
+ renderInput(instance, params);
+ };
+
+ const renderFooter = (instance, params) => {
+ const footer = getFooter();
+ toggle(footer, params.footer);
+
+ if (params.footer) {
+ parseHtmlToContainer(params.footer, footer);
+ } // Custom class
+
+
+ applyCustomClass(footer, params, 'footer');
+ };
+
+ const renderCloseButton = (instance, params) => {
+ const closeButton = getCloseButton();
+ setInnerHtml(closeButton, params.closeButtonHtml); // Custom class
+
+ applyCustomClass(closeButton, params, 'closeButton');
+ toggle(closeButton, params.showCloseButton);
+ closeButton.setAttribute('aria-label', params.closeButtonAriaLabel);
+ };
+
+ const renderIcon = (instance, params) => {
+ const innerParams = privateProps.innerParams.get(instance);
+ const icon = getIcon(); // if the given icon already rendered, apply the styling without re-rendering the icon
+
+ if (innerParams && params.icon === innerParams.icon) {
+ // Custom or default content
+ setContent(icon, params);
+ applyStyles(icon, params);
+ return;
+ }
+
+ if (!params.icon && !params.iconHtml) {
+ return hide(icon);
+ }
+
+ if (params.icon && Object.keys(iconTypes).indexOf(params.icon) === -1) {
+ error("Unknown icon! Expected \"success\", \"error\", \"warning\", \"info\" or \"question\", got \"".concat(params.icon, "\""));
+ return hide(icon);
+ }
+
+ show(icon); // Custom or default content
+
+ setContent(icon, params);
+ applyStyles(icon, params); // Animate icon
+
+ addClass(icon, params.showClass.icon);
+ };
+
+ const applyStyles = (icon, params) => {
+ for (const iconType in iconTypes) {
+ if (params.icon !== iconType) {
+ removeClass(icon, iconTypes[iconType]);
+ }
+ }
+
+ addClass(icon, iconTypes[params.icon]); // Icon color
+
+ setColor(icon, params); // Success icon background color
+
+ adjustSuccessIconBackgoundColor(); // Custom class
+
+ applyCustomClass(icon, params, 'icon');
+ }; // Adjust success icon background color to match the popup background color
+
+
+ const adjustSuccessIconBackgoundColor = () => {
+ const popup = getPopup();
+ const popupBackgroundColor = window.getComputedStyle(popup).getPropertyValue('background-color');
+ const successIconParts = popup.querySelectorAll('[class^=swal2-success-circular-line], .swal2-success-fix');
+
+ for (let i = 0; i < successIconParts.length; i++) {
+ successIconParts[i].style.backgroundColor = popupBackgroundColor;
+ }
+ };
+
+ const setContent = (icon, params) => {
+ icon.textContent = '';
+
+ if (params.iconHtml) {
+ setInnerHtml(icon, iconContent(params.iconHtml));
+ } else if (params.icon === 'success') {
+ setInnerHtml(icon, "\n
\n \n
\n
\n ");
+ } else if (params.icon === 'error') {
+ setInnerHtml(icon, "\n \n \n \n \n ");
+ } else {
+ const defaultIconHtml = {
+ question: '?',
+ warning: '!',
+ info: 'i'
+ };
+ setInnerHtml(icon, iconContent(defaultIconHtml[params.icon]));
+ }
+ };
+
+ const setColor = (icon, params) => {
+ if (!params.iconColor) {
+ return;
+ }
+
+ icon.style.color = params.iconColor;
+ icon.style.borderColor = params.iconColor;
+
+ for (const sel of ['.swal2-success-line-tip', '.swal2-success-line-long', '.swal2-x-mark-line-left', '.swal2-x-mark-line-right']) {
+ setStyle(icon, sel, 'backgroundColor', params.iconColor);
+ }
+
+ setStyle(icon, '.swal2-success-ring', 'borderColor', params.iconColor);
+ };
+
+ const iconContent = content => "").concat(content, "
");
+
+ const renderImage = (instance, params) => {
+ const image = getImage();
+
+ if (!params.imageUrl) {
+ return hide(image);
+ }
+
+ show(image, ''); // Src, alt
+
+ image.setAttribute('src', params.imageUrl);
+ image.setAttribute('alt', params.imageAlt); // Width, height
+
+ applyNumericalStyle(image, 'width', params.imageWidth);
+ applyNumericalStyle(image, 'height', params.imageHeight); // Class
+
+ image.className = swalClasses.image;
+ applyCustomClass(image, params, 'image');
+ };
+
+ const createStepElement = step => {
+ const stepEl = document.createElement('li');
+ addClass(stepEl, swalClasses['progress-step']);
+ setInnerHtml(stepEl, step);
+ return stepEl;
+ };
+
+ const createLineElement = params => {
+ const lineEl = document.createElement('li');
+ addClass(lineEl, swalClasses['progress-step-line']);
+
+ if (params.progressStepsDistance) {
+ lineEl.style.width = params.progressStepsDistance;
+ }
+
+ return lineEl;
+ };
+
+ const renderProgressSteps = (instance, params) => {
+ const progressStepsContainer = getProgressSteps();
+
+ if (!params.progressSteps || params.progressSteps.length === 0) {
+ return hide(progressStepsContainer);
+ }
+
+ show(progressStepsContainer);
+ progressStepsContainer.textContent = '';
+
+ if (params.currentProgressStep >= params.progressSteps.length) {
+ warn('Invalid currentProgressStep parameter, it should be less than progressSteps.length ' + '(currentProgressStep like JS arrays starts from 0)');
+ }
+
+ params.progressSteps.forEach((step, index) => {
+ const stepEl = createStepElement(step);
+ progressStepsContainer.appendChild(stepEl);
+
+ if (index === params.currentProgressStep) {
+ addClass(stepEl, swalClasses['active-progress-step']);
+ }
+
+ if (index !== params.progressSteps.length - 1) {
+ const lineEl = createLineElement(params);
+ progressStepsContainer.appendChild(lineEl);
+ }
+ });
+ };
+
+ const renderTitle = (instance, params) => {
+ const title = getTitle();
+ toggle(title, params.title || params.titleText, 'block');
+
+ if (params.title) {
+ parseHtmlToContainer(params.title, title);
+ }
+
+ if (params.titleText) {
+ title.innerText = params.titleText;
+ } // Custom class
+
+
+ applyCustomClass(title, params, 'title');
+ };
+
+ const renderPopup = (instance, params) => {
+ const container = getContainer();
+ const popup = getPopup(); // Width
+
+ if (params.toast) {
+ // #2170
+ applyNumericalStyle(container, 'width', params.width);
+ popup.style.width = '100%';
+ popup.insertBefore(getLoader(), getIcon());
+ } else {
+ applyNumericalStyle(popup, 'width', params.width);
+ } // Padding
+
+
+ applyNumericalStyle(popup, 'padding', params.padding); // Background
+
+ if (params.background) {
+ popup.style.background = params.background;
+ }
+
+ hide(getValidationMessage()); // Classes
+
+ addClasses(popup, params);
+ };
+
+ const addClasses = (popup, params) => {
+ // Default Class + showClass when updating Swal.update({})
+ popup.className = "".concat(swalClasses.popup, " ").concat(isVisible(popup) ? params.showClass.popup : '');
+
+ if (params.toast) {
+ addClass([document.documentElement, document.body], swalClasses['toast-shown']);
+ addClass(popup, swalClasses.toast);
+ } else {
+ addClass(popup, swalClasses.modal);
+ } // Custom class
+
+
+ applyCustomClass(popup, params, 'popup');
+
+ if (typeof params.customClass === 'string') {
+ addClass(popup, params.customClass);
+ } // Icon class (#1842)
+
+
+ if (params.icon) {
+ addClass(popup, swalClasses["icon-".concat(params.icon)]);
+ }
+ };
+
+ const render = (instance, params) => {
+ renderPopup(instance, params);
+ renderContainer(instance, params);
+ renderProgressSteps(instance, params);
+ renderIcon(instance, params);
+ renderImage(instance, params);
+ renderTitle(instance, params);
+ renderCloseButton(instance, params);
+ renderContent(instance, params);
+ renderActions(instance, params);
+ renderFooter(instance, params);
+
+ if (typeof params.didRender === 'function') {
+ params.didRender(getPopup());
+ }
+ };
+
+ /*
+ * Global function to determine if SweetAlert2 popup is shown
+ */
+
+ const isVisible$1 = () => {
+ return isVisible(getPopup());
+ };
+ /*
+ * Global function to click 'Confirm' button
+ */
+
+ const clickConfirm = () => getConfirmButton() && getConfirmButton().click();
+ /*
+ * Global function to click 'Deny' button
+ */
+
+ const clickDeny = () => getDenyButton() && getDenyButton().click();
+ /*
+ * Global function to click 'Cancel' button
+ */
+
+ const clickCancel = () => getCancelButton() && getCancelButton().click();
+
+ function fire(...args) {
+ const Swal = this;
+ return new Swal(...args);
+ }
+
+ /**
+ * Returns an extended version of `Swal` containing `params` as defaults.
+ * Useful for reusing Swal configuration.
+ *
+ * For example:
+ *
+ * Before:
+ * const textPromptOptions = { input: 'text', showCancelButton: true }
+ * const {value: firstName} = await Swal.fire({ ...textPromptOptions, title: 'What is your first name?' })
+ * const {value: lastName} = await Swal.fire({ ...textPromptOptions, title: 'What is your last name?' })
+ *
+ * After:
+ * const TextPrompt = Swal.mixin({ input: 'text', showCancelButton: true })
+ * const {value: firstName} = await TextPrompt('What is your first name?')
+ * const {value: lastName} = await TextPrompt('What is your last name?')
+ *
+ * @param mixinParams
+ */
+ function mixin(mixinParams) {
+ class MixinSwal extends this {
+ _main(params, priorityMixinParams) {
+ return super._main(params, Object.assign({}, mixinParams, priorityMixinParams));
+ }
+
+ }
+
+ return MixinSwal;
+ }
+
+ /**
+ * Shows loader (spinner), this is useful with AJAX requests.
+ * By default the loader be shown instead of the "Confirm" button.
+ */
+
+ const showLoading = buttonToReplace => {
+ let popup = getPopup();
+
+ if (!popup) {
+ Swal.fire();
+ }
+
+ popup = getPopup();
+ const loader = getLoader();
+
+ if (isToast()) {
+ hide(getIcon());
+ } else {
+ replaceButton(popup, buttonToReplace);
+ }
+
+ show(loader);
+ popup.setAttribute('data-loading', true);
+ popup.setAttribute('aria-busy', true);
+ popup.focus();
+ };
+
+ const replaceButton = (popup, buttonToReplace) => {
+ const actions = getActions();
+ const loader = getLoader();
+
+ if (!buttonToReplace && isVisible(getConfirmButton())) {
+ buttonToReplace = getConfirmButton();
+ }
+
+ show(actions);
+
+ if (buttonToReplace) {
+ hide(buttonToReplace);
+ loader.setAttribute('data-button-to-replace', buttonToReplace.className);
+ }
+
+ loader.parentNode.insertBefore(loader, buttonToReplace);
+ addClass([popup, actions], swalClasses.loading);
+ };
+
+ const RESTORE_FOCUS_TIMEOUT = 100;
+
+ const globalState = {};
+
+ const focusPreviousActiveElement = () => {
+ if (globalState.previousActiveElement && globalState.previousActiveElement.focus) {
+ globalState.previousActiveElement.focus();
+ globalState.previousActiveElement = null;
+ } else if (document.body) {
+ document.body.focus();
+ }
+ }; // Restore previous active (focused) element
+
+
+ const restoreActiveElement = returnFocus => {
+ return new Promise(resolve => {
+ if (!returnFocus) {
+ return resolve();
+ }
+
+ const x = window.scrollX;
+ const y = window.scrollY;
+ globalState.restoreFocusTimeout = setTimeout(() => {
+ focusPreviousActiveElement();
+ resolve();
+ }, RESTORE_FOCUS_TIMEOUT); // issues/900
+
+ window.scrollTo(x, y);
+ });
+ };
+
+ /**
+ * If `timer` parameter is set, returns number of milliseconds of timer remained.
+ * Otherwise, returns undefined.
+ */
+
+ const getTimerLeft = () => {
+ return globalState.timeout && globalState.timeout.getTimerLeft();
+ };
+ /**
+ * Stop timer. Returns number of milliseconds of timer remained.
+ * If `timer` parameter isn't set, returns undefined.
+ */
+
+ const stopTimer = () => {
+ if (globalState.timeout) {
+ stopTimerProgressBar();
+ return globalState.timeout.stop();
+ }
+ };
+ /**
+ * Resume timer. Returns number of milliseconds of timer remained.
+ * If `timer` parameter isn't set, returns undefined.
+ */
+
+ const resumeTimer = () => {
+ if (globalState.timeout) {
+ const remaining = globalState.timeout.start();
+ animateTimerProgressBar(remaining);
+ return remaining;
+ }
+ };
+ /**
+ * Resume timer. Returns number of milliseconds of timer remained.
+ * If `timer` parameter isn't set, returns undefined.
+ */
+
+ const toggleTimer = () => {
+ const timer = globalState.timeout;
+ return timer && (timer.running ? stopTimer() : resumeTimer());
+ };
+ /**
+ * Increase timer. Returns number of milliseconds of an updated timer.
+ * If `timer` parameter isn't set, returns undefined.
+ */
+
+ const increaseTimer = n => {
+ if (globalState.timeout) {
+ const remaining = globalState.timeout.increase(n);
+ animateTimerProgressBar(remaining, true);
+ return remaining;
+ }
+ };
+ /**
+ * Check if timer is running. Returns true if timer is running
+ * or false if timer is paused or stopped.
+ * If `timer` parameter isn't set, returns undefined
+ */
+
+ const isTimerRunning = () => {
+ return globalState.timeout && globalState.timeout.isRunning();
+ };
+
+ let bodyClickListenerAdded = false;
+ const clickHandlers = {};
+ function bindClickHandler(attr = 'data-swal-template') {
+ clickHandlers[attr] = this;
+
+ if (!bodyClickListenerAdded) {
+ document.body.addEventListener('click', bodyClickListener);
+ bodyClickListenerAdded = true;
+ }
+ }
+
+ const bodyClickListener = event => {
+ for (let el = event.target; el && el !== document; el = el.parentNode) {
+ for (const attr in clickHandlers) {
+ const template = el.getAttribute(attr);
+
+ if (template) {
+ clickHandlers[attr].fire({
+ template
+ });
+ return;
+ }
+ }
+ }
+ };
+
+ const defaultParams = {
+ title: '',
+ titleText: '',
+ text: '',
+ html: '',
+ footer: '',
+ icon: undefined,
+ iconColor: undefined,
+ iconHtml: undefined,
+ template: undefined,
+ toast: false,
+ showClass: {
+ popup: 'swal2-show',
+ backdrop: 'swal2-backdrop-show',
+ icon: 'swal2-icon-show'
+ },
+ hideClass: {
+ popup: 'swal2-hide',
+ backdrop: 'swal2-backdrop-hide',
+ icon: 'swal2-icon-hide'
+ },
+ customClass: {},
+ target: 'body',
+ backdrop: true,
+ heightAuto: true,
+ allowOutsideClick: true,
+ allowEscapeKey: true,
+ allowEnterKey: true,
+ stopKeydownPropagation: true,
+ keydownListenerCapture: false,
+ showConfirmButton: true,
+ showDenyButton: false,
+ showCancelButton: false,
+ preConfirm: undefined,
+ preDeny: undefined,
+ confirmButtonText: 'OK',
+ confirmButtonAriaLabel: '',
+ confirmButtonColor: undefined,
+ denyButtonText: 'No',
+ denyButtonAriaLabel: '',
+ denyButtonColor: undefined,
+ cancelButtonText: 'Cancel',
+ cancelButtonAriaLabel: '',
+ cancelButtonColor: undefined,
+ buttonsStyling: true,
+ reverseButtons: false,
+ focusConfirm: true,
+ focusDeny: false,
+ focusCancel: false,
+ returnFocus: true,
+ showCloseButton: false,
+ closeButtonHtml: '×',
+ closeButtonAriaLabel: 'Close this dialog',
+ loaderHtml: '',
+ showLoaderOnConfirm: false,
+ showLoaderOnDeny: false,
+ imageUrl: undefined,
+ imageWidth: undefined,
+ imageHeight: undefined,
+ imageAlt: '',
+ timer: undefined,
+ timerProgressBar: false,
+ width: undefined,
+ padding: undefined,
+ background: undefined,
+ input: undefined,
+ inputPlaceholder: '',
+ inputLabel: '',
+ inputValue: '',
+ inputOptions: {},
+ inputAutoTrim: true,
+ inputAttributes: {},
+ inputValidator: undefined,
+ returnInputValueOnDeny: false,
+ validationMessage: undefined,
+ grow: false,
+ position: 'center',
+ progressSteps: [],
+ currentProgressStep: undefined,
+ progressStepsDistance: undefined,
+ willOpen: undefined,
+ didOpen: undefined,
+ didRender: undefined,
+ willClose: undefined,
+ didClose: undefined,
+ didDestroy: undefined,
+ scrollbarPadding: true
+ };
+ const updatableParams = ['allowEscapeKey', 'allowOutsideClick', 'background', 'buttonsStyling', 'cancelButtonAriaLabel', 'cancelButtonColor', 'cancelButtonText', 'closeButtonAriaLabel', 'closeButtonHtml', 'confirmButtonAriaLabel', 'confirmButtonColor', 'confirmButtonText', 'currentProgressStep', 'customClass', 'denyButtonAriaLabel', 'denyButtonColor', 'denyButtonText', 'didClose', 'didDestroy', 'footer', 'hideClass', 'html', 'icon', 'iconColor', 'iconHtml', 'imageAlt', 'imageHeight', 'imageUrl', 'imageWidth', 'preConfirm', 'preDeny', 'progressSteps', 'returnFocus', 'reverseButtons', 'showCancelButton', 'showCloseButton', 'showConfirmButton', 'showDenyButton', 'text', 'title', 'titleText', 'willClose'];
+ const deprecatedParams = {};
+ const toastIncompatibleParams = ['allowOutsideClick', 'allowEnterKey', 'backdrop', 'focusConfirm', 'focusDeny', 'focusCancel', 'returnFocus', 'heightAuto', 'keydownListenerCapture'];
+ /**
+ * Is valid parameter
+ * @param {String} paramName
+ */
+
+ const isValidParameter = paramName => {
+ return Object.prototype.hasOwnProperty.call(defaultParams, paramName);
+ };
+ /**
+ * Is valid parameter for Swal.update() method
+ * @param {String} paramName
+ */
+
+ const isUpdatableParameter = paramName => {
+ return updatableParams.indexOf(paramName) !== -1;
+ };
+ /**
+ * Is deprecated parameter
+ * @param {String} paramName
+ */
+
+ const isDeprecatedParameter = paramName => {
+ return deprecatedParams[paramName];
+ };
+
+ const checkIfParamIsValid = param => {
+ if (!isValidParameter(param)) {
+ warn("Unknown parameter \"".concat(param, "\""));
+ }
+ };
+
+ const checkIfToastParamIsValid = param => {
+ if (toastIncompatibleParams.includes(param)) {
+ warn("The parameter \"".concat(param, "\" is incompatible with toasts"));
+ }
+ };
+
+ const checkIfParamIsDeprecated = param => {
+ if (isDeprecatedParameter(param)) {
+ warnAboutDeprecation(param, isDeprecatedParameter(param));
+ }
+ };
+ /**
+ * Show relevant warnings for given params
+ *
+ * @param params
+ */
+
+
+ const showWarningsForParams = params => {
+ if (!params.backdrop && params.allowOutsideClick) {
+ warn('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`');
+ }
+
+ for (const param in params) {
+ checkIfParamIsValid(param);
+
+ if (params.toast) {
+ checkIfToastParamIsValid(param);
+ }
+
+ checkIfParamIsDeprecated(param);
+ }
+ };
+
+
+
+ var staticMethods = /*#__PURE__*/Object.freeze({
+ isValidParameter: isValidParameter,
+ isUpdatableParameter: isUpdatableParameter,
+ isDeprecatedParameter: isDeprecatedParameter,
+ argsToParams: argsToParams,
+ isVisible: isVisible$1,
+ clickConfirm: clickConfirm,
+ clickDeny: clickDeny,
+ clickCancel: clickCancel,
+ getContainer: getContainer,
+ getPopup: getPopup,
+ getTitle: getTitle,
+ getHtmlContainer: getHtmlContainer,
+ getImage: getImage,
+ getIcon: getIcon,
+ getInputLabel: getInputLabel,
+ getCloseButton: getCloseButton,
+ getActions: getActions,
+ getConfirmButton: getConfirmButton,
+ getDenyButton: getDenyButton,
+ getCancelButton: getCancelButton,
+ getLoader: getLoader,
+ getFooter: getFooter,
+ getTimerProgressBar: getTimerProgressBar,
+ getFocusableElements: getFocusableElements,
+ getValidationMessage: getValidationMessage,
+ isLoading: isLoading,
+ fire: fire,
+ mixin: mixin,
+ showLoading: showLoading,
+ enableLoading: showLoading,
+ getTimerLeft: getTimerLeft,
+ stopTimer: stopTimer,
+ resumeTimer: resumeTimer,
+ toggleTimer: toggleTimer,
+ increaseTimer: increaseTimer,
+ isTimerRunning: isTimerRunning,
+ bindClickHandler: bindClickHandler
+ });
+
+ /**
+ * Hides loader and shows back the button which was hidden by .showLoading()
+ */
+
+ function hideLoading() {
+ // do nothing if popup is closed
+ const innerParams = privateProps.innerParams.get(this);
+
+ if (!innerParams) {
+ return;
+ }
+
+ const domCache = privateProps.domCache.get(this);
+ hide(domCache.loader);
+
+ if (isToast()) {
+ if (innerParams.icon) {
+ show(getIcon());
+ }
+ } else {
+ showRelatedButton(domCache);
+ }
+
+ removeClass([domCache.popup, domCache.actions], swalClasses.loading);
+ domCache.popup.removeAttribute('aria-busy');
+ domCache.popup.removeAttribute('data-loading');
+ domCache.confirmButton.disabled = false;
+ domCache.denyButton.disabled = false;
+ domCache.cancelButton.disabled = false;
+ }
+
+ const showRelatedButton = domCache => {
+ const buttonToReplace = domCache.popup.getElementsByClassName(domCache.loader.getAttribute('data-button-to-replace'));
+
+ if (buttonToReplace.length) {
+ show(buttonToReplace[0], 'inline-block');
+ } else if (allButtonsAreHidden()) {
+ hide(domCache.actions);
+ }
+ };
+
+ function getInput$1(instance) {
+ const innerParams = privateProps.innerParams.get(instance || this);
+ const domCache = privateProps.domCache.get(instance || this);
+
+ if (!domCache) {
+ return null;
+ }
+
+ return getInput(domCache.popup, innerParams.input);
+ }
+
+ const fixScrollbar = () => {
+ // for queues, do not do this more than once
+ if (states.previousBodyPadding !== null) {
+ return;
+ } // if the body has overflow
+
+
+ if (document.body.scrollHeight > window.innerHeight) {
+ // add padding so the content doesn't shift after removal of scrollbar
+ states.previousBodyPadding = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right'));
+ document.body.style.paddingRight = "".concat(states.previousBodyPadding + measureScrollbar(), "px");
+ }
+ };
+ const undoScrollbar = () => {
+ if (states.previousBodyPadding !== null) {
+ document.body.style.paddingRight = "".concat(states.previousBodyPadding, "px");
+ states.previousBodyPadding = null;
+ }
+ };
+
+ /* istanbul ignore file */
+
+ const iOSfix = () => {
+ const iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1;
+
+ if (iOS && !hasClass(document.body, swalClasses.iosfix)) {
+ const offset = document.body.scrollTop;
+ document.body.style.top = "".concat(offset * -1, "px");
+ addClass(document.body, swalClasses.iosfix);
+ lockBodyScroll();
+ addBottomPaddingForTallPopups(); // #1948
+ }
+ };
+
+ const addBottomPaddingForTallPopups = () => {
+ const safari = !navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i);
+
+ if (safari) {
+ const bottomPanelHeight = 44;
+
+ if (getPopup().scrollHeight > window.innerHeight - bottomPanelHeight) {
+ getContainer().style.paddingBottom = "".concat(bottomPanelHeight, "px");
+ }
+ }
+ };
+
+ const lockBodyScroll = () => {
+ // #1246
+ const container = getContainer();
+ let preventTouchMove;
+
+ container.ontouchstart = e => {
+ preventTouchMove = shouldPreventTouchMove(e);
+ };
+
+ container.ontouchmove = e => {
+ if (preventTouchMove) {
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ };
+ };
+
+ const shouldPreventTouchMove = event => {
+ const target = event.target;
+ const container = getContainer();
+
+ if (isStylys(event) || isZoom(event)) {
+ return false;
+ }
+
+ if (target === container) {
+ return true;
+ }
+
+ if (!isScrollable(container) && target.tagName !== 'INPUT' && // #1603
+ target.tagName !== 'TEXTAREA' && // #2266
+ !(isScrollable(getHtmlContainer()) && // #1944
+ getHtmlContainer().contains(target))) {
+ return true;
+ }
+
+ return false;
+ };
+
+ const isStylys = event => {
+ // #1786
+ return event.touches && event.touches.length && event.touches[0].touchType === 'stylus';
+ };
+
+ const isZoom = event => {
+ // #1891
+ return event.touches && event.touches.length > 1;
+ };
+
+ const undoIOSfix = () => {
+ if (hasClass(document.body, swalClasses.iosfix)) {
+ const offset = parseInt(document.body.style.top, 10);
+ removeClass(document.body, swalClasses.iosfix);
+ document.body.style.top = '';
+ document.body.scrollTop = offset * -1;
+ }
+ };
+
+ // Adding aria-hidden="true" to elements outside of the active modal dialog ensures that
+ // elements not within the active modal dialog will not be surfaced if a user opens a screen
+ // reader’s list of elements (headings, form controls, landmarks, etc.) in the document.
+
+ const setAriaHidden = () => {
+ const bodyChildren = toArray(document.body.children);
+ bodyChildren.forEach(el => {
+ if (el === getContainer() || el.contains(getContainer())) {
+ return;
+ }
+
+ if (el.hasAttribute('aria-hidden')) {
+ el.setAttribute('data-previous-aria-hidden', el.getAttribute('aria-hidden'));
+ }
+
+ el.setAttribute('aria-hidden', 'true');
+ });
+ };
+ const unsetAriaHidden = () => {
+ const bodyChildren = toArray(document.body.children);
+ bodyChildren.forEach(el => {
+ if (el.hasAttribute('data-previous-aria-hidden')) {
+ el.setAttribute('aria-hidden', el.getAttribute('data-previous-aria-hidden'));
+ el.removeAttribute('data-previous-aria-hidden');
+ } else {
+ el.removeAttribute('aria-hidden');
+ }
+ });
+ };
+
+ /**
+ * This module containts `WeakMap`s for each effectively-"private property" that a `Swal` has.
+ * For example, to set the private property "foo" of `this` to "bar", you can `privateProps.foo.set(this, 'bar')`
+ * This is the approach that Babel will probably take to implement private methods/fields
+ * https://github.com/tc39/proposal-private-methods
+ * https://github.com/babel/babel/pull/7555
+ * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module*
+ * then we can use that language feature.
+ */
+ var privateMethods = {
+ swalPromiseResolve: new WeakMap()
+ };
+
+ /*
+ * Instance method to close sweetAlert
+ */
+
+ function removePopupAndResetState(instance, container, returnFocus, didClose) {
+ if (isToast()) {
+ triggerDidCloseAndDispose(instance, didClose);
+ } else {
+ restoreActiveElement(returnFocus).then(() => triggerDidCloseAndDispose(instance, didClose));
+ globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, {
+ capture: globalState.keydownListenerCapture
+ });
+ globalState.keydownHandlerAdded = false;
+ }
+
+ const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); // workaround for #2088
+ // for some reason removing the container in Safari will scroll the document to bottom
+
+ if (isSafari) {
+ container.setAttribute('style', 'display:none !important');
+ container.removeAttribute('class');
+ container.innerHTML = '';
+ } else {
+ container.remove();
+ }
+
+ if (isModal()) {
+ undoScrollbar();
+ undoIOSfix();
+ unsetAriaHidden();
+ }
+
+ removeBodyClasses();
+ }
+
+ function removeBodyClasses() {
+ removeClass([document.documentElement, document.body], [swalClasses.shown, swalClasses['height-auto'], swalClasses['no-backdrop'], swalClasses['toast-shown']]);
+ }
+
+ function close(resolveValue) {
+ const popup = getPopup();
+
+ if (!popup) {
+ return;
+ }
+
+ resolveValue = prepareResolveValue(resolveValue);
+ const innerParams = privateProps.innerParams.get(this);
+
+ if (!innerParams || hasClass(popup, innerParams.hideClass.popup)) {
+ return;
+ }
+
+ const swalPromiseResolve = privateMethods.swalPromiseResolve.get(this);
+ removeClass(popup, innerParams.showClass.popup);
+ addClass(popup, innerParams.hideClass.popup);
+ const backdrop = getContainer();
+ removeClass(backdrop, innerParams.showClass.backdrop);
+ addClass(backdrop, innerParams.hideClass.backdrop);
+ handlePopupAnimation(this, popup, innerParams); // Resolve Swal promise
+
+ swalPromiseResolve(resolveValue);
+ }
+
+ const prepareResolveValue = resolveValue => {
+ // When user calls Swal.close()
+ if (typeof resolveValue === 'undefined') {
+ return {
+ isConfirmed: false,
+ isDenied: false,
+ isDismissed: true
+ };
+ }
+
+ return Object.assign({
+ isConfirmed: false,
+ isDenied: false,
+ isDismissed: false
+ }, resolveValue);
+ };
+
+ const handlePopupAnimation = (instance, popup, innerParams) => {
+ const container = getContainer(); // If animation is supported, animate
+
+ const animationIsSupported = animationEndEvent && hasCssAnimation(popup);
+
+ if (typeof innerParams.willClose === 'function') {
+ innerParams.willClose(popup);
+ }
+
+ if (animationIsSupported) {
+ animatePopup(instance, popup, container, innerParams.returnFocus, innerParams.didClose);
+ } else {
+ // Otherwise, remove immediately
+ removePopupAndResetState(instance, container, innerParams.returnFocus, innerParams.didClose);
+ }
+ };
+
+ const animatePopup = (instance, popup, container, returnFocus, didClose) => {
+ globalState.swalCloseEventFinishedCallback = removePopupAndResetState.bind(null, instance, container, returnFocus, didClose);
+ popup.addEventListener(animationEndEvent, function (e) {
+ if (e.target === popup) {
+ globalState.swalCloseEventFinishedCallback();
+ delete globalState.swalCloseEventFinishedCallback;
+ }
+ });
+ };
+
+ const triggerDidCloseAndDispose = (instance, didClose) => {
+ setTimeout(() => {
+ if (typeof didClose === 'function') {
+ didClose.bind(instance.params)();
+ }
+
+ instance._destroy();
+ });
+ };
+
+ function setButtonsDisabled(instance, buttons, disabled) {
+ const domCache = privateProps.domCache.get(instance);
+ buttons.forEach(button => {
+ domCache[button].disabled = disabled;
+ });
+ }
+
+ function setInputDisabled(input, disabled) {
+ if (!input) {
+ return false;
+ }
+
+ if (input.type === 'radio') {
+ const radiosContainer = input.parentNode.parentNode;
+ const radios = radiosContainer.querySelectorAll('input');
+
+ for (let i = 0; i < radios.length; i++) {
+ radios[i].disabled = disabled;
+ }
+ } else {
+ input.disabled = disabled;
+ }
+ }
+
+ function enableButtons() {
+ setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], false);
+ }
+ function disableButtons() {
+ setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], true);
+ }
+ function enableInput() {
+ return setInputDisabled(this.getInput(), false);
+ }
+ function disableInput() {
+ return setInputDisabled(this.getInput(), true);
+ }
+
+ function showValidationMessage(error) {
+ const domCache = privateProps.domCache.get(this);
+ const params = privateProps.innerParams.get(this);
+ setInnerHtml(domCache.validationMessage, error);
+ domCache.validationMessage.className = swalClasses['validation-message'];
+
+ if (params.customClass && params.customClass.validationMessage) {
+ addClass(domCache.validationMessage, params.customClass.validationMessage);
+ }
+
+ show(domCache.validationMessage);
+ const input = this.getInput();
+
+ if (input) {
+ input.setAttribute('aria-invalid', true);
+ input.setAttribute('aria-describedby', swalClasses['validation-message']);
+ focusInput(input);
+ addClass(input, swalClasses.inputerror);
+ }
+ } // Hide block with validation message
+
+ function resetValidationMessage$1() {
+ const domCache = privateProps.domCache.get(this);
+
+ if (domCache.validationMessage) {
+ hide(domCache.validationMessage);
+ }
+
+ const input = this.getInput();
+
+ if (input) {
+ input.removeAttribute('aria-invalid');
+ input.removeAttribute('aria-describedby');
+ removeClass(input, swalClasses.inputerror);
+ }
+ }
+
+ function getProgressSteps$1() {
+ const domCache = privateProps.domCache.get(this);
+ return domCache.progressSteps;
+ }
+
+ class Timer {
+ constructor(callback, delay) {
+ this.callback = callback;
+ this.remaining = delay;
+ this.running = false;
+ this.start();
+ }
+
+ start() {
+ if (!this.running) {
+ this.running = true;
+ this.started = new Date();
+ this.id = setTimeout(this.callback, this.remaining);
+ }
+
+ return this.remaining;
+ }
+
+ stop() {
+ if (this.running) {
+ this.running = false;
+ clearTimeout(this.id);
+ this.remaining -= new Date() - this.started;
+ }
+
+ return this.remaining;
+ }
+
+ increase(n) {
+ const running = this.running;
+
+ if (running) {
+ this.stop();
+ }
+
+ this.remaining += n;
+
+ if (running) {
+ this.start();
+ }
+
+ return this.remaining;
+ }
+
+ getTimerLeft() {
+ if (this.running) {
+ this.stop();
+ this.start();
+ }
+
+ return this.remaining;
+ }
+
+ isRunning() {
+ return this.running;
+ }
+
+ }
+
+ var defaultInputValidators = {
+ email: (string, validationMessage) => {
+ return /^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid email address');
+ },
+ url: (string, validationMessage) => {
+ // taken from https://stackoverflow.com/a/3809435 with a small change from #1306 and #2013
+ return /^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid URL');
+ }
+ };
+
+ function setDefaultInputValidators(params) {
+ // Use default `inputValidator` for supported input types if not provided
+ if (!params.inputValidator) {
+ Object.keys(defaultInputValidators).forEach(key => {
+ if (params.input === key) {
+ params.inputValidator = defaultInputValidators[key];
+ }
+ });
+ }
+ }
+
+ function validateCustomTargetElement(params) {
+ // Determine if the custom target element is valid
+ if (!params.target || typeof params.target === 'string' && !document.querySelector(params.target) || typeof params.target !== 'string' && !params.target.appendChild) {
+ warn('Target parameter is not valid, defaulting to "body"');
+ params.target = 'body';
+ }
+ }
+ /**
+ * Set type, text and actions on popup
+ *
+ * @param params
+ * @returns {boolean}
+ */
+
+
+ function setParameters(params) {
+ setDefaultInputValidators(params); // showLoaderOnConfirm && preConfirm
+
+ if (params.showLoaderOnConfirm && !params.preConfirm) {
+ warn('showLoaderOnConfirm is set to true, but preConfirm is not defined.\n' + 'showLoaderOnConfirm should be used together with preConfirm, see usage example:\n' + 'https://sweetalert2.github.io/#ajax-request');
+ }
+
+ validateCustomTargetElement(params); // Replace newlines with in title
+
+ if (typeof params.title === 'string') {
+ params.title = params.title.split('\n').join(' ');
+ }
+
+ init(params);
+ }
+
+ const swalStringParams = ['swal-title', 'swal-html', 'swal-footer'];
+ const getTemplateParams = params => {
+ const template = typeof params.template === 'string' ? document.querySelector(params.template) : params.template;
+
+ if (!template) {
+ return {};
+ }
+
+ const templateContent = template.content;
+ showWarningsForElements(templateContent);
+ const result = Object.assign(getSwalParams(templateContent), getSwalButtons(templateContent), getSwalImage(templateContent), getSwalIcon(templateContent), getSwalInput(templateContent), getSwalStringParams(templateContent, swalStringParams));
+ return result;
+ };
+
+ const getSwalParams = templateContent => {
+ const result = {};
+ toArray(templateContent.querySelectorAll('swal-param')).forEach(param => {
+ showWarningsForAttributes(param, ['name', 'value']);
+ const paramName = param.getAttribute('name');
+ let value = param.getAttribute('value');
+
+ if (typeof defaultParams[paramName] === 'boolean' && value === 'false') {
+ value = false;
+ }
+
+ if (typeof defaultParams[paramName] === 'object') {
+ value = JSON.parse(value);
+ }
+
+ result[paramName] = value;
+ });
+ return result;
+ };
+
+ const getSwalButtons = templateContent => {
+ const result = {};
+ toArray(templateContent.querySelectorAll('swal-button')).forEach(button => {
+ showWarningsForAttributes(button, ['type', 'color', 'aria-label']);
+ const type = button.getAttribute('type');
+ result["".concat(type, "ButtonText")] = button.innerHTML;
+ result["show".concat(capitalizeFirstLetter(type), "Button")] = true;
+
+ if (button.hasAttribute('color')) {
+ result["".concat(type, "ButtonColor")] = button.getAttribute('color');
+ }
+
+ if (button.hasAttribute('aria-label')) {
+ result["".concat(type, "ButtonAriaLabel")] = button.getAttribute('aria-label');
+ }
+ });
+ return result;
+ };
+
+ const getSwalImage = templateContent => {
+ const result = {};
+ const image = templateContent.querySelector('swal-image');
+
+ if (image) {
+ showWarningsForAttributes(image, ['src', 'width', 'height', 'alt']);
+
+ if (image.hasAttribute('src')) {
+ result.imageUrl = image.getAttribute('src');
+ }
+
+ if (image.hasAttribute('width')) {
+ result.imageWidth = image.getAttribute('width');
+ }
+
+ if (image.hasAttribute('height')) {
+ result.imageHeight = image.getAttribute('height');
+ }
+
+ if (image.hasAttribute('alt')) {
+ result.imageAlt = image.getAttribute('alt');
+ }
+ }
+
+ return result;
+ };
+
+ const getSwalIcon = templateContent => {
+ const result = {};
+ const icon = templateContent.querySelector('swal-icon');
+
+ if (icon) {
+ showWarningsForAttributes(icon, ['type', 'color']);
+
+ if (icon.hasAttribute('type')) {
+ result.icon = icon.getAttribute('type');
+ }
+
+ if (icon.hasAttribute('color')) {
+ result.iconColor = icon.getAttribute('color');
+ }
+
+ result.iconHtml = icon.innerHTML;
+ }
+
+ return result;
+ };
+
+ const getSwalInput = templateContent => {
+ const result = {};
+ const input = templateContent.querySelector('swal-input');
+
+ if (input) {
+ showWarningsForAttributes(input, ['type', 'label', 'placeholder', 'value']);
+ result.input = input.getAttribute('type') || 'text';
+
+ if (input.hasAttribute('label')) {
+ result.inputLabel = input.getAttribute('label');
+ }
+
+ if (input.hasAttribute('placeholder')) {
+ result.inputPlaceholder = input.getAttribute('placeholder');
+ }
+
+ if (input.hasAttribute('value')) {
+ result.inputValue = input.getAttribute('value');
+ }
+ }
+
+ const inputOptions = templateContent.querySelectorAll('swal-input-option');
+
+ if (inputOptions.length) {
+ result.inputOptions = {};
+ toArray(inputOptions).forEach(option => {
+ showWarningsForAttributes(option, ['value']);
+ const optionValue = option.getAttribute('value');
+ const optionName = option.innerHTML;
+ result.inputOptions[optionValue] = optionName;
+ });
+ }
+
+ return result;
+ };
+
+ const getSwalStringParams = (templateContent, paramNames) => {
+ const result = {};
+
+ for (const i in paramNames) {
+ const paramName = paramNames[i];
+ const tag = templateContent.querySelector(paramName);
+
+ if (tag) {
+ showWarningsForAttributes(tag, []);
+ result[paramName.replace(/^swal-/, '')] = tag.innerHTML.trim();
+ }
+ }
+
+ return result;
+ };
+
+ const showWarningsForElements = template => {
+ const allowedElements = swalStringParams.concat(['swal-param', 'swal-button', 'swal-image', 'swal-icon', 'swal-input', 'swal-input-option']);
+ toArray(template.children).forEach(el => {
+ const tagName = el.tagName.toLowerCase();
+
+ if (allowedElements.indexOf(tagName) === -1) {
+ warn("Unrecognized element <".concat(tagName, ">"));
+ }
+ });
+ };
+
+ const showWarningsForAttributes = (el, allowedAttributes) => {
+ toArray(el.attributes).forEach(attribute => {
+ if (allowedAttributes.indexOf(attribute.name) === -1) {
+ warn(["Unrecognized attribute \"".concat(attribute.name, "\" on <").concat(el.tagName.toLowerCase(), ">."), "".concat(allowedAttributes.length ? "Allowed attributes are: ".concat(allowedAttributes.join(', ')) : 'To set the value, use HTML within the element.')]);
+ }
+ });
+ };
+
+ const SHOW_CLASS_TIMEOUT = 10;
+ /**
+ * Open popup, add necessary classes and styles, fix scrollbar
+ *
+ * @param params
+ */
+
+ const openPopup = params => {
+ const container = getContainer();
+ const popup = getPopup();
+
+ if (typeof params.willOpen === 'function') {
+ params.willOpen(popup);
+ }
+
+ const bodyStyles = window.getComputedStyle(document.body);
+ const initialBodyOverflow = bodyStyles.overflowY;
+ addClasses$1(container, popup, params); // scrolling is 'hidden' until animation is done, after that 'auto'
+
+ setTimeout(() => {
+ setScrollingVisibility(container, popup);
+ }, SHOW_CLASS_TIMEOUT);
+
+ if (isModal()) {
+ fixScrollContainer(container, params.scrollbarPadding, initialBodyOverflow);
+ setAriaHidden();
+ }
+
+ if (!isToast() && !globalState.previousActiveElement) {
+ globalState.previousActiveElement = document.activeElement;
+ }
+
+ if (typeof params.didOpen === 'function') {
+ setTimeout(() => params.didOpen(popup));
+ }
+
+ removeClass(container, swalClasses['no-transition']);
+ };
+
+ const swalOpenAnimationFinished = event => {
+ const popup = getPopup();
+
+ if (event.target !== popup) {
+ return;
+ }
+
+ const container = getContainer();
+ popup.removeEventListener(animationEndEvent, swalOpenAnimationFinished);
+ container.style.overflowY = 'auto';
+ };
+
+ const setScrollingVisibility = (container, popup) => {
+ if (animationEndEvent && hasCssAnimation(popup)) {
+ container.style.overflowY = 'hidden';
+ popup.addEventListener(animationEndEvent, swalOpenAnimationFinished);
+ } else {
+ container.style.overflowY = 'auto';
+ }
+ };
+
+ const fixScrollContainer = (container, scrollbarPadding, initialBodyOverflow) => {
+ iOSfix();
+
+ if (scrollbarPadding && initialBodyOverflow !== 'hidden') {
+ fixScrollbar();
+ } // sweetalert2/issues/1247
+
+
+ setTimeout(() => {
+ container.scrollTop = 0;
+ });
+ };
+
+ const addClasses$1 = (container, popup, params) => {
+ addClass(container, params.showClass.backdrop); // the workaround with setting/unsetting opacity is needed for #2019 and 2059
+
+ popup.style.setProperty('opacity', '0', 'important');
+ show(popup, 'grid');
+ setTimeout(() => {
+ // Animate popup right after showing it
+ addClass(popup, params.showClass.popup); // and remove the opacity workaround
+
+ popup.style.removeProperty('opacity');
+ }, SHOW_CLASS_TIMEOUT); // 10ms in order to fix #2062
+
+ addClass([document.documentElement, document.body], swalClasses.shown);
+
+ if (params.heightAuto && params.backdrop && !params.toast) {
+ addClass([document.documentElement, document.body], swalClasses['height-auto']);
+ }
+ };
+
+ const handleInputOptionsAndValue = (instance, params) => {
+ if (params.input === 'select' || params.input === 'radio') {
+ handleInputOptions(instance, params);
+ } else if (['text', 'email', 'number', 'tel', 'textarea'].includes(params.input) && (hasToPromiseFn(params.inputValue) || isPromise(params.inputValue))) {
+ showLoading(getConfirmButton());
+ handleInputValue(instance, params);
+ }
+ };
+ const getInputValue = (instance, innerParams) => {
+ const input = instance.getInput();
+
+ if (!input) {
+ return null;
+ }
+
+ switch (innerParams.input) {
+ case 'checkbox':
+ return getCheckboxValue(input);
+
+ case 'radio':
+ return getRadioValue(input);
+
+ case 'file':
+ return getFileValue(input);
+
+ default:
+ return innerParams.inputAutoTrim ? input.value.trim() : input.value;
+ }
+ };
+
+ const getCheckboxValue = input => input.checked ? 1 : 0;
+
+ const getRadioValue = input => input.checked ? input.value : null;
+
+ const getFileValue = input => input.files.length ? input.getAttribute('multiple') !== null ? input.files : input.files[0] : null;
+
+ const handleInputOptions = (instance, params) => {
+ const popup = getPopup();
+
+ const processInputOptions = inputOptions => populateInputOptions[params.input](popup, formatInputOptions(inputOptions), params);
+
+ if (hasToPromiseFn(params.inputOptions) || isPromise(params.inputOptions)) {
+ showLoading(getConfirmButton());
+ asPromise(params.inputOptions).then(inputOptions => {
+ instance.hideLoading();
+ processInputOptions(inputOptions);
+ });
+ } else if (typeof params.inputOptions === 'object') {
+ processInputOptions(params.inputOptions);
+ } else {
+ error("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(typeof params.inputOptions));
+ }
+ };
+
+ const handleInputValue = (instance, params) => {
+ const input = instance.getInput();
+ hide(input);
+ asPromise(params.inputValue).then(inputValue => {
+ input.value = params.input === 'number' ? parseFloat(inputValue) || 0 : "".concat(inputValue);
+ show(input);
+ input.focus();
+ instance.hideLoading();
+ }).catch(err => {
+ error("Error in inputValue promise: ".concat(err));
+ input.value = '';
+ show(input);
+ input.focus();
+ instance.hideLoading();
+ });
+ };
+
+ const populateInputOptions = {
+ select: (popup, inputOptions, params) => {
+ const select = getChildByClass(popup, swalClasses.select);
+
+ const renderOption = (parent, optionLabel, optionValue) => {
+ const option = document.createElement('option');
+ option.value = optionValue;
+ setInnerHtml(option, optionLabel);
+ option.selected = isSelected(optionValue, params.inputValue);
+ parent.appendChild(option);
+ };
+
+ inputOptions.forEach(inputOption => {
+ const optionValue = inputOption[0];
+ const optionLabel = inputOption[1]; // spec:
+ // https://www.w3.org/TR/html401/interact/forms.html#h-17.6
+ // "...all OPTGROUP elements must be specified directly within a SELECT element (i.e., groups may not be nested)..."
+ // check whether this is a
+
+ if (Array.isArray(optionLabel)) {
+ // if it is an array, then it is an
+ const optgroup = document.createElement('optgroup');
+ optgroup.label = optionValue;
+ optgroup.disabled = false; // not configurable for now
+
+ select.appendChild(optgroup);
+ optionLabel.forEach(o => renderOption(optgroup, o[1], o[0]));
+ } else {
+ // case of
+ renderOption(select, optionLabel, optionValue);
+ }
+ });
+ select.focus();
+ },
+ radio: (popup, inputOptions, params) => {
+ const radio = getChildByClass(popup, swalClasses.radio);
+ inputOptions.forEach(inputOption => {
+ const radioValue = inputOption[0];
+ const radioLabel = inputOption[1];
+ const radioInput = document.createElement('input');
+ const radioLabelElement = document.createElement('label');
+ radioInput.type = 'radio';
+ radioInput.name = swalClasses.radio;
+ radioInput.value = radioValue;
+
+ if (isSelected(radioValue, params.inputValue)) {
+ radioInput.checked = true;
+ }
+
+ const label = document.createElement('span');
+ setInnerHtml(label, radioLabel);
+ label.className = swalClasses.label;
+ radioLabelElement.appendChild(radioInput);
+ radioLabelElement.appendChild(label);
+ radio.appendChild(radioLabelElement);
+ });
+ const radios = radio.querySelectorAll('input');
+
+ if (radios.length) {
+ radios[0].focus();
+ }
+ }
+ };
+ /**
+ * Converts `inputOptions` into an array of `[value, label]`s
+ * @param inputOptions
+ */
+
+ const formatInputOptions = inputOptions => {
+ const result = [];
+
+ if (typeof Map !== 'undefined' && inputOptions instanceof Map) {
+ inputOptions.forEach((value, key) => {
+ let valueFormatted = value;
+
+ if (typeof valueFormatted === 'object') {
+ // case of
+ valueFormatted = formatInputOptions(valueFormatted);
+ }
+
+ result.push([key, valueFormatted]);
+ });
+ } else {
+ Object.keys(inputOptions).forEach(key => {
+ let valueFormatted = inputOptions[key];
+
+ if (typeof valueFormatted === 'object') {
+ // case of
+ valueFormatted = formatInputOptions(valueFormatted);
+ }
+
+ result.push([key, valueFormatted]);
+ });
+ }
+
+ return result;
+ };
+
+ const isSelected = (optionValue, inputValue) => {
+ return inputValue && inputValue.toString() === optionValue.toString();
+ };
+
+ const handleConfirmButtonClick = instance => {
+ const innerParams = privateProps.innerParams.get(instance);
+ instance.disableButtons();
+
+ if (innerParams.input) {
+ handleConfirmOrDenyWithInput(instance, 'confirm');
+ } else {
+ confirm(instance, true);
+ }
+ };
+ const handleDenyButtonClick = instance => {
+ const innerParams = privateProps.innerParams.get(instance);
+ instance.disableButtons();
+
+ if (innerParams.returnInputValueOnDeny) {
+ handleConfirmOrDenyWithInput(instance, 'deny');
+ } else {
+ deny(instance, false);
+ }
+ };
+ const handleCancelButtonClick = (instance, dismissWith) => {
+ instance.disableButtons();
+ dismissWith(DismissReason.cancel);
+ };
+
+ const handleConfirmOrDenyWithInput = (instance, type
+ /* 'confirm' | 'deny' */
+ ) => {
+ const innerParams = privateProps.innerParams.get(instance);
+ const inputValue = getInputValue(instance, innerParams);
+
+ if (innerParams.inputValidator) {
+ handleInputValidator(instance, inputValue, type);
+ } else if (!instance.getInput().checkValidity()) {
+ instance.enableButtons();
+ instance.showValidationMessage(innerParams.validationMessage);
+ } else if (type === 'deny') {
+ deny(instance, inputValue);
+ } else {
+ confirm(instance, inputValue);
+ }
+ };
+
+ const handleInputValidator = (instance, inputValue, type
+ /* 'confirm' | 'deny' */
+ ) => {
+ const innerParams = privateProps.innerParams.get(instance);
+ instance.disableInput();
+ const validationPromise = Promise.resolve().then(() => asPromise(innerParams.inputValidator(inputValue, innerParams.validationMessage)));
+ validationPromise.then(validationMessage => {
+ instance.enableButtons();
+ instance.enableInput();
+
+ if (validationMessage) {
+ instance.showValidationMessage(validationMessage);
+ } else if (type === 'deny') {
+ deny(instance, inputValue);
+ } else {
+ confirm(instance, inputValue);
+ }
+ });
+ };
+
+ const deny = (instance, value) => {
+ const innerParams = privateProps.innerParams.get(instance || undefined);
+
+ if (innerParams.showLoaderOnDeny) {
+ showLoading(getDenyButton());
+ }
+
+ if (innerParams.preDeny) {
+ const preDenyPromise = Promise.resolve().then(() => asPromise(innerParams.preDeny(value, innerParams.validationMessage)));
+ preDenyPromise.then(preDenyValue => {
+ if (preDenyValue === false) {
+ instance.hideLoading();
+ } else {
+ instance.closePopup({
+ isDenied: true,
+ value: typeof preDenyValue === 'undefined' ? value : preDenyValue
+ });
+ }
+ });
+ } else {
+ instance.closePopup({
+ isDenied: true,
+ value
+ });
+ }
+ };
+
+ const succeedWith = (instance, value) => {
+ instance.closePopup({
+ isConfirmed: true,
+ value
+ });
+ };
+
+ const confirm = (instance, value) => {
+ const innerParams = privateProps.innerParams.get(instance || undefined);
+
+ if (innerParams.showLoaderOnConfirm) {
+ showLoading();
+ }
+
+ if (innerParams.preConfirm) {
+ instance.resetValidationMessage();
+ const preConfirmPromise = Promise.resolve().then(() => asPromise(innerParams.preConfirm(value, innerParams.validationMessage)));
+ preConfirmPromise.then(preConfirmValue => {
+ if (isVisible(getValidationMessage()) || preConfirmValue === false) {
+ instance.hideLoading();
+ } else {
+ succeedWith(instance, typeof preConfirmValue === 'undefined' ? value : preConfirmValue);
+ }
+ });
+ } else {
+ succeedWith(instance, value);
+ }
+ };
+
+ const addKeydownHandler = (instance, globalState, innerParams, dismissWith) => {
+ if (globalState.keydownTarget && globalState.keydownHandlerAdded) {
+ globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, {
+ capture: globalState.keydownListenerCapture
+ });
+ globalState.keydownHandlerAdded = false;
+ }
+
+ if (!innerParams.toast) {
+ globalState.keydownHandler = e => keydownHandler(instance, e, dismissWith);
+
+ globalState.keydownTarget = innerParams.keydownListenerCapture ? window : getPopup();
+ globalState.keydownListenerCapture = innerParams.keydownListenerCapture;
+ globalState.keydownTarget.addEventListener('keydown', globalState.keydownHandler, {
+ capture: globalState.keydownListenerCapture
+ });
+ globalState.keydownHandlerAdded = true;
+ }
+ }; // Focus handling
+
+ const setFocus = (innerParams, index, increment) => {
+ const focusableElements = getFocusableElements(); // search for visible elements and select the next possible match
+
+ if (focusableElements.length) {
+ index = index + increment; // rollover to first item
+
+ if (index === focusableElements.length) {
+ index = 0; // go to last item
+ } else if (index === -1) {
+ index = focusableElements.length - 1;
+ }
+
+ return focusableElements[index].focus();
+ } // no visible focusable elements, focus the popup
+
+
+ getPopup().focus();
+ };
+ const arrowKeysNextButton = ['ArrowRight', 'ArrowDown'];
+ const arrowKeysPreviousButton = ['ArrowLeft', 'ArrowUp'];
+
+ const keydownHandler = (instance, e, dismissWith) => {
+ const innerParams = privateProps.innerParams.get(instance);
+
+ if (!innerParams) {
+ return; // This instance has already been destroyed
+ }
+
+ if (innerParams.stopKeydownPropagation) {
+ e.stopPropagation();
+ } // ENTER
+
+
+ if (e.key === 'Enter') {
+ handleEnter(instance, e, innerParams); // TAB
+ } else if (e.key === 'Tab') {
+ handleTab(e, innerParams); // ARROWS - switch focus between buttons
+ } else if ([...arrowKeysNextButton, ...arrowKeysPreviousButton].includes(e.key)) {
+ handleArrows(e.key); // ESC
+ } else if (e.key === 'Escape') {
+ handleEsc(e, innerParams, dismissWith);
+ }
+ };
+
+ const handleEnter = (instance, e, innerParams) => {
+ // #720 #721
+ if (e.isComposing) {
+ return;
+ }
+
+ if (e.target && instance.getInput() && e.target.outerHTML === instance.getInput().outerHTML) {
+ if (['textarea', 'file'].includes(innerParams.input)) {
+ return; // do not submit
+ }
+
+ clickConfirm();
+ e.preventDefault();
+ }
+ };
+
+ const handleTab = (e, innerParams) => {
+ const targetElement = e.target;
+ const focusableElements = getFocusableElements();
+ let btnIndex = -1;
+
+ for (let i = 0; i < focusableElements.length; i++) {
+ if (targetElement === focusableElements[i]) {
+ btnIndex = i;
+ break;
+ }
+ }
+
+ if (!e.shiftKey) {
+ // Cycle to the next button
+ setFocus(innerParams, btnIndex, 1);
+ } else {
+ // Cycle to the prev button
+ setFocus(innerParams, btnIndex, -1);
+ }
+
+ e.stopPropagation();
+ e.preventDefault();
+ };
+
+ const handleArrows = key => {
+ const confirmButton = getConfirmButton();
+ const denyButton = getDenyButton();
+ const cancelButton = getCancelButton();
+
+ if (![confirmButton, denyButton, cancelButton].includes(document.activeElement)) {
+ return;
+ }
+
+ const sibling = arrowKeysNextButton.includes(key) ? 'nextElementSibling' : 'previousElementSibling';
+ const buttonToFocus = document.activeElement[sibling];
+
+ if (buttonToFocus) {
+ buttonToFocus.focus();
+ }
+ };
+
+ const handleEsc = (e, innerParams, dismissWith) => {
+ if (callIfFunction(innerParams.allowEscapeKey)) {
+ e.preventDefault();
+ dismissWith(DismissReason.esc);
+ }
+ };
+
+ const handlePopupClick = (instance, domCache, dismissWith) => {
+ const innerParams = privateProps.innerParams.get(instance);
+
+ if (innerParams.toast) {
+ handleToastClick(instance, domCache, dismissWith);
+ } else {
+ // Ignore click events that had mousedown on the popup but mouseup on the container
+ // This can happen when the user drags a slider
+ handleModalMousedown(domCache); // Ignore click events that had mousedown on the container but mouseup on the popup
+
+ handleContainerMousedown(domCache);
+ handleModalClick(instance, domCache, dismissWith);
+ }
+ };
+
+ const handleToastClick = (instance, domCache, dismissWith) => {
+ // Closing toast by internal click
+ domCache.popup.onclick = () => {
+ const innerParams = privateProps.innerParams.get(instance);
+
+ if (innerParams.showConfirmButton || innerParams.showDenyButton || innerParams.showCancelButton || innerParams.showCloseButton || innerParams.timer || innerParams.input) {
+ return;
+ }
+
+ dismissWith(DismissReason.close);
+ };
+ };
+
+ let ignoreOutsideClick = false;
+
+ const handleModalMousedown = domCache => {
+ domCache.popup.onmousedown = () => {
+ domCache.container.onmouseup = function (e) {
+ domCache.container.onmouseup = undefined; // We only check if the mouseup target is the container because usually it doesn't
+ // have any other direct children aside of the popup
+
+ if (e.target === domCache.container) {
+ ignoreOutsideClick = true;
+ }
+ };
+ };
+ };
+
+ const handleContainerMousedown = domCache => {
+ domCache.container.onmousedown = () => {
+ domCache.popup.onmouseup = function (e) {
+ domCache.popup.onmouseup = undefined; // We also need to check if the mouseup target is a child of the popup
+
+ if (e.target === domCache.popup || domCache.popup.contains(e.target)) {
+ ignoreOutsideClick = true;
+ }
+ };
+ };
+ };
+
+ const handleModalClick = (instance, domCache, dismissWith) => {
+ domCache.container.onclick = e => {
+ const innerParams = privateProps.innerParams.get(instance);
+
+ if (ignoreOutsideClick) {
+ ignoreOutsideClick = false;
+ return;
+ }
+
+ if (e.target === domCache.container && callIfFunction(innerParams.allowOutsideClick)) {
+ dismissWith(DismissReason.backdrop);
+ }
+ };
+ };
+
+ function _main(userParams, mixinParams = {}) {
+ showWarningsForParams(Object.assign({}, mixinParams, userParams));
+
+ if (globalState.currentInstance) {
+ globalState.currentInstance._destroy();
+
+ if (isModal()) {
+ unsetAriaHidden();
+ }
+ }
+
+ globalState.currentInstance = this;
+ const innerParams = prepareParams(userParams, mixinParams);
+ setParameters(innerParams);
+ Object.freeze(innerParams); // clear the previous timer
+
+ if (globalState.timeout) {
+ globalState.timeout.stop();
+ delete globalState.timeout;
+ } // clear the restore focus timeout
+
+
+ clearTimeout(globalState.restoreFocusTimeout);
+ const domCache = populateDomCache(this);
+ render(this, innerParams);
+ privateProps.innerParams.set(this, innerParams);
+ return swalPromise(this, domCache, innerParams);
+ }
+
+ const prepareParams = (userParams, mixinParams) => {
+ const templateParams = getTemplateParams(userParams);
+ const params = Object.assign({}, defaultParams, mixinParams, templateParams, userParams); // precedence is described in #2131
+
+ params.showClass = Object.assign({}, defaultParams.showClass, params.showClass);
+ params.hideClass = Object.assign({}, defaultParams.hideClass, params.hideClass);
+ return params;
+ };
+
+ const swalPromise = (instance, domCache, innerParams) => {
+ return new Promise(resolve => {
+ // functions to handle all closings/dismissals
+ const dismissWith = dismiss => {
+ instance.closePopup({
+ isDismissed: true,
+ dismiss
+ });
+ };
+
+ privateMethods.swalPromiseResolve.set(instance, resolve);
+
+ domCache.confirmButton.onclick = () => handleConfirmButtonClick(instance);
+
+ domCache.denyButton.onclick = () => handleDenyButtonClick(instance);
+
+ domCache.cancelButton.onclick = () => handleCancelButtonClick(instance, dismissWith);
+
+ domCache.closeButton.onclick = () => dismissWith(DismissReason.close);
+
+ handlePopupClick(instance, domCache, dismissWith);
+ addKeydownHandler(instance, globalState, innerParams, dismissWith);
+ handleInputOptionsAndValue(instance, innerParams);
+ openPopup(innerParams);
+ setupTimer(globalState, innerParams, dismissWith);
+ initFocus(domCache, innerParams); // Scroll container to top on open (#1247, #1946)
+
+ setTimeout(() => {
+ domCache.container.scrollTop = 0;
+ });
+ });
+ };
+
+ const populateDomCache = instance => {
+ const domCache = {
+ popup: getPopup(),
+ container: getContainer(),
+ actions: getActions(),
+ confirmButton: getConfirmButton(),
+ denyButton: getDenyButton(),
+ cancelButton: getCancelButton(),
+ loader: getLoader(),
+ closeButton: getCloseButton(),
+ validationMessage: getValidationMessage(),
+ progressSteps: getProgressSteps()
+ };
+ privateProps.domCache.set(instance, domCache);
+ return domCache;
+ };
+
+ const setupTimer = (globalState$$1, innerParams, dismissWith) => {
+ const timerProgressBar = getTimerProgressBar();
+ hide(timerProgressBar);
+
+ if (innerParams.timer) {
+ globalState$$1.timeout = new Timer(() => {
+ dismissWith('timer');
+ delete globalState$$1.timeout;
+ }, innerParams.timer);
+
+ if (innerParams.timerProgressBar) {
+ show(timerProgressBar);
+ setTimeout(() => {
+ if (globalState$$1.timeout && globalState$$1.timeout.running) {
+ // timer can be already stopped or unset at this point
+ animateTimerProgressBar(innerParams.timer);
+ }
+ });
+ }
+ }
+ };
+
+ const initFocus = (domCache, innerParams) => {
+ if (innerParams.toast) {
+ return;
+ }
+
+ if (!callIfFunction(innerParams.allowEnterKey)) {
+ return blurActiveElement();
+ }
+
+ if (!focusButton(domCache, innerParams)) {
+ setFocus(innerParams, -1, 1);
+ }
+ };
+
+ const focusButton = (domCache, innerParams) => {
+ if (innerParams.focusDeny && isVisible(domCache.denyButton)) {
+ domCache.denyButton.focus();
+ return true;
+ }
+
+ if (innerParams.focusCancel && isVisible(domCache.cancelButton)) {
+ domCache.cancelButton.focus();
+ return true;
+ }
+
+ if (innerParams.focusConfirm && isVisible(domCache.confirmButton)) {
+ domCache.confirmButton.focus();
+ return true;
+ }
+
+ return false;
+ };
+
+ const blurActiveElement = () => {
+ if (document.activeElement && typeof document.activeElement.blur === 'function') {
+ document.activeElement.blur();
+ }
+ };
+
+ /**
+ * Updates popup parameters.
+ */
+
+ function update(params) {
+ const popup = getPopup();
+ const innerParams = privateProps.innerParams.get(this);
+
+ if (!popup || hasClass(popup, innerParams.hideClass.popup)) {
+ return warn("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");
+ }
+
+ const validUpdatableParams = {}; // assign valid params from `params` to `defaults`
+
+ Object.keys(params).forEach(param => {
+ if (Swal.isUpdatableParameter(param)) {
+ validUpdatableParams[param] = params[param];
+ } else {
+ warn("Invalid parameter to update: \"".concat(param, "\". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\n\nIf you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md"));
+ }
+ });
+ const updatedParams = Object.assign({}, innerParams, validUpdatableParams);
+ render(this, updatedParams);
+ privateProps.innerParams.set(this, updatedParams);
+ Object.defineProperties(this, {
+ params: {
+ value: Object.assign({}, this.params, params),
+ writable: false,
+ enumerable: true
+ }
+ });
+ }
+
+ function _destroy() {
+ const domCache = privateProps.domCache.get(this);
+ const innerParams = privateProps.innerParams.get(this);
+
+ if (!innerParams) {
+ return; // This instance has already been destroyed
+ } // Check if there is another Swal closing
+
+
+ if (domCache.popup && globalState.swalCloseEventFinishedCallback) {
+ globalState.swalCloseEventFinishedCallback();
+ delete globalState.swalCloseEventFinishedCallback;
+ } // Check if there is a swal disposal defer timer
+
+
+ if (globalState.deferDisposalTimer) {
+ clearTimeout(globalState.deferDisposalTimer);
+ delete globalState.deferDisposalTimer;
+ }
+
+ if (typeof innerParams.didDestroy === 'function') {
+ innerParams.didDestroy();
+ }
+
+ disposeSwal(this);
+ }
+
+ const disposeSwal = instance => {
+ // Unset this.params so GC will dispose it (#1569)
+ delete instance.params; // Unset globalState props so GC will dispose globalState (#1569)
+
+ delete globalState.keydownHandler;
+ delete globalState.keydownTarget; // Unset WeakMaps so GC will be able to dispose them (#1569)
+
+ unsetWeakMaps(privateProps);
+ unsetWeakMaps(privateMethods); // Unset currentInstance
+
+ delete globalState.currentInstance;
+ };
+
+ const unsetWeakMaps = obj => {
+ for (const i in obj) {
+ obj[i] = new WeakMap();
+ }
+ };
+
+
+
+ var instanceMethods = /*#__PURE__*/Object.freeze({
+ hideLoading: hideLoading,
+ disableLoading: hideLoading,
+ getInput: getInput$1,
+ close: close,
+ closePopup: close,
+ closeModal: close,
+ closeToast: close,
+ enableButtons: enableButtons,
+ disableButtons: disableButtons,
+ enableInput: enableInput,
+ disableInput: disableInput,
+ showValidationMessage: showValidationMessage,
+ resetValidationMessage: resetValidationMessage$1,
+ getProgressSteps: getProgressSteps$1,
+ _main: _main,
+ update: update,
+ _destroy: _destroy
+ });
+
+ let currentInstance;
+
+ class SweetAlert {
+ constructor(...args) {
+ // Prevent run in Node env
+ if (typeof window === 'undefined') {
+ return;
+ }
+
+ currentInstance = this;
+ const outerParams = Object.freeze(this.constructor.argsToParams(args));
+ Object.defineProperties(this, {
+ params: {
+ value: outerParams,
+ writable: false,
+ enumerable: true,
+ configurable: true
+ }
+ });
+
+ const promise = this._main(this.params);
+
+ privateProps.promise.set(this, promise);
+ } // `catch` cannot be the name of a module export, so we define our thenable methods here instead
+
+
+ then(onFulfilled) {
+ const promise = privateProps.promise.get(this);
+ return promise.then(onFulfilled);
+ }
+
+ finally(onFinally) {
+ const promise = privateProps.promise.get(this);
+ return promise.finally(onFinally);
+ }
+
+ } // Assign instance methods from src/instanceMethods/*.js to prototype
+
+
+ Object.assign(SweetAlert.prototype, instanceMethods); // Assign static methods from src/staticMethods/*.js to constructor
+
+ Object.assign(SweetAlert, staticMethods); // Proxy to instance methods to constructor, for now, for backwards compatibility
+
+ Object.keys(instanceMethods).forEach(key => {
+ SweetAlert[key] = function (...args) {
+ if (currentInstance) {
+ return currentInstance[key](...args);
+ }
+ };
+ });
+ SweetAlert.DismissReason = DismissReason;
+ SweetAlert.version = '11.1.7';
+
+ const Swal = SweetAlert;
+ Swal.default = Swal;
+
+ return Swal;
+
+}));
+if (typeof this !== 'undefined' && this.Sweetalert2){ this.swal = this.sweetAlert = this.Swal = this.SweetAlert = this.Sweetalert2}
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/sweetalert2/sweetalert2.min.css b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/sweetalert2/sweetalert2.min.css
new file mode 100644
index 0000000000..342b3beddd
--- /dev/null
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/sweetalert2/sweetalert2.min.css
@@ -0,0 +1 @@
+.swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4!important;grid-row:1/4!important;grid-template-columns:1fr 99fr 1fr;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:grid;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;box-sizing:border-box;grid-template-areas:"top-start top top-end" "center-start center center-end" "bottom-start bottom-center bottom-end";grid-template-rows:minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto);grid-template-rows:minmax(min-content,auto) minmax(min-content,auto) minmax(min-content,auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-bottom-start,.swal2-container.swal2-center-start,.swal2-container.swal2-top-start{grid-template-columns:minmax(0,1fr) auto auto}.swal2-container.swal2-bottom,.swal2-container.swal2-center,.swal2-container.swal2-top{grid-template-columns:auto minmax(0,1fr) auto}.swal2-container.swal2-bottom-end,.swal2-container.swal2-center-end,.swal2-container.swal2-top-end{grid-template-columns:auto auto minmax(0,1fr)}.swal2-container.swal2-top-start>.swal2-popup{align-self:start}.swal2-container.swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}.swal2-container.swal2-top-end>.swal2-popup,.swal2-container.swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}.swal2-container.swal2-center-left>.swal2-popup,.swal2-container.swal2-center-start>.swal2-popup{grid-row:2;align-self:center}.swal2-container.swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}.swal2-container.swal2-center-end>.swal2-popup,.swal2-container.swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}.swal2-container.swal2-bottom-left>.swal2-popup,.swal2-container.swal2-bottom-start>.swal2-popup{grid-column:1;grid-row:3;align-self:end}.swal2-container.swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}.swal2-container.swal2-bottom-end>.swal2-popup,.swal2-container.swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}.swal2-container.swal2-grow-fullscreen>.swal2-popup,.swal2-container.swal2-grow-row>.swal2-popup{grid-column:1/4;width:100%}.swal2-container.swal2-grow-column>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}.swal2-container.swal2-no-transition{transition:none!important}.swal2-popup{display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0,100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-title{position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px transparent;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7367f0;color:#fff;font-size:1em}.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px rgba(115,103,240,.5)}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#ea5455;color:#fff;font-size:1em}.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px rgba(234,84,85,.5)}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7d88;color:#fff;font-size:1em}.swal2-styled.swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,125,136,.5)}.swal2-styled.swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled:focus{outline:0}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto!important;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:2em auto 1em}.swal2-close{z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em 2em 0}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px transparent;color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em 2em 0;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-file{width:75%;margin-right:auto;margin-left:auto;background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto 0}.swal2-validation-message{align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:"!";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:.25em solid transparent;border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{background-color:transparent!important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:transparent;pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}
\ No newline at end of file
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/sweetalert2/sweetalert2.min.js b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/sweetalert2/sweetalert2.min.js
new file mode 100644
index 0000000000..fe84b2427f
--- /dev/null
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/sweetalert2/sweetalert2.min.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Sweetalert2=t()}(this,function(){"use strict";const l=Object.freeze({cancel:"cancel",backdrop:"backdrop",close:"close",esc:"esc",timer:"timer"}),t="SweetAlert2:",o=e=>e.charAt(0).toUpperCase()+e.slice(1),a=e=>Array.prototype.slice.call(e),s=e=>{console.warn("".concat(t," ").concat("object"==typeof e?e.join(" "):e))},r=e=>{console.error("".concat(t," ").concat(e))},n=[],i=(e,t)=>{t='"'.concat(e,'" is deprecated and will be removed in the next major release. Please use "').concat(t,'" instead.'),n.includes(t)||(n.push(t),s(t))},c=e=>"function"==typeof e?e():e,u=e=>e&&"function"==typeof e.toPromise,d=e=>u(e)?e.toPromise():Promise.resolve(e),p=e=>e&&Promise.resolve(e)===e,m=e=>e instanceof Element||(e=>"object"==typeof e&&e.jquery)(e);var e=e=>{const t={};for(const n in e)t[e[n]]="swal2-"+e[n];return t};const h=e(["container","shown","height-auto","iosfix","popup","modal","no-backdrop","no-transition","toast","toast-shown","show","hide","close","title","html-container","actions","confirm","deny","cancel","default-outline","footer","icon","icon-content","image","input","file","range","select","radio","checkbox","label","textarea","inputerror","input-label","validation-message","progress-steps","active-progress-step","progress-step","progress-step-line","loader","loading","styled","top","top-start","top-end","top-left","top-right","center","center-start","center-end","center-left","center-right","bottom","bottom-start","bottom-end","bottom-left","bottom-right","grow-row","grow-column","grow-fullscreen","rtl","timer-progress-bar","timer-progress-bar-container","scrollbar-measure","icon-success","icon-warning","icon-info","icon-question","icon-error"]),g=e(["success","warning","info","question","error"]),b=()=>document.body.querySelector(".".concat(h.container)),f=e=>{const t=b();return t?t.querySelector(e):null},y=e=>f(".".concat(e)),v=()=>y(h.popup),w=()=>y(h.icon),C=()=>y(h.title),k=()=>y(h["html-container"]),A=()=>y(h.image),B=()=>y(h["progress-steps"]),x=()=>y(h["validation-message"]),P=()=>f(".".concat(h.actions," .").concat(h.confirm)),E=()=>f(".".concat(h.actions," .").concat(h.deny));const S=()=>f(".".concat(h.loader)),T=()=>f(".".concat(h.actions," .").concat(h.cancel)),L=()=>y(h.actions),O=()=>y(h.footer),j=()=>y(h["timer-progress-bar"]),D=()=>y(h.close),I=()=>{const e=a(v().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')).sort((e,t)=>(e=parseInt(e.getAttribute("tabindex")),(t=parseInt(t.getAttribute("tabindex")))"-1"!==e.getAttribute("tabindex"));return(t=>{const n=[];for(let e=0;eG(e))},M=()=>!H()&&!document.body.classList.contains(h["no-backdrop"]),H=()=>document.body.classList.contains(h["toast-shown"]);const q={previousBodyPadding:null},V=(t,e)=>{if(t.textContent="",e){const n=new DOMParser,o=n.parseFromString(e,"text/html");a(o.querySelector("head").childNodes).forEach(e=>{t.appendChild(e)}),a(o.querySelector("body").childNodes).forEach(e=>{t.appendChild(e)})}},N=(t,e)=>{if(!e)return!1;var n=e.split(/\s+/);for(let e=0;e{var o,i;if(o=e,i=t,a(o.classList).forEach(e=>{Object.values(h).includes(e)||Object.values(g).includes(e)||Object.values(i.showClass).includes(e)||o.classList.remove(e)}),t.customClass&&t.customClass[n]){if("string"!=typeof t.customClass[n]&&!t.customClass[n].forEach)return s("Invalid type of customClass.".concat(n,'! Expected string or iterable object, got "').concat(typeof t.customClass[n],'"'));W(e,t.customClass[n])}},F=(e,t)=>{if(!t)return null;switch(t){case"select":case"textarea":case"file":return K(e,h[t]);case"checkbox":return e.querySelector(".".concat(h.checkbox," input"));case"radio":return e.querySelector(".".concat(h.radio," input:checked"))||e.querySelector(".".concat(h.radio," input:first-child"));case"range":return e.querySelector(".".concat(h.range," input"));default:return K(e,h.input)}},R=e=>{var t;e.focus(),"file"!==e.type&&(t=e.value,e.value="",e.value=t)},z=(e,t,n)=>{e&&t&&(t="string"==typeof t?t.split(/\s+/).filter(Boolean):t).forEach(t=>{e.forEach?e.forEach(e=>{n?e.classList.add(t):e.classList.remove(t)}):n?e.classList.add(t):e.classList.remove(t)})},W=(e,t)=>{z(e,t,!0)},_=(e,t)=>{z(e,t,!1)},K=(t,n)=>{for(let e=0;e{(n=n==="".concat(parseInt(n))?parseInt(n):n)||0===parseInt(n)?e.style[t]="number"==typeof n?"".concat(n,"px"):n:e.style.removeProperty(t)},Z=(e,t="flex")=>{e.style.display=t},J=e=>{e.style.display="none"},X=(e,t,n,o)=>{const i=e.querySelector(t);i&&(i.style[n]=o)},$=(e,t,n)=>{t?Z(e,n):J(e)},G=e=>!(!e||!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)),Q=()=>!G(P())&&!G(E())&&!G(T()),ee=e=>!!(e.scrollHeight>e.clientHeight),te=e=>{const t=window.getComputedStyle(e);var n=parseFloat(t.getPropertyValue("animation-duration")||"0"),e=parseFloat(t.getPropertyValue("transition-duration")||"0");return 0{const n=j();G(n)&&(t&&(n.style.transition="none",n.style.width="100%"),setTimeout(()=>{n.style.transition="width ".concat(e/1e3,"s linear"),n.style.width="0%"},10))},oe=()=>"undefined"==typeof window||"undefined"==typeof document,ie='\n \n').replace(/(^|\n)\s*/g,""),ae=()=>{ln.isVisible()&&ln.resetValidationMessage()},se=e=>{var t=(()=>{const e=b();return!!e&&(e.remove(),_([document.documentElement,document.body],[h["no-backdrop"],h["toast-shown"],h["has-column"]]),!0)})();if(oe())r("SweetAlert2 requires document to initialize");else{const n=document.createElement("div");n.className=h.container,t&&W(n,h["no-transition"]),V(n,ie);const o="string"==typeof(t=e.target)?document.querySelector(t):t;o.appendChild(n),(e=>{const t=v();t.setAttribute("role",e.toast?"alert":"dialog"),t.setAttribute("aria-live",e.toast?"polite":"assertive"),e.toast||t.setAttribute("aria-modal","true")})(e),e=o,"rtl"===window.getComputedStyle(e).direction&&W(b(),h.rtl),(()=>{const e=v(),t=K(e,h.input),n=K(e,h.file),o=e.querySelector(".".concat(h.range," input")),i=e.querySelector(".".concat(h.range," output")),a=K(e,h.select),s=e.querySelector(".".concat(h.checkbox," input")),r=K(e,h.textarea);t.oninput=ae,n.onchange=ae,a.onchange=ae,s.onchange=ae,r.oninput=ae,o.oninput=()=>{ae(),i.value=o.value},o.onchange=()=>{ae(),o.nextSibling.value=o.value}})()}},re=(e,t)=>{e instanceof HTMLElement?t.appendChild(e):"object"==typeof e?ce(e,t):e&&V(t,e)},ce=(e,t)=>{e.jquery?le(t,e):V(t,e.toString())},le=(t,n)=>{if(t.textContent="",0 in n)for(let e=0;e in n;e++)t.appendChild(n[e].cloneNode(!0));else t.appendChild(n.cloneNode(!0))},ue=(()=>{if(oe())return!1;var e=document.createElement("div"),t={WebkitAnimation:"webkitAnimationEnd",OAnimation:"oAnimationEnd oanimationend",animation:"animationend"};for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&void 0!==e.style[n])return t[n];return!1})(),de=(e,t)=>{const n=L();var o=S(),i=P(),a=E(),s=T();(t.showConfirmButton||t.showDenyButton||t.showCancelButton?Z:J)(n),U(n,t,"actions"),pe(i,"confirm",t),pe(a,"deny",t),pe(s,"cancel",t),function(e,t,n,o){if(!o.buttonsStyling)return _([e,t,n],h.styled);W([e,t,n],h.styled),o.confirmButtonColor&&(e.style.backgroundColor=o.confirmButtonColor,W(e,h["default-outline"]));o.denyButtonColor&&(t.style.backgroundColor=o.denyButtonColor,W(t,h["default-outline"]));o.cancelButtonColor&&(n.style.backgroundColor=o.cancelButtonColor,W(n,h["default-outline"]))}(i,a,s,t),t.reverseButtons&&(n.insertBefore(s,o),n.insertBefore(a,o),n.insertBefore(i,o)),V(o,t.loaderHtml),U(o,t,"loader")};function pe(e,t,n){$(e,n["show".concat(o(t),"Button")],"inline-block"),V(e,n["".concat(t,"ButtonText")]),e.setAttribute("aria-label",n["".concat(t,"ButtonAriaLabel")]),e.className=h[t],U(e,n,"".concat(t,"Button")),W(e,n["".concat(t,"ButtonClass")])}const me=(e,t)=>{var n,o,i=b();i&&(o=i,"string"==typeof(n=t.backdrop)?o.style.background=n:n||W([document.documentElement,document.body],h["no-backdrop"]),o=i,(n=t.position)in h?W(o,h[n]):(s('The "position" parameter is not valid, defaulting to "center"'),W(o,h.center)),n=i,!(o=t.grow)||"string"!=typeof o||(o="grow-".concat(o))in h&&W(n,h[o]),U(i,t,"container"))};var he={promise:new WeakMap,innerParams:new WeakMap,domCache:new WeakMap};const ge=["input","file","range","select","radio","checkbox","textarea"],be=e=>{if(!ke[e.input])return r('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'.concat(e.input,'"'));var t=Ce(e.input);const n=ke[e.input](t,e);Z(n),setTimeout(()=>{R(n)})},fe=(e,t)=>{const n=F(v(),e);if(n){(t=>{for(let e=0;e{var t=Ce(e.input);e.customClass&&W(t,e.customClass.input)},ve=(e,t)=>{e.placeholder&&!t.inputPlaceholder||(e.placeholder=t.inputPlaceholder)},we=(e,t,n)=>{if(n.inputLabel){e.id=h.input;const i=document.createElement("label");var o=h["input-label"];i.setAttribute("for",e.id),i.className=o,W(i,n.customClass.inputLabel),i.innerText=n.inputLabel,t.insertAdjacentElement("beforebegin",i)}},Ce=e=>{e=h[e]||h.input;return K(v(),e)},ke={};ke.text=ke.email=ke.password=ke.number=ke.tel=ke.url=(e,t)=>("string"==typeof t.inputValue||"number"==typeof t.inputValue?e.value=t.inputValue:p(t.inputValue)||s('Unexpected type of inputValue! Expected "string", "number" or "Promise", got "'.concat(typeof t.inputValue,'"')),we(e,e,t),ve(e,t),e.type=t.input,e),ke.file=(e,t)=>(we(e,e,t),ve(e,t),e),ke.range=(e,t)=>{const n=e.querySelector("input"),o=e.querySelector("output");return n.value=t.inputValue,n.type=t.input,o.value=t.inputValue,we(n,e,t),e},ke.select=(e,t)=>{if(e.textContent="",t.inputPlaceholder){const n=document.createElement("option");V(n,t.inputPlaceholder),n.value="",n.disabled=!0,n.selected=!0,e.appendChild(n)}return we(e,e,t),e},ke.radio=e=>(e.textContent="",e),ke.checkbox=(e,t)=>{const n=F(v(),"checkbox");n.value=1,n.id=h.checkbox,n.checked=Boolean(t.inputValue);var o=e.querySelector("span");return V(o,t.inputPlaceholder),e},ke.textarea=(n,e)=>{n.value=e.inputValue,ve(n,e),we(n,n,e);return setTimeout(()=>{if("MutationObserver"in window){const t=parseInt(window.getComputedStyle(v()).width);new MutationObserver(()=>{var e,e=n.offsetWidth+(e=n,parseInt(window.getComputedStyle(e).marginLeft)+parseInt(window.getComputedStyle(e).marginRight));e>t?v().style.width="".concat(e,"px"):v().style.width=null}).observe(n,{attributes:!0,attributeFilter:["style"]})}}),n};const Ae=(e,t)=>{const n=k();U(n,t,"htmlContainer"),t.html?(re(t.html,n),Z(n,"block")):t.text?(n.textContent=t.text,Z(n,"block")):J(n),((e,o)=>{const i=v();e=he.innerParams.get(e);const a=!e||o.input!==e.input;ge.forEach(e=>{var t=h[e];const n=K(i,t);fe(e,o.inputAttributes),n.className=t,a&&J(n)}),o.input&&(a&&be(o),ye(o))})(e,t)},Be=(e,t)=>{for(const n in g)t.icon!==n&&_(e,g[n]);W(e,g[t.icon]),Ee(e,t),xe(),U(e,t,"icon")},xe=()=>{const e=v();var t=window.getComputedStyle(e).getPropertyValue("background-color");const n=e.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix");for(let e=0;e{var n;e.textContent="",t.iconHtml?V(e,Se(t.iconHtml)):"success"===t.icon?V(e,'\n
\n \n
\n
\n '):"error"===t.icon?V(e,'\n \n \n \n \n '):(n={question:"?",warning:"!",info:"i"},V(e,Se(n[t.icon])))},Ee=(e,t)=>{if(t.iconColor){e.style.color=t.iconColor,e.style.borderColor=t.iconColor;for(const n of[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"])X(e,n,"backgroundColor",t.iconColor);X(e,".swal2-success-ring","borderColor",t.iconColor)}},Se=e=>'').concat(e,"
"),Te=(e,o)=>{const i=B();if(!o.progressSteps||0===o.progressSteps.length)return J(i);Z(i),i.textContent="",o.currentProgressStep>=o.progressSteps.length&&s("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),o.progressSteps.forEach((e,t)=>{var n,e=(n=e,e=document.createElement("li"),W(e,h["progress-step"]),V(e,n),e);i.appendChild(e),t===o.currentProgressStep&&W(e,h["active-progress-step"]),t!==o.progressSteps.length-1&&(t=(e=>{const t=document.createElement("li");return W(t,h["progress-step-line"]),e.progressStepsDistance&&(t.style.width=e.progressStepsDistance),t})(o),i.appendChild(t))})},Le=(e,t)=>{e.className="".concat(h.popup," ").concat(G(e)?t.showClass.popup:""),t.toast?(W([document.documentElement,document.body],h["toast-shown"]),W(e,h.toast)):W(e,h.modal),U(e,t,"popup"),"string"==typeof t.customClass&&W(e,t.customClass),t.icon&&W(e,h["icon-".concat(t.icon)])},Oe=(e,t)=>{var n,o,i;(e=>{var t=b();const n=v();e.toast?(Y(t,"width",e.width),n.style.width="100%",n.insertBefore(S(),w())):Y(n,"width",e.width),Y(n,"padding",e.padding),e.background&&(n.style.background=e.background),J(x()),Le(n,e)})(t),me(0,t),Te(0,t),i=e,n=t,o=he.innerParams.get(i),i=w(),o&&n.icon===o.icon?(Pe(i,n),Be(i,n)):n.icon||n.iconHtml?n.icon&&-1===Object.keys(g).indexOf(n.icon)?(r('Unknown icon! Expected "success", "error", "warning", "info" or "question", got "'.concat(n.icon,'"')),J(i)):(Z(i),Pe(i,n),Be(i,n),W(i,n.showClass.icon)):J(i),(e=>{const t=A();if(!e.imageUrl)return J(t);Z(t,""),t.setAttribute("src",e.imageUrl),t.setAttribute("alt",e.imageAlt),Y(t,"width",e.imageWidth),Y(t,"height",e.imageHeight),t.className=h.image,U(t,e,"image")})(t),(e=>{const t=C();$(t,e.title||e.titleText,"block"),e.title&&re(e.title,t),e.titleText&&(t.innerText=e.titleText),U(t,e,"title")})(t),(e=>{const t=D();V(t,e.closeButtonHtml),U(t,e,"closeButton"),$(t,e.showCloseButton),t.setAttribute("aria-label",e.closeButtonAriaLabel)})(t),Ae(e,t),de(0,t),i=t,e=O(),$(e,i.footer),i.footer&&re(i.footer,e),U(e,i,"footer"),"function"==typeof t.didRender&&t.didRender(v())};const je=()=>P()&&P().click();const De=e=>{let t=v();t||ln.fire(),t=v();var n=S();H()?J(w()):Ie(t,e),Z(n),t.setAttribute("data-loading",!0),t.setAttribute("aria-busy",!0),t.focus()},Ie=(e,t)=>{var n=L();const o=S();!t&&G(P())&&(t=P()),Z(n),t&&(J(t),o.setAttribute("data-button-to-replace",t.className)),o.parentNode.insertBefore(o,t),W([e,n],h.loading)},Me={},He=o=>new Promise(e=>{if(!o)return e();var t=window.scrollX,n=window.scrollY;Me.restoreFocusTimeout=setTimeout(()=>{Me.previousActiveElement&&Me.previousActiveElement.focus?(Me.previousActiveElement.focus(),Me.previousActiveElement=null):document.body&&document.body.focus(),e()},100),window.scrollTo(t,n)});const qe=()=>{if(Me.timeout)return(()=>{const e=j();var t=parseInt(window.getComputedStyle(e).width);e.style.removeProperty("transition"),e.style.width="100%";var n=parseInt(window.getComputedStyle(e).width),n=parseInt(t/n*100);e.style.removeProperty("transition"),e.style.width="".concat(n,"%")})(),Me.timeout.stop()},Ve=()=>{if(Me.timeout){var e=Me.timeout.start();return ne(e),e}};let Ne=!1;const Ue={};const Fe=t=>{for(let e=t.target;e&&e!==document;e=e.parentNode)for(const o in Ue){var n=e.getAttribute(o);if(n)return void Ue[o].fire({template:n})}},Re={title:"",titleText:"",text:"",html:"",footer:"",icon:void 0,iconColor:void 0,iconHtml:void 0,template:void 0,toast:!1,showClass:{popup:"swal2-show",backdrop:"swal2-backdrop-show",icon:"swal2-icon-show"},hideClass:{popup:"swal2-hide",backdrop:"swal2-backdrop-hide",icon:"swal2-icon-hide"},customClass:{},target:"body",backdrop:!0,heightAuto:!0,allowOutsideClick:!0,allowEscapeKey:!0,allowEnterKey:!0,stopKeydownPropagation:!0,keydownListenerCapture:!1,showConfirmButton:!0,showDenyButton:!1,showCancelButton:!1,preConfirm:void 0,preDeny:void 0,confirmButtonText:"OK",confirmButtonAriaLabel:"",confirmButtonColor:void 0,denyButtonText:"No",denyButtonAriaLabel:"",denyButtonColor:void 0,cancelButtonText:"Cancel",cancelButtonAriaLabel:"",cancelButtonColor:void 0,buttonsStyling:!0,reverseButtons:!1,focusConfirm:!0,focusDeny:!1,focusCancel:!1,returnFocus:!0,showCloseButton:!1,closeButtonHtml:"×",closeButtonAriaLabel:"Close this dialog",loaderHtml:"",showLoaderOnConfirm:!1,showLoaderOnDeny:!1,imageUrl:void 0,imageWidth:void 0,imageHeight:void 0,imageAlt:"",timer:void 0,timerProgressBar:!1,width:void 0,padding:void 0,background:void 0,input:void 0,inputPlaceholder:"",inputLabel:"",inputValue:"",inputOptions:{},inputAutoTrim:!0,inputAttributes:{},inputValidator:void 0,returnInputValueOnDeny:!1,validationMessage:void 0,grow:!1,position:"center",progressSteps:[],currentProgressStep:void 0,progressStepsDistance:void 0,willOpen:void 0,didOpen:void 0,didRender:void 0,willClose:void 0,didClose:void 0,didDestroy:void 0,scrollbarPadding:!0},ze=["allowEscapeKey","allowOutsideClick","background","buttonsStyling","cancelButtonAriaLabel","cancelButtonColor","cancelButtonText","closeButtonAriaLabel","closeButtonHtml","confirmButtonAriaLabel","confirmButtonColor","confirmButtonText","currentProgressStep","customClass","denyButtonAriaLabel","denyButtonColor","denyButtonText","didClose","didDestroy","footer","hideClass","html","icon","iconColor","iconHtml","imageAlt","imageHeight","imageUrl","imageWidth","preConfirm","preDeny","progressSteps","returnFocus","reverseButtons","showCancelButton","showCloseButton","showConfirmButton","showDenyButton","text","title","titleText","willClose"],We={},_e=["allowOutsideClick","allowEnterKey","backdrop","focusConfirm","focusDeny","focusCancel","returnFocus","heightAuto","keydownListenerCapture"],Ke=e=>Object.prototype.hasOwnProperty.call(Re,e);const Ye=e=>We[e],Ze=e=>{!e.backdrop&&e.allowOutsideClick&&s('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`');for(const o in e)n=o,Ke(n)||s('Unknown parameter "'.concat(n,'"')),e.toast&&(t=o,_e.includes(t)&&s('The parameter "'.concat(t,'" is incompatible with toasts'))),t=o,Ye(t)&&i(t,Ye(t));var t,n};var Je=Object.freeze({isValidParameter:Ke,isUpdatableParameter:e=>-1!==ze.indexOf(e),isDeprecatedParameter:Ye,argsToParams:n=>{const o={};return"object"!=typeof n[0]||m(n[0])?["title","html","icon"].forEach((e,t)=>{t=n[t];"string"==typeof t||m(t)?o[e]=t:void 0!==t&&r("Unexpected type of ".concat(e,'! Expected "string" or "Element", got ').concat(typeof t))}):Object.assign(o,n[0]),o},isVisible:()=>G(v()),clickConfirm:je,clickDeny:()=>E()&&E().click(),clickCancel:()=>T()&&T().click(),getContainer:b,getPopup:v,getTitle:C,getHtmlContainer:k,getImage:A,getIcon:w,getInputLabel:()=>y(h["input-label"]),getCloseButton:D,getActions:L,getConfirmButton:P,getDenyButton:E,getCancelButton:T,getLoader:S,getFooter:O,getTimerProgressBar:j,getFocusableElements:I,getValidationMessage:x,isLoading:()=>v().hasAttribute("data-loading"),fire:function(...e){return new this(...e)},mixin:function(n){class e extends this{_main(e,t){return super._main(e,Object.assign({},n,t))}}return e},showLoading:De,enableLoading:De,getTimerLeft:()=>Me.timeout&&Me.timeout.getTimerLeft(),stopTimer:qe,resumeTimer:Ve,toggleTimer:()=>{var e=Me.timeout;return e&&(e.running?qe:Ve)()},increaseTimer:e=>{if(Me.timeout){e=Me.timeout.increase(e);return ne(e,!0),e}},isTimerRunning:()=>Me.timeout&&Me.timeout.isRunning(),bindClickHandler:function(e="data-swal-template"){Ue[e]=this,Ne||(document.body.addEventListener("click",Fe),Ne=!0)}});function Xe(){var e=he.innerParams.get(this);if(e){const t=he.domCache.get(this);J(t.loader),H()?e.icon&&Z(w()):(e=>{const t=e.popup.getElementsByClassName(e.loader.getAttribute("data-button-to-replace"));if(t.length)Z(t[0],"inline-block");else if(Q())J(e.actions)})(t),_([t.popup,t.actions],h.loading),t.popup.removeAttribute("aria-busy"),t.popup.removeAttribute("data-loading"),t.confirmButton.disabled=!1,t.denyButton.disabled=!1,t.cancelButton.disabled=!1}}const $e=()=>{null===q.previousBodyPadding&&document.body.scrollHeight>window.innerHeight&&(q.previousBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight="".concat(q.previousBodyPadding+(()=>{const e=document.createElement("div");e.className=h["scrollbar-measure"],document.body.appendChild(e);var t=e.getBoundingClientRect().width-e.clientWidth;return document.body.removeChild(e),t})(),"px"))},Ge=()=>{navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i)||v().scrollHeight>window.innerHeight-44&&(b().style.paddingBottom="".concat(44,"px"))},Qe=()=>{const e=b();let t;e.ontouchstart=e=>{t=et(e)},e.ontouchmove=e=>{t&&(e.preventDefault(),e.stopPropagation())}},et=e=>{var t=e.target,n=b();return!tt(e)&&!nt(e)&&(t===n||!(ee(n)||"INPUT"===t.tagName||"TEXTAREA"===t.tagName||ee(k())&&k().contains(t)))},tt=e=>e.touches&&e.touches.length&&"stylus"===e.touches[0].touchType,nt=e=>e.touches&&1{const e=a(document.body.children);e.forEach(e=>{e.hasAttribute("data-previous-aria-hidden")?(e.setAttribute("aria-hidden",e.getAttribute("data-previous-aria-hidden")),e.removeAttribute("data-previous-aria-hidden")):e.removeAttribute("aria-hidden")})};var it={swalPromiseResolve:new WeakMap};function at(e,t,n,o){H()?ct(e,o):(He(n).then(()=>ct(e,o)),Me.keydownTarget.removeEventListener("keydown",Me.keydownHandler,{capture:Me.keydownListenerCapture}),Me.keydownHandlerAdded=!1),/^((?!chrome|android).)*safari/i.test(navigator.userAgent)?(t.setAttribute("style","display:none !important"),t.removeAttribute("class"),t.innerHTML=""):t.remove(),M()&&(null!==q.previousBodyPadding&&(document.body.style.paddingRight="".concat(q.previousBodyPadding,"px"),q.previousBodyPadding=null),N(document.body,h.iosfix)&&(t=parseInt(document.body.style.top,10),_(document.body,h.iosfix),document.body.style.top="",document.body.scrollTop=-1*t),ot()),_([document.documentElement,document.body],[h.shown,h["height-auto"],h["no-backdrop"],h["toast-shown"]])}function st(e){var t=v();if(t){e=void 0!==(o=e)?Object.assign({isConfirmed:!1,isDenied:!1,isDismissed:!1},o):{isConfirmed:!1,isDenied:!1,isDismissed:!0};var n=he.innerParams.get(this);if(n&&!N(t,n.hideClass.popup)){const i=it.swalPromiseResolve.get(this);_(t,n.showClass.popup),W(t,n.hideClass.popup);var o=b();_(o,n.showClass.backdrop),W(o,n.hideClass.backdrop),((e,t,n)=>{const o=b(),i=ue&&te(t);if(typeof n.willClose==="function")n.willClose(t);if(i)rt(e,t,o,n.returnFocus,n.didClose);else at(e,o,n.returnFocus,n.didClose)})(this,t,n),i(e)}}}const rt=(e,t,n,o,i)=>{Me.swalCloseEventFinishedCallback=at.bind(null,e,n,o,i),t.addEventListener(ue,function(e){e.target===t&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback)})},ct=(e,t)=>{setTimeout(()=>{"function"==typeof t&&t.bind(e.params)(),e._destroy()})};function lt(e,t,n){const o=he.domCache.get(e);t.forEach(e=>{o[e].disabled=n})}function ut(e,t){if(!e)return!1;if("radio"===e.type){const n=e.parentNode.parentNode,o=n.querySelectorAll("input");for(let e=0;e/^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid email address"),url:(e,t)=>/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid URL")};function mt(e){var t,n;(t=e).inputValidator||Object.keys(pt).forEach(e=>{t.input===e&&(t.inputValidator=pt[e])}),e.showLoaderOnConfirm&&!e.preConfirm&&s("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request"),(n=e).target&&("string"!=typeof n.target||document.querySelector(n.target))&&("string"==typeof n.target||n.target.appendChild)||(s('Target parameter is not valid, defaulting to "body"'),n.target="body"),"string"==typeof e.title&&(e.title=e.title.split("\n").join(" ")),se(e)}const ht=["swal-title","swal-html","swal-footer"],gt=e=>{e="string"==typeof e.template?document.querySelector(e.template):e.template;if(!e)return{};e=e.content;return kt(e),Object.assign(bt(e),ft(e),yt(e),vt(e),wt(e),Ct(e,ht))},bt=e=>{const o={};return a(e.querySelectorAll("swal-param")).forEach(e=>{At(e,["name","value"]);var t=e.getAttribute("name");let n=e.getAttribute("value");"boolean"==typeof Re[t]&&"false"===n&&(n=!1),"object"==typeof Re[t]&&(n=JSON.parse(n)),o[t]=n}),o},ft=e=>{const n={};return a(e.querySelectorAll("swal-button")).forEach(e=>{At(e,["type","color","aria-label"]);var t=e.getAttribute("type");n["".concat(t,"ButtonText")]=e.innerHTML,n["show".concat(o(t),"Button")]=!0,e.hasAttribute("color")&&(n["".concat(t,"ButtonColor")]=e.getAttribute("color")),e.hasAttribute("aria-label")&&(n["".concat(t,"ButtonAriaLabel")]=e.getAttribute("aria-label"))}),n},yt=e=>{const t={},n=e.querySelector("swal-image");return n&&(At(n,["src","width","height","alt"]),n.hasAttribute("src")&&(t.imageUrl=n.getAttribute("src")),n.hasAttribute("width")&&(t.imageWidth=n.getAttribute("width")),n.hasAttribute("height")&&(t.imageHeight=n.getAttribute("height")),n.hasAttribute("alt")&&(t.imageAlt=n.getAttribute("alt"))),t},vt=e=>{const t={},n=e.querySelector("swal-icon");return n&&(At(n,["type","color"]),n.hasAttribute("type")&&(t.icon=n.getAttribute("type")),n.hasAttribute("color")&&(t.iconColor=n.getAttribute("color")),t.iconHtml=n.innerHTML),t},wt=e=>{const n={},t=e.querySelector("swal-input");t&&(At(t,["type","label","placeholder","value"]),n.input=t.getAttribute("type")||"text",t.hasAttribute("label")&&(n.inputLabel=t.getAttribute("label")),t.hasAttribute("placeholder")&&(n.inputPlaceholder=t.getAttribute("placeholder")),t.hasAttribute("value")&&(n.inputValue=t.getAttribute("value")));e=e.querySelectorAll("swal-input-option");return e.length&&(n.inputOptions={},a(e).forEach(e=>{At(e,["value"]);var t=e.getAttribute("value"),e=e.innerHTML;n.inputOptions[t]=e})),n},Ct=(e,t)=>{const n={};for(const o in t){const i=t[o],a=e.querySelector(i);a&&(At(a,[]),n[i.replace(/^swal-/,"")]=a.innerHTML.trim())}return n},kt=e=>{const t=ht.concat(["swal-param","swal-button","swal-image","swal-icon","swal-input","swal-input-option"]);a(e.children).forEach(e=>{e=e.tagName.toLowerCase();-1===t.indexOf(e)&&s("Unrecognized element <".concat(e,">"))})},At=(t,n)=>{a(t.attributes).forEach(e=>{-1===n.indexOf(e.name)&&s(['Unrecognized attribute "'.concat(e.name,'" on <').concat(t.tagName.toLowerCase(),">."),"".concat(n.length?"Allowed attributes are: ".concat(n.join(", ")):"To set the value, use HTML within the element.")])})},Bt=e=>{const t=b(),n=v();"function"==typeof e.willOpen&&e.willOpen(n);var o=window.getComputedStyle(document.body).overflowY;St(t,n,e),setTimeout(()=>{Pt(t,n)},10),M()&&(Et(t,e.scrollbarPadding,o),(()=>{const e=a(document.body.children);e.forEach(e=>{e===b()||e.contains(b())||(e.hasAttribute("aria-hidden")&&e.setAttribute("data-previous-aria-hidden",e.getAttribute("aria-hidden")),e.setAttribute("aria-hidden","true"))})})()),H()||Me.previousActiveElement||(Me.previousActiveElement=document.activeElement),"function"==typeof e.didOpen&&setTimeout(()=>e.didOpen(n)),_(t,h["no-transition"])},xt=e=>{const t=v();if(e.target===t){const n=b();t.removeEventListener(ue,xt),n.style.overflowY="auto"}},Pt=(e,t)=>{ue&&te(t)?(e.style.overflowY="hidden",t.addEventListener(ue,xt)):e.style.overflowY="auto"},Et=(e,t,n)=>{var o;(/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream||"MacIntel"===navigator.platform&&1{e.scrollTop=0})},St=(e,t,n)=>{W(e,n.showClass.backdrop),t.style.setProperty("opacity","0","important"),Z(t,"grid"),setTimeout(()=>{W(t,n.showClass.popup),t.style.removeProperty("opacity")},10),W([document.documentElement,document.body],h.shown),n.heightAuto&&n.backdrop&&!n.toast&&W([document.documentElement,document.body],h["height-auto"])},Tt=e=>e.checked?1:0,Lt=e=>e.checked?e.value:null,Ot=e=>e.files.length?null!==e.getAttribute("multiple")?e.files:e.files[0]:null,jt=(t,n)=>{const o=v(),i=e=>It[n.input](o,Mt(e),n);u(n.inputOptions)||p(n.inputOptions)?(De(P()),d(n.inputOptions).then(e=>{t.hideLoading(),i(e)})):"object"==typeof n.inputOptions?i(n.inputOptions):r("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(typeof n.inputOptions))},Dt=(t,n)=>{const o=t.getInput();J(o),d(n.inputValue).then(e=>{o.value="number"===n.input?parseFloat(e)||0:"".concat(e),Z(o),o.focus(),t.hideLoading()}).catch(e=>{r("Error in inputValue promise: ".concat(e)),o.value="",Z(o),o.focus(),t.hideLoading()})},It={select:(e,t,i)=>{const a=K(e,h.select),s=(e,t,n)=>{const o=document.createElement("option");o.value=n,V(o,t),o.selected=Ht(n,i.inputValue),e.appendChild(o)};t.forEach(e=>{var t=e[0];const n=e[1];if(Array.isArray(n)){const o=document.createElement("optgroup");o.label=t,o.disabled=!1,a.appendChild(o),n.forEach(e=>s(o,e[1],e[0]))}else s(a,n,t)}),a.focus()},radio:(e,t,a)=>{const s=K(e,h.radio);t.forEach(e=>{var t=e[0],e=e[1];const n=document.createElement("input"),o=document.createElement("label");n.type="radio",n.name=h.radio,n.value=t,Ht(t,a.inputValue)&&(n.checked=!0);const i=document.createElement("span");V(i,e),i.className=h.label,o.appendChild(n),o.appendChild(i),s.appendChild(o)});const n=s.querySelectorAll("input");n.length&&n[0].focus()}},Mt=n=>{const o=[];return"undefined"!=typeof Map&&n instanceof Map?n.forEach((e,t)=>{let n=e;"object"==typeof n&&(n=Mt(n)),o.push([t,n])}):Object.keys(n).forEach(e=>{let t=n[e];"object"==typeof t&&(t=Mt(t)),o.push([e,t])}),o},Ht=(e,t)=>t&&t.toString()===e.toString(),qt=(e,t)=>{var n=he.innerParams.get(e),o=((e,t)=>{const n=e.getInput();if(!n)return null;switch(t.input){case"checkbox":return Tt(n);case"radio":return Lt(n);case"file":return Ot(n);default:return t.inputAutoTrim?n.value.trim():n.value}})(e,n);n.inputValidator?Vt(e,o,t):e.getInput().checkValidity()?("deny"===t?Nt:Ft)(e,o):(e.enableButtons(),e.showValidationMessage(n.validationMessage))},Vt=(t,n,o)=>{const e=he.innerParams.get(t);t.disableInput();const i=Promise.resolve().then(()=>d(e.inputValidator(n,e.validationMessage)));i.then(e=>{t.enableButtons(),t.enableInput(),e?t.showValidationMessage(e):("deny"===o?Nt:Ft)(t,n)})},Nt=(t,n)=>{const e=he.innerParams.get(t||void 0);if(e.showLoaderOnDeny&&De(E()),e.preDeny){const o=Promise.resolve().then(()=>d(e.preDeny(n,e.validationMessage)));o.then(e=>{!1===e?t.hideLoading():t.closePopup({isDenied:!0,value:void 0===e?n:e})})}else t.closePopup({isDenied:!0,value:n})},Ut=(e,t)=>{e.closePopup({isConfirmed:!0,value:t})},Ft=(t,n)=>{const e=he.innerParams.get(t||void 0);if(e.showLoaderOnConfirm&&De(),e.preConfirm){t.resetValidationMessage();const o=Promise.resolve().then(()=>d(e.preConfirm(n,e.validationMessage)));o.then(e=>{G(x())||!1===e?t.hideLoading():Ut(t,void 0===e?n:e)})}else Ut(t,n)},Rt=(e,t,n)=>{const o=I();if(o.length)return(t+=n)===o.length?t=0:-1===t&&(t=o.length-1),o[t].focus();v().focus()},zt=["ArrowRight","ArrowDown"],Wt=["ArrowLeft","ArrowUp"],_t=(e,t,n)=>{var o=he.innerParams.get(e);o&&(o.stopKeydownPropagation&&t.stopPropagation(),"Enter"===t.key?Kt(e,t,o):"Tab"===t.key?Yt(t,o):[...zt,...Wt].includes(t.key)?Zt(t.key):"Escape"===t.key&&Jt(t,o,n))},Kt=(e,t,n)=>{t.isComposing||t.target&&e.getInput()&&t.target.outerHTML===e.getInput().outerHTML&&(["textarea","file"].includes(n.input)||(je(),t.preventDefault()))},Yt=(e,t)=>{var n=e.target,o=I();let i=-1;for(let e=0;e{const t=P(),n=E(),o=T();if([t,n,o].includes(document.activeElement)){e=zt.includes(e)?"nextElementSibling":"previousElementSibling";const i=document.activeElement[e];i&&i.focus()}},Jt=(e,t,n)=>{c(t.allowEscapeKey)&&(e.preventDefault(),n(l.esc))},Xt=(t,e,n)=>{e.popup.onclick=()=>{var e=he.innerParams.get(t);e.showConfirmButton||e.showDenyButton||e.showCancelButton||e.showCloseButton||e.timer||e.input||n(l.close)}};let $t=!1;const Gt=t=>{t.popup.onmousedown=()=>{t.container.onmouseup=function(e){t.container.onmouseup=void 0,e.target===t.container&&($t=!0)}}},Qt=t=>{t.container.onmousedown=()=>{t.popup.onmouseup=function(e){t.popup.onmouseup=void 0,e.target!==t.popup&&!t.popup.contains(e.target)||($t=!0)}}},en=(n,o,i)=>{o.container.onclick=e=>{var t=he.innerParams.get(n);$t?$t=!1:e.target===o.container&&c(t.allowOutsideClick)&&i(l.backdrop)}};const tn=(e,t,n)=>{var o=j();J(o),t.timer&&(e.timeout=new dt(()=>{n("timer"),delete e.timeout},t.timer),t.timerProgressBar&&(Z(o),setTimeout(()=>{e.timeout&&e.timeout.running&&ne(t.timer)})))},nn=(e,t)=>{if(!t.toast)return c(t.allowEnterKey)?void(on(e,t)||Rt(0,-1,1)):an()},on=(e,t)=>t.focusDeny&&G(e.denyButton)?(e.denyButton.focus(),!0):t.focusCancel&&G(e.cancelButton)?(e.cancelButton.focus(),!0):!(!t.focusConfirm||!G(e.confirmButton))&&(e.confirmButton.focus(),!0),an=()=>{document.activeElement&&"function"==typeof document.activeElement.blur&&document.activeElement.blur()};const sn=e=>{for(const t in e)e[t]=new WeakMap};e=Object.freeze({hideLoading:Xe,disableLoading:Xe,getInput:function(e){var t=he.innerParams.get(e||this);return(e=he.domCache.get(e||this))?F(e.popup,t.input):null},close:st,closePopup:st,closeModal:st,closeToast:st,enableButtons:function(){lt(this,["confirmButton","denyButton","cancelButton"],!1)},disableButtons:function(){lt(this,["confirmButton","denyButton","cancelButton"],!0)},enableInput:function(){return ut(this.getInput(),!1)},disableInput:function(){return ut(this.getInput(),!0)},showValidationMessage:function(e){const t=he.domCache.get(this);var n=he.innerParams.get(this);V(t.validationMessage,e),t.validationMessage.className=h["validation-message"],n.customClass&&n.customClass.validationMessage&&W(t.validationMessage,n.customClass.validationMessage),Z(t.validationMessage);const o=this.getInput();o&&(o.setAttribute("aria-invalid",!0),o.setAttribute("aria-describedby",h["validation-message"]),R(o),W(o,h.inputerror))},resetValidationMessage:function(){var e=he.domCache.get(this);e.validationMessage&&J(e.validationMessage);const t=this.getInput();t&&(t.removeAttribute("aria-invalid"),t.removeAttribute("aria-describedby"),_(t,h.inputerror))},getProgressSteps:function(){return he.domCache.get(this).progressSteps},_main:function(e,t={}){Ze(Object.assign({},t,e)),Me.currentInstance&&(Me.currentInstance._destroy(),M()&&ot()),Me.currentInstance=this,mt(e=((e,t)=>{const n=gt(e),o=Object.assign({},Re,t,n,e);return o.showClass=Object.assign({},Re.showClass,o.showClass),o.hideClass=Object.assign({},Re.hideClass,o.hideClass),o})(e,t)),Object.freeze(e),Me.timeout&&(Me.timeout.stop(),delete Me.timeout),clearTimeout(Me.restoreFocusTimeout);var s,r,c,t=(e=>{const t={popup:v(),container:b(),actions:L(),confirmButton:P(),denyButton:E(),cancelButton:T(),loader:S(),closeButton:D(),validationMessage:x(),progressSteps:B()};return he.domCache.set(e,t),t})(this);return Oe(this,e),he.innerParams.set(this,e),s=this,r=t,c=e,new Promise(e=>{const t=e=>{s.closePopup({isDismissed:!0,dismiss:e})};var n,o,i,a;it.swalPromiseResolve.set(s,e),r.confirmButton.onclick=()=>(e=>{var t=he.innerParams.get(e);e.disableButtons(),t.input?qt(e,"confirm"):Ft(e,!0)})(s),r.denyButton.onclick=()=>(e=>{var t=he.innerParams.get(e);e.disableButtons(),t.returnInputValueOnDeny?qt(e,"deny"):Nt(e,!1)})(s),r.cancelButton.onclick=()=>((e,t)=>{e.disableButtons(),t(l.cancel)})(s,t),r.closeButton.onclick=()=>t(l.close),n=s,a=r,e=t,he.innerParams.get(n).toast?Xt(n,a,e):(Gt(a),Qt(a),en(n,a,e)),o=s,a=Me,e=c,i=t,a.keydownTarget&&a.keydownHandlerAdded&&(a.keydownTarget.removeEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!1),e.toast||(a.keydownHandler=e=>_t(o,e,i),a.keydownTarget=e.keydownListenerCapture?window:v(),a.keydownListenerCapture=e.keydownListenerCapture,a.keydownTarget.addEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!0),e=s,"select"===(a=c).input||"radio"===a.input?jt(e,a):["text","email","number","tel","textarea"].includes(a.input)&&(u(a.inputValue)||p(a.inputValue))&&(De(P()),Dt(e,a)),Bt(c),tn(Me,c,t),nn(r,c),setTimeout(()=>{r.container.scrollTop=0})})},update:function(t){var e=v(),n=he.innerParams.get(this);if(!e||N(e,n.hideClass.popup))return s("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");const o={};Object.keys(t).forEach(e=>{ln.isUpdatableParameter(e)?o[e]=t[e]:s('Invalid parameter to update: "'.concat(e,'". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\n\nIf you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md'))}),n=Object.assign({},n,o),Oe(this,n),he.innerParams.set(this,n),Object.defineProperties(this,{params:{value:Object.assign({},this.params,t),writable:!1,enumerable:!0}})},_destroy:function(){var e=he.domCache.get(this);const t=he.innerParams.get(this);t&&(e.popup&&Me.swalCloseEventFinishedCallback&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback),Me.deferDisposalTimer&&(clearTimeout(Me.deferDisposalTimer),delete Me.deferDisposalTimer),"function"==typeof t.didDestroy&&t.didDestroy(),delete this.params,delete Me.keydownHandler,delete Me.keydownTarget,sn(he),sn(it),delete Me.currentInstance)}});let rn;class cn{constructor(...e){"undefined"!=typeof window&&(rn=this,e=Object.freeze(this.constructor.argsToParams(e)),Object.defineProperties(this,{params:{value:e,writable:!1,enumerable:!0,configurable:!0}}),e=this._main(this.params),he.promise.set(this,e))}then(e){const t=he.promise.get(this);return t.then(e)}finally(e){const t=he.promise.get(this);return t.finally(e)}}Object.assign(cn.prototype,e),Object.assign(cn,Je),Object.keys(e).forEach(t=>{cn[t]=function(...e){if(rn)return rn[t](...e)}}),cn.DismissReason=l,cn.version="11.1.7";const ln=cn;return ln.default=ln,ln}),void 0!==this&&this.Sweetalert2&&(this.swal=this.sweetAlert=this.Swal=this.SweetAlert=this.Sweetalert2);
\ No newline at end of file
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock
index 3d121347a0..09b85c69ce 100644
--- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock
@@ -2,30 +2,30 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.shared@^4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.2.tgz#e4ec56c3a8bc12b46ef329c6ee7617204e4e8b78"
- integrity sha512-mtqaO6OBxZ//+NpwNuS+i381U7VgI5BWjBreeZnPtJdAo9ltG31ignTbBpX1Yo5xZ0zgytgFKZJ0BFzlDXAn0w==
- dependencies:
- "@abp/aspnetcore.mvc.ui" "~4.4.2"
- "@abp/bootstrap" "~4.4.2"
- "@abp/bootstrap-datepicker" "~4.4.2"
- "@abp/datatables.net-bs4" "~4.4.2"
- "@abp/font-awesome" "~4.4.2"
- "@abp/jquery-form" "~4.4.2"
- "@abp/jquery-validation-unobtrusive" "~4.4.2"
- "@abp/lodash" "~4.4.2"
- "@abp/luxon" "~4.4.2"
- "@abp/malihu-custom-scrollbar-plugin" "~4.4.2"
- "@abp/select2" "~4.4.2"
- "@abp/sweetalert" "~4.4.2"
- "@abp/timeago" "~4.4.2"
- "@abp/toastr" "~4.4.2"
-
-"@abp/aspnetcore.mvc.ui@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.2.tgz#ec4cb4b875efc3661d4a889569114b8f0c515296"
- integrity sha512-Ur9eR3tzG+LN1XDujZLHmtW4+Z5NxUbK7L3SRrHJXx4NgxXAklQrQhnUIcXwh347CAiVsTDMTQn/MIjJxUeRMw==
+"@abp/aspnetcore.mvc.ui.theme.shared@^5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.1.tgz#25596652bb3f7b6bac5bbd966a731144cd9646c6"
+ integrity sha512-N4SHu6rn8alK4jdve00IscngrfvqJNEjrwQclXNmP9c4NtPuVM9emZdxBzKF8jFb6Hz8HiwM9H3xV/SjKCS/7A==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui" "~5.0.0-beta.1"
+ "@abp/bootstrap" "~5.0.0-beta.1"
+ "@abp/bootstrap-datepicker" "~5.0.0-beta.1"
+ "@abp/datatables.net-bs4" "~5.0.0-beta.1"
+ "@abp/font-awesome" "~5.0.0-beta.1"
+ "@abp/jquery-form" "~5.0.0-beta.1"
+ "@abp/jquery-validation-unobtrusive" "~5.0.0-beta.1"
+ "@abp/lodash" "~5.0.0-beta.1"
+ "@abp/luxon" "~5.0.0-beta.1"
+ "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.1"
+ "@abp/select2" "~5.0.0-beta.1"
+ "@abp/sweetalert2" "~5.0.0-beta.1"
+ "@abp/timeago" "~5.0.0-beta.1"
+ "@abp/toastr" "~5.0.0-beta.1"
+
+"@abp/aspnetcore.mvc.ui@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.1.tgz#30c14386899596bf91e8871810dbaa1a0e51e996"
+ integrity sha512-pabiGHghC62eg95RfAncEt0+yGdBxdMmyqCXV+Be4JjaMz/hGZIDOPIYnaqCayZtyMmIRqG6IAwi99DqBjkQAQ==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@@ -34,145 +34,145 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
-"@abp/bootstrap-datepicker@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.2.tgz#5189f2794a4bd8e912c6eeeda8cbfe959a125572"
- integrity sha512-XYIk4ArM2qxD4kITg59eDBAohQxVgW2/v3flWtTtm4O2syTER1uUcQNTecGf8lwwW7j6dNR/L7dIa2q73UJKkw==
+"@abp/bootstrap-datepicker@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.1.tgz#727e0f7305a94c95ece152ffff011bcff621f46d"
+ integrity sha512-txhdlJqyO2D9MkGLYgrsiDaC58cb2eCpk2uxoqqQeVWvuRPo/L+9rCBk+bu6J37FGJtU8aabtHJyR5xnYbv0TQ==
dependencies:
bootstrap-datepicker "^1.9.0"
-"@abp/bootstrap@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.2.tgz#2fe2b888a195c2686c609c10a0ca2b355ce76cf8"
- integrity sha512-5HAxaU9FpNk6YLr2Wc5FSq/ggrj7I5sd429tZvepOQux8voKji3vFVTFoEmuWJdQiWjcGmbjTM/HR01vsIf+ag==
+"@abp/bootstrap@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.1.tgz#075a15459ff8e3896b6553786e6c8f091c6ffcad"
+ integrity sha512-W8z6qSAsRoXmG0++xH6Bk1oRc90hFqVcjKI+5XgBQhUUCn2qBruBYOKFxPg2GeT2f1k9K5TrCEnnVrh0sOP9/A==
dependencies:
- "@abp/core" "~4.4.2"
+ "@abp/core" "~5.0.0-beta.1"
bootstrap "^4.6.0"
bootstrap-v4-rtl "4.6.0-1"
-"@abp/core@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.2.tgz#40a933d77373656a9ef0c7d55b00621470294d36"
- integrity sha512-wnEtyrT/nnL7e1eRjyVshjnUI2EIJ2veG4SHTZ/GZxDYfHsP6PxuhzHvu/7WD/TI4QDTWhyWX/bKYY26gqNWLw==
+"@abp/core@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.1.tgz#6cff06b13529ab9d7a6ddc4e89dc40616e6b7739"
+ integrity sha512-TK1CnurJIK/SXfsNTk6HSpxdaJgVxwvqNd4F3fxCC0Uj8s5viD3TAGk39Hkp4909WGfNrRq8BEUNvTYM/rP6gg==
dependencies:
- "@abp/utils" "^4.4.2"
+ "@abp/utils" "^5.0.0-beta.1"
-"@abp/datatables.net-bs4@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.2.tgz#c4468e7e7d796531522b5f0b05854fd7cacf32b8"
- integrity sha512-HLmWq0GJsSHO5dBvKWYxuZrbMpo+f3ln4568zoCyfO/vVrtna2JcDkRmH2JNXPlOBFA06ThPnoeGbsEOrFflVA==
+"@abp/datatables.net-bs4@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.1.tgz#110d7d8cf1c15db7432d8f0649f4317ba8de10dd"
+ integrity sha512-CPodZP9pqLdwnFZ77/mcSfuhyK1WMi/c+9VWpGXFQSGaABNKPP2UIdAChwUcBRdGkZRa/IhXx3CCr1ZMLpJsMQ==
dependencies:
- "@abp/datatables.net" "~4.4.2"
+ "@abp/datatables.net" "~5.0.0-beta.1"
datatables.net-bs4 "^1.10.21"
-"@abp/datatables.net@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.2.tgz#6bee6f6859ddf2d0a82b3c45b73ee8c987b7af43"
- integrity sha512-+s+/RHlBAizHVa4irJhXi8OiklXI000dZXyAvj4Vdm2EBZfmA8K4941pBwHlOTmIHvtkOTFtsdPYr4nquHgFyg==
+"@abp/datatables.net@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.1.tgz#8e784a011d33de154554f3239c448fcfd8adb713"
+ integrity sha512-mRMYqTCoYLmDLvL+CvmwUS4JqCqdkn6mxHd7zgkaR04xlGLEmNae5aGbs1wURJ86MOWrHbfkx66lQjkul3zbQw==
dependencies:
- "@abp/jquery" "~4.4.2"
+ "@abp/jquery" "~5.0.0-beta.1"
datatables.net "^1.10.21"
-"@abp/font-awesome@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.2.tgz#d35574f2bade6483f62c765294af47116221eb32"
- integrity sha512-eMn+CVrazi285Rafutf8RikpUxxRbsf3VIFwUebrAEp1nHq/hOSqmKQSxaGthdugNyt9ib/aCNrU+3wCqOMWqQ==
+"@abp/font-awesome@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.1.tgz#3ae721c447a009601226c381a20dc4adabe154e1"
+ integrity sha512-fsMqwApogZ1rAogStQxBX/Nh8akXPW/Alm8UayfK6TXIkPPjBz5RQSHfdlosG7M/U3mwUNGcLlaDvQXsE/nqow==
dependencies:
- "@abp/core" "~4.4.2"
+ "@abp/core" "~5.0.0-beta.1"
"@fortawesome/fontawesome-free" "^5.13.0"
-"@abp/jquery-form@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.2.tgz#046399485d93813a9465e8d21cb7c1726be6d2fa"
- integrity sha512-5zn0M47MtVwbh/Z4y570XF9eBRDbfRIqF+cyTqcLaomOG6/98Hth8eBZXbCNUAReyvIHW+Zn1TCwYWePnjURhw==
+"@abp/jquery-form@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.1.tgz#d13f4cffce48125547b9da57cfc407f9a35a89e6"
+ integrity sha512-RYE90XIDxWkvxO5ukuZ2PHk6aA/o7NQKLcR9WsN1G2xTU/frrNPgtruGRTIj7Nx3BPUeMp7EAN2rYZwglcnO5g==
dependencies:
- "@abp/jquery" "~4.4.2"
+ "@abp/jquery" "~5.0.0-beta.1"
jquery-form "^4.3.0"
-"@abp/jquery-validation-unobtrusive@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.2.tgz#158d20f1f83af2045ecad96f0ce57f9d08872f89"
- integrity sha512-xCCsl1+1QMCi2yMLmtUR7XDMfQHQ8XkRGKNQy5Ja11rW0G4kqkAdP/lxCjJasjYO+XuxqW/pilpUU9tDGqfhCQ==
+"@abp/jquery-validation-unobtrusive@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.1.tgz#93ff6ee92bccdde77816bfb434e967fd142f6b83"
+ integrity sha512-LZE1KIALGBCINdWrHzoGczekUFtKwbXbLIgb4ZgiipO5Xja7py/iVvts10QWqUzhnBk+kmbHbj+KnjdqP4Z8pQ==
dependencies:
- "@abp/jquery-validation" "~4.4.2"
+ "@abp/jquery-validation" "~5.0.0-beta.1"
jquery-validation-unobtrusive "^3.2.11"
-"@abp/jquery-validation@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.2.tgz#c6438d3fab3e0353826cc51e1a93fb3c123e83b2"
- integrity sha512-apRk72FnAm1qRdcYUko3n4MOJEFnfMY8ArjsXIv3dXIJQyOyNWta4cK3LPvsDFCYhbdJuraKEgwTSZyrqZM3Xw==
+"@abp/jquery-validation@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.1.tgz#2964ca1266b087e4c4c0e768bfc4bfe0284e4ff5"
+ integrity sha512-ZDNdkPy2ZNu0EYDNH20Oh9R3bICCYv9CbEj4zZ8Qavixo9VTkybY3BW0nYjcu1yb1P92gZPp80W8vyfxSo//kw==
dependencies:
- "@abp/jquery" "~4.4.2"
+ "@abp/jquery" "~5.0.0-beta.1"
jquery-validation "^1.19.2"
-"@abp/jquery@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.2.tgz#925f228012af3fb443a5fd5a4bba65f232c2070f"
- integrity sha512-gUq1WoFRJytgVFU8fES64iVWz2HUnn2PonvLjTI40571ior+pHHZXvgCfsJ9YywUCc84A0+uhXRUKMc/Hvy+Bg==
+"@abp/jquery@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.1.tgz#360e7a164b6b4ce615a5ad91a1c78ef6893648f3"
+ integrity sha512-v2t+76L45tlbpGeVR39GurZl60Rj1pR/TdUidpP6zwnpx1Y3I+CvlJNDwTESeE/ixTOT3PyFbXoMEi6hI+v39A==
dependencies:
- "@abp/core" "~4.4.2"
+ "@abp/core" "~5.0.0-beta.1"
jquery "~3.6.0"
-"@abp/lodash@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.2.tgz#20e478d62e4a86821db3e8cccf1ca04846a0d0f2"
- integrity sha512-rbq+vRzH0zHaZ6vtkp8toBn6gcTGNwu7q2jLapsGHdIXEbtluP4cvkdLqynUkSrXMAdvbc8IiLKr/AC4aaQa1g==
+"@abp/lodash@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.1.tgz#618797bde42b17f91d7f99fdd5f24cb5e8a361b3"
+ integrity sha512-WsUjzHRZ6RkSMd5PTw0oWijDbbq/Wgonv8++ufUZi1WK5spZi9ohjcYM4io3Ms3fG+g4pWznaicYraMpV5tcsQ==
dependencies:
- "@abp/core" "~4.4.2"
+ "@abp/core" "~5.0.0-beta.1"
lodash "^4.17.15"
-"@abp/luxon@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.2.tgz#f250c0caba7230defd546821e5a59a1b9b87ca73"
- integrity sha512-3Z7AhVKdZDKSAs9Wld5WZoDcdQATxUOQqgm4ESij/hv4KkQltt/yybvjCbW2aEqujCAUPxf10Yd/6NG6dn8vbQ==
+"@abp/luxon@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.1.tgz#fc81fcbfb592d3baf7b9856b3cecf5b86df4bfdf"
+ integrity sha512-t4lhJ/wr1rAVH1/bnzmc8niZYvolTuXUB0h6A6UYaw205QyNtimzusYkTwkc+Z3xHFUrkLCoG7J2SVoCJuioaA==
dependencies:
- "@abp/core" "~4.4.2"
+ "@abp/core" "~5.0.0-beta.1"
luxon "^1.24.1"
-"@abp/malihu-custom-scrollbar-plugin@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.2.tgz#26575cdf4e3c8a126c271ea575d3a37277eb3ecd"
- integrity sha512-ax9gz9HM3ps1yLYrd0tfhfryRPMezu6vD+wO6Qy8nhTVCGagkTH2WsqA+1NsqmntbZvDpri4aBkfpqfJosIlAA==
+"@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.1.tgz#7af43d30af9b1f741fd9d9559d100aa4a5c52ae9"
+ integrity sha512-B195PC4/75W0EXjGEQUd/ZARb/eGWj8DX7hq3K+J+lUWzWu46dZy8s5bBij78HqxS91/q6nbxU35Z+E9xl6ICg==
dependencies:
- "@abp/core" "~4.4.2"
+ "@abp/core" "~5.0.0-beta.1"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/select2@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.2.tgz#7cca21af49ce9663c8509d31420cdf65c528ce23"
- integrity sha512-X4ZStUV8SUrLjyvQ7LHUD2HC7NoUt5RjvPa8Kue0I/fxheC5H4ZIyryZJZNM7XEzyVOpa74sFTa6y/a7yzJpig==
+"@abp/select2@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.1.tgz#15988165fcfed2ebc2b8d097965e2dc1984af35e"
+ integrity sha512-SF+NkWDJNz1EeEimW5luaCMPTNN1oPzEWs47usPJo8m7HfijEvF3rymJ8jL5zWIOo05Tx3HUurLSVz0qu4vZsw==
dependencies:
- "@abp/core" "~4.4.2"
+ "@abp/core" "~5.0.0-beta.1"
select2 "^4.0.13"
-"@abp/sweetalert@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.2.tgz#f21411f4c5620e1e5ec772bf1e33b7f914a20dae"
- integrity sha512-pLMcBy0ZPx1vjnHD0Qmg+pXBDS1QkOhmZPz0lAHYBRGZY8zWxpCV59Cy7l87kif89VowR8NKEYH2ZXQZ+Klz6g==
+"@abp/sweetalert2@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.1.tgz#c6a1185f39d3207f67753e7c486eddcefc7fd0da"
+ integrity sha512-ADotpiMkIzHLy/ufK0q49V9hgF8oKE0rLRzVZV2dHBpmFR7YRcPdbb5AN9CiXDk6ol8nsocEEAwRmgD3eJG63w==
dependencies:
- "@abp/core" "~4.4.2"
- sweetalert "^2.1.2"
+ "@abp/core" "~5.0.0-beta.1"
+ sweetalert2 "^11.0.18"
-"@abp/timeago@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.2.tgz#bd644e27755a0846ced9098d53cd78b4af9c700e"
- integrity sha512-QSZ2Qv5CS4FGyzlk1Tud3amMK2T6QzBB/xdWYFCE2HhONxkbB+sXWaEX3ur+4wLxnYoPm1QU+jBGmnj2kk2kXA==
+"@abp/timeago@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.1.tgz#0f7bb8cd85b7e90d7d5c0a0940b9102e3f4f1e42"
+ integrity sha512-QwYZyeDRW+X8BGecBcK1SgsClVWNYfPgvct+WkQhTIRxzbP/c1c+1irj69sNdN3df2WLnmjfu3sBw2hzz5ykbg==
dependencies:
- "@abp/jquery" "~4.4.2"
+ "@abp/jquery" "~5.0.0-beta.1"
timeago "^1.6.7"
-"@abp/toastr@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.2.tgz#9afa476e5c64cfdd31ed1624be267a8dcbcef228"
- integrity sha512-NJTkWGG53nfLg9j+3YEk3v8i56DhxQZQheGCkEXXtqEByBQVZ+LYpzOSLIgzijOrPplGpJdo8eCt6S4xGTVlxw==
+"@abp/toastr@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.1.tgz#d420fc5db6b15f6d623d3928bb6913996511937f"
+ integrity sha512-82LfDrZQagtv4QLb643VTra4pxleOq5xYwhpOK1Ifop2K5CRgElxKfWvY2EtxdGkpCO2arvkOzjRNbxnecHB2w==
dependencies:
- "@abp/jquery" "~4.4.2"
+ "@abp/jquery" "~5.0.0-beta.1"
toastr "^2.1.4"
-"@abp/utils@^4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.2.tgz#33d1a8c1199241e0c926fb3fd2f439d2925d5db1"
- integrity sha512-o/1XGKSOPB+yQH6c+yyMNSr/r8rzb3PoHkxKqDNEGEf79L6EwJ8Wm+4wKaoHjVrYQtn+d/40PLEdvGEwQxVvCw==
+"@abp/utils@^5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.1.tgz#e1bf9240738276081c89a67073d9d85205fdf14c"
+ integrity sha512-suzKxHUautizxt5XdlJ8ONIaVMcAHrb2dp1kEnXnFRW1ip+7ZQ9/nxJj+GtY1MhHX2yPmlUQP2K8f2upJh9aoA==
dependencies:
just-compare "^1.3.0"
@@ -741,10 +741,6 @@ es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3:
es5-ext "^0.10.35"
es6-symbol "^3.1.1"
-es6-object-assign@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c"
-
es6-symbol@^3.1.1, es6-symbol@~3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77"
@@ -1958,10 +1954,6 @@ process-nextick-args@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
-promise-polyfill@^6.0.2:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-6.1.0.tgz#dfa96943ea9c121fca4de9b5868cb39d3472e057"
-
pump@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
@@ -2365,13 +2357,10 @@ sver-compat@^1.5.0:
es6-iterator "^2.0.1"
es6-symbol "^3.1.1"
-sweetalert@^2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/sweetalert/-/sweetalert-2.1.2.tgz#010baaa80d0dbdc86f96bfcaa96b490728594b79"
- integrity sha512-iWx7X4anRBNDa/a+AdTmvAzQtkN1+s4j/JJRWlHpYE8Qimkohs8/XnFcWeYHH2lMA8LRCa5tj2d244If3S/hzA==
- dependencies:
- es6-object-assign "^1.1.0"
- promise-polyfill "^6.0.2"
+sweetalert2@^11.0.18:
+ version "11.1.7"
+ resolved "https://registry.yarnpkg.com/sweetalert2/-/sweetalert2-11.1.7.tgz#0ff2851eae77a76a3fe0ab289d3c32493e811b6d"
+ integrity sha512-7MHQVtKCTORfA9e58g9ZOfT3X58DkSBtvoCQJnqSHobXXb5C7aB8Yg/tAccTFnefCUBU41PoStjXMkzG3bNeig==
tar@^4:
version "4.4.10"
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json
index ac76ca7c66..f67052ed21 100644
--- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json
@@ -3,8 +3,8 @@
"name": "asp.net",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "^4.4.2",
- "@abp/prismjs": "^4.4.2"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "^5.0.0-beta.1",
+ "@abp/prismjs": "^5.0.0-beta.1"
},
"devDependencies": {}
}
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/sweetalert/sweetalert.min.js b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/sweetalert/sweetalert.min.js
deleted file mode 100644
index dc8f5e78ec..0000000000
--- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/sweetalert/sweetalert.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.swal=e():t.swal=e()}(this,function(){return function(t){function e(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var n={};return e.m=t,e.c=n,e.d=function(t,n,o){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:o})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=8)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o="swal-button";e.CLASS_NAMES={MODAL:"swal-modal",OVERLAY:"swal-overlay",SHOW_MODAL:"swal-overlay--show-modal",MODAL_TITLE:"swal-title",MODAL_TEXT:"swal-text",ICON:"swal-icon",ICON_CUSTOM:"swal-icon--custom",CONTENT:"swal-content",FOOTER:"swal-footer",BUTTON_CONTAINER:"swal-button-container",BUTTON:o,CONFIRM_BUTTON:o+"--confirm",CANCEL_BUTTON:o+"--cancel",DANGER_BUTTON:o+"--danger",BUTTON_LOADING:o+"--loading",BUTTON_LOADER:o+"__loader"},e.default=e.CLASS_NAMES},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getNode=function(t){var e="."+t;return document.querySelector(e)},e.stringToNode=function(t){var e=document.createElement("div");return e.innerHTML=t.trim(),e.firstChild},e.insertAfter=function(t,e){var n=e.nextSibling;e.parentNode.insertBefore(t,n)},e.removeNode=function(t){t.parentElement.removeChild(t)},e.throwErr=function(t){throw t=t.replace(/ +(?= )/g,""),"SweetAlert: "+(t=t.trim())},e.isPlainObject=function(t){if("[object Object]"!==Object.prototype.toString.call(t))return!1;var e=Object.getPrototypeOf(t);return null===e||e===Object.prototype},e.ordinalSuffixOf=function(t){var e=t%10,n=t%100;return 1===e&&11!==n?t+"st":2===e&&12!==n?t+"nd":3===e&&13!==n?t+"rd":t+"th"}},function(t,e,n){"use strict";function o(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),o(n(25));var r=n(26);e.overlayMarkup=r.default,o(n(27)),o(n(28)),o(n(29));var i=n(0),a=i.default.MODAL_TITLE,s=i.default.MODAL_TEXT,c=i.default.ICON,l=i.default.FOOTER;e.iconMarkup='\n
',e.titleMarkup='\n
\n',e.textMarkup='\n
',e.footerMarkup='\n
\n'},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1);e.CONFIRM_KEY="confirm",e.CANCEL_KEY="cancel";var r={visible:!0,text:null,value:null,className:"",closeModal:!0},i=Object.assign({},r,{visible:!1,text:"Cancel",value:null}),a=Object.assign({},r,{text:"OK",value:!0});e.defaultButtonList={cancel:i,confirm:a};var s=function(t){switch(t){case e.CONFIRM_KEY:return a;case e.CANCEL_KEY:return i;default:var n=t.charAt(0).toUpperCase()+t.slice(1);return Object.assign({},r,{text:n,value:t})}},c=function(t,e){var n=s(t);return!0===e?Object.assign({},n,{visible:!0}):"string"==typeof e?Object.assign({},n,{visible:!0,text:e}):o.isPlainObject(e)?Object.assign({visible:!0},n,e):Object.assign({},n,{visible:!1})},l=function(t){for(var e={},n=0,o=Object.keys(t);n=0&&w.splice(e,1)}function s(t){var e=document.createElement("style");return t.attrs.type="text/css",l(e,t.attrs),i(t,e),e}function c(t){var e=document.createElement("link");return t.attrs.type="text/css",t.attrs.rel="stylesheet",l(e,t.attrs),i(t,e),e}function l(t,e){Object.keys(e).forEach(function(n){t.setAttribute(n,e[n])})}function u(t,e){var n,o,r,i;if(e.transform&&t.css){if(!(i=e.transform(t.css)))return function(){};t.css=i}if(e.singleton){var l=h++;n=g||(g=s(e)),o=f.bind(null,n,l,!1),r=f.bind(null,n,l,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=c(e),o=p.bind(null,n,e),r=function(){a(n),n.href&&URL.revokeObjectURL(n.href)}):(n=s(e),o=d.bind(null,n),r=function(){a(n)});return o(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;o(t=e)}else r()}}function f(t,e,n,o){var r=n?"":o.css;if(t.styleSheet)t.styleSheet.cssText=x(e,r);else{var i=document.createTextNode(r),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(i,a[e]):t.appendChild(i)}}function d(t,e){var n=e.css,o=e.media;if(o&&t.setAttribute("media",o),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}function p(t,e,n){var o=n.css,r=n.sourceMap,i=void 0===e.convertToAbsoluteUrls&&r;(e.convertToAbsoluteUrls||i)&&(o=y(o)),r&&(o+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */");var a=new Blob([o],{type:"text/css"}),s=t.href;t.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}var m={},b=function(t){var e;return function(){return void 0===e&&(e=t.apply(this,arguments)),e}}(function(){return window&&document&&document.all&&!window.atob}),v=function(t){var e={};return function(n){return void 0===e[n]&&(e[n]=t.call(this,n)),e[n]}}(function(t){return document.querySelector(t)}),g=null,h=0,w=[],y=n(15);t.exports=function(t,e){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");e=e||{},e.attrs="object"==typeof e.attrs?e.attrs:{},e.singleton||(e.singleton=b()),e.insertInto||(e.insertInto="head"),e.insertAt||(e.insertAt="bottom");var n=r(t,e);return o(n,e),function(t){for(var i=[],a=0;athis.length)&&-1!==this.indexOf(t,e)}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(t,e){if(null==this)throw new TypeError('"this" is null or not defined');var n=Object(this),o=n.length>>>0;if(0===o)return!1;for(var r=0|e,i=Math.max(r>=0?r:o-Math.abs(r),0);i=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(19),e.setImmediate=setImmediate,e.clearImmediate=clearImmediate},function(t,e,n){(function(t,e){!function(t,n){"use strict";function o(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n1)for(var n=1;n',e.default=e.modalMarkup},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.OVERLAY,i='\n
';e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.ICON;e.errorIconMarkup=function(){var t=r+"--error",e=t+"__line";return'\n \n \n \n
\n '},e.warningIconMarkup=function(){var t=r+"--warning";return'\n \n \n \n '},e.successIconMarkup=function(){var t=r+"--success";return'\n \n \n\n
\n
\n '}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.CONTENT;e.contentMarkup='\n \n\n
\n'},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.BUTTON_CONTAINER,i=o.default.BUTTON,a=o.default.BUTTON_LOADER;e.buttonMarkup='\n \n'},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(4),r=n(2),i=n(0),a=i.default.ICON,s=i.default.ICON_CUSTOM,c=["error","warning","success","info"],l={error:r.errorIconMarkup(),warning:r.warningIconMarkup(),success:r.successIconMarkup()},u=function(t,e){var n=a+"--"+t;e.classList.add(n);var o=l[t];o&&(e.innerHTML=o)},f=function(t,e){e.classList.add(s);var n=document.createElement("img");n.src=t,e.appendChild(n)},d=function(t){if(t){var e=o.injectElIntoModal(r.iconMarkup);c.includes(t)?u(t,e):f(t,e)}};e.default=d},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(2),r=n(4),i=function(t){navigator.userAgent.includes("AppleWebKit")&&(t.style.display="none",t.offsetHeight,t.style.display="")};e.initTitle=function(t){if(t){var e=r.injectElIntoModal(o.titleMarkup);e.textContent=t,i(e)}},e.initText=function(t){if(t){var e=document.createDocumentFragment();t.split("\n").forEach(function(t,n,o){e.appendChild(document.createTextNode(t)),n0}).forEach(function(t){b.classList.add(t)})}n&&t===c.CONFIRM_KEY&&b.classList.add(s),b.textContent=r;var g={};return g[t]=i,f.setActionValue(g),f.setActionOptionsFor(t,{closeModal:p}),b.addEventListener("click",function(){return u.onAction(t)}),m},p=function(t,e){var n=r.injectElIntoModal(l.footerMarkup);for(var o in t){var i=t[o],a=d(o,i,e);i.visible&&n.appendChild(a)}0===n.children.length&&n.remove()};e.default=p},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(3),r=n(4),i=n(2),a=n(5),s=n(6),c=n(0),l=c.default.CONTENT,u=function(t){t.addEventListener("input",function(t){var e=t.target,n=e.value;a.setActionValue(n)}),t.addEventListener("keyup",function(t){if("Enter"===t.key)return s.onAction(o.CONFIRM_KEY)}),setTimeout(function(){t.focus(),a.setActionValue("")},0)},f=function(t,e,n){var o=document.createElement(e),r=l+"__"+e;o.classList.add(r);for(var i in n){var a=n[i];o[i]=a}"input"===e&&u(o),t.appendChild(o)},d=function(t){if(t){var e=r.injectElIntoModal(i.contentMarkup),n=t.element,o=t.attributes;"string"==typeof n?f(e,n,o):e.appendChild(n)}};e.default=d},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=n(2),i=function(){var t=o.stringToNode(r.overlayMarkup);document.body.appendChild(t)};e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(5),r=n(6),i=n(1),a=n(3),s=n(0),c=s.default.MODAL,l=s.default.BUTTON,u=s.default.OVERLAY,f=function(t){t.preventDefault(),v()},d=function(t){t.preventDefault(),g()},p=function(t){if(o.default.isOpen)switch(t.key){case"Escape":return r.onAction(a.CANCEL_KEY)}},m=function(t){if(o.default.isOpen)switch(t.key){case"Tab":return f(t)}},b=function(t){if(o.default.isOpen)return"Tab"===t.key&&t.shiftKey?d(t):void 0},v=function(){var t=i.getNode(l);t&&(t.tabIndex=0,t.focus())},g=function(){var t=i.getNode(c),e=t.querySelectorAll("."+l),n=e.length-1,o=e[n];o&&o.focus()},h=function(t){t[t.length-1].addEventListener("keydown",m)},w=function(t){t[0].addEventListener("keydown",b)},y=function(){var t=i.getNode(c),e=t.querySelectorAll("."+l);e.length&&(h(e),w(e))},x=function(t){if(i.getNode(u)===t.target)return r.onAction(a.CANCEL_KEY)},_=function(t){var e=i.getNode(u);e.removeEventListener("click",x),t&&e.addEventListener("click",x)},k=function(t){o.default.timer&&clearTimeout(o.default.timer),t&&(o.default.timer=window.setTimeout(function(){return r.onAction(a.CANCEL_KEY)},t))},O=function(t){t.closeOnEsc?document.addEventListener("keyup",p):document.removeEventListener("keyup",p),t.dangerMode?v():g(),y(),_(t.closeOnClickOutside),k(t.timer)};e.default=O},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=n(3),i=n(37),a=n(38),s={title:null,text:null,icon:null,buttons:r.defaultButtonList,content:null,className:null,closeOnClickOutside:!0,closeOnEsc:!0,dangerMode:!1,timer:null},c=Object.assign({},s);e.setDefaults=function(t){c=Object.assign({},s,t)};var l=function(t){var e=t&&t.button,n=t&&t.buttons;return void 0!==e&&void 0!==n&&o.throwErr("Cannot set both 'button' and 'buttons' options!"),void 0!==e?{confirm:e}:n},u=function(t){return o.ordinalSuffixOf(t+1)},f=function(t,e){o.throwErr(u(e)+" argument ('"+t+"') is invalid")},d=function(t,e){var n=t+1,r=e[n];o.isPlainObject(r)||void 0===r||o.throwErr("Expected "+u(n)+" argument ('"+r+"') to be a plain object")},p=function(t,e){var n=t+1,r=e[n];void 0!==r&&o.throwErr("Unexpected "+u(n)+" argument ("+r+")")},m=function(t,e,n,r){var i=typeof e,a="string"===i,s=e instanceof Element;if(a){if(0===n)return{text:e};if(1===n)return{text:e,title:r[0]};if(2===n)return d(n,r),{icon:e};f(e,n)}else{if(s&&0===n)return d(n,r),{content:e};if(o.isPlainObject(e))return p(n,r),e;f(e,n)}};e.getOpts=function(){for(var t=[],e=0;e {
+ const result = [];
+
+ for (let i = 0; i < arr.length; i++) {
+ if (result.indexOf(arr[i]) === -1) {
+ result.push(arr[i]);
+ }
+ }
+
+ return result;
+ };
+ /**
+ * Capitalize the first letter of a string
+ * @param str
+ */
+
+ const capitalizeFirstLetter = str => str.charAt(0).toUpperCase() + str.slice(1);
+ /**
+ * Convert NodeList to Array
+ * @param nodeList
+ */
+
+ const toArray = nodeList => Array.prototype.slice.call(nodeList);
+ /**
+ * Standardise console warnings
+ * @param message
+ */
+
+ const warn = message => {
+ console.warn("".concat(consolePrefix, " ").concat(typeof message === 'object' ? message.join(' ') : message));
+ };
+ /**
+ * Standardise console errors
+ * @param message
+ */
+
+ const error = message => {
+ console.error("".concat(consolePrefix, " ").concat(message));
+ };
+ /**
+ * Private global state for `warnOnce`
+ * @type {Array}
+ * @private
+ */
+
+ const previousWarnOnceMessages = [];
+ /**
+ * Show a console warning, but only if it hasn't already been shown
+ * @param message
+ */
+
+ const warnOnce = message => {
+ if (!previousWarnOnceMessages.includes(message)) {
+ previousWarnOnceMessages.push(message);
+ warn(message);
+ }
+ };
+ /**
+ * Show a one-time console warning about deprecated params/methods
+ */
+
+ const warnAboutDeprecation = (deprecatedParam, useInstead) => {
+ warnOnce("\"".concat(deprecatedParam, "\" is deprecated and will be removed in the next major release. Please use \"").concat(useInstead, "\" instead."));
+ };
+ /**
+ * If `arg` is a function, call it (with no arguments or context) and return the result.
+ * Otherwise, just pass the value through
+ * @param arg
+ */
+
+ const callIfFunction = arg => typeof arg === 'function' ? arg() : arg;
+ const hasToPromiseFn = arg => arg && typeof arg.toPromise === 'function';
+ const asPromise = arg => hasToPromiseFn(arg) ? arg.toPromise() : Promise.resolve(arg);
+ const isPromise = arg => arg && Promise.resolve(arg) === arg;
+
+ const isJqueryElement = elem => typeof elem === 'object' && elem.jquery;
+
+ const isElement = elem => elem instanceof Element || isJqueryElement(elem);
+
+ const argsToParams = args => {
+ const params = {};
+
+ if (typeof args[0] === 'object' && !isElement(args[0])) {
+ Object.assign(params, args[0]);
+ } else {
+ ['title', 'html', 'icon'].forEach((name, index) => {
+ const arg = args[index];
+
+ if (typeof arg === 'string' || isElement(arg)) {
+ params[name] = arg;
+ } else if (arg !== undefined) {
+ error("Unexpected type of ".concat(name, "! Expected \"string\" or \"Element\", got ").concat(typeof arg));
+ }
+ });
+ }
+
+ return params;
+ };
+
+ const swalPrefix = 'swal2-';
+ const prefix = items => {
+ const result = {};
+
+ for (const i in items) {
+ result[items[i]] = swalPrefix + items[i];
+ }
+
+ return result;
+ };
+ const swalClasses = prefix(['container', 'shown', 'height-auto', 'iosfix', 'popup', 'modal', 'no-backdrop', 'no-transition', 'toast', 'toast-shown', 'show', 'hide', 'close', 'title', 'html-container', 'actions', 'confirm', 'deny', 'cancel', 'default-outline', 'footer', 'icon', 'icon-content', 'image', 'input', 'file', 'range', 'select', 'radio', 'checkbox', 'label', 'textarea', 'inputerror', 'input-label', 'validation-message', 'progress-steps', 'active-progress-step', 'progress-step', 'progress-step-line', 'loader', 'loading', 'styled', 'top', 'top-start', 'top-end', 'top-left', 'top-right', 'center', 'center-start', 'center-end', 'center-left', 'center-right', 'bottom', 'bottom-start', 'bottom-end', 'bottom-left', 'bottom-right', 'grow-row', 'grow-column', 'grow-fullscreen', 'rtl', 'timer-progress-bar', 'timer-progress-bar-container', 'scrollbar-measure', 'icon-success', 'icon-warning', 'icon-info', 'icon-question', 'icon-error']);
+ const iconTypes = prefix(['success', 'warning', 'info', 'question', 'error']);
+
+ const getContainer = () => document.body.querySelector(".".concat(swalClasses.container));
+ const elementBySelector = selectorString => {
+ const container = getContainer();
+ return container ? container.querySelector(selectorString) : null;
+ };
+
+ const elementByClass = className => {
+ return elementBySelector(".".concat(className));
+ };
+
+ const getPopup = () => elementByClass(swalClasses.popup);
+ const getIcon = () => elementByClass(swalClasses.icon);
+ const getTitle = () => elementByClass(swalClasses.title);
+ const getHtmlContainer = () => elementByClass(swalClasses['html-container']);
+ const getImage = () => elementByClass(swalClasses.image);
+ const getProgressSteps = () => elementByClass(swalClasses['progress-steps']);
+ const getValidationMessage = () => elementByClass(swalClasses['validation-message']);
+ const getConfirmButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.confirm));
+ const getDenyButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.deny));
+ const getInputLabel = () => elementByClass(swalClasses['input-label']);
+ const getLoader = () => elementBySelector(".".concat(swalClasses.loader));
+ const getCancelButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.cancel));
+ const getActions = () => elementByClass(swalClasses.actions);
+ const getFooter = () => elementByClass(swalClasses.footer);
+ const getTimerProgressBar = () => elementByClass(swalClasses['timer-progress-bar']);
+ const getCloseButton = () => elementByClass(swalClasses.close); // https://github.com/jkup/focusable/blob/master/index.js
+
+ const focusable = "\n a[href],\n area[href],\n input:not([disabled]),\n select:not([disabled]),\n textarea:not([disabled]),\n button:not([disabled]),\n iframe,\n object,\n embed,\n [tabindex=\"0\"],\n [contenteditable],\n audio[controls],\n video[controls],\n summary\n";
+ const getFocusableElements = () => {
+ const focusableElementsWithTabindex = toArray(getPopup().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')) // sort according to tabindex
+ .sort((a, b) => {
+ a = parseInt(a.getAttribute('tabindex'));
+ b = parseInt(b.getAttribute('tabindex'));
+
+ if (a > b) {
+ return 1;
+ } else if (a < b) {
+ return -1;
+ }
+
+ return 0;
+ });
+ const otherFocusableElements = toArray(getPopup().querySelectorAll(focusable)).filter(el => el.getAttribute('tabindex') !== '-1');
+ return uniqueArray(focusableElementsWithTabindex.concat(otherFocusableElements)).filter(el => isVisible(el));
+ };
+ const isModal = () => {
+ return !isToast() && !document.body.classList.contains(swalClasses['no-backdrop']);
+ };
+ const isToast = () => {
+ return document.body.classList.contains(swalClasses['toast-shown']);
+ };
+ const isLoading = () => {
+ return getPopup().hasAttribute('data-loading');
+ };
+
+ const states = {
+ previousBodyPadding: null
+ };
+ const setInnerHtml = (elem, html) => {
+ // #1926
+ elem.textContent = '';
+
+ if (html) {
+ const parser = new DOMParser();
+ const parsed = parser.parseFromString(html, "text/html");
+ toArray(parsed.querySelector('head').childNodes).forEach(child => {
+ elem.appendChild(child);
+ });
+ toArray(parsed.querySelector('body').childNodes).forEach(child => {
+ elem.appendChild(child);
+ });
+ }
+ };
+ const hasClass = (elem, className) => {
+ if (!className) {
+ return false;
+ }
+
+ const classList = className.split(/\s+/);
+
+ for (let i = 0; i < classList.length; i++) {
+ if (!elem.classList.contains(classList[i])) {
+ return false;
+ }
+ }
+
+ return true;
+ };
+
+ const removeCustomClasses = (elem, params) => {
+ toArray(elem.classList).forEach(className => {
+ if (!Object.values(swalClasses).includes(className) && !Object.values(iconTypes).includes(className) && !Object.values(params.showClass).includes(className)) {
+ elem.classList.remove(className);
+ }
+ });
+ };
+
+ const applyCustomClass = (elem, params, className) => {
+ removeCustomClasses(elem, params);
+
+ if (params.customClass && params.customClass[className]) {
+ if (typeof params.customClass[className] !== 'string' && !params.customClass[className].forEach) {
+ return warn("Invalid type of customClass.".concat(className, "! Expected string or iterable object, got \"").concat(typeof params.customClass[className], "\""));
+ }
+
+ addClass(elem, params.customClass[className]);
+ }
+ };
+ const getInput = (popup, inputType) => {
+ if (!inputType) {
+ return null;
+ }
+
+ switch (inputType) {
+ case 'select':
+ case 'textarea':
+ case 'file':
+ return getChildByClass(popup, swalClasses[inputType]);
+
+ case 'checkbox':
+ return popup.querySelector(".".concat(swalClasses.checkbox, " input"));
+
+ case 'radio':
+ return popup.querySelector(".".concat(swalClasses.radio, " input:checked")) || popup.querySelector(".".concat(swalClasses.radio, " input:first-child"));
+
+ case 'range':
+ return popup.querySelector(".".concat(swalClasses.range, " input"));
+
+ default:
+ return getChildByClass(popup, swalClasses.input);
+ }
+ };
+ const focusInput = input => {
+ input.focus(); // place cursor at end of text in text input
+
+ if (input.type !== 'file') {
+ // http://stackoverflow.com/a/2345915
+ const val = input.value;
+ input.value = '';
+ input.value = val;
+ }
+ };
+ const toggleClass = (target, classList, condition) => {
+ if (!target || !classList) {
+ return;
+ }
+
+ if (typeof classList === 'string') {
+ classList = classList.split(/\s+/).filter(Boolean);
+ }
+
+ classList.forEach(className => {
+ if (target.forEach) {
+ target.forEach(elem => {
+ condition ? elem.classList.add(className) : elem.classList.remove(className);
+ });
+ } else {
+ condition ? target.classList.add(className) : target.classList.remove(className);
+ }
+ });
+ };
+ const addClass = (target, classList) => {
+ toggleClass(target, classList, true);
+ };
+ const removeClass = (target, classList) => {
+ toggleClass(target, classList, false);
+ };
+ const getChildByClass = (elem, className) => {
+ for (let i = 0; i < elem.childNodes.length; i++) {
+ if (hasClass(elem.childNodes[i], className)) {
+ return elem.childNodes[i];
+ }
+ }
+ };
+ const applyNumericalStyle = (elem, property, value) => {
+ if (value === "".concat(parseInt(value))) {
+ value = parseInt(value);
+ }
+
+ if (value || parseInt(value) === 0) {
+ elem.style[property] = typeof value === 'number' ? "".concat(value, "px") : value;
+ } else {
+ elem.style.removeProperty(property);
+ }
+ };
+ const show = (elem, display = 'flex') => {
+ elem.style.display = display;
+ };
+ const hide = elem => {
+ elem.style.display = 'none';
+ };
+ const setStyle = (parent, selector, property, value) => {
+ const el = parent.querySelector(selector);
+
+ if (el) {
+ el.style[property] = value;
+ }
+ };
+ const toggle = (elem, condition, display) => {
+ condition ? show(elem, display) : hide(elem);
+ }; // borrowed from jquery $(elem).is(':visible') implementation
+
+ const isVisible = elem => !!(elem && (elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length));
+ const allButtonsAreHidden = () => !isVisible(getConfirmButton()) && !isVisible(getDenyButton()) && !isVisible(getCancelButton());
+ const isScrollable = elem => !!(elem.scrollHeight > elem.clientHeight); // borrowed from https://stackoverflow.com/a/46352119
+
+ const hasCssAnimation = elem => {
+ const style = window.getComputedStyle(elem);
+ const animDuration = parseFloat(style.getPropertyValue('animation-duration') || '0');
+ const transDuration = parseFloat(style.getPropertyValue('transition-duration') || '0');
+ return animDuration > 0 || transDuration > 0;
+ };
+ const animateTimerProgressBar = (timer, reset = false) => {
+ const timerProgressBar = getTimerProgressBar();
+
+ if (isVisible(timerProgressBar)) {
+ if (reset) {
+ timerProgressBar.style.transition = 'none';
+ timerProgressBar.style.width = '100%';
+ }
+
+ setTimeout(() => {
+ timerProgressBar.style.transition = "width ".concat(timer / 1000, "s linear");
+ timerProgressBar.style.width = '0%';
+ }, 10);
+ }
+ };
+ const stopTimerProgressBar = () => {
+ const timerProgressBar = getTimerProgressBar();
+ const timerProgressBarWidth = parseInt(window.getComputedStyle(timerProgressBar).width);
+ timerProgressBar.style.removeProperty('transition');
+ timerProgressBar.style.width = '100%';
+ const timerProgressBarFullWidth = parseInt(window.getComputedStyle(timerProgressBar).width);
+ const timerProgressBarPercent = parseInt(timerProgressBarWidth / timerProgressBarFullWidth * 100);
+ timerProgressBar.style.removeProperty('transition');
+ timerProgressBar.style.width = "".concat(timerProgressBarPercent, "%");
+ };
+
+ // Detect Node env
+ const isNodeEnv = () => typeof window === 'undefined' || typeof document === 'undefined';
+
+ const sweetHTML = "\n \n").replace(/(^|\n)\s*/g, '');
+
+ const resetOldContainer = () => {
+ const oldContainer = getContainer();
+
+ if (!oldContainer) {
+ return false;
+ }
+
+ oldContainer.remove();
+ removeClass([document.documentElement, document.body], [swalClasses['no-backdrop'], swalClasses['toast-shown'], swalClasses['has-column']]);
+ return true;
+ };
+
+ const resetValidationMessage = () => {
+ if (Swal.isVisible()) {
+ Swal.resetValidationMessage();
+ }
+ };
+
+ const addInputChangeListeners = () => {
+ const popup = getPopup();
+ const input = getChildByClass(popup, swalClasses.input);
+ const file = getChildByClass(popup, swalClasses.file);
+ const range = popup.querySelector(".".concat(swalClasses.range, " input"));
+ const rangeOutput = popup.querySelector(".".concat(swalClasses.range, " output"));
+ const select = getChildByClass(popup, swalClasses.select);
+ const checkbox = popup.querySelector(".".concat(swalClasses.checkbox, " input"));
+ const textarea = getChildByClass(popup, swalClasses.textarea);
+ input.oninput = resetValidationMessage;
+ file.onchange = resetValidationMessage;
+ select.onchange = resetValidationMessage;
+ checkbox.onchange = resetValidationMessage;
+ textarea.oninput = resetValidationMessage;
+
+ range.oninput = () => {
+ resetValidationMessage();
+ rangeOutput.value = range.value;
+ };
+
+ range.onchange = () => {
+ resetValidationMessage();
+ range.nextSibling.value = range.value;
+ };
+ };
+
+ const getTarget = target => typeof target === 'string' ? document.querySelector(target) : target;
+
+ const setupAccessibility = params => {
+ const popup = getPopup();
+ popup.setAttribute('role', params.toast ? 'alert' : 'dialog');
+ popup.setAttribute('aria-live', params.toast ? 'polite' : 'assertive');
+
+ if (!params.toast) {
+ popup.setAttribute('aria-modal', 'true');
+ }
+ };
+
+ const setupRTL = targetElement => {
+ if (window.getComputedStyle(targetElement).direction === 'rtl') {
+ addClass(getContainer(), swalClasses.rtl);
+ }
+ };
+ /*
+ * Add modal + backdrop to DOM
+ */
+
+
+ const init = params => {
+ // Clean up the old popup container if it exists
+ const oldContainerExisted = resetOldContainer();
+ /* istanbul ignore if */
+
+ if (isNodeEnv()) {
+ error('SweetAlert2 requires document to initialize');
+ return;
+ }
+
+ const container = document.createElement('div');
+ container.className = swalClasses.container;
+
+ if (oldContainerExisted) {
+ addClass(container, swalClasses['no-transition']);
+ }
+
+ setInnerHtml(container, sweetHTML);
+ const targetElement = getTarget(params.target);
+ targetElement.appendChild(container);
+ setupAccessibility(params);
+ setupRTL(targetElement);
+ addInputChangeListeners();
+ };
+
+ const parseHtmlToContainer = (param, target) => {
+ // DOM element
+ if (param instanceof HTMLElement) {
+ target.appendChild(param); // Object
+ } else if (typeof param === 'object') {
+ handleObject(param, target); // Plain string
+ } else if (param) {
+ setInnerHtml(target, param);
+ }
+ };
+
+ const handleObject = (param, target) => {
+ // JQuery element(s)
+ if (param.jquery) {
+ handleJqueryElem(target, param); // For other objects use their string representation
+ } else {
+ setInnerHtml(target, param.toString());
+ }
+ };
+
+ const handleJqueryElem = (target, elem) => {
+ target.textContent = '';
+
+ if (0 in elem) {
+ for (let i = 0; (i in elem); i++) {
+ target.appendChild(elem[i].cloneNode(true));
+ }
+ } else {
+ target.appendChild(elem.cloneNode(true));
+ }
+ };
+
+ const animationEndEvent = (() => {
+ // Prevent run in Node env
+
+ /* istanbul ignore if */
+ if (isNodeEnv()) {
+ return false;
+ }
+
+ const testEl = document.createElement('div');
+ const transEndEventNames = {
+ WebkitAnimation: 'webkitAnimationEnd',
+ OAnimation: 'oAnimationEnd oanimationend',
+ animation: 'animationend'
+ };
+
+ for (const i in transEndEventNames) {
+ if (Object.prototype.hasOwnProperty.call(transEndEventNames, i) && typeof testEl.style[i] !== 'undefined') {
+ return transEndEventNames[i];
+ }
+ }
+
+ return false;
+ })();
+
+ // https://github.com/twbs/bootstrap/blob/master/js/src/modal.js
+
+ const measureScrollbar = () => {
+ const scrollDiv = document.createElement('div');
+ scrollDiv.className = swalClasses['scrollbar-measure'];
+ document.body.appendChild(scrollDiv);
+ const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
+ document.body.removeChild(scrollDiv);
+ return scrollbarWidth;
+ };
+
+ const renderActions = (instance, params) => {
+ const actions = getActions();
+ const loader = getLoader();
+ const confirmButton = getConfirmButton();
+ const denyButton = getDenyButton();
+ const cancelButton = getCancelButton(); // Actions (buttons) wrapper
+
+ if (!params.showConfirmButton && !params.showDenyButton && !params.showCancelButton) {
+ hide(actions);
+ } else {
+ show(actions);
+ } // Custom class
+
+
+ applyCustomClass(actions, params, 'actions'); // Render buttons
+
+ renderButton(confirmButton, 'confirm', params);
+ renderButton(denyButton, 'deny', params);
+ renderButton(cancelButton, 'cancel', params);
+ handleButtonsStyling(confirmButton, denyButton, cancelButton, params);
+
+ if (params.reverseButtons) {
+ actions.insertBefore(cancelButton, loader);
+ actions.insertBefore(denyButton, loader);
+ actions.insertBefore(confirmButton, loader);
+ } // Loader
+
+
+ setInnerHtml(loader, params.loaderHtml);
+ applyCustomClass(loader, params, 'loader');
+ };
+
+ function handleButtonsStyling(confirmButton, denyButton, cancelButton, params) {
+ if (!params.buttonsStyling) {
+ return removeClass([confirmButton, denyButton, cancelButton], swalClasses.styled);
+ }
+
+ addClass([confirmButton, denyButton, cancelButton], swalClasses.styled); // Buttons background colors
+
+ if (params.confirmButtonColor) {
+ confirmButton.style.backgroundColor = params.confirmButtonColor;
+ addClass(confirmButton, swalClasses['default-outline']);
+ }
+
+ if (params.denyButtonColor) {
+ denyButton.style.backgroundColor = params.denyButtonColor;
+ addClass(denyButton, swalClasses['default-outline']);
+ }
+
+ if (params.cancelButtonColor) {
+ cancelButton.style.backgroundColor = params.cancelButtonColor;
+ addClass(cancelButton, swalClasses['default-outline']);
+ }
+ }
+
+ function renderButton(button, buttonType, params) {
+ toggle(button, params["show".concat(capitalizeFirstLetter(buttonType), "Button")], 'inline-block');
+ setInnerHtml(button, params["".concat(buttonType, "ButtonText")]); // Set caption text
+
+ button.setAttribute('aria-label', params["".concat(buttonType, "ButtonAriaLabel")]); // ARIA label
+ // Add buttons custom classes
+
+ button.className = swalClasses[buttonType];
+ applyCustomClass(button, params, "".concat(buttonType, "Button"));
+ addClass(button, params["".concat(buttonType, "ButtonClass")]);
+ }
+
+ function handleBackdropParam(container, backdrop) {
+ if (typeof backdrop === 'string') {
+ container.style.background = backdrop;
+ } else if (!backdrop) {
+ addClass([document.documentElement, document.body], swalClasses['no-backdrop']);
+ }
+ }
+
+ function handlePositionParam(container, position) {
+ if (position in swalClasses) {
+ addClass(container, swalClasses[position]);
+ } else {
+ warn('The "position" parameter is not valid, defaulting to "center"');
+ addClass(container, swalClasses.center);
+ }
+ }
+
+ function handleGrowParam(container, grow) {
+ if (grow && typeof grow === 'string') {
+ const growClass = "grow-".concat(grow);
+
+ if (growClass in swalClasses) {
+ addClass(container, swalClasses[growClass]);
+ }
+ }
+ }
+
+ const renderContainer = (instance, params) => {
+ const container = getContainer();
+
+ if (!container) {
+ return;
+ }
+
+ handleBackdropParam(container, params.backdrop);
+ handlePositionParam(container, params.position);
+ handleGrowParam(container, params.grow); // Custom class
+
+ applyCustomClass(container, params, 'container');
+ };
+
+ /**
+ * This module containts `WeakMap`s for each effectively-"private property" that a `Swal` has.
+ * For example, to set the private property "foo" of `this` to "bar", you can `privateProps.foo.set(this, 'bar')`
+ * This is the approach that Babel will probably take to implement private methods/fields
+ * https://github.com/tc39/proposal-private-methods
+ * https://github.com/babel/babel/pull/7555
+ * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module*
+ * then we can use that language feature.
+ */
+ var privateProps = {
+ promise: new WeakMap(),
+ innerParams: new WeakMap(),
+ domCache: new WeakMap()
+ };
+
+ const inputTypes = ['input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea'];
+ const renderInput = (instance, params) => {
+ const popup = getPopup();
+ const innerParams = privateProps.innerParams.get(instance);
+ const rerender = !innerParams || params.input !== innerParams.input;
+ inputTypes.forEach(inputType => {
+ const inputClass = swalClasses[inputType];
+ const inputContainer = getChildByClass(popup, inputClass); // set attributes
+
+ setAttributes(inputType, params.inputAttributes); // set class
+
+ inputContainer.className = inputClass;
+
+ if (rerender) {
+ hide(inputContainer);
+ }
+ });
+
+ if (params.input) {
+ if (rerender) {
+ showInput(params);
+ } // set custom class
+
+
+ setCustomClass(params);
+ }
+ };
+
+ const showInput = params => {
+ if (!renderInputType[params.input]) {
+ return error("Unexpected type of input! Expected \"text\", \"email\", \"password\", \"number\", \"tel\", \"select\", \"radio\", \"checkbox\", \"textarea\", \"file\" or \"url\", got \"".concat(params.input, "\""));
+ }
+
+ const inputContainer = getInputContainer(params.input);
+ const input = renderInputType[params.input](inputContainer, params);
+ show(input); // input autofocus
+
+ setTimeout(() => {
+ focusInput(input);
+ });
+ };
+
+ const removeAttributes = input => {
+ for (let i = 0; i < input.attributes.length; i++) {
+ const attrName = input.attributes[i].name;
+
+ if (!['type', 'value', 'style'].includes(attrName)) {
+ input.removeAttribute(attrName);
+ }
+ }
+ };
+
+ const setAttributes = (inputType, inputAttributes) => {
+ const input = getInput(getPopup(), inputType);
+
+ if (!input) {
+ return;
+ }
+
+ removeAttributes(input);
+
+ for (const attr in inputAttributes) {
+ input.setAttribute(attr, inputAttributes[attr]);
+ }
+ };
+
+ const setCustomClass = params => {
+ const inputContainer = getInputContainer(params.input);
+
+ if (params.customClass) {
+ addClass(inputContainer, params.customClass.input);
+ }
+ };
+
+ const setInputPlaceholder = (input, params) => {
+ if (!input.placeholder || params.inputPlaceholder) {
+ input.placeholder = params.inputPlaceholder;
+ }
+ };
+
+ const setInputLabel = (input, prependTo, params) => {
+ if (params.inputLabel) {
+ input.id = swalClasses.input;
+ const label = document.createElement('label');
+ const labelClass = swalClasses['input-label'];
+ label.setAttribute('for', input.id);
+ label.className = labelClass;
+ addClass(label, params.customClass.inputLabel);
+ label.innerText = params.inputLabel;
+ prependTo.insertAdjacentElement('beforebegin', label);
+ }
+ };
+
+ const getInputContainer = inputType => {
+ const inputClass = swalClasses[inputType] ? swalClasses[inputType] : swalClasses.input;
+ return getChildByClass(getPopup(), inputClass);
+ };
+
+ const renderInputType = {};
+
+ renderInputType.text = renderInputType.email = renderInputType.password = renderInputType.number = renderInputType.tel = renderInputType.url = (input, params) => {
+ if (typeof params.inputValue === 'string' || typeof params.inputValue === 'number') {
+ input.value = params.inputValue;
+ } else if (!isPromise(params.inputValue)) {
+ warn("Unexpected type of inputValue! Expected \"string\", \"number\" or \"Promise\", got \"".concat(typeof params.inputValue, "\""));
+ }
+
+ setInputLabel(input, input, params);
+ setInputPlaceholder(input, params);
+ input.type = params.input;
+ return input;
+ };
+
+ renderInputType.file = (input, params) => {
+ setInputLabel(input, input, params);
+ setInputPlaceholder(input, params);
+ return input;
+ };
+
+ renderInputType.range = (range, params) => {
+ const rangeInput = range.querySelector('input');
+ const rangeOutput = range.querySelector('output');
+ rangeInput.value = params.inputValue;
+ rangeInput.type = params.input;
+ rangeOutput.value = params.inputValue;
+ setInputLabel(rangeInput, range, params);
+ return range;
+ };
+
+ renderInputType.select = (select, params) => {
+ select.textContent = '';
+
+ if (params.inputPlaceholder) {
+ const placeholder = document.createElement('option');
+ setInnerHtml(placeholder, params.inputPlaceholder);
+ placeholder.value = '';
+ placeholder.disabled = true;
+ placeholder.selected = true;
+ select.appendChild(placeholder);
+ }
+
+ setInputLabel(select, select, params);
+ return select;
+ };
+
+ renderInputType.radio = radio => {
+ radio.textContent = '';
+ return radio;
+ };
+
+ renderInputType.checkbox = (checkboxContainer, params) => {
+ const checkbox = getInput(getPopup(), 'checkbox');
+ checkbox.value = 1;
+ checkbox.id = swalClasses.checkbox;
+ checkbox.checked = Boolean(params.inputValue);
+ const label = checkboxContainer.querySelector('span');
+ setInnerHtml(label, params.inputPlaceholder);
+ return checkboxContainer;
+ };
+
+ renderInputType.textarea = (textarea, params) => {
+ textarea.value = params.inputValue;
+ setInputPlaceholder(textarea, params);
+ setInputLabel(textarea, textarea, params);
+
+ const getMargin = el => parseInt(window.getComputedStyle(el).marginLeft) + parseInt(window.getComputedStyle(el).marginRight);
+
+ setTimeout(() => {
+ // #2291
+ if ('MutationObserver' in window) {
+ // #1699
+ const initialPopupWidth = parseInt(window.getComputedStyle(getPopup()).width);
+
+ const textareaResizeHandler = () => {
+ const textareaWidth = textarea.offsetWidth + getMargin(textarea);
+
+ if (textareaWidth > initialPopupWidth) {
+ getPopup().style.width = "".concat(textareaWidth, "px");
+ } else {
+ getPopup().style.width = null;
+ }
+ };
+
+ new MutationObserver(textareaResizeHandler).observe(textarea, {
+ attributes: true,
+ attributeFilter: ['style']
+ });
+ }
+ });
+ return textarea;
+ };
+
+ const renderContent = (instance, params) => {
+ const htmlContainer = getHtmlContainer();
+ applyCustomClass(htmlContainer, params, 'htmlContainer'); // Content as HTML
+
+ if (params.html) {
+ parseHtmlToContainer(params.html, htmlContainer);
+ show(htmlContainer, 'block'); // Content as plain text
+ } else if (params.text) {
+ htmlContainer.textContent = params.text;
+ show(htmlContainer, 'block'); // No content
+ } else {
+ hide(htmlContainer);
+ }
+
+ renderInput(instance, params);
+ };
+
+ const renderFooter = (instance, params) => {
+ const footer = getFooter();
+ toggle(footer, params.footer);
+
+ if (params.footer) {
+ parseHtmlToContainer(params.footer, footer);
+ } // Custom class
+
+
+ applyCustomClass(footer, params, 'footer');
+ };
+
+ const renderCloseButton = (instance, params) => {
+ const closeButton = getCloseButton();
+ setInnerHtml(closeButton, params.closeButtonHtml); // Custom class
+
+ applyCustomClass(closeButton, params, 'closeButton');
+ toggle(closeButton, params.showCloseButton);
+ closeButton.setAttribute('aria-label', params.closeButtonAriaLabel);
+ };
+
+ const renderIcon = (instance, params) => {
+ const innerParams = privateProps.innerParams.get(instance);
+ const icon = getIcon(); // if the given icon already rendered, apply the styling without re-rendering the icon
+
+ if (innerParams && params.icon === innerParams.icon) {
+ // Custom or default content
+ setContent(icon, params);
+ applyStyles(icon, params);
+ return;
+ }
+
+ if (!params.icon && !params.iconHtml) {
+ return hide(icon);
+ }
+
+ if (params.icon && Object.keys(iconTypes).indexOf(params.icon) === -1) {
+ error("Unknown icon! Expected \"success\", \"error\", \"warning\", \"info\" or \"question\", got \"".concat(params.icon, "\""));
+ return hide(icon);
+ }
+
+ show(icon); // Custom or default content
+
+ setContent(icon, params);
+ applyStyles(icon, params); // Animate icon
+
+ addClass(icon, params.showClass.icon);
+ };
+
+ const applyStyles = (icon, params) => {
+ for (const iconType in iconTypes) {
+ if (params.icon !== iconType) {
+ removeClass(icon, iconTypes[iconType]);
+ }
+ }
+
+ addClass(icon, iconTypes[params.icon]); // Icon color
+
+ setColor(icon, params); // Success icon background color
+
+ adjustSuccessIconBackgoundColor(); // Custom class
+
+ applyCustomClass(icon, params, 'icon');
+ }; // Adjust success icon background color to match the popup background color
+
+
+ const adjustSuccessIconBackgoundColor = () => {
+ const popup = getPopup();
+ const popupBackgroundColor = window.getComputedStyle(popup).getPropertyValue('background-color');
+ const successIconParts = popup.querySelectorAll('[class^=swal2-success-circular-line], .swal2-success-fix');
+
+ for (let i = 0; i < successIconParts.length; i++) {
+ successIconParts[i].style.backgroundColor = popupBackgroundColor;
+ }
+ };
+
+ const setContent = (icon, params) => {
+ icon.textContent = '';
+
+ if (params.iconHtml) {
+ setInnerHtml(icon, iconContent(params.iconHtml));
+ } else if (params.icon === 'success') {
+ setInnerHtml(icon, "\n
\n \n
\n
\n ");
+ } else if (params.icon === 'error') {
+ setInnerHtml(icon, "\n \n \n \n \n ");
+ } else {
+ const defaultIconHtml = {
+ question: '?',
+ warning: '!',
+ info: 'i'
+ };
+ setInnerHtml(icon, iconContent(defaultIconHtml[params.icon]));
+ }
+ };
+
+ const setColor = (icon, params) => {
+ if (!params.iconColor) {
+ return;
+ }
+
+ icon.style.color = params.iconColor;
+ icon.style.borderColor = params.iconColor;
+
+ for (const sel of ['.swal2-success-line-tip', '.swal2-success-line-long', '.swal2-x-mark-line-left', '.swal2-x-mark-line-right']) {
+ setStyle(icon, sel, 'backgroundColor', params.iconColor);
+ }
+
+ setStyle(icon, '.swal2-success-ring', 'borderColor', params.iconColor);
+ };
+
+ const iconContent = content => "").concat(content, "
");
+
+ const renderImage = (instance, params) => {
+ const image = getImage();
+
+ if (!params.imageUrl) {
+ return hide(image);
+ }
+
+ show(image, ''); // Src, alt
+
+ image.setAttribute('src', params.imageUrl);
+ image.setAttribute('alt', params.imageAlt); // Width, height
+
+ applyNumericalStyle(image, 'width', params.imageWidth);
+ applyNumericalStyle(image, 'height', params.imageHeight); // Class
+
+ image.className = swalClasses.image;
+ applyCustomClass(image, params, 'image');
+ };
+
+ const createStepElement = step => {
+ const stepEl = document.createElement('li');
+ addClass(stepEl, swalClasses['progress-step']);
+ setInnerHtml(stepEl, step);
+ return stepEl;
+ };
+
+ const createLineElement = params => {
+ const lineEl = document.createElement('li');
+ addClass(lineEl, swalClasses['progress-step-line']);
+
+ if (params.progressStepsDistance) {
+ lineEl.style.width = params.progressStepsDistance;
+ }
+
+ return lineEl;
+ };
+
+ const renderProgressSteps = (instance, params) => {
+ const progressStepsContainer = getProgressSteps();
+
+ if (!params.progressSteps || params.progressSteps.length === 0) {
+ return hide(progressStepsContainer);
+ }
+
+ show(progressStepsContainer);
+ progressStepsContainer.textContent = '';
+
+ if (params.currentProgressStep >= params.progressSteps.length) {
+ warn('Invalid currentProgressStep parameter, it should be less than progressSteps.length ' + '(currentProgressStep like JS arrays starts from 0)');
+ }
+
+ params.progressSteps.forEach((step, index) => {
+ const stepEl = createStepElement(step);
+ progressStepsContainer.appendChild(stepEl);
+
+ if (index === params.currentProgressStep) {
+ addClass(stepEl, swalClasses['active-progress-step']);
+ }
+
+ if (index !== params.progressSteps.length - 1) {
+ const lineEl = createLineElement(params);
+ progressStepsContainer.appendChild(lineEl);
+ }
+ });
+ };
+
+ const renderTitle = (instance, params) => {
+ const title = getTitle();
+ toggle(title, params.title || params.titleText, 'block');
+
+ if (params.title) {
+ parseHtmlToContainer(params.title, title);
+ }
+
+ if (params.titleText) {
+ title.innerText = params.titleText;
+ } // Custom class
+
+
+ applyCustomClass(title, params, 'title');
+ };
+
+ const renderPopup = (instance, params) => {
+ const container = getContainer();
+ const popup = getPopup(); // Width
+
+ if (params.toast) {
+ // #2170
+ applyNumericalStyle(container, 'width', params.width);
+ popup.style.width = '100%';
+ popup.insertBefore(getLoader(), getIcon());
+ } else {
+ applyNumericalStyle(popup, 'width', params.width);
+ } // Padding
+
+
+ applyNumericalStyle(popup, 'padding', params.padding); // Background
+
+ if (params.background) {
+ popup.style.background = params.background;
+ }
+
+ hide(getValidationMessage()); // Classes
+
+ addClasses(popup, params);
+ };
+
+ const addClasses = (popup, params) => {
+ // Default Class + showClass when updating Swal.update({})
+ popup.className = "".concat(swalClasses.popup, " ").concat(isVisible(popup) ? params.showClass.popup : '');
+
+ if (params.toast) {
+ addClass([document.documentElement, document.body], swalClasses['toast-shown']);
+ addClass(popup, swalClasses.toast);
+ } else {
+ addClass(popup, swalClasses.modal);
+ } // Custom class
+
+
+ applyCustomClass(popup, params, 'popup');
+
+ if (typeof params.customClass === 'string') {
+ addClass(popup, params.customClass);
+ } // Icon class (#1842)
+
+
+ if (params.icon) {
+ addClass(popup, swalClasses["icon-".concat(params.icon)]);
+ }
+ };
+
+ const render = (instance, params) => {
+ renderPopup(instance, params);
+ renderContainer(instance, params);
+ renderProgressSteps(instance, params);
+ renderIcon(instance, params);
+ renderImage(instance, params);
+ renderTitle(instance, params);
+ renderCloseButton(instance, params);
+ renderContent(instance, params);
+ renderActions(instance, params);
+ renderFooter(instance, params);
+
+ if (typeof params.didRender === 'function') {
+ params.didRender(getPopup());
+ }
+ };
+
+ /*
+ * Global function to determine if SweetAlert2 popup is shown
+ */
+
+ const isVisible$1 = () => {
+ return isVisible(getPopup());
+ };
+ /*
+ * Global function to click 'Confirm' button
+ */
+
+ const clickConfirm = () => getConfirmButton() && getConfirmButton().click();
+ /*
+ * Global function to click 'Deny' button
+ */
+
+ const clickDeny = () => getDenyButton() && getDenyButton().click();
+ /*
+ * Global function to click 'Cancel' button
+ */
+
+ const clickCancel = () => getCancelButton() && getCancelButton().click();
+
+ function fire(...args) {
+ const Swal = this;
+ return new Swal(...args);
+ }
+
+ /**
+ * Returns an extended version of `Swal` containing `params` as defaults.
+ * Useful for reusing Swal configuration.
+ *
+ * For example:
+ *
+ * Before:
+ * const textPromptOptions = { input: 'text', showCancelButton: true }
+ * const {value: firstName} = await Swal.fire({ ...textPromptOptions, title: 'What is your first name?' })
+ * const {value: lastName} = await Swal.fire({ ...textPromptOptions, title: 'What is your last name?' })
+ *
+ * After:
+ * const TextPrompt = Swal.mixin({ input: 'text', showCancelButton: true })
+ * const {value: firstName} = await TextPrompt('What is your first name?')
+ * const {value: lastName} = await TextPrompt('What is your last name?')
+ *
+ * @param mixinParams
+ */
+ function mixin(mixinParams) {
+ class MixinSwal extends this {
+ _main(params, priorityMixinParams) {
+ return super._main(params, Object.assign({}, mixinParams, priorityMixinParams));
+ }
+
+ }
+
+ return MixinSwal;
+ }
+
+ /**
+ * Shows loader (spinner), this is useful with AJAX requests.
+ * By default the loader be shown instead of the "Confirm" button.
+ */
+
+ const showLoading = buttonToReplace => {
+ let popup = getPopup();
+
+ if (!popup) {
+ Swal.fire();
+ }
+
+ popup = getPopup();
+ const loader = getLoader();
+
+ if (isToast()) {
+ hide(getIcon());
+ } else {
+ replaceButton(popup, buttonToReplace);
+ }
+
+ show(loader);
+ popup.setAttribute('data-loading', true);
+ popup.setAttribute('aria-busy', true);
+ popup.focus();
+ };
+
+ const replaceButton = (popup, buttonToReplace) => {
+ const actions = getActions();
+ const loader = getLoader();
+
+ if (!buttonToReplace && isVisible(getConfirmButton())) {
+ buttonToReplace = getConfirmButton();
+ }
+
+ show(actions);
+
+ if (buttonToReplace) {
+ hide(buttonToReplace);
+ loader.setAttribute('data-button-to-replace', buttonToReplace.className);
+ }
+
+ loader.parentNode.insertBefore(loader, buttonToReplace);
+ addClass([popup, actions], swalClasses.loading);
+ };
+
+ const RESTORE_FOCUS_TIMEOUT = 100;
+
+ const globalState = {};
+
+ const focusPreviousActiveElement = () => {
+ if (globalState.previousActiveElement && globalState.previousActiveElement.focus) {
+ globalState.previousActiveElement.focus();
+ globalState.previousActiveElement = null;
+ } else if (document.body) {
+ document.body.focus();
+ }
+ }; // Restore previous active (focused) element
+
+
+ const restoreActiveElement = returnFocus => {
+ return new Promise(resolve => {
+ if (!returnFocus) {
+ return resolve();
+ }
+
+ const x = window.scrollX;
+ const y = window.scrollY;
+ globalState.restoreFocusTimeout = setTimeout(() => {
+ focusPreviousActiveElement();
+ resolve();
+ }, RESTORE_FOCUS_TIMEOUT); // issues/900
+
+ window.scrollTo(x, y);
+ });
+ };
+
+ /**
+ * If `timer` parameter is set, returns number of milliseconds of timer remained.
+ * Otherwise, returns undefined.
+ */
+
+ const getTimerLeft = () => {
+ return globalState.timeout && globalState.timeout.getTimerLeft();
+ };
+ /**
+ * Stop timer. Returns number of milliseconds of timer remained.
+ * If `timer` parameter isn't set, returns undefined.
+ */
+
+ const stopTimer = () => {
+ if (globalState.timeout) {
+ stopTimerProgressBar();
+ return globalState.timeout.stop();
+ }
+ };
+ /**
+ * Resume timer. Returns number of milliseconds of timer remained.
+ * If `timer` parameter isn't set, returns undefined.
+ */
+
+ const resumeTimer = () => {
+ if (globalState.timeout) {
+ const remaining = globalState.timeout.start();
+ animateTimerProgressBar(remaining);
+ return remaining;
+ }
+ };
+ /**
+ * Resume timer. Returns number of milliseconds of timer remained.
+ * If `timer` parameter isn't set, returns undefined.
+ */
+
+ const toggleTimer = () => {
+ const timer = globalState.timeout;
+ return timer && (timer.running ? stopTimer() : resumeTimer());
+ };
+ /**
+ * Increase timer. Returns number of milliseconds of an updated timer.
+ * If `timer` parameter isn't set, returns undefined.
+ */
+
+ const increaseTimer = n => {
+ if (globalState.timeout) {
+ const remaining = globalState.timeout.increase(n);
+ animateTimerProgressBar(remaining, true);
+ return remaining;
+ }
+ };
+ /**
+ * Check if timer is running. Returns true if timer is running
+ * or false if timer is paused or stopped.
+ * If `timer` parameter isn't set, returns undefined
+ */
+
+ const isTimerRunning = () => {
+ return globalState.timeout && globalState.timeout.isRunning();
+ };
+
+ let bodyClickListenerAdded = false;
+ const clickHandlers = {};
+ function bindClickHandler(attr = 'data-swal-template') {
+ clickHandlers[attr] = this;
+
+ if (!bodyClickListenerAdded) {
+ document.body.addEventListener('click', bodyClickListener);
+ bodyClickListenerAdded = true;
+ }
+ }
+
+ const bodyClickListener = event => {
+ for (let el = event.target; el && el !== document; el = el.parentNode) {
+ for (const attr in clickHandlers) {
+ const template = el.getAttribute(attr);
+
+ if (template) {
+ clickHandlers[attr].fire({
+ template
+ });
+ return;
+ }
+ }
+ }
+ };
+
+ const defaultParams = {
+ title: '',
+ titleText: '',
+ text: '',
+ html: '',
+ footer: '',
+ icon: undefined,
+ iconColor: undefined,
+ iconHtml: undefined,
+ template: undefined,
+ toast: false,
+ showClass: {
+ popup: 'swal2-show',
+ backdrop: 'swal2-backdrop-show',
+ icon: 'swal2-icon-show'
+ },
+ hideClass: {
+ popup: 'swal2-hide',
+ backdrop: 'swal2-backdrop-hide',
+ icon: 'swal2-icon-hide'
+ },
+ customClass: {},
+ target: 'body',
+ backdrop: true,
+ heightAuto: true,
+ allowOutsideClick: true,
+ allowEscapeKey: true,
+ allowEnterKey: true,
+ stopKeydownPropagation: true,
+ keydownListenerCapture: false,
+ showConfirmButton: true,
+ showDenyButton: false,
+ showCancelButton: false,
+ preConfirm: undefined,
+ preDeny: undefined,
+ confirmButtonText: 'OK',
+ confirmButtonAriaLabel: '',
+ confirmButtonColor: undefined,
+ denyButtonText: 'No',
+ denyButtonAriaLabel: '',
+ denyButtonColor: undefined,
+ cancelButtonText: 'Cancel',
+ cancelButtonAriaLabel: '',
+ cancelButtonColor: undefined,
+ buttonsStyling: true,
+ reverseButtons: false,
+ focusConfirm: true,
+ focusDeny: false,
+ focusCancel: false,
+ returnFocus: true,
+ showCloseButton: false,
+ closeButtonHtml: '×',
+ closeButtonAriaLabel: 'Close this dialog',
+ loaderHtml: '',
+ showLoaderOnConfirm: false,
+ showLoaderOnDeny: false,
+ imageUrl: undefined,
+ imageWidth: undefined,
+ imageHeight: undefined,
+ imageAlt: '',
+ timer: undefined,
+ timerProgressBar: false,
+ width: undefined,
+ padding: undefined,
+ background: undefined,
+ input: undefined,
+ inputPlaceholder: '',
+ inputLabel: '',
+ inputValue: '',
+ inputOptions: {},
+ inputAutoTrim: true,
+ inputAttributes: {},
+ inputValidator: undefined,
+ returnInputValueOnDeny: false,
+ validationMessage: undefined,
+ grow: false,
+ position: 'center',
+ progressSteps: [],
+ currentProgressStep: undefined,
+ progressStepsDistance: undefined,
+ willOpen: undefined,
+ didOpen: undefined,
+ didRender: undefined,
+ willClose: undefined,
+ didClose: undefined,
+ didDestroy: undefined,
+ scrollbarPadding: true
+ };
+ const updatableParams = ['allowEscapeKey', 'allowOutsideClick', 'background', 'buttonsStyling', 'cancelButtonAriaLabel', 'cancelButtonColor', 'cancelButtonText', 'closeButtonAriaLabel', 'closeButtonHtml', 'confirmButtonAriaLabel', 'confirmButtonColor', 'confirmButtonText', 'currentProgressStep', 'customClass', 'denyButtonAriaLabel', 'denyButtonColor', 'denyButtonText', 'didClose', 'didDestroy', 'footer', 'hideClass', 'html', 'icon', 'iconColor', 'iconHtml', 'imageAlt', 'imageHeight', 'imageUrl', 'imageWidth', 'preConfirm', 'preDeny', 'progressSteps', 'returnFocus', 'reverseButtons', 'showCancelButton', 'showCloseButton', 'showConfirmButton', 'showDenyButton', 'text', 'title', 'titleText', 'willClose'];
+ const deprecatedParams = {};
+ const toastIncompatibleParams = ['allowOutsideClick', 'allowEnterKey', 'backdrop', 'focusConfirm', 'focusDeny', 'focusCancel', 'returnFocus', 'heightAuto', 'keydownListenerCapture'];
+ /**
+ * Is valid parameter
+ * @param {String} paramName
+ */
+
+ const isValidParameter = paramName => {
+ return Object.prototype.hasOwnProperty.call(defaultParams, paramName);
+ };
+ /**
+ * Is valid parameter for Swal.update() method
+ * @param {String} paramName
+ */
+
+ const isUpdatableParameter = paramName => {
+ return updatableParams.indexOf(paramName) !== -1;
+ };
+ /**
+ * Is deprecated parameter
+ * @param {String} paramName
+ */
+
+ const isDeprecatedParameter = paramName => {
+ return deprecatedParams[paramName];
+ };
+
+ const checkIfParamIsValid = param => {
+ if (!isValidParameter(param)) {
+ warn("Unknown parameter \"".concat(param, "\""));
+ }
+ };
+
+ const checkIfToastParamIsValid = param => {
+ if (toastIncompatibleParams.includes(param)) {
+ warn("The parameter \"".concat(param, "\" is incompatible with toasts"));
+ }
+ };
+
+ const checkIfParamIsDeprecated = param => {
+ if (isDeprecatedParameter(param)) {
+ warnAboutDeprecation(param, isDeprecatedParameter(param));
+ }
+ };
+ /**
+ * Show relevant warnings for given params
+ *
+ * @param params
+ */
+
+
+ const showWarningsForParams = params => {
+ if (!params.backdrop && params.allowOutsideClick) {
+ warn('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`');
+ }
+
+ for (const param in params) {
+ checkIfParamIsValid(param);
+
+ if (params.toast) {
+ checkIfToastParamIsValid(param);
+ }
+
+ checkIfParamIsDeprecated(param);
+ }
+ };
+
+
+
+ var staticMethods = /*#__PURE__*/Object.freeze({
+ isValidParameter: isValidParameter,
+ isUpdatableParameter: isUpdatableParameter,
+ isDeprecatedParameter: isDeprecatedParameter,
+ argsToParams: argsToParams,
+ isVisible: isVisible$1,
+ clickConfirm: clickConfirm,
+ clickDeny: clickDeny,
+ clickCancel: clickCancel,
+ getContainer: getContainer,
+ getPopup: getPopup,
+ getTitle: getTitle,
+ getHtmlContainer: getHtmlContainer,
+ getImage: getImage,
+ getIcon: getIcon,
+ getInputLabel: getInputLabel,
+ getCloseButton: getCloseButton,
+ getActions: getActions,
+ getConfirmButton: getConfirmButton,
+ getDenyButton: getDenyButton,
+ getCancelButton: getCancelButton,
+ getLoader: getLoader,
+ getFooter: getFooter,
+ getTimerProgressBar: getTimerProgressBar,
+ getFocusableElements: getFocusableElements,
+ getValidationMessage: getValidationMessage,
+ isLoading: isLoading,
+ fire: fire,
+ mixin: mixin,
+ showLoading: showLoading,
+ enableLoading: showLoading,
+ getTimerLeft: getTimerLeft,
+ stopTimer: stopTimer,
+ resumeTimer: resumeTimer,
+ toggleTimer: toggleTimer,
+ increaseTimer: increaseTimer,
+ isTimerRunning: isTimerRunning,
+ bindClickHandler: bindClickHandler
+ });
+
+ /**
+ * Hides loader and shows back the button which was hidden by .showLoading()
+ */
+
+ function hideLoading() {
+ // do nothing if popup is closed
+ const innerParams = privateProps.innerParams.get(this);
+
+ if (!innerParams) {
+ return;
+ }
+
+ const domCache = privateProps.domCache.get(this);
+ hide(domCache.loader);
+
+ if (isToast()) {
+ if (innerParams.icon) {
+ show(getIcon());
+ }
+ } else {
+ showRelatedButton(domCache);
+ }
+
+ removeClass([domCache.popup, domCache.actions], swalClasses.loading);
+ domCache.popup.removeAttribute('aria-busy');
+ domCache.popup.removeAttribute('data-loading');
+ domCache.confirmButton.disabled = false;
+ domCache.denyButton.disabled = false;
+ domCache.cancelButton.disabled = false;
+ }
+
+ const showRelatedButton = domCache => {
+ const buttonToReplace = domCache.popup.getElementsByClassName(domCache.loader.getAttribute('data-button-to-replace'));
+
+ if (buttonToReplace.length) {
+ show(buttonToReplace[0], 'inline-block');
+ } else if (allButtonsAreHidden()) {
+ hide(domCache.actions);
+ }
+ };
+
+ function getInput$1(instance) {
+ const innerParams = privateProps.innerParams.get(instance || this);
+ const domCache = privateProps.domCache.get(instance || this);
+
+ if (!domCache) {
+ return null;
+ }
+
+ return getInput(domCache.popup, innerParams.input);
+ }
+
+ const fixScrollbar = () => {
+ // for queues, do not do this more than once
+ if (states.previousBodyPadding !== null) {
+ return;
+ } // if the body has overflow
+
+
+ if (document.body.scrollHeight > window.innerHeight) {
+ // add padding so the content doesn't shift after removal of scrollbar
+ states.previousBodyPadding = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right'));
+ document.body.style.paddingRight = "".concat(states.previousBodyPadding + measureScrollbar(), "px");
+ }
+ };
+ const undoScrollbar = () => {
+ if (states.previousBodyPadding !== null) {
+ document.body.style.paddingRight = "".concat(states.previousBodyPadding, "px");
+ states.previousBodyPadding = null;
+ }
+ };
+
+ /* istanbul ignore file */
+
+ const iOSfix = () => {
+ const iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1;
+
+ if (iOS && !hasClass(document.body, swalClasses.iosfix)) {
+ const offset = document.body.scrollTop;
+ document.body.style.top = "".concat(offset * -1, "px");
+ addClass(document.body, swalClasses.iosfix);
+ lockBodyScroll();
+ addBottomPaddingForTallPopups(); // #1948
+ }
+ };
+
+ const addBottomPaddingForTallPopups = () => {
+ const safari = !navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i);
+
+ if (safari) {
+ const bottomPanelHeight = 44;
+
+ if (getPopup().scrollHeight > window.innerHeight - bottomPanelHeight) {
+ getContainer().style.paddingBottom = "".concat(bottomPanelHeight, "px");
+ }
+ }
+ };
+
+ const lockBodyScroll = () => {
+ // #1246
+ const container = getContainer();
+ let preventTouchMove;
+
+ container.ontouchstart = e => {
+ preventTouchMove = shouldPreventTouchMove(e);
+ };
+
+ container.ontouchmove = e => {
+ if (preventTouchMove) {
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ };
+ };
+
+ const shouldPreventTouchMove = event => {
+ const target = event.target;
+ const container = getContainer();
+
+ if (isStylys(event) || isZoom(event)) {
+ return false;
+ }
+
+ if (target === container) {
+ return true;
+ }
+
+ if (!isScrollable(container) && target.tagName !== 'INPUT' && // #1603
+ target.tagName !== 'TEXTAREA' && // #2266
+ !(isScrollable(getHtmlContainer()) && // #1944
+ getHtmlContainer().contains(target))) {
+ return true;
+ }
+
+ return false;
+ };
+
+ const isStylys = event => {
+ // #1786
+ return event.touches && event.touches.length && event.touches[0].touchType === 'stylus';
+ };
+
+ const isZoom = event => {
+ // #1891
+ return event.touches && event.touches.length > 1;
+ };
+
+ const undoIOSfix = () => {
+ if (hasClass(document.body, swalClasses.iosfix)) {
+ const offset = parseInt(document.body.style.top, 10);
+ removeClass(document.body, swalClasses.iosfix);
+ document.body.style.top = '';
+ document.body.scrollTop = offset * -1;
+ }
+ };
+
+ // Adding aria-hidden="true" to elements outside of the active modal dialog ensures that
+ // elements not within the active modal dialog will not be surfaced if a user opens a screen
+ // reader’s list of elements (headings, form controls, landmarks, etc.) in the document.
+
+ const setAriaHidden = () => {
+ const bodyChildren = toArray(document.body.children);
+ bodyChildren.forEach(el => {
+ if (el === getContainer() || el.contains(getContainer())) {
+ return;
+ }
+
+ if (el.hasAttribute('aria-hidden')) {
+ el.setAttribute('data-previous-aria-hidden', el.getAttribute('aria-hidden'));
+ }
+
+ el.setAttribute('aria-hidden', 'true');
+ });
+ };
+ const unsetAriaHidden = () => {
+ const bodyChildren = toArray(document.body.children);
+ bodyChildren.forEach(el => {
+ if (el.hasAttribute('data-previous-aria-hidden')) {
+ el.setAttribute('aria-hidden', el.getAttribute('data-previous-aria-hidden'));
+ el.removeAttribute('data-previous-aria-hidden');
+ } else {
+ el.removeAttribute('aria-hidden');
+ }
+ });
+ };
+
+ /**
+ * This module containts `WeakMap`s for each effectively-"private property" that a `Swal` has.
+ * For example, to set the private property "foo" of `this` to "bar", you can `privateProps.foo.set(this, 'bar')`
+ * This is the approach that Babel will probably take to implement private methods/fields
+ * https://github.com/tc39/proposal-private-methods
+ * https://github.com/babel/babel/pull/7555
+ * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module*
+ * then we can use that language feature.
+ */
+ var privateMethods = {
+ swalPromiseResolve: new WeakMap()
+ };
+
+ /*
+ * Instance method to close sweetAlert
+ */
+
+ function removePopupAndResetState(instance, container, returnFocus, didClose) {
+ if (isToast()) {
+ triggerDidCloseAndDispose(instance, didClose);
+ } else {
+ restoreActiveElement(returnFocus).then(() => triggerDidCloseAndDispose(instance, didClose));
+ globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, {
+ capture: globalState.keydownListenerCapture
+ });
+ globalState.keydownHandlerAdded = false;
+ }
+
+ const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); // workaround for #2088
+ // for some reason removing the container in Safari will scroll the document to bottom
+
+ if (isSafari) {
+ container.setAttribute('style', 'display:none !important');
+ container.removeAttribute('class');
+ container.innerHTML = '';
+ } else {
+ container.remove();
+ }
+
+ if (isModal()) {
+ undoScrollbar();
+ undoIOSfix();
+ unsetAriaHidden();
+ }
+
+ removeBodyClasses();
+ }
+
+ function removeBodyClasses() {
+ removeClass([document.documentElement, document.body], [swalClasses.shown, swalClasses['height-auto'], swalClasses['no-backdrop'], swalClasses['toast-shown']]);
+ }
+
+ function close(resolveValue) {
+ const popup = getPopup();
+
+ if (!popup) {
+ return;
+ }
+
+ resolveValue = prepareResolveValue(resolveValue);
+ const innerParams = privateProps.innerParams.get(this);
+
+ if (!innerParams || hasClass(popup, innerParams.hideClass.popup)) {
+ return;
+ }
+
+ const swalPromiseResolve = privateMethods.swalPromiseResolve.get(this);
+ removeClass(popup, innerParams.showClass.popup);
+ addClass(popup, innerParams.hideClass.popup);
+ const backdrop = getContainer();
+ removeClass(backdrop, innerParams.showClass.backdrop);
+ addClass(backdrop, innerParams.hideClass.backdrop);
+ handlePopupAnimation(this, popup, innerParams); // Resolve Swal promise
+
+ swalPromiseResolve(resolveValue);
+ }
+
+ const prepareResolveValue = resolveValue => {
+ // When user calls Swal.close()
+ if (typeof resolveValue === 'undefined') {
+ return {
+ isConfirmed: false,
+ isDenied: false,
+ isDismissed: true
+ };
+ }
+
+ return Object.assign({
+ isConfirmed: false,
+ isDenied: false,
+ isDismissed: false
+ }, resolveValue);
+ };
+
+ const handlePopupAnimation = (instance, popup, innerParams) => {
+ const container = getContainer(); // If animation is supported, animate
+
+ const animationIsSupported = animationEndEvent && hasCssAnimation(popup);
+
+ if (typeof innerParams.willClose === 'function') {
+ innerParams.willClose(popup);
+ }
+
+ if (animationIsSupported) {
+ animatePopup(instance, popup, container, innerParams.returnFocus, innerParams.didClose);
+ } else {
+ // Otherwise, remove immediately
+ removePopupAndResetState(instance, container, innerParams.returnFocus, innerParams.didClose);
+ }
+ };
+
+ const animatePopup = (instance, popup, container, returnFocus, didClose) => {
+ globalState.swalCloseEventFinishedCallback = removePopupAndResetState.bind(null, instance, container, returnFocus, didClose);
+ popup.addEventListener(animationEndEvent, function (e) {
+ if (e.target === popup) {
+ globalState.swalCloseEventFinishedCallback();
+ delete globalState.swalCloseEventFinishedCallback;
+ }
+ });
+ };
+
+ const triggerDidCloseAndDispose = (instance, didClose) => {
+ setTimeout(() => {
+ if (typeof didClose === 'function') {
+ didClose.bind(instance.params)();
+ }
+
+ instance._destroy();
+ });
+ };
+
+ function setButtonsDisabled(instance, buttons, disabled) {
+ const domCache = privateProps.domCache.get(instance);
+ buttons.forEach(button => {
+ domCache[button].disabled = disabled;
+ });
+ }
+
+ function setInputDisabled(input, disabled) {
+ if (!input) {
+ return false;
+ }
+
+ if (input.type === 'radio') {
+ const radiosContainer = input.parentNode.parentNode;
+ const radios = radiosContainer.querySelectorAll('input');
+
+ for (let i = 0; i < radios.length; i++) {
+ radios[i].disabled = disabled;
+ }
+ } else {
+ input.disabled = disabled;
+ }
+ }
+
+ function enableButtons() {
+ setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], false);
+ }
+ function disableButtons() {
+ setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], true);
+ }
+ function enableInput() {
+ return setInputDisabled(this.getInput(), false);
+ }
+ function disableInput() {
+ return setInputDisabled(this.getInput(), true);
+ }
+
+ function showValidationMessage(error) {
+ const domCache = privateProps.domCache.get(this);
+ const params = privateProps.innerParams.get(this);
+ setInnerHtml(domCache.validationMessage, error);
+ domCache.validationMessage.className = swalClasses['validation-message'];
+
+ if (params.customClass && params.customClass.validationMessage) {
+ addClass(domCache.validationMessage, params.customClass.validationMessage);
+ }
+
+ show(domCache.validationMessage);
+ const input = this.getInput();
+
+ if (input) {
+ input.setAttribute('aria-invalid', true);
+ input.setAttribute('aria-describedby', swalClasses['validation-message']);
+ focusInput(input);
+ addClass(input, swalClasses.inputerror);
+ }
+ } // Hide block with validation message
+
+ function resetValidationMessage$1() {
+ const domCache = privateProps.domCache.get(this);
+
+ if (domCache.validationMessage) {
+ hide(domCache.validationMessage);
+ }
+
+ const input = this.getInput();
+
+ if (input) {
+ input.removeAttribute('aria-invalid');
+ input.removeAttribute('aria-describedby');
+ removeClass(input, swalClasses.inputerror);
+ }
+ }
+
+ function getProgressSteps$1() {
+ const domCache = privateProps.domCache.get(this);
+ return domCache.progressSteps;
+ }
+
+ class Timer {
+ constructor(callback, delay) {
+ this.callback = callback;
+ this.remaining = delay;
+ this.running = false;
+ this.start();
+ }
+
+ start() {
+ if (!this.running) {
+ this.running = true;
+ this.started = new Date();
+ this.id = setTimeout(this.callback, this.remaining);
+ }
+
+ return this.remaining;
+ }
+
+ stop() {
+ if (this.running) {
+ this.running = false;
+ clearTimeout(this.id);
+ this.remaining -= new Date() - this.started;
+ }
+
+ return this.remaining;
+ }
+
+ increase(n) {
+ const running = this.running;
+
+ if (running) {
+ this.stop();
+ }
+
+ this.remaining += n;
+
+ if (running) {
+ this.start();
+ }
+
+ return this.remaining;
+ }
+
+ getTimerLeft() {
+ if (this.running) {
+ this.stop();
+ this.start();
+ }
+
+ return this.remaining;
+ }
+
+ isRunning() {
+ return this.running;
+ }
+
+ }
+
+ var defaultInputValidators = {
+ email: (string, validationMessage) => {
+ return /^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid email address');
+ },
+ url: (string, validationMessage) => {
+ // taken from https://stackoverflow.com/a/3809435 with a small change from #1306 and #2013
+ return /^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid URL');
+ }
+ };
+
+ function setDefaultInputValidators(params) {
+ // Use default `inputValidator` for supported input types if not provided
+ if (!params.inputValidator) {
+ Object.keys(defaultInputValidators).forEach(key => {
+ if (params.input === key) {
+ params.inputValidator = defaultInputValidators[key];
+ }
+ });
+ }
+ }
+
+ function validateCustomTargetElement(params) {
+ // Determine if the custom target element is valid
+ if (!params.target || typeof params.target === 'string' && !document.querySelector(params.target) || typeof params.target !== 'string' && !params.target.appendChild) {
+ warn('Target parameter is not valid, defaulting to "body"');
+ params.target = 'body';
+ }
+ }
+ /**
+ * Set type, text and actions on popup
+ *
+ * @param params
+ * @returns {boolean}
+ */
+
+
+ function setParameters(params) {
+ setDefaultInputValidators(params); // showLoaderOnConfirm && preConfirm
+
+ if (params.showLoaderOnConfirm && !params.preConfirm) {
+ warn('showLoaderOnConfirm is set to true, but preConfirm is not defined.\n' + 'showLoaderOnConfirm should be used together with preConfirm, see usage example:\n' + 'https://sweetalert2.github.io/#ajax-request');
+ }
+
+ validateCustomTargetElement(params); // Replace newlines with in title
+
+ if (typeof params.title === 'string') {
+ params.title = params.title.split('\n').join(' ');
+ }
+
+ init(params);
+ }
+
+ const swalStringParams = ['swal-title', 'swal-html', 'swal-footer'];
+ const getTemplateParams = params => {
+ const template = typeof params.template === 'string' ? document.querySelector(params.template) : params.template;
+
+ if (!template) {
+ return {};
+ }
+
+ const templateContent = template.content;
+ showWarningsForElements(templateContent);
+ const result = Object.assign(getSwalParams(templateContent), getSwalButtons(templateContent), getSwalImage(templateContent), getSwalIcon(templateContent), getSwalInput(templateContent), getSwalStringParams(templateContent, swalStringParams));
+ return result;
+ };
+
+ const getSwalParams = templateContent => {
+ const result = {};
+ toArray(templateContent.querySelectorAll('swal-param')).forEach(param => {
+ showWarningsForAttributes(param, ['name', 'value']);
+ const paramName = param.getAttribute('name');
+ let value = param.getAttribute('value');
+
+ if (typeof defaultParams[paramName] === 'boolean' && value === 'false') {
+ value = false;
+ }
+
+ if (typeof defaultParams[paramName] === 'object') {
+ value = JSON.parse(value);
+ }
+
+ result[paramName] = value;
+ });
+ return result;
+ };
+
+ const getSwalButtons = templateContent => {
+ const result = {};
+ toArray(templateContent.querySelectorAll('swal-button')).forEach(button => {
+ showWarningsForAttributes(button, ['type', 'color', 'aria-label']);
+ const type = button.getAttribute('type');
+ result["".concat(type, "ButtonText")] = button.innerHTML;
+ result["show".concat(capitalizeFirstLetter(type), "Button")] = true;
+
+ if (button.hasAttribute('color')) {
+ result["".concat(type, "ButtonColor")] = button.getAttribute('color');
+ }
+
+ if (button.hasAttribute('aria-label')) {
+ result["".concat(type, "ButtonAriaLabel")] = button.getAttribute('aria-label');
+ }
+ });
+ return result;
+ };
+
+ const getSwalImage = templateContent => {
+ const result = {};
+ const image = templateContent.querySelector('swal-image');
+
+ if (image) {
+ showWarningsForAttributes(image, ['src', 'width', 'height', 'alt']);
+
+ if (image.hasAttribute('src')) {
+ result.imageUrl = image.getAttribute('src');
+ }
+
+ if (image.hasAttribute('width')) {
+ result.imageWidth = image.getAttribute('width');
+ }
+
+ if (image.hasAttribute('height')) {
+ result.imageHeight = image.getAttribute('height');
+ }
+
+ if (image.hasAttribute('alt')) {
+ result.imageAlt = image.getAttribute('alt');
+ }
+ }
+
+ return result;
+ };
+
+ const getSwalIcon = templateContent => {
+ const result = {};
+ const icon = templateContent.querySelector('swal-icon');
+
+ if (icon) {
+ showWarningsForAttributes(icon, ['type', 'color']);
+
+ if (icon.hasAttribute('type')) {
+ result.icon = icon.getAttribute('type');
+ }
+
+ if (icon.hasAttribute('color')) {
+ result.iconColor = icon.getAttribute('color');
+ }
+
+ result.iconHtml = icon.innerHTML;
+ }
+
+ return result;
+ };
+
+ const getSwalInput = templateContent => {
+ const result = {};
+ const input = templateContent.querySelector('swal-input');
+
+ if (input) {
+ showWarningsForAttributes(input, ['type', 'label', 'placeholder', 'value']);
+ result.input = input.getAttribute('type') || 'text';
+
+ if (input.hasAttribute('label')) {
+ result.inputLabel = input.getAttribute('label');
+ }
+
+ if (input.hasAttribute('placeholder')) {
+ result.inputPlaceholder = input.getAttribute('placeholder');
+ }
+
+ if (input.hasAttribute('value')) {
+ result.inputValue = input.getAttribute('value');
+ }
+ }
+
+ const inputOptions = templateContent.querySelectorAll('swal-input-option');
+
+ if (inputOptions.length) {
+ result.inputOptions = {};
+ toArray(inputOptions).forEach(option => {
+ showWarningsForAttributes(option, ['value']);
+ const optionValue = option.getAttribute('value');
+ const optionName = option.innerHTML;
+ result.inputOptions[optionValue] = optionName;
+ });
+ }
+
+ return result;
+ };
+
+ const getSwalStringParams = (templateContent, paramNames) => {
+ const result = {};
+
+ for (const i in paramNames) {
+ const paramName = paramNames[i];
+ const tag = templateContent.querySelector(paramName);
+
+ if (tag) {
+ showWarningsForAttributes(tag, []);
+ result[paramName.replace(/^swal-/, '')] = tag.innerHTML.trim();
+ }
+ }
+
+ return result;
+ };
+
+ const showWarningsForElements = template => {
+ const allowedElements = swalStringParams.concat(['swal-param', 'swal-button', 'swal-image', 'swal-icon', 'swal-input', 'swal-input-option']);
+ toArray(template.children).forEach(el => {
+ const tagName = el.tagName.toLowerCase();
+
+ if (allowedElements.indexOf(tagName) === -1) {
+ warn("Unrecognized element <".concat(tagName, ">"));
+ }
+ });
+ };
+
+ const showWarningsForAttributes = (el, allowedAttributes) => {
+ toArray(el.attributes).forEach(attribute => {
+ if (allowedAttributes.indexOf(attribute.name) === -1) {
+ warn(["Unrecognized attribute \"".concat(attribute.name, "\" on <").concat(el.tagName.toLowerCase(), ">."), "".concat(allowedAttributes.length ? "Allowed attributes are: ".concat(allowedAttributes.join(', ')) : 'To set the value, use HTML within the element.')]);
+ }
+ });
+ };
+
+ const SHOW_CLASS_TIMEOUT = 10;
+ /**
+ * Open popup, add necessary classes and styles, fix scrollbar
+ *
+ * @param params
+ */
+
+ const openPopup = params => {
+ const container = getContainer();
+ const popup = getPopup();
+
+ if (typeof params.willOpen === 'function') {
+ params.willOpen(popup);
+ }
+
+ const bodyStyles = window.getComputedStyle(document.body);
+ const initialBodyOverflow = bodyStyles.overflowY;
+ addClasses$1(container, popup, params); // scrolling is 'hidden' until animation is done, after that 'auto'
+
+ setTimeout(() => {
+ setScrollingVisibility(container, popup);
+ }, SHOW_CLASS_TIMEOUT);
+
+ if (isModal()) {
+ fixScrollContainer(container, params.scrollbarPadding, initialBodyOverflow);
+ setAriaHidden();
+ }
+
+ if (!isToast() && !globalState.previousActiveElement) {
+ globalState.previousActiveElement = document.activeElement;
+ }
+
+ if (typeof params.didOpen === 'function') {
+ setTimeout(() => params.didOpen(popup));
+ }
+
+ removeClass(container, swalClasses['no-transition']);
+ };
+
+ const swalOpenAnimationFinished = event => {
+ const popup = getPopup();
+
+ if (event.target !== popup) {
+ return;
+ }
+
+ const container = getContainer();
+ popup.removeEventListener(animationEndEvent, swalOpenAnimationFinished);
+ container.style.overflowY = 'auto';
+ };
+
+ const setScrollingVisibility = (container, popup) => {
+ if (animationEndEvent && hasCssAnimation(popup)) {
+ container.style.overflowY = 'hidden';
+ popup.addEventListener(animationEndEvent, swalOpenAnimationFinished);
+ } else {
+ container.style.overflowY = 'auto';
+ }
+ };
+
+ const fixScrollContainer = (container, scrollbarPadding, initialBodyOverflow) => {
+ iOSfix();
+
+ if (scrollbarPadding && initialBodyOverflow !== 'hidden') {
+ fixScrollbar();
+ } // sweetalert2/issues/1247
+
+
+ setTimeout(() => {
+ container.scrollTop = 0;
+ });
+ };
+
+ const addClasses$1 = (container, popup, params) => {
+ addClass(container, params.showClass.backdrop); // the workaround with setting/unsetting opacity is needed for #2019 and 2059
+
+ popup.style.setProperty('opacity', '0', 'important');
+ show(popup, 'grid');
+ setTimeout(() => {
+ // Animate popup right after showing it
+ addClass(popup, params.showClass.popup); // and remove the opacity workaround
+
+ popup.style.removeProperty('opacity');
+ }, SHOW_CLASS_TIMEOUT); // 10ms in order to fix #2062
+
+ addClass([document.documentElement, document.body], swalClasses.shown);
+
+ if (params.heightAuto && params.backdrop && !params.toast) {
+ addClass([document.documentElement, document.body], swalClasses['height-auto']);
+ }
+ };
+
+ const handleInputOptionsAndValue = (instance, params) => {
+ if (params.input === 'select' || params.input === 'radio') {
+ handleInputOptions(instance, params);
+ } else if (['text', 'email', 'number', 'tel', 'textarea'].includes(params.input) && (hasToPromiseFn(params.inputValue) || isPromise(params.inputValue))) {
+ showLoading(getConfirmButton());
+ handleInputValue(instance, params);
+ }
+ };
+ const getInputValue = (instance, innerParams) => {
+ const input = instance.getInput();
+
+ if (!input) {
+ return null;
+ }
+
+ switch (innerParams.input) {
+ case 'checkbox':
+ return getCheckboxValue(input);
+
+ case 'radio':
+ return getRadioValue(input);
+
+ case 'file':
+ return getFileValue(input);
+
+ default:
+ return innerParams.inputAutoTrim ? input.value.trim() : input.value;
+ }
+ };
+
+ const getCheckboxValue = input => input.checked ? 1 : 0;
+
+ const getRadioValue = input => input.checked ? input.value : null;
+
+ const getFileValue = input => input.files.length ? input.getAttribute('multiple') !== null ? input.files : input.files[0] : null;
+
+ const handleInputOptions = (instance, params) => {
+ const popup = getPopup();
+
+ const processInputOptions = inputOptions => populateInputOptions[params.input](popup, formatInputOptions(inputOptions), params);
+
+ if (hasToPromiseFn(params.inputOptions) || isPromise(params.inputOptions)) {
+ showLoading(getConfirmButton());
+ asPromise(params.inputOptions).then(inputOptions => {
+ instance.hideLoading();
+ processInputOptions(inputOptions);
+ });
+ } else if (typeof params.inputOptions === 'object') {
+ processInputOptions(params.inputOptions);
+ } else {
+ error("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(typeof params.inputOptions));
+ }
+ };
+
+ const handleInputValue = (instance, params) => {
+ const input = instance.getInput();
+ hide(input);
+ asPromise(params.inputValue).then(inputValue => {
+ input.value = params.input === 'number' ? parseFloat(inputValue) || 0 : "".concat(inputValue);
+ show(input);
+ input.focus();
+ instance.hideLoading();
+ }).catch(err => {
+ error("Error in inputValue promise: ".concat(err));
+ input.value = '';
+ show(input);
+ input.focus();
+ instance.hideLoading();
+ });
+ };
+
+ const populateInputOptions = {
+ select: (popup, inputOptions, params) => {
+ const select = getChildByClass(popup, swalClasses.select);
+
+ const renderOption = (parent, optionLabel, optionValue) => {
+ const option = document.createElement('option');
+ option.value = optionValue;
+ setInnerHtml(option, optionLabel);
+ option.selected = isSelected(optionValue, params.inputValue);
+ parent.appendChild(option);
+ };
+
+ inputOptions.forEach(inputOption => {
+ const optionValue = inputOption[0];
+ const optionLabel = inputOption[1]; // spec:
+ // https://www.w3.org/TR/html401/interact/forms.html#h-17.6
+ // "...all OPTGROUP elements must be specified directly within a SELECT element (i.e., groups may not be nested)..."
+ // check whether this is a
+
+ if (Array.isArray(optionLabel)) {
+ // if it is an array, then it is an
+ const optgroup = document.createElement('optgroup');
+ optgroup.label = optionValue;
+ optgroup.disabled = false; // not configurable for now
+
+ select.appendChild(optgroup);
+ optionLabel.forEach(o => renderOption(optgroup, o[1], o[0]));
+ } else {
+ // case of
+ renderOption(select, optionLabel, optionValue);
+ }
+ });
+ select.focus();
+ },
+ radio: (popup, inputOptions, params) => {
+ const radio = getChildByClass(popup, swalClasses.radio);
+ inputOptions.forEach(inputOption => {
+ const radioValue = inputOption[0];
+ const radioLabel = inputOption[1];
+ const radioInput = document.createElement('input');
+ const radioLabelElement = document.createElement('label');
+ radioInput.type = 'radio';
+ radioInput.name = swalClasses.radio;
+ radioInput.value = radioValue;
+
+ if (isSelected(radioValue, params.inputValue)) {
+ radioInput.checked = true;
+ }
+
+ const label = document.createElement('span');
+ setInnerHtml(label, radioLabel);
+ label.className = swalClasses.label;
+ radioLabelElement.appendChild(radioInput);
+ radioLabelElement.appendChild(label);
+ radio.appendChild(radioLabelElement);
+ });
+ const radios = radio.querySelectorAll('input');
+
+ if (radios.length) {
+ radios[0].focus();
+ }
+ }
+ };
+ /**
+ * Converts `inputOptions` into an array of `[value, label]`s
+ * @param inputOptions
+ */
+
+ const formatInputOptions = inputOptions => {
+ const result = [];
+
+ if (typeof Map !== 'undefined' && inputOptions instanceof Map) {
+ inputOptions.forEach((value, key) => {
+ let valueFormatted = value;
+
+ if (typeof valueFormatted === 'object') {
+ // case of
+ valueFormatted = formatInputOptions(valueFormatted);
+ }
+
+ result.push([key, valueFormatted]);
+ });
+ } else {
+ Object.keys(inputOptions).forEach(key => {
+ let valueFormatted = inputOptions[key];
+
+ if (typeof valueFormatted === 'object') {
+ // case of
+ valueFormatted = formatInputOptions(valueFormatted);
+ }
+
+ result.push([key, valueFormatted]);
+ });
+ }
+
+ return result;
+ };
+
+ const isSelected = (optionValue, inputValue) => {
+ return inputValue && inputValue.toString() === optionValue.toString();
+ };
+
+ const handleConfirmButtonClick = instance => {
+ const innerParams = privateProps.innerParams.get(instance);
+ instance.disableButtons();
+
+ if (innerParams.input) {
+ handleConfirmOrDenyWithInput(instance, 'confirm');
+ } else {
+ confirm(instance, true);
+ }
+ };
+ const handleDenyButtonClick = instance => {
+ const innerParams = privateProps.innerParams.get(instance);
+ instance.disableButtons();
+
+ if (innerParams.returnInputValueOnDeny) {
+ handleConfirmOrDenyWithInput(instance, 'deny');
+ } else {
+ deny(instance, false);
+ }
+ };
+ const handleCancelButtonClick = (instance, dismissWith) => {
+ instance.disableButtons();
+ dismissWith(DismissReason.cancel);
+ };
+
+ const handleConfirmOrDenyWithInput = (instance, type
+ /* 'confirm' | 'deny' */
+ ) => {
+ const innerParams = privateProps.innerParams.get(instance);
+ const inputValue = getInputValue(instance, innerParams);
+
+ if (innerParams.inputValidator) {
+ handleInputValidator(instance, inputValue, type);
+ } else if (!instance.getInput().checkValidity()) {
+ instance.enableButtons();
+ instance.showValidationMessage(innerParams.validationMessage);
+ } else if (type === 'deny') {
+ deny(instance, inputValue);
+ } else {
+ confirm(instance, inputValue);
+ }
+ };
+
+ const handleInputValidator = (instance, inputValue, type
+ /* 'confirm' | 'deny' */
+ ) => {
+ const innerParams = privateProps.innerParams.get(instance);
+ instance.disableInput();
+ const validationPromise = Promise.resolve().then(() => asPromise(innerParams.inputValidator(inputValue, innerParams.validationMessage)));
+ validationPromise.then(validationMessage => {
+ instance.enableButtons();
+ instance.enableInput();
+
+ if (validationMessage) {
+ instance.showValidationMessage(validationMessage);
+ } else if (type === 'deny') {
+ deny(instance, inputValue);
+ } else {
+ confirm(instance, inputValue);
+ }
+ });
+ };
+
+ const deny = (instance, value) => {
+ const innerParams = privateProps.innerParams.get(instance || undefined);
+
+ if (innerParams.showLoaderOnDeny) {
+ showLoading(getDenyButton());
+ }
+
+ if (innerParams.preDeny) {
+ const preDenyPromise = Promise.resolve().then(() => asPromise(innerParams.preDeny(value, innerParams.validationMessage)));
+ preDenyPromise.then(preDenyValue => {
+ if (preDenyValue === false) {
+ instance.hideLoading();
+ } else {
+ instance.closePopup({
+ isDenied: true,
+ value: typeof preDenyValue === 'undefined' ? value : preDenyValue
+ });
+ }
+ });
+ } else {
+ instance.closePopup({
+ isDenied: true,
+ value
+ });
+ }
+ };
+
+ const succeedWith = (instance, value) => {
+ instance.closePopup({
+ isConfirmed: true,
+ value
+ });
+ };
+
+ const confirm = (instance, value) => {
+ const innerParams = privateProps.innerParams.get(instance || undefined);
+
+ if (innerParams.showLoaderOnConfirm) {
+ showLoading();
+ }
+
+ if (innerParams.preConfirm) {
+ instance.resetValidationMessage();
+ const preConfirmPromise = Promise.resolve().then(() => asPromise(innerParams.preConfirm(value, innerParams.validationMessage)));
+ preConfirmPromise.then(preConfirmValue => {
+ if (isVisible(getValidationMessage()) || preConfirmValue === false) {
+ instance.hideLoading();
+ } else {
+ succeedWith(instance, typeof preConfirmValue === 'undefined' ? value : preConfirmValue);
+ }
+ });
+ } else {
+ succeedWith(instance, value);
+ }
+ };
+
+ const addKeydownHandler = (instance, globalState, innerParams, dismissWith) => {
+ if (globalState.keydownTarget && globalState.keydownHandlerAdded) {
+ globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, {
+ capture: globalState.keydownListenerCapture
+ });
+ globalState.keydownHandlerAdded = false;
+ }
+
+ if (!innerParams.toast) {
+ globalState.keydownHandler = e => keydownHandler(instance, e, dismissWith);
+
+ globalState.keydownTarget = innerParams.keydownListenerCapture ? window : getPopup();
+ globalState.keydownListenerCapture = innerParams.keydownListenerCapture;
+ globalState.keydownTarget.addEventListener('keydown', globalState.keydownHandler, {
+ capture: globalState.keydownListenerCapture
+ });
+ globalState.keydownHandlerAdded = true;
+ }
+ }; // Focus handling
+
+ const setFocus = (innerParams, index, increment) => {
+ const focusableElements = getFocusableElements(); // search for visible elements and select the next possible match
+
+ if (focusableElements.length) {
+ index = index + increment; // rollover to first item
+
+ if (index === focusableElements.length) {
+ index = 0; // go to last item
+ } else if (index === -1) {
+ index = focusableElements.length - 1;
+ }
+
+ return focusableElements[index].focus();
+ } // no visible focusable elements, focus the popup
+
+
+ getPopup().focus();
+ };
+ const arrowKeysNextButton = ['ArrowRight', 'ArrowDown'];
+ const arrowKeysPreviousButton = ['ArrowLeft', 'ArrowUp'];
+
+ const keydownHandler = (instance, e, dismissWith) => {
+ const innerParams = privateProps.innerParams.get(instance);
+
+ if (!innerParams) {
+ return; // This instance has already been destroyed
+ }
+
+ if (innerParams.stopKeydownPropagation) {
+ e.stopPropagation();
+ } // ENTER
+
+
+ if (e.key === 'Enter') {
+ handleEnter(instance, e, innerParams); // TAB
+ } else if (e.key === 'Tab') {
+ handleTab(e, innerParams); // ARROWS - switch focus between buttons
+ } else if ([...arrowKeysNextButton, ...arrowKeysPreviousButton].includes(e.key)) {
+ handleArrows(e.key); // ESC
+ } else if (e.key === 'Escape') {
+ handleEsc(e, innerParams, dismissWith);
+ }
+ };
+
+ const handleEnter = (instance, e, innerParams) => {
+ // #720 #721
+ if (e.isComposing) {
+ return;
+ }
+
+ if (e.target && instance.getInput() && e.target.outerHTML === instance.getInput().outerHTML) {
+ if (['textarea', 'file'].includes(innerParams.input)) {
+ return; // do not submit
+ }
+
+ clickConfirm();
+ e.preventDefault();
+ }
+ };
+
+ const handleTab = (e, innerParams) => {
+ const targetElement = e.target;
+ const focusableElements = getFocusableElements();
+ let btnIndex = -1;
+
+ for (let i = 0; i < focusableElements.length; i++) {
+ if (targetElement === focusableElements[i]) {
+ btnIndex = i;
+ break;
+ }
+ }
+
+ if (!e.shiftKey) {
+ // Cycle to the next button
+ setFocus(innerParams, btnIndex, 1);
+ } else {
+ // Cycle to the prev button
+ setFocus(innerParams, btnIndex, -1);
+ }
+
+ e.stopPropagation();
+ e.preventDefault();
+ };
+
+ const handleArrows = key => {
+ const confirmButton = getConfirmButton();
+ const denyButton = getDenyButton();
+ const cancelButton = getCancelButton();
+
+ if (![confirmButton, denyButton, cancelButton].includes(document.activeElement)) {
+ return;
+ }
+
+ const sibling = arrowKeysNextButton.includes(key) ? 'nextElementSibling' : 'previousElementSibling';
+ const buttonToFocus = document.activeElement[sibling];
+
+ if (buttonToFocus) {
+ buttonToFocus.focus();
+ }
+ };
+
+ const handleEsc = (e, innerParams, dismissWith) => {
+ if (callIfFunction(innerParams.allowEscapeKey)) {
+ e.preventDefault();
+ dismissWith(DismissReason.esc);
+ }
+ };
+
+ const handlePopupClick = (instance, domCache, dismissWith) => {
+ const innerParams = privateProps.innerParams.get(instance);
+
+ if (innerParams.toast) {
+ handleToastClick(instance, domCache, dismissWith);
+ } else {
+ // Ignore click events that had mousedown on the popup but mouseup on the container
+ // This can happen when the user drags a slider
+ handleModalMousedown(domCache); // Ignore click events that had mousedown on the container but mouseup on the popup
+
+ handleContainerMousedown(domCache);
+ handleModalClick(instance, domCache, dismissWith);
+ }
+ };
+
+ const handleToastClick = (instance, domCache, dismissWith) => {
+ // Closing toast by internal click
+ domCache.popup.onclick = () => {
+ const innerParams = privateProps.innerParams.get(instance);
+
+ if (innerParams.showConfirmButton || innerParams.showDenyButton || innerParams.showCancelButton || innerParams.showCloseButton || innerParams.timer || innerParams.input) {
+ return;
+ }
+
+ dismissWith(DismissReason.close);
+ };
+ };
+
+ let ignoreOutsideClick = false;
+
+ const handleModalMousedown = domCache => {
+ domCache.popup.onmousedown = () => {
+ domCache.container.onmouseup = function (e) {
+ domCache.container.onmouseup = undefined; // We only check if the mouseup target is the container because usually it doesn't
+ // have any other direct children aside of the popup
+
+ if (e.target === domCache.container) {
+ ignoreOutsideClick = true;
+ }
+ };
+ };
+ };
+
+ const handleContainerMousedown = domCache => {
+ domCache.container.onmousedown = () => {
+ domCache.popup.onmouseup = function (e) {
+ domCache.popup.onmouseup = undefined; // We also need to check if the mouseup target is a child of the popup
+
+ if (e.target === domCache.popup || domCache.popup.contains(e.target)) {
+ ignoreOutsideClick = true;
+ }
+ };
+ };
+ };
+
+ const handleModalClick = (instance, domCache, dismissWith) => {
+ domCache.container.onclick = e => {
+ const innerParams = privateProps.innerParams.get(instance);
+
+ if (ignoreOutsideClick) {
+ ignoreOutsideClick = false;
+ return;
+ }
+
+ if (e.target === domCache.container && callIfFunction(innerParams.allowOutsideClick)) {
+ dismissWith(DismissReason.backdrop);
+ }
+ };
+ };
+
+ function _main(userParams, mixinParams = {}) {
+ showWarningsForParams(Object.assign({}, mixinParams, userParams));
+
+ if (globalState.currentInstance) {
+ globalState.currentInstance._destroy();
+
+ if (isModal()) {
+ unsetAriaHidden();
+ }
+ }
+
+ globalState.currentInstance = this;
+ const innerParams = prepareParams(userParams, mixinParams);
+ setParameters(innerParams);
+ Object.freeze(innerParams); // clear the previous timer
+
+ if (globalState.timeout) {
+ globalState.timeout.stop();
+ delete globalState.timeout;
+ } // clear the restore focus timeout
+
+
+ clearTimeout(globalState.restoreFocusTimeout);
+ const domCache = populateDomCache(this);
+ render(this, innerParams);
+ privateProps.innerParams.set(this, innerParams);
+ return swalPromise(this, domCache, innerParams);
+ }
+
+ const prepareParams = (userParams, mixinParams) => {
+ const templateParams = getTemplateParams(userParams);
+ const params = Object.assign({}, defaultParams, mixinParams, templateParams, userParams); // precedence is described in #2131
+
+ params.showClass = Object.assign({}, defaultParams.showClass, params.showClass);
+ params.hideClass = Object.assign({}, defaultParams.hideClass, params.hideClass);
+ return params;
+ };
+
+ const swalPromise = (instance, domCache, innerParams) => {
+ return new Promise(resolve => {
+ // functions to handle all closings/dismissals
+ const dismissWith = dismiss => {
+ instance.closePopup({
+ isDismissed: true,
+ dismiss
+ });
+ };
+
+ privateMethods.swalPromiseResolve.set(instance, resolve);
+
+ domCache.confirmButton.onclick = () => handleConfirmButtonClick(instance);
+
+ domCache.denyButton.onclick = () => handleDenyButtonClick(instance);
+
+ domCache.cancelButton.onclick = () => handleCancelButtonClick(instance, dismissWith);
+
+ domCache.closeButton.onclick = () => dismissWith(DismissReason.close);
+
+ handlePopupClick(instance, domCache, dismissWith);
+ addKeydownHandler(instance, globalState, innerParams, dismissWith);
+ handleInputOptionsAndValue(instance, innerParams);
+ openPopup(innerParams);
+ setupTimer(globalState, innerParams, dismissWith);
+ initFocus(domCache, innerParams); // Scroll container to top on open (#1247, #1946)
+
+ setTimeout(() => {
+ domCache.container.scrollTop = 0;
+ });
+ });
+ };
+
+ const populateDomCache = instance => {
+ const domCache = {
+ popup: getPopup(),
+ container: getContainer(),
+ actions: getActions(),
+ confirmButton: getConfirmButton(),
+ denyButton: getDenyButton(),
+ cancelButton: getCancelButton(),
+ loader: getLoader(),
+ closeButton: getCloseButton(),
+ validationMessage: getValidationMessage(),
+ progressSteps: getProgressSteps()
+ };
+ privateProps.domCache.set(instance, domCache);
+ return domCache;
+ };
+
+ const setupTimer = (globalState$$1, innerParams, dismissWith) => {
+ const timerProgressBar = getTimerProgressBar();
+ hide(timerProgressBar);
+
+ if (innerParams.timer) {
+ globalState$$1.timeout = new Timer(() => {
+ dismissWith('timer');
+ delete globalState$$1.timeout;
+ }, innerParams.timer);
+
+ if (innerParams.timerProgressBar) {
+ show(timerProgressBar);
+ setTimeout(() => {
+ if (globalState$$1.timeout && globalState$$1.timeout.running) {
+ // timer can be already stopped or unset at this point
+ animateTimerProgressBar(innerParams.timer);
+ }
+ });
+ }
+ }
+ };
+
+ const initFocus = (domCache, innerParams) => {
+ if (innerParams.toast) {
+ return;
+ }
+
+ if (!callIfFunction(innerParams.allowEnterKey)) {
+ return blurActiveElement();
+ }
+
+ if (!focusButton(domCache, innerParams)) {
+ setFocus(innerParams, -1, 1);
+ }
+ };
+
+ const focusButton = (domCache, innerParams) => {
+ if (innerParams.focusDeny && isVisible(domCache.denyButton)) {
+ domCache.denyButton.focus();
+ return true;
+ }
+
+ if (innerParams.focusCancel && isVisible(domCache.cancelButton)) {
+ domCache.cancelButton.focus();
+ return true;
+ }
+
+ if (innerParams.focusConfirm && isVisible(domCache.confirmButton)) {
+ domCache.confirmButton.focus();
+ return true;
+ }
+
+ return false;
+ };
+
+ const blurActiveElement = () => {
+ if (document.activeElement && typeof document.activeElement.blur === 'function') {
+ document.activeElement.blur();
+ }
+ };
+
+ /**
+ * Updates popup parameters.
+ */
+
+ function update(params) {
+ const popup = getPopup();
+ const innerParams = privateProps.innerParams.get(this);
+
+ if (!popup || hasClass(popup, innerParams.hideClass.popup)) {
+ return warn("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");
+ }
+
+ const validUpdatableParams = {}; // assign valid params from `params` to `defaults`
+
+ Object.keys(params).forEach(param => {
+ if (Swal.isUpdatableParameter(param)) {
+ validUpdatableParams[param] = params[param];
+ } else {
+ warn("Invalid parameter to update: \"".concat(param, "\". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\n\nIf you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md"));
+ }
+ });
+ const updatedParams = Object.assign({}, innerParams, validUpdatableParams);
+ render(this, updatedParams);
+ privateProps.innerParams.set(this, updatedParams);
+ Object.defineProperties(this, {
+ params: {
+ value: Object.assign({}, this.params, params),
+ writable: false,
+ enumerable: true
+ }
+ });
+ }
+
+ function _destroy() {
+ const domCache = privateProps.domCache.get(this);
+ const innerParams = privateProps.innerParams.get(this);
+
+ if (!innerParams) {
+ return; // This instance has already been destroyed
+ } // Check if there is another Swal closing
+
+
+ if (domCache.popup && globalState.swalCloseEventFinishedCallback) {
+ globalState.swalCloseEventFinishedCallback();
+ delete globalState.swalCloseEventFinishedCallback;
+ } // Check if there is a swal disposal defer timer
+
+
+ if (globalState.deferDisposalTimer) {
+ clearTimeout(globalState.deferDisposalTimer);
+ delete globalState.deferDisposalTimer;
+ }
+
+ if (typeof innerParams.didDestroy === 'function') {
+ innerParams.didDestroy();
+ }
+
+ disposeSwal(this);
+ }
+
+ const disposeSwal = instance => {
+ // Unset this.params so GC will dispose it (#1569)
+ delete instance.params; // Unset globalState props so GC will dispose globalState (#1569)
+
+ delete globalState.keydownHandler;
+ delete globalState.keydownTarget; // Unset WeakMaps so GC will be able to dispose them (#1569)
+
+ unsetWeakMaps(privateProps);
+ unsetWeakMaps(privateMethods); // Unset currentInstance
+
+ delete globalState.currentInstance;
+ };
+
+ const unsetWeakMaps = obj => {
+ for (const i in obj) {
+ obj[i] = new WeakMap();
+ }
+ };
+
+
+
+ var instanceMethods = /*#__PURE__*/Object.freeze({
+ hideLoading: hideLoading,
+ disableLoading: hideLoading,
+ getInput: getInput$1,
+ close: close,
+ closePopup: close,
+ closeModal: close,
+ closeToast: close,
+ enableButtons: enableButtons,
+ disableButtons: disableButtons,
+ enableInput: enableInput,
+ disableInput: disableInput,
+ showValidationMessage: showValidationMessage,
+ resetValidationMessage: resetValidationMessage$1,
+ getProgressSteps: getProgressSteps$1,
+ _main: _main,
+ update: update,
+ _destroy: _destroy
+ });
+
+ let currentInstance;
+
+ class SweetAlert {
+ constructor(...args) {
+ // Prevent run in Node env
+ if (typeof window === 'undefined') {
+ return;
+ }
+
+ currentInstance = this;
+ const outerParams = Object.freeze(this.constructor.argsToParams(args));
+ Object.defineProperties(this, {
+ params: {
+ value: outerParams,
+ writable: false,
+ enumerable: true,
+ configurable: true
+ }
+ });
+
+ const promise = this._main(this.params);
+
+ privateProps.promise.set(this, promise);
+ } // `catch` cannot be the name of a module export, so we define our thenable methods here instead
+
+
+ then(onFulfilled) {
+ const promise = privateProps.promise.get(this);
+ return promise.then(onFulfilled);
+ }
+
+ finally(onFinally) {
+ const promise = privateProps.promise.get(this);
+ return promise.finally(onFinally);
+ }
+
+ } // Assign instance methods from src/instanceMethods/*.js to prototype
+
+
+ Object.assign(SweetAlert.prototype, instanceMethods); // Assign static methods from src/staticMethods/*.js to constructor
+
+ Object.assign(SweetAlert, staticMethods); // Proxy to instance methods to constructor, for now, for backwards compatibility
+
+ Object.keys(instanceMethods).forEach(key => {
+ SweetAlert[key] = function (...args) {
+ if (currentInstance) {
+ return currentInstance[key](...args);
+ }
+ };
+ });
+ SweetAlert.DismissReason = DismissReason;
+ SweetAlert.version = '11.1.7';
+
+ const Swal = SweetAlert;
+ Swal.default = Swal;
+
+ return Swal;
+
+}));
+if (typeof this !== 'undefined' && this.Sweetalert2){ this.swal = this.sweetAlert = this.Swal = this.SweetAlert = this.Sweetalert2}
+
+"undefined"!=typeof document&&function(e,t){var n=e.createElement("style");if(e.getElementsByTagName("head")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,".swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4!important;grid-row:1/4!important;grid-template-columns:1fr 99fr 1fr;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:grid;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;box-sizing:border-box;grid-template-areas:\"top-start top top-end\" \"center-start center center-end\" \"bottom-start bottom-center bottom-end\";grid-template-rows:minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto);grid-template-rows:minmax(min-content,auto) minmax(min-content,auto) minmax(min-content,auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-bottom-start,.swal2-container.swal2-center-start,.swal2-container.swal2-top-start{grid-template-columns:minmax(0,1fr) auto auto}.swal2-container.swal2-bottom,.swal2-container.swal2-center,.swal2-container.swal2-top{grid-template-columns:auto minmax(0,1fr) auto}.swal2-container.swal2-bottom-end,.swal2-container.swal2-center-end,.swal2-container.swal2-top-end{grid-template-columns:auto auto minmax(0,1fr)}.swal2-container.swal2-top-start>.swal2-popup{align-self:start}.swal2-container.swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}.swal2-container.swal2-top-end>.swal2-popup,.swal2-container.swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}.swal2-container.swal2-center-left>.swal2-popup,.swal2-container.swal2-center-start>.swal2-popup{grid-row:2;align-self:center}.swal2-container.swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}.swal2-container.swal2-center-end>.swal2-popup,.swal2-container.swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}.swal2-container.swal2-bottom-left>.swal2-popup,.swal2-container.swal2-bottom-start>.swal2-popup{grid-column:1;grid-row:3;align-self:end}.swal2-container.swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}.swal2-container.swal2-bottom-end>.swal2-popup,.swal2-container.swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}.swal2-container.swal2-grow-fullscreen>.swal2-popup,.swal2-container.swal2-grow-row>.swal2-popup{grid-column:1/4;width:100%}.swal2-container.swal2-grow-column>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}.swal2-container.swal2-no-transition{transition:none!important}.swal2-popup{display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0,100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-title{position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px transparent;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7367f0;color:#fff;font-size:1em}.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px rgba(115,103,240,.5)}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#ea5455;color:#fff;font-size:1em}.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px rgba(234,84,85,.5)}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7d88;color:#fff;font-size:1em}.swal2-styled.swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,125,136,.5)}.swal2-styled.swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled:focus{outline:0}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto!important;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:2em auto 1em}.swal2-close{z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em 2em 0}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px transparent;color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em 2em 0;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-file{width:75%;margin-right:auto;margin-left:auto;background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto 0}.swal2-validation-message{align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:.25em solid transparent;border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{background-color:transparent!important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:transparent;pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}");
\ No newline at end of file
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/sweetalert2/sweetalert2.all.min.js b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/sweetalert2/sweetalert2.all.min.js
new file mode 100644
index 0000000000..7a84d6cdf6
--- /dev/null
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/sweetalert2/sweetalert2.all.min.js
@@ -0,0 +1,2 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Sweetalert2=t()}(this,function(){"use strict";const l=Object.freeze({cancel:"cancel",backdrop:"backdrop",close:"close",esc:"esc",timer:"timer"}),t="SweetAlert2:",o=e=>e.charAt(0).toUpperCase()+e.slice(1),a=e=>Array.prototype.slice.call(e),s=e=>{console.warn("".concat(t," ").concat("object"==typeof e?e.join(" "):e))},r=e=>{console.error("".concat(t," ").concat(e))},n=[],i=(e,t)=>{t='"'.concat(e,'" is deprecated and will be removed in the next major release. Please use "').concat(t,'" instead.'),n.includes(t)||(n.push(t),s(t))},c=e=>"function"==typeof e?e():e,u=e=>e&&"function"==typeof e.toPromise,d=e=>u(e)?e.toPromise():Promise.resolve(e),p=e=>e&&Promise.resolve(e)===e,m=e=>e instanceof Element||(e=>"object"==typeof e&&e.jquery)(e);var e=e=>{const t={};for(const n in e)t[e[n]]="swal2-"+e[n];return t};const h=e(["container","shown","height-auto","iosfix","popup","modal","no-backdrop","no-transition","toast","toast-shown","show","hide","close","title","html-container","actions","confirm","deny","cancel","default-outline","footer","icon","icon-content","image","input","file","range","select","radio","checkbox","label","textarea","inputerror","input-label","validation-message","progress-steps","active-progress-step","progress-step","progress-step-line","loader","loading","styled","top","top-start","top-end","top-left","top-right","center","center-start","center-end","center-left","center-right","bottom","bottom-start","bottom-end","bottom-left","bottom-right","grow-row","grow-column","grow-fullscreen","rtl","timer-progress-bar","timer-progress-bar-container","scrollbar-measure","icon-success","icon-warning","icon-info","icon-question","icon-error"]),g=e(["success","warning","info","question","error"]),b=()=>document.body.querySelector(".".concat(h.container)),f=e=>{const t=b();return t?t.querySelector(e):null},y=e=>f(".".concat(e)),v=()=>y(h.popup),w=()=>y(h.icon),C=()=>y(h.title),k=()=>y(h["html-container"]),A=()=>y(h.image),B=()=>y(h["progress-steps"]),x=()=>y(h["validation-message"]),P=()=>f(".".concat(h.actions," .").concat(h.confirm)),E=()=>f(".".concat(h.actions," .").concat(h.deny));const S=()=>f(".".concat(h.loader)),T=()=>f(".".concat(h.actions," .").concat(h.cancel)),L=()=>y(h.actions),O=()=>y(h.footer),j=()=>y(h["timer-progress-bar"]),D=()=>y(h.close),I=()=>{const e=a(v().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')).sort((e,t)=>(e=parseInt(e.getAttribute("tabindex")),(t=parseInt(t.getAttribute("tabindex")))"-1"!==e.getAttribute("tabindex"));return(t=>{const n=[];for(let e=0;eG(e))},M=()=>!H()&&!document.body.classList.contains(h["no-backdrop"]),H=()=>document.body.classList.contains(h["toast-shown"]);const q={previousBodyPadding:null},V=(t,e)=>{if(t.textContent="",e){const n=new DOMParser,o=n.parseFromString(e,"text/html");a(o.querySelector("head").childNodes).forEach(e=>{t.appendChild(e)}),a(o.querySelector("body").childNodes).forEach(e=>{t.appendChild(e)})}},N=(t,e)=>{if(!e)return!1;var n=e.split(/\s+/);for(let e=0;e{var o,i;if(o=e,i=t,a(o.classList).forEach(e=>{Object.values(h).includes(e)||Object.values(g).includes(e)||Object.values(i.showClass).includes(e)||o.classList.remove(e)}),t.customClass&&t.customClass[n]){if("string"!=typeof t.customClass[n]&&!t.customClass[n].forEach)return s("Invalid type of customClass.".concat(n,'! Expected string or iterable object, got "').concat(typeof t.customClass[n],'"'));W(e,t.customClass[n])}},F=(e,t)=>{if(!t)return null;switch(t){case"select":case"textarea":case"file":return K(e,h[t]);case"checkbox":return e.querySelector(".".concat(h.checkbox," input"));case"radio":return e.querySelector(".".concat(h.radio," input:checked"))||e.querySelector(".".concat(h.radio," input:first-child"));case"range":return e.querySelector(".".concat(h.range," input"));default:return K(e,h.input)}},R=e=>{var t;e.focus(),"file"!==e.type&&(t=e.value,e.value="",e.value=t)},z=(e,t,n)=>{e&&t&&(t="string"==typeof t?t.split(/\s+/).filter(Boolean):t).forEach(t=>{e.forEach?e.forEach(e=>{n?e.classList.add(t):e.classList.remove(t)}):n?e.classList.add(t):e.classList.remove(t)})},W=(e,t)=>{z(e,t,!0)},_=(e,t)=>{z(e,t,!1)},K=(t,n)=>{for(let e=0;e{(n=n==="".concat(parseInt(n))?parseInt(n):n)||0===parseInt(n)?e.style[t]="number"==typeof n?"".concat(n,"px"):n:e.style.removeProperty(t)},Z=(e,t="flex")=>{e.style.display=t},J=e=>{e.style.display="none"},X=(e,t,n,o)=>{const i=e.querySelector(t);i&&(i.style[n]=o)},$=(e,t,n)=>{t?Z(e,n):J(e)},G=e=>!(!e||!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)),Q=()=>!G(P())&&!G(E())&&!G(T()),ee=e=>!!(e.scrollHeight>e.clientHeight),te=e=>{const t=window.getComputedStyle(e);var n=parseFloat(t.getPropertyValue("animation-duration")||"0"),e=parseFloat(t.getPropertyValue("transition-duration")||"0");return 0{const n=j();G(n)&&(t&&(n.style.transition="none",n.style.width="100%"),setTimeout(()=>{n.style.transition="width ".concat(e/1e3,"s linear"),n.style.width="0%"},10))},oe=()=>"undefined"==typeof window||"undefined"==typeof document,ie='\n \n').replace(/(^|\n)\s*/g,""),ae=()=>{ln.isVisible()&&ln.resetValidationMessage()},se=e=>{var t=(()=>{const e=b();return!!e&&(e.remove(),_([document.documentElement,document.body],[h["no-backdrop"],h["toast-shown"],h["has-column"]]),!0)})();if(oe())r("SweetAlert2 requires document to initialize");else{const n=document.createElement("div");n.className=h.container,t&&W(n,h["no-transition"]),V(n,ie);const o="string"==typeof(t=e.target)?document.querySelector(t):t;o.appendChild(n),(e=>{const t=v();t.setAttribute("role",e.toast?"alert":"dialog"),t.setAttribute("aria-live",e.toast?"polite":"assertive"),e.toast||t.setAttribute("aria-modal","true")})(e),e=o,"rtl"===window.getComputedStyle(e).direction&&W(b(),h.rtl),(()=>{const e=v(),t=K(e,h.input),n=K(e,h.file),o=e.querySelector(".".concat(h.range," input")),i=e.querySelector(".".concat(h.range," output")),a=K(e,h.select),s=e.querySelector(".".concat(h.checkbox," input")),r=K(e,h.textarea);t.oninput=ae,n.onchange=ae,a.onchange=ae,s.onchange=ae,r.oninput=ae,o.oninput=()=>{ae(),i.value=o.value},o.onchange=()=>{ae(),o.nextSibling.value=o.value}})()}},re=(e,t)=>{e instanceof HTMLElement?t.appendChild(e):"object"==typeof e?ce(e,t):e&&V(t,e)},ce=(e,t)=>{e.jquery?le(t,e):V(t,e.toString())},le=(t,n)=>{if(t.textContent="",0 in n)for(let e=0;e in n;e++)t.appendChild(n[e].cloneNode(!0));else t.appendChild(n.cloneNode(!0))},ue=(()=>{if(oe())return!1;var e=document.createElement("div"),t={WebkitAnimation:"webkitAnimationEnd",OAnimation:"oAnimationEnd oanimationend",animation:"animationend"};for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&void 0!==e.style[n])return t[n];return!1})(),de=(e,t)=>{const n=L();var o=S(),i=P(),a=E(),s=T();(t.showConfirmButton||t.showDenyButton||t.showCancelButton?Z:J)(n),U(n,t,"actions"),pe(i,"confirm",t),pe(a,"deny",t),pe(s,"cancel",t),function(e,t,n,o){if(!o.buttonsStyling)return _([e,t,n],h.styled);W([e,t,n],h.styled),o.confirmButtonColor&&(e.style.backgroundColor=o.confirmButtonColor,W(e,h["default-outline"]));o.denyButtonColor&&(t.style.backgroundColor=o.denyButtonColor,W(t,h["default-outline"]));o.cancelButtonColor&&(n.style.backgroundColor=o.cancelButtonColor,W(n,h["default-outline"]))}(i,a,s,t),t.reverseButtons&&(n.insertBefore(s,o),n.insertBefore(a,o),n.insertBefore(i,o)),V(o,t.loaderHtml),U(o,t,"loader")};function pe(e,t,n){$(e,n["show".concat(o(t),"Button")],"inline-block"),V(e,n["".concat(t,"ButtonText")]),e.setAttribute("aria-label",n["".concat(t,"ButtonAriaLabel")]),e.className=h[t],U(e,n,"".concat(t,"Button")),W(e,n["".concat(t,"ButtonClass")])}const me=(e,t)=>{var n,o,i=b();i&&(o=i,"string"==typeof(n=t.backdrop)?o.style.background=n:n||W([document.documentElement,document.body],h["no-backdrop"]),o=i,(n=t.position)in h?W(o,h[n]):(s('The "position" parameter is not valid, defaulting to "center"'),W(o,h.center)),n=i,!(o=t.grow)||"string"!=typeof o||(o="grow-".concat(o))in h&&W(n,h[o]),U(i,t,"container"))};var he={promise:new WeakMap,innerParams:new WeakMap,domCache:new WeakMap};const ge=["input","file","range","select","radio","checkbox","textarea"],be=e=>{if(!ke[e.input])return r('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'.concat(e.input,'"'));var t=Ce(e.input);const n=ke[e.input](t,e);Z(n),setTimeout(()=>{R(n)})},fe=(e,t)=>{const n=F(v(),e);if(n){(t=>{for(let e=0;e{var t=Ce(e.input);e.customClass&&W(t,e.customClass.input)},ve=(e,t)=>{e.placeholder&&!t.inputPlaceholder||(e.placeholder=t.inputPlaceholder)},we=(e,t,n)=>{if(n.inputLabel){e.id=h.input;const i=document.createElement("label");var o=h["input-label"];i.setAttribute("for",e.id),i.className=o,W(i,n.customClass.inputLabel),i.innerText=n.inputLabel,t.insertAdjacentElement("beforebegin",i)}},Ce=e=>{e=h[e]||h.input;return K(v(),e)},ke={};ke.text=ke.email=ke.password=ke.number=ke.tel=ke.url=(e,t)=>("string"==typeof t.inputValue||"number"==typeof t.inputValue?e.value=t.inputValue:p(t.inputValue)||s('Unexpected type of inputValue! Expected "string", "number" or "Promise", got "'.concat(typeof t.inputValue,'"')),we(e,e,t),ve(e,t),e.type=t.input,e),ke.file=(e,t)=>(we(e,e,t),ve(e,t),e),ke.range=(e,t)=>{const n=e.querySelector("input"),o=e.querySelector("output");return n.value=t.inputValue,n.type=t.input,o.value=t.inputValue,we(n,e,t),e},ke.select=(e,t)=>{if(e.textContent="",t.inputPlaceholder){const n=document.createElement("option");V(n,t.inputPlaceholder),n.value="",n.disabled=!0,n.selected=!0,e.appendChild(n)}return we(e,e,t),e},ke.radio=e=>(e.textContent="",e),ke.checkbox=(e,t)=>{const n=F(v(),"checkbox");n.value=1,n.id=h.checkbox,n.checked=Boolean(t.inputValue);var o=e.querySelector("span");return V(o,t.inputPlaceholder),e},ke.textarea=(n,e)=>{n.value=e.inputValue,ve(n,e),we(n,n,e);return setTimeout(()=>{if("MutationObserver"in window){const t=parseInt(window.getComputedStyle(v()).width);new MutationObserver(()=>{var e,e=n.offsetWidth+(e=n,parseInt(window.getComputedStyle(e).marginLeft)+parseInt(window.getComputedStyle(e).marginRight));e>t?v().style.width="".concat(e,"px"):v().style.width=null}).observe(n,{attributes:!0,attributeFilter:["style"]})}}),n};const Ae=(e,t)=>{const n=k();U(n,t,"htmlContainer"),t.html?(re(t.html,n),Z(n,"block")):t.text?(n.textContent=t.text,Z(n,"block")):J(n),((e,o)=>{const i=v();e=he.innerParams.get(e);const a=!e||o.input!==e.input;ge.forEach(e=>{var t=h[e];const n=K(i,t);fe(e,o.inputAttributes),n.className=t,a&&J(n)}),o.input&&(a&&be(o),ye(o))})(e,t)},Be=(e,t)=>{for(const n in g)t.icon!==n&&_(e,g[n]);W(e,g[t.icon]),Ee(e,t),xe(),U(e,t,"icon")},xe=()=>{const e=v();var t=window.getComputedStyle(e).getPropertyValue("background-color");const n=e.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix");for(let e=0;e{var n;e.textContent="",t.iconHtml?V(e,Se(t.iconHtml)):"success"===t.icon?V(e,'\n
\n \n
\n
\n '):"error"===t.icon?V(e,'\n \n \n \n \n '):(n={question:"?",warning:"!",info:"i"},V(e,Se(n[t.icon])))},Ee=(e,t)=>{if(t.iconColor){e.style.color=t.iconColor,e.style.borderColor=t.iconColor;for(const n of[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"])X(e,n,"backgroundColor",t.iconColor);X(e,".swal2-success-ring","borderColor",t.iconColor)}},Se=e=>'').concat(e,"
"),Te=(e,o)=>{const i=B();if(!o.progressSteps||0===o.progressSteps.length)return J(i);Z(i),i.textContent="",o.currentProgressStep>=o.progressSteps.length&&s("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),o.progressSteps.forEach((e,t)=>{var n,e=(n=e,e=document.createElement("li"),W(e,h["progress-step"]),V(e,n),e);i.appendChild(e),t===o.currentProgressStep&&W(e,h["active-progress-step"]),t!==o.progressSteps.length-1&&(t=(e=>{const t=document.createElement("li");return W(t,h["progress-step-line"]),e.progressStepsDistance&&(t.style.width=e.progressStepsDistance),t})(o),i.appendChild(t))})},Le=(e,t)=>{e.className="".concat(h.popup," ").concat(G(e)?t.showClass.popup:""),t.toast?(W([document.documentElement,document.body],h["toast-shown"]),W(e,h.toast)):W(e,h.modal),U(e,t,"popup"),"string"==typeof t.customClass&&W(e,t.customClass),t.icon&&W(e,h["icon-".concat(t.icon)])},Oe=(e,t)=>{var n,o,i;(e=>{var t=b();const n=v();e.toast?(Y(t,"width",e.width),n.style.width="100%",n.insertBefore(S(),w())):Y(n,"width",e.width),Y(n,"padding",e.padding),e.background&&(n.style.background=e.background),J(x()),Le(n,e)})(t),me(0,t),Te(0,t),i=e,n=t,o=he.innerParams.get(i),i=w(),o&&n.icon===o.icon?(Pe(i,n),Be(i,n)):n.icon||n.iconHtml?n.icon&&-1===Object.keys(g).indexOf(n.icon)?(r('Unknown icon! Expected "success", "error", "warning", "info" or "question", got "'.concat(n.icon,'"')),J(i)):(Z(i),Pe(i,n),Be(i,n),W(i,n.showClass.icon)):J(i),(e=>{const t=A();if(!e.imageUrl)return J(t);Z(t,""),t.setAttribute("src",e.imageUrl),t.setAttribute("alt",e.imageAlt),Y(t,"width",e.imageWidth),Y(t,"height",e.imageHeight),t.className=h.image,U(t,e,"image")})(t),(e=>{const t=C();$(t,e.title||e.titleText,"block"),e.title&&re(e.title,t),e.titleText&&(t.innerText=e.titleText),U(t,e,"title")})(t),(e=>{const t=D();V(t,e.closeButtonHtml),U(t,e,"closeButton"),$(t,e.showCloseButton),t.setAttribute("aria-label",e.closeButtonAriaLabel)})(t),Ae(e,t),de(0,t),i=t,e=O(),$(e,i.footer),i.footer&&re(i.footer,e),U(e,i,"footer"),"function"==typeof t.didRender&&t.didRender(v())};const je=()=>P()&&P().click();const De=e=>{let t=v();t||ln.fire(),t=v();var n=S();H()?J(w()):Ie(t,e),Z(n),t.setAttribute("data-loading",!0),t.setAttribute("aria-busy",!0),t.focus()},Ie=(e,t)=>{var n=L();const o=S();!t&&G(P())&&(t=P()),Z(n),t&&(J(t),o.setAttribute("data-button-to-replace",t.className)),o.parentNode.insertBefore(o,t),W([e,n],h.loading)},Me={},He=o=>new Promise(e=>{if(!o)return e();var t=window.scrollX,n=window.scrollY;Me.restoreFocusTimeout=setTimeout(()=>{Me.previousActiveElement&&Me.previousActiveElement.focus?(Me.previousActiveElement.focus(),Me.previousActiveElement=null):document.body&&document.body.focus(),e()},100),window.scrollTo(t,n)});const qe=()=>{if(Me.timeout)return(()=>{const e=j();var t=parseInt(window.getComputedStyle(e).width);e.style.removeProperty("transition"),e.style.width="100%";var n=parseInt(window.getComputedStyle(e).width),n=parseInt(t/n*100);e.style.removeProperty("transition"),e.style.width="".concat(n,"%")})(),Me.timeout.stop()},Ve=()=>{if(Me.timeout){var e=Me.timeout.start();return ne(e),e}};let Ne=!1;const Ue={};const Fe=t=>{for(let e=t.target;e&&e!==document;e=e.parentNode)for(const o in Ue){var n=e.getAttribute(o);if(n)return void Ue[o].fire({template:n})}},Re={title:"",titleText:"",text:"",html:"",footer:"",icon:void 0,iconColor:void 0,iconHtml:void 0,template:void 0,toast:!1,showClass:{popup:"swal2-show",backdrop:"swal2-backdrop-show",icon:"swal2-icon-show"},hideClass:{popup:"swal2-hide",backdrop:"swal2-backdrop-hide",icon:"swal2-icon-hide"},customClass:{},target:"body",backdrop:!0,heightAuto:!0,allowOutsideClick:!0,allowEscapeKey:!0,allowEnterKey:!0,stopKeydownPropagation:!0,keydownListenerCapture:!1,showConfirmButton:!0,showDenyButton:!1,showCancelButton:!1,preConfirm:void 0,preDeny:void 0,confirmButtonText:"OK",confirmButtonAriaLabel:"",confirmButtonColor:void 0,denyButtonText:"No",denyButtonAriaLabel:"",denyButtonColor:void 0,cancelButtonText:"Cancel",cancelButtonAriaLabel:"",cancelButtonColor:void 0,buttonsStyling:!0,reverseButtons:!1,focusConfirm:!0,focusDeny:!1,focusCancel:!1,returnFocus:!0,showCloseButton:!1,closeButtonHtml:"×",closeButtonAriaLabel:"Close this dialog",loaderHtml:"",showLoaderOnConfirm:!1,showLoaderOnDeny:!1,imageUrl:void 0,imageWidth:void 0,imageHeight:void 0,imageAlt:"",timer:void 0,timerProgressBar:!1,width:void 0,padding:void 0,background:void 0,input:void 0,inputPlaceholder:"",inputLabel:"",inputValue:"",inputOptions:{},inputAutoTrim:!0,inputAttributes:{},inputValidator:void 0,returnInputValueOnDeny:!1,validationMessage:void 0,grow:!1,position:"center",progressSteps:[],currentProgressStep:void 0,progressStepsDistance:void 0,willOpen:void 0,didOpen:void 0,didRender:void 0,willClose:void 0,didClose:void 0,didDestroy:void 0,scrollbarPadding:!0},ze=["allowEscapeKey","allowOutsideClick","background","buttonsStyling","cancelButtonAriaLabel","cancelButtonColor","cancelButtonText","closeButtonAriaLabel","closeButtonHtml","confirmButtonAriaLabel","confirmButtonColor","confirmButtonText","currentProgressStep","customClass","denyButtonAriaLabel","denyButtonColor","denyButtonText","didClose","didDestroy","footer","hideClass","html","icon","iconColor","iconHtml","imageAlt","imageHeight","imageUrl","imageWidth","preConfirm","preDeny","progressSteps","returnFocus","reverseButtons","showCancelButton","showCloseButton","showConfirmButton","showDenyButton","text","title","titleText","willClose"],We={},_e=["allowOutsideClick","allowEnterKey","backdrop","focusConfirm","focusDeny","focusCancel","returnFocus","heightAuto","keydownListenerCapture"],Ke=e=>Object.prototype.hasOwnProperty.call(Re,e);const Ye=e=>We[e],Ze=e=>{!e.backdrop&&e.allowOutsideClick&&s('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`');for(const o in e)n=o,Ke(n)||s('Unknown parameter "'.concat(n,'"')),e.toast&&(t=o,_e.includes(t)&&s('The parameter "'.concat(t,'" is incompatible with toasts'))),t=o,Ye(t)&&i(t,Ye(t));var t,n};var Je=Object.freeze({isValidParameter:Ke,isUpdatableParameter:e=>-1!==ze.indexOf(e),isDeprecatedParameter:Ye,argsToParams:n=>{const o={};return"object"!=typeof n[0]||m(n[0])?["title","html","icon"].forEach((e,t)=>{t=n[t];"string"==typeof t||m(t)?o[e]=t:void 0!==t&&r("Unexpected type of ".concat(e,'! Expected "string" or "Element", got ').concat(typeof t))}):Object.assign(o,n[0]),o},isVisible:()=>G(v()),clickConfirm:je,clickDeny:()=>E()&&E().click(),clickCancel:()=>T()&&T().click(),getContainer:b,getPopup:v,getTitle:C,getHtmlContainer:k,getImage:A,getIcon:w,getInputLabel:()=>y(h["input-label"]),getCloseButton:D,getActions:L,getConfirmButton:P,getDenyButton:E,getCancelButton:T,getLoader:S,getFooter:O,getTimerProgressBar:j,getFocusableElements:I,getValidationMessage:x,isLoading:()=>v().hasAttribute("data-loading"),fire:function(...e){return new this(...e)},mixin:function(n){class e extends this{_main(e,t){return super._main(e,Object.assign({},n,t))}}return e},showLoading:De,enableLoading:De,getTimerLeft:()=>Me.timeout&&Me.timeout.getTimerLeft(),stopTimer:qe,resumeTimer:Ve,toggleTimer:()=>{var e=Me.timeout;return e&&(e.running?qe:Ve)()},increaseTimer:e=>{if(Me.timeout){e=Me.timeout.increase(e);return ne(e,!0),e}},isTimerRunning:()=>Me.timeout&&Me.timeout.isRunning(),bindClickHandler:function(e="data-swal-template"){Ue[e]=this,Ne||(document.body.addEventListener("click",Fe),Ne=!0)}});function Xe(){var e=he.innerParams.get(this);if(e){const t=he.domCache.get(this);J(t.loader),H()?e.icon&&Z(w()):(e=>{const t=e.popup.getElementsByClassName(e.loader.getAttribute("data-button-to-replace"));if(t.length)Z(t[0],"inline-block");else if(Q())J(e.actions)})(t),_([t.popup,t.actions],h.loading),t.popup.removeAttribute("aria-busy"),t.popup.removeAttribute("data-loading"),t.confirmButton.disabled=!1,t.denyButton.disabled=!1,t.cancelButton.disabled=!1}}const $e=()=>{null===q.previousBodyPadding&&document.body.scrollHeight>window.innerHeight&&(q.previousBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight="".concat(q.previousBodyPadding+(()=>{const e=document.createElement("div");e.className=h["scrollbar-measure"],document.body.appendChild(e);var t=e.getBoundingClientRect().width-e.clientWidth;return document.body.removeChild(e),t})(),"px"))},Ge=()=>{navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i)||v().scrollHeight>window.innerHeight-44&&(b().style.paddingBottom="".concat(44,"px"))},Qe=()=>{const e=b();let t;e.ontouchstart=e=>{t=et(e)},e.ontouchmove=e=>{t&&(e.preventDefault(),e.stopPropagation())}},et=e=>{var t=e.target,n=b();return!tt(e)&&!nt(e)&&(t===n||!(ee(n)||"INPUT"===t.tagName||"TEXTAREA"===t.tagName||ee(k())&&k().contains(t)))},tt=e=>e.touches&&e.touches.length&&"stylus"===e.touches[0].touchType,nt=e=>e.touches&&1{const e=a(document.body.children);e.forEach(e=>{e.hasAttribute("data-previous-aria-hidden")?(e.setAttribute("aria-hidden",e.getAttribute("data-previous-aria-hidden")),e.removeAttribute("data-previous-aria-hidden")):e.removeAttribute("aria-hidden")})};var it={swalPromiseResolve:new WeakMap};function at(e,t,n,o){H()?ct(e,o):(He(n).then(()=>ct(e,o)),Me.keydownTarget.removeEventListener("keydown",Me.keydownHandler,{capture:Me.keydownListenerCapture}),Me.keydownHandlerAdded=!1),/^((?!chrome|android).)*safari/i.test(navigator.userAgent)?(t.setAttribute("style","display:none !important"),t.removeAttribute("class"),t.innerHTML=""):t.remove(),M()&&(null!==q.previousBodyPadding&&(document.body.style.paddingRight="".concat(q.previousBodyPadding,"px"),q.previousBodyPadding=null),N(document.body,h.iosfix)&&(t=parseInt(document.body.style.top,10),_(document.body,h.iosfix),document.body.style.top="",document.body.scrollTop=-1*t),ot()),_([document.documentElement,document.body],[h.shown,h["height-auto"],h["no-backdrop"],h["toast-shown"]])}function st(e){var t=v();if(t){e=void 0!==(o=e)?Object.assign({isConfirmed:!1,isDenied:!1,isDismissed:!1},o):{isConfirmed:!1,isDenied:!1,isDismissed:!0};var n=he.innerParams.get(this);if(n&&!N(t,n.hideClass.popup)){const i=it.swalPromiseResolve.get(this);_(t,n.showClass.popup),W(t,n.hideClass.popup);var o=b();_(o,n.showClass.backdrop),W(o,n.hideClass.backdrop),((e,t,n)=>{const o=b(),i=ue&&te(t);if(typeof n.willClose==="function")n.willClose(t);if(i)rt(e,t,o,n.returnFocus,n.didClose);else at(e,o,n.returnFocus,n.didClose)})(this,t,n),i(e)}}}const rt=(e,t,n,o,i)=>{Me.swalCloseEventFinishedCallback=at.bind(null,e,n,o,i),t.addEventListener(ue,function(e){e.target===t&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback)})},ct=(e,t)=>{setTimeout(()=>{"function"==typeof t&&t.bind(e.params)(),e._destroy()})};function lt(e,t,n){const o=he.domCache.get(e);t.forEach(e=>{o[e].disabled=n})}function ut(e,t){if(!e)return!1;if("radio"===e.type){const n=e.parentNode.parentNode,o=n.querySelectorAll("input");for(let e=0;e/^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid email address"),url:(e,t)=>/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid URL")};function mt(e){var t,n;(t=e).inputValidator||Object.keys(pt).forEach(e=>{t.input===e&&(t.inputValidator=pt[e])}),e.showLoaderOnConfirm&&!e.preConfirm&&s("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request"),(n=e).target&&("string"!=typeof n.target||document.querySelector(n.target))&&("string"==typeof n.target||n.target.appendChild)||(s('Target parameter is not valid, defaulting to "body"'),n.target="body"),"string"==typeof e.title&&(e.title=e.title.split("\n").join(" ")),se(e)}const ht=["swal-title","swal-html","swal-footer"],gt=e=>{e="string"==typeof e.template?document.querySelector(e.template):e.template;if(!e)return{};e=e.content;return kt(e),Object.assign(bt(e),ft(e),yt(e),vt(e),wt(e),Ct(e,ht))},bt=e=>{const o={};return a(e.querySelectorAll("swal-param")).forEach(e=>{At(e,["name","value"]);var t=e.getAttribute("name");let n=e.getAttribute("value");"boolean"==typeof Re[t]&&"false"===n&&(n=!1),"object"==typeof Re[t]&&(n=JSON.parse(n)),o[t]=n}),o},ft=e=>{const n={};return a(e.querySelectorAll("swal-button")).forEach(e=>{At(e,["type","color","aria-label"]);var t=e.getAttribute("type");n["".concat(t,"ButtonText")]=e.innerHTML,n["show".concat(o(t),"Button")]=!0,e.hasAttribute("color")&&(n["".concat(t,"ButtonColor")]=e.getAttribute("color")),e.hasAttribute("aria-label")&&(n["".concat(t,"ButtonAriaLabel")]=e.getAttribute("aria-label"))}),n},yt=e=>{const t={},n=e.querySelector("swal-image");return n&&(At(n,["src","width","height","alt"]),n.hasAttribute("src")&&(t.imageUrl=n.getAttribute("src")),n.hasAttribute("width")&&(t.imageWidth=n.getAttribute("width")),n.hasAttribute("height")&&(t.imageHeight=n.getAttribute("height")),n.hasAttribute("alt")&&(t.imageAlt=n.getAttribute("alt"))),t},vt=e=>{const t={},n=e.querySelector("swal-icon");return n&&(At(n,["type","color"]),n.hasAttribute("type")&&(t.icon=n.getAttribute("type")),n.hasAttribute("color")&&(t.iconColor=n.getAttribute("color")),t.iconHtml=n.innerHTML),t},wt=e=>{const n={},t=e.querySelector("swal-input");t&&(At(t,["type","label","placeholder","value"]),n.input=t.getAttribute("type")||"text",t.hasAttribute("label")&&(n.inputLabel=t.getAttribute("label")),t.hasAttribute("placeholder")&&(n.inputPlaceholder=t.getAttribute("placeholder")),t.hasAttribute("value")&&(n.inputValue=t.getAttribute("value")));e=e.querySelectorAll("swal-input-option");return e.length&&(n.inputOptions={},a(e).forEach(e=>{At(e,["value"]);var t=e.getAttribute("value"),e=e.innerHTML;n.inputOptions[t]=e})),n},Ct=(e,t)=>{const n={};for(const o in t){const i=t[o],a=e.querySelector(i);a&&(At(a,[]),n[i.replace(/^swal-/,"")]=a.innerHTML.trim())}return n},kt=e=>{const t=ht.concat(["swal-param","swal-button","swal-image","swal-icon","swal-input","swal-input-option"]);a(e.children).forEach(e=>{e=e.tagName.toLowerCase();-1===t.indexOf(e)&&s("Unrecognized element <".concat(e,">"))})},At=(t,n)=>{a(t.attributes).forEach(e=>{-1===n.indexOf(e.name)&&s(['Unrecognized attribute "'.concat(e.name,'" on <').concat(t.tagName.toLowerCase(),">."),"".concat(n.length?"Allowed attributes are: ".concat(n.join(", ")):"To set the value, use HTML within the element.")])})},Bt=e=>{const t=b(),n=v();"function"==typeof e.willOpen&&e.willOpen(n);var o=window.getComputedStyle(document.body).overflowY;St(t,n,e),setTimeout(()=>{Pt(t,n)},10),M()&&(Et(t,e.scrollbarPadding,o),(()=>{const e=a(document.body.children);e.forEach(e=>{e===b()||e.contains(b())||(e.hasAttribute("aria-hidden")&&e.setAttribute("data-previous-aria-hidden",e.getAttribute("aria-hidden")),e.setAttribute("aria-hidden","true"))})})()),H()||Me.previousActiveElement||(Me.previousActiveElement=document.activeElement),"function"==typeof e.didOpen&&setTimeout(()=>e.didOpen(n)),_(t,h["no-transition"])},xt=e=>{const t=v();if(e.target===t){const n=b();t.removeEventListener(ue,xt),n.style.overflowY="auto"}},Pt=(e,t)=>{ue&&te(t)?(e.style.overflowY="hidden",t.addEventListener(ue,xt)):e.style.overflowY="auto"},Et=(e,t,n)=>{var o;(/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream||"MacIntel"===navigator.platform&&1{e.scrollTop=0})},St=(e,t,n)=>{W(e,n.showClass.backdrop),t.style.setProperty("opacity","0","important"),Z(t,"grid"),setTimeout(()=>{W(t,n.showClass.popup),t.style.removeProperty("opacity")},10),W([document.documentElement,document.body],h.shown),n.heightAuto&&n.backdrop&&!n.toast&&W([document.documentElement,document.body],h["height-auto"])},Tt=e=>e.checked?1:0,Lt=e=>e.checked?e.value:null,Ot=e=>e.files.length?null!==e.getAttribute("multiple")?e.files:e.files[0]:null,jt=(t,n)=>{const o=v(),i=e=>It[n.input](o,Mt(e),n);u(n.inputOptions)||p(n.inputOptions)?(De(P()),d(n.inputOptions).then(e=>{t.hideLoading(),i(e)})):"object"==typeof n.inputOptions?i(n.inputOptions):r("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(typeof n.inputOptions))},Dt=(t,n)=>{const o=t.getInput();J(o),d(n.inputValue).then(e=>{o.value="number"===n.input?parseFloat(e)||0:"".concat(e),Z(o),o.focus(),t.hideLoading()}).catch(e=>{r("Error in inputValue promise: ".concat(e)),o.value="",Z(o),o.focus(),t.hideLoading()})},It={select:(e,t,i)=>{const a=K(e,h.select),s=(e,t,n)=>{const o=document.createElement("option");o.value=n,V(o,t),o.selected=Ht(n,i.inputValue),e.appendChild(o)};t.forEach(e=>{var t=e[0];const n=e[1];if(Array.isArray(n)){const o=document.createElement("optgroup");o.label=t,o.disabled=!1,a.appendChild(o),n.forEach(e=>s(o,e[1],e[0]))}else s(a,n,t)}),a.focus()},radio:(e,t,a)=>{const s=K(e,h.radio);t.forEach(e=>{var t=e[0],e=e[1];const n=document.createElement("input"),o=document.createElement("label");n.type="radio",n.name=h.radio,n.value=t,Ht(t,a.inputValue)&&(n.checked=!0);const i=document.createElement("span");V(i,e),i.className=h.label,o.appendChild(n),o.appendChild(i),s.appendChild(o)});const n=s.querySelectorAll("input");n.length&&n[0].focus()}},Mt=n=>{const o=[];return"undefined"!=typeof Map&&n instanceof Map?n.forEach((e,t)=>{let n=e;"object"==typeof n&&(n=Mt(n)),o.push([t,n])}):Object.keys(n).forEach(e=>{let t=n[e];"object"==typeof t&&(t=Mt(t)),o.push([e,t])}),o},Ht=(e,t)=>t&&t.toString()===e.toString(),qt=(e,t)=>{var n=he.innerParams.get(e),o=((e,t)=>{const n=e.getInput();if(!n)return null;switch(t.input){case"checkbox":return Tt(n);case"radio":return Lt(n);case"file":return Ot(n);default:return t.inputAutoTrim?n.value.trim():n.value}})(e,n);n.inputValidator?Vt(e,o,t):e.getInput().checkValidity()?("deny"===t?Nt:Ft)(e,o):(e.enableButtons(),e.showValidationMessage(n.validationMessage))},Vt=(t,n,o)=>{const e=he.innerParams.get(t);t.disableInput();const i=Promise.resolve().then(()=>d(e.inputValidator(n,e.validationMessage)));i.then(e=>{t.enableButtons(),t.enableInput(),e?t.showValidationMessage(e):("deny"===o?Nt:Ft)(t,n)})},Nt=(t,n)=>{const e=he.innerParams.get(t||void 0);if(e.showLoaderOnDeny&&De(E()),e.preDeny){const o=Promise.resolve().then(()=>d(e.preDeny(n,e.validationMessage)));o.then(e=>{!1===e?t.hideLoading():t.closePopup({isDenied:!0,value:void 0===e?n:e})})}else t.closePopup({isDenied:!0,value:n})},Ut=(e,t)=>{e.closePopup({isConfirmed:!0,value:t})},Ft=(t,n)=>{const e=he.innerParams.get(t||void 0);if(e.showLoaderOnConfirm&&De(),e.preConfirm){t.resetValidationMessage();const o=Promise.resolve().then(()=>d(e.preConfirm(n,e.validationMessage)));o.then(e=>{G(x())||!1===e?t.hideLoading():Ut(t,void 0===e?n:e)})}else Ut(t,n)},Rt=(e,t,n)=>{const o=I();if(o.length)return(t+=n)===o.length?t=0:-1===t&&(t=o.length-1),o[t].focus();v().focus()},zt=["ArrowRight","ArrowDown"],Wt=["ArrowLeft","ArrowUp"],_t=(e,t,n)=>{var o=he.innerParams.get(e);o&&(o.stopKeydownPropagation&&t.stopPropagation(),"Enter"===t.key?Kt(e,t,o):"Tab"===t.key?Yt(t,o):[...zt,...Wt].includes(t.key)?Zt(t.key):"Escape"===t.key&&Jt(t,o,n))},Kt=(e,t,n)=>{t.isComposing||t.target&&e.getInput()&&t.target.outerHTML===e.getInput().outerHTML&&(["textarea","file"].includes(n.input)||(je(),t.preventDefault()))},Yt=(e,t)=>{var n=e.target,o=I();let i=-1;for(let e=0;e{const t=P(),n=E(),o=T();if([t,n,o].includes(document.activeElement)){e=zt.includes(e)?"nextElementSibling":"previousElementSibling";const i=document.activeElement[e];i&&i.focus()}},Jt=(e,t,n)=>{c(t.allowEscapeKey)&&(e.preventDefault(),n(l.esc))},Xt=(t,e,n)=>{e.popup.onclick=()=>{var e=he.innerParams.get(t);e.showConfirmButton||e.showDenyButton||e.showCancelButton||e.showCloseButton||e.timer||e.input||n(l.close)}};let $t=!1;const Gt=t=>{t.popup.onmousedown=()=>{t.container.onmouseup=function(e){t.container.onmouseup=void 0,e.target===t.container&&($t=!0)}}},Qt=t=>{t.container.onmousedown=()=>{t.popup.onmouseup=function(e){t.popup.onmouseup=void 0,e.target!==t.popup&&!t.popup.contains(e.target)||($t=!0)}}},en=(n,o,i)=>{o.container.onclick=e=>{var t=he.innerParams.get(n);$t?$t=!1:e.target===o.container&&c(t.allowOutsideClick)&&i(l.backdrop)}};const tn=(e,t,n)=>{var o=j();J(o),t.timer&&(e.timeout=new dt(()=>{n("timer"),delete e.timeout},t.timer),t.timerProgressBar&&(Z(o),setTimeout(()=>{e.timeout&&e.timeout.running&&ne(t.timer)})))},nn=(e,t)=>{if(!t.toast)return c(t.allowEnterKey)?void(on(e,t)||Rt(0,-1,1)):an()},on=(e,t)=>t.focusDeny&&G(e.denyButton)?(e.denyButton.focus(),!0):t.focusCancel&&G(e.cancelButton)?(e.cancelButton.focus(),!0):!(!t.focusConfirm||!G(e.confirmButton))&&(e.confirmButton.focus(),!0),an=()=>{document.activeElement&&"function"==typeof document.activeElement.blur&&document.activeElement.blur()};const sn=e=>{for(const t in e)e[t]=new WeakMap};e=Object.freeze({hideLoading:Xe,disableLoading:Xe,getInput:function(e){var t=he.innerParams.get(e||this);return(e=he.domCache.get(e||this))?F(e.popup,t.input):null},close:st,closePopup:st,closeModal:st,closeToast:st,enableButtons:function(){lt(this,["confirmButton","denyButton","cancelButton"],!1)},disableButtons:function(){lt(this,["confirmButton","denyButton","cancelButton"],!0)},enableInput:function(){return ut(this.getInput(),!1)},disableInput:function(){return ut(this.getInput(),!0)},showValidationMessage:function(e){const t=he.domCache.get(this);var n=he.innerParams.get(this);V(t.validationMessage,e),t.validationMessage.className=h["validation-message"],n.customClass&&n.customClass.validationMessage&&W(t.validationMessage,n.customClass.validationMessage),Z(t.validationMessage);const o=this.getInput();o&&(o.setAttribute("aria-invalid",!0),o.setAttribute("aria-describedby",h["validation-message"]),R(o),W(o,h.inputerror))},resetValidationMessage:function(){var e=he.domCache.get(this);e.validationMessage&&J(e.validationMessage);const t=this.getInput();t&&(t.removeAttribute("aria-invalid"),t.removeAttribute("aria-describedby"),_(t,h.inputerror))},getProgressSteps:function(){return he.domCache.get(this).progressSteps},_main:function(e,t={}){Ze(Object.assign({},t,e)),Me.currentInstance&&(Me.currentInstance._destroy(),M()&&ot()),Me.currentInstance=this,mt(e=((e,t)=>{const n=gt(e),o=Object.assign({},Re,t,n,e);return o.showClass=Object.assign({},Re.showClass,o.showClass),o.hideClass=Object.assign({},Re.hideClass,o.hideClass),o})(e,t)),Object.freeze(e),Me.timeout&&(Me.timeout.stop(),delete Me.timeout),clearTimeout(Me.restoreFocusTimeout);var s,r,c,t=(e=>{const t={popup:v(),container:b(),actions:L(),confirmButton:P(),denyButton:E(),cancelButton:T(),loader:S(),closeButton:D(),validationMessage:x(),progressSteps:B()};return he.domCache.set(e,t),t})(this);return Oe(this,e),he.innerParams.set(this,e),s=this,r=t,c=e,new Promise(e=>{const t=e=>{s.closePopup({isDismissed:!0,dismiss:e})};var n,o,i,a;it.swalPromiseResolve.set(s,e),r.confirmButton.onclick=()=>(e=>{var t=he.innerParams.get(e);e.disableButtons(),t.input?qt(e,"confirm"):Ft(e,!0)})(s),r.denyButton.onclick=()=>(e=>{var t=he.innerParams.get(e);e.disableButtons(),t.returnInputValueOnDeny?qt(e,"deny"):Nt(e,!1)})(s),r.cancelButton.onclick=()=>((e,t)=>{e.disableButtons(),t(l.cancel)})(s,t),r.closeButton.onclick=()=>t(l.close),n=s,a=r,e=t,he.innerParams.get(n).toast?Xt(n,a,e):(Gt(a),Qt(a),en(n,a,e)),o=s,a=Me,e=c,i=t,a.keydownTarget&&a.keydownHandlerAdded&&(a.keydownTarget.removeEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!1),e.toast||(a.keydownHandler=e=>_t(o,e,i),a.keydownTarget=e.keydownListenerCapture?window:v(),a.keydownListenerCapture=e.keydownListenerCapture,a.keydownTarget.addEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!0),e=s,"select"===(a=c).input||"radio"===a.input?jt(e,a):["text","email","number","tel","textarea"].includes(a.input)&&(u(a.inputValue)||p(a.inputValue))&&(De(P()),Dt(e,a)),Bt(c),tn(Me,c,t),nn(r,c),setTimeout(()=>{r.container.scrollTop=0})})},update:function(t){var e=v(),n=he.innerParams.get(this);if(!e||N(e,n.hideClass.popup))return s("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");const o={};Object.keys(t).forEach(e=>{ln.isUpdatableParameter(e)?o[e]=t[e]:s('Invalid parameter to update: "'.concat(e,'". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\n\nIf you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md'))}),n=Object.assign({},n,o),Oe(this,n),he.innerParams.set(this,n),Object.defineProperties(this,{params:{value:Object.assign({},this.params,t),writable:!1,enumerable:!0}})},_destroy:function(){var e=he.domCache.get(this);const t=he.innerParams.get(this);t&&(e.popup&&Me.swalCloseEventFinishedCallback&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback),Me.deferDisposalTimer&&(clearTimeout(Me.deferDisposalTimer),delete Me.deferDisposalTimer),"function"==typeof t.didDestroy&&t.didDestroy(),delete this.params,delete Me.keydownHandler,delete Me.keydownTarget,sn(he),sn(it),delete Me.currentInstance)}});let rn;class cn{constructor(...e){"undefined"!=typeof window&&(rn=this,e=Object.freeze(this.constructor.argsToParams(e)),Object.defineProperties(this,{params:{value:e,writable:!1,enumerable:!0,configurable:!0}}),e=this._main(this.params),he.promise.set(this,e))}then(e){const t=he.promise.get(this);return t.then(e)}finally(e){const t=he.promise.get(this);return t.finally(e)}}Object.assign(cn.prototype,e),Object.assign(cn,Je),Object.keys(e).forEach(t=>{cn[t]=function(...e){if(rn)return rn[t](...e)}}),cn.DismissReason=l,cn.version="11.1.7";const ln=cn;return ln.default=ln,ln}),void 0!==this&&this.Sweetalert2&&(this.swal=this.sweetAlert=this.Swal=this.SweetAlert=this.Sweetalert2);
+"undefined"!=typeof document&&function(e,t){var n=e.createElement("style");if(e.getElementsByTagName("head")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,".swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4!important;grid-row:1/4!important;grid-template-columns:1fr 99fr 1fr;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:grid;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;box-sizing:border-box;grid-template-areas:\"top-start top top-end\" \"center-start center center-end\" \"bottom-start bottom-center bottom-end\";grid-template-rows:minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto);grid-template-rows:minmax(min-content,auto) minmax(min-content,auto) minmax(min-content,auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-bottom-start,.swal2-container.swal2-center-start,.swal2-container.swal2-top-start{grid-template-columns:minmax(0,1fr) auto auto}.swal2-container.swal2-bottom,.swal2-container.swal2-center,.swal2-container.swal2-top{grid-template-columns:auto minmax(0,1fr) auto}.swal2-container.swal2-bottom-end,.swal2-container.swal2-center-end,.swal2-container.swal2-top-end{grid-template-columns:auto auto minmax(0,1fr)}.swal2-container.swal2-top-start>.swal2-popup{align-self:start}.swal2-container.swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}.swal2-container.swal2-top-end>.swal2-popup,.swal2-container.swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}.swal2-container.swal2-center-left>.swal2-popup,.swal2-container.swal2-center-start>.swal2-popup{grid-row:2;align-self:center}.swal2-container.swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}.swal2-container.swal2-center-end>.swal2-popup,.swal2-container.swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}.swal2-container.swal2-bottom-left>.swal2-popup,.swal2-container.swal2-bottom-start>.swal2-popup{grid-column:1;grid-row:3;align-self:end}.swal2-container.swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}.swal2-container.swal2-bottom-end>.swal2-popup,.swal2-container.swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}.swal2-container.swal2-grow-fullscreen>.swal2-popup,.swal2-container.swal2-grow-row>.swal2-popup{grid-column:1/4;width:100%}.swal2-container.swal2-grow-column>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}.swal2-container.swal2-no-transition{transition:none!important}.swal2-popup{display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0,100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-title{position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px transparent;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7367f0;color:#fff;font-size:1em}.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px rgba(115,103,240,.5)}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#ea5455;color:#fff;font-size:1em}.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px rgba(234,84,85,.5)}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7d88;color:#fff;font-size:1em}.swal2-styled.swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,125,136,.5)}.swal2-styled.swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled:focus{outline:0}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto!important;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:2em auto 1em}.swal2-close{z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em 2em 0}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px transparent;color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em 2em 0;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-file{width:75%;margin-right:auto;margin-left:auto;background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto 0}.swal2-validation-message{align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:.25em solid transparent;border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{background-color:transparent!important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:transparent;pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}");
\ No newline at end of file
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/sweetalert2/sweetalert2.css b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/sweetalert2/sweetalert2.css
new file mode 100644
index 0000000000..3c7543d3b3
--- /dev/null
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/sweetalert2/sweetalert2.css
@@ -0,0 +1,1316 @@
+.swal2-popup.swal2-toast {
+ box-sizing: border-box;
+ grid-column: 1/4 !important;
+ grid-row: 1/4 !important;
+ grid-template-columns: 1fr 99fr 1fr;
+ padding: 1em;
+ overflow-y: hidden;
+ background: #fff;
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0.075), 0 1px 2px rgba(0, 0, 0, 0.075), 1px 2px 4px rgba(0, 0, 0, 0.075), 1px 3px 8px rgba(0, 0, 0, 0.075), 2px 4px 16px rgba(0, 0, 0, 0.075);
+ pointer-events: all;
+}
+.swal2-popup.swal2-toast > * {
+ grid-column: 2;
+}
+.swal2-popup.swal2-toast .swal2-title {
+ margin: 0.5em 1em;
+ padding: 0;
+ font-size: 1em;
+ text-align: initial;
+}
+.swal2-popup.swal2-toast .swal2-loading {
+ justify-content: center;
+}
+.swal2-popup.swal2-toast .swal2-input {
+ height: 2em;
+ margin: 0.5em;
+ font-size: 1em;
+}
+.swal2-popup.swal2-toast .swal2-validation-message {
+ font-size: 1em;
+}
+.swal2-popup.swal2-toast .swal2-footer {
+ margin: 0.5em 0 0;
+ padding: 0.5em 0 0;
+ font-size: 0.8em;
+}
+.swal2-popup.swal2-toast .swal2-close {
+ grid-column: 3/3;
+ grid-row: 1/99;
+ align-self: center;
+ width: 0.8em;
+ height: 0.8em;
+ margin: 0;
+ font-size: 2em;
+}
+.swal2-popup.swal2-toast .swal2-html-container {
+ margin: 0.5em 1em;
+ padding: 0;
+ font-size: 1em;
+ text-align: initial;
+}
+.swal2-popup.swal2-toast .swal2-html-container:empty {
+ padding: 0;
+}
+.swal2-popup.swal2-toast .swal2-loader {
+ grid-column: 1;
+ grid-row: 1/99;
+ align-self: center;
+ width: 2em;
+ height: 2em;
+ margin: 0.25em;
+}
+.swal2-popup.swal2-toast .swal2-icon {
+ grid-column: 1;
+ grid-row: 1/99;
+ align-self: center;
+ width: 2em;
+ min-width: 2em;
+ height: 2em;
+ margin: 0 0.5em 0 0;
+}
+.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content {
+ display: flex;
+ align-items: center;
+ font-size: 1.8em;
+ font-weight: bold;
+}
+.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring {
+ width: 2em;
+ height: 2em;
+}
+.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line] {
+ top: 0.875em;
+ width: 1.375em;
+}
+.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left] {
+ left: 0.3125em;
+}
+.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right] {
+ right: 0.3125em;
+}
+.swal2-popup.swal2-toast .swal2-actions {
+ justify-content: flex-start;
+ height: auto;
+ margin: 0;
+ margin-top: 0.5em;
+ padding: 0 0.5em;
+}
+.swal2-popup.swal2-toast .swal2-styled {
+ margin: 0.25em 0.5em;
+ padding: 0.4em 0.6em;
+ font-size: 1em;
+}
+.swal2-popup.swal2-toast .swal2-success {
+ border-color: #a5dc86;
+}
+.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line] {
+ position: absolute;
+ width: 1.6em;
+ height: 3em;
+ transform: rotate(45deg);
+ border-radius: 50%;
+}
+.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left] {
+ top: -0.8em;
+ left: -0.5em;
+ transform: rotate(-45deg);
+ transform-origin: 2em 2em;
+ border-radius: 4em 0 0 4em;
+}
+.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right] {
+ top: -0.25em;
+ left: 0.9375em;
+ transform-origin: 0 1.5em;
+ border-radius: 0 4em 4em 0;
+}
+.swal2-popup.swal2-toast .swal2-success .swal2-success-ring {
+ width: 2em;
+ height: 2em;
+}
+.swal2-popup.swal2-toast .swal2-success .swal2-success-fix {
+ top: 0;
+ left: 0.4375em;
+ width: 0.4375em;
+ height: 2.6875em;
+}
+.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line] {
+ height: 0.3125em;
+}
+.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip] {
+ top: 1.125em;
+ left: 0.1875em;
+ width: 0.75em;
+}
+.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long] {
+ top: 0.9375em;
+ right: 0.1875em;
+ width: 1.375em;
+}
+.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip {
+ -webkit-animation: swal2-toast-animate-success-line-tip 0.75s;
+ animation: swal2-toast-animate-success-line-tip 0.75s;
+}
+.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long {
+ -webkit-animation: swal2-toast-animate-success-line-long 0.75s;
+ animation: swal2-toast-animate-success-line-long 0.75s;
+}
+.swal2-popup.swal2-toast.swal2-show {
+ -webkit-animation: swal2-toast-show 0.5s;
+ animation: swal2-toast-show 0.5s;
+}
+.swal2-popup.swal2-toast.swal2-hide {
+ -webkit-animation: swal2-toast-hide 0.1s forwards;
+ animation: swal2-toast-hide 0.1s forwards;
+}
+
+.swal2-container {
+ display: grid;
+ position: fixed;
+ z-index: 1060;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ box-sizing: border-box;
+ grid-template-areas: "top-start top top-end" "center-start center center-end" "bottom-start bottom-center bottom-end";
+ grid-template-rows: minmax(-webkit-min-content, auto) minmax(-webkit-min-content, auto) minmax(-webkit-min-content, auto);
+ grid-template-rows: minmax(min-content, auto) minmax(min-content, auto) minmax(min-content, auto);
+ height: 100%;
+ padding: 0.625em;
+ overflow-x: hidden;
+ transition: background-color 0.1s;
+ -webkit-overflow-scrolling: touch;
+}
+.swal2-container.swal2-backdrop-show, .swal2-container.swal2-noanimation {
+ background: rgba(0, 0, 0, 0.4);
+}
+.swal2-container.swal2-backdrop-hide {
+ background: transparent !important;
+}
+.swal2-container.swal2-top-start, .swal2-container.swal2-center-start, .swal2-container.swal2-bottom-start {
+ grid-template-columns: minmax(0, 1fr) auto auto;
+}
+.swal2-container.swal2-top, .swal2-container.swal2-center, .swal2-container.swal2-bottom {
+ grid-template-columns: auto minmax(0, 1fr) auto;
+}
+.swal2-container.swal2-top-end, .swal2-container.swal2-center-end, .swal2-container.swal2-bottom-end {
+ grid-template-columns: auto auto minmax(0, 1fr);
+}
+.swal2-container.swal2-top-start > .swal2-popup {
+ align-self: start;
+}
+.swal2-container.swal2-top > .swal2-popup {
+ grid-column: 2;
+ align-self: start;
+ justify-self: center;
+}
+.swal2-container.swal2-top-end > .swal2-popup, .swal2-container.swal2-top-right > .swal2-popup {
+ grid-column: 3;
+ align-self: start;
+ justify-self: end;
+}
+.swal2-container.swal2-center-start > .swal2-popup, .swal2-container.swal2-center-left > .swal2-popup {
+ grid-row: 2;
+ align-self: center;
+}
+.swal2-container.swal2-center > .swal2-popup {
+ grid-column: 2;
+ grid-row: 2;
+ align-self: center;
+ justify-self: center;
+}
+.swal2-container.swal2-center-end > .swal2-popup, .swal2-container.swal2-center-right > .swal2-popup {
+ grid-column: 3;
+ grid-row: 2;
+ align-self: center;
+ justify-self: end;
+}
+.swal2-container.swal2-bottom-start > .swal2-popup, .swal2-container.swal2-bottom-left > .swal2-popup {
+ grid-column: 1;
+ grid-row: 3;
+ align-self: end;
+}
+.swal2-container.swal2-bottom > .swal2-popup {
+ grid-column: 2;
+ grid-row: 3;
+ justify-self: center;
+ align-self: end;
+}
+.swal2-container.swal2-bottom-end > .swal2-popup, .swal2-container.swal2-bottom-right > .swal2-popup {
+ grid-column: 3;
+ grid-row: 3;
+ align-self: end;
+ justify-self: end;
+}
+.swal2-container.swal2-grow-row > .swal2-popup, .swal2-container.swal2-grow-fullscreen > .swal2-popup {
+ grid-column: 1/4;
+ width: 100%;
+}
+.swal2-container.swal2-grow-column > .swal2-popup, .swal2-container.swal2-grow-fullscreen > .swal2-popup {
+ grid-row: 1/4;
+ align-self: stretch;
+}
+.swal2-container.swal2-no-transition {
+ transition: none !important;
+}
+
+.swal2-popup {
+ display: none;
+ position: relative;
+ box-sizing: border-box;
+ grid-template-columns: minmax(0, 100%);
+ width: 32em;
+ max-width: 100%;
+ padding: 0 0 1.25em;
+ border: none;
+ border-radius: 5px;
+ background: #fff;
+ color: #545454;
+ font-family: inherit;
+ font-size: 1rem;
+}
+.swal2-popup:focus {
+ outline: none;
+}
+.swal2-popup.swal2-loading {
+ overflow-y: hidden;
+}
+
+.swal2-title {
+ position: relative;
+ max-width: 100%;
+ margin: 0;
+ padding: 0.8em 1em 0;
+ color: #595959;
+ font-size: 1.875em;
+ font-weight: 600;
+ text-align: center;
+ text-transform: none;
+ word-wrap: break-word;
+}
+
+.swal2-actions {
+ display: flex;
+ z-index: 1;
+ box-sizing: border-box;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: center;
+ width: auto;
+ margin: 1.25em auto 0;
+ padding: 0;
+}
+.swal2-actions:not(.swal2-loading) .swal2-styled[disabled] {
+ opacity: 0.4;
+}
+.swal2-actions:not(.swal2-loading) .swal2-styled:hover {
+ background-image: linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1));
+}
+.swal2-actions:not(.swal2-loading) .swal2-styled:active {
+ background-image: linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2));
+}
+
+.swal2-loader {
+ display: none;
+ align-items: center;
+ justify-content: center;
+ width: 2.2em;
+ height: 2.2em;
+ margin: 0 1.875em;
+ -webkit-animation: swal2-rotate-loading 1.5s linear 0s infinite normal;
+ animation: swal2-rotate-loading 1.5s linear 0s infinite normal;
+ border-width: 0.25em;
+ border-style: solid;
+ border-radius: 100%;
+ border-color: #2778c4 transparent #2778c4 transparent;
+}
+
+.swal2-styled {
+ margin: 0.3125em;
+ padding: 0.625em 1.1em;
+ transition: box-shadow 0.1s;
+ box-shadow: 0 0 0 3px transparent;
+ font-weight: 500;
+}
+.swal2-styled:not([disabled]) {
+ cursor: pointer;
+}
+.swal2-styled.swal2-confirm {
+ border: 0;
+ border-radius: 0.25em;
+ background: initial;
+ background-color: #7367f0;
+ color: #fff;
+ font-size: 1em;
+}
+.swal2-styled.swal2-confirm:focus {
+ box-shadow: 0 0 0 3px rgba(115, 103, 240, 0.5);
+}
+.swal2-styled.swal2-deny {
+ border: 0;
+ border-radius: 0.25em;
+ background: initial;
+ background-color: #ea5455;
+ color: #fff;
+ font-size: 1em;
+}
+.swal2-styled.swal2-deny:focus {
+ box-shadow: 0 0 0 3px rgba(234, 84, 85, 0.5);
+}
+.swal2-styled.swal2-cancel {
+ border: 0;
+ border-radius: 0.25em;
+ background: initial;
+ background-color: #6e7d88;
+ color: #fff;
+ font-size: 1em;
+}
+.swal2-styled.swal2-cancel:focus {
+ box-shadow: 0 0 0 3px rgba(110, 125, 136, 0.5);
+}
+.swal2-styled.swal2-default-outline:focus {
+ box-shadow: 0 0 0 3px rgba(100, 150, 200, 0.5);
+}
+.swal2-styled:focus {
+ outline: none;
+}
+.swal2-styled::-moz-focus-inner {
+ border: 0;
+}
+
+.swal2-footer {
+ justify-content: center;
+ margin: 1em 0 0;
+ padding: 1em 1em 0;
+ border-top: 1px solid #eee;
+ color: #545454;
+ font-size: 1em;
+}
+
+.swal2-timer-progress-bar-container {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ grid-column: auto !important;
+ height: 0.25em;
+ overflow: hidden;
+ border-bottom-right-radius: 5px;
+ border-bottom-left-radius: 5px;
+}
+
+.swal2-timer-progress-bar {
+ width: 100%;
+ height: 0.25em;
+ background: rgba(0, 0, 0, 0.2);
+}
+
+.swal2-image {
+ max-width: 100%;
+ margin: 2em auto 1em;
+}
+
+.swal2-close {
+ z-index: 2;
+ align-items: center;
+ justify-content: center;
+ width: 1.2em;
+ height: 1.2em;
+ margin-top: 0;
+ margin-right: 0;
+ margin-bottom: -1.2em;
+ padding: 0;
+ overflow: hidden;
+ transition: color 0.1s, box-shadow 0.1s;
+ border: none;
+ border-radius: 5px;
+ background: transparent;
+ color: #ccc;
+ font-family: serif;
+ font-family: monospace;
+ font-size: 2.5em;
+ cursor: pointer;
+ justify-self: end;
+}
+.swal2-close:hover {
+ transform: none;
+ background: transparent;
+ color: #f27474;
+}
+.swal2-close:focus {
+ outline: none;
+ box-shadow: inset 0 0 0 3px rgba(100, 150, 200, 0.5);
+}
+.swal2-close::-moz-focus-inner {
+ border: 0;
+}
+
+.swal2-html-container {
+ z-index: 1;
+ justify-content: center;
+ margin: 1em 1.6em 0.3em;
+ padding: 0;
+ overflow: auto;
+ color: #545454;
+ font-size: 1.125em;
+ font-weight: normal;
+ line-height: normal;
+ text-align: center;
+ word-wrap: break-word;
+ word-break: break-word;
+}
+
+.swal2-input,
+.swal2-file,
+.swal2-textarea,
+.swal2-select,
+.swal2-radio,
+.swal2-checkbox {
+ margin: 1em 2em 0;
+}
+
+.swal2-input,
+.swal2-file,
+.swal2-textarea {
+ box-sizing: border-box;
+ width: auto;
+ transition: border-color 0.1s, box-shadow 0.1s;
+ border: 1px solid #d9d9d9;
+ border-radius: 0.1875em;
+ background: inherit;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06), 0 0 0 3px transparent;
+ color: inherit;
+ font-size: 1.125em;
+}
+.swal2-input.swal2-inputerror,
+.swal2-file.swal2-inputerror,
+.swal2-textarea.swal2-inputerror {
+ border-color: #f27474 !important;
+ box-shadow: 0 0 2px #f27474 !important;
+}
+.swal2-input:focus,
+.swal2-file:focus,
+.swal2-textarea:focus {
+ border: 1px solid #b4dbed;
+ outline: none;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06), 0 0 0 3px rgba(100, 150, 200, 0.5);
+}
+.swal2-input::-moz-placeholder, .swal2-file::-moz-placeholder, .swal2-textarea::-moz-placeholder {
+ color: #ccc;
+}
+.swal2-input:-ms-input-placeholder, .swal2-file:-ms-input-placeholder, .swal2-textarea:-ms-input-placeholder {
+ color: #ccc;
+}
+.swal2-input::placeholder,
+.swal2-file::placeholder,
+.swal2-textarea::placeholder {
+ color: #ccc;
+}
+
+.swal2-range {
+ margin: 1em 2em 0;
+ background: #fff;
+}
+.swal2-range input {
+ width: 80%;
+}
+.swal2-range output {
+ width: 20%;
+ color: inherit;
+ font-weight: 600;
+ text-align: center;
+}
+.swal2-range input,
+.swal2-range output {
+ height: 2.625em;
+ padding: 0;
+ font-size: 1.125em;
+ line-height: 2.625em;
+}
+
+.swal2-input {
+ height: 2.625em;
+ padding: 0 0.75em;
+}
+
+.swal2-file {
+ width: 75%;
+ margin-right: auto;
+ margin-left: auto;
+ background: inherit;
+ font-size: 1.125em;
+}
+
+.swal2-textarea {
+ height: 6.75em;
+ padding: 0.75em;
+}
+
+.swal2-select {
+ min-width: 50%;
+ max-width: 100%;
+ padding: 0.375em 0.625em;
+ background: inherit;
+ color: inherit;
+ font-size: 1.125em;
+}
+
+.swal2-radio,
+.swal2-checkbox {
+ align-items: center;
+ justify-content: center;
+ background: #fff;
+ color: inherit;
+}
+.swal2-radio label,
+.swal2-checkbox label {
+ margin: 0 0.6em;
+ font-size: 1.125em;
+}
+.swal2-radio input,
+.swal2-checkbox input {
+ flex-shrink: 0;
+ margin: 0 0.4em;
+}
+
+.swal2-input-label {
+ display: flex;
+ justify-content: center;
+ margin: 1em auto 0;
+}
+
+.swal2-validation-message {
+ align-items: center;
+ justify-content: center;
+ margin: 1em 0 0;
+ padding: 0.625em;
+ overflow: hidden;
+ background: #f0f0f0;
+ color: #666666;
+ font-size: 1em;
+ font-weight: 300;
+}
+.swal2-validation-message::before {
+ content: "!";
+ display: inline-block;
+ width: 1.5em;
+ min-width: 1.5em;
+ height: 1.5em;
+ margin: 0 0.625em;
+ border-radius: 50%;
+ background-color: #f27474;
+ color: #fff;
+ font-weight: 600;
+ line-height: 1.5em;
+ text-align: center;
+}
+
+.swal2-icon {
+ position: relative;
+ box-sizing: content-box;
+ justify-content: center;
+ width: 5em;
+ height: 5em;
+ margin: 2.5em auto 0.6em;
+ border: 0.25em solid transparent;
+ border-radius: 50%;
+ border-color: #000;
+ font-family: inherit;
+ line-height: 5em;
+ cursor: default;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.swal2-icon .swal2-icon-content {
+ display: flex;
+ align-items: center;
+ font-size: 3.75em;
+}
+.swal2-icon.swal2-error {
+ border-color: #f27474;
+ color: #f27474;
+}
+.swal2-icon.swal2-error .swal2-x-mark {
+ position: relative;
+ flex-grow: 1;
+}
+.swal2-icon.swal2-error [class^=swal2-x-mark-line] {
+ display: block;
+ position: absolute;
+ top: 2.3125em;
+ width: 2.9375em;
+ height: 0.3125em;
+ border-radius: 0.125em;
+ background-color: #f27474;
+}
+.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left] {
+ left: 1.0625em;
+ transform: rotate(45deg);
+}
+.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right] {
+ right: 1em;
+ transform: rotate(-45deg);
+}
+.swal2-icon.swal2-error.swal2-icon-show {
+ -webkit-animation: swal2-animate-error-icon 0.5s;
+ animation: swal2-animate-error-icon 0.5s;
+}
+.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark {
+ -webkit-animation: swal2-animate-error-x-mark 0.5s;
+ animation: swal2-animate-error-x-mark 0.5s;
+}
+.swal2-icon.swal2-warning {
+ border-color: #facea8;
+ color: #f8bb86;
+}
+.swal2-icon.swal2-info {
+ border-color: #9de0f6;
+ color: #3fc3ee;
+}
+.swal2-icon.swal2-question {
+ border-color: #c9dae1;
+ color: #87adbd;
+}
+.swal2-icon.swal2-success {
+ border-color: #a5dc86;
+ color: #a5dc86;
+}
+.swal2-icon.swal2-success [class^=swal2-success-circular-line] {
+ position: absolute;
+ width: 3.75em;
+ height: 7.5em;
+ transform: rotate(45deg);
+ border-radius: 50%;
+}
+.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left] {
+ top: -0.4375em;
+ left: -2.0635em;
+ transform: rotate(-45deg);
+ transform-origin: 3.75em 3.75em;
+ border-radius: 7.5em 0 0 7.5em;
+}
+.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right] {
+ top: -0.6875em;
+ left: 1.875em;
+ transform: rotate(-45deg);
+ transform-origin: 0 3.75em;
+ border-radius: 0 7.5em 7.5em 0;
+}
+.swal2-icon.swal2-success .swal2-success-ring {
+ position: absolute;
+ z-index: 2;
+ top: -0.25em;
+ left: -0.25em;
+ box-sizing: content-box;
+ width: 100%;
+ height: 100%;
+ border: 0.25em solid rgba(165, 220, 134, 0.3);
+ border-radius: 50%;
+}
+.swal2-icon.swal2-success .swal2-success-fix {
+ position: absolute;
+ z-index: 1;
+ top: 0.5em;
+ left: 1.625em;
+ width: 0.4375em;
+ height: 5.625em;
+ transform: rotate(-45deg);
+}
+.swal2-icon.swal2-success [class^=swal2-success-line] {
+ display: block;
+ position: absolute;
+ z-index: 2;
+ height: 0.3125em;
+ border-radius: 0.125em;
+ background-color: #a5dc86;
+}
+.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip] {
+ top: 2.875em;
+ left: 0.8125em;
+ width: 1.5625em;
+ transform: rotate(45deg);
+}
+.swal2-icon.swal2-success [class^=swal2-success-line][class$=long] {
+ top: 2.375em;
+ right: 0.5em;
+ width: 2.9375em;
+ transform: rotate(-45deg);
+}
+.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip {
+ -webkit-animation: swal2-animate-success-line-tip 0.75s;
+ animation: swal2-animate-success-line-tip 0.75s;
+}
+.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long {
+ -webkit-animation: swal2-animate-success-line-long 0.75s;
+ animation: swal2-animate-success-line-long 0.75s;
+}
+.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right {
+ -webkit-animation: swal2-rotate-success-circular-line 4.25s ease-in;
+ animation: swal2-rotate-success-circular-line 4.25s ease-in;
+}
+
+.swal2-progress-steps {
+ flex-wrap: wrap;
+ align-items: center;
+ max-width: 100%;
+ margin: 1.25em auto;
+ padding: 0;
+ background: inherit;
+ font-weight: 600;
+}
+.swal2-progress-steps li {
+ display: inline-block;
+ position: relative;
+}
+.swal2-progress-steps .swal2-progress-step {
+ z-index: 20;
+ flex-shrink: 0;
+ width: 2em;
+ height: 2em;
+ border-radius: 2em;
+ background: #2778c4;
+ color: #fff;
+ line-height: 2em;
+ text-align: center;
+}
+.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step {
+ background: #2778c4;
+}
+.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step ~ .swal2-progress-step {
+ background: #add8e6;
+ color: #fff;
+}
+.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step ~ .swal2-progress-step-line {
+ background: #add8e6;
+}
+.swal2-progress-steps .swal2-progress-step-line {
+ z-index: 10;
+ flex-shrink: 0;
+ width: 2.5em;
+ height: 0.4em;
+ margin: 0 -1px;
+ background: #2778c4;
+}
+
+[class^=swal2] {
+ -webkit-tap-highlight-color: transparent;
+}
+
+.swal2-show {
+ -webkit-animation: swal2-show 0.3s;
+ animation: swal2-show 0.3s;
+}
+
+.swal2-hide {
+ -webkit-animation: swal2-hide 0.15s forwards;
+ animation: swal2-hide 0.15s forwards;
+}
+
+.swal2-noanimation {
+ transition: none;
+}
+
+.swal2-scrollbar-measure {
+ position: absolute;
+ top: -9999px;
+ width: 50px;
+ height: 50px;
+ overflow: scroll;
+}
+
+.swal2-rtl .swal2-close {
+ margin-right: initial;
+ margin-left: 0;
+}
+.swal2-rtl .swal2-timer-progress-bar {
+ right: 0;
+ left: auto;
+}
+
+@-webkit-keyframes swal2-toast-show {
+ 0% {
+ transform: translateY(-0.625em) rotateZ(2deg);
+ }
+ 33% {
+ transform: translateY(0) rotateZ(-2deg);
+ }
+ 66% {
+ transform: translateY(0.3125em) rotateZ(2deg);
+ }
+ 100% {
+ transform: translateY(0) rotateZ(0deg);
+ }
+}
+
+@keyframes swal2-toast-show {
+ 0% {
+ transform: translateY(-0.625em) rotateZ(2deg);
+ }
+ 33% {
+ transform: translateY(0) rotateZ(-2deg);
+ }
+ 66% {
+ transform: translateY(0.3125em) rotateZ(2deg);
+ }
+ 100% {
+ transform: translateY(0) rotateZ(0deg);
+ }
+}
+@-webkit-keyframes swal2-toast-hide {
+ 100% {
+ transform: rotateZ(1deg);
+ opacity: 0;
+ }
+}
+@keyframes swal2-toast-hide {
+ 100% {
+ transform: rotateZ(1deg);
+ opacity: 0;
+ }
+}
+@-webkit-keyframes swal2-toast-animate-success-line-tip {
+ 0% {
+ top: 0.5625em;
+ left: 0.0625em;
+ width: 0;
+ }
+ 54% {
+ top: 0.125em;
+ left: 0.125em;
+ width: 0;
+ }
+ 70% {
+ top: 0.625em;
+ left: -0.25em;
+ width: 1.625em;
+ }
+ 84% {
+ top: 1.0625em;
+ left: 0.75em;
+ width: 0.5em;
+ }
+ 100% {
+ top: 1.125em;
+ left: 0.1875em;
+ width: 0.75em;
+ }
+}
+@keyframes swal2-toast-animate-success-line-tip {
+ 0% {
+ top: 0.5625em;
+ left: 0.0625em;
+ width: 0;
+ }
+ 54% {
+ top: 0.125em;
+ left: 0.125em;
+ width: 0;
+ }
+ 70% {
+ top: 0.625em;
+ left: -0.25em;
+ width: 1.625em;
+ }
+ 84% {
+ top: 1.0625em;
+ left: 0.75em;
+ width: 0.5em;
+ }
+ 100% {
+ top: 1.125em;
+ left: 0.1875em;
+ width: 0.75em;
+ }
+}
+@-webkit-keyframes swal2-toast-animate-success-line-long {
+ 0% {
+ top: 1.625em;
+ right: 1.375em;
+ width: 0;
+ }
+ 65% {
+ top: 1.25em;
+ right: 0.9375em;
+ width: 0;
+ }
+ 84% {
+ top: 0.9375em;
+ right: 0;
+ width: 1.125em;
+ }
+ 100% {
+ top: 0.9375em;
+ right: 0.1875em;
+ width: 1.375em;
+ }
+}
+@keyframes swal2-toast-animate-success-line-long {
+ 0% {
+ top: 1.625em;
+ right: 1.375em;
+ width: 0;
+ }
+ 65% {
+ top: 1.25em;
+ right: 0.9375em;
+ width: 0;
+ }
+ 84% {
+ top: 0.9375em;
+ right: 0;
+ width: 1.125em;
+ }
+ 100% {
+ top: 0.9375em;
+ right: 0.1875em;
+ width: 1.375em;
+ }
+}
+@-webkit-keyframes swal2-show {
+ 0% {
+ transform: scale(0.7);
+ }
+ 45% {
+ transform: scale(1.05);
+ }
+ 80% {
+ transform: scale(0.95);
+ }
+ 100% {
+ transform: scale(1);
+ }
+}
+@keyframes swal2-show {
+ 0% {
+ transform: scale(0.7);
+ }
+ 45% {
+ transform: scale(1.05);
+ }
+ 80% {
+ transform: scale(0.95);
+ }
+ 100% {
+ transform: scale(1);
+ }
+}
+@-webkit-keyframes swal2-hide {
+ 0% {
+ transform: scale(1);
+ opacity: 1;
+ }
+ 100% {
+ transform: scale(0.5);
+ opacity: 0;
+ }
+}
+@keyframes swal2-hide {
+ 0% {
+ transform: scale(1);
+ opacity: 1;
+ }
+ 100% {
+ transform: scale(0.5);
+ opacity: 0;
+ }
+}
+@-webkit-keyframes swal2-animate-success-line-tip {
+ 0% {
+ top: 1.1875em;
+ left: 0.0625em;
+ width: 0;
+ }
+ 54% {
+ top: 1.0625em;
+ left: 0.125em;
+ width: 0;
+ }
+ 70% {
+ top: 2.1875em;
+ left: -0.375em;
+ width: 3.125em;
+ }
+ 84% {
+ top: 3em;
+ left: 1.3125em;
+ width: 1.0625em;
+ }
+ 100% {
+ top: 2.8125em;
+ left: 0.8125em;
+ width: 1.5625em;
+ }
+}
+@keyframes swal2-animate-success-line-tip {
+ 0% {
+ top: 1.1875em;
+ left: 0.0625em;
+ width: 0;
+ }
+ 54% {
+ top: 1.0625em;
+ left: 0.125em;
+ width: 0;
+ }
+ 70% {
+ top: 2.1875em;
+ left: -0.375em;
+ width: 3.125em;
+ }
+ 84% {
+ top: 3em;
+ left: 1.3125em;
+ width: 1.0625em;
+ }
+ 100% {
+ top: 2.8125em;
+ left: 0.8125em;
+ width: 1.5625em;
+ }
+}
+@-webkit-keyframes swal2-animate-success-line-long {
+ 0% {
+ top: 3.375em;
+ right: 2.875em;
+ width: 0;
+ }
+ 65% {
+ top: 3.375em;
+ right: 2.875em;
+ width: 0;
+ }
+ 84% {
+ top: 2.1875em;
+ right: 0;
+ width: 3.4375em;
+ }
+ 100% {
+ top: 2.375em;
+ right: 0.5em;
+ width: 2.9375em;
+ }
+}
+@keyframes swal2-animate-success-line-long {
+ 0% {
+ top: 3.375em;
+ right: 2.875em;
+ width: 0;
+ }
+ 65% {
+ top: 3.375em;
+ right: 2.875em;
+ width: 0;
+ }
+ 84% {
+ top: 2.1875em;
+ right: 0;
+ width: 3.4375em;
+ }
+ 100% {
+ top: 2.375em;
+ right: 0.5em;
+ width: 2.9375em;
+ }
+}
+@-webkit-keyframes swal2-rotate-success-circular-line {
+ 0% {
+ transform: rotate(-45deg);
+ }
+ 5% {
+ transform: rotate(-45deg);
+ }
+ 12% {
+ transform: rotate(-405deg);
+ }
+ 100% {
+ transform: rotate(-405deg);
+ }
+}
+@keyframes swal2-rotate-success-circular-line {
+ 0% {
+ transform: rotate(-45deg);
+ }
+ 5% {
+ transform: rotate(-45deg);
+ }
+ 12% {
+ transform: rotate(-405deg);
+ }
+ 100% {
+ transform: rotate(-405deg);
+ }
+}
+@-webkit-keyframes swal2-animate-error-x-mark {
+ 0% {
+ margin-top: 1.625em;
+ transform: scale(0.4);
+ opacity: 0;
+ }
+ 50% {
+ margin-top: 1.625em;
+ transform: scale(0.4);
+ opacity: 0;
+ }
+ 80% {
+ margin-top: -0.375em;
+ transform: scale(1.15);
+ }
+ 100% {
+ margin-top: 0;
+ transform: scale(1);
+ opacity: 1;
+ }
+}
+@keyframes swal2-animate-error-x-mark {
+ 0% {
+ margin-top: 1.625em;
+ transform: scale(0.4);
+ opacity: 0;
+ }
+ 50% {
+ margin-top: 1.625em;
+ transform: scale(0.4);
+ opacity: 0;
+ }
+ 80% {
+ margin-top: -0.375em;
+ transform: scale(1.15);
+ }
+ 100% {
+ margin-top: 0;
+ transform: scale(1);
+ opacity: 1;
+ }
+}
+@-webkit-keyframes swal2-animate-error-icon {
+ 0% {
+ transform: rotateX(100deg);
+ opacity: 0;
+ }
+ 100% {
+ transform: rotateX(0deg);
+ opacity: 1;
+ }
+}
+@keyframes swal2-animate-error-icon {
+ 0% {
+ transform: rotateX(100deg);
+ opacity: 0;
+ }
+ 100% {
+ transform: rotateX(0deg);
+ opacity: 1;
+ }
+}
+@-webkit-keyframes swal2-rotate-loading {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+@keyframes swal2-rotate-loading {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) {
+ overflow: hidden;
+}
+body.swal2-height-auto {
+ height: auto !important;
+}
+body.swal2-no-backdrop .swal2-container {
+ background-color: transparent !important;
+ pointer-events: none;
+}
+body.swal2-no-backdrop .swal2-container .swal2-popup {
+ pointer-events: all;
+}
+body.swal2-no-backdrop .swal2-container .swal2-modal {
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.4);
+}
+@media print {
+ body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) {
+ overflow-y: scroll !important;
+ }
+ body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) > [aria-hidden=true] {
+ display: none;
+ }
+ body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container {
+ position: static !important;
+ }
+}
+body.swal2-toast-shown .swal2-container {
+ box-sizing: border-box;
+ width: 360px;
+ max-width: 100%;
+ background-color: transparent;
+ pointer-events: none;
+}
+body.swal2-toast-shown .swal2-container.swal2-top {
+ top: 0;
+ right: auto;
+ bottom: auto;
+ left: 50%;
+ transform: translateX(-50%);
+}
+body.swal2-toast-shown .swal2-container.swal2-top-end, body.swal2-toast-shown .swal2-container.swal2-top-right {
+ top: 0;
+ right: 0;
+ bottom: auto;
+ left: auto;
+}
+body.swal2-toast-shown .swal2-container.swal2-top-start, body.swal2-toast-shown .swal2-container.swal2-top-left {
+ top: 0;
+ right: auto;
+ bottom: auto;
+ left: 0;
+}
+body.swal2-toast-shown .swal2-container.swal2-center-start, body.swal2-toast-shown .swal2-container.swal2-center-left {
+ top: 50%;
+ right: auto;
+ bottom: auto;
+ left: 0;
+ transform: translateY(-50%);
+}
+body.swal2-toast-shown .swal2-container.swal2-center {
+ top: 50%;
+ right: auto;
+ bottom: auto;
+ left: 50%;
+ transform: translate(-50%, -50%);
+}
+body.swal2-toast-shown .swal2-container.swal2-center-end, body.swal2-toast-shown .swal2-container.swal2-center-right {
+ top: 50%;
+ right: 0;
+ bottom: auto;
+ left: auto;
+ transform: translateY(-50%);
+}
+body.swal2-toast-shown .swal2-container.swal2-bottom-start, body.swal2-toast-shown .swal2-container.swal2-bottom-left {
+ top: auto;
+ right: auto;
+ bottom: 0;
+ left: 0;
+}
+body.swal2-toast-shown .swal2-container.swal2-bottom {
+ top: auto;
+ right: auto;
+ bottom: 0;
+ left: 50%;
+ transform: translateX(-50%);
+}
+body.swal2-toast-shown .swal2-container.swal2-bottom-end, body.swal2-toast-shown .swal2-container.swal2-bottom-right {
+ top: auto;
+ right: 0;
+ bottom: 0;
+ left: auto;
+}
\ No newline at end of file
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/sweetalert2/sweetalert2.js b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/sweetalert2/sweetalert2.js
new file mode 100644
index 0000000000..5bda4321cb
--- /dev/null
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/sweetalert2/sweetalert2.js
@@ -0,0 +1,3120 @@
+/*!
+* sweetalert2 v11.1.7
+* Released under the MIT License.
+*/
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global = global || self, global.Sweetalert2 = factory());
+}(this, function () { 'use strict';
+
+ const DismissReason = Object.freeze({
+ cancel: 'cancel',
+ backdrop: 'backdrop',
+ close: 'close',
+ esc: 'esc',
+ timer: 'timer'
+ });
+
+ const consolePrefix = 'SweetAlert2:';
+ /**
+ * Filter the unique values into a new array
+ * @param arr
+ */
+
+ const uniqueArray = arr => {
+ const result = [];
+
+ for (let i = 0; i < arr.length; i++) {
+ if (result.indexOf(arr[i]) === -1) {
+ result.push(arr[i]);
+ }
+ }
+
+ return result;
+ };
+ /**
+ * Capitalize the first letter of a string
+ * @param str
+ */
+
+ const capitalizeFirstLetter = str => str.charAt(0).toUpperCase() + str.slice(1);
+ /**
+ * Convert NodeList to Array
+ * @param nodeList
+ */
+
+ const toArray = nodeList => Array.prototype.slice.call(nodeList);
+ /**
+ * Standardise console warnings
+ * @param message
+ */
+
+ const warn = message => {
+ console.warn("".concat(consolePrefix, " ").concat(typeof message === 'object' ? message.join(' ') : message));
+ };
+ /**
+ * Standardise console errors
+ * @param message
+ */
+
+ const error = message => {
+ console.error("".concat(consolePrefix, " ").concat(message));
+ };
+ /**
+ * Private global state for `warnOnce`
+ * @type {Array}
+ * @private
+ */
+
+ const previousWarnOnceMessages = [];
+ /**
+ * Show a console warning, but only if it hasn't already been shown
+ * @param message
+ */
+
+ const warnOnce = message => {
+ if (!previousWarnOnceMessages.includes(message)) {
+ previousWarnOnceMessages.push(message);
+ warn(message);
+ }
+ };
+ /**
+ * Show a one-time console warning about deprecated params/methods
+ */
+
+ const warnAboutDeprecation = (deprecatedParam, useInstead) => {
+ warnOnce("\"".concat(deprecatedParam, "\" is deprecated and will be removed in the next major release. Please use \"").concat(useInstead, "\" instead."));
+ };
+ /**
+ * If `arg` is a function, call it (with no arguments or context) and return the result.
+ * Otherwise, just pass the value through
+ * @param arg
+ */
+
+ const callIfFunction = arg => typeof arg === 'function' ? arg() : arg;
+ const hasToPromiseFn = arg => arg && typeof arg.toPromise === 'function';
+ const asPromise = arg => hasToPromiseFn(arg) ? arg.toPromise() : Promise.resolve(arg);
+ const isPromise = arg => arg && Promise.resolve(arg) === arg;
+
+ const isJqueryElement = elem => typeof elem === 'object' && elem.jquery;
+
+ const isElement = elem => elem instanceof Element || isJqueryElement(elem);
+
+ const argsToParams = args => {
+ const params = {};
+
+ if (typeof args[0] === 'object' && !isElement(args[0])) {
+ Object.assign(params, args[0]);
+ } else {
+ ['title', 'html', 'icon'].forEach((name, index) => {
+ const arg = args[index];
+
+ if (typeof arg === 'string' || isElement(arg)) {
+ params[name] = arg;
+ } else if (arg !== undefined) {
+ error("Unexpected type of ".concat(name, "! Expected \"string\" or \"Element\", got ").concat(typeof arg));
+ }
+ });
+ }
+
+ return params;
+ };
+
+ const swalPrefix = 'swal2-';
+ const prefix = items => {
+ const result = {};
+
+ for (const i in items) {
+ result[items[i]] = swalPrefix + items[i];
+ }
+
+ return result;
+ };
+ const swalClasses = prefix(['container', 'shown', 'height-auto', 'iosfix', 'popup', 'modal', 'no-backdrop', 'no-transition', 'toast', 'toast-shown', 'show', 'hide', 'close', 'title', 'html-container', 'actions', 'confirm', 'deny', 'cancel', 'default-outline', 'footer', 'icon', 'icon-content', 'image', 'input', 'file', 'range', 'select', 'radio', 'checkbox', 'label', 'textarea', 'inputerror', 'input-label', 'validation-message', 'progress-steps', 'active-progress-step', 'progress-step', 'progress-step-line', 'loader', 'loading', 'styled', 'top', 'top-start', 'top-end', 'top-left', 'top-right', 'center', 'center-start', 'center-end', 'center-left', 'center-right', 'bottom', 'bottom-start', 'bottom-end', 'bottom-left', 'bottom-right', 'grow-row', 'grow-column', 'grow-fullscreen', 'rtl', 'timer-progress-bar', 'timer-progress-bar-container', 'scrollbar-measure', 'icon-success', 'icon-warning', 'icon-info', 'icon-question', 'icon-error']);
+ const iconTypes = prefix(['success', 'warning', 'info', 'question', 'error']);
+
+ const getContainer = () => document.body.querySelector(".".concat(swalClasses.container));
+ const elementBySelector = selectorString => {
+ const container = getContainer();
+ return container ? container.querySelector(selectorString) : null;
+ };
+
+ const elementByClass = className => {
+ return elementBySelector(".".concat(className));
+ };
+
+ const getPopup = () => elementByClass(swalClasses.popup);
+ const getIcon = () => elementByClass(swalClasses.icon);
+ const getTitle = () => elementByClass(swalClasses.title);
+ const getHtmlContainer = () => elementByClass(swalClasses['html-container']);
+ const getImage = () => elementByClass(swalClasses.image);
+ const getProgressSteps = () => elementByClass(swalClasses['progress-steps']);
+ const getValidationMessage = () => elementByClass(swalClasses['validation-message']);
+ const getConfirmButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.confirm));
+ const getDenyButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.deny));
+ const getInputLabel = () => elementByClass(swalClasses['input-label']);
+ const getLoader = () => elementBySelector(".".concat(swalClasses.loader));
+ const getCancelButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.cancel));
+ const getActions = () => elementByClass(swalClasses.actions);
+ const getFooter = () => elementByClass(swalClasses.footer);
+ const getTimerProgressBar = () => elementByClass(swalClasses['timer-progress-bar']);
+ const getCloseButton = () => elementByClass(swalClasses.close); // https://github.com/jkup/focusable/blob/master/index.js
+
+ const focusable = "\n a[href],\n area[href],\n input:not([disabled]),\n select:not([disabled]),\n textarea:not([disabled]),\n button:not([disabled]),\n iframe,\n object,\n embed,\n [tabindex=\"0\"],\n [contenteditable],\n audio[controls],\n video[controls],\n summary\n";
+ const getFocusableElements = () => {
+ const focusableElementsWithTabindex = toArray(getPopup().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')) // sort according to tabindex
+ .sort((a, b) => {
+ a = parseInt(a.getAttribute('tabindex'));
+ b = parseInt(b.getAttribute('tabindex'));
+
+ if (a > b) {
+ return 1;
+ } else if (a < b) {
+ return -1;
+ }
+
+ return 0;
+ });
+ const otherFocusableElements = toArray(getPopup().querySelectorAll(focusable)).filter(el => el.getAttribute('tabindex') !== '-1');
+ return uniqueArray(focusableElementsWithTabindex.concat(otherFocusableElements)).filter(el => isVisible(el));
+ };
+ const isModal = () => {
+ return !isToast() && !document.body.classList.contains(swalClasses['no-backdrop']);
+ };
+ const isToast = () => {
+ return document.body.classList.contains(swalClasses['toast-shown']);
+ };
+ const isLoading = () => {
+ return getPopup().hasAttribute('data-loading');
+ };
+
+ const states = {
+ previousBodyPadding: null
+ };
+ const setInnerHtml = (elem, html) => {
+ // #1926
+ elem.textContent = '';
+
+ if (html) {
+ const parser = new DOMParser();
+ const parsed = parser.parseFromString(html, "text/html");
+ toArray(parsed.querySelector('head').childNodes).forEach(child => {
+ elem.appendChild(child);
+ });
+ toArray(parsed.querySelector('body').childNodes).forEach(child => {
+ elem.appendChild(child);
+ });
+ }
+ };
+ const hasClass = (elem, className) => {
+ if (!className) {
+ return false;
+ }
+
+ const classList = className.split(/\s+/);
+
+ for (let i = 0; i < classList.length; i++) {
+ if (!elem.classList.contains(classList[i])) {
+ return false;
+ }
+ }
+
+ return true;
+ };
+
+ const removeCustomClasses = (elem, params) => {
+ toArray(elem.classList).forEach(className => {
+ if (!Object.values(swalClasses).includes(className) && !Object.values(iconTypes).includes(className) && !Object.values(params.showClass).includes(className)) {
+ elem.classList.remove(className);
+ }
+ });
+ };
+
+ const applyCustomClass = (elem, params, className) => {
+ removeCustomClasses(elem, params);
+
+ if (params.customClass && params.customClass[className]) {
+ if (typeof params.customClass[className] !== 'string' && !params.customClass[className].forEach) {
+ return warn("Invalid type of customClass.".concat(className, "! Expected string or iterable object, got \"").concat(typeof params.customClass[className], "\""));
+ }
+
+ addClass(elem, params.customClass[className]);
+ }
+ };
+ const getInput = (popup, inputType) => {
+ if (!inputType) {
+ return null;
+ }
+
+ switch (inputType) {
+ case 'select':
+ case 'textarea':
+ case 'file':
+ return getChildByClass(popup, swalClasses[inputType]);
+
+ case 'checkbox':
+ return popup.querySelector(".".concat(swalClasses.checkbox, " input"));
+
+ case 'radio':
+ return popup.querySelector(".".concat(swalClasses.radio, " input:checked")) || popup.querySelector(".".concat(swalClasses.radio, " input:first-child"));
+
+ case 'range':
+ return popup.querySelector(".".concat(swalClasses.range, " input"));
+
+ default:
+ return getChildByClass(popup, swalClasses.input);
+ }
+ };
+ const focusInput = input => {
+ input.focus(); // place cursor at end of text in text input
+
+ if (input.type !== 'file') {
+ // http://stackoverflow.com/a/2345915
+ const val = input.value;
+ input.value = '';
+ input.value = val;
+ }
+ };
+ const toggleClass = (target, classList, condition) => {
+ if (!target || !classList) {
+ return;
+ }
+
+ if (typeof classList === 'string') {
+ classList = classList.split(/\s+/).filter(Boolean);
+ }
+
+ classList.forEach(className => {
+ if (target.forEach) {
+ target.forEach(elem => {
+ condition ? elem.classList.add(className) : elem.classList.remove(className);
+ });
+ } else {
+ condition ? target.classList.add(className) : target.classList.remove(className);
+ }
+ });
+ };
+ const addClass = (target, classList) => {
+ toggleClass(target, classList, true);
+ };
+ const removeClass = (target, classList) => {
+ toggleClass(target, classList, false);
+ };
+ const getChildByClass = (elem, className) => {
+ for (let i = 0; i < elem.childNodes.length; i++) {
+ if (hasClass(elem.childNodes[i], className)) {
+ return elem.childNodes[i];
+ }
+ }
+ };
+ const applyNumericalStyle = (elem, property, value) => {
+ if (value === "".concat(parseInt(value))) {
+ value = parseInt(value);
+ }
+
+ if (value || parseInt(value) === 0) {
+ elem.style[property] = typeof value === 'number' ? "".concat(value, "px") : value;
+ } else {
+ elem.style.removeProperty(property);
+ }
+ };
+ const show = (elem, display = 'flex') => {
+ elem.style.display = display;
+ };
+ const hide = elem => {
+ elem.style.display = 'none';
+ };
+ const setStyle = (parent, selector, property, value) => {
+ const el = parent.querySelector(selector);
+
+ if (el) {
+ el.style[property] = value;
+ }
+ };
+ const toggle = (elem, condition, display) => {
+ condition ? show(elem, display) : hide(elem);
+ }; // borrowed from jquery $(elem).is(':visible') implementation
+
+ const isVisible = elem => !!(elem && (elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length));
+ const allButtonsAreHidden = () => !isVisible(getConfirmButton()) && !isVisible(getDenyButton()) && !isVisible(getCancelButton());
+ const isScrollable = elem => !!(elem.scrollHeight > elem.clientHeight); // borrowed from https://stackoverflow.com/a/46352119
+
+ const hasCssAnimation = elem => {
+ const style = window.getComputedStyle(elem);
+ const animDuration = parseFloat(style.getPropertyValue('animation-duration') || '0');
+ const transDuration = parseFloat(style.getPropertyValue('transition-duration') || '0');
+ return animDuration > 0 || transDuration > 0;
+ };
+ const animateTimerProgressBar = (timer, reset = false) => {
+ const timerProgressBar = getTimerProgressBar();
+
+ if (isVisible(timerProgressBar)) {
+ if (reset) {
+ timerProgressBar.style.transition = 'none';
+ timerProgressBar.style.width = '100%';
+ }
+
+ setTimeout(() => {
+ timerProgressBar.style.transition = "width ".concat(timer / 1000, "s linear");
+ timerProgressBar.style.width = '0%';
+ }, 10);
+ }
+ };
+ const stopTimerProgressBar = () => {
+ const timerProgressBar = getTimerProgressBar();
+ const timerProgressBarWidth = parseInt(window.getComputedStyle(timerProgressBar).width);
+ timerProgressBar.style.removeProperty('transition');
+ timerProgressBar.style.width = '100%';
+ const timerProgressBarFullWidth = parseInt(window.getComputedStyle(timerProgressBar).width);
+ const timerProgressBarPercent = parseInt(timerProgressBarWidth / timerProgressBarFullWidth * 100);
+ timerProgressBar.style.removeProperty('transition');
+ timerProgressBar.style.width = "".concat(timerProgressBarPercent, "%");
+ };
+
+ // Detect Node env
+ const isNodeEnv = () => typeof window === 'undefined' || typeof document === 'undefined';
+
+ const sweetHTML = "\n \n").replace(/(^|\n)\s*/g, '');
+
+ const resetOldContainer = () => {
+ const oldContainer = getContainer();
+
+ if (!oldContainer) {
+ return false;
+ }
+
+ oldContainer.remove();
+ removeClass([document.documentElement, document.body], [swalClasses['no-backdrop'], swalClasses['toast-shown'], swalClasses['has-column']]);
+ return true;
+ };
+
+ const resetValidationMessage = () => {
+ if (Swal.isVisible()) {
+ Swal.resetValidationMessage();
+ }
+ };
+
+ const addInputChangeListeners = () => {
+ const popup = getPopup();
+ const input = getChildByClass(popup, swalClasses.input);
+ const file = getChildByClass(popup, swalClasses.file);
+ const range = popup.querySelector(".".concat(swalClasses.range, " input"));
+ const rangeOutput = popup.querySelector(".".concat(swalClasses.range, " output"));
+ const select = getChildByClass(popup, swalClasses.select);
+ const checkbox = popup.querySelector(".".concat(swalClasses.checkbox, " input"));
+ const textarea = getChildByClass(popup, swalClasses.textarea);
+ input.oninput = resetValidationMessage;
+ file.onchange = resetValidationMessage;
+ select.onchange = resetValidationMessage;
+ checkbox.onchange = resetValidationMessage;
+ textarea.oninput = resetValidationMessage;
+
+ range.oninput = () => {
+ resetValidationMessage();
+ rangeOutput.value = range.value;
+ };
+
+ range.onchange = () => {
+ resetValidationMessage();
+ range.nextSibling.value = range.value;
+ };
+ };
+
+ const getTarget = target => typeof target === 'string' ? document.querySelector(target) : target;
+
+ const setupAccessibility = params => {
+ const popup = getPopup();
+ popup.setAttribute('role', params.toast ? 'alert' : 'dialog');
+ popup.setAttribute('aria-live', params.toast ? 'polite' : 'assertive');
+
+ if (!params.toast) {
+ popup.setAttribute('aria-modal', 'true');
+ }
+ };
+
+ const setupRTL = targetElement => {
+ if (window.getComputedStyle(targetElement).direction === 'rtl') {
+ addClass(getContainer(), swalClasses.rtl);
+ }
+ };
+ /*
+ * Add modal + backdrop to DOM
+ */
+
+
+ const init = params => {
+ // Clean up the old popup container if it exists
+ const oldContainerExisted = resetOldContainer();
+ /* istanbul ignore if */
+
+ if (isNodeEnv()) {
+ error('SweetAlert2 requires document to initialize');
+ return;
+ }
+
+ const container = document.createElement('div');
+ container.className = swalClasses.container;
+
+ if (oldContainerExisted) {
+ addClass(container, swalClasses['no-transition']);
+ }
+
+ setInnerHtml(container, sweetHTML);
+ const targetElement = getTarget(params.target);
+ targetElement.appendChild(container);
+ setupAccessibility(params);
+ setupRTL(targetElement);
+ addInputChangeListeners();
+ };
+
+ const parseHtmlToContainer = (param, target) => {
+ // DOM element
+ if (param instanceof HTMLElement) {
+ target.appendChild(param); // Object
+ } else if (typeof param === 'object') {
+ handleObject(param, target); // Plain string
+ } else if (param) {
+ setInnerHtml(target, param);
+ }
+ };
+
+ const handleObject = (param, target) => {
+ // JQuery element(s)
+ if (param.jquery) {
+ handleJqueryElem(target, param); // For other objects use their string representation
+ } else {
+ setInnerHtml(target, param.toString());
+ }
+ };
+
+ const handleJqueryElem = (target, elem) => {
+ target.textContent = '';
+
+ if (0 in elem) {
+ for (let i = 0; (i in elem); i++) {
+ target.appendChild(elem[i].cloneNode(true));
+ }
+ } else {
+ target.appendChild(elem.cloneNode(true));
+ }
+ };
+
+ const animationEndEvent = (() => {
+ // Prevent run in Node env
+
+ /* istanbul ignore if */
+ if (isNodeEnv()) {
+ return false;
+ }
+
+ const testEl = document.createElement('div');
+ const transEndEventNames = {
+ WebkitAnimation: 'webkitAnimationEnd',
+ OAnimation: 'oAnimationEnd oanimationend',
+ animation: 'animationend'
+ };
+
+ for (const i in transEndEventNames) {
+ if (Object.prototype.hasOwnProperty.call(transEndEventNames, i) && typeof testEl.style[i] !== 'undefined') {
+ return transEndEventNames[i];
+ }
+ }
+
+ return false;
+ })();
+
+ // https://github.com/twbs/bootstrap/blob/master/js/src/modal.js
+
+ const measureScrollbar = () => {
+ const scrollDiv = document.createElement('div');
+ scrollDiv.className = swalClasses['scrollbar-measure'];
+ document.body.appendChild(scrollDiv);
+ const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
+ document.body.removeChild(scrollDiv);
+ return scrollbarWidth;
+ };
+
+ const renderActions = (instance, params) => {
+ const actions = getActions();
+ const loader = getLoader();
+ const confirmButton = getConfirmButton();
+ const denyButton = getDenyButton();
+ const cancelButton = getCancelButton(); // Actions (buttons) wrapper
+
+ if (!params.showConfirmButton && !params.showDenyButton && !params.showCancelButton) {
+ hide(actions);
+ } else {
+ show(actions);
+ } // Custom class
+
+
+ applyCustomClass(actions, params, 'actions'); // Render buttons
+
+ renderButton(confirmButton, 'confirm', params);
+ renderButton(denyButton, 'deny', params);
+ renderButton(cancelButton, 'cancel', params);
+ handleButtonsStyling(confirmButton, denyButton, cancelButton, params);
+
+ if (params.reverseButtons) {
+ actions.insertBefore(cancelButton, loader);
+ actions.insertBefore(denyButton, loader);
+ actions.insertBefore(confirmButton, loader);
+ } // Loader
+
+
+ setInnerHtml(loader, params.loaderHtml);
+ applyCustomClass(loader, params, 'loader');
+ };
+
+ function handleButtonsStyling(confirmButton, denyButton, cancelButton, params) {
+ if (!params.buttonsStyling) {
+ return removeClass([confirmButton, denyButton, cancelButton], swalClasses.styled);
+ }
+
+ addClass([confirmButton, denyButton, cancelButton], swalClasses.styled); // Buttons background colors
+
+ if (params.confirmButtonColor) {
+ confirmButton.style.backgroundColor = params.confirmButtonColor;
+ addClass(confirmButton, swalClasses['default-outline']);
+ }
+
+ if (params.denyButtonColor) {
+ denyButton.style.backgroundColor = params.denyButtonColor;
+ addClass(denyButton, swalClasses['default-outline']);
+ }
+
+ if (params.cancelButtonColor) {
+ cancelButton.style.backgroundColor = params.cancelButtonColor;
+ addClass(cancelButton, swalClasses['default-outline']);
+ }
+ }
+
+ function renderButton(button, buttonType, params) {
+ toggle(button, params["show".concat(capitalizeFirstLetter(buttonType), "Button")], 'inline-block');
+ setInnerHtml(button, params["".concat(buttonType, "ButtonText")]); // Set caption text
+
+ button.setAttribute('aria-label', params["".concat(buttonType, "ButtonAriaLabel")]); // ARIA label
+ // Add buttons custom classes
+
+ button.className = swalClasses[buttonType];
+ applyCustomClass(button, params, "".concat(buttonType, "Button"));
+ addClass(button, params["".concat(buttonType, "ButtonClass")]);
+ }
+
+ function handleBackdropParam(container, backdrop) {
+ if (typeof backdrop === 'string') {
+ container.style.background = backdrop;
+ } else if (!backdrop) {
+ addClass([document.documentElement, document.body], swalClasses['no-backdrop']);
+ }
+ }
+
+ function handlePositionParam(container, position) {
+ if (position in swalClasses) {
+ addClass(container, swalClasses[position]);
+ } else {
+ warn('The "position" parameter is not valid, defaulting to "center"');
+ addClass(container, swalClasses.center);
+ }
+ }
+
+ function handleGrowParam(container, grow) {
+ if (grow && typeof grow === 'string') {
+ const growClass = "grow-".concat(grow);
+
+ if (growClass in swalClasses) {
+ addClass(container, swalClasses[growClass]);
+ }
+ }
+ }
+
+ const renderContainer = (instance, params) => {
+ const container = getContainer();
+
+ if (!container) {
+ return;
+ }
+
+ handleBackdropParam(container, params.backdrop);
+ handlePositionParam(container, params.position);
+ handleGrowParam(container, params.grow); // Custom class
+
+ applyCustomClass(container, params, 'container');
+ };
+
+ /**
+ * This module containts `WeakMap`s for each effectively-"private property" that a `Swal` has.
+ * For example, to set the private property "foo" of `this` to "bar", you can `privateProps.foo.set(this, 'bar')`
+ * This is the approach that Babel will probably take to implement private methods/fields
+ * https://github.com/tc39/proposal-private-methods
+ * https://github.com/babel/babel/pull/7555
+ * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module*
+ * then we can use that language feature.
+ */
+ var privateProps = {
+ promise: new WeakMap(),
+ innerParams: new WeakMap(),
+ domCache: new WeakMap()
+ };
+
+ const inputTypes = ['input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea'];
+ const renderInput = (instance, params) => {
+ const popup = getPopup();
+ const innerParams = privateProps.innerParams.get(instance);
+ const rerender = !innerParams || params.input !== innerParams.input;
+ inputTypes.forEach(inputType => {
+ const inputClass = swalClasses[inputType];
+ const inputContainer = getChildByClass(popup, inputClass); // set attributes
+
+ setAttributes(inputType, params.inputAttributes); // set class
+
+ inputContainer.className = inputClass;
+
+ if (rerender) {
+ hide(inputContainer);
+ }
+ });
+
+ if (params.input) {
+ if (rerender) {
+ showInput(params);
+ } // set custom class
+
+
+ setCustomClass(params);
+ }
+ };
+
+ const showInput = params => {
+ if (!renderInputType[params.input]) {
+ return error("Unexpected type of input! Expected \"text\", \"email\", \"password\", \"number\", \"tel\", \"select\", \"radio\", \"checkbox\", \"textarea\", \"file\" or \"url\", got \"".concat(params.input, "\""));
+ }
+
+ const inputContainer = getInputContainer(params.input);
+ const input = renderInputType[params.input](inputContainer, params);
+ show(input); // input autofocus
+
+ setTimeout(() => {
+ focusInput(input);
+ });
+ };
+
+ const removeAttributes = input => {
+ for (let i = 0; i < input.attributes.length; i++) {
+ const attrName = input.attributes[i].name;
+
+ if (!['type', 'value', 'style'].includes(attrName)) {
+ input.removeAttribute(attrName);
+ }
+ }
+ };
+
+ const setAttributes = (inputType, inputAttributes) => {
+ const input = getInput(getPopup(), inputType);
+
+ if (!input) {
+ return;
+ }
+
+ removeAttributes(input);
+
+ for (const attr in inputAttributes) {
+ input.setAttribute(attr, inputAttributes[attr]);
+ }
+ };
+
+ const setCustomClass = params => {
+ const inputContainer = getInputContainer(params.input);
+
+ if (params.customClass) {
+ addClass(inputContainer, params.customClass.input);
+ }
+ };
+
+ const setInputPlaceholder = (input, params) => {
+ if (!input.placeholder || params.inputPlaceholder) {
+ input.placeholder = params.inputPlaceholder;
+ }
+ };
+
+ const setInputLabel = (input, prependTo, params) => {
+ if (params.inputLabel) {
+ input.id = swalClasses.input;
+ const label = document.createElement('label');
+ const labelClass = swalClasses['input-label'];
+ label.setAttribute('for', input.id);
+ label.className = labelClass;
+ addClass(label, params.customClass.inputLabel);
+ label.innerText = params.inputLabel;
+ prependTo.insertAdjacentElement('beforebegin', label);
+ }
+ };
+
+ const getInputContainer = inputType => {
+ const inputClass = swalClasses[inputType] ? swalClasses[inputType] : swalClasses.input;
+ return getChildByClass(getPopup(), inputClass);
+ };
+
+ const renderInputType = {};
+
+ renderInputType.text = renderInputType.email = renderInputType.password = renderInputType.number = renderInputType.tel = renderInputType.url = (input, params) => {
+ if (typeof params.inputValue === 'string' || typeof params.inputValue === 'number') {
+ input.value = params.inputValue;
+ } else if (!isPromise(params.inputValue)) {
+ warn("Unexpected type of inputValue! Expected \"string\", \"number\" or \"Promise\", got \"".concat(typeof params.inputValue, "\""));
+ }
+
+ setInputLabel(input, input, params);
+ setInputPlaceholder(input, params);
+ input.type = params.input;
+ return input;
+ };
+
+ renderInputType.file = (input, params) => {
+ setInputLabel(input, input, params);
+ setInputPlaceholder(input, params);
+ return input;
+ };
+
+ renderInputType.range = (range, params) => {
+ const rangeInput = range.querySelector('input');
+ const rangeOutput = range.querySelector('output');
+ rangeInput.value = params.inputValue;
+ rangeInput.type = params.input;
+ rangeOutput.value = params.inputValue;
+ setInputLabel(rangeInput, range, params);
+ return range;
+ };
+
+ renderInputType.select = (select, params) => {
+ select.textContent = '';
+
+ if (params.inputPlaceholder) {
+ const placeholder = document.createElement('option');
+ setInnerHtml(placeholder, params.inputPlaceholder);
+ placeholder.value = '';
+ placeholder.disabled = true;
+ placeholder.selected = true;
+ select.appendChild(placeholder);
+ }
+
+ setInputLabel(select, select, params);
+ return select;
+ };
+
+ renderInputType.radio = radio => {
+ radio.textContent = '';
+ return radio;
+ };
+
+ renderInputType.checkbox = (checkboxContainer, params) => {
+ const checkbox = getInput(getPopup(), 'checkbox');
+ checkbox.value = 1;
+ checkbox.id = swalClasses.checkbox;
+ checkbox.checked = Boolean(params.inputValue);
+ const label = checkboxContainer.querySelector('span');
+ setInnerHtml(label, params.inputPlaceholder);
+ return checkboxContainer;
+ };
+
+ renderInputType.textarea = (textarea, params) => {
+ textarea.value = params.inputValue;
+ setInputPlaceholder(textarea, params);
+ setInputLabel(textarea, textarea, params);
+
+ const getMargin = el => parseInt(window.getComputedStyle(el).marginLeft) + parseInt(window.getComputedStyle(el).marginRight);
+
+ setTimeout(() => {
+ // #2291
+ if ('MutationObserver' in window) {
+ // #1699
+ const initialPopupWidth = parseInt(window.getComputedStyle(getPopup()).width);
+
+ const textareaResizeHandler = () => {
+ const textareaWidth = textarea.offsetWidth + getMargin(textarea);
+
+ if (textareaWidth > initialPopupWidth) {
+ getPopup().style.width = "".concat(textareaWidth, "px");
+ } else {
+ getPopup().style.width = null;
+ }
+ };
+
+ new MutationObserver(textareaResizeHandler).observe(textarea, {
+ attributes: true,
+ attributeFilter: ['style']
+ });
+ }
+ });
+ return textarea;
+ };
+
+ const renderContent = (instance, params) => {
+ const htmlContainer = getHtmlContainer();
+ applyCustomClass(htmlContainer, params, 'htmlContainer'); // Content as HTML
+
+ if (params.html) {
+ parseHtmlToContainer(params.html, htmlContainer);
+ show(htmlContainer, 'block'); // Content as plain text
+ } else if (params.text) {
+ htmlContainer.textContent = params.text;
+ show(htmlContainer, 'block'); // No content
+ } else {
+ hide(htmlContainer);
+ }
+
+ renderInput(instance, params);
+ };
+
+ const renderFooter = (instance, params) => {
+ const footer = getFooter();
+ toggle(footer, params.footer);
+
+ if (params.footer) {
+ parseHtmlToContainer(params.footer, footer);
+ } // Custom class
+
+
+ applyCustomClass(footer, params, 'footer');
+ };
+
+ const renderCloseButton = (instance, params) => {
+ const closeButton = getCloseButton();
+ setInnerHtml(closeButton, params.closeButtonHtml); // Custom class
+
+ applyCustomClass(closeButton, params, 'closeButton');
+ toggle(closeButton, params.showCloseButton);
+ closeButton.setAttribute('aria-label', params.closeButtonAriaLabel);
+ };
+
+ const renderIcon = (instance, params) => {
+ const innerParams = privateProps.innerParams.get(instance);
+ const icon = getIcon(); // if the given icon already rendered, apply the styling without re-rendering the icon
+
+ if (innerParams && params.icon === innerParams.icon) {
+ // Custom or default content
+ setContent(icon, params);
+ applyStyles(icon, params);
+ return;
+ }
+
+ if (!params.icon && !params.iconHtml) {
+ return hide(icon);
+ }
+
+ if (params.icon && Object.keys(iconTypes).indexOf(params.icon) === -1) {
+ error("Unknown icon! Expected \"success\", \"error\", \"warning\", \"info\" or \"question\", got \"".concat(params.icon, "\""));
+ return hide(icon);
+ }
+
+ show(icon); // Custom or default content
+
+ setContent(icon, params);
+ applyStyles(icon, params); // Animate icon
+
+ addClass(icon, params.showClass.icon);
+ };
+
+ const applyStyles = (icon, params) => {
+ for (const iconType in iconTypes) {
+ if (params.icon !== iconType) {
+ removeClass(icon, iconTypes[iconType]);
+ }
+ }
+
+ addClass(icon, iconTypes[params.icon]); // Icon color
+
+ setColor(icon, params); // Success icon background color
+
+ adjustSuccessIconBackgoundColor(); // Custom class
+
+ applyCustomClass(icon, params, 'icon');
+ }; // Adjust success icon background color to match the popup background color
+
+
+ const adjustSuccessIconBackgoundColor = () => {
+ const popup = getPopup();
+ const popupBackgroundColor = window.getComputedStyle(popup).getPropertyValue('background-color');
+ const successIconParts = popup.querySelectorAll('[class^=swal2-success-circular-line], .swal2-success-fix');
+
+ for (let i = 0; i < successIconParts.length; i++) {
+ successIconParts[i].style.backgroundColor = popupBackgroundColor;
+ }
+ };
+
+ const setContent = (icon, params) => {
+ icon.textContent = '';
+
+ if (params.iconHtml) {
+ setInnerHtml(icon, iconContent(params.iconHtml));
+ } else if (params.icon === 'success') {
+ setInnerHtml(icon, "\n
\n \n
\n
\n ");
+ } else if (params.icon === 'error') {
+ setInnerHtml(icon, "\n \n \n \n \n ");
+ } else {
+ const defaultIconHtml = {
+ question: '?',
+ warning: '!',
+ info: 'i'
+ };
+ setInnerHtml(icon, iconContent(defaultIconHtml[params.icon]));
+ }
+ };
+
+ const setColor = (icon, params) => {
+ if (!params.iconColor) {
+ return;
+ }
+
+ icon.style.color = params.iconColor;
+ icon.style.borderColor = params.iconColor;
+
+ for (const sel of ['.swal2-success-line-tip', '.swal2-success-line-long', '.swal2-x-mark-line-left', '.swal2-x-mark-line-right']) {
+ setStyle(icon, sel, 'backgroundColor', params.iconColor);
+ }
+
+ setStyle(icon, '.swal2-success-ring', 'borderColor', params.iconColor);
+ };
+
+ const iconContent = content => "").concat(content, "
");
+
+ const renderImage = (instance, params) => {
+ const image = getImage();
+
+ if (!params.imageUrl) {
+ return hide(image);
+ }
+
+ show(image, ''); // Src, alt
+
+ image.setAttribute('src', params.imageUrl);
+ image.setAttribute('alt', params.imageAlt); // Width, height
+
+ applyNumericalStyle(image, 'width', params.imageWidth);
+ applyNumericalStyle(image, 'height', params.imageHeight); // Class
+
+ image.className = swalClasses.image;
+ applyCustomClass(image, params, 'image');
+ };
+
+ const createStepElement = step => {
+ const stepEl = document.createElement('li');
+ addClass(stepEl, swalClasses['progress-step']);
+ setInnerHtml(stepEl, step);
+ return stepEl;
+ };
+
+ const createLineElement = params => {
+ const lineEl = document.createElement('li');
+ addClass(lineEl, swalClasses['progress-step-line']);
+
+ if (params.progressStepsDistance) {
+ lineEl.style.width = params.progressStepsDistance;
+ }
+
+ return lineEl;
+ };
+
+ const renderProgressSteps = (instance, params) => {
+ const progressStepsContainer = getProgressSteps();
+
+ if (!params.progressSteps || params.progressSteps.length === 0) {
+ return hide(progressStepsContainer);
+ }
+
+ show(progressStepsContainer);
+ progressStepsContainer.textContent = '';
+
+ if (params.currentProgressStep >= params.progressSteps.length) {
+ warn('Invalid currentProgressStep parameter, it should be less than progressSteps.length ' + '(currentProgressStep like JS arrays starts from 0)');
+ }
+
+ params.progressSteps.forEach((step, index) => {
+ const stepEl = createStepElement(step);
+ progressStepsContainer.appendChild(stepEl);
+
+ if (index === params.currentProgressStep) {
+ addClass(stepEl, swalClasses['active-progress-step']);
+ }
+
+ if (index !== params.progressSteps.length - 1) {
+ const lineEl = createLineElement(params);
+ progressStepsContainer.appendChild(lineEl);
+ }
+ });
+ };
+
+ const renderTitle = (instance, params) => {
+ const title = getTitle();
+ toggle(title, params.title || params.titleText, 'block');
+
+ if (params.title) {
+ parseHtmlToContainer(params.title, title);
+ }
+
+ if (params.titleText) {
+ title.innerText = params.titleText;
+ } // Custom class
+
+
+ applyCustomClass(title, params, 'title');
+ };
+
+ const renderPopup = (instance, params) => {
+ const container = getContainer();
+ const popup = getPopup(); // Width
+
+ if (params.toast) {
+ // #2170
+ applyNumericalStyle(container, 'width', params.width);
+ popup.style.width = '100%';
+ popup.insertBefore(getLoader(), getIcon());
+ } else {
+ applyNumericalStyle(popup, 'width', params.width);
+ } // Padding
+
+
+ applyNumericalStyle(popup, 'padding', params.padding); // Background
+
+ if (params.background) {
+ popup.style.background = params.background;
+ }
+
+ hide(getValidationMessage()); // Classes
+
+ addClasses(popup, params);
+ };
+
+ const addClasses = (popup, params) => {
+ // Default Class + showClass when updating Swal.update({})
+ popup.className = "".concat(swalClasses.popup, " ").concat(isVisible(popup) ? params.showClass.popup : '');
+
+ if (params.toast) {
+ addClass([document.documentElement, document.body], swalClasses['toast-shown']);
+ addClass(popup, swalClasses.toast);
+ } else {
+ addClass(popup, swalClasses.modal);
+ } // Custom class
+
+
+ applyCustomClass(popup, params, 'popup');
+
+ if (typeof params.customClass === 'string') {
+ addClass(popup, params.customClass);
+ } // Icon class (#1842)
+
+
+ if (params.icon) {
+ addClass(popup, swalClasses["icon-".concat(params.icon)]);
+ }
+ };
+
+ const render = (instance, params) => {
+ renderPopup(instance, params);
+ renderContainer(instance, params);
+ renderProgressSteps(instance, params);
+ renderIcon(instance, params);
+ renderImage(instance, params);
+ renderTitle(instance, params);
+ renderCloseButton(instance, params);
+ renderContent(instance, params);
+ renderActions(instance, params);
+ renderFooter(instance, params);
+
+ if (typeof params.didRender === 'function') {
+ params.didRender(getPopup());
+ }
+ };
+
+ /*
+ * Global function to determine if SweetAlert2 popup is shown
+ */
+
+ const isVisible$1 = () => {
+ return isVisible(getPopup());
+ };
+ /*
+ * Global function to click 'Confirm' button
+ */
+
+ const clickConfirm = () => getConfirmButton() && getConfirmButton().click();
+ /*
+ * Global function to click 'Deny' button
+ */
+
+ const clickDeny = () => getDenyButton() && getDenyButton().click();
+ /*
+ * Global function to click 'Cancel' button
+ */
+
+ const clickCancel = () => getCancelButton() && getCancelButton().click();
+
+ function fire(...args) {
+ const Swal = this;
+ return new Swal(...args);
+ }
+
+ /**
+ * Returns an extended version of `Swal` containing `params` as defaults.
+ * Useful for reusing Swal configuration.
+ *
+ * For example:
+ *
+ * Before:
+ * const textPromptOptions = { input: 'text', showCancelButton: true }
+ * const {value: firstName} = await Swal.fire({ ...textPromptOptions, title: 'What is your first name?' })
+ * const {value: lastName} = await Swal.fire({ ...textPromptOptions, title: 'What is your last name?' })
+ *
+ * After:
+ * const TextPrompt = Swal.mixin({ input: 'text', showCancelButton: true })
+ * const {value: firstName} = await TextPrompt('What is your first name?')
+ * const {value: lastName} = await TextPrompt('What is your last name?')
+ *
+ * @param mixinParams
+ */
+ function mixin(mixinParams) {
+ class MixinSwal extends this {
+ _main(params, priorityMixinParams) {
+ return super._main(params, Object.assign({}, mixinParams, priorityMixinParams));
+ }
+
+ }
+
+ return MixinSwal;
+ }
+
+ /**
+ * Shows loader (spinner), this is useful with AJAX requests.
+ * By default the loader be shown instead of the "Confirm" button.
+ */
+
+ const showLoading = buttonToReplace => {
+ let popup = getPopup();
+
+ if (!popup) {
+ Swal.fire();
+ }
+
+ popup = getPopup();
+ const loader = getLoader();
+
+ if (isToast()) {
+ hide(getIcon());
+ } else {
+ replaceButton(popup, buttonToReplace);
+ }
+
+ show(loader);
+ popup.setAttribute('data-loading', true);
+ popup.setAttribute('aria-busy', true);
+ popup.focus();
+ };
+
+ const replaceButton = (popup, buttonToReplace) => {
+ const actions = getActions();
+ const loader = getLoader();
+
+ if (!buttonToReplace && isVisible(getConfirmButton())) {
+ buttonToReplace = getConfirmButton();
+ }
+
+ show(actions);
+
+ if (buttonToReplace) {
+ hide(buttonToReplace);
+ loader.setAttribute('data-button-to-replace', buttonToReplace.className);
+ }
+
+ loader.parentNode.insertBefore(loader, buttonToReplace);
+ addClass([popup, actions], swalClasses.loading);
+ };
+
+ const RESTORE_FOCUS_TIMEOUT = 100;
+
+ const globalState = {};
+
+ const focusPreviousActiveElement = () => {
+ if (globalState.previousActiveElement && globalState.previousActiveElement.focus) {
+ globalState.previousActiveElement.focus();
+ globalState.previousActiveElement = null;
+ } else if (document.body) {
+ document.body.focus();
+ }
+ }; // Restore previous active (focused) element
+
+
+ const restoreActiveElement = returnFocus => {
+ return new Promise(resolve => {
+ if (!returnFocus) {
+ return resolve();
+ }
+
+ const x = window.scrollX;
+ const y = window.scrollY;
+ globalState.restoreFocusTimeout = setTimeout(() => {
+ focusPreviousActiveElement();
+ resolve();
+ }, RESTORE_FOCUS_TIMEOUT); // issues/900
+
+ window.scrollTo(x, y);
+ });
+ };
+
+ /**
+ * If `timer` parameter is set, returns number of milliseconds of timer remained.
+ * Otherwise, returns undefined.
+ */
+
+ const getTimerLeft = () => {
+ return globalState.timeout && globalState.timeout.getTimerLeft();
+ };
+ /**
+ * Stop timer. Returns number of milliseconds of timer remained.
+ * If `timer` parameter isn't set, returns undefined.
+ */
+
+ const stopTimer = () => {
+ if (globalState.timeout) {
+ stopTimerProgressBar();
+ return globalState.timeout.stop();
+ }
+ };
+ /**
+ * Resume timer. Returns number of milliseconds of timer remained.
+ * If `timer` parameter isn't set, returns undefined.
+ */
+
+ const resumeTimer = () => {
+ if (globalState.timeout) {
+ const remaining = globalState.timeout.start();
+ animateTimerProgressBar(remaining);
+ return remaining;
+ }
+ };
+ /**
+ * Resume timer. Returns number of milliseconds of timer remained.
+ * If `timer` parameter isn't set, returns undefined.
+ */
+
+ const toggleTimer = () => {
+ const timer = globalState.timeout;
+ return timer && (timer.running ? stopTimer() : resumeTimer());
+ };
+ /**
+ * Increase timer. Returns number of milliseconds of an updated timer.
+ * If `timer` parameter isn't set, returns undefined.
+ */
+
+ const increaseTimer = n => {
+ if (globalState.timeout) {
+ const remaining = globalState.timeout.increase(n);
+ animateTimerProgressBar(remaining, true);
+ return remaining;
+ }
+ };
+ /**
+ * Check if timer is running. Returns true if timer is running
+ * or false if timer is paused or stopped.
+ * If `timer` parameter isn't set, returns undefined
+ */
+
+ const isTimerRunning = () => {
+ return globalState.timeout && globalState.timeout.isRunning();
+ };
+
+ let bodyClickListenerAdded = false;
+ const clickHandlers = {};
+ function bindClickHandler(attr = 'data-swal-template') {
+ clickHandlers[attr] = this;
+
+ if (!bodyClickListenerAdded) {
+ document.body.addEventListener('click', bodyClickListener);
+ bodyClickListenerAdded = true;
+ }
+ }
+
+ const bodyClickListener = event => {
+ for (let el = event.target; el && el !== document; el = el.parentNode) {
+ for (const attr in clickHandlers) {
+ const template = el.getAttribute(attr);
+
+ if (template) {
+ clickHandlers[attr].fire({
+ template
+ });
+ return;
+ }
+ }
+ }
+ };
+
+ const defaultParams = {
+ title: '',
+ titleText: '',
+ text: '',
+ html: '',
+ footer: '',
+ icon: undefined,
+ iconColor: undefined,
+ iconHtml: undefined,
+ template: undefined,
+ toast: false,
+ showClass: {
+ popup: 'swal2-show',
+ backdrop: 'swal2-backdrop-show',
+ icon: 'swal2-icon-show'
+ },
+ hideClass: {
+ popup: 'swal2-hide',
+ backdrop: 'swal2-backdrop-hide',
+ icon: 'swal2-icon-hide'
+ },
+ customClass: {},
+ target: 'body',
+ backdrop: true,
+ heightAuto: true,
+ allowOutsideClick: true,
+ allowEscapeKey: true,
+ allowEnterKey: true,
+ stopKeydownPropagation: true,
+ keydownListenerCapture: false,
+ showConfirmButton: true,
+ showDenyButton: false,
+ showCancelButton: false,
+ preConfirm: undefined,
+ preDeny: undefined,
+ confirmButtonText: 'OK',
+ confirmButtonAriaLabel: '',
+ confirmButtonColor: undefined,
+ denyButtonText: 'No',
+ denyButtonAriaLabel: '',
+ denyButtonColor: undefined,
+ cancelButtonText: 'Cancel',
+ cancelButtonAriaLabel: '',
+ cancelButtonColor: undefined,
+ buttonsStyling: true,
+ reverseButtons: false,
+ focusConfirm: true,
+ focusDeny: false,
+ focusCancel: false,
+ returnFocus: true,
+ showCloseButton: false,
+ closeButtonHtml: '×',
+ closeButtonAriaLabel: 'Close this dialog',
+ loaderHtml: '',
+ showLoaderOnConfirm: false,
+ showLoaderOnDeny: false,
+ imageUrl: undefined,
+ imageWidth: undefined,
+ imageHeight: undefined,
+ imageAlt: '',
+ timer: undefined,
+ timerProgressBar: false,
+ width: undefined,
+ padding: undefined,
+ background: undefined,
+ input: undefined,
+ inputPlaceholder: '',
+ inputLabel: '',
+ inputValue: '',
+ inputOptions: {},
+ inputAutoTrim: true,
+ inputAttributes: {},
+ inputValidator: undefined,
+ returnInputValueOnDeny: false,
+ validationMessage: undefined,
+ grow: false,
+ position: 'center',
+ progressSteps: [],
+ currentProgressStep: undefined,
+ progressStepsDistance: undefined,
+ willOpen: undefined,
+ didOpen: undefined,
+ didRender: undefined,
+ willClose: undefined,
+ didClose: undefined,
+ didDestroy: undefined,
+ scrollbarPadding: true
+ };
+ const updatableParams = ['allowEscapeKey', 'allowOutsideClick', 'background', 'buttonsStyling', 'cancelButtonAriaLabel', 'cancelButtonColor', 'cancelButtonText', 'closeButtonAriaLabel', 'closeButtonHtml', 'confirmButtonAriaLabel', 'confirmButtonColor', 'confirmButtonText', 'currentProgressStep', 'customClass', 'denyButtonAriaLabel', 'denyButtonColor', 'denyButtonText', 'didClose', 'didDestroy', 'footer', 'hideClass', 'html', 'icon', 'iconColor', 'iconHtml', 'imageAlt', 'imageHeight', 'imageUrl', 'imageWidth', 'preConfirm', 'preDeny', 'progressSteps', 'returnFocus', 'reverseButtons', 'showCancelButton', 'showCloseButton', 'showConfirmButton', 'showDenyButton', 'text', 'title', 'titleText', 'willClose'];
+ const deprecatedParams = {};
+ const toastIncompatibleParams = ['allowOutsideClick', 'allowEnterKey', 'backdrop', 'focusConfirm', 'focusDeny', 'focusCancel', 'returnFocus', 'heightAuto', 'keydownListenerCapture'];
+ /**
+ * Is valid parameter
+ * @param {String} paramName
+ */
+
+ const isValidParameter = paramName => {
+ return Object.prototype.hasOwnProperty.call(defaultParams, paramName);
+ };
+ /**
+ * Is valid parameter for Swal.update() method
+ * @param {String} paramName
+ */
+
+ const isUpdatableParameter = paramName => {
+ return updatableParams.indexOf(paramName) !== -1;
+ };
+ /**
+ * Is deprecated parameter
+ * @param {String} paramName
+ */
+
+ const isDeprecatedParameter = paramName => {
+ return deprecatedParams[paramName];
+ };
+
+ const checkIfParamIsValid = param => {
+ if (!isValidParameter(param)) {
+ warn("Unknown parameter \"".concat(param, "\""));
+ }
+ };
+
+ const checkIfToastParamIsValid = param => {
+ if (toastIncompatibleParams.includes(param)) {
+ warn("The parameter \"".concat(param, "\" is incompatible with toasts"));
+ }
+ };
+
+ const checkIfParamIsDeprecated = param => {
+ if (isDeprecatedParameter(param)) {
+ warnAboutDeprecation(param, isDeprecatedParameter(param));
+ }
+ };
+ /**
+ * Show relevant warnings for given params
+ *
+ * @param params
+ */
+
+
+ const showWarningsForParams = params => {
+ if (!params.backdrop && params.allowOutsideClick) {
+ warn('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`');
+ }
+
+ for (const param in params) {
+ checkIfParamIsValid(param);
+
+ if (params.toast) {
+ checkIfToastParamIsValid(param);
+ }
+
+ checkIfParamIsDeprecated(param);
+ }
+ };
+
+
+
+ var staticMethods = /*#__PURE__*/Object.freeze({
+ isValidParameter: isValidParameter,
+ isUpdatableParameter: isUpdatableParameter,
+ isDeprecatedParameter: isDeprecatedParameter,
+ argsToParams: argsToParams,
+ isVisible: isVisible$1,
+ clickConfirm: clickConfirm,
+ clickDeny: clickDeny,
+ clickCancel: clickCancel,
+ getContainer: getContainer,
+ getPopup: getPopup,
+ getTitle: getTitle,
+ getHtmlContainer: getHtmlContainer,
+ getImage: getImage,
+ getIcon: getIcon,
+ getInputLabel: getInputLabel,
+ getCloseButton: getCloseButton,
+ getActions: getActions,
+ getConfirmButton: getConfirmButton,
+ getDenyButton: getDenyButton,
+ getCancelButton: getCancelButton,
+ getLoader: getLoader,
+ getFooter: getFooter,
+ getTimerProgressBar: getTimerProgressBar,
+ getFocusableElements: getFocusableElements,
+ getValidationMessage: getValidationMessage,
+ isLoading: isLoading,
+ fire: fire,
+ mixin: mixin,
+ showLoading: showLoading,
+ enableLoading: showLoading,
+ getTimerLeft: getTimerLeft,
+ stopTimer: stopTimer,
+ resumeTimer: resumeTimer,
+ toggleTimer: toggleTimer,
+ increaseTimer: increaseTimer,
+ isTimerRunning: isTimerRunning,
+ bindClickHandler: bindClickHandler
+ });
+
+ /**
+ * Hides loader and shows back the button which was hidden by .showLoading()
+ */
+
+ function hideLoading() {
+ // do nothing if popup is closed
+ const innerParams = privateProps.innerParams.get(this);
+
+ if (!innerParams) {
+ return;
+ }
+
+ const domCache = privateProps.domCache.get(this);
+ hide(domCache.loader);
+
+ if (isToast()) {
+ if (innerParams.icon) {
+ show(getIcon());
+ }
+ } else {
+ showRelatedButton(domCache);
+ }
+
+ removeClass([domCache.popup, domCache.actions], swalClasses.loading);
+ domCache.popup.removeAttribute('aria-busy');
+ domCache.popup.removeAttribute('data-loading');
+ domCache.confirmButton.disabled = false;
+ domCache.denyButton.disabled = false;
+ domCache.cancelButton.disabled = false;
+ }
+
+ const showRelatedButton = domCache => {
+ const buttonToReplace = domCache.popup.getElementsByClassName(domCache.loader.getAttribute('data-button-to-replace'));
+
+ if (buttonToReplace.length) {
+ show(buttonToReplace[0], 'inline-block');
+ } else if (allButtonsAreHidden()) {
+ hide(domCache.actions);
+ }
+ };
+
+ function getInput$1(instance) {
+ const innerParams = privateProps.innerParams.get(instance || this);
+ const domCache = privateProps.domCache.get(instance || this);
+
+ if (!domCache) {
+ return null;
+ }
+
+ return getInput(domCache.popup, innerParams.input);
+ }
+
+ const fixScrollbar = () => {
+ // for queues, do not do this more than once
+ if (states.previousBodyPadding !== null) {
+ return;
+ } // if the body has overflow
+
+
+ if (document.body.scrollHeight > window.innerHeight) {
+ // add padding so the content doesn't shift after removal of scrollbar
+ states.previousBodyPadding = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right'));
+ document.body.style.paddingRight = "".concat(states.previousBodyPadding + measureScrollbar(), "px");
+ }
+ };
+ const undoScrollbar = () => {
+ if (states.previousBodyPadding !== null) {
+ document.body.style.paddingRight = "".concat(states.previousBodyPadding, "px");
+ states.previousBodyPadding = null;
+ }
+ };
+
+ /* istanbul ignore file */
+
+ const iOSfix = () => {
+ const iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1;
+
+ if (iOS && !hasClass(document.body, swalClasses.iosfix)) {
+ const offset = document.body.scrollTop;
+ document.body.style.top = "".concat(offset * -1, "px");
+ addClass(document.body, swalClasses.iosfix);
+ lockBodyScroll();
+ addBottomPaddingForTallPopups(); // #1948
+ }
+ };
+
+ const addBottomPaddingForTallPopups = () => {
+ const safari = !navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i);
+
+ if (safari) {
+ const bottomPanelHeight = 44;
+
+ if (getPopup().scrollHeight > window.innerHeight - bottomPanelHeight) {
+ getContainer().style.paddingBottom = "".concat(bottomPanelHeight, "px");
+ }
+ }
+ };
+
+ const lockBodyScroll = () => {
+ // #1246
+ const container = getContainer();
+ let preventTouchMove;
+
+ container.ontouchstart = e => {
+ preventTouchMove = shouldPreventTouchMove(e);
+ };
+
+ container.ontouchmove = e => {
+ if (preventTouchMove) {
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ };
+ };
+
+ const shouldPreventTouchMove = event => {
+ const target = event.target;
+ const container = getContainer();
+
+ if (isStylys(event) || isZoom(event)) {
+ return false;
+ }
+
+ if (target === container) {
+ return true;
+ }
+
+ if (!isScrollable(container) && target.tagName !== 'INPUT' && // #1603
+ target.tagName !== 'TEXTAREA' && // #2266
+ !(isScrollable(getHtmlContainer()) && // #1944
+ getHtmlContainer().contains(target))) {
+ return true;
+ }
+
+ return false;
+ };
+
+ const isStylys = event => {
+ // #1786
+ return event.touches && event.touches.length && event.touches[0].touchType === 'stylus';
+ };
+
+ const isZoom = event => {
+ // #1891
+ return event.touches && event.touches.length > 1;
+ };
+
+ const undoIOSfix = () => {
+ if (hasClass(document.body, swalClasses.iosfix)) {
+ const offset = parseInt(document.body.style.top, 10);
+ removeClass(document.body, swalClasses.iosfix);
+ document.body.style.top = '';
+ document.body.scrollTop = offset * -1;
+ }
+ };
+
+ // Adding aria-hidden="true" to elements outside of the active modal dialog ensures that
+ // elements not within the active modal dialog will not be surfaced if a user opens a screen
+ // reader’s list of elements (headings, form controls, landmarks, etc.) in the document.
+
+ const setAriaHidden = () => {
+ const bodyChildren = toArray(document.body.children);
+ bodyChildren.forEach(el => {
+ if (el === getContainer() || el.contains(getContainer())) {
+ return;
+ }
+
+ if (el.hasAttribute('aria-hidden')) {
+ el.setAttribute('data-previous-aria-hidden', el.getAttribute('aria-hidden'));
+ }
+
+ el.setAttribute('aria-hidden', 'true');
+ });
+ };
+ const unsetAriaHidden = () => {
+ const bodyChildren = toArray(document.body.children);
+ bodyChildren.forEach(el => {
+ if (el.hasAttribute('data-previous-aria-hidden')) {
+ el.setAttribute('aria-hidden', el.getAttribute('data-previous-aria-hidden'));
+ el.removeAttribute('data-previous-aria-hidden');
+ } else {
+ el.removeAttribute('aria-hidden');
+ }
+ });
+ };
+
+ /**
+ * This module containts `WeakMap`s for each effectively-"private property" that a `Swal` has.
+ * For example, to set the private property "foo" of `this` to "bar", you can `privateProps.foo.set(this, 'bar')`
+ * This is the approach that Babel will probably take to implement private methods/fields
+ * https://github.com/tc39/proposal-private-methods
+ * https://github.com/babel/babel/pull/7555
+ * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module*
+ * then we can use that language feature.
+ */
+ var privateMethods = {
+ swalPromiseResolve: new WeakMap()
+ };
+
+ /*
+ * Instance method to close sweetAlert
+ */
+
+ function removePopupAndResetState(instance, container, returnFocus, didClose) {
+ if (isToast()) {
+ triggerDidCloseAndDispose(instance, didClose);
+ } else {
+ restoreActiveElement(returnFocus).then(() => triggerDidCloseAndDispose(instance, didClose));
+ globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, {
+ capture: globalState.keydownListenerCapture
+ });
+ globalState.keydownHandlerAdded = false;
+ }
+
+ const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); // workaround for #2088
+ // for some reason removing the container in Safari will scroll the document to bottom
+
+ if (isSafari) {
+ container.setAttribute('style', 'display:none !important');
+ container.removeAttribute('class');
+ container.innerHTML = '';
+ } else {
+ container.remove();
+ }
+
+ if (isModal()) {
+ undoScrollbar();
+ undoIOSfix();
+ unsetAriaHidden();
+ }
+
+ removeBodyClasses();
+ }
+
+ function removeBodyClasses() {
+ removeClass([document.documentElement, document.body], [swalClasses.shown, swalClasses['height-auto'], swalClasses['no-backdrop'], swalClasses['toast-shown']]);
+ }
+
+ function close(resolveValue) {
+ const popup = getPopup();
+
+ if (!popup) {
+ return;
+ }
+
+ resolveValue = prepareResolveValue(resolveValue);
+ const innerParams = privateProps.innerParams.get(this);
+
+ if (!innerParams || hasClass(popup, innerParams.hideClass.popup)) {
+ return;
+ }
+
+ const swalPromiseResolve = privateMethods.swalPromiseResolve.get(this);
+ removeClass(popup, innerParams.showClass.popup);
+ addClass(popup, innerParams.hideClass.popup);
+ const backdrop = getContainer();
+ removeClass(backdrop, innerParams.showClass.backdrop);
+ addClass(backdrop, innerParams.hideClass.backdrop);
+ handlePopupAnimation(this, popup, innerParams); // Resolve Swal promise
+
+ swalPromiseResolve(resolveValue);
+ }
+
+ const prepareResolveValue = resolveValue => {
+ // When user calls Swal.close()
+ if (typeof resolveValue === 'undefined') {
+ return {
+ isConfirmed: false,
+ isDenied: false,
+ isDismissed: true
+ };
+ }
+
+ return Object.assign({
+ isConfirmed: false,
+ isDenied: false,
+ isDismissed: false
+ }, resolveValue);
+ };
+
+ const handlePopupAnimation = (instance, popup, innerParams) => {
+ const container = getContainer(); // If animation is supported, animate
+
+ const animationIsSupported = animationEndEvent && hasCssAnimation(popup);
+
+ if (typeof innerParams.willClose === 'function') {
+ innerParams.willClose(popup);
+ }
+
+ if (animationIsSupported) {
+ animatePopup(instance, popup, container, innerParams.returnFocus, innerParams.didClose);
+ } else {
+ // Otherwise, remove immediately
+ removePopupAndResetState(instance, container, innerParams.returnFocus, innerParams.didClose);
+ }
+ };
+
+ const animatePopup = (instance, popup, container, returnFocus, didClose) => {
+ globalState.swalCloseEventFinishedCallback = removePopupAndResetState.bind(null, instance, container, returnFocus, didClose);
+ popup.addEventListener(animationEndEvent, function (e) {
+ if (e.target === popup) {
+ globalState.swalCloseEventFinishedCallback();
+ delete globalState.swalCloseEventFinishedCallback;
+ }
+ });
+ };
+
+ const triggerDidCloseAndDispose = (instance, didClose) => {
+ setTimeout(() => {
+ if (typeof didClose === 'function') {
+ didClose.bind(instance.params)();
+ }
+
+ instance._destroy();
+ });
+ };
+
+ function setButtonsDisabled(instance, buttons, disabled) {
+ const domCache = privateProps.domCache.get(instance);
+ buttons.forEach(button => {
+ domCache[button].disabled = disabled;
+ });
+ }
+
+ function setInputDisabled(input, disabled) {
+ if (!input) {
+ return false;
+ }
+
+ if (input.type === 'radio') {
+ const radiosContainer = input.parentNode.parentNode;
+ const radios = radiosContainer.querySelectorAll('input');
+
+ for (let i = 0; i < radios.length; i++) {
+ radios[i].disabled = disabled;
+ }
+ } else {
+ input.disabled = disabled;
+ }
+ }
+
+ function enableButtons() {
+ setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], false);
+ }
+ function disableButtons() {
+ setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], true);
+ }
+ function enableInput() {
+ return setInputDisabled(this.getInput(), false);
+ }
+ function disableInput() {
+ return setInputDisabled(this.getInput(), true);
+ }
+
+ function showValidationMessage(error) {
+ const domCache = privateProps.domCache.get(this);
+ const params = privateProps.innerParams.get(this);
+ setInnerHtml(domCache.validationMessage, error);
+ domCache.validationMessage.className = swalClasses['validation-message'];
+
+ if (params.customClass && params.customClass.validationMessage) {
+ addClass(domCache.validationMessage, params.customClass.validationMessage);
+ }
+
+ show(domCache.validationMessage);
+ const input = this.getInput();
+
+ if (input) {
+ input.setAttribute('aria-invalid', true);
+ input.setAttribute('aria-describedby', swalClasses['validation-message']);
+ focusInput(input);
+ addClass(input, swalClasses.inputerror);
+ }
+ } // Hide block with validation message
+
+ function resetValidationMessage$1() {
+ const domCache = privateProps.domCache.get(this);
+
+ if (domCache.validationMessage) {
+ hide(domCache.validationMessage);
+ }
+
+ const input = this.getInput();
+
+ if (input) {
+ input.removeAttribute('aria-invalid');
+ input.removeAttribute('aria-describedby');
+ removeClass(input, swalClasses.inputerror);
+ }
+ }
+
+ function getProgressSteps$1() {
+ const domCache = privateProps.domCache.get(this);
+ return domCache.progressSteps;
+ }
+
+ class Timer {
+ constructor(callback, delay) {
+ this.callback = callback;
+ this.remaining = delay;
+ this.running = false;
+ this.start();
+ }
+
+ start() {
+ if (!this.running) {
+ this.running = true;
+ this.started = new Date();
+ this.id = setTimeout(this.callback, this.remaining);
+ }
+
+ return this.remaining;
+ }
+
+ stop() {
+ if (this.running) {
+ this.running = false;
+ clearTimeout(this.id);
+ this.remaining -= new Date() - this.started;
+ }
+
+ return this.remaining;
+ }
+
+ increase(n) {
+ const running = this.running;
+
+ if (running) {
+ this.stop();
+ }
+
+ this.remaining += n;
+
+ if (running) {
+ this.start();
+ }
+
+ return this.remaining;
+ }
+
+ getTimerLeft() {
+ if (this.running) {
+ this.stop();
+ this.start();
+ }
+
+ return this.remaining;
+ }
+
+ isRunning() {
+ return this.running;
+ }
+
+ }
+
+ var defaultInputValidators = {
+ email: (string, validationMessage) => {
+ return /^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid email address');
+ },
+ url: (string, validationMessage) => {
+ // taken from https://stackoverflow.com/a/3809435 with a small change from #1306 and #2013
+ return /^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid URL');
+ }
+ };
+
+ function setDefaultInputValidators(params) {
+ // Use default `inputValidator` for supported input types if not provided
+ if (!params.inputValidator) {
+ Object.keys(defaultInputValidators).forEach(key => {
+ if (params.input === key) {
+ params.inputValidator = defaultInputValidators[key];
+ }
+ });
+ }
+ }
+
+ function validateCustomTargetElement(params) {
+ // Determine if the custom target element is valid
+ if (!params.target || typeof params.target === 'string' && !document.querySelector(params.target) || typeof params.target !== 'string' && !params.target.appendChild) {
+ warn('Target parameter is not valid, defaulting to "body"');
+ params.target = 'body';
+ }
+ }
+ /**
+ * Set type, text and actions on popup
+ *
+ * @param params
+ * @returns {boolean}
+ */
+
+
+ function setParameters(params) {
+ setDefaultInputValidators(params); // showLoaderOnConfirm && preConfirm
+
+ if (params.showLoaderOnConfirm && !params.preConfirm) {
+ warn('showLoaderOnConfirm is set to true, but preConfirm is not defined.\n' + 'showLoaderOnConfirm should be used together with preConfirm, see usage example:\n' + 'https://sweetalert2.github.io/#ajax-request');
+ }
+
+ validateCustomTargetElement(params); // Replace newlines with in title
+
+ if (typeof params.title === 'string') {
+ params.title = params.title.split('\n').join(' ');
+ }
+
+ init(params);
+ }
+
+ const swalStringParams = ['swal-title', 'swal-html', 'swal-footer'];
+ const getTemplateParams = params => {
+ const template = typeof params.template === 'string' ? document.querySelector(params.template) : params.template;
+
+ if (!template) {
+ return {};
+ }
+
+ const templateContent = template.content;
+ showWarningsForElements(templateContent);
+ const result = Object.assign(getSwalParams(templateContent), getSwalButtons(templateContent), getSwalImage(templateContent), getSwalIcon(templateContent), getSwalInput(templateContent), getSwalStringParams(templateContent, swalStringParams));
+ return result;
+ };
+
+ const getSwalParams = templateContent => {
+ const result = {};
+ toArray(templateContent.querySelectorAll('swal-param')).forEach(param => {
+ showWarningsForAttributes(param, ['name', 'value']);
+ const paramName = param.getAttribute('name');
+ let value = param.getAttribute('value');
+
+ if (typeof defaultParams[paramName] === 'boolean' && value === 'false') {
+ value = false;
+ }
+
+ if (typeof defaultParams[paramName] === 'object') {
+ value = JSON.parse(value);
+ }
+
+ result[paramName] = value;
+ });
+ return result;
+ };
+
+ const getSwalButtons = templateContent => {
+ const result = {};
+ toArray(templateContent.querySelectorAll('swal-button')).forEach(button => {
+ showWarningsForAttributes(button, ['type', 'color', 'aria-label']);
+ const type = button.getAttribute('type');
+ result["".concat(type, "ButtonText")] = button.innerHTML;
+ result["show".concat(capitalizeFirstLetter(type), "Button")] = true;
+
+ if (button.hasAttribute('color')) {
+ result["".concat(type, "ButtonColor")] = button.getAttribute('color');
+ }
+
+ if (button.hasAttribute('aria-label')) {
+ result["".concat(type, "ButtonAriaLabel")] = button.getAttribute('aria-label');
+ }
+ });
+ return result;
+ };
+
+ const getSwalImage = templateContent => {
+ const result = {};
+ const image = templateContent.querySelector('swal-image');
+
+ if (image) {
+ showWarningsForAttributes(image, ['src', 'width', 'height', 'alt']);
+
+ if (image.hasAttribute('src')) {
+ result.imageUrl = image.getAttribute('src');
+ }
+
+ if (image.hasAttribute('width')) {
+ result.imageWidth = image.getAttribute('width');
+ }
+
+ if (image.hasAttribute('height')) {
+ result.imageHeight = image.getAttribute('height');
+ }
+
+ if (image.hasAttribute('alt')) {
+ result.imageAlt = image.getAttribute('alt');
+ }
+ }
+
+ return result;
+ };
+
+ const getSwalIcon = templateContent => {
+ const result = {};
+ const icon = templateContent.querySelector('swal-icon');
+
+ if (icon) {
+ showWarningsForAttributes(icon, ['type', 'color']);
+
+ if (icon.hasAttribute('type')) {
+ result.icon = icon.getAttribute('type');
+ }
+
+ if (icon.hasAttribute('color')) {
+ result.iconColor = icon.getAttribute('color');
+ }
+
+ result.iconHtml = icon.innerHTML;
+ }
+
+ return result;
+ };
+
+ const getSwalInput = templateContent => {
+ const result = {};
+ const input = templateContent.querySelector('swal-input');
+
+ if (input) {
+ showWarningsForAttributes(input, ['type', 'label', 'placeholder', 'value']);
+ result.input = input.getAttribute('type') || 'text';
+
+ if (input.hasAttribute('label')) {
+ result.inputLabel = input.getAttribute('label');
+ }
+
+ if (input.hasAttribute('placeholder')) {
+ result.inputPlaceholder = input.getAttribute('placeholder');
+ }
+
+ if (input.hasAttribute('value')) {
+ result.inputValue = input.getAttribute('value');
+ }
+ }
+
+ const inputOptions = templateContent.querySelectorAll('swal-input-option');
+
+ if (inputOptions.length) {
+ result.inputOptions = {};
+ toArray(inputOptions).forEach(option => {
+ showWarningsForAttributes(option, ['value']);
+ const optionValue = option.getAttribute('value');
+ const optionName = option.innerHTML;
+ result.inputOptions[optionValue] = optionName;
+ });
+ }
+
+ return result;
+ };
+
+ const getSwalStringParams = (templateContent, paramNames) => {
+ const result = {};
+
+ for (const i in paramNames) {
+ const paramName = paramNames[i];
+ const tag = templateContent.querySelector(paramName);
+
+ if (tag) {
+ showWarningsForAttributes(tag, []);
+ result[paramName.replace(/^swal-/, '')] = tag.innerHTML.trim();
+ }
+ }
+
+ return result;
+ };
+
+ const showWarningsForElements = template => {
+ const allowedElements = swalStringParams.concat(['swal-param', 'swal-button', 'swal-image', 'swal-icon', 'swal-input', 'swal-input-option']);
+ toArray(template.children).forEach(el => {
+ const tagName = el.tagName.toLowerCase();
+
+ if (allowedElements.indexOf(tagName) === -1) {
+ warn("Unrecognized element <".concat(tagName, ">"));
+ }
+ });
+ };
+
+ const showWarningsForAttributes = (el, allowedAttributes) => {
+ toArray(el.attributes).forEach(attribute => {
+ if (allowedAttributes.indexOf(attribute.name) === -1) {
+ warn(["Unrecognized attribute \"".concat(attribute.name, "\" on <").concat(el.tagName.toLowerCase(), ">."), "".concat(allowedAttributes.length ? "Allowed attributes are: ".concat(allowedAttributes.join(', ')) : 'To set the value, use HTML within the element.')]);
+ }
+ });
+ };
+
+ const SHOW_CLASS_TIMEOUT = 10;
+ /**
+ * Open popup, add necessary classes and styles, fix scrollbar
+ *
+ * @param params
+ */
+
+ const openPopup = params => {
+ const container = getContainer();
+ const popup = getPopup();
+
+ if (typeof params.willOpen === 'function') {
+ params.willOpen(popup);
+ }
+
+ const bodyStyles = window.getComputedStyle(document.body);
+ const initialBodyOverflow = bodyStyles.overflowY;
+ addClasses$1(container, popup, params); // scrolling is 'hidden' until animation is done, after that 'auto'
+
+ setTimeout(() => {
+ setScrollingVisibility(container, popup);
+ }, SHOW_CLASS_TIMEOUT);
+
+ if (isModal()) {
+ fixScrollContainer(container, params.scrollbarPadding, initialBodyOverflow);
+ setAriaHidden();
+ }
+
+ if (!isToast() && !globalState.previousActiveElement) {
+ globalState.previousActiveElement = document.activeElement;
+ }
+
+ if (typeof params.didOpen === 'function') {
+ setTimeout(() => params.didOpen(popup));
+ }
+
+ removeClass(container, swalClasses['no-transition']);
+ };
+
+ const swalOpenAnimationFinished = event => {
+ const popup = getPopup();
+
+ if (event.target !== popup) {
+ return;
+ }
+
+ const container = getContainer();
+ popup.removeEventListener(animationEndEvent, swalOpenAnimationFinished);
+ container.style.overflowY = 'auto';
+ };
+
+ const setScrollingVisibility = (container, popup) => {
+ if (animationEndEvent && hasCssAnimation(popup)) {
+ container.style.overflowY = 'hidden';
+ popup.addEventListener(animationEndEvent, swalOpenAnimationFinished);
+ } else {
+ container.style.overflowY = 'auto';
+ }
+ };
+
+ const fixScrollContainer = (container, scrollbarPadding, initialBodyOverflow) => {
+ iOSfix();
+
+ if (scrollbarPadding && initialBodyOverflow !== 'hidden') {
+ fixScrollbar();
+ } // sweetalert2/issues/1247
+
+
+ setTimeout(() => {
+ container.scrollTop = 0;
+ });
+ };
+
+ const addClasses$1 = (container, popup, params) => {
+ addClass(container, params.showClass.backdrop); // the workaround with setting/unsetting opacity is needed for #2019 and 2059
+
+ popup.style.setProperty('opacity', '0', 'important');
+ show(popup, 'grid');
+ setTimeout(() => {
+ // Animate popup right after showing it
+ addClass(popup, params.showClass.popup); // and remove the opacity workaround
+
+ popup.style.removeProperty('opacity');
+ }, SHOW_CLASS_TIMEOUT); // 10ms in order to fix #2062
+
+ addClass([document.documentElement, document.body], swalClasses.shown);
+
+ if (params.heightAuto && params.backdrop && !params.toast) {
+ addClass([document.documentElement, document.body], swalClasses['height-auto']);
+ }
+ };
+
+ const handleInputOptionsAndValue = (instance, params) => {
+ if (params.input === 'select' || params.input === 'radio') {
+ handleInputOptions(instance, params);
+ } else if (['text', 'email', 'number', 'tel', 'textarea'].includes(params.input) && (hasToPromiseFn(params.inputValue) || isPromise(params.inputValue))) {
+ showLoading(getConfirmButton());
+ handleInputValue(instance, params);
+ }
+ };
+ const getInputValue = (instance, innerParams) => {
+ const input = instance.getInput();
+
+ if (!input) {
+ return null;
+ }
+
+ switch (innerParams.input) {
+ case 'checkbox':
+ return getCheckboxValue(input);
+
+ case 'radio':
+ return getRadioValue(input);
+
+ case 'file':
+ return getFileValue(input);
+
+ default:
+ return innerParams.inputAutoTrim ? input.value.trim() : input.value;
+ }
+ };
+
+ const getCheckboxValue = input => input.checked ? 1 : 0;
+
+ const getRadioValue = input => input.checked ? input.value : null;
+
+ const getFileValue = input => input.files.length ? input.getAttribute('multiple') !== null ? input.files : input.files[0] : null;
+
+ const handleInputOptions = (instance, params) => {
+ const popup = getPopup();
+
+ const processInputOptions = inputOptions => populateInputOptions[params.input](popup, formatInputOptions(inputOptions), params);
+
+ if (hasToPromiseFn(params.inputOptions) || isPromise(params.inputOptions)) {
+ showLoading(getConfirmButton());
+ asPromise(params.inputOptions).then(inputOptions => {
+ instance.hideLoading();
+ processInputOptions(inputOptions);
+ });
+ } else if (typeof params.inputOptions === 'object') {
+ processInputOptions(params.inputOptions);
+ } else {
+ error("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(typeof params.inputOptions));
+ }
+ };
+
+ const handleInputValue = (instance, params) => {
+ const input = instance.getInput();
+ hide(input);
+ asPromise(params.inputValue).then(inputValue => {
+ input.value = params.input === 'number' ? parseFloat(inputValue) || 0 : "".concat(inputValue);
+ show(input);
+ input.focus();
+ instance.hideLoading();
+ }).catch(err => {
+ error("Error in inputValue promise: ".concat(err));
+ input.value = '';
+ show(input);
+ input.focus();
+ instance.hideLoading();
+ });
+ };
+
+ const populateInputOptions = {
+ select: (popup, inputOptions, params) => {
+ const select = getChildByClass(popup, swalClasses.select);
+
+ const renderOption = (parent, optionLabel, optionValue) => {
+ const option = document.createElement('option');
+ option.value = optionValue;
+ setInnerHtml(option, optionLabel);
+ option.selected = isSelected(optionValue, params.inputValue);
+ parent.appendChild(option);
+ };
+
+ inputOptions.forEach(inputOption => {
+ const optionValue = inputOption[0];
+ const optionLabel = inputOption[1]; // spec:
+ // https://www.w3.org/TR/html401/interact/forms.html#h-17.6
+ // "...all OPTGROUP elements must be specified directly within a SELECT element (i.e., groups may not be nested)..."
+ // check whether this is a
+
+ if (Array.isArray(optionLabel)) {
+ // if it is an array, then it is an
+ const optgroup = document.createElement('optgroup');
+ optgroup.label = optionValue;
+ optgroup.disabled = false; // not configurable for now
+
+ select.appendChild(optgroup);
+ optionLabel.forEach(o => renderOption(optgroup, o[1], o[0]));
+ } else {
+ // case of
+ renderOption(select, optionLabel, optionValue);
+ }
+ });
+ select.focus();
+ },
+ radio: (popup, inputOptions, params) => {
+ const radio = getChildByClass(popup, swalClasses.radio);
+ inputOptions.forEach(inputOption => {
+ const radioValue = inputOption[0];
+ const radioLabel = inputOption[1];
+ const radioInput = document.createElement('input');
+ const radioLabelElement = document.createElement('label');
+ radioInput.type = 'radio';
+ radioInput.name = swalClasses.radio;
+ radioInput.value = radioValue;
+
+ if (isSelected(radioValue, params.inputValue)) {
+ radioInput.checked = true;
+ }
+
+ const label = document.createElement('span');
+ setInnerHtml(label, radioLabel);
+ label.className = swalClasses.label;
+ radioLabelElement.appendChild(radioInput);
+ radioLabelElement.appendChild(label);
+ radio.appendChild(radioLabelElement);
+ });
+ const radios = radio.querySelectorAll('input');
+
+ if (radios.length) {
+ radios[0].focus();
+ }
+ }
+ };
+ /**
+ * Converts `inputOptions` into an array of `[value, label]`s
+ * @param inputOptions
+ */
+
+ const formatInputOptions = inputOptions => {
+ const result = [];
+
+ if (typeof Map !== 'undefined' && inputOptions instanceof Map) {
+ inputOptions.forEach((value, key) => {
+ let valueFormatted = value;
+
+ if (typeof valueFormatted === 'object') {
+ // case of
+ valueFormatted = formatInputOptions(valueFormatted);
+ }
+
+ result.push([key, valueFormatted]);
+ });
+ } else {
+ Object.keys(inputOptions).forEach(key => {
+ let valueFormatted = inputOptions[key];
+
+ if (typeof valueFormatted === 'object') {
+ // case of
+ valueFormatted = formatInputOptions(valueFormatted);
+ }
+
+ result.push([key, valueFormatted]);
+ });
+ }
+
+ return result;
+ };
+
+ const isSelected = (optionValue, inputValue) => {
+ return inputValue && inputValue.toString() === optionValue.toString();
+ };
+
+ const handleConfirmButtonClick = instance => {
+ const innerParams = privateProps.innerParams.get(instance);
+ instance.disableButtons();
+
+ if (innerParams.input) {
+ handleConfirmOrDenyWithInput(instance, 'confirm');
+ } else {
+ confirm(instance, true);
+ }
+ };
+ const handleDenyButtonClick = instance => {
+ const innerParams = privateProps.innerParams.get(instance);
+ instance.disableButtons();
+
+ if (innerParams.returnInputValueOnDeny) {
+ handleConfirmOrDenyWithInput(instance, 'deny');
+ } else {
+ deny(instance, false);
+ }
+ };
+ const handleCancelButtonClick = (instance, dismissWith) => {
+ instance.disableButtons();
+ dismissWith(DismissReason.cancel);
+ };
+
+ const handleConfirmOrDenyWithInput = (instance, type
+ /* 'confirm' | 'deny' */
+ ) => {
+ const innerParams = privateProps.innerParams.get(instance);
+ const inputValue = getInputValue(instance, innerParams);
+
+ if (innerParams.inputValidator) {
+ handleInputValidator(instance, inputValue, type);
+ } else if (!instance.getInput().checkValidity()) {
+ instance.enableButtons();
+ instance.showValidationMessage(innerParams.validationMessage);
+ } else if (type === 'deny') {
+ deny(instance, inputValue);
+ } else {
+ confirm(instance, inputValue);
+ }
+ };
+
+ const handleInputValidator = (instance, inputValue, type
+ /* 'confirm' | 'deny' */
+ ) => {
+ const innerParams = privateProps.innerParams.get(instance);
+ instance.disableInput();
+ const validationPromise = Promise.resolve().then(() => asPromise(innerParams.inputValidator(inputValue, innerParams.validationMessage)));
+ validationPromise.then(validationMessage => {
+ instance.enableButtons();
+ instance.enableInput();
+
+ if (validationMessage) {
+ instance.showValidationMessage(validationMessage);
+ } else if (type === 'deny') {
+ deny(instance, inputValue);
+ } else {
+ confirm(instance, inputValue);
+ }
+ });
+ };
+
+ const deny = (instance, value) => {
+ const innerParams = privateProps.innerParams.get(instance || undefined);
+
+ if (innerParams.showLoaderOnDeny) {
+ showLoading(getDenyButton());
+ }
+
+ if (innerParams.preDeny) {
+ const preDenyPromise = Promise.resolve().then(() => asPromise(innerParams.preDeny(value, innerParams.validationMessage)));
+ preDenyPromise.then(preDenyValue => {
+ if (preDenyValue === false) {
+ instance.hideLoading();
+ } else {
+ instance.closePopup({
+ isDenied: true,
+ value: typeof preDenyValue === 'undefined' ? value : preDenyValue
+ });
+ }
+ });
+ } else {
+ instance.closePopup({
+ isDenied: true,
+ value
+ });
+ }
+ };
+
+ const succeedWith = (instance, value) => {
+ instance.closePopup({
+ isConfirmed: true,
+ value
+ });
+ };
+
+ const confirm = (instance, value) => {
+ const innerParams = privateProps.innerParams.get(instance || undefined);
+
+ if (innerParams.showLoaderOnConfirm) {
+ showLoading();
+ }
+
+ if (innerParams.preConfirm) {
+ instance.resetValidationMessage();
+ const preConfirmPromise = Promise.resolve().then(() => asPromise(innerParams.preConfirm(value, innerParams.validationMessage)));
+ preConfirmPromise.then(preConfirmValue => {
+ if (isVisible(getValidationMessage()) || preConfirmValue === false) {
+ instance.hideLoading();
+ } else {
+ succeedWith(instance, typeof preConfirmValue === 'undefined' ? value : preConfirmValue);
+ }
+ });
+ } else {
+ succeedWith(instance, value);
+ }
+ };
+
+ const addKeydownHandler = (instance, globalState, innerParams, dismissWith) => {
+ if (globalState.keydownTarget && globalState.keydownHandlerAdded) {
+ globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, {
+ capture: globalState.keydownListenerCapture
+ });
+ globalState.keydownHandlerAdded = false;
+ }
+
+ if (!innerParams.toast) {
+ globalState.keydownHandler = e => keydownHandler(instance, e, dismissWith);
+
+ globalState.keydownTarget = innerParams.keydownListenerCapture ? window : getPopup();
+ globalState.keydownListenerCapture = innerParams.keydownListenerCapture;
+ globalState.keydownTarget.addEventListener('keydown', globalState.keydownHandler, {
+ capture: globalState.keydownListenerCapture
+ });
+ globalState.keydownHandlerAdded = true;
+ }
+ }; // Focus handling
+
+ const setFocus = (innerParams, index, increment) => {
+ const focusableElements = getFocusableElements(); // search for visible elements and select the next possible match
+
+ if (focusableElements.length) {
+ index = index + increment; // rollover to first item
+
+ if (index === focusableElements.length) {
+ index = 0; // go to last item
+ } else if (index === -1) {
+ index = focusableElements.length - 1;
+ }
+
+ return focusableElements[index].focus();
+ } // no visible focusable elements, focus the popup
+
+
+ getPopup().focus();
+ };
+ const arrowKeysNextButton = ['ArrowRight', 'ArrowDown'];
+ const arrowKeysPreviousButton = ['ArrowLeft', 'ArrowUp'];
+
+ const keydownHandler = (instance, e, dismissWith) => {
+ const innerParams = privateProps.innerParams.get(instance);
+
+ if (!innerParams) {
+ return; // This instance has already been destroyed
+ }
+
+ if (innerParams.stopKeydownPropagation) {
+ e.stopPropagation();
+ } // ENTER
+
+
+ if (e.key === 'Enter') {
+ handleEnter(instance, e, innerParams); // TAB
+ } else if (e.key === 'Tab') {
+ handleTab(e, innerParams); // ARROWS - switch focus between buttons
+ } else if ([...arrowKeysNextButton, ...arrowKeysPreviousButton].includes(e.key)) {
+ handleArrows(e.key); // ESC
+ } else if (e.key === 'Escape') {
+ handleEsc(e, innerParams, dismissWith);
+ }
+ };
+
+ const handleEnter = (instance, e, innerParams) => {
+ // #720 #721
+ if (e.isComposing) {
+ return;
+ }
+
+ if (e.target && instance.getInput() && e.target.outerHTML === instance.getInput().outerHTML) {
+ if (['textarea', 'file'].includes(innerParams.input)) {
+ return; // do not submit
+ }
+
+ clickConfirm();
+ e.preventDefault();
+ }
+ };
+
+ const handleTab = (e, innerParams) => {
+ const targetElement = e.target;
+ const focusableElements = getFocusableElements();
+ let btnIndex = -1;
+
+ for (let i = 0; i < focusableElements.length; i++) {
+ if (targetElement === focusableElements[i]) {
+ btnIndex = i;
+ break;
+ }
+ }
+
+ if (!e.shiftKey) {
+ // Cycle to the next button
+ setFocus(innerParams, btnIndex, 1);
+ } else {
+ // Cycle to the prev button
+ setFocus(innerParams, btnIndex, -1);
+ }
+
+ e.stopPropagation();
+ e.preventDefault();
+ };
+
+ const handleArrows = key => {
+ const confirmButton = getConfirmButton();
+ const denyButton = getDenyButton();
+ const cancelButton = getCancelButton();
+
+ if (![confirmButton, denyButton, cancelButton].includes(document.activeElement)) {
+ return;
+ }
+
+ const sibling = arrowKeysNextButton.includes(key) ? 'nextElementSibling' : 'previousElementSibling';
+ const buttonToFocus = document.activeElement[sibling];
+
+ if (buttonToFocus) {
+ buttonToFocus.focus();
+ }
+ };
+
+ const handleEsc = (e, innerParams, dismissWith) => {
+ if (callIfFunction(innerParams.allowEscapeKey)) {
+ e.preventDefault();
+ dismissWith(DismissReason.esc);
+ }
+ };
+
+ const handlePopupClick = (instance, domCache, dismissWith) => {
+ const innerParams = privateProps.innerParams.get(instance);
+
+ if (innerParams.toast) {
+ handleToastClick(instance, domCache, dismissWith);
+ } else {
+ // Ignore click events that had mousedown on the popup but mouseup on the container
+ // This can happen when the user drags a slider
+ handleModalMousedown(domCache); // Ignore click events that had mousedown on the container but mouseup on the popup
+
+ handleContainerMousedown(domCache);
+ handleModalClick(instance, domCache, dismissWith);
+ }
+ };
+
+ const handleToastClick = (instance, domCache, dismissWith) => {
+ // Closing toast by internal click
+ domCache.popup.onclick = () => {
+ const innerParams = privateProps.innerParams.get(instance);
+
+ if (innerParams.showConfirmButton || innerParams.showDenyButton || innerParams.showCancelButton || innerParams.showCloseButton || innerParams.timer || innerParams.input) {
+ return;
+ }
+
+ dismissWith(DismissReason.close);
+ };
+ };
+
+ let ignoreOutsideClick = false;
+
+ const handleModalMousedown = domCache => {
+ domCache.popup.onmousedown = () => {
+ domCache.container.onmouseup = function (e) {
+ domCache.container.onmouseup = undefined; // We only check if the mouseup target is the container because usually it doesn't
+ // have any other direct children aside of the popup
+
+ if (e.target === domCache.container) {
+ ignoreOutsideClick = true;
+ }
+ };
+ };
+ };
+
+ const handleContainerMousedown = domCache => {
+ domCache.container.onmousedown = () => {
+ domCache.popup.onmouseup = function (e) {
+ domCache.popup.onmouseup = undefined; // We also need to check if the mouseup target is a child of the popup
+
+ if (e.target === domCache.popup || domCache.popup.contains(e.target)) {
+ ignoreOutsideClick = true;
+ }
+ };
+ };
+ };
+
+ const handleModalClick = (instance, domCache, dismissWith) => {
+ domCache.container.onclick = e => {
+ const innerParams = privateProps.innerParams.get(instance);
+
+ if (ignoreOutsideClick) {
+ ignoreOutsideClick = false;
+ return;
+ }
+
+ if (e.target === domCache.container && callIfFunction(innerParams.allowOutsideClick)) {
+ dismissWith(DismissReason.backdrop);
+ }
+ };
+ };
+
+ function _main(userParams, mixinParams = {}) {
+ showWarningsForParams(Object.assign({}, mixinParams, userParams));
+
+ if (globalState.currentInstance) {
+ globalState.currentInstance._destroy();
+
+ if (isModal()) {
+ unsetAriaHidden();
+ }
+ }
+
+ globalState.currentInstance = this;
+ const innerParams = prepareParams(userParams, mixinParams);
+ setParameters(innerParams);
+ Object.freeze(innerParams); // clear the previous timer
+
+ if (globalState.timeout) {
+ globalState.timeout.stop();
+ delete globalState.timeout;
+ } // clear the restore focus timeout
+
+
+ clearTimeout(globalState.restoreFocusTimeout);
+ const domCache = populateDomCache(this);
+ render(this, innerParams);
+ privateProps.innerParams.set(this, innerParams);
+ return swalPromise(this, domCache, innerParams);
+ }
+
+ const prepareParams = (userParams, mixinParams) => {
+ const templateParams = getTemplateParams(userParams);
+ const params = Object.assign({}, defaultParams, mixinParams, templateParams, userParams); // precedence is described in #2131
+
+ params.showClass = Object.assign({}, defaultParams.showClass, params.showClass);
+ params.hideClass = Object.assign({}, defaultParams.hideClass, params.hideClass);
+ return params;
+ };
+
+ const swalPromise = (instance, domCache, innerParams) => {
+ return new Promise(resolve => {
+ // functions to handle all closings/dismissals
+ const dismissWith = dismiss => {
+ instance.closePopup({
+ isDismissed: true,
+ dismiss
+ });
+ };
+
+ privateMethods.swalPromiseResolve.set(instance, resolve);
+
+ domCache.confirmButton.onclick = () => handleConfirmButtonClick(instance);
+
+ domCache.denyButton.onclick = () => handleDenyButtonClick(instance);
+
+ domCache.cancelButton.onclick = () => handleCancelButtonClick(instance, dismissWith);
+
+ domCache.closeButton.onclick = () => dismissWith(DismissReason.close);
+
+ handlePopupClick(instance, domCache, dismissWith);
+ addKeydownHandler(instance, globalState, innerParams, dismissWith);
+ handleInputOptionsAndValue(instance, innerParams);
+ openPopup(innerParams);
+ setupTimer(globalState, innerParams, dismissWith);
+ initFocus(domCache, innerParams); // Scroll container to top on open (#1247, #1946)
+
+ setTimeout(() => {
+ domCache.container.scrollTop = 0;
+ });
+ });
+ };
+
+ const populateDomCache = instance => {
+ const domCache = {
+ popup: getPopup(),
+ container: getContainer(),
+ actions: getActions(),
+ confirmButton: getConfirmButton(),
+ denyButton: getDenyButton(),
+ cancelButton: getCancelButton(),
+ loader: getLoader(),
+ closeButton: getCloseButton(),
+ validationMessage: getValidationMessage(),
+ progressSteps: getProgressSteps()
+ };
+ privateProps.domCache.set(instance, domCache);
+ return domCache;
+ };
+
+ const setupTimer = (globalState$$1, innerParams, dismissWith) => {
+ const timerProgressBar = getTimerProgressBar();
+ hide(timerProgressBar);
+
+ if (innerParams.timer) {
+ globalState$$1.timeout = new Timer(() => {
+ dismissWith('timer');
+ delete globalState$$1.timeout;
+ }, innerParams.timer);
+
+ if (innerParams.timerProgressBar) {
+ show(timerProgressBar);
+ setTimeout(() => {
+ if (globalState$$1.timeout && globalState$$1.timeout.running) {
+ // timer can be already stopped or unset at this point
+ animateTimerProgressBar(innerParams.timer);
+ }
+ });
+ }
+ }
+ };
+
+ const initFocus = (domCache, innerParams) => {
+ if (innerParams.toast) {
+ return;
+ }
+
+ if (!callIfFunction(innerParams.allowEnterKey)) {
+ return blurActiveElement();
+ }
+
+ if (!focusButton(domCache, innerParams)) {
+ setFocus(innerParams, -1, 1);
+ }
+ };
+
+ const focusButton = (domCache, innerParams) => {
+ if (innerParams.focusDeny && isVisible(domCache.denyButton)) {
+ domCache.denyButton.focus();
+ return true;
+ }
+
+ if (innerParams.focusCancel && isVisible(domCache.cancelButton)) {
+ domCache.cancelButton.focus();
+ return true;
+ }
+
+ if (innerParams.focusConfirm && isVisible(domCache.confirmButton)) {
+ domCache.confirmButton.focus();
+ return true;
+ }
+
+ return false;
+ };
+
+ const blurActiveElement = () => {
+ if (document.activeElement && typeof document.activeElement.blur === 'function') {
+ document.activeElement.blur();
+ }
+ };
+
+ /**
+ * Updates popup parameters.
+ */
+
+ function update(params) {
+ const popup = getPopup();
+ const innerParams = privateProps.innerParams.get(this);
+
+ if (!popup || hasClass(popup, innerParams.hideClass.popup)) {
+ return warn("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");
+ }
+
+ const validUpdatableParams = {}; // assign valid params from `params` to `defaults`
+
+ Object.keys(params).forEach(param => {
+ if (Swal.isUpdatableParameter(param)) {
+ validUpdatableParams[param] = params[param];
+ } else {
+ warn("Invalid parameter to update: \"".concat(param, "\". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\n\nIf you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md"));
+ }
+ });
+ const updatedParams = Object.assign({}, innerParams, validUpdatableParams);
+ render(this, updatedParams);
+ privateProps.innerParams.set(this, updatedParams);
+ Object.defineProperties(this, {
+ params: {
+ value: Object.assign({}, this.params, params),
+ writable: false,
+ enumerable: true
+ }
+ });
+ }
+
+ function _destroy() {
+ const domCache = privateProps.domCache.get(this);
+ const innerParams = privateProps.innerParams.get(this);
+
+ if (!innerParams) {
+ return; // This instance has already been destroyed
+ } // Check if there is another Swal closing
+
+
+ if (domCache.popup && globalState.swalCloseEventFinishedCallback) {
+ globalState.swalCloseEventFinishedCallback();
+ delete globalState.swalCloseEventFinishedCallback;
+ } // Check if there is a swal disposal defer timer
+
+
+ if (globalState.deferDisposalTimer) {
+ clearTimeout(globalState.deferDisposalTimer);
+ delete globalState.deferDisposalTimer;
+ }
+
+ if (typeof innerParams.didDestroy === 'function') {
+ innerParams.didDestroy();
+ }
+
+ disposeSwal(this);
+ }
+
+ const disposeSwal = instance => {
+ // Unset this.params so GC will dispose it (#1569)
+ delete instance.params; // Unset globalState props so GC will dispose globalState (#1569)
+
+ delete globalState.keydownHandler;
+ delete globalState.keydownTarget; // Unset WeakMaps so GC will be able to dispose them (#1569)
+
+ unsetWeakMaps(privateProps);
+ unsetWeakMaps(privateMethods); // Unset currentInstance
+
+ delete globalState.currentInstance;
+ };
+
+ const unsetWeakMaps = obj => {
+ for (const i in obj) {
+ obj[i] = new WeakMap();
+ }
+ };
+
+
+
+ var instanceMethods = /*#__PURE__*/Object.freeze({
+ hideLoading: hideLoading,
+ disableLoading: hideLoading,
+ getInput: getInput$1,
+ close: close,
+ closePopup: close,
+ closeModal: close,
+ closeToast: close,
+ enableButtons: enableButtons,
+ disableButtons: disableButtons,
+ enableInput: enableInput,
+ disableInput: disableInput,
+ showValidationMessage: showValidationMessage,
+ resetValidationMessage: resetValidationMessage$1,
+ getProgressSteps: getProgressSteps$1,
+ _main: _main,
+ update: update,
+ _destroy: _destroy
+ });
+
+ let currentInstance;
+
+ class SweetAlert {
+ constructor(...args) {
+ // Prevent run in Node env
+ if (typeof window === 'undefined') {
+ return;
+ }
+
+ currentInstance = this;
+ const outerParams = Object.freeze(this.constructor.argsToParams(args));
+ Object.defineProperties(this, {
+ params: {
+ value: outerParams,
+ writable: false,
+ enumerable: true,
+ configurable: true
+ }
+ });
+
+ const promise = this._main(this.params);
+
+ privateProps.promise.set(this, promise);
+ } // `catch` cannot be the name of a module export, so we define our thenable methods here instead
+
+
+ then(onFulfilled) {
+ const promise = privateProps.promise.get(this);
+ return promise.then(onFulfilled);
+ }
+
+ finally(onFinally) {
+ const promise = privateProps.promise.get(this);
+ return promise.finally(onFinally);
+ }
+
+ } // Assign instance methods from src/instanceMethods/*.js to prototype
+
+
+ Object.assign(SweetAlert.prototype, instanceMethods); // Assign static methods from src/staticMethods/*.js to constructor
+
+ Object.assign(SweetAlert, staticMethods); // Proxy to instance methods to constructor, for now, for backwards compatibility
+
+ Object.keys(instanceMethods).forEach(key => {
+ SweetAlert[key] = function (...args) {
+ if (currentInstance) {
+ return currentInstance[key](...args);
+ }
+ };
+ });
+ SweetAlert.DismissReason = DismissReason;
+ SweetAlert.version = '11.1.7';
+
+ const Swal = SweetAlert;
+ Swal.default = Swal;
+
+ return Swal;
+
+}));
+if (typeof this !== 'undefined' && this.Sweetalert2){ this.swal = this.sweetAlert = this.Swal = this.SweetAlert = this.Sweetalert2}
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/sweetalert2/sweetalert2.min.css b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/sweetalert2/sweetalert2.min.css
new file mode 100644
index 0000000000..342b3beddd
--- /dev/null
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/sweetalert2/sweetalert2.min.css
@@ -0,0 +1 @@
+.swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4!important;grid-row:1/4!important;grid-template-columns:1fr 99fr 1fr;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:grid;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;box-sizing:border-box;grid-template-areas:"top-start top top-end" "center-start center center-end" "bottom-start bottom-center bottom-end";grid-template-rows:minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto);grid-template-rows:minmax(min-content,auto) minmax(min-content,auto) minmax(min-content,auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-bottom-start,.swal2-container.swal2-center-start,.swal2-container.swal2-top-start{grid-template-columns:minmax(0,1fr) auto auto}.swal2-container.swal2-bottom,.swal2-container.swal2-center,.swal2-container.swal2-top{grid-template-columns:auto minmax(0,1fr) auto}.swal2-container.swal2-bottom-end,.swal2-container.swal2-center-end,.swal2-container.swal2-top-end{grid-template-columns:auto auto minmax(0,1fr)}.swal2-container.swal2-top-start>.swal2-popup{align-self:start}.swal2-container.swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}.swal2-container.swal2-top-end>.swal2-popup,.swal2-container.swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}.swal2-container.swal2-center-left>.swal2-popup,.swal2-container.swal2-center-start>.swal2-popup{grid-row:2;align-self:center}.swal2-container.swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}.swal2-container.swal2-center-end>.swal2-popup,.swal2-container.swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}.swal2-container.swal2-bottom-left>.swal2-popup,.swal2-container.swal2-bottom-start>.swal2-popup{grid-column:1;grid-row:3;align-self:end}.swal2-container.swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}.swal2-container.swal2-bottom-end>.swal2-popup,.swal2-container.swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}.swal2-container.swal2-grow-fullscreen>.swal2-popup,.swal2-container.swal2-grow-row>.swal2-popup{grid-column:1/4;width:100%}.swal2-container.swal2-grow-column>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}.swal2-container.swal2-no-transition{transition:none!important}.swal2-popup{display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0,100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-title{position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px transparent;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7367f0;color:#fff;font-size:1em}.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px rgba(115,103,240,.5)}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#ea5455;color:#fff;font-size:1em}.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px rgba(234,84,85,.5)}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7d88;color:#fff;font-size:1em}.swal2-styled.swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,125,136,.5)}.swal2-styled.swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled:focus{outline:0}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto!important;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:2em auto 1em}.swal2-close{z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em 2em 0}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px transparent;color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em 2em 0;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-file{width:75%;margin-right:auto;margin-left:auto;background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto 0}.swal2-validation-message{align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:"!";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:.25em solid transparent;border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{background-color:transparent!important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:transparent;pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}
\ No newline at end of file
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/sweetalert2/sweetalert2.min.js b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/sweetalert2/sweetalert2.min.js
new file mode 100644
index 0000000000..fe84b2427f
--- /dev/null
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/sweetalert2/sweetalert2.min.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Sweetalert2=t()}(this,function(){"use strict";const l=Object.freeze({cancel:"cancel",backdrop:"backdrop",close:"close",esc:"esc",timer:"timer"}),t="SweetAlert2:",o=e=>e.charAt(0).toUpperCase()+e.slice(1),a=e=>Array.prototype.slice.call(e),s=e=>{console.warn("".concat(t," ").concat("object"==typeof e?e.join(" "):e))},r=e=>{console.error("".concat(t," ").concat(e))},n=[],i=(e,t)=>{t='"'.concat(e,'" is deprecated and will be removed in the next major release. Please use "').concat(t,'" instead.'),n.includes(t)||(n.push(t),s(t))},c=e=>"function"==typeof e?e():e,u=e=>e&&"function"==typeof e.toPromise,d=e=>u(e)?e.toPromise():Promise.resolve(e),p=e=>e&&Promise.resolve(e)===e,m=e=>e instanceof Element||(e=>"object"==typeof e&&e.jquery)(e);var e=e=>{const t={};for(const n in e)t[e[n]]="swal2-"+e[n];return t};const h=e(["container","shown","height-auto","iosfix","popup","modal","no-backdrop","no-transition","toast","toast-shown","show","hide","close","title","html-container","actions","confirm","deny","cancel","default-outline","footer","icon","icon-content","image","input","file","range","select","radio","checkbox","label","textarea","inputerror","input-label","validation-message","progress-steps","active-progress-step","progress-step","progress-step-line","loader","loading","styled","top","top-start","top-end","top-left","top-right","center","center-start","center-end","center-left","center-right","bottom","bottom-start","bottom-end","bottom-left","bottom-right","grow-row","grow-column","grow-fullscreen","rtl","timer-progress-bar","timer-progress-bar-container","scrollbar-measure","icon-success","icon-warning","icon-info","icon-question","icon-error"]),g=e(["success","warning","info","question","error"]),b=()=>document.body.querySelector(".".concat(h.container)),f=e=>{const t=b();return t?t.querySelector(e):null},y=e=>f(".".concat(e)),v=()=>y(h.popup),w=()=>y(h.icon),C=()=>y(h.title),k=()=>y(h["html-container"]),A=()=>y(h.image),B=()=>y(h["progress-steps"]),x=()=>y(h["validation-message"]),P=()=>f(".".concat(h.actions," .").concat(h.confirm)),E=()=>f(".".concat(h.actions," .").concat(h.deny));const S=()=>f(".".concat(h.loader)),T=()=>f(".".concat(h.actions," .").concat(h.cancel)),L=()=>y(h.actions),O=()=>y(h.footer),j=()=>y(h["timer-progress-bar"]),D=()=>y(h.close),I=()=>{const e=a(v().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')).sort((e,t)=>(e=parseInt(e.getAttribute("tabindex")),(t=parseInt(t.getAttribute("tabindex")))"-1"!==e.getAttribute("tabindex"));return(t=>{const n=[];for(let e=0;eG(e))},M=()=>!H()&&!document.body.classList.contains(h["no-backdrop"]),H=()=>document.body.classList.contains(h["toast-shown"]);const q={previousBodyPadding:null},V=(t,e)=>{if(t.textContent="",e){const n=new DOMParser,o=n.parseFromString(e,"text/html");a(o.querySelector("head").childNodes).forEach(e=>{t.appendChild(e)}),a(o.querySelector("body").childNodes).forEach(e=>{t.appendChild(e)})}},N=(t,e)=>{if(!e)return!1;var n=e.split(/\s+/);for(let e=0;e{var o,i;if(o=e,i=t,a(o.classList).forEach(e=>{Object.values(h).includes(e)||Object.values(g).includes(e)||Object.values(i.showClass).includes(e)||o.classList.remove(e)}),t.customClass&&t.customClass[n]){if("string"!=typeof t.customClass[n]&&!t.customClass[n].forEach)return s("Invalid type of customClass.".concat(n,'! Expected string or iterable object, got "').concat(typeof t.customClass[n],'"'));W(e,t.customClass[n])}},F=(e,t)=>{if(!t)return null;switch(t){case"select":case"textarea":case"file":return K(e,h[t]);case"checkbox":return e.querySelector(".".concat(h.checkbox," input"));case"radio":return e.querySelector(".".concat(h.radio," input:checked"))||e.querySelector(".".concat(h.radio," input:first-child"));case"range":return e.querySelector(".".concat(h.range," input"));default:return K(e,h.input)}},R=e=>{var t;e.focus(),"file"!==e.type&&(t=e.value,e.value="",e.value=t)},z=(e,t,n)=>{e&&t&&(t="string"==typeof t?t.split(/\s+/).filter(Boolean):t).forEach(t=>{e.forEach?e.forEach(e=>{n?e.classList.add(t):e.classList.remove(t)}):n?e.classList.add(t):e.classList.remove(t)})},W=(e,t)=>{z(e,t,!0)},_=(e,t)=>{z(e,t,!1)},K=(t,n)=>{for(let e=0;e{(n=n==="".concat(parseInt(n))?parseInt(n):n)||0===parseInt(n)?e.style[t]="number"==typeof n?"".concat(n,"px"):n:e.style.removeProperty(t)},Z=(e,t="flex")=>{e.style.display=t},J=e=>{e.style.display="none"},X=(e,t,n,o)=>{const i=e.querySelector(t);i&&(i.style[n]=o)},$=(e,t,n)=>{t?Z(e,n):J(e)},G=e=>!(!e||!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)),Q=()=>!G(P())&&!G(E())&&!G(T()),ee=e=>!!(e.scrollHeight>e.clientHeight),te=e=>{const t=window.getComputedStyle(e);var n=parseFloat(t.getPropertyValue("animation-duration")||"0"),e=parseFloat(t.getPropertyValue("transition-duration")||"0");return 0{const n=j();G(n)&&(t&&(n.style.transition="none",n.style.width="100%"),setTimeout(()=>{n.style.transition="width ".concat(e/1e3,"s linear"),n.style.width="0%"},10))},oe=()=>"undefined"==typeof window||"undefined"==typeof document,ie='\n \n').replace(/(^|\n)\s*/g,""),ae=()=>{ln.isVisible()&&ln.resetValidationMessage()},se=e=>{var t=(()=>{const e=b();return!!e&&(e.remove(),_([document.documentElement,document.body],[h["no-backdrop"],h["toast-shown"],h["has-column"]]),!0)})();if(oe())r("SweetAlert2 requires document to initialize");else{const n=document.createElement("div");n.className=h.container,t&&W(n,h["no-transition"]),V(n,ie);const o="string"==typeof(t=e.target)?document.querySelector(t):t;o.appendChild(n),(e=>{const t=v();t.setAttribute("role",e.toast?"alert":"dialog"),t.setAttribute("aria-live",e.toast?"polite":"assertive"),e.toast||t.setAttribute("aria-modal","true")})(e),e=o,"rtl"===window.getComputedStyle(e).direction&&W(b(),h.rtl),(()=>{const e=v(),t=K(e,h.input),n=K(e,h.file),o=e.querySelector(".".concat(h.range," input")),i=e.querySelector(".".concat(h.range," output")),a=K(e,h.select),s=e.querySelector(".".concat(h.checkbox," input")),r=K(e,h.textarea);t.oninput=ae,n.onchange=ae,a.onchange=ae,s.onchange=ae,r.oninput=ae,o.oninput=()=>{ae(),i.value=o.value},o.onchange=()=>{ae(),o.nextSibling.value=o.value}})()}},re=(e,t)=>{e instanceof HTMLElement?t.appendChild(e):"object"==typeof e?ce(e,t):e&&V(t,e)},ce=(e,t)=>{e.jquery?le(t,e):V(t,e.toString())},le=(t,n)=>{if(t.textContent="",0 in n)for(let e=0;e in n;e++)t.appendChild(n[e].cloneNode(!0));else t.appendChild(n.cloneNode(!0))},ue=(()=>{if(oe())return!1;var e=document.createElement("div"),t={WebkitAnimation:"webkitAnimationEnd",OAnimation:"oAnimationEnd oanimationend",animation:"animationend"};for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&void 0!==e.style[n])return t[n];return!1})(),de=(e,t)=>{const n=L();var o=S(),i=P(),a=E(),s=T();(t.showConfirmButton||t.showDenyButton||t.showCancelButton?Z:J)(n),U(n,t,"actions"),pe(i,"confirm",t),pe(a,"deny",t),pe(s,"cancel",t),function(e,t,n,o){if(!o.buttonsStyling)return _([e,t,n],h.styled);W([e,t,n],h.styled),o.confirmButtonColor&&(e.style.backgroundColor=o.confirmButtonColor,W(e,h["default-outline"]));o.denyButtonColor&&(t.style.backgroundColor=o.denyButtonColor,W(t,h["default-outline"]));o.cancelButtonColor&&(n.style.backgroundColor=o.cancelButtonColor,W(n,h["default-outline"]))}(i,a,s,t),t.reverseButtons&&(n.insertBefore(s,o),n.insertBefore(a,o),n.insertBefore(i,o)),V(o,t.loaderHtml),U(o,t,"loader")};function pe(e,t,n){$(e,n["show".concat(o(t),"Button")],"inline-block"),V(e,n["".concat(t,"ButtonText")]),e.setAttribute("aria-label",n["".concat(t,"ButtonAriaLabel")]),e.className=h[t],U(e,n,"".concat(t,"Button")),W(e,n["".concat(t,"ButtonClass")])}const me=(e,t)=>{var n,o,i=b();i&&(o=i,"string"==typeof(n=t.backdrop)?o.style.background=n:n||W([document.documentElement,document.body],h["no-backdrop"]),o=i,(n=t.position)in h?W(o,h[n]):(s('The "position" parameter is not valid, defaulting to "center"'),W(o,h.center)),n=i,!(o=t.grow)||"string"!=typeof o||(o="grow-".concat(o))in h&&W(n,h[o]),U(i,t,"container"))};var he={promise:new WeakMap,innerParams:new WeakMap,domCache:new WeakMap};const ge=["input","file","range","select","radio","checkbox","textarea"],be=e=>{if(!ke[e.input])return r('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'.concat(e.input,'"'));var t=Ce(e.input);const n=ke[e.input](t,e);Z(n),setTimeout(()=>{R(n)})},fe=(e,t)=>{const n=F(v(),e);if(n){(t=>{for(let e=0;e{var t=Ce(e.input);e.customClass&&W(t,e.customClass.input)},ve=(e,t)=>{e.placeholder&&!t.inputPlaceholder||(e.placeholder=t.inputPlaceholder)},we=(e,t,n)=>{if(n.inputLabel){e.id=h.input;const i=document.createElement("label");var o=h["input-label"];i.setAttribute("for",e.id),i.className=o,W(i,n.customClass.inputLabel),i.innerText=n.inputLabel,t.insertAdjacentElement("beforebegin",i)}},Ce=e=>{e=h[e]||h.input;return K(v(),e)},ke={};ke.text=ke.email=ke.password=ke.number=ke.tel=ke.url=(e,t)=>("string"==typeof t.inputValue||"number"==typeof t.inputValue?e.value=t.inputValue:p(t.inputValue)||s('Unexpected type of inputValue! Expected "string", "number" or "Promise", got "'.concat(typeof t.inputValue,'"')),we(e,e,t),ve(e,t),e.type=t.input,e),ke.file=(e,t)=>(we(e,e,t),ve(e,t),e),ke.range=(e,t)=>{const n=e.querySelector("input"),o=e.querySelector("output");return n.value=t.inputValue,n.type=t.input,o.value=t.inputValue,we(n,e,t),e},ke.select=(e,t)=>{if(e.textContent="",t.inputPlaceholder){const n=document.createElement("option");V(n,t.inputPlaceholder),n.value="",n.disabled=!0,n.selected=!0,e.appendChild(n)}return we(e,e,t),e},ke.radio=e=>(e.textContent="",e),ke.checkbox=(e,t)=>{const n=F(v(),"checkbox");n.value=1,n.id=h.checkbox,n.checked=Boolean(t.inputValue);var o=e.querySelector("span");return V(o,t.inputPlaceholder),e},ke.textarea=(n,e)=>{n.value=e.inputValue,ve(n,e),we(n,n,e);return setTimeout(()=>{if("MutationObserver"in window){const t=parseInt(window.getComputedStyle(v()).width);new MutationObserver(()=>{var e,e=n.offsetWidth+(e=n,parseInt(window.getComputedStyle(e).marginLeft)+parseInt(window.getComputedStyle(e).marginRight));e>t?v().style.width="".concat(e,"px"):v().style.width=null}).observe(n,{attributes:!0,attributeFilter:["style"]})}}),n};const Ae=(e,t)=>{const n=k();U(n,t,"htmlContainer"),t.html?(re(t.html,n),Z(n,"block")):t.text?(n.textContent=t.text,Z(n,"block")):J(n),((e,o)=>{const i=v();e=he.innerParams.get(e);const a=!e||o.input!==e.input;ge.forEach(e=>{var t=h[e];const n=K(i,t);fe(e,o.inputAttributes),n.className=t,a&&J(n)}),o.input&&(a&&be(o),ye(o))})(e,t)},Be=(e,t)=>{for(const n in g)t.icon!==n&&_(e,g[n]);W(e,g[t.icon]),Ee(e,t),xe(),U(e,t,"icon")},xe=()=>{const e=v();var t=window.getComputedStyle(e).getPropertyValue("background-color");const n=e.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix");for(let e=0;e{var n;e.textContent="",t.iconHtml?V(e,Se(t.iconHtml)):"success"===t.icon?V(e,'\n
\n \n
\n
\n '):"error"===t.icon?V(e,'\n \n \n \n \n '):(n={question:"?",warning:"!",info:"i"},V(e,Se(n[t.icon])))},Ee=(e,t)=>{if(t.iconColor){e.style.color=t.iconColor,e.style.borderColor=t.iconColor;for(const n of[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"])X(e,n,"backgroundColor",t.iconColor);X(e,".swal2-success-ring","borderColor",t.iconColor)}},Se=e=>'').concat(e,"
"),Te=(e,o)=>{const i=B();if(!o.progressSteps||0===o.progressSteps.length)return J(i);Z(i),i.textContent="",o.currentProgressStep>=o.progressSteps.length&&s("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),o.progressSteps.forEach((e,t)=>{var n,e=(n=e,e=document.createElement("li"),W(e,h["progress-step"]),V(e,n),e);i.appendChild(e),t===o.currentProgressStep&&W(e,h["active-progress-step"]),t!==o.progressSteps.length-1&&(t=(e=>{const t=document.createElement("li");return W(t,h["progress-step-line"]),e.progressStepsDistance&&(t.style.width=e.progressStepsDistance),t})(o),i.appendChild(t))})},Le=(e,t)=>{e.className="".concat(h.popup," ").concat(G(e)?t.showClass.popup:""),t.toast?(W([document.documentElement,document.body],h["toast-shown"]),W(e,h.toast)):W(e,h.modal),U(e,t,"popup"),"string"==typeof t.customClass&&W(e,t.customClass),t.icon&&W(e,h["icon-".concat(t.icon)])},Oe=(e,t)=>{var n,o,i;(e=>{var t=b();const n=v();e.toast?(Y(t,"width",e.width),n.style.width="100%",n.insertBefore(S(),w())):Y(n,"width",e.width),Y(n,"padding",e.padding),e.background&&(n.style.background=e.background),J(x()),Le(n,e)})(t),me(0,t),Te(0,t),i=e,n=t,o=he.innerParams.get(i),i=w(),o&&n.icon===o.icon?(Pe(i,n),Be(i,n)):n.icon||n.iconHtml?n.icon&&-1===Object.keys(g).indexOf(n.icon)?(r('Unknown icon! Expected "success", "error", "warning", "info" or "question", got "'.concat(n.icon,'"')),J(i)):(Z(i),Pe(i,n),Be(i,n),W(i,n.showClass.icon)):J(i),(e=>{const t=A();if(!e.imageUrl)return J(t);Z(t,""),t.setAttribute("src",e.imageUrl),t.setAttribute("alt",e.imageAlt),Y(t,"width",e.imageWidth),Y(t,"height",e.imageHeight),t.className=h.image,U(t,e,"image")})(t),(e=>{const t=C();$(t,e.title||e.titleText,"block"),e.title&&re(e.title,t),e.titleText&&(t.innerText=e.titleText),U(t,e,"title")})(t),(e=>{const t=D();V(t,e.closeButtonHtml),U(t,e,"closeButton"),$(t,e.showCloseButton),t.setAttribute("aria-label",e.closeButtonAriaLabel)})(t),Ae(e,t),de(0,t),i=t,e=O(),$(e,i.footer),i.footer&&re(i.footer,e),U(e,i,"footer"),"function"==typeof t.didRender&&t.didRender(v())};const je=()=>P()&&P().click();const De=e=>{let t=v();t||ln.fire(),t=v();var n=S();H()?J(w()):Ie(t,e),Z(n),t.setAttribute("data-loading",!0),t.setAttribute("aria-busy",!0),t.focus()},Ie=(e,t)=>{var n=L();const o=S();!t&&G(P())&&(t=P()),Z(n),t&&(J(t),o.setAttribute("data-button-to-replace",t.className)),o.parentNode.insertBefore(o,t),W([e,n],h.loading)},Me={},He=o=>new Promise(e=>{if(!o)return e();var t=window.scrollX,n=window.scrollY;Me.restoreFocusTimeout=setTimeout(()=>{Me.previousActiveElement&&Me.previousActiveElement.focus?(Me.previousActiveElement.focus(),Me.previousActiveElement=null):document.body&&document.body.focus(),e()},100),window.scrollTo(t,n)});const qe=()=>{if(Me.timeout)return(()=>{const e=j();var t=parseInt(window.getComputedStyle(e).width);e.style.removeProperty("transition"),e.style.width="100%";var n=parseInt(window.getComputedStyle(e).width),n=parseInt(t/n*100);e.style.removeProperty("transition"),e.style.width="".concat(n,"%")})(),Me.timeout.stop()},Ve=()=>{if(Me.timeout){var e=Me.timeout.start();return ne(e),e}};let Ne=!1;const Ue={};const Fe=t=>{for(let e=t.target;e&&e!==document;e=e.parentNode)for(const o in Ue){var n=e.getAttribute(o);if(n)return void Ue[o].fire({template:n})}},Re={title:"",titleText:"",text:"",html:"",footer:"",icon:void 0,iconColor:void 0,iconHtml:void 0,template:void 0,toast:!1,showClass:{popup:"swal2-show",backdrop:"swal2-backdrop-show",icon:"swal2-icon-show"},hideClass:{popup:"swal2-hide",backdrop:"swal2-backdrop-hide",icon:"swal2-icon-hide"},customClass:{},target:"body",backdrop:!0,heightAuto:!0,allowOutsideClick:!0,allowEscapeKey:!0,allowEnterKey:!0,stopKeydownPropagation:!0,keydownListenerCapture:!1,showConfirmButton:!0,showDenyButton:!1,showCancelButton:!1,preConfirm:void 0,preDeny:void 0,confirmButtonText:"OK",confirmButtonAriaLabel:"",confirmButtonColor:void 0,denyButtonText:"No",denyButtonAriaLabel:"",denyButtonColor:void 0,cancelButtonText:"Cancel",cancelButtonAriaLabel:"",cancelButtonColor:void 0,buttonsStyling:!0,reverseButtons:!1,focusConfirm:!0,focusDeny:!1,focusCancel:!1,returnFocus:!0,showCloseButton:!1,closeButtonHtml:"×",closeButtonAriaLabel:"Close this dialog",loaderHtml:"",showLoaderOnConfirm:!1,showLoaderOnDeny:!1,imageUrl:void 0,imageWidth:void 0,imageHeight:void 0,imageAlt:"",timer:void 0,timerProgressBar:!1,width:void 0,padding:void 0,background:void 0,input:void 0,inputPlaceholder:"",inputLabel:"",inputValue:"",inputOptions:{},inputAutoTrim:!0,inputAttributes:{},inputValidator:void 0,returnInputValueOnDeny:!1,validationMessage:void 0,grow:!1,position:"center",progressSteps:[],currentProgressStep:void 0,progressStepsDistance:void 0,willOpen:void 0,didOpen:void 0,didRender:void 0,willClose:void 0,didClose:void 0,didDestroy:void 0,scrollbarPadding:!0},ze=["allowEscapeKey","allowOutsideClick","background","buttonsStyling","cancelButtonAriaLabel","cancelButtonColor","cancelButtonText","closeButtonAriaLabel","closeButtonHtml","confirmButtonAriaLabel","confirmButtonColor","confirmButtonText","currentProgressStep","customClass","denyButtonAriaLabel","denyButtonColor","denyButtonText","didClose","didDestroy","footer","hideClass","html","icon","iconColor","iconHtml","imageAlt","imageHeight","imageUrl","imageWidth","preConfirm","preDeny","progressSteps","returnFocus","reverseButtons","showCancelButton","showCloseButton","showConfirmButton","showDenyButton","text","title","titleText","willClose"],We={},_e=["allowOutsideClick","allowEnterKey","backdrop","focusConfirm","focusDeny","focusCancel","returnFocus","heightAuto","keydownListenerCapture"],Ke=e=>Object.prototype.hasOwnProperty.call(Re,e);const Ye=e=>We[e],Ze=e=>{!e.backdrop&&e.allowOutsideClick&&s('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`');for(const o in e)n=o,Ke(n)||s('Unknown parameter "'.concat(n,'"')),e.toast&&(t=o,_e.includes(t)&&s('The parameter "'.concat(t,'" is incompatible with toasts'))),t=o,Ye(t)&&i(t,Ye(t));var t,n};var Je=Object.freeze({isValidParameter:Ke,isUpdatableParameter:e=>-1!==ze.indexOf(e),isDeprecatedParameter:Ye,argsToParams:n=>{const o={};return"object"!=typeof n[0]||m(n[0])?["title","html","icon"].forEach((e,t)=>{t=n[t];"string"==typeof t||m(t)?o[e]=t:void 0!==t&&r("Unexpected type of ".concat(e,'! Expected "string" or "Element", got ').concat(typeof t))}):Object.assign(o,n[0]),o},isVisible:()=>G(v()),clickConfirm:je,clickDeny:()=>E()&&E().click(),clickCancel:()=>T()&&T().click(),getContainer:b,getPopup:v,getTitle:C,getHtmlContainer:k,getImage:A,getIcon:w,getInputLabel:()=>y(h["input-label"]),getCloseButton:D,getActions:L,getConfirmButton:P,getDenyButton:E,getCancelButton:T,getLoader:S,getFooter:O,getTimerProgressBar:j,getFocusableElements:I,getValidationMessage:x,isLoading:()=>v().hasAttribute("data-loading"),fire:function(...e){return new this(...e)},mixin:function(n){class e extends this{_main(e,t){return super._main(e,Object.assign({},n,t))}}return e},showLoading:De,enableLoading:De,getTimerLeft:()=>Me.timeout&&Me.timeout.getTimerLeft(),stopTimer:qe,resumeTimer:Ve,toggleTimer:()=>{var e=Me.timeout;return e&&(e.running?qe:Ve)()},increaseTimer:e=>{if(Me.timeout){e=Me.timeout.increase(e);return ne(e,!0),e}},isTimerRunning:()=>Me.timeout&&Me.timeout.isRunning(),bindClickHandler:function(e="data-swal-template"){Ue[e]=this,Ne||(document.body.addEventListener("click",Fe),Ne=!0)}});function Xe(){var e=he.innerParams.get(this);if(e){const t=he.domCache.get(this);J(t.loader),H()?e.icon&&Z(w()):(e=>{const t=e.popup.getElementsByClassName(e.loader.getAttribute("data-button-to-replace"));if(t.length)Z(t[0],"inline-block");else if(Q())J(e.actions)})(t),_([t.popup,t.actions],h.loading),t.popup.removeAttribute("aria-busy"),t.popup.removeAttribute("data-loading"),t.confirmButton.disabled=!1,t.denyButton.disabled=!1,t.cancelButton.disabled=!1}}const $e=()=>{null===q.previousBodyPadding&&document.body.scrollHeight>window.innerHeight&&(q.previousBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight="".concat(q.previousBodyPadding+(()=>{const e=document.createElement("div");e.className=h["scrollbar-measure"],document.body.appendChild(e);var t=e.getBoundingClientRect().width-e.clientWidth;return document.body.removeChild(e),t})(),"px"))},Ge=()=>{navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i)||v().scrollHeight>window.innerHeight-44&&(b().style.paddingBottom="".concat(44,"px"))},Qe=()=>{const e=b();let t;e.ontouchstart=e=>{t=et(e)},e.ontouchmove=e=>{t&&(e.preventDefault(),e.stopPropagation())}},et=e=>{var t=e.target,n=b();return!tt(e)&&!nt(e)&&(t===n||!(ee(n)||"INPUT"===t.tagName||"TEXTAREA"===t.tagName||ee(k())&&k().contains(t)))},tt=e=>e.touches&&e.touches.length&&"stylus"===e.touches[0].touchType,nt=e=>e.touches&&1{const e=a(document.body.children);e.forEach(e=>{e.hasAttribute("data-previous-aria-hidden")?(e.setAttribute("aria-hidden",e.getAttribute("data-previous-aria-hidden")),e.removeAttribute("data-previous-aria-hidden")):e.removeAttribute("aria-hidden")})};var it={swalPromiseResolve:new WeakMap};function at(e,t,n,o){H()?ct(e,o):(He(n).then(()=>ct(e,o)),Me.keydownTarget.removeEventListener("keydown",Me.keydownHandler,{capture:Me.keydownListenerCapture}),Me.keydownHandlerAdded=!1),/^((?!chrome|android).)*safari/i.test(navigator.userAgent)?(t.setAttribute("style","display:none !important"),t.removeAttribute("class"),t.innerHTML=""):t.remove(),M()&&(null!==q.previousBodyPadding&&(document.body.style.paddingRight="".concat(q.previousBodyPadding,"px"),q.previousBodyPadding=null),N(document.body,h.iosfix)&&(t=parseInt(document.body.style.top,10),_(document.body,h.iosfix),document.body.style.top="",document.body.scrollTop=-1*t),ot()),_([document.documentElement,document.body],[h.shown,h["height-auto"],h["no-backdrop"],h["toast-shown"]])}function st(e){var t=v();if(t){e=void 0!==(o=e)?Object.assign({isConfirmed:!1,isDenied:!1,isDismissed:!1},o):{isConfirmed:!1,isDenied:!1,isDismissed:!0};var n=he.innerParams.get(this);if(n&&!N(t,n.hideClass.popup)){const i=it.swalPromiseResolve.get(this);_(t,n.showClass.popup),W(t,n.hideClass.popup);var o=b();_(o,n.showClass.backdrop),W(o,n.hideClass.backdrop),((e,t,n)=>{const o=b(),i=ue&&te(t);if(typeof n.willClose==="function")n.willClose(t);if(i)rt(e,t,o,n.returnFocus,n.didClose);else at(e,o,n.returnFocus,n.didClose)})(this,t,n),i(e)}}}const rt=(e,t,n,o,i)=>{Me.swalCloseEventFinishedCallback=at.bind(null,e,n,o,i),t.addEventListener(ue,function(e){e.target===t&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback)})},ct=(e,t)=>{setTimeout(()=>{"function"==typeof t&&t.bind(e.params)(),e._destroy()})};function lt(e,t,n){const o=he.domCache.get(e);t.forEach(e=>{o[e].disabled=n})}function ut(e,t){if(!e)return!1;if("radio"===e.type){const n=e.parentNode.parentNode,o=n.querySelectorAll("input");for(let e=0;e/^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid email address"),url:(e,t)=>/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid URL")};function mt(e){var t,n;(t=e).inputValidator||Object.keys(pt).forEach(e=>{t.input===e&&(t.inputValidator=pt[e])}),e.showLoaderOnConfirm&&!e.preConfirm&&s("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request"),(n=e).target&&("string"!=typeof n.target||document.querySelector(n.target))&&("string"==typeof n.target||n.target.appendChild)||(s('Target parameter is not valid, defaulting to "body"'),n.target="body"),"string"==typeof e.title&&(e.title=e.title.split("\n").join(" ")),se(e)}const ht=["swal-title","swal-html","swal-footer"],gt=e=>{e="string"==typeof e.template?document.querySelector(e.template):e.template;if(!e)return{};e=e.content;return kt(e),Object.assign(bt(e),ft(e),yt(e),vt(e),wt(e),Ct(e,ht))},bt=e=>{const o={};return a(e.querySelectorAll("swal-param")).forEach(e=>{At(e,["name","value"]);var t=e.getAttribute("name");let n=e.getAttribute("value");"boolean"==typeof Re[t]&&"false"===n&&(n=!1),"object"==typeof Re[t]&&(n=JSON.parse(n)),o[t]=n}),o},ft=e=>{const n={};return a(e.querySelectorAll("swal-button")).forEach(e=>{At(e,["type","color","aria-label"]);var t=e.getAttribute("type");n["".concat(t,"ButtonText")]=e.innerHTML,n["show".concat(o(t),"Button")]=!0,e.hasAttribute("color")&&(n["".concat(t,"ButtonColor")]=e.getAttribute("color")),e.hasAttribute("aria-label")&&(n["".concat(t,"ButtonAriaLabel")]=e.getAttribute("aria-label"))}),n},yt=e=>{const t={},n=e.querySelector("swal-image");return n&&(At(n,["src","width","height","alt"]),n.hasAttribute("src")&&(t.imageUrl=n.getAttribute("src")),n.hasAttribute("width")&&(t.imageWidth=n.getAttribute("width")),n.hasAttribute("height")&&(t.imageHeight=n.getAttribute("height")),n.hasAttribute("alt")&&(t.imageAlt=n.getAttribute("alt"))),t},vt=e=>{const t={},n=e.querySelector("swal-icon");return n&&(At(n,["type","color"]),n.hasAttribute("type")&&(t.icon=n.getAttribute("type")),n.hasAttribute("color")&&(t.iconColor=n.getAttribute("color")),t.iconHtml=n.innerHTML),t},wt=e=>{const n={},t=e.querySelector("swal-input");t&&(At(t,["type","label","placeholder","value"]),n.input=t.getAttribute("type")||"text",t.hasAttribute("label")&&(n.inputLabel=t.getAttribute("label")),t.hasAttribute("placeholder")&&(n.inputPlaceholder=t.getAttribute("placeholder")),t.hasAttribute("value")&&(n.inputValue=t.getAttribute("value")));e=e.querySelectorAll("swal-input-option");return e.length&&(n.inputOptions={},a(e).forEach(e=>{At(e,["value"]);var t=e.getAttribute("value"),e=e.innerHTML;n.inputOptions[t]=e})),n},Ct=(e,t)=>{const n={};for(const o in t){const i=t[o],a=e.querySelector(i);a&&(At(a,[]),n[i.replace(/^swal-/,"")]=a.innerHTML.trim())}return n},kt=e=>{const t=ht.concat(["swal-param","swal-button","swal-image","swal-icon","swal-input","swal-input-option"]);a(e.children).forEach(e=>{e=e.tagName.toLowerCase();-1===t.indexOf(e)&&s("Unrecognized element <".concat(e,">"))})},At=(t,n)=>{a(t.attributes).forEach(e=>{-1===n.indexOf(e.name)&&s(['Unrecognized attribute "'.concat(e.name,'" on <').concat(t.tagName.toLowerCase(),">."),"".concat(n.length?"Allowed attributes are: ".concat(n.join(", ")):"To set the value, use HTML within the element.")])})},Bt=e=>{const t=b(),n=v();"function"==typeof e.willOpen&&e.willOpen(n);var o=window.getComputedStyle(document.body).overflowY;St(t,n,e),setTimeout(()=>{Pt(t,n)},10),M()&&(Et(t,e.scrollbarPadding,o),(()=>{const e=a(document.body.children);e.forEach(e=>{e===b()||e.contains(b())||(e.hasAttribute("aria-hidden")&&e.setAttribute("data-previous-aria-hidden",e.getAttribute("aria-hidden")),e.setAttribute("aria-hidden","true"))})})()),H()||Me.previousActiveElement||(Me.previousActiveElement=document.activeElement),"function"==typeof e.didOpen&&setTimeout(()=>e.didOpen(n)),_(t,h["no-transition"])},xt=e=>{const t=v();if(e.target===t){const n=b();t.removeEventListener(ue,xt),n.style.overflowY="auto"}},Pt=(e,t)=>{ue&&te(t)?(e.style.overflowY="hidden",t.addEventListener(ue,xt)):e.style.overflowY="auto"},Et=(e,t,n)=>{var o;(/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream||"MacIntel"===navigator.platform&&1{e.scrollTop=0})},St=(e,t,n)=>{W(e,n.showClass.backdrop),t.style.setProperty("opacity","0","important"),Z(t,"grid"),setTimeout(()=>{W(t,n.showClass.popup),t.style.removeProperty("opacity")},10),W([document.documentElement,document.body],h.shown),n.heightAuto&&n.backdrop&&!n.toast&&W([document.documentElement,document.body],h["height-auto"])},Tt=e=>e.checked?1:0,Lt=e=>e.checked?e.value:null,Ot=e=>e.files.length?null!==e.getAttribute("multiple")?e.files:e.files[0]:null,jt=(t,n)=>{const o=v(),i=e=>It[n.input](o,Mt(e),n);u(n.inputOptions)||p(n.inputOptions)?(De(P()),d(n.inputOptions).then(e=>{t.hideLoading(),i(e)})):"object"==typeof n.inputOptions?i(n.inputOptions):r("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(typeof n.inputOptions))},Dt=(t,n)=>{const o=t.getInput();J(o),d(n.inputValue).then(e=>{o.value="number"===n.input?parseFloat(e)||0:"".concat(e),Z(o),o.focus(),t.hideLoading()}).catch(e=>{r("Error in inputValue promise: ".concat(e)),o.value="",Z(o),o.focus(),t.hideLoading()})},It={select:(e,t,i)=>{const a=K(e,h.select),s=(e,t,n)=>{const o=document.createElement("option");o.value=n,V(o,t),o.selected=Ht(n,i.inputValue),e.appendChild(o)};t.forEach(e=>{var t=e[0];const n=e[1];if(Array.isArray(n)){const o=document.createElement("optgroup");o.label=t,o.disabled=!1,a.appendChild(o),n.forEach(e=>s(o,e[1],e[0]))}else s(a,n,t)}),a.focus()},radio:(e,t,a)=>{const s=K(e,h.radio);t.forEach(e=>{var t=e[0],e=e[1];const n=document.createElement("input"),o=document.createElement("label");n.type="radio",n.name=h.radio,n.value=t,Ht(t,a.inputValue)&&(n.checked=!0);const i=document.createElement("span");V(i,e),i.className=h.label,o.appendChild(n),o.appendChild(i),s.appendChild(o)});const n=s.querySelectorAll("input");n.length&&n[0].focus()}},Mt=n=>{const o=[];return"undefined"!=typeof Map&&n instanceof Map?n.forEach((e,t)=>{let n=e;"object"==typeof n&&(n=Mt(n)),o.push([t,n])}):Object.keys(n).forEach(e=>{let t=n[e];"object"==typeof t&&(t=Mt(t)),o.push([e,t])}),o},Ht=(e,t)=>t&&t.toString()===e.toString(),qt=(e,t)=>{var n=he.innerParams.get(e),o=((e,t)=>{const n=e.getInput();if(!n)return null;switch(t.input){case"checkbox":return Tt(n);case"radio":return Lt(n);case"file":return Ot(n);default:return t.inputAutoTrim?n.value.trim():n.value}})(e,n);n.inputValidator?Vt(e,o,t):e.getInput().checkValidity()?("deny"===t?Nt:Ft)(e,o):(e.enableButtons(),e.showValidationMessage(n.validationMessage))},Vt=(t,n,o)=>{const e=he.innerParams.get(t);t.disableInput();const i=Promise.resolve().then(()=>d(e.inputValidator(n,e.validationMessage)));i.then(e=>{t.enableButtons(),t.enableInput(),e?t.showValidationMessage(e):("deny"===o?Nt:Ft)(t,n)})},Nt=(t,n)=>{const e=he.innerParams.get(t||void 0);if(e.showLoaderOnDeny&&De(E()),e.preDeny){const o=Promise.resolve().then(()=>d(e.preDeny(n,e.validationMessage)));o.then(e=>{!1===e?t.hideLoading():t.closePopup({isDenied:!0,value:void 0===e?n:e})})}else t.closePopup({isDenied:!0,value:n})},Ut=(e,t)=>{e.closePopup({isConfirmed:!0,value:t})},Ft=(t,n)=>{const e=he.innerParams.get(t||void 0);if(e.showLoaderOnConfirm&&De(),e.preConfirm){t.resetValidationMessage();const o=Promise.resolve().then(()=>d(e.preConfirm(n,e.validationMessage)));o.then(e=>{G(x())||!1===e?t.hideLoading():Ut(t,void 0===e?n:e)})}else Ut(t,n)},Rt=(e,t,n)=>{const o=I();if(o.length)return(t+=n)===o.length?t=0:-1===t&&(t=o.length-1),o[t].focus();v().focus()},zt=["ArrowRight","ArrowDown"],Wt=["ArrowLeft","ArrowUp"],_t=(e,t,n)=>{var o=he.innerParams.get(e);o&&(o.stopKeydownPropagation&&t.stopPropagation(),"Enter"===t.key?Kt(e,t,o):"Tab"===t.key?Yt(t,o):[...zt,...Wt].includes(t.key)?Zt(t.key):"Escape"===t.key&&Jt(t,o,n))},Kt=(e,t,n)=>{t.isComposing||t.target&&e.getInput()&&t.target.outerHTML===e.getInput().outerHTML&&(["textarea","file"].includes(n.input)||(je(),t.preventDefault()))},Yt=(e,t)=>{var n=e.target,o=I();let i=-1;for(let e=0;e{const t=P(),n=E(),o=T();if([t,n,o].includes(document.activeElement)){e=zt.includes(e)?"nextElementSibling":"previousElementSibling";const i=document.activeElement[e];i&&i.focus()}},Jt=(e,t,n)=>{c(t.allowEscapeKey)&&(e.preventDefault(),n(l.esc))},Xt=(t,e,n)=>{e.popup.onclick=()=>{var e=he.innerParams.get(t);e.showConfirmButton||e.showDenyButton||e.showCancelButton||e.showCloseButton||e.timer||e.input||n(l.close)}};let $t=!1;const Gt=t=>{t.popup.onmousedown=()=>{t.container.onmouseup=function(e){t.container.onmouseup=void 0,e.target===t.container&&($t=!0)}}},Qt=t=>{t.container.onmousedown=()=>{t.popup.onmouseup=function(e){t.popup.onmouseup=void 0,e.target!==t.popup&&!t.popup.contains(e.target)||($t=!0)}}},en=(n,o,i)=>{o.container.onclick=e=>{var t=he.innerParams.get(n);$t?$t=!1:e.target===o.container&&c(t.allowOutsideClick)&&i(l.backdrop)}};const tn=(e,t,n)=>{var o=j();J(o),t.timer&&(e.timeout=new dt(()=>{n("timer"),delete e.timeout},t.timer),t.timerProgressBar&&(Z(o),setTimeout(()=>{e.timeout&&e.timeout.running&&ne(t.timer)})))},nn=(e,t)=>{if(!t.toast)return c(t.allowEnterKey)?void(on(e,t)||Rt(0,-1,1)):an()},on=(e,t)=>t.focusDeny&&G(e.denyButton)?(e.denyButton.focus(),!0):t.focusCancel&&G(e.cancelButton)?(e.cancelButton.focus(),!0):!(!t.focusConfirm||!G(e.confirmButton))&&(e.confirmButton.focus(),!0),an=()=>{document.activeElement&&"function"==typeof document.activeElement.blur&&document.activeElement.blur()};const sn=e=>{for(const t in e)e[t]=new WeakMap};e=Object.freeze({hideLoading:Xe,disableLoading:Xe,getInput:function(e){var t=he.innerParams.get(e||this);return(e=he.domCache.get(e||this))?F(e.popup,t.input):null},close:st,closePopup:st,closeModal:st,closeToast:st,enableButtons:function(){lt(this,["confirmButton","denyButton","cancelButton"],!1)},disableButtons:function(){lt(this,["confirmButton","denyButton","cancelButton"],!0)},enableInput:function(){return ut(this.getInput(),!1)},disableInput:function(){return ut(this.getInput(),!0)},showValidationMessage:function(e){const t=he.domCache.get(this);var n=he.innerParams.get(this);V(t.validationMessage,e),t.validationMessage.className=h["validation-message"],n.customClass&&n.customClass.validationMessage&&W(t.validationMessage,n.customClass.validationMessage),Z(t.validationMessage);const o=this.getInput();o&&(o.setAttribute("aria-invalid",!0),o.setAttribute("aria-describedby",h["validation-message"]),R(o),W(o,h.inputerror))},resetValidationMessage:function(){var e=he.domCache.get(this);e.validationMessage&&J(e.validationMessage);const t=this.getInput();t&&(t.removeAttribute("aria-invalid"),t.removeAttribute("aria-describedby"),_(t,h.inputerror))},getProgressSteps:function(){return he.domCache.get(this).progressSteps},_main:function(e,t={}){Ze(Object.assign({},t,e)),Me.currentInstance&&(Me.currentInstance._destroy(),M()&&ot()),Me.currentInstance=this,mt(e=((e,t)=>{const n=gt(e),o=Object.assign({},Re,t,n,e);return o.showClass=Object.assign({},Re.showClass,o.showClass),o.hideClass=Object.assign({},Re.hideClass,o.hideClass),o})(e,t)),Object.freeze(e),Me.timeout&&(Me.timeout.stop(),delete Me.timeout),clearTimeout(Me.restoreFocusTimeout);var s,r,c,t=(e=>{const t={popup:v(),container:b(),actions:L(),confirmButton:P(),denyButton:E(),cancelButton:T(),loader:S(),closeButton:D(),validationMessage:x(),progressSteps:B()};return he.domCache.set(e,t),t})(this);return Oe(this,e),he.innerParams.set(this,e),s=this,r=t,c=e,new Promise(e=>{const t=e=>{s.closePopup({isDismissed:!0,dismiss:e})};var n,o,i,a;it.swalPromiseResolve.set(s,e),r.confirmButton.onclick=()=>(e=>{var t=he.innerParams.get(e);e.disableButtons(),t.input?qt(e,"confirm"):Ft(e,!0)})(s),r.denyButton.onclick=()=>(e=>{var t=he.innerParams.get(e);e.disableButtons(),t.returnInputValueOnDeny?qt(e,"deny"):Nt(e,!1)})(s),r.cancelButton.onclick=()=>((e,t)=>{e.disableButtons(),t(l.cancel)})(s,t),r.closeButton.onclick=()=>t(l.close),n=s,a=r,e=t,he.innerParams.get(n).toast?Xt(n,a,e):(Gt(a),Qt(a),en(n,a,e)),o=s,a=Me,e=c,i=t,a.keydownTarget&&a.keydownHandlerAdded&&(a.keydownTarget.removeEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!1),e.toast||(a.keydownHandler=e=>_t(o,e,i),a.keydownTarget=e.keydownListenerCapture?window:v(),a.keydownListenerCapture=e.keydownListenerCapture,a.keydownTarget.addEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!0),e=s,"select"===(a=c).input||"radio"===a.input?jt(e,a):["text","email","number","tel","textarea"].includes(a.input)&&(u(a.inputValue)||p(a.inputValue))&&(De(P()),Dt(e,a)),Bt(c),tn(Me,c,t),nn(r,c),setTimeout(()=>{r.container.scrollTop=0})})},update:function(t){var e=v(),n=he.innerParams.get(this);if(!e||N(e,n.hideClass.popup))return s("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");const o={};Object.keys(t).forEach(e=>{ln.isUpdatableParameter(e)?o[e]=t[e]:s('Invalid parameter to update: "'.concat(e,'". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\n\nIf you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md'))}),n=Object.assign({},n,o),Oe(this,n),he.innerParams.set(this,n),Object.defineProperties(this,{params:{value:Object.assign({},this.params,t),writable:!1,enumerable:!0}})},_destroy:function(){var e=he.domCache.get(this);const t=he.innerParams.get(this);t&&(e.popup&&Me.swalCloseEventFinishedCallback&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback),Me.deferDisposalTimer&&(clearTimeout(Me.deferDisposalTimer),delete Me.deferDisposalTimer),"function"==typeof t.didDestroy&&t.didDestroy(),delete this.params,delete Me.keydownHandler,delete Me.keydownTarget,sn(he),sn(it),delete Me.currentInstance)}});let rn;class cn{constructor(...e){"undefined"!=typeof window&&(rn=this,e=Object.freeze(this.constructor.argsToParams(e)),Object.defineProperties(this,{params:{value:e,writable:!1,enumerable:!0,configurable:!0}}),e=this._main(this.params),he.promise.set(this,e))}then(e){const t=he.promise.get(this);return t.then(e)}finally(e){const t=he.promise.get(this);return t.finally(e)}}Object.assign(cn.prototype,e),Object.assign(cn,Je),Object.keys(e).forEach(t=>{cn[t]=function(...e){if(rn)return rn[t](...e)}}),cn.DismissReason=l,cn.version="11.1.7";const ln=cn;return ln.default=ln,ln}),void 0!==this&&this.Sweetalert2&&(this.swal=this.sweetAlert=this.Swal=this.SweetAlert=this.Sweetalert2);
\ No newline at end of file
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock
index c5f456cbf6..adea4202c3 100644
--- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock
@@ -2,37 +2,37 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.2.tgz#78f8319e7cc745e45d67e30eb0a02bc1d1b4ff97"
- integrity sha512-km7kSn56Lu/qeo6gEEOoQJ91vWOnPUhQVEYSGmnxCKYa1ZtOzFitSZNx0WBhS/REBM27rYsb8M38P8MRmeIFxQ==
- dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.2"
-
-"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.2.tgz#e4ec56c3a8bc12b46ef329c6ee7617204e4e8b78"
- integrity sha512-mtqaO6OBxZ//+NpwNuS+i381U7VgI5BWjBreeZnPtJdAo9ltG31ignTbBpX1Yo5xZ0zgytgFKZJ0BFzlDXAn0w==
- dependencies:
- "@abp/aspnetcore.mvc.ui" "~4.4.2"
- "@abp/bootstrap" "~4.4.2"
- "@abp/bootstrap-datepicker" "~4.4.2"
- "@abp/datatables.net-bs4" "~4.4.2"
- "@abp/font-awesome" "~4.4.2"
- "@abp/jquery-form" "~4.4.2"
- "@abp/jquery-validation-unobtrusive" "~4.4.2"
- "@abp/lodash" "~4.4.2"
- "@abp/luxon" "~4.4.2"
- "@abp/malihu-custom-scrollbar-plugin" "~4.4.2"
- "@abp/select2" "~4.4.2"
- "@abp/sweetalert" "~4.4.2"
- "@abp/timeago" "~4.4.2"
- "@abp/toastr" "~4.4.2"
-
-"@abp/aspnetcore.mvc.ui@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.2.tgz#ec4cb4b875efc3661d4a889569114b8f0c515296"
- integrity sha512-Ur9eR3tzG+LN1XDujZLHmtW4+Z5NxUbK7L3SRrHJXx4NgxXAklQrQhnUIcXwh347CAiVsTDMTQn/MIjJxUeRMw==
+"@abp/aspnetcore.mvc.ui.theme.basic@^5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.0-beta.1.tgz#2c78c2bd977a67f6c2ed77cfcd404cf9533eaaae"
+ integrity sha512-b8Boztxd5NbaDlXQvgHXHtw8ZNgM4tEgo14kw/bN3mcLx05fWLGd8Lzfdi7i+Ju6U3rKbgi+0MSbga93A0KSmg==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.1"
+
+"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.1.tgz#25596652bb3f7b6bac5bbd966a731144cd9646c6"
+ integrity sha512-N4SHu6rn8alK4jdve00IscngrfvqJNEjrwQclXNmP9c4NtPuVM9emZdxBzKF8jFb6Hz8HiwM9H3xV/SjKCS/7A==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui" "~5.0.0-beta.1"
+ "@abp/bootstrap" "~5.0.0-beta.1"
+ "@abp/bootstrap-datepicker" "~5.0.0-beta.1"
+ "@abp/datatables.net-bs4" "~5.0.0-beta.1"
+ "@abp/font-awesome" "~5.0.0-beta.1"
+ "@abp/jquery-form" "~5.0.0-beta.1"
+ "@abp/jquery-validation-unobtrusive" "~5.0.0-beta.1"
+ "@abp/lodash" "~5.0.0-beta.1"
+ "@abp/luxon" "~5.0.0-beta.1"
+ "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.1"
+ "@abp/select2" "~5.0.0-beta.1"
+ "@abp/sweetalert2" "~5.0.0-beta.1"
+ "@abp/timeago" "~5.0.0-beta.1"
+ "@abp/toastr" "~5.0.0-beta.1"
+
+"@abp/aspnetcore.mvc.ui@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.1.tgz#30c14386899596bf91e8871810dbaa1a0e51e996"
+ integrity sha512-pabiGHghC62eg95RfAncEt0+yGdBxdMmyqCXV+Be4JjaMz/hGZIDOPIYnaqCayZtyMmIRqG6IAwi99DqBjkQAQ==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@@ -41,162 +41,162 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
-"@abp/bootstrap-datepicker@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.2.tgz#5189f2794a4bd8e912c6eeeda8cbfe959a125572"
- integrity sha512-XYIk4ArM2qxD4kITg59eDBAohQxVgW2/v3flWtTtm4O2syTER1uUcQNTecGf8lwwW7j6dNR/L7dIa2q73UJKkw==
+"@abp/bootstrap-datepicker@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.1.tgz#727e0f7305a94c95ece152ffff011bcff621f46d"
+ integrity sha512-txhdlJqyO2D9MkGLYgrsiDaC58cb2eCpk2uxoqqQeVWvuRPo/L+9rCBk+bu6J37FGJtU8aabtHJyR5xnYbv0TQ==
dependencies:
bootstrap-datepicker "^1.9.0"
-"@abp/bootstrap@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.2.tgz#2fe2b888a195c2686c609c10a0ca2b355ce76cf8"
- integrity sha512-5HAxaU9FpNk6YLr2Wc5FSq/ggrj7I5sd429tZvepOQux8voKji3vFVTFoEmuWJdQiWjcGmbjTM/HR01vsIf+ag==
+"@abp/bootstrap@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.1.tgz#075a15459ff8e3896b6553786e6c8f091c6ffcad"
+ integrity sha512-W8z6qSAsRoXmG0++xH6Bk1oRc90hFqVcjKI+5XgBQhUUCn2qBruBYOKFxPg2GeT2f1k9K5TrCEnnVrh0sOP9/A==
dependencies:
- "@abp/core" "~4.4.2"
+ "@abp/core" "~5.0.0-beta.1"
bootstrap "^4.6.0"
bootstrap-v4-rtl "4.6.0-1"
-"@abp/clipboard@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-4.4.2.tgz#a7a15cd45fdbf7f85d0c691004e10418db56f733"
- integrity sha512-Nfw1W1tQlSH44PiNTEsNW2GG1r0JaMz3FV9UZEZmKQLbaiWd6Du39xEDgJMyTJQLf+k1oOSWECuD5mamrJqTRQ==
+"@abp/clipboard@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-5.0.0-beta.1.tgz#7c46ffe185116b1d3e43ef389df9dae2b98dd0c9"
+ integrity sha512-Gsr8qZNhxoH7uH+Kd0Q7qrQdGAjU20r65zjBI7iUgtpP/18obm87SUZLPDobZLAf+UB/Wl9VnxvedyLYDnuQGQ==
dependencies:
- "@abp/core" "~4.4.2"
+ "@abp/core" "~5.0.0-beta.1"
clipboard "^2.0.6"
-"@abp/core@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.2.tgz#40a933d77373656a9ef0c7d55b00621470294d36"
- integrity sha512-wnEtyrT/nnL7e1eRjyVshjnUI2EIJ2veG4SHTZ/GZxDYfHsP6PxuhzHvu/7WD/TI4QDTWhyWX/bKYY26gqNWLw==
+"@abp/core@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.1.tgz#6cff06b13529ab9d7a6ddc4e89dc40616e6b7739"
+ integrity sha512-TK1CnurJIK/SXfsNTk6HSpxdaJgVxwvqNd4F3fxCC0Uj8s5viD3TAGk39Hkp4909WGfNrRq8BEUNvTYM/rP6gg==
dependencies:
- "@abp/utils" "^4.4.2"
+ "@abp/utils" "^5.0.0-beta.1"
-"@abp/datatables.net-bs4@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.2.tgz#c4468e7e7d796531522b5f0b05854fd7cacf32b8"
- integrity sha512-HLmWq0GJsSHO5dBvKWYxuZrbMpo+f3ln4568zoCyfO/vVrtna2JcDkRmH2JNXPlOBFA06ThPnoeGbsEOrFflVA==
+"@abp/datatables.net-bs4@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.1.tgz#110d7d8cf1c15db7432d8f0649f4317ba8de10dd"
+ integrity sha512-CPodZP9pqLdwnFZ77/mcSfuhyK1WMi/c+9VWpGXFQSGaABNKPP2UIdAChwUcBRdGkZRa/IhXx3CCr1ZMLpJsMQ==
dependencies:
- "@abp/datatables.net" "~4.4.2"
+ "@abp/datatables.net" "~5.0.0-beta.1"
datatables.net-bs4 "^1.10.21"
-"@abp/datatables.net@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.2.tgz#6bee6f6859ddf2d0a82b3c45b73ee8c987b7af43"
- integrity sha512-+s+/RHlBAizHVa4irJhXi8OiklXI000dZXyAvj4Vdm2EBZfmA8K4941pBwHlOTmIHvtkOTFtsdPYr4nquHgFyg==
+"@abp/datatables.net@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.1.tgz#8e784a011d33de154554f3239c448fcfd8adb713"
+ integrity sha512-mRMYqTCoYLmDLvL+CvmwUS4JqCqdkn6mxHd7zgkaR04xlGLEmNae5aGbs1wURJ86MOWrHbfkx66lQjkul3zbQw==
dependencies:
- "@abp/jquery" "~4.4.2"
+ "@abp/jquery" "~5.0.0-beta.1"
datatables.net "^1.10.21"
-"@abp/font-awesome@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.2.tgz#d35574f2bade6483f62c765294af47116221eb32"
- integrity sha512-eMn+CVrazi285Rafutf8RikpUxxRbsf3VIFwUebrAEp1nHq/hOSqmKQSxaGthdugNyt9ib/aCNrU+3wCqOMWqQ==
+"@abp/font-awesome@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.1.tgz#3ae721c447a009601226c381a20dc4adabe154e1"
+ integrity sha512-fsMqwApogZ1rAogStQxBX/Nh8akXPW/Alm8UayfK6TXIkPPjBz5RQSHfdlosG7M/U3mwUNGcLlaDvQXsE/nqow==
dependencies:
- "@abp/core" "~4.4.2"
+ "@abp/core" "~5.0.0-beta.1"
"@fortawesome/fontawesome-free" "^5.13.0"
-"@abp/jquery-form@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.2.tgz#046399485d93813a9465e8d21cb7c1726be6d2fa"
- integrity sha512-5zn0M47MtVwbh/Z4y570XF9eBRDbfRIqF+cyTqcLaomOG6/98Hth8eBZXbCNUAReyvIHW+Zn1TCwYWePnjURhw==
+"@abp/jquery-form@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.1.tgz#d13f4cffce48125547b9da57cfc407f9a35a89e6"
+ integrity sha512-RYE90XIDxWkvxO5ukuZ2PHk6aA/o7NQKLcR9WsN1G2xTU/frrNPgtruGRTIj7Nx3BPUeMp7EAN2rYZwglcnO5g==
dependencies:
- "@abp/jquery" "~4.4.2"
+ "@abp/jquery" "~5.0.0-beta.1"
jquery-form "^4.3.0"
-"@abp/jquery-validation-unobtrusive@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.2.tgz#158d20f1f83af2045ecad96f0ce57f9d08872f89"
- integrity sha512-xCCsl1+1QMCi2yMLmtUR7XDMfQHQ8XkRGKNQy5Ja11rW0G4kqkAdP/lxCjJasjYO+XuxqW/pilpUU9tDGqfhCQ==
+"@abp/jquery-validation-unobtrusive@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.1.tgz#93ff6ee92bccdde77816bfb434e967fd142f6b83"
+ integrity sha512-LZE1KIALGBCINdWrHzoGczekUFtKwbXbLIgb4ZgiipO5Xja7py/iVvts10QWqUzhnBk+kmbHbj+KnjdqP4Z8pQ==
dependencies:
- "@abp/jquery-validation" "~4.4.2"
+ "@abp/jquery-validation" "~5.0.0-beta.1"
jquery-validation-unobtrusive "^3.2.11"
-"@abp/jquery-validation@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.2.tgz#c6438d3fab3e0353826cc51e1a93fb3c123e83b2"
- integrity sha512-apRk72FnAm1qRdcYUko3n4MOJEFnfMY8ArjsXIv3dXIJQyOyNWta4cK3LPvsDFCYhbdJuraKEgwTSZyrqZM3Xw==
+"@abp/jquery-validation@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.1.tgz#2964ca1266b087e4c4c0e768bfc4bfe0284e4ff5"
+ integrity sha512-ZDNdkPy2ZNu0EYDNH20Oh9R3bICCYv9CbEj4zZ8Qavixo9VTkybY3BW0nYjcu1yb1P92gZPp80W8vyfxSo//kw==
dependencies:
- "@abp/jquery" "~4.4.2"
+ "@abp/jquery" "~5.0.0-beta.1"
jquery-validation "^1.19.2"
-"@abp/jquery@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.2.tgz#925f228012af3fb443a5fd5a4bba65f232c2070f"
- integrity sha512-gUq1WoFRJytgVFU8fES64iVWz2HUnn2PonvLjTI40571ior+pHHZXvgCfsJ9YywUCc84A0+uhXRUKMc/Hvy+Bg==
+"@abp/jquery@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.1.tgz#360e7a164b6b4ce615a5ad91a1c78ef6893648f3"
+ integrity sha512-v2t+76L45tlbpGeVR39GurZl60Rj1pR/TdUidpP6zwnpx1Y3I+CvlJNDwTESeE/ixTOT3PyFbXoMEi6hI+v39A==
dependencies:
- "@abp/core" "~4.4.2"
+ "@abp/core" "~5.0.0-beta.1"
jquery "~3.6.0"
-"@abp/lodash@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.2.tgz#20e478d62e4a86821db3e8cccf1ca04846a0d0f2"
- integrity sha512-rbq+vRzH0zHaZ6vtkp8toBn6gcTGNwu7q2jLapsGHdIXEbtluP4cvkdLqynUkSrXMAdvbc8IiLKr/AC4aaQa1g==
+"@abp/lodash@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.1.tgz#618797bde42b17f91d7f99fdd5f24cb5e8a361b3"
+ integrity sha512-WsUjzHRZ6RkSMd5PTw0oWijDbbq/Wgonv8++ufUZi1WK5spZi9ohjcYM4io3Ms3fG+g4pWznaicYraMpV5tcsQ==
dependencies:
- "@abp/core" "~4.4.2"
+ "@abp/core" "~5.0.0-beta.1"
lodash "^4.17.15"
-"@abp/luxon@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.2.tgz#f250c0caba7230defd546821e5a59a1b9b87ca73"
- integrity sha512-3Z7AhVKdZDKSAs9Wld5WZoDcdQATxUOQqgm4ESij/hv4KkQltt/yybvjCbW2aEqujCAUPxf10Yd/6NG6dn8vbQ==
+"@abp/luxon@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.1.tgz#fc81fcbfb592d3baf7b9856b3cecf5b86df4bfdf"
+ integrity sha512-t4lhJ/wr1rAVH1/bnzmc8niZYvolTuXUB0h6A6UYaw205QyNtimzusYkTwkc+Z3xHFUrkLCoG7J2SVoCJuioaA==
dependencies:
- "@abp/core" "~4.4.2"
+ "@abp/core" "~5.0.0-beta.1"
luxon "^1.24.1"
-"@abp/malihu-custom-scrollbar-plugin@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.2.tgz#26575cdf4e3c8a126c271ea575d3a37277eb3ecd"
- integrity sha512-ax9gz9HM3ps1yLYrd0tfhfryRPMezu6vD+wO6Qy8nhTVCGagkTH2WsqA+1NsqmntbZvDpri4aBkfpqfJosIlAA==
+"@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.1.tgz#7af43d30af9b1f741fd9d9559d100aa4a5c52ae9"
+ integrity sha512-B195PC4/75W0EXjGEQUd/ZARb/eGWj8DX7hq3K+J+lUWzWu46dZy8s5bBij78HqxS91/q6nbxU35Z+E9xl6ICg==
dependencies:
- "@abp/core" "~4.4.2"
+ "@abp/core" "~5.0.0-beta.1"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/prismjs@^4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-4.4.2.tgz#647d63c4c19561923935c4c8bc515e2751258005"
- integrity sha512-Sub/P0OVys3tVxMwyq4SeYpDmy4nFdVw/e+PmuIRQ8IDy9RgJicqV8xL9f/qmwcVHB4Afmh892+udeAiRAZ8GA==
+"@abp/prismjs@^5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-5.0.0-beta.1.tgz#a41883c46e2ce67b2b9dcbe1ce85de9b183cfd29"
+ integrity sha512-Ps3X6gckZYUnWcmBPnXCa1LIh8HnQYxDD0WPppbEsp1VFN49T3yNO4G5jFVRxomFi5km8AluJW2zYk3Kh/4OSw==
dependencies:
- "@abp/clipboard" "~4.4.2"
- "@abp/core" "~4.4.2"
+ "@abp/clipboard" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.1"
prismjs "^1.20.0"
-"@abp/select2@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.2.tgz#7cca21af49ce9663c8509d31420cdf65c528ce23"
- integrity sha512-X4ZStUV8SUrLjyvQ7LHUD2HC7NoUt5RjvPa8Kue0I/fxheC5H4ZIyryZJZNM7XEzyVOpa74sFTa6y/a7yzJpig==
+"@abp/select2@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.1.tgz#15988165fcfed2ebc2b8d097965e2dc1984af35e"
+ integrity sha512-SF+NkWDJNz1EeEimW5luaCMPTNN1oPzEWs47usPJo8m7HfijEvF3rymJ8jL5zWIOo05Tx3HUurLSVz0qu4vZsw==
dependencies:
- "@abp/core" "~4.4.2"
+ "@abp/core" "~5.0.0-beta.1"
select2 "^4.0.13"
-"@abp/sweetalert@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.2.tgz#f21411f4c5620e1e5ec772bf1e33b7f914a20dae"
- integrity sha512-pLMcBy0ZPx1vjnHD0Qmg+pXBDS1QkOhmZPz0lAHYBRGZY8zWxpCV59Cy7l87kif89VowR8NKEYH2ZXQZ+Klz6g==
+"@abp/sweetalert2@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.1.tgz#c6a1185f39d3207f67753e7c486eddcefc7fd0da"
+ integrity sha512-ADotpiMkIzHLy/ufK0q49V9hgF8oKE0rLRzVZV2dHBpmFR7YRcPdbb5AN9CiXDk6ol8nsocEEAwRmgD3eJG63w==
dependencies:
- "@abp/core" "~4.4.2"
- sweetalert "^2.1.2"
+ "@abp/core" "~5.0.0-beta.1"
+ sweetalert2 "^11.0.18"
-"@abp/timeago@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.2.tgz#bd644e27755a0846ced9098d53cd78b4af9c700e"
- integrity sha512-QSZ2Qv5CS4FGyzlk1Tud3amMK2T6QzBB/xdWYFCE2HhONxkbB+sXWaEX3ur+4wLxnYoPm1QU+jBGmnj2kk2kXA==
+"@abp/timeago@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.1.tgz#0f7bb8cd85b7e90d7d5c0a0940b9102e3f4f1e42"
+ integrity sha512-QwYZyeDRW+X8BGecBcK1SgsClVWNYfPgvct+WkQhTIRxzbP/c1c+1irj69sNdN3df2WLnmjfu3sBw2hzz5ykbg==
dependencies:
- "@abp/jquery" "~4.4.2"
+ "@abp/jquery" "~5.0.0-beta.1"
timeago "^1.6.7"
-"@abp/toastr@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.2.tgz#9afa476e5c64cfdd31ed1624be267a8dcbcef228"
- integrity sha512-NJTkWGG53nfLg9j+3YEk3v8i56DhxQZQheGCkEXXtqEByBQVZ+LYpzOSLIgzijOrPplGpJdo8eCt6S4xGTVlxw==
+"@abp/toastr@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.1.tgz#d420fc5db6b15f6d623d3928bb6913996511937f"
+ integrity sha512-82LfDrZQagtv4QLb643VTra4pxleOq5xYwhpOK1Ifop2K5CRgElxKfWvY2EtxdGkpCO2arvkOzjRNbxnecHB2w==
dependencies:
- "@abp/jquery" "~4.4.2"
+ "@abp/jquery" "~5.0.0-beta.1"
toastr "^2.1.4"
-"@abp/utils@^4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.2.tgz#33d1a8c1199241e0c926fb3fd2f439d2925d5db1"
- integrity sha512-o/1XGKSOPB+yQH6c+yyMNSr/r8rzb3PoHkxKqDNEGEf79L6EwJ8Wm+4wKaoHjVrYQtn+d/40PLEdvGEwQxVvCw==
+"@abp/utils@^5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.1.tgz#e1bf9240738276081c89a67073d9d85205fdf14c"
+ integrity sha512-suzKxHUautizxt5XdlJ8ONIaVMcAHrb2dp1kEnXnFRW1ip+7ZQ9/nxJj+GtY1MhHX2yPmlUQP2K8f2upJh9aoA==
dependencies:
just-compare "^1.3.0"
@@ -779,10 +779,6 @@ es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3:
es5-ext "^0.10.35"
es6-symbol "^3.1.1"
-es6-object-assign@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c"
-
es6-symbol@^3.1.1, es6-symbol@~3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77"
@@ -2006,10 +2002,6 @@ process-nextick-args@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
-promise-polyfill@^6.0.2:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-6.1.0.tgz#dfa96943ea9c121fca4de9b5868cb39d3472e057"
-
pump@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
@@ -2418,13 +2410,10 @@ sver-compat@^1.5.0:
es6-iterator "^2.0.1"
es6-symbol "^3.1.1"
-sweetalert@^2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/sweetalert/-/sweetalert-2.1.2.tgz#010baaa80d0dbdc86f96bfcaa96b490728594b79"
- integrity sha512-iWx7X4anRBNDa/a+AdTmvAzQtkN1+s4j/JJRWlHpYE8Qimkohs8/XnFcWeYHH2lMA8LRCa5tj2d244If3S/hzA==
- dependencies:
- es6-object-assign "^1.1.0"
- promise-polyfill "^6.0.2"
+sweetalert2@^11.0.18:
+ version "11.1.7"
+ resolved "https://registry.yarnpkg.com/sweetalert2/-/sweetalert2-11.1.7.tgz#0ff2851eae77a76a3fe0ab289d3c32493e811b6d"
+ integrity sha512-7MHQVtKCTORfA9e58g9ZOfT3X58DkSBtvoCQJnqSHobXXb5C7aB8Yg/tAccTFnefCUBU41PoStjXMkzG3bNeig==
tar@^4:
version "4.4.10"
diff --git a/modules/blogging/app/Volo.BloggingTestApp/package.json b/modules/blogging/app/Volo.BloggingTestApp/package.json
index f091f173c6..023cd7cfcd 100644
--- a/modules/blogging/app/Volo.BloggingTestApp/package.json
+++ b/modules/blogging/app/Volo.BloggingTestApp/package.json
@@ -3,7 +3,7 @@
"name": "volo.blogtestapp",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "^4.4.2",
- "@abp/blogging": "^4.4.2"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "^5.0.0-beta.1",
+ "@abp/blogging": "^5.0.0-beta.1"
}
}
\ No newline at end of file
diff --git a/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/sweetalert/sweetalert.min.js b/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/sweetalert/sweetalert.min.js
deleted file mode 100644
index dc8f5e78ec..0000000000
--- a/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/sweetalert/sweetalert.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.swal=e():t.swal=e()}(this,function(){return function(t){function e(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var n={};return e.m=t,e.c=n,e.d=function(t,n,o){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:o})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=8)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o="swal-button";e.CLASS_NAMES={MODAL:"swal-modal",OVERLAY:"swal-overlay",SHOW_MODAL:"swal-overlay--show-modal",MODAL_TITLE:"swal-title",MODAL_TEXT:"swal-text",ICON:"swal-icon",ICON_CUSTOM:"swal-icon--custom",CONTENT:"swal-content",FOOTER:"swal-footer",BUTTON_CONTAINER:"swal-button-container",BUTTON:o,CONFIRM_BUTTON:o+"--confirm",CANCEL_BUTTON:o+"--cancel",DANGER_BUTTON:o+"--danger",BUTTON_LOADING:o+"--loading",BUTTON_LOADER:o+"__loader"},e.default=e.CLASS_NAMES},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getNode=function(t){var e="."+t;return document.querySelector(e)},e.stringToNode=function(t){var e=document.createElement("div");return e.innerHTML=t.trim(),e.firstChild},e.insertAfter=function(t,e){var n=e.nextSibling;e.parentNode.insertBefore(t,n)},e.removeNode=function(t){t.parentElement.removeChild(t)},e.throwErr=function(t){throw t=t.replace(/ +(?= )/g,""),"SweetAlert: "+(t=t.trim())},e.isPlainObject=function(t){if("[object Object]"!==Object.prototype.toString.call(t))return!1;var e=Object.getPrototypeOf(t);return null===e||e===Object.prototype},e.ordinalSuffixOf=function(t){var e=t%10,n=t%100;return 1===e&&11!==n?t+"st":2===e&&12!==n?t+"nd":3===e&&13!==n?t+"rd":t+"th"}},function(t,e,n){"use strict";function o(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),o(n(25));var r=n(26);e.overlayMarkup=r.default,o(n(27)),o(n(28)),o(n(29));var i=n(0),a=i.default.MODAL_TITLE,s=i.default.MODAL_TEXT,c=i.default.ICON,l=i.default.FOOTER;e.iconMarkup='\n
',e.titleMarkup='\n
\n',e.textMarkup='\n
',e.footerMarkup='\n
\n'},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1);e.CONFIRM_KEY="confirm",e.CANCEL_KEY="cancel";var r={visible:!0,text:null,value:null,className:"",closeModal:!0},i=Object.assign({},r,{visible:!1,text:"Cancel",value:null}),a=Object.assign({},r,{text:"OK",value:!0});e.defaultButtonList={cancel:i,confirm:a};var s=function(t){switch(t){case e.CONFIRM_KEY:return a;case e.CANCEL_KEY:return i;default:var n=t.charAt(0).toUpperCase()+t.slice(1);return Object.assign({},r,{text:n,value:t})}},c=function(t,e){var n=s(t);return!0===e?Object.assign({},n,{visible:!0}):"string"==typeof e?Object.assign({},n,{visible:!0,text:e}):o.isPlainObject(e)?Object.assign({visible:!0},n,e):Object.assign({},n,{visible:!1})},l=function(t){for(var e={},n=0,o=Object.keys(t);n=0&&w.splice(e,1)}function s(t){var e=document.createElement("style");return t.attrs.type="text/css",l(e,t.attrs),i(t,e),e}function c(t){var e=document.createElement("link");return t.attrs.type="text/css",t.attrs.rel="stylesheet",l(e,t.attrs),i(t,e),e}function l(t,e){Object.keys(e).forEach(function(n){t.setAttribute(n,e[n])})}function u(t,e){var n,o,r,i;if(e.transform&&t.css){if(!(i=e.transform(t.css)))return function(){};t.css=i}if(e.singleton){var l=h++;n=g||(g=s(e)),o=f.bind(null,n,l,!1),r=f.bind(null,n,l,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=c(e),o=p.bind(null,n,e),r=function(){a(n),n.href&&URL.revokeObjectURL(n.href)}):(n=s(e),o=d.bind(null,n),r=function(){a(n)});return o(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;o(t=e)}else r()}}function f(t,e,n,o){var r=n?"":o.css;if(t.styleSheet)t.styleSheet.cssText=x(e,r);else{var i=document.createTextNode(r),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(i,a[e]):t.appendChild(i)}}function d(t,e){var n=e.css,o=e.media;if(o&&t.setAttribute("media",o),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}function p(t,e,n){var o=n.css,r=n.sourceMap,i=void 0===e.convertToAbsoluteUrls&&r;(e.convertToAbsoluteUrls||i)&&(o=y(o)),r&&(o+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */");var a=new Blob([o],{type:"text/css"}),s=t.href;t.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}var m={},b=function(t){var e;return function(){return void 0===e&&(e=t.apply(this,arguments)),e}}(function(){return window&&document&&document.all&&!window.atob}),v=function(t){var e={};return function(n){return void 0===e[n]&&(e[n]=t.call(this,n)),e[n]}}(function(t){return document.querySelector(t)}),g=null,h=0,w=[],y=n(15);t.exports=function(t,e){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");e=e||{},e.attrs="object"==typeof e.attrs?e.attrs:{},e.singleton||(e.singleton=b()),e.insertInto||(e.insertInto="head"),e.insertAt||(e.insertAt="bottom");var n=r(t,e);return o(n,e),function(t){for(var i=[],a=0;athis.length)&&-1!==this.indexOf(t,e)}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(t,e){if(null==this)throw new TypeError('"this" is null or not defined');var n=Object(this),o=n.length>>>0;if(0===o)return!1;for(var r=0|e,i=Math.max(r>=0?r:o-Math.abs(r),0);i=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(19),e.setImmediate=setImmediate,e.clearImmediate=clearImmediate},function(t,e,n){(function(t,e){!function(t,n){"use strict";function o(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n1)for(var n=1;n',e.default=e.modalMarkup},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.OVERLAY,i='\n
';e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.ICON;e.errorIconMarkup=function(){var t=r+"--error",e=t+"__line";return'\n \n \n \n
\n '},e.warningIconMarkup=function(){var t=r+"--warning";return'\n \n \n \n '},e.successIconMarkup=function(){var t=r+"--success";return'\n \n \n\n
\n
\n '}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.CONTENT;e.contentMarkup='\n \n\n
\n'},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.BUTTON_CONTAINER,i=o.default.BUTTON,a=o.default.BUTTON_LOADER;e.buttonMarkup='\n \n'},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(4),r=n(2),i=n(0),a=i.default.ICON,s=i.default.ICON_CUSTOM,c=["error","warning","success","info"],l={error:r.errorIconMarkup(),warning:r.warningIconMarkup(),success:r.successIconMarkup()},u=function(t,e){var n=a+"--"+t;e.classList.add(n);var o=l[t];o&&(e.innerHTML=o)},f=function(t,e){e.classList.add(s);var n=document.createElement("img");n.src=t,e.appendChild(n)},d=function(t){if(t){var e=o.injectElIntoModal(r.iconMarkup);c.includes(t)?u(t,e):f(t,e)}};e.default=d},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(2),r=n(4),i=function(t){navigator.userAgent.includes("AppleWebKit")&&(t.style.display="none",t.offsetHeight,t.style.display="")};e.initTitle=function(t){if(t){var e=r.injectElIntoModal(o.titleMarkup);e.textContent=t,i(e)}},e.initText=function(t){if(t){var e=document.createDocumentFragment();t.split("\n").forEach(function(t,n,o){e.appendChild(document.createTextNode(t)),n0}).forEach(function(t){b.classList.add(t)})}n&&t===c.CONFIRM_KEY&&b.classList.add(s),b.textContent=r;var g={};return g[t]=i,f.setActionValue(g),f.setActionOptionsFor(t,{closeModal:p}),b.addEventListener("click",function(){return u.onAction(t)}),m},p=function(t,e){var n=r.injectElIntoModal(l.footerMarkup);for(var o in t){var i=t[o],a=d(o,i,e);i.visible&&n.appendChild(a)}0===n.children.length&&n.remove()};e.default=p},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(3),r=n(4),i=n(2),a=n(5),s=n(6),c=n(0),l=c.default.CONTENT,u=function(t){t.addEventListener("input",function(t){var e=t.target,n=e.value;a.setActionValue(n)}),t.addEventListener("keyup",function(t){if("Enter"===t.key)return s.onAction(o.CONFIRM_KEY)}),setTimeout(function(){t.focus(),a.setActionValue("")},0)},f=function(t,e,n){var o=document.createElement(e),r=l+"__"+e;o.classList.add(r);for(var i in n){var a=n[i];o[i]=a}"input"===e&&u(o),t.appendChild(o)},d=function(t){if(t){var e=r.injectElIntoModal(i.contentMarkup),n=t.element,o=t.attributes;"string"==typeof n?f(e,n,o):e.appendChild(n)}};e.default=d},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=n(2),i=function(){var t=o.stringToNode(r.overlayMarkup);document.body.appendChild(t)};e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(5),r=n(6),i=n(1),a=n(3),s=n(0),c=s.default.MODAL,l=s.default.BUTTON,u=s.default.OVERLAY,f=function(t){t.preventDefault(),v()},d=function(t){t.preventDefault(),g()},p=function(t){if(o.default.isOpen)switch(t.key){case"Escape":return r.onAction(a.CANCEL_KEY)}},m=function(t){if(o.default.isOpen)switch(t.key){case"Tab":return f(t)}},b=function(t){if(o.default.isOpen)return"Tab"===t.key&&t.shiftKey?d(t):void 0},v=function(){var t=i.getNode(l);t&&(t.tabIndex=0,t.focus())},g=function(){var t=i.getNode(c),e=t.querySelectorAll("."+l),n=e.length-1,o=e[n];o&&o.focus()},h=function(t){t[t.length-1].addEventListener("keydown",m)},w=function(t){t[0].addEventListener("keydown",b)},y=function(){var t=i.getNode(c),e=t.querySelectorAll("."+l);e.length&&(h(e),w(e))},x=function(t){if(i.getNode(u)===t.target)return r.onAction(a.CANCEL_KEY)},_=function(t){var e=i.getNode(u);e.removeEventListener("click",x),t&&e.addEventListener("click",x)},k=function(t){o.default.timer&&clearTimeout(o.default.timer),t&&(o.default.timer=window.setTimeout(function(){return r.onAction(a.CANCEL_KEY)},t))},O=function(t){t.closeOnEsc?document.addEventListener("keyup",p):document.removeEventListener("keyup",p),t.dangerMode?v():g(),y(),_(t.closeOnClickOutside),k(t.timer)};e.default=O},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=n(3),i=n(37),a=n(38),s={title:null,text:null,icon:null,buttons:r.defaultButtonList,content:null,className:null,closeOnClickOutside:!0,closeOnEsc:!0,dangerMode:!1,timer:null},c=Object.assign({},s);e.setDefaults=function(t){c=Object.assign({},s,t)};var l=function(t){var e=t&&t.button,n=t&&t.buttons;return void 0!==e&&void 0!==n&&o.throwErr("Cannot set both 'button' and 'buttons' options!"),void 0!==e?{confirm:e}:n},u=function(t){return o.ordinalSuffixOf(t+1)},f=function(t,e){o.throwErr(u(e)+" argument ('"+t+"') is invalid")},d=function(t,e){var n=t+1,r=e[n];o.isPlainObject(r)||void 0===r||o.throwErr("Expected "+u(n)+" argument ('"+r+"') to be a plain object")},p=function(t,e){var n=t+1,r=e[n];void 0!==r&&o.throwErr("Unexpected "+u(n)+" argument ("+r+")")},m=function(t,e,n,r){var i=typeof e,a="string"===i,s=e instanceof Element;if(a){if(0===n)return{text:e};if(1===n)return{text:e,title:r[0]};if(2===n)return d(n,r),{icon:e};f(e,n)}else{if(s&&0===n)return d(n,r),{content:e};if(o.isPlainObject(e))return p(n,r),e;f(e,n)}};e.getOpts=function(){for(var t=[],e=0;e {
- // TODO: replace with event.composedPath()
for (let el = event.target; el && el !== document; el = el.parentNode) {
for (const attr in clickHandlers) {
const template = el.getAttribute(attr);
@@ -2593,7 +2592,7 @@
const innerParams = privateProps.innerParams.get(instance || undefined);
if (innerParams.showLoaderOnConfirm) {
- showLoading(); // TODO: make showLoading an *instance* method
+ showLoading();
}
if (innerParams.preConfirm) {
@@ -3110,7 +3109,7 @@
};
});
SweetAlert.DismissReason = DismissReason;
- SweetAlert.version = '11.1.5';
+ SweetAlert.version = '11.1.7';
const Swal = SweetAlert;
Swal.default = Swal;
@@ -3120,4 +3119,4 @@
}));
if (typeof this !== 'undefined' && this.Sweetalert2){ this.swal = this.sweetAlert = this.Swal = this.SweetAlert = this.Sweetalert2}
-"undefined"!=typeof document&&function(e,t){var n=e.createElement("style");if(e.getElementsByTagName("head")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,".swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4!important;grid-row:1/4!important;grid-template-columns:1fr 99fr 1fr;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 .625em #d9d9d9;pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.3125em;padding:0}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-styled:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(100,150,200,.5)}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:grid;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;box-sizing:border-box;grid-template-areas:\"top-start top top-end\" \"center-start center center-end\" \"bottom-start bottom-center bottom-end\";grid-template-rows:minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto);grid-template-rows:minmax(min-content,auto) minmax(min-content,auto) minmax(min-content,auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-bottom-start,.swal2-container.swal2-center-start,.swal2-container.swal2-top-start{grid-template-columns:minmax(0,1fr) auto auto}.swal2-container.swal2-bottom,.swal2-container.swal2-center,.swal2-container.swal2-top{grid-template-columns:auto minmax(0,1fr) auto}.swal2-container.swal2-bottom-end,.swal2-container.swal2-center-end,.swal2-container.swal2-top-end{grid-template-columns:auto auto minmax(0,1fr)}.swal2-container.swal2-top-start>.swal2-popup{align-self:start}.swal2-container.swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}.swal2-container.swal2-top-end>.swal2-popup,.swal2-container.swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}.swal2-container.swal2-center-left>.swal2-popup,.swal2-container.swal2-center-start>.swal2-popup{grid-row:2;align-self:center}.swal2-container.swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}.swal2-container.swal2-center-end>.swal2-popup,.swal2-container.swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}.swal2-container.swal2-bottom-left>.swal2-popup,.swal2-container.swal2-bottom-start>.swal2-popup{grid-column:1;grid-row:3;align-self:end}.swal2-container.swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}.swal2-container.swal2-bottom-end>.swal2-popup,.swal2-container.swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}.swal2-container.swal2-grow-fullscreen>.swal2-popup,.swal2-container.swal2-grow-row>.swal2-popup{grid-column:1/4;width:100%}.swal2-container.swal2-grow-column>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}.swal2-container.swal2-no-transition{transition:none!important}.swal2-popup{display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0,100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-title{position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px transparent;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7367f0;color:#fff;font-size:1em}.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px rgba(115,103,240,.5)}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#ea5455;color:#fff;font-size:1em}.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px rgba(234,84,85,.5)}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7d88;color:#fff;font-size:1em}.swal2-styled.swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,125,136,.5)}.swal2-styled.swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled:focus{outline:0}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto!important;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:2em auto 1em}.swal2-close{z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em 2em 0}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px transparent;color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em 2em 0;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-file{width:75%;margin-right:auto;margin-left:auto;background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto 0}.swal2-validation-message{align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:.25em solid transparent;border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{background-color:transparent!important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:transparent;pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}");
\ No newline at end of file
+"undefined"!=typeof document&&function(e,t){var n=e.createElement("style");if(e.getElementsByTagName("head")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,".swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4!important;grid-row:1/4!important;grid-template-columns:1fr 99fr 1fr;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:grid;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;box-sizing:border-box;grid-template-areas:\"top-start top top-end\" \"center-start center center-end\" \"bottom-start bottom-center bottom-end\";grid-template-rows:minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto);grid-template-rows:minmax(min-content,auto) minmax(min-content,auto) minmax(min-content,auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-bottom-start,.swal2-container.swal2-center-start,.swal2-container.swal2-top-start{grid-template-columns:minmax(0,1fr) auto auto}.swal2-container.swal2-bottom,.swal2-container.swal2-center,.swal2-container.swal2-top{grid-template-columns:auto minmax(0,1fr) auto}.swal2-container.swal2-bottom-end,.swal2-container.swal2-center-end,.swal2-container.swal2-top-end{grid-template-columns:auto auto minmax(0,1fr)}.swal2-container.swal2-top-start>.swal2-popup{align-self:start}.swal2-container.swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}.swal2-container.swal2-top-end>.swal2-popup,.swal2-container.swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}.swal2-container.swal2-center-left>.swal2-popup,.swal2-container.swal2-center-start>.swal2-popup{grid-row:2;align-self:center}.swal2-container.swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}.swal2-container.swal2-center-end>.swal2-popup,.swal2-container.swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}.swal2-container.swal2-bottom-left>.swal2-popup,.swal2-container.swal2-bottom-start>.swal2-popup{grid-column:1;grid-row:3;align-self:end}.swal2-container.swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}.swal2-container.swal2-bottom-end>.swal2-popup,.swal2-container.swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}.swal2-container.swal2-grow-fullscreen>.swal2-popup,.swal2-container.swal2-grow-row>.swal2-popup{grid-column:1/4;width:100%}.swal2-container.swal2-grow-column>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}.swal2-container.swal2-no-transition{transition:none!important}.swal2-popup{display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0,100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-title{position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px transparent;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7367f0;color:#fff;font-size:1em}.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px rgba(115,103,240,.5)}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#ea5455;color:#fff;font-size:1em}.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px rgba(234,84,85,.5)}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7d88;color:#fff;font-size:1em}.swal2-styled.swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,125,136,.5)}.swal2-styled.swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled:focus{outline:0}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto!important;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:2em auto 1em}.swal2-close{z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em 2em 0}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px transparent;color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em 2em 0;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-file{width:75%;margin-right:auto;margin-left:auto;background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto 0}.swal2-validation-message{align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:.25em solid transparent;border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{background-color:transparent!important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:transparent;pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}");
\ No newline at end of file
diff --git a/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/sweetalert2/sweetalert2.all.min.js b/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/sweetalert2/sweetalert2.all.min.js
index 57ff7ff176..7a84d6cdf6 100644
--- a/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/sweetalert2/sweetalert2.all.min.js
+++ b/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/sweetalert2/sweetalert2.all.min.js
@@ -1,2 +1,2 @@
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Sweetalert2=t()}(this,function(){"use strict";const l=Object.freeze({cancel:"cancel",backdrop:"backdrop",close:"close",esc:"esc",timer:"timer"}),t="SweetAlert2:",o=e=>e.charAt(0).toUpperCase()+e.slice(1),a=e=>Array.prototype.slice.call(e),s=e=>{console.warn("".concat(t," ").concat("object"==typeof e?e.join(" "):e))},r=e=>{console.error("".concat(t," ").concat(e))},n=[],i=(e,t)=>{t='"'.concat(e,'" is deprecated and will be removed in the next major release. Please use "').concat(t,'" instead.'),n.includes(t)||(n.push(t),s(t))},c=e=>"function"==typeof e?e():e,u=e=>e&&"function"==typeof e.toPromise,d=e=>u(e)?e.toPromise():Promise.resolve(e),p=e=>e&&Promise.resolve(e)===e,m=e=>e instanceof Element||(e=>"object"==typeof e&&e.jquery)(e);var e=e=>{const t={};for(const n in e)t[e[n]]="swal2-"+e[n];return t};const h=e(["container","shown","height-auto","iosfix","popup","modal","no-backdrop","no-transition","toast","toast-shown","show","hide","close","title","html-container","actions","confirm","deny","cancel","default-outline","footer","icon","icon-content","image","input","file","range","select","radio","checkbox","label","textarea","inputerror","input-label","validation-message","progress-steps","active-progress-step","progress-step","progress-step-line","loader","loading","styled","top","top-start","top-end","top-left","top-right","center","center-start","center-end","center-left","center-right","bottom","bottom-start","bottom-end","bottom-left","bottom-right","grow-row","grow-column","grow-fullscreen","rtl","timer-progress-bar","timer-progress-bar-container","scrollbar-measure","icon-success","icon-warning","icon-info","icon-question","icon-error"]),g=e(["success","warning","info","question","error"]),b=()=>document.body.querySelector(".".concat(h.container)),f=e=>{const t=b();return t?t.querySelector(e):null},y=e=>f(".".concat(e)),v=()=>y(h.popup),w=()=>y(h.icon),C=()=>y(h.title),k=()=>y(h["html-container"]),A=()=>y(h.image),B=()=>y(h["progress-steps"]),x=()=>y(h["validation-message"]),P=()=>f(".".concat(h.actions," .").concat(h.confirm)),E=()=>f(".".concat(h.actions," .").concat(h.deny));const S=()=>f(".".concat(h.loader)),T=()=>f(".".concat(h.actions," .").concat(h.cancel)),L=()=>y(h.actions),O=()=>y(h.footer),j=()=>y(h["timer-progress-bar"]),D=()=>y(h.close),I=()=>{const e=a(v().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')).sort((e,t)=>(e=parseInt(e.getAttribute("tabindex")),(t=parseInt(t.getAttribute("tabindex")))"-1"!==e.getAttribute("tabindex"));return(t=>{const n=[];for(let e=0;eG(e))},M=()=>!H()&&!document.body.classList.contains(h["no-backdrop"]),H=()=>document.body.classList.contains(h["toast-shown"]);const q={previousBodyPadding:null},V=(t,e)=>{if(t.textContent="",e){const n=new DOMParser,o=n.parseFromString(e,"text/html");a(o.querySelector("head").childNodes).forEach(e=>{t.appendChild(e)}),a(o.querySelector("body").childNodes).forEach(e=>{t.appendChild(e)})}},N=(t,e)=>{if(!e)return!1;var n=e.split(/\s+/);for(let e=0;e{var o,i;if(o=e,i=t,a(o.classList).forEach(e=>{Object.values(h).includes(e)||Object.values(g).includes(e)||Object.values(i.showClass).includes(e)||o.classList.remove(e)}),t.customClass&&t.customClass[n]){if("string"!=typeof t.customClass[n]&&!t.customClass[n].forEach)return s("Invalid type of customClass.".concat(n,'! Expected string or iterable object, got "').concat(typeof t.customClass[n],'"'));W(e,t.customClass[n])}},F=(e,t)=>{if(!t)return null;switch(t){case"select":case"textarea":case"file":return K(e,h[t]);case"checkbox":return e.querySelector(".".concat(h.checkbox," input"));case"radio":return e.querySelector(".".concat(h.radio," input:checked"))||e.querySelector(".".concat(h.radio," input:first-child"));case"range":return e.querySelector(".".concat(h.range," input"));default:return K(e,h.input)}},R=e=>{var t;e.focus(),"file"!==e.type&&(t=e.value,e.value="",e.value=t)},z=(e,t,n)=>{e&&t&&(t="string"==typeof t?t.split(/\s+/).filter(Boolean):t).forEach(t=>{e.forEach?e.forEach(e=>{n?e.classList.add(t):e.classList.remove(t)}):n?e.classList.add(t):e.classList.remove(t)})},W=(e,t)=>{z(e,t,!0)},_=(e,t)=>{z(e,t,!1)},K=(t,n)=>{for(let e=0;e{(n=n==="".concat(parseInt(n))?parseInt(n):n)||0===parseInt(n)?e.style[t]="number"==typeof n?"".concat(n,"px"):n:e.style.removeProperty(t)},Z=(e,t="flex")=>{e.style.display=t},J=e=>{e.style.display="none"},X=(e,t,n,o)=>{const i=e.querySelector(t);i&&(i.style[n]=o)},$=(e,t,n)=>{t?Z(e,n):J(e)},G=e=>!(!e||!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)),Q=()=>!G(P())&&!G(E())&&!G(T()),ee=e=>!!(e.scrollHeight>e.clientHeight),te=e=>{const t=window.getComputedStyle(e);var n=parseFloat(t.getPropertyValue("animation-duration")||"0"),e=parseFloat(t.getPropertyValue("transition-duration")||"0");return 0{const n=j();G(n)&&(t&&(n.style.transition="none",n.style.width="100%"),setTimeout(()=>{n.style.transition="width ".concat(e/1e3,"s linear"),n.style.width="0%"},10))},oe=()=>"undefined"==typeof window||"undefined"==typeof document,ie='\n \n').replace(/(^|\n)\s*/g,""),ae=()=>{ln.isVisible()&&ln.resetValidationMessage()},se=e=>{var t=(()=>{const e=b();return!!e&&(e.remove(),_([document.documentElement,document.body],[h["no-backdrop"],h["toast-shown"],h["has-column"]]),!0)})();if(oe())r("SweetAlert2 requires document to initialize");else{const n=document.createElement("div");n.className=h.container,t&&W(n,h["no-transition"]),V(n,ie);const o="string"==typeof(t=e.target)?document.querySelector(t):t;o.appendChild(n),(e=>{const t=v();t.setAttribute("role",e.toast?"alert":"dialog"),t.setAttribute("aria-live",e.toast?"polite":"assertive"),e.toast||t.setAttribute("aria-modal","true")})(e),e=o,"rtl"===window.getComputedStyle(e).direction&&W(b(),h.rtl),(()=>{const e=v(),t=K(e,h.input),n=K(e,h.file),o=e.querySelector(".".concat(h.range," input")),i=e.querySelector(".".concat(h.range," output")),a=K(e,h.select),s=e.querySelector(".".concat(h.checkbox," input")),r=K(e,h.textarea);t.oninput=ae,n.onchange=ae,a.onchange=ae,s.onchange=ae,r.oninput=ae,o.oninput=()=>{ae(),i.value=o.value},o.onchange=()=>{ae(),o.nextSibling.value=o.value}})()}},re=(e,t)=>{e instanceof HTMLElement?t.appendChild(e):"object"==typeof e?ce(e,t):e&&V(t,e)},ce=(e,t)=>{e.jquery?le(t,e):V(t,e.toString())},le=(t,n)=>{if(t.textContent="",0 in n)for(let e=0;e in n;e++)t.appendChild(n[e].cloneNode(!0));else t.appendChild(n.cloneNode(!0))},ue=(()=>{if(oe())return!1;var e=document.createElement("div"),t={WebkitAnimation:"webkitAnimationEnd",OAnimation:"oAnimationEnd oanimationend",animation:"animationend"};for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&void 0!==e.style[n])return t[n];return!1})(),de=(e,t)=>{const n=L();var o=S(),i=P(),a=E(),s=T();(t.showConfirmButton||t.showDenyButton||t.showCancelButton?Z:J)(n),U(n,t,"actions"),pe(i,"confirm",t),pe(a,"deny",t),pe(s,"cancel",t),function(e,t,n,o){if(!o.buttonsStyling)return _([e,t,n],h.styled);W([e,t,n],h.styled),o.confirmButtonColor&&(e.style.backgroundColor=o.confirmButtonColor,W(e,h["default-outline"]));o.denyButtonColor&&(t.style.backgroundColor=o.denyButtonColor,W(t,h["default-outline"]));o.cancelButtonColor&&(n.style.backgroundColor=o.cancelButtonColor,W(n,h["default-outline"]))}(i,a,s,t),t.reverseButtons&&(n.insertBefore(s,o),n.insertBefore(a,o),n.insertBefore(i,o)),V(o,t.loaderHtml),U(o,t,"loader")};function pe(e,t,n){$(e,n["show".concat(o(t),"Button")],"inline-block"),V(e,n["".concat(t,"ButtonText")]),e.setAttribute("aria-label",n["".concat(t,"ButtonAriaLabel")]),e.className=h[t],U(e,n,"".concat(t,"Button")),W(e,n["".concat(t,"ButtonClass")])}const me=(e,t)=>{var n,o,i=b();i&&(o=i,"string"==typeof(n=t.backdrop)?o.style.background=n:n||W([document.documentElement,document.body],h["no-backdrop"]),o=i,(n=t.position)in h?W(o,h[n]):(s('The "position" parameter is not valid, defaulting to "center"'),W(o,h.center)),n=i,!(o=t.grow)||"string"!=typeof o||(o="grow-".concat(o))in h&&W(n,h[o]),U(i,t,"container"))};var he={promise:new WeakMap,innerParams:new WeakMap,domCache:new WeakMap};const ge=["input","file","range","select","radio","checkbox","textarea"],be=e=>{if(!ke[e.input])return r('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'.concat(e.input,'"'));var t=Ce(e.input);const n=ke[e.input](t,e);Z(n),setTimeout(()=>{R(n)})},fe=(e,t)=>{const n=F(v(),e);if(n){(t=>{for(let e=0;e{var t=Ce(e.input);e.customClass&&W(t,e.customClass.input)},ve=(e,t)=>{e.placeholder&&!t.inputPlaceholder||(e.placeholder=t.inputPlaceholder)},we=(e,t,n)=>{if(n.inputLabel){e.id=h.input;const i=document.createElement("label");var o=h["input-label"];i.setAttribute("for",e.id),i.className=o,W(i,n.customClass.inputLabel),i.innerText=n.inputLabel,t.insertAdjacentElement("beforebegin",i)}},Ce=e=>{e=h[e]||h.input;return K(v(),e)},ke={};ke.text=ke.email=ke.password=ke.number=ke.tel=ke.url=(e,t)=>("string"==typeof t.inputValue||"number"==typeof t.inputValue?e.value=t.inputValue:p(t.inputValue)||s('Unexpected type of inputValue! Expected "string", "number" or "Promise", got "'.concat(typeof t.inputValue,'"')),we(e,e,t),ve(e,t),e.type=t.input,e),ke.file=(e,t)=>(we(e,e,t),ve(e,t),e),ke.range=(e,t)=>{const n=e.querySelector("input"),o=e.querySelector("output");return n.value=t.inputValue,n.type=t.input,o.value=t.inputValue,we(n,e,t),e},ke.select=(e,t)=>{if(e.textContent="",t.inputPlaceholder){const n=document.createElement("option");V(n,t.inputPlaceholder),n.value="",n.disabled=!0,n.selected=!0,e.appendChild(n)}return we(e,e,t),e},ke.radio=e=>(e.textContent="",e),ke.checkbox=(e,t)=>{const n=F(v(),"checkbox");n.value=1,n.id=h.checkbox,n.checked=Boolean(t.inputValue);var o=e.querySelector("span");return V(o,t.inputPlaceholder),e},ke.textarea=(n,e)=>{n.value=e.inputValue,ve(n,e),we(n,n,e);return setTimeout(()=>{if("MutationObserver"in window){const t=parseInt(window.getComputedStyle(v()).width);new MutationObserver(()=>{var e,e=n.offsetWidth+(e=n,parseInt(window.getComputedStyle(e).marginLeft)+parseInt(window.getComputedStyle(e).marginRight));e>t?v().style.width="".concat(e,"px"):v().style.width=null}).observe(n,{attributes:!0,attributeFilter:["style"]})}}),n};const Ae=(e,t)=>{const n=k();U(n,t,"htmlContainer"),t.html?(re(t.html,n),Z(n,"block")):t.text?(n.textContent=t.text,Z(n,"block")):J(n),((e,o)=>{const i=v();e=he.innerParams.get(e);const a=!e||o.input!==e.input;ge.forEach(e=>{var t=h[e];const n=K(i,t);fe(e,o.inputAttributes),n.className=t,a&&J(n)}),o.input&&(a&&be(o),ye(o))})(e,t)},Be=(e,t)=>{for(const n in g)t.icon!==n&&_(e,g[n]);W(e,g[t.icon]),Ee(e,t),xe(),U(e,t,"icon")},xe=()=>{const e=v();var t=window.getComputedStyle(e).getPropertyValue("background-color");const n=e.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix");for(let e=0;e{var n;e.textContent="",t.iconHtml?V(e,Se(t.iconHtml)):"success"===t.icon?V(e,'\n
\n \n
\n
\n '):"error"===t.icon?V(e,'\n \n \n \n \n '):(n={question:"?",warning:"!",info:"i"},V(e,Se(n[t.icon])))},Ee=(e,t)=>{if(t.iconColor){e.style.color=t.iconColor,e.style.borderColor=t.iconColor;for(const n of[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"])X(e,n,"backgroundColor",t.iconColor);X(e,".swal2-success-ring","borderColor",t.iconColor)}},Se=e=>'').concat(e,"
"),Te=(e,o)=>{const i=B();if(!o.progressSteps||0===o.progressSteps.length)return J(i);Z(i),i.textContent="",o.currentProgressStep>=o.progressSteps.length&&s("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),o.progressSteps.forEach((e,t)=>{var n,e=(n=e,e=document.createElement("li"),W(e,h["progress-step"]),V(e,n),e);i.appendChild(e),t===o.currentProgressStep&&W(e,h["active-progress-step"]),t!==o.progressSteps.length-1&&(t=(e=>{const t=document.createElement("li");return W(t,h["progress-step-line"]),e.progressStepsDistance&&(t.style.width=e.progressStepsDistance),t})(o),i.appendChild(t))})},Le=(e,t)=>{e.className="".concat(h.popup," ").concat(G(e)?t.showClass.popup:""),t.toast?(W([document.documentElement,document.body],h["toast-shown"]),W(e,h.toast)):W(e,h.modal),U(e,t,"popup"),"string"==typeof t.customClass&&W(e,t.customClass),t.icon&&W(e,h["icon-".concat(t.icon)])},Oe=(e,t)=>{var n,o,i;(e=>{var t=b();const n=v();e.toast?(Y(t,"width",e.width),n.style.width="100%",n.insertBefore(S(),w())):Y(n,"width",e.width),Y(n,"padding",e.padding),e.background&&(n.style.background=e.background),J(x()),Le(n,e)})(t),me(0,t),Te(0,t),i=e,n=t,o=he.innerParams.get(i),i=w(),o&&n.icon===o.icon?(Pe(i,n),Be(i,n)):n.icon||n.iconHtml?n.icon&&-1===Object.keys(g).indexOf(n.icon)?(r('Unknown icon! Expected "success", "error", "warning", "info" or "question", got "'.concat(n.icon,'"')),J(i)):(Z(i),Pe(i,n),Be(i,n),W(i,n.showClass.icon)):J(i),(e=>{const t=A();if(!e.imageUrl)return J(t);Z(t,""),t.setAttribute("src",e.imageUrl),t.setAttribute("alt",e.imageAlt),Y(t,"width",e.imageWidth),Y(t,"height",e.imageHeight),t.className=h.image,U(t,e,"image")})(t),(e=>{const t=C();$(t,e.title||e.titleText,"block"),e.title&&re(e.title,t),e.titleText&&(t.innerText=e.titleText),U(t,e,"title")})(t),(e=>{const t=D();V(t,e.closeButtonHtml),U(t,e,"closeButton"),$(t,e.showCloseButton),t.setAttribute("aria-label",e.closeButtonAriaLabel)})(t),Ae(e,t),de(0,t),i=t,e=O(),$(e,i.footer),i.footer&&re(i.footer,e),U(e,i,"footer"),"function"==typeof t.didRender&&t.didRender(v())};const je=()=>P()&&P().click();const De=e=>{let t=v();t||ln.fire(),t=v();var n=S();H()?J(w()):Ie(t,e),Z(n),t.setAttribute("data-loading",!0),t.setAttribute("aria-busy",!0),t.focus()},Ie=(e,t)=>{var n=L();const o=S();!t&&G(P())&&(t=P()),Z(n),t&&(J(t),o.setAttribute("data-button-to-replace",t.className)),o.parentNode.insertBefore(o,t),W([e,n],h.loading)},Me={},He=o=>new Promise(e=>{if(!o)return e();var t=window.scrollX,n=window.scrollY;Me.restoreFocusTimeout=setTimeout(()=>{Me.previousActiveElement&&Me.previousActiveElement.focus?(Me.previousActiveElement.focus(),Me.previousActiveElement=null):document.body&&document.body.focus(),e()},100),window.scrollTo(t,n)});const qe=()=>{if(Me.timeout)return(()=>{const e=j();var t=parseInt(window.getComputedStyle(e).width);e.style.removeProperty("transition"),e.style.width="100%";var n=parseInt(window.getComputedStyle(e).width),n=parseInt(t/n*100);e.style.removeProperty("transition"),e.style.width="".concat(n,"%")})(),Me.timeout.stop()},Ve=()=>{if(Me.timeout){var e=Me.timeout.start();return ne(e),e}};let Ne=!1;const Ue={};const Fe=t=>{for(let e=t.target;e&&e!==document;e=e.parentNode)for(const o in Ue){var n=e.getAttribute(o);if(n)return void Ue[o].fire({template:n})}},Re={title:"",titleText:"",text:"",html:"",footer:"",icon:void 0,iconColor:void 0,iconHtml:void 0,template:void 0,toast:!1,showClass:{popup:"swal2-show",backdrop:"swal2-backdrop-show",icon:"swal2-icon-show"},hideClass:{popup:"swal2-hide",backdrop:"swal2-backdrop-hide",icon:"swal2-icon-hide"},customClass:{},target:"body",backdrop:!0,heightAuto:!0,allowOutsideClick:!0,allowEscapeKey:!0,allowEnterKey:!0,stopKeydownPropagation:!0,keydownListenerCapture:!1,showConfirmButton:!0,showDenyButton:!1,showCancelButton:!1,preConfirm:void 0,preDeny:void 0,confirmButtonText:"OK",confirmButtonAriaLabel:"",confirmButtonColor:void 0,denyButtonText:"No",denyButtonAriaLabel:"",denyButtonColor:void 0,cancelButtonText:"Cancel",cancelButtonAriaLabel:"",cancelButtonColor:void 0,buttonsStyling:!0,reverseButtons:!1,focusConfirm:!0,focusDeny:!1,focusCancel:!1,returnFocus:!0,showCloseButton:!1,closeButtonHtml:"×",closeButtonAriaLabel:"Close this dialog",loaderHtml:"",showLoaderOnConfirm:!1,showLoaderOnDeny:!1,imageUrl:void 0,imageWidth:void 0,imageHeight:void 0,imageAlt:"",timer:void 0,timerProgressBar:!1,width:void 0,padding:void 0,background:void 0,input:void 0,inputPlaceholder:"",inputLabel:"",inputValue:"",inputOptions:{},inputAutoTrim:!0,inputAttributes:{},inputValidator:void 0,returnInputValueOnDeny:!1,validationMessage:void 0,grow:!1,position:"center",progressSteps:[],currentProgressStep:void 0,progressStepsDistance:void 0,willOpen:void 0,didOpen:void 0,didRender:void 0,willClose:void 0,didClose:void 0,didDestroy:void 0,scrollbarPadding:!0},ze=["allowEscapeKey","allowOutsideClick","background","buttonsStyling","cancelButtonAriaLabel","cancelButtonColor","cancelButtonText","closeButtonAriaLabel","closeButtonHtml","confirmButtonAriaLabel","confirmButtonColor","confirmButtonText","currentProgressStep","customClass","denyButtonAriaLabel","denyButtonColor","denyButtonText","didClose","didDestroy","footer","hideClass","html","icon","iconColor","iconHtml","imageAlt","imageHeight","imageUrl","imageWidth","preConfirm","preDeny","progressSteps","returnFocus","reverseButtons","showCancelButton","showCloseButton","showConfirmButton","showDenyButton","text","title","titleText","willClose"],We={},_e=["allowOutsideClick","allowEnterKey","backdrop","focusConfirm","focusDeny","focusCancel","returnFocus","heightAuto","keydownListenerCapture"],Ke=e=>Object.prototype.hasOwnProperty.call(Re,e);const Ye=e=>We[e],Ze=e=>{!e.backdrop&&e.allowOutsideClick&&s('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`');for(const o in e)n=o,Ke(n)||s('Unknown parameter "'.concat(n,'"')),e.toast&&(t=o,_e.includes(t)&&s('The parameter "'.concat(t,'" is incompatible with toasts'))),t=o,Ye(t)&&i(t,Ye(t));var t,n};var Je=Object.freeze({isValidParameter:Ke,isUpdatableParameter:e=>-1!==ze.indexOf(e),isDeprecatedParameter:Ye,argsToParams:n=>{const o={};return"object"!=typeof n[0]||m(n[0])?["title","html","icon"].forEach((e,t)=>{t=n[t];"string"==typeof t||m(t)?o[e]=t:void 0!==t&&r("Unexpected type of ".concat(e,'! Expected "string" or "Element", got ').concat(typeof t))}):Object.assign(o,n[0]),o},isVisible:()=>G(v()),clickConfirm:je,clickDeny:()=>E()&&E().click(),clickCancel:()=>T()&&T().click(),getContainer:b,getPopup:v,getTitle:C,getHtmlContainer:k,getImage:A,getIcon:w,getInputLabel:()=>y(h["input-label"]),getCloseButton:D,getActions:L,getConfirmButton:P,getDenyButton:E,getCancelButton:T,getLoader:S,getFooter:O,getTimerProgressBar:j,getFocusableElements:I,getValidationMessage:x,isLoading:()=>v().hasAttribute("data-loading"),fire:function(...e){return new this(...e)},mixin:function(n){class e extends this{_main(e,t){return super._main(e,Object.assign({},n,t))}}return e},showLoading:De,enableLoading:De,getTimerLeft:()=>Me.timeout&&Me.timeout.getTimerLeft(),stopTimer:qe,resumeTimer:Ve,toggleTimer:()=>{var e=Me.timeout;return e&&(e.running?qe:Ve)()},increaseTimer:e=>{if(Me.timeout){e=Me.timeout.increase(e);return ne(e,!0),e}},isTimerRunning:()=>Me.timeout&&Me.timeout.isRunning(),bindClickHandler:function(e="data-swal-template"){Ue[e]=this,Ne||(document.body.addEventListener("click",Fe),Ne=!0)}});function Xe(){var e=he.innerParams.get(this);if(e){const t=he.domCache.get(this);J(t.loader),H()?e.icon&&Z(w()):(e=>{const t=e.popup.getElementsByClassName(e.loader.getAttribute("data-button-to-replace"));if(t.length)Z(t[0],"inline-block");else if(Q())J(e.actions)})(t),_([t.popup,t.actions],h.loading),t.popup.removeAttribute("aria-busy"),t.popup.removeAttribute("data-loading"),t.confirmButton.disabled=!1,t.denyButton.disabled=!1,t.cancelButton.disabled=!1}}const $e=()=>{null===q.previousBodyPadding&&document.body.scrollHeight>window.innerHeight&&(q.previousBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight="".concat(q.previousBodyPadding+(()=>{const e=document.createElement("div");e.className=h["scrollbar-measure"],document.body.appendChild(e);var t=e.getBoundingClientRect().width-e.clientWidth;return document.body.removeChild(e),t})(),"px"))},Ge=()=>{navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i)||v().scrollHeight>window.innerHeight-44&&(b().style.paddingBottom="".concat(44,"px"))},Qe=()=>{const e=b();let t;e.ontouchstart=e=>{t=et(e)},e.ontouchmove=e=>{t&&(e.preventDefault(),e.stopPropagation())}},et=e=>{var t=e.target,n=b();return!tt(e)&&!nt(e)&&(t===n||!(ee(n)||"INPUT"===t.tagName||"TEXTAREA"===t.tagName||ee(k())&&k().contains(t)))},tt=e=>e.touches&&e.touches.length&&"stylus"===e.touches[0].touchType,nt=e=>e.touches&&1{const e=a(document.body.children);e.forEach(e=>{e.hasAttribute("data-previous-aria-hidden")?(e.setAttribute("aria-hidden",e.getAttribute("data-previous-aria-hidden")),e.removeAttribute("data-previous-aria-hidden")):e.removeAttribute("aria-hidden")})};var it={swalPromiseResolve:new WeakMap};function at(e,t,n,o){H()?ct(e,o):(He(n).then(()=>ct(e,o)),Me.keydownTarget.removeEventListener("keydown",Me.keydownHandler,{capture:Me.keydownListenerCapture}),Me.keydownHandlerAdded=!1),/^((?!chrome|android).)*safari/i.test(navigator.userAgent)?(t.setAttribute("style","display:none !important"),t.removeAttribute("class"),t.innerHTML=""):t.remove(),M()&&(null!==q.previousBodyPadding&&(document.body.style.paddingRight="".concat(q.previousBodyPadding,"px"),q.previousBodyPadding=null),N(document.body,h.iosfix)&&(t=parseInt(document.body.style.top,10),_(document.body,h.iosfix),document.body.style.top="",document.body.scrollTop=-1*t),ot()),_([document.documentElement,document.body],[h.shown,h["height-auto"],h["no-backdrop"],h["toast-shown"]])}function st(e){var t=v();if(t){e=void 0!==(o=e)?Object.assign({isConfirmed:!1,isDenied:!1,isDismissed:!1},o):{isConfirmed:!1,isDenied:!1,isDismissed:!0};var n=he.innerParams.get(this);if(n&&!N(t,n.hideClass.popup)){const i=it.swalPromiseResolve.get(this);_(t,n.showClass.popup),W(t,n.hideClass.popup);var o=b();_(o,n.showClass.backdrop),W(o,n.hideClass.backdrop),((e,t,n)=>{const o=b(),i=ue&&te(t);if(typeof n.willClose==="function")n.willClose(t);if(i)rt(e,t,o,n.returnFocus,n.didClose);else at(e,o,n.returnFocus,n.didClose)})(this,t,n),i(e)}}}const rt=(e,t,n,o,i)=>{Me.swalCloseEventFinishedCallback=at.bind(null,e,n,o,i),t.addEventListener(ue,function(e){e.target===t&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback)})},ct=(e,t)=>{setTimeout(()=>{"function"==typeof t&&t.bind(e.params)(),e._destroy()})};function lt(e,t,n){const o=he.domCache.get(e);t.forEach(e=>{o[e].disabled=n})}function ut(e,t){if(!e)return!1;if("radio"===e.type){const n=e.parentNode.parentNode,o=n.querySelectorAll("input");for(let e=0;e/^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid email address"),url:(e,t)=>/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid URL")};function mt(e){var t,n;(t=e).inputValidator||Object.keys(pt).forEach(e=>{t.input===e&&(t.inputValidator=pt[e])}),e.showLoaderOnConfirm&&!e.preConfirm&&s("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request"),(n=e).target&&("string"!=typeof n.target||document.querySelector(n.target))&&("string"==typeof n.target||n.target.appendChild)||(s('Target parameter is not valid, defaulting to "body"'),n.target="body"),"string"==typeof e.title&&(e.title=e.title.split("\n").join(" ")),se(e)}const ht=["swal-title","swal-html","swal-footer"],gt=e=>{e="string"==typeof e.template?document.querySelector(e.template):e.template;if(!e)return{};e=e.content;return kt(e),Object.assign(bt(e),ft(e),yt(e),vt(e),wt(e),Ct(e,ht))},bt=e=>{const o={};return a(e.querySelectorAll("swal-param")).forEach(e=>{At(e,["name","value"]);var t=e.getAttribute("name");let n=e.getAttribute("value");"boolean"==typeof Re[t]&&"false"===n&&(n=!1),"object"==typeof Re[t]&&(n=JSON.parse(n)),o[t]=n}),o},ft=e=>{const n={};return a(e.querySelectorAll("swal-button")).forEach(e=>{At(e,["type","color","aria-label"]);var t=e.getAttribute("type");n["".concat(t,"ButtonText")]=e.innerHTML,n["show".concat(o(t),"Button")]=!0,e.hasAttribute("color")&&(n["".concat(t,"ButtonColor")]=e.getAttribute("color")),e.hasAttribute("aria-label")&&(n["".concat(t,"ButtonAriaLabel")]=e.getAttribute("aria-label"))}),n},yt=e=>{const t={},n=e.querySelector("swal-image");return n&&(At(n,["src","width","height","alt"]),n.hasAttribute("src")&&(t.imageUrl=n.getAttribute("src")),n.hasAttribute("width")&&(t.imageWidth=n.getAttribute("width")),n.hasAttribute("height")&&(t.imageHeight=n.getAttribute("height")),n.hasAttribute("alt")&&(t.imageAlt=n.getAttribute("alt"))),t},vt=e=>{const t={},n=e.querySelector("swal-icon");return n&&(At(n,["type","color"]),n.hasAttribute("type")&&(t.icon=n.getAttribute("type")),n.hasAttribute("color")&&(t.iconColor=n.getAttribute("color")),t.iconHtml=n.innerHTML),t},wt=e=>{const n={},t=e.querySelector("swal-input");t&&(At(t,["type","label","placeholder","value"]),n.input=t.getAttribute("type")||"text",t.hasAttribute("label")&&(n.inputLabel=t.getAttribute("label")),t.hasAttribute("placeholder")&&(n.inputPlaceholder=t.getAttribute("placeholder")),t.hasAttribute("value")&&(n.inputValue=t.getAttribute("value")));e=e.querySelectorAll("swal-input-option");return e.length&&(n.inputOptions={},a(e).forEach(e=>{At(e,["value"]);var t=e.getAttribute("value"),e=e.innerHTML;n.inputOptions[t]=e})),n},Ct=(e,t)=>{const n={};for(const o in t){const i=t[o],a=e.querySelector(i);a&&(At(a,[]),n[i.replace(/^swal-/,"")]=a.innerHTML.trim())}return n},kt=e=>{const t=ht.concat(["swal-param","swal-button","swal-image","swal-icon","swal-input","swal-input-option"]);a(e.children).forEach(e=>{e=e.tagName.toLowerCase();-1===t.indexOf(e)&&s("Unrecognized element <".concat(e,">"))})},At=(t,n)=>{a(t.attributes).forEach(e=>{-1===n.indexOf(e.name)&&s(['Unrecognized attribute "'.concat(e.name,'" on <').concat(t.tagName.toLowerCase(),">."),"".concat(n.length?"Allowed attributes are: ".concat(n.join(", ")):"To set the value, use HTML within the element.")])})},Bt=e=>{const t=b(),n=v();"function"==typeof e.willOpen&&e.willOpen(n);var o=window.getComputedStyle(document.body).overflowY;St(t,n,e),setTimeout(()=>{Pt(t,n)},10),M()&&(Et(t,e.scrollbarPadding,o),(()=>{const e=a(document.body.children);e.forEach(e=>{e===b()||e.contains(b())||(e.hasAttribute("aria-hidden")&&e.setAttribute("data-previous-aria-hidden",e.getAttribute("aria-hidden")),e.setAttribute("aria-hidden","true"))})})()),H()||Me.previousActiveElement||(Me.previousActiveElement=document.activeElement),"function"==typeof e.didOpen&&setTimeout(()=>e.didOpen(n)),_(t,h["no-transition"])},xt=e=>{const t=v();if(e.target===t){const n=b();t.removeEventListener(ue,xt),n.style.overflowY="auto"}},Pt=(e,t)=>{ue&&te(t)?(e.style.overflowY="hidden",t.addEventListener(ue,xt)):e.style.overflowY="auto"},Et=(e,t,n)=>{var o;(/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream||"MacIntel"===navigator.platform&&1{e.scrollTop=0})},St=(e,t,n)=>{W(e,n.showClass.backdrop),t.style.setProperty("opacity","0","important"),Z(t,"grid"),setTimeout(()=>{W(t,n.showClass.popup),t.style.removeProperty("opacity")},10),W([document.documentElement,document.body],h.shown),n.heightAuto&&n.backdrop&&!n.toast&&W([document.documentElement,document.body],h["height-auto"])},Tt=e=>e.checked?1:0,Lt=e=>e.checked?e.value:null,Ot=e=>e.files.length?null!==e.getAttribute("multiple")?e.files:e.files[0]:null,jt=(t,n)=>{const o=v(),i=e=>It[n.input](o,Mt(e),n);u(n.inputOptions)||p(n.inputOptions)?(De(P()),d(n.inputOptions).then(e=>{t.hideLoading(),i(e)})):"object"==typeof n.inputOptions?i(n.inputOptions):r("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(typeof n.inputOptions))},Dt=(t,n)=>{const o=t.getInput();J(o),d(n.inputValue).then(e=>{o.value="number"===n.input?parseFloat(e)||0:"".concat(e),Z(o),o.focus(),t.hideLoading()}).catch(e=>{r("Error in inputValue promise: ".concat(e)),o.value="",Z(o),o.focus(),t.hideLoading()})},It={select:(e,t,i)=>{const a=K(e,h.select),s=(e,t,n)=>{const o=document.createElement("option");o.value=n,V(o,t),o.selected=Ht(n,i.inputValue),e.appendChild(o)};t.forEach(e=>{var t=e[0];const n=e[1];if(Array.isArray(n)){const o=document.createElement("optgroup");o.label=t,o.disabled=!1,a.appendChild(o),n.forEach(e=>s(o,e[1],e[0]))}else s(a,n,t)}),a.focus()},radio:(e,t,a)=>{const s=K(e,h.radio);t.forEach(e=>{var t=e[0],e=e[1];const n=document.createElement("input"),o=document.createElement("label");n.type="radio",n.name=h.radio,n.value=t,Ht(t,a.inputValue)&&(n.checked=!0);const i=document.createElement("span");V(i,e),i.className=h.label,o.appendChild(n),o.appendChild(i),s.appendChild(o)});const n=s.querySelectorAll("input");n.length&&n[0].focus()}},Mt=n=>{const o=[];return"undefined"!=typeof Map&&n instanceof Map?n.forEach((e,t)=>{let n=e;"object"==typeof n&&(n=Mt(n)),o.push([t,n])}):Object.keys(n).forEach(e=>{let t=n[e];"object"==typeof t&&(t=Mt(t)),o.push([e,t])}),o},Ht=(e,t)=>t&&t.toString()===e.toString(),qt=(e,t)=>{var n=he.innerParams.get(e),o=((e,t)=>{const n=e.getInput();if(!n)return null;switch(t.input){case"checkbox":return Tt(n);case"radio":return Lt(n);case"file":return Ot(n);default:return t.inputAutoTrim?n.value.trim():n.value}})(e,n);n.inputValidator?Vt(e,o,t):e.getInput().checkValidity()?("deny"===t?Nt:Ft)(e,o):(e.enableButtons(),e.showValidationMessage(n.validationMessage))},Vt=(t,n,o)=>{const e=he.innerParams.get(t);t.disableInput();const i=Promise.resolve().then(()=>d(e.inputValidator(n,e.validationMessage)));i.then(e=>{t.enableButtons(),t.enableInput(),e?t.showValidationMessage(e):("deny"===o?Nt:Ft)(t,n)})},Nt=(t,n)=>{const e=he.innerParams.get(t||void 0);if(e.showLoaderOnDeny&&De(E()),e.preDeny){const o=Promise.resolve().then(()=>d(e.preDeny(n,e.validationMessage)));o.then(e=>{!1===e?t.hideLoading():t.closePopup({isDenied:!0,value:void 0===e?n:e})})}else t.closePopup({isDenied:!0,value:n})},Ut=(e,t)=>{e.closePopup({isConfirmed:!0,value:t})},Ft=(t,n)=>{const e=he.innerParams.get(t||void 0);if(e.showLoaderOnConfirm&&De(),e.preConfirm){t.resetValidationMessage();const o=Promise.resolve().then(()=>d(e.preConfirm(n,e.validationMessage)));o.then(e=>{G(x())||!1===e?t.hideLoading():Ut(t,void 0===e?n:e)})}else Ut(t,n)},Rt=(e,t,n)=>{const o=I();if(o.length)return(t+=n)===o.length?t=0:-1===t&&(t=o.length-1),o[t].focus();v().focus()},zt=["ArrowRight","ArrowDown"],Wt=["ArrowLeft","ArrowUp"],_t=(e,t,n)=>{var o=he.innerParams.get(e);o&&(o.stopKeydownPropagation&&t.stopPropagation(),"Enter"===t.key?Kt(e,t,o):"Tab"===t.key?Yt(t,o):[...zt,...Wt].includes(t.key)?Zt(t.key):"Escape"===t.key&&Jt(t,o,n))},Kt=(e,t,n)=>{t.isComposing||t.target&&e.getInput()&&t.target.outerHTML===e.getInput().outerHTML&&(["textarea","file"].includes(n.input)||(je(),t.preventDefault()))},Yt=(e,t)=>{var n=e.target,o=I();let i=-1;for(let e=0;e{const t=P(),n=E(),o=T();if([t,n,o].includes(document.activeElement)){e=zt.includes(e)?"nextElementSibling":"previousElementSibling";const i=document.activeElement[e];i&&i.focus()}},Jt=(e,t,n)=>{c(t.allowEscapeKey)&&(e.preventDefault(),n(l.esc))},Xt=(t,e,n)=>{e.popup.onclick=()=>{var e=he.innerParams.get(t);e.showConfirmButton||e.showDenyButton||e.showCancelButton||e.showCloseButton||e.timer||e.input||n(l.close)}};let $t=!1;const Gt=t=>{t.popup.onmousedown=()=>{t.container.onmouseup=function(e){t.container.onmouseup=void 0,e.target===t.container&&($t=!0)}}},Qt=t=>{t.container.onmousedown=()=>{t.popup.onmouseup=function(e){t.popup.onmouseup=void 0,e.target!==t.popup&&!t.popup.contains(e.target)||($t=!0)}}},en=(n,o,i)=>{o.container.onclick=e=>{var t=he.innerParams.get(n);$t?$t=!1:e.target===o.container&&c(t.allowOutsideClick)&&i(l.backdrop)}};const tn=(e,t,n)=>{var o=j();J(o),t.timer&&(e.timeout=new dt(()=>{n("timer"),delete e.timeout},t.timer),t.timerProgressBar&&(Z(o),setTimeout(()=>{e.timeout&&e.timeout.running&&ne(t.timer)})))},nn=(e,t)=>{if(!t.toast)return c(t.allowEnterKey)?void(on(e,t)||Rt(0,-1,1)):an()},on=(e,t)=>t.focusDeny&&G(e.denyButton)?(e.denyButton.focus(),!0):t.focusCancel&&G(e.cancelButton)?(e.cancelButton.focus(),!0):!(!t.focusConfirm||!G(e.confirmButton))&&(e.confirmButton.focus(),!0),an=()=>{document.activeElement&&"function"==typeof document.activeElement.blur&&document.activeElement.blur()};const sn=e=>{for(const t in e)e[t]=new WeakMap};e=Object.freeze({hideLoading:Xe,disableLoading:Xe,getInput:function(e){var t=he.innerParams.get(e||this);return(e=he.domCache.get(e||this))?F(e.popup,t.input):null},close:st,closePopup:st,closeModal:st,closeToast:st,enableButtons:function(){lt(this,["confirmButton","denyButton","cancelButton"],!1)},disableButtons:function(){lt(this,["confirmButton","denyButton","cancelButton"],!0)},enableInput:function(){return ut(this.getInput(),!1)},disableInput:function(){return ut(this.getInput(),!0)},showValidationMessage:function(e){const t=he.domCache.get(this);var n=he.innerParams.get(this);V(t.validationMessage,e),t.validationMessage.className=h["validation-message"],n.customClass&&n.customClass.validationMessage&&W(t.validationMessage,n.customClass.validationMessage),Z(t.validationMessage);const o=this.getInput();o&&(o.setAttribute("aria-invalid",!0),o.setAttribute("aria-describedby",h["validation-message"]),R(o),W(o,h.inputerror))},resetValidationMessage:function(){var e=he.domCache.get(this);e.validationMessage&&J(e.validationMessage);const t=this.getInput();t&&(t.removeAttribute("aria-invalid"),t.removeAttribute("aria-describedby"),_(t,h.inputerror))},getProgressSteps:function(){return he.domCache.get(this).progressSteps},_main:function(e,t={}){Ze(Object.assign({},t,e)),Me.currentInstance&&(Me.currentInstance._destroy(),M()&&ot()),Me.currentInstance=this,mt(e=((e,t)=>{const n=gt(e),o=Object.assign({},Re,t,n,e);return o.showClass=Object.assign({},Re.showClass,o.showClass),o.hideClass=Object.assign({},Re.hideClass,o.hideClass),o})(e,t)),Object.freeze(e),Me.timeout&&(Me.timeout.stop(),delete Me.timeout),clearTimeout(Me.restoreFocusTimeout);var s,r,c,t=(e=>{const t={popup:v(),container:b(),actions:L(),confirmButton:P(),denyButton:E(),cancelButton:T(),loader:S(),closeButton:D(),validationMessage:x(),progressSteps:B()};return he.domCache.set(e,t),t})(this);return Oe(this,e),he.innerParams.set(this,e),s=this,r=t,c=e,new Promise(e=>{const t=e=>{s.closePopup({isDismissed:!0,dismiss:e})};var n,o,i,a;it.swalPromiseResolve.set(s,e),r.confirmButton.onclick=()=>(e=>{var t=he.innerParams.get(e);e.disableButtons(),t.input?qt(e,"confirm"):Ft(e,!0)})(s),r.denyButton.onclick=()=>(e=>{var t=he.innerParams.get(e);e.disableButtons(),t.returnInputValueOnDeny?qt(e,"deny"):Nt(e,!1)})(s),r.cancelButton.onclick=()=>((e,t)=>{e.disableButtons(),t(l.cancel)})(s,t),r.closeButton.onclick=()=>t(l.close),n=s,a=r,e=t,he.innerParams.get(n).toast?Xt(n,a,e):(Gt(a),Qt(a),en(n,a,e)),o=s,a=Me,e=c,i=t,a.keydownTarget&&a.keydownHandlerAdded&&(a.keydownTarget.removeEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!1),e.toast||(a.keydownHandler=e=>_t(o,e,i),a.keydownTarget=e.keydownListenerCapture?window:v(),a.keydownListenerCapture=e.keydownListenerCapture,a.keydownTarget.addEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!0),e=s,"select"===(a=c).input||"radio"===a.input?jt(e,a):["text","email","number","tel","textarea"].includes(a.input)&&(u(a.inputValue)||p(a.inputValue))&&(De(P()),Dt(e,a)),Bt(c),tn(Me,c,t),nn(r,c),setTimeout(()=>{r.container.scrollTop=0})})},update:function(t){var e=v(),n=he.innerParams.get(this);if(!e||N(e,n.hideClass.popup))return s("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");const o={};Object.keys(t).forEach(e=>{ln.isUpdatableParameter(e)?o[e]=t[e]:s('Invalid parameter to update: "'.concat(e,'". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\n\nIf you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md'))}),n=Object.assign({},n,o),Oe(this,n),he.innerParams.set(this,n),Object.defineProperties(this,{params:{value:Object.assign({},this.params,t),writable:!1,enumerable:!0}})},_destroy:function(){var e=he.domCache.get(this);const t=he.innerParams.get(this);t&&(e.popup&&Me.swalCloseEventFinishedCallback&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback),Me.deferDisposalTimer&&(clearTimeout(Me.deferDisposalTimer),delete Me.deferDisposalTimer),"function"==typeof t.didDestroy&&t.didDestroy(),delete this.params,delete Me.keydownHandler,delete Me.keydownTarget,sn(he),sn(it),delete Me.currentInstance)}});let rn;class cn{constructor(...e){"undefined"!=typeof window&&(rn=this,e=Object.freeze(this.constructor.argsToParams(e)),Object.defineProperties(this,{params:{value:e,writable:!1,enumerable:!0,configurable:!0}}),e=this._main(this.params),he.promise.set(this,e))}then(e){const t=he.promise.get(this);return t.then(e)}finally(e){const t=he.promise.get(this);return t.finally(e)}}Object.assign(cn.prototype,e),Object.assign(cn,Je),Object.keys(e).forEach(t=>{cn[t]=function(...e){if(rn)return rn[t](...e)}}),cn.DismissReason=l,cn.version="11.1.5";const ln=cn;return ln.default=ln,ln}),void 0!==this&&this.Sweetalert2&&(this.swal=this.sweetAlert=this.Swal=this.SweetAlert=this.Sweetalert2);
-"undefined"!=typeof document&&function(e,t){var n=e.createElement("style");if(e.getElementsByTagName("head")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,".swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4!important;grid-row:1/4!important;grid-template-columns:1fr 99fr 1fr;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 .625em #d9d9d9;pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.3125em;padding:0}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-styled:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(100,150,200,.5)}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:grid;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;box-sizing:border-box;grid-template-areas:\"top-start top top-end\" \"center-start center center-end\" \"bottom-start bottom-center bottom-end\";grid-template-rows:minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto);grid-template-rows:minmax(min-content,auto) minmax(min-content,auto) minmax(min-content,auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-bottom-start,.swal2-container.swal2-center-start,.swal2-container.swal2-top-start{grid-template-columns:minmax(0,1fr) auto auto}.swal2-container.swal2-bottom,.swal2-container.swal2-center,.swal2-container.swal2-top{grid-template-columns:auto minmax(0,1fr) auto}.swal2-container.swal2-bottom-end,.swal2-container.swal2-center-end,.swal2-container.swal2-top-end{grid-template-columns:auto auto minmax(0,1fr)}.swal2-container.swal2-top-start>.swal2-popup{align-self:start}.swal2-container.swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}.swal2-container.swal2-top-end>.swal2-popup,.swal2-container.swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}.swal2-container.swal2-center-left>.swal2-popup,.swal2-container.swal2-center-start>.swal2-popup{grid-row:2;align-self:center}.swal2-container.swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}.swal2-container.swal2-center-end>.swal2-popup,.swal2-container.swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}.swal2-container.swal2-bottom-left>.swal2-popup,.swal2-container.swal2-bottom-start>.swal2-popup{grid-column:1;grid-row:3;align-self:end}.swal2-container.swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}.swal2-container.swal2-bottom-end>.swal2-popup,.swal2-container.swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}.swal2-container.swal2-grow-fullscreen>.swal2-popup,.swal2-container.swal2-grow-row>.swal2-popup{grid-column:1/4;width:100%}.swal2-container.swal2-grow-column>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}.swal2-container.swal2-no-transition{transition:none!important}.swal2-popup{display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0,100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-title{position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px transparent;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7367f0;color:#fff;font-size:1em}.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px rgba(115,103,240,.5)}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#ea5455;color:#fff;font-size:1em}.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px rgba(234,84,85,.5)}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7d88;color:#fff;font-size:1em}.swal2-styled.swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,125,136,.5)}.swal2-styled.swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled:focus{outline:0}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto!important;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:2em auto 1em}.swal2-close{z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em 2em 0}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px transparent;color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em 2em 0;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-file{width:75%;margin-right:auto;margin-left:auto;background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto 0}.swal2-validation-message{align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:.25em solid transparent;border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{background-color:transparent!important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:transparent;pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}");
\ No newline at end of file
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Sweetalert2=t()}(this,function(){"use strict";const l=Object.freeze({cancel:"cancel",backdrop:"backdrop",close:"close",esc:"esc",timer:"timer"}),t="SweetAlert2:",o=e=>e.charAt(0).toUpperCase()+e.slice(1),a=e=>Array.prototype.slice.call(e),s=e=>{console.warn("".concat(t," ").concat("object"==typeof e?e.join(" "):e))},r=e=>{console.error("".concat(t," ").concat(e))},n=[],i=(e,t)=>{t='"'.concat(e,'" is deprecated and will be removed in the next major release. Please use "').concat(t,'" instead.'),n.includes(t)||(n.push(t),s(t))},c=e=>"function"==typeof e?e():e,u=e=>e&&"function"==typeof e.toPromise,d=e=>u(e)?e.toPromise():Promise.resolve(e),p=e=>e&&Promise.resolve(e)===e,m=e=>e instanceof Element||(e=>"object"==typeof e&&e.jquery)(e);var e=e=>{const t={};for(const n in e)t[e[n]]="swal2-"+e[n];return t};const h=e(["container","shown","height-auto","iosfix","popup","modal","no-backdrop","no-transition","toast","toast-shown","show","hide","close","title","html-container","actions","confirm","deny","cancel","default-outline","footer","icon","icon-content","image","input","file","range","select","radio","checkbox","label","textarea","inputerror","input-label","validation-message","progress-steps","active-progress-step","progress-step","progress-step-line","loader","loading","styled","top","top-start","top-end","top-left","top-right","center","center-start","center-end","center-left","center-right","bottom","bottom-start","bottom-end","bottom-left","bottom-right","grow-row","grow-column","grow-fullscreen","rtl","timer-progress-bar","timer-progress-bar-container","scrollbar-measure","icon-success","icon-warning","icon-info","icon-question","icon-error"]),g=e(["success","warning","info","question","error"]),b=()=>document.body.querySelector(".".concat(h.container)),f=e=>{const t=b();return t?t.querySelector(e):null},y=e=>f(".".concat(e)),v=()=>y(h.popup),w=()=>y(h.icon),C=()=>y(h.title),k=()=>y(h["html-container"]),A=()=>y(h.image),B=()=>y(h["progress-steps"]),x=()=>y(h["validation-message"]),P=()=>f(".".concat(h.actions," .").concat(h.confirm)),E=()=>f(".".concat(h.actions," .").concat(h.deny));const S=()=>f(".".concat(h.loader)),T=()=>f(".".concat(h.actions," .").concat(h.cancel)),L=()=>y(h.actions),O=()=>y(h.footer),j=()=>y(h["timer-progress-bar"]),D=()=>y(h.close),I=()=>{const e=a(v().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')).sort((e,t)=>(e=parseInt(e.getAttribute("tabindex")),(t=parseInt(t.getAttribute("tabindex")))"-1"!==e.getAttribute("tabindex"));return(t=>{const n=[];for(let e=0;eG(e))},M=()=>!H()&&!document.body.classList.contains(h["no-backdrop"]),H=()=>document.body.classList.contains(h["toast-shown"]);const q={previousBodyPadding:null},V=(t,e)=>{if(t.textContent="",e){const n=new DOMParser,o=n.parseFromString(e,"text/html");a(o.querySelector("head").childNodes).forEach(e=>{t.appendChild(e)}),a(o.querySelector("body").childNodes).forEach(e=>{t.appendChild(e)})}},N=(t,e)=>{if(!e)return!1;var n=e.split(/\s+/);for(let e=0;e{var o,i;if(o=e,i=t,a(o.classList).forEach(e=>{Object.values(h).includes(e)||Object.values(g).includes(e)||Object.values(i.showClass).includes(e)||o.classList.remove(e)}),t.customClass&&t.customClass[n]){if("string"!=typeof t.customClass[n]&&!t.customClass[n].forEach)return s("Invalid type of customClass.".concat(n,'! Expected string or iterable object, got "').concat(typeof t.customClass[n],'"'));W(e,t.customClass[n])}},F=(e,t)=>{if(!t)return null;switch(t){case"select":case"textarea":case"file":return K(e,h[t]);case"checkbox":return e.querySelector(".".concat(h.checkbox," input"));case"radio":return e.querySelector(".".concat(h.radio," input:checked"))||e.querySelector(".".concat(h.radio," input:first-child"));case"range":return e.querySelector(".".concat(h.range," input"));default:return K(e,h.input)}},R=e=>{var t;e.focus(),"file"!==e.type&&(t=e.value,e.value="",e.value=t)},z=(e,t,n)=>{e&&t&&(t="string"==typeof t?t.split(/\s+/).filter(Boolean):t).forEach(t=>{e.forEach?e.forEach(e=>{n?e.classList.add(t):e.classList.remove(t)}):n?e.classList.add(t):e.classList.remove(t)})},W=(e,t)=>{z(e,t,!0)},_=(e,t)=>{z(e,t,!1)},K=(t,n)=>{for(let e=0;e{(n=n==="".concat(parseInt(n))?parseInt(n):n)||0===parseInt(n)?e.style[t]="number"==typeof n?"".concat(n,"px"):n:e.style.removeProperty(t)},Z=(e,t="flex")=>{e.style.display=t},J=e=>{e.style.display="none"},X=(e,t,n,o)=>{const i=e.querySelector(t);i&&(i.style[n]=o)},$=(e,t,n)=>{t?Z(e,n):J(e)},G=e=>!(!e||!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)),Q=()=>!G(P())&&!G(E())&&!G(T()),ee=e=>!!(e.scrollHeight>e.clientHeight),te=e=>{const t=window.getComputedStyle(e);var n=parseFloat(t.getPropertyValue("animation-duration")||"0"),e=parseFloat(t.getPropertyValue("transition-duration")||"0");return 0{const n=j();G(n)&&(t&&(n.style.transition="none",n.style.width="100%"),setTimeout(()=>{n.style.transition="width ".concat(e/1e3,"s linear"),n.style.width="0%"},10))},oe=()=>"undefined"==typeof window||"undefined"==typeof document,ie='\n \n').replace(/(^|\n)\s*/g,""),ae=()=>{ln.isVisible()&&ln.resetValidationMessage()},se=e=>{var t=(()=>{const e=b();return!!e&&(e.remove(),_([document.documentElement,document.body],[h["no-backdrop"],h["toast-shown"],h["has-column"]]),!0)})();if(oe())r("SweetAlert2 requires document to initialize");else{const n=document.createElement("div");n.className=h.container,t&&W(n,h["no-transition"]),V(n,ie);const o="string"==typeof(t=e.target)?document.querySelector(t):t;o.appendChild(n),(e=>{const t=v();t.setAttribute("role",e.toast?"alert":"dialog"),t.setAttribute("aria-live",e.toast?"polite":"assertive"),e.toast||t.setAttribute("aria-modal","true")})(e),e=o,"rtl"===window.getComputedStyle(e).direction&&W(b(),h.rtl),(()=>{const e=v(),t=K(e,h.input),n=K(e,h.file),o=e.querySelector(".".concat(h.range," input")),i=e.querySelector(".".concat(h.range," output")),a=K(e,h.select),s=e.querySelector(".".concat(h.checkbox," input")),r=K(e,h.textarea);t.oninput=ae,n.onchange=ae,a.onchange=ae,s.onchange=ae,r.oninput=ae,o.oninput=()=>{ae(),i.value=o.value},o.onchange=()=>{ae(),o.nextSibling.value=o.value}})()}},re=(e,t)=>{e instanceof HTMLElement?t.appendChild(e):"object"==typeof e?ce(e,t):e&&V(t,e)},ce=(e,t)=>{e.jquery?le(t,e):V(t,e.toString())},le=(t,n)=>{if(t.textContent="",0 in n)for(let e=0;e in n;e++)t.appendChild(n[e].cloneNode(!0));else t.appendChild(n.cloneNode(!0))},ue=(()=>{if(oe())return!1;var e=document.createElement("div"),t={WebkitAnimation:"webkitAnimationEnd",OAnimation:"oAnimationEnd oanimationend",animation:"animationend"};for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&void 0!==e.style[n])return t[n];return!1})(),de=(e,t)=>{const n=L();var o=S(),i=P(),a=E(),s=T();(t.showConfirmButton||t.showDenyButton||t.showCancelButton?Z:J)(n),U(n,t,"actions"),pe(i,"confirm",t),pe(a,"deny",t),pe(s,"cancel",t),function(e,t,n,o){if(!o.buttonsStyling)return _([e,t,n],h.styled);W([e,t,n],h.styled),o.confirmButtonColor&&(e.style.backgroundColor=o.confirmButtonColor,W(e,h["default-outline"]));o.denyButtonColor&&(t.style.backgroundColor=o.denyButtonColor,W(t,h["default-outline"]));o.cancelButtonColor&&(n.style.backgroundColor=o.cancelButtonColor,W(n,h["default-outline"]))}(i,a,s,t),t.reverseButtons&&(n.insertBefore(s,o),n.insertBefore(a,o),n.insertBefore(i,o)),V(o,t.loaderHtml),U(o,t,"loader")};function pe(e,t,n){$(e,n["show".concat(o(t),"Button")],"inline-block"),V(e,n["".concat(t,"ButtonText")]),e.setAttribute("aria-label",n["".concat(t,"ButtonAriaLabel")]),e.className=h[t],U(e,n,"".concat(t,"Button")),W(e,n["".concat(t,"ButtonClass")])}const me=(e,t)=>{var n,o,i=b();i&&(o=i,"string"==typeof(n=t.backdrop)?o.style.background=n:n||W([document.documentElement,document.body],h["no-backdrop"]),o=i,(n=t.position)in h?W(o,h[n]):(s('The "position" parameter is not valid, defaulting to "center"'),W(o,h.center)),n=i,!(o=t.grow)||"string"!=typeof o||(o="grow-".concat(o))in h&&W(n,h[o]),U(i,t,"container"))};var he={promise:new WeakMap,innerParams:new WeakMap,domCache:new WeakMap};const ge=["input","file","range","select","radio","checkbox","textarea"],be=e=>{if(!ke[e.input])return r('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'.concat(e.input,'"'));var t=Ce(e.input);const n=ke[e.input](t,e);Z(n),setTimeout(()=>{R(n)})},fe=(e,t)=>{const n=F(v(),e);if(n){(t=>{for(let e=0;e{var t=Ce(e.input);e.customClass&&W(t,e.customClass.input)},ve=(e,t)=>{e.placeholder&&!t.inputPlaceholder||(e.placeholder=t.inputPlaceholder)},we=(e,t,n)=>{if(n.inputLabel){e.id=h.input;const i=document.createElement("label");var o=h["input-label"];i.setAttribute("for",e.id),i.className=o,W(i,n.customClass.inputLabel),i.innerText=n.inputLabel,t.insertAdjacentElement("beforebegin",i)}},Ce=e=>{e=h[e]||h.input;return K(v(),e)},ke={};ke.text=ke.email=ke.password=ke.number=ke.tel=ke.url=(e,t)=>("string"==typeof t.inputValue||"number"==typeof t.inputValue?e.value=t.inputValue:p(t.inputValue)||s('Unexpected type of inputValue! Expected "string", "number" or "Promise", got "'.concat(typeof t.inputValue,'"')),we(e,e,t),ve(e,t),e.type=t.input,e),ke.file=(e,t)=>(we(e,e,t),ve(e,t),e),ke.range=(e,t)=>{const n=e.querySelector("input"),o=e.querySelector("output");return n.value=t.inputValue,n.type=t.input,o.value=t.inputValue,we(n,e,t),e},ke.select=(e,t)=>{if(e.textContent="",t.inputPlaceholder){const n=document.createElement("option");V(n,t.inputPlaceholder),n.value="",n.disabled=!0,n.selected=!0,e.appendChild(n)}return we(e,e,t),e},ke.radio=e=>(e.textContent="",e),ke.checkbox=(e,t)=>{const n=F(v(),"checkbox");n.value=1,n.id=h.checkbox,n.checked=Boolean(t.inputValue);var o=e.querySelector("span");return V(o,t.inputPlaceholder),e},ke.textarea=(n,e)=>{n.value=e.inputValue,ve(n,e),we(n,n,e);return setTimeout(()=>{if("MutationObserver"in window){const t=parseInt(window.getComputedStyle(v()).width);new MutationObserver(()=>{var e,e=n.offsetWidth+(e=n,parseInt(window.getComputedStyle(e).marginLeft)+parseInt(window.getComputedStyle(e).marginRight));e>t?v().style.width="".concat(e,"px"):v().style.width=null}).observe(n,{attributes:!0,attributeFilter:["style"]})}}),n};const Ae=(e,t)=>{const n=k();U(n,t,"htmlContainer"),t.html?(re(t.html,n),Z(n,"block")):t.text?(n.textContent=t.text,Z(n,"block")):J(n),((e,o)=>{const i=v();e=he.innerParams.get(e);const a=!e||o.input!==e.input;ge.forEach(e=>{var t=h[e];const n=K(i,t);fe(e,o.inputAttributes),n.className=t,a&&J(n)}),o.input&&(a&&be(o),ye(o))})(e,t)},Be=(e,t)=>{for(const n in g)t.icon!==n&&_(e,g[n]);W(e,g[t.icon]),Ee(e,t),xe(),U(e,t,"icon")},xe=()=>{const e=v();var t=window.getComputedStyle(e).getPropertyValue("background-color");const n=e.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix");for(let e=0;e{var n;e.textContent="",t.iconHtml?V(e,Se(t.iconHtml)):"success"===t.icon?V(e,'\n
\n \n
\n
\n '):"error"===t.icon?V(e,'\n \n \n \n \n '):(n={question:"?",warning:"!",info:"i"},V(e,Se(n[t.icon])))},Ee=(e,t)=>{if(t.iconColor){e.style.color=t.iconColor,e.style.borderColor=t.iconColor;for(const n of[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"])X(e,n,"backgroundColor",t.iconColor);X(e,".swal2-success-ring","borderColor",t.iconColor)}},Se=e=>'').concat(e,"
"),Te=(e,o)=>{const i=B();if(!o.progressSteps||0===o.progressSteps.length)return J(i);Z(i),i.textContent="",o.currentProgressStep>=o.progressSteps.length&&s("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),o.progressSteps.forEach((e,t)=>{var n,e=(n=e,e=document.createElement("li"),W(e,h["progress-step"]),V(e,n),e);i.appendChild(e),t===o.currentProgressStep&&W(e,h["active-progress-step"]),t!==o.progressSteps.length-1&&(t=(e=>{const t=document.createElement("li");return W(t,h["progress-step-line"]),e.progressStepsDistance&&(t.style.width=e.progressStepsDistance),t})(o),i.appendChild(t))})},Le=(e,t)=>{e.className="".concat(h.popup," ").concat(G(e)?t.showClass.popup:""),t.toast?(W([document.documentElement,document.body],h["toast-shown"]),W(e,h.toast)):W(e,h.modal),U(e,t,"popup"),"string"==typeof t.customClass&&W(e,t.customClass),t.icon&&W(e,h["icon-".concat(t.icon)])},Oe=(e,t)=>{var n,o,i;(e=>{var t=b();const n=v();e.toast?(Y(t,"width",e.width),n.style.width="100%",n.insertBefore(S(),w())):Y(n,"width",e.width),Y(n,"padding",e.padding),e.background&&(n.style.background=e.background),J(x()),Le(n,e)})(t),me(0,t),Te(0,t),i=e,n=t,o=he.innerParams.get(i),i=w(),o&&n.icon===o.icon?(Pe(i,n),Be(i,n)):n.icon||n.iconHtml?n.icon&&-1===Object.keys(g).indexOf(n.icon)?(r('Unknown icon! Expected "success", "error", "warning", "info" or "question", got "'.concat(n.icon,'"')),J(i)):(Z(i),Pe(i,n),Be(i,n),W(i,n.showClass.icon)):J(i),(e=>{const t=A();if(!e.imageUrl)return J(t);Z(t,""),t.setAttribute("src",e.imageUrl),t.setAttribute("alt",e.imageAlt),Y(t,"width",e.imageWidth),Y(t,"height",e.imageHeight),t.className=h.image,U(t,e,"image")})(t),(e=>{const t=C();$(t,e.title||e.titleText,"block"),e.title&&re(e.title,t),e.titleText&&(t.innerText=e.titleText),U(t,e,"title")})(t),(e=>{const t=D();V(t,e.closeButtonHtml),U(t,e,"closeButton"),$(t,e.showCloseButton),t.setAttribute("aria-label",e.closeButtonAriaLabel)})(t),Ae(e,t),de(0,t),i=t,e=O(),$(e,i.footer),i.footer&&re(i.footer,e),U(e,i,"footer"),"function"==typeof t.didRender&&t.didRender(v())};const je=()=>P()&&P().click();const De=e=>{let t=v();t||ln.fire(),t=v();var n=S();H()?J(w()):Ie(t,e),Z(n),t.setAttribute("data-loading",!0),t.setAttribute("aria-busy",!0),t.focus()},Ie=(e,t)=>{var n=L();const o=S();!t&&G(P())&&(t=P()),Z(n),t&&(J(t),o.setAttribute("data-button-to-replace",t.className)),o.parentNode.insertBefore(o,t),W([e,n],h.loading)},Me={},He=o=>new Promise(e=>{if(!o)return e();var t=window.scrollX,n=window.scrollY;Me.restoreFocusTimeout=setTimeout(()=>{Me.previousActiveElement&&Me.previousActiveElement.focus?(Me.previousActiveElement.focus(),Me.previousActiveElement=null):document.body&&document.body.focus(),e()},100),window.scrollTo(t,n)});const qe=()=>{if(Me.timeout)return(()=>{const e=j();var t=parseInt(window.getComputedStyle(e).width);e.style.removeProperty("transition"),e.style.width="100%";var n=parseInt(window.getComputedStyle(e).width),n=parseInt(t/n*100);e.style.removeProperty("transition"),e.style.width="".concat(n,"%")})(),Me.timeout.stop()},Ve=()=>{if(Me.timeout){var e=Me.timeout.start();return ne(e),e}};let Ne=!1;const Ue={};const Fe=t=>{for(let e=t.target;e&&e!==document;e=e.parentNode)for(const o in Ue){var n=e.getAttribute(o);if(n)return void Ue[o].fire({template:n})}},Re={title:"",titleText:"",text:"",html:"",footer:"",icon:void 0,iconColor:void 0,iconHtml:void 0,template:void 0,toast:!1,showClass:{popup:"swal2-show",backdrop:"swal2-backdrop-show",icon:"swal2-icon-show"},hideClass:{popup:"swal2-hide",backdrop:"swal2-backdrop-hide",icon:"swal2-icon-hide"},customClass:{},target:"body",backdrop:!0,heightAuto:!0,allowOutsideClick:!0,allowEscapeKey:!0,allowEnterKey:!0,stopKeydownPropagation:!0,keydownListenerCapture:!1,showConfirmButton:!0,showDenyButton:!1,showCancelButton:!1,preConfirm:void 0,preDeny:void 0,confirmButtonText:"OK",confirmButtonAriaLabel:"",confirmButtonColor:void 0,denyButtonText:"No",denyButtonAriaLabel:"",denyButtonColor:void 0,cancelButtonText:"Cancel",cancelButtonAriaLabel:"",cancelButtonColor:void 0,buttonsStyling:!0,reverseButtons:!1,focusConfirm:!0,focusDeny:!1,focusCancel:!1,returnFocus:!0,showCloseButton:!1,closeButtonHtml:"×",closeButtonAriaLabel:"Close this dialog",loaderHtml:"",showLoaderOnConfirm:!1,showLoaderOnDeny:!1,imageUrl:void 0,imageWidth:void 0,imageHeight:void 0,imageAlt:"",timer:void 0,timerProgressBar:!1,width:void 0,padding:void 0,background:void 0,input:void 0,inputPlaceholder:"",inputLabel:"",inputValue:"",inputOptions:{},inputAutoTrim:!0,inputAttributes:{},inputValidator:void 0,returnInputValueOnDeny:!1,validationMessage:void 0,grow:!1,position:"center",progressSteps:[],currentProgressStep:void 0,progressStepsDistance:void 0,willOpen:void 0,didOpen:void 0,didRender:void 0,willClose:void 0,didClose:void 0,didDestroy:void 0,scrollbarPadding:!0},ze=["allowEscapeKey","allowOutsideClick","background","buttonsStyling","cancelButtonAriaLabel","cancelButtonColor","cancelButtonText","closeButtonAriaLabel","closeButtonHtml","confirmButtonAriaLabel","confirmButtonColor","confirmButtonText","currentProgressStep","customClass","denyButtonAriaLabel","denyButtonColor","denyButtonText","didClose","didDestroy","footer","hideClass","html","icon","iconColor","iconHtml","imageAlt","imageHeight","imageUrl","imageWidth","preConfirm","preDeny","progressSteps","returnFocus","reverseButtons","showCancelButton","showCloseButton","showConfirmButton","showDenyButton","text","title","titleText","willClose"],We={},_e=["allowOutsideClick","allowEnterKey","backdrop","focusConfirm","focusDeny","focusCancel","returnFocus","heightAuto","keydownListenerCapture"],Ke=e=>Object.prototype.hasOwnProperty.call(Re,e);const Ye=e=>We[e],Ze=e=>{!e.backdrop&&e.allowOutsideClick&&s('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`');for(const o in e)n=o,Ke(n)||s('Unknown parameter "'.concat(n,'"')),e.toast&&(t=o,_e.includes(t)&&s('The parameter "'.concat(t,'" is incompatible with toasts'))),t=o,Ye(t)&&i(t,Ye(t));var t,n};var Je=Object.freeze({isValidParameter:Ke,isUpdatableParameter:e=>-1!==ze.indexOf(e),isDeprecatedParameter:Ye,argsToParams:n=>{const o={};return"object"!=typeof n[0]||m(n[0])?["title","html","icon"].forEach((e,t)=>{t=n[t];"string"==typeof t||m(t)?o[e]=t:void 0!==t&&r("Unexpected type of ".concat(e,'! Expected "string" or "Element", got ').concat(typeof t))}):Object.assign(o,n[0]),o},isVisible:()=>G(v()),clickConfirm:je,clickDeny:()=>E()&&E().click(),clickCancel:()=>T()&&T().click(),getContainer:b,getPopup:v,getTitle:C,getHtmlContainer:k,getImage:A,getIcon:w,getInputLabel:()=>y(h["input-label"]),getCloseButton:D,getActions:L,getConfirmButton:P,getDenyButton:E,getCancelButton:T,getLoader:S,getFooter:O,getTimerProgressBar:j,getFocusableElements:I,getValidationMessage:x,isLoading:()=>v().hasAttribute("data-loading"),fire:function(...e){return new this(...e)},mixin:function(n){class e extends this{_main(e,t){return super._main(e,Object.assign({},n,t))}}return e},showLoading:De,enableLoading:De,getTimerLeft:()=>Me.timeout&&Me.timeout.getTimerLeft(),stopTimer:qe,resumeTimer:Ve,toggleTimer:()=>{var e=Me.timeout;return e&&(e.running?qe:Ve)()},increaseTimer:e=>{if(Me.timeout){e=Me.timeout.increase(e);return ne(e,!0),e}},isTimerRunning:()=>Me.timeout&&Me.timeout.isRunning(),bindClickHandler:function(e="data-swal-template"){Ue[e]=this,Ne||(document.body.addEventListener("click",Fe),Ne=!0)}});function Xe(){var e=he.innerParams.get(this);if(e){const t=he.domCache.get(this);J(t.loader),H()?e.icon&&Z(w()):(e=>{const t=e.popup.getElementsByClassName(e.loader.getAttribute("data-button-to-replace"));if(t.length)Z(t[0],"inline-block");else if(Q())J(e.actions)})(t),_([t.popup,t.actions],h.loading),t.popup.removeAttribute("aria-busy"),t.popup.removeAttribute("data-loading"),t.confirmButton.disabled=!1,t.denyButton.disabled=!1,t.cancelButton.disabled=!1}}const $e=()=>{null===q.previousBodyPadding&&document.body.scrollHeight>window.innerHeight&&(q.previousBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight="".concat(q.previousBodyPadding+(()=>{const e=document.createElement("div");e.className=h["scrollbar-measure"],document.body.appendChild(e);var t=e.getBoundingClientRect().width-e.clientWidth;return document.body.removeChild(e),t})(),"px"))},Ge=()=>{navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i)||v().scrollHeight>window.innerHeight-44&&(b().style.paddingBottom="".concat(44,"px"))},Qe=()=>{const e=b();let t;e.ontouchstart=e=>{t=et(e)},e.ontouchmove=e=>{t&&(e.preventDefault(),e.stopPropagation())}},et=e=>{var t=e.target,n=b();return!tt(e)&&!nt(e)&&(t===n||!(ee(n)||"INPUT"===t.tagName||"TEXTAREA"===t.tagName||ee(k())&&k().contains(t)))},tt=e=>e.touches&&e.touches.length&&"stylus"===e.touches[0].touchType,nt=e=>e.touches&&1{const e=a(document.body.children);e.forEach(e=>{e.hasAttribute("data-previous-aria-hidden")?(e.setAttribute("aria-hidden",e.getAttribute("data-previous-aria-hidden")),e.removeAttribute("data-previous-aria-hidden")):e.removeAttribute("aria-hidden")})};var it={swalPromiseResolve:new WeakMap};function at(e,t,n,o){H()?ct(e,o):(He(n).then(()=>ct(e,o)),Me.keydownTarget.removeEventListener("keydown",Me.keydownHandler,{capture:Me.keydownListenerCapture}),Me.keydownHandlerAdded=!1),/^((?!chrome|android).)*safari/i.test(navigator.userAgent)?(t.setAttribute("style","display:none !important"),t.removeAttribute("class"),t.innerHTML=""):t.remove(),M()&&(null!==q.previousBodyPadding&&(document.body.style.paddingRight="".concat(q.previousBodyPadding,"px"),q.previousBodyPadding=null),N(document.body,h.iosfix)&&(t=parseInt(document.body.style.top,10),_(document.body,h.iosfix),document.body.style.top="",document.body.scrollTop=-1*t),ot()),_([document.documentElement,document.body],[h.shown,h["height-auto"],h["no-backdrop"],h["toast-shown"]])}function st(e){var t=v();if(t){e=void 0!==(o=e)?Object.assign({isConfirmed:!1,isDenied:!1,isDismissed:!1},o):{isConfirmed:!1,isDenied:!1,isDismissed:!0};var n=he.innerParams.get(this);if(n&&!N(t,n.hideClass.popup)){const i=it.swalPromiseResolve.get(this);_(t,n.showClass.popup),W(t,n.hideClass.popup);var o=b();_(o,n.showClass.backdrop),W(o,n.hideClass.backdrop),((e,t,n)=>{const o=b(),i=ue&&te(t);if(typeof n.willClose==="function")n.willClose(t);if(i)rt(e,t,o,n.returnFocus,n.didClose);else at(e,o,n.returnFocus,n.didClose)})(this,t,n),i(e)}}}const rt=(e,t,n,o,i)=>{Me.swalCloseEventFinishedCallback=at.bind(null,e,n,o,i),t.addEventListener(ue,function(e){e.target===t&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback)})},ct=(e,t)=>{setTimeout(()=>{"function"==typeof t&&t.bind(e.params)(),e._destroy()})};function lt(e,t,n){const o=he.domCache.get(e);t.forEach(e=>{o[e].disabled=n})}function ut(e,t){if(!e)return!1;if("radio"===e.type){const n=e.parentNode.parentNode,o=n.querySelectorAll("input");for(let e=0;e/^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid email address"),url:(e,t)=>/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid URL")};function mt(e){var t,n;(t=e).inputValidator||Object.keys(pt).forEach(e=>{t.input===e&&(t.inputValidator=pt[e])}),e.showLoaderOnConfirm&&!e.preConfirm&&s("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request"),(n=e).target&&("string"!=typeof n.target||document.querySelector(n.target))&&("string"==typeof n.target||n.target.appendChild)||(s('Target parameter is not valid, defaulting to "body"'),n.target="body"),"string"==typeof e.title&&(e.title=e.title.split("\n").join(" ")),se(e)}const ht=["swal-title","swal-html","swal-footer"],gt=e=>{e="string"==typeof e.template?document.querySelector(e.template):e.template;if(!e)return{};e=e.content;return kt(e),Object.assign(bt(e),ft(e),yt(e),vt(e),wt(e),Ct(e,ht))},bt=e=>{const o={};return a(e.querySelectorAll("swal-param")).forEach(e=>{At(e,["name","value"]);var t=e.getAttribute("name");let n=e.getAttribute("value");"boolean"==typeof Re[t]&&"false"===n&&(n=!1),"object"==typeof Re[t]&&(n=JSON.parse(n)),o[t]=n}),o},ft=e=>{const n={};return a(e.querySelectorAll("swal-button")).forEach(e=>{At(e,["type","color","aria-label"]);var t=e.getAttribute("type");n["".concat(t,"ButtonText")]=e.innerHTML,n["show".concat(o(t),"Button")]=!0,e.hasAttribute("color")&&(n["".concat(t,"ButtonColor")]=e.getAttribute("color")),e.hasAttribute("aria-label")&&(n["".concat(t,"ButtonAriaLabel")]=e.getAttribute("aria-label"))}),n},yt=e=>{const t={},n=e.querySelector("swal-image");return n&&(At(n,["src","width","height","alt"]),n.hasAttribute("src")&&(t.imageUrl=n.getAttribute("src")),n.hasAttribute("width")&&(t.imageWidth=n.getAttribute("width")),n.hasAttribute("height")&&(t.imageHeight=n.getAttribute("height")),n.hasAttribute("alt")&&(t.imageAlt=n.getAttribute("alt"))),t},vt=e=>{const t={},n=e.querySelector("swal-icon");return n&&(At(n,["type","color"]),n.hasAttribute("type")&&(t.icon=n.getAttribute("type")),n.hasAttribute("color")&&(t.iconColor=n.getAttribute("color")),t.iconHtml=n.innerHTML),t},wt=e=>{const n={},t=e.querySelector("swal-input");t&&(At(t,["type","label","placeholder","value"]),n.input=t.getAttribute("type")||"text",t.hasAttribute("label")&&(n.inputLabel=t.getAttribute("label")),t.hasAttribute("placeholder")&&(n.inputPlaceholder=t.getAttribute("placeholder")),t.hasAttribute("value")&&(n.inputValue=t.getAttribute("value")));e=e.querySelectorAll("swal-input-option");return e.length&&(n.inputOptions={},a(e).forEach(e=>{At(e,["value"]);var t=e.getAttribute("value"),e=e.innerHTML;n.inputOptions[t]=e})),n},Ct=(e,t)=>{const n={};for(const o in t){const i=t[o],a=e.querySelector(i);a&&(At(a,[]),n[i.replace(/^swal-/,"")]=a.innerHTML.trim())}return n},kt=e=>{const t=ht.concat(["swal-param","swal-button","swal-image","swal-icon","swal-input","swal-input-option"]);a(e.children).forEach(e=>{e=e.tagName.toLowerCase();-1===t.indexOf(e)&&s("Unrecognized element <".concat(e,">"))})},At=(t,n)=>{a(t.attributes).forEach(e=>{-1===n.indexOf(e.name)&&s(['Unrecognized attribute "'.concat(e.name,'" on <').concat(t.tagName.toLowerCase(),">."),"".concat(n.length?"Allowed attributes are: ".concat(n.join(", ")):"To set the value, use HTML within the element.")])})},Bt=e=>{const t=b(),n=v();"function"==typeof e.willOpen&&e.willOpen(n);var o=window.getComputedStyle(document.body).overflowY;St(t,n,e),setTimeout(()=>{Pt(t,n)},10),M()&&(Et(t,e.scrollbarPadding,o),(()=>{const e=a(document.body.children);e.forEach(e=>{e===b()||e.contains(b())||(e.hasAttribute("aria-hidden")&&e.setAttribute("data-previous-aria-hidden",e.getAttribute("aria-hidden")),e.setAttribute("aria-hidden","true"))})})()),H()||Me.previousActiveElement||(Me.previousActiveElement=document.activeElement),"function"==typeof e.didOpen&&setTimeout(()=>e.didOpen(n)),_(t,h["no-transition"])},xt=e=>{const t=v();if(e.target===t){const n=b();t.removeEventListener(ue,xt),n.style.overflowY="auto"}},Pt=(e,t)=>{ue&&te(t)?(e.style.overflowY="hidden",t.addEventListener(ue,xt)):e.style.overflowY="auto"},Et=(e,t,n)=>{var o;(/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream||"MacIntel"===navigator.platform&&1{e.scrollTop=0})},St=(e,t,n)=>{W(e,n.showClass.backdrop),t.style.setProperty("opacity","0","important"),Z(t,"grid"),setTimeout(()=>{W(t,n.showClass.popup),t.style.removeProperty("opacity")},10),W([document.documentElement,document.body],h.shown),n.heightAuto&&n.backdrop&&!n.toast&&W([document.documentElement,document.body],h["height-auto"])},Tt=e=>e.checked?1:0,Lt=e=>e.checked?e.value:null,Ot=e=>e.files.length?null!==e.getAttribute("multiple")?e.files:e.files[0]:null,jt=(t,n)=>{const o=v(),i=e=>It[n.input](o,Mt(e),n);u(n.inputOptions)||p(n.inputOptions)?(De(P()),d(n.inputOptions).then(e=>{t.hideLoading(),i(e)})):"object"==typeof n.inputOptions?i(n.inputOptions):r("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(typeof n.inputOptions))},Dt=(t,n)=>{const o=t.getInput();J(o),d(n.inputValue).then(e=>{o.value="number"===n.input?parseFloat(e)||0:"".concat(e),Z(o),o.focus(),t.hideLoading()}).catch(e=>{r("Error in inputValue promise: ".concat(e)),o.value="",Z(o),o.focus(),t.hideLoading()})},It={select:(e,t,i)=>{const a=K(e,h.select),s=(e,t,n)=>{const o=document.createElement("option");o.value=n,V(o,t),o.selected=Ht(n,i.inputValue),e.appendChild(o)};t.forEach(e=>{var t=e[0];const n=e[1];if(Array.isArray(n)){const o=document.createElement("optgroup");o.label=t,o.disabled=!1,a.appendChild(o),n.forEach(e=>s(o,e[1],e[0]))}else s(a,n,t)}),a.focus()},radio:(e,t,a)=>{const s=K(e,h.radio);t.forEach(e=>{var t=e[0],e=e[1];const n=document.createElement("input"),o=document.createElement("label");n.type="radio",n.name=h.radio,n.value=t,Ht(t,a.inputValue)&&(n.checked=!0);const i=document.createElement("span");V(i,e),i.className=h.label,o.appendChild(n),o.appendChild(i),s.appendChild(o)});const n=s.querySelectorAll("input");n.length&&n[0].focus()}},Mt=n=>{const o=[];return"undefined"!=typeof Map&&n instanceof Map?n.forEach((e,t)=>{let n=e;"object"==typeof n&&(n=Mt(n)),o.push([t,n])}):Object.keys(n).forEach(e=>{let t=n[e];"object"==typeof t&&(t=Mt(t)),o.push([e,t])}),o},Ht=(e,t)=>t&&t.toString()===e.toString(),qt=(e,t)=>{var n=he.innerParams.get(e),o=((e,t)=>{const n=e.getInput();if(!n)return null;switch(t.input){case"checkbox":return Tt(n);case"radio":return Lt(n);case"file":return Ot(n);default:return t.inputAutoTrim?n.value.trim():n.value}})(e,n);n.inputValidator?Vt(e,o,t):e.getInput().checkValidity()?("deny"===t?Nt:Ft)(e,o):(e.enableButtons(),e.showValidationMessage(n.validationMessage))},Vt=(t,n,o)=>{const e=he.innerParams.get(t);t.disableInput();const i=Promise.resolve().then(()=>d(e.inputValidator(n,e.validationMessage)));i.then(e=>{t.enableButtons(),t.enableInput(),e?t.showValidationMessage(e):("deny"===o?Nt:Ft)(t,n)})},Nt=(t,n)=>{const e=he.innerParams.get(t||void 0);if(e.showLoaderOnDeny&&De(E()),e.preDeny){const o=Promise.resolve().then(()=>d(e.preDeny(n,e.validationMessage)));o.then(e=>{!1===e?t.hideLoading():t.closePopup({isDenied:!0,value:void 0===e?n:e})})}else t.closePopup({isDenied:!0,value:n})},Ut=(e,t)=>{e.closePopup({isConfirmed:!0,value:t})},Ft=(t,n)=>{const e=he.innerParams.get(t||void 0);if(e.showLoaderOnConfirm&&De(),e.preConfirm){t.resetValidationMessage();const o=Promise.resolve().then(()=>d(e.preConfirm(n,e.validationMessage)));o.then(e=>{G(x())||!1===e?t.hideLoading():Ut(t,void 0===e?n:e)})}else Ut(t,n)},Rt=(e,t,n)=>{const o=I();if(o.length)return(t+=n)===o.length?t=0:-1===t&&(t=o.length-1),o[t].focus();v().focus()},zt=["ArrowRight","ArrowDown"],Wt=["ArrowLeft","ArrowUp"],_t=(e,t,n)=>{var o=he.innerParams.get(e);o&&(o.stopKeydownPropagation&&t.stopPropagation(),"Enter"===t.key?Kt(e,t,o):"Tab"===t.key?Yt(t,o):[...zt,...Wt].includes(t.key)?Zt(t.key):"Escape"===t.key&&Jt(t,o,n))},Kt=(e,t,n)=>{t.isComposing||t.target&&e.getInput()&&t.target.outerHTML===e.getInput().outerHTML&&(["textarea","file"].includes(n.input)||(je(),t.preventDefault()))},Yt=(e,t)=>{var n=e.target,o=I();let i=-1;for(let e=0;e{const t=P(),n=E(),o=T();if([t,n,o].includes(document.activeElement)){e=zt.includes(e)?"nextElementSibling":"previousElementSibling";const i=document.activeElement[e];i&&i.focus()}},Jt=(e,t,n)=>{c(t.allowEscapeKey)&&(e.preventDefault(),n(l.esc))},Xt=(t,e,n)=>{e.popup.onclick=()=>{var e=he.innerParams.get(t);e.showConfirmButton||e.showDenyButton||e.showCancelButton||e.showCloseButton||e.timer||e.input||n(l.close)}};let $t=!1;const Gt=t=>{t.popup.onmousedown=()=>{t.container.onmouseup=function(e){t.container.onmouseup=void 0,e.target===t.container&&($t=!0)}}},Qt=t=>{t.container.onmousedown=()=>{t.popup.onmouseup=function(e){t.popup.onmouseup=void 0,e.target!==t.popup&&!t.popup.contains(e.target)||($t=!0)}}},en=(n,o,i)=>{o.container.onclick=e=>{var t=he.innerParams.get(n);$t?$t=!1:e.target===o.container&&c(t.allowOutsideClick)&&i(l.backdrop)}};const tn=(e,t,n)=>{var o=j();J(o),t.timer&&(e.timeout=new dt(()=>{n("timer"),delete e.timeout},t.timer),t.timerProgressBar&&(Z(o),setTimeout(()=>{e.timeout&&e.timeout.running&&ne(t.timer)})))},nn=(e,t)=>{if(!t.toast)return c(t.allowEnterKey)?void(on(e,t)||Rt(0,-1,1)):an()},on=(e,t)=>t.focusDeny&&G(e.denyButton)?(e.denyButton.focus(),!0):t.focusCancel&&G(e.cancelButton)?(e.cancelButton.focus(),!0):!(!t.focusConfirm||!G(e.confirmButton))&&(e.confirmButton.focus(),!0),an=()=>{document.activeElement&&"function"==typeof document.activeElement.blur&&document.activeElement.blur()};const sn=e=>{for(const t in e)e[t]=new WeakMap};e=Object.freeze({hideLoading:Xe,disableLoading:Xe,getInput:function(e){var t=he.innerParams.get(e||this);return(e=he.domCache.get(e||this))?F(e.popup,t.input):null},close:st,closePopup:st,closeModal:st,closeToast:st,enableButtons:function(){lt(this,["confirmButton","denyButton","cancelButton"],!1)},disableButtons:function(){lt(this,["confirmButton","denyButton","cancelButton"],!0)},enableInput:function(){return ut(this.getInput(),!1)},disableInput:function(){return ut(this.getInput(),!0)},showValidationMessage:function(e){const t=he.domCache.get(this);var n=he.innerParams.get(this);V(t.validationMessage,e),t.validationMessage.className=h["validation-message"],n.customClass&&n.customClass.validationMessage&&W(t.validationMessage,n.customClass.validationMessage),Z(t.validationMessage);const o=this.getInput();o&&(o.setAttribute("aria-invalid",!0),o.setAttribute("aria-describedby",h["validation-message"]),R(o),W(o,h.inputerror))},resetValidationMessage:function(){var e=he.domCache.get(this);e.validationMessage&&J(e.validationMessage);const t=this.getInput();t&&(t.removeAttribute("aria-invalid"),t.removeAttribute("aria-describedby"),_(t,h.inputerror))},getProgressSteps:function(){return he.domCache.get(this).progressSteps},_main:function(e,t={}){Ze(Object.assign({},t,e)),Me.currentInstance&&(Me.currentInstance._destroy(),M()&&ot()),Me.currentInstance=this,mt(e=((e,t)=>{const n=gt(e),o=Object.assign({},Re,t,n,e);return o.showClass=Object.assign({},Re.showClass,o.showClass),o.hideClass=Object.assign({},Re.hideClass,o.hideClass),o})(e,t)),Object.freeze(e),Me.timeout&&(Me.timeout.stop(),delete Me.timeout),clearTimeout(Me.restoreFocusTimeout);var s,r,c,t=(e=>{const t={popup:v(),container:b(),actions:L(),confirmButton:P(),denyButton:E(),cancelButton:T(),loader:S(),closeButton:D(),validationMessage:x(),progressSteps:B()};return he.domCache.set(e,t),t})(this);return Oe(this,e),he.innerParams.set(this,e),s=this,r=t,c=e,new Promise(e=>{const t=e=>{s.closePopup({isDismissed:!0,dismiss:e})};var n,o,i,a;it.swalPromiseResolve.set(s,e),r.confirmButton.onclick=()=>(e=>{var t=he.innerParams.get(e);e.disableButtons(),t.input?qt(e,"confirm"):Ft(e,!0)})(s),r.denyButton.onclick=()=>(e=>{var t=he.innerParams.get(e);e.disableButtons(),t.returnInputValueOnDeny?qt(e,"deny"):Nt(e,!1)})(s),r.cancelButton.onclick=()=>((e,t)=>{e.disableButtons(),t(l.cancel)})(s,t),r.closeButton.onclick=()=>t(l.close),n=s,a=r,e=t,he.innerParams.get(n).toast?Xt(n,a,e):(Gt(a),Qt(a),en(n,a,e)),o=s,a=Me,e=c,i=t,a.keydownTarget&&a.keydownHandlerAdded&&(a.keydownTarget.removeEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!1),e.toast||(a.keydownHandler=e=>_t(o,e,i),a.keydownTarget=e.keydownListenerCapture?window:v(),a.keydownListenerCapture=e.keydownListenerCapture,a.keydownTarget.addEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!0),e=s,"select"===(a=c).input||"radio"===a.input?jt(e,a):["text","email","number","tel","textarea"].includes(a.input)&&(u(a.inputValue)||p(a.inputValue))&&(De(P()),Dt(e,a)),Bt(c),tn(Me,c,t),nn(r,c),setTimeout(()=>{r.container.scrollTop=0})})},update:function(t){var e=v(),n=he.innerParams.get(this);if(!e||N(e,n.hideClass.popup))return s("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");const o={};Object.keys(t).forEach(e=>{ln.isUpdatableParameter(e)?o[e]=t[e]:s('Invalid parameter to update: "'.concat(e,'". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\n\nIf you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md'))}),n=Object.assign({},n,o),Oe(this,n),he.innerParams.set(this,n),Object.defineProperties(this,{params:{value:Object.assign({},this.params,t),writable:!1,enumerable:!0}})},_destroy:function(){var e=he.domCache.get(this);const t=he.innerParams.get(this);t&&(e.popup&&Me.swalCloseEventFinishedCallback&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback),Me.deferDisposalTimer&&(clearTimeout(Me.deferDisposalTimer),delete Me.deferDisposalTimer),"function"==typeof t.didDestroy&&t.didDestroy(),delete this.params,delete Me.keydownHandler,delete Me.keydownTarget,sn(he),sn(it),delete Me.currentInstance)}});let rn;class cn{constructor(...e){"undefined"!=typeof window&&(rn=this,e=Object.freeze(this.constructor.argsToParams(e)),Object.defineProperties(this,{params:{value:e,writable:!1,enumerable:!0,configurable:!0}}),e=this._main(this.params),he.promise.set(this,e))}then(e){const t=he.promise.get(this);return t.then(e)}finally(e){const t=he.promise.get(this);return t.finally(e)}}Object.assign(cn.prototype,e),Object.assign(cn,Je),Object.keys(e).forEach(t=>{cn[t]=function(...e){if(rn)return rn[t](...e)}}),cn.DismissReason=l,cn.version="11.1.7";const ln=cn;return ln.default=ln,ln}),void 0!==this&&this.Sweetalert2&&(this.swal=this.sweetAlert=this.Swal=this.SweetAlert=this.Sweetalert2);
+"undefined"!=typeof document&&function(e,t){var n=e.createElement("style");if(e.getElementsByTagName("head")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,".swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4!important;grid-row:1/4!important;grid-template-columns:1fr 99fr 1fr;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:grid;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;box-sizing:border-box;grid-template-areas:\"top-start top top-end\" \"center-start center center-end\" \"bottom-start bottom-center bottom-end\";grid-template-rows:minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto);grid-template-rows:minmax(min-content,auto) minmax(min-content,auto) minmax(min-content,auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-bottom-start,.swal2-container.swal2-center-start,.swal2-container.swal2-top-start{grid-template-columns:minmax(0,1fr) auto auto}.swal2-container.swal2-bottom,.swal2-container.swal2-center,.swal2-container.swal2-top{grid-template-columns:auto minmax(0,1fr) auto}.swal2-container.swal2-bottom-end,.swal2-container.swal2-center-end,.swal2-container.swal2-top-end{grid-template-columns:auto auto minmax(0,1fr)}.swal2-container.swal2-top-start>.swal2-popup{align-self:start}.swal2-container.swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}.swal2-container.swal2-top-end>.swal2-popup,.swal2-container.swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}.swal2-container.swal2-center-left>.swal2-popup,.swal2-container.swal2-center-start>.swal2-popup{grid-row:2;align-self:center}.swal2-container.swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}.swal2-container.swal2-center-end>.swal2-popup,.swal2-container.swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}.swal2-container.swal2-bottom-left>.swal2-popup,.swal2-container.swal2-bottom-start>.swal2-popup{grid-column:1;grid-row:3;align-self:end}.swal2-container.swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}.swal2-container.swal2-bottom-end>.swal2-popup,.swal2-container.swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}.swal2-container.swal2-grow-fullscreen>.swal2-popup,.swal2-container.swal2-grow-row>.swal2-popup{grid-column:1/4;width:100%}.swal2-container.swal2-grow-column>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}.swal2-container.swal2-no-transition{transition:none!important}.swal2-popup{display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0,100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-title{position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px transparent;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7367f0;color:#fff;font-size:1em}.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px rgba(115,103,240,.5)}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#ea5455;color:#fff;font-size:1em}.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px rgba(234,84,85,.5)}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7d88;color:#fff;font-size:1em}.swal2-styled.swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,125,136,.5)}.swal2-styled.swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled:focus{outline:0}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto!important;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:2em auto 1em}.swal2-close{z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em 2em 0}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px transparent;color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em 2em 0;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-file{width:75%;margin-right:auto;margin-left:auto;background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto 0}.swal2-validation-message{align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:.25em solid transparent;border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{background-color:transparent!important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:transparent;pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}");
\ No newline at end of file
diff --git a/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/sweetalert2/sweetalert2.css b/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/sweetalert2/sweetalert2.css
index 1feb7a5581..3c7543d3b3 100644
--- a/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/sweetalert2/sweetalert2.css
+++ b/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/sweetalert2/sweetalert2.css
@@ -6,14 +6,14 @@
padding: 1em;
overflow-y: hidden;
background: #fff;
- box-shadow: 0 0 0.625em #d9d9d9;
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0.075), 0 1px 2px rgba(0, 0, 0, 0.075), 1px 2px 4px rgba(0, 0, 0, 0.075), 1px 3px 8px rgba(0, 0, 0, 0.075), 2px 4px 16px rgba(0, 0, 0, 0.075);
pointer-events: all;
}
.swal2-popup.swal2-toast > * {
grid-column: 2;
}
.swal2-popup.swal2-toast .swal2-title {
- margin: 1em;
+ margin: 0.5em 1em;
padding: 0;
font-size: 1em;
text-align: initial;
@@ -44,7 +44,7 @@
font-size: 2em;
}
.swal2-popup.swal2-toast .swal2-html-container {
- margin: 1em;
+ margin: 0.5em 1em;
padding: 0;
font-size: 1em;
text-align: initial;
@@ -93,17 +93,14 @@
justify-content: flex-start;
height: auto;
margin: 0;
- margin-top: 0.3125em;
- padding: 0;
+ margin-top: 0.5em;
+ padding: 0 0.5em;
}
.swal2-popup.swal2-toast .swal2-styled {
margin: 0.25em 0.5em;
padding: 0.4em 0.6em;
font-size: 1em;
}
-.swal2-popup.swal2-toast .swal2-styled:focus {
- box-shadow: 0 0 0 1px #fff, 0 0 0 3px rgba(100, 150, 200, 0.5);
-}
.swal2-popup.swal2-toast .swal2-success {
border-color: #a5dc86;
}
diff --git a/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/sweetalert2/sweetalert2.js b/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/sweetalert2/sweetalert2.js
index e9c254f064..5bda4321cb 100644
--- a/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/sweetalert2/sweetalert2.js
+++ b/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/sweetalert2/sweetalert2.js
@@ -1,5 +1,5 @@
/*!
-* sweetalert2 v11.1.5
+* sweetalert2 v11.1.7
* Released under the MIT License.
*/
(function (global, factory) {
@@ -1335,7 +1335,6 @@
}
const bodyClickListener = event => {
- // TODO: replace with event.composedPath()
for (let el = event.target; el && el !== document; el = el.parentNode) {
for (const attr in clickHandlers) {
const template = el.getAttribute(attr);
@@ -2593,7 +2592,7 @@
const innerParams = privateProps.innerParams.get(instance || undefined);
if (innerParams.showLoaderOnConfirm) {
- showLoading(); // TODO: make showLoading an *instance* method
+ showLoading();
}
if (innerParams.preConfirm) {
@@ -3110,7 +3109,7 @@
};
});
SweetAlert.DismissReason = DismissReason;
- SweetAlert.version = '11.1.5';
+ SweetAlert.version = '11.1.7';
const Swal = SweetAlert;
Swal.default = Swal;
diff --git a/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/sweetalert2/sweetalert2.min.css b/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/sweetalert2/sweetalert2.min.css
index 25eb26f1c0..342b3beddd 100644
--- a/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/sweetalert2/sweetalert2.min.css
+++ b/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/sweetalert2/sweetalert2.min.css
@@ -1 +1 @@
-.swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4!important;grid-row:1/4!important;grid-template-columns:1fr 99fr 1fr;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 .625em #d9d9d9;pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.3125em;padding:0}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-styled:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(100,150,200,.5)}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:grid;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;box-sizing:border-box;grid-template-areas:"top-start top top-end" "center-start center center-end" "bottom-start bottom-center bottom-end";grid-template-rows:minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto);grid-template-rows:minmax(min-content,auto) minmax(min-content,auto) minmax(min-content,auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-bottom-start,.swal2-container.swal2-center-start,.swal2-container.swal2-top-start{grid-template-columns:minmax(0,1fr) auto auto}.swal2-container.swal2-bottom,.swal2-container.swal2-center,.swal2-container.swal2-top{grid-template-columns:auto minmax(0,1fr) auto}.swal2-container.swal2-bottom-end,.swal2-container.swal2-center-end,.swal2-container.swal2-top-end{grid-template-columns:auto auto minmax(0,1fr)}.swal2-container.swal2-top-start>.swal2-popup{align-self:start}.swal2-container.swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}.swal2-container.swal2-top-end>.swal2-popup,.swal2-container.swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}.swal2-container.swal2-center-left>.swal2-popup,.swal2-container.swal2-center-start>.swal2-popup{grid-row:2;align-self:center}.swal2-container.swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}.swal2-container.swal2-center-end>.swal2-popup,.swal2-container.swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}.swal2-container.swal2-bottom-left>.swal2-popup,.swal2-container.swal2-bottom-start>.swal2-popup{grid-column:1;grid-row:3;align-self:end}.swal2-container.swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}.swal2-container.swal2-bottom-end>.swal2-popup,.swal2-container.swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}.swal2-container.swal2-grow-fullscreen>.swal2-popup,.swal2-container.swal2-grow-row>.swal2-popup{grid-column:1/4;width:100%}.swal2-container.swal2-grow-column>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}.swal2-container.swal2-no-transition{transition:none!important}.swal2-popup{display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0,100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-title{position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px transparent;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7367f0;color:#fff;font-size:1em}.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px rgba(115,103,240,.5)}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#ea5455;color:#fff;font-size:1em}.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px rgba(234,84,85,.5)}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7d88;color:#fff;font-size:1em}.swal2-styled.swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,125,136,.5)}.swal2-styled.swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled:focus{outline:0}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto!important;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:2em auto 1em}.swal2-close{z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em 2em 0}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px transparent;color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em 2em 0;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-file{width:75%;margin-right:auto;margin-left:auto;background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto 0}.swal2-validation-message{align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:"!";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:.25em solid transparent;border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{background-color:transparent!important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:transparent;pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}
\ No newline at end of file
+.swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4!important;grid-row:1/4!important;grid-template-columns:1fr 99fr 1fr;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:grid;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;box-sizing:border-box;grid-template-areas:"top-start top top-end" "center-start center center-end" "bottom-start bottom-center bottom-end";grid-template-rows:minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto);grid-template-rows:minmax(min-content,auto) minmax(min-content,auto) minmax(min-content,auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-bottom-start,.swal2-container.swal2-center-start,.swal2-container.swal2-top-start{grid-template-columns:minmax(0,1fr) auto auto}.swal2-container.swal2-bottom,.swal2-container.swal2-center,.swal2-container.swal2-top{grid-template-columns:auto minmax(0,1fr) auto}.swal2-container.swal2-bottom-end,.swal2-container.swal2-center-end,.swal2-container.swal2-top-end{grid-template-columns:auto auto minmax(0,1fr)}.swal2-container.swal2-top-start>.swal2-popup{align-self:start}.swal2-container.swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}.swal2-container.swal2-top-end>.swal2-popup,.swal2-container.swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}.swal2-container.swal2-center-left>.swal2-popup,.swal2-container.swal2-center-start>.swal2-popup{grid-row:2;align-self:center}.swal2-container.swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}.swal2-container.swal2-center-end>.swal2-popup,.swal2-container.swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}.swal2-container.swal2-bottom-left>.swal2-popup,.swal2-container.swal2-bottom-start>.swal2-popup{grid-column:1;grid-row:3;align-self:end}.swal2-container.swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}.swal2-container.swal2-bottom-end>.swal2-popup,.swal2-container.swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}.swal2-container.swal2-grow-fullscreen>.swal2-popup,.swal2-container.swal2-grow-row>.swal2-popup{grid-column:1/4;width:100%}.swal2-container.swal2-grow-column>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}.swal2-container.swal2-no-transition{transition:none!important}.swal2-popup{display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0,100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-title{position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px transparent;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7367f0;color:#fff;font-size:1em}.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px rgba(115,103,240,.5)}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#ea5455;color:#fff;font-size:1em}.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px rgba(234,84,85,.5)}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7d88;color:#fff;font-size:1em}.swal2-styled.swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,125,136,.5)}.swal2-styled.swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled:focus{outline:0}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto!important;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:2em auto 1em}.swal2-close{z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em 2em 0}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px transparent;color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em 2em 0;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-file{width:75%;margin-right:auto;margin-left:auto;background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto 0}.swal2-validation-message{align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:"!";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:.25em solid transparent;border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{background-color:transparent!important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:transparent;pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}
\ No newline at end of file
diff --git a/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/sweetalert2/sweetalert2.min.js b/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/sweetalert2/sweetalert2.min.js
index 9a383d5289..fe84b2427f 100644
--- a/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/sweetalert2/sweetalert2.min.js
+++ b/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/sweetalert2/sweetalert2.min.js
@@ -1 +1 @@
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Sweetalert2=t()}(this,function(){"use strict";const l=Object.freeze({cancel:"cancel",backdrop:"backdrop",close:"close",esc:"esc",timer:"timer"}),t="SweetAlert2:",o=e=>e.charAt(0).toUpperCase()+e.slice(1),a=e=>Array.prototype.slice.call(e),s=e=>{console.warn("".concat(t," ").concat("object"==typeof e?e.join(" "):e))},r=e=>{console.error("".concat(t," ").concat(e))},n=[],i=(e,t)=>{t='"'.concat(e,'" is deprecated and will be removed in the next major release. Please use "').concat(t,'" instead.'),n.includes(t)||(n.push(t),s(t))},c=e=>"function"==typeof e?e():e,u=e=>e&&"function"==typeof e.toPromise,d=e=>u(e)?e.toPromise():Promise.resolve(e),p=e=>e&&Promise.resolve(e)===e,m=e=>e instanceof Element||(e=>"object"==typeof e&&e.jquery)(e);var e=e=>{const t={};for(const n in e)t[e[n]]="swal2-"+e[n];return t};const h=e(["container","shown","height-auto","iosfix","popup","modal","no-backdrop","no-transition","toast","toast-shown","show","hide","close","title","html-container","actions","confirm","deny","cancel","default-outline","footer","icon","icon-content","image","input","file","range","select","radio","checkbox","label","textarea","inputerror","input-label","validation-message","progress-steps","active-progress-step","progress-step","progress-step-line","loader","loading","styled","top","top-start","top-end","top-left","top-right","center","center-start","center-end","center-left","center-right","bottom","bottom-start","bottom-end","bottom-left","bottom-right","grow-row","grow-column","grow-fullscreen","rtl","timer-progress-bar","timer-progress-bar-container","scrollbar-measure","icon-success","icon-warning","icon-info","icon-question","icon-error"]),g=e(["success","warning","info","question","error"]),b=()=>document.body.querySelector(".".concat(h.container)),f=e=>{const t=b();return t?t.querySelector(e):null},y=e=>f(".".concat(e)),v=()=>y(h.popup),w=()=>y(h.icon),C=()=>y(h.title),k=()=>y(h["html-container"]),A=()=>y(h.image),B=()=>y(h["progress-steps"]),x=()=>y(h["validation-message"]),P=()=>f(".".concat(h.actions," .").concat(h.confirm)),E=()=>f(".".concat(h.actions," .").concat(h.deny));const S=()=>f(".".concat(h.loader)),T=()=>f(".".concat(h.actions," .").concat(h.cancel)),L=()=>y(h.actions),O=()=>y(h.footer),j=()=>y(h["timer-progress-bar"]),D=()=>y(h.close),I=()=>{const e=a(v().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')).sort((e,t)=>(e=parseInt(e.getAttribute("tabindex")),(t=parseInt(t.getAttribute("tabindex")))"-1"!==e.getAttribute("tabindex"));return(t=>{const n=[];for(let e=0;eG(e))},M=()=>!H()&&!document.body.classList.contains(h["no-backdrop"]),H=()=>document.body.classList.contains(h["toast-shown"]);const q={previousBodyPadding:null},V=(t,e)=>{if(t.textContent="",e){const n=new DOMParser,o=n.parseFromString(e,"text/html");a(o.querySelector("head").childNodes).forEach(e=>{t.appendChild(e)}),a(o.querySelector("body").childNodes).forEach(e=>{t.appendChild(e)})}},N=(t,e)=>{if(!e)return!1;var n=e.split(/\s+/);for(let e=0;e{var o,i;if(o=e,i=t,a(o.classList).forEach(e=>{Object.values(h).includes(e)||Object.values(g).includes(e)||Object.values(i.showClass).includes(e)||o.classList.remove(e)}),t.customClass&&t.customClass[n]){if("string"!=typeof t.customClass[n]&&!t.customClass[n].forEach)return s("Invalid type of customClass.".concat(n,'! Expected string or iterable object, got "').concat(typeof t.customClass[n],'"'));W(e,t.customClass[n])}},F=(e,t)=>{if(!t)return null;switch(t){case"select":case"textarea":case"file":return K(e,h[t]);case"checkbox":return e.querySelector(".".concat(h.checkbox," input"));case"radio":return e.querySelector(".".concat(h.radio," input:checked"))||e.querySelector(".".concat(h.radio," input:first-child"));case"range":return e.querySelector(".".concat(h.range," input"));default:return K(e,h.input)}},R=e=>{var t;e.focus(),"file"!==e.type&&(t=e.value,e.value="",e.value=t)},z=(e,t,n)=>{e&&t&&(t="string"==typeof t?t.split(/\s+/).filter(Boolean):t).forEach(t=>{e.forEach?e.forEach(e=>{n?e.classList.add(t):e.classList.remove(t)}):n?e.classList.add(t):e.classList.remove(t)})},W=(e,t)=>{z(e,t,!0)},_=(e,t)=>{z(e,t,!1)},K=(t,n)=>{for(let e=0;e{(n=n==="".concat(parseInt(n))?parseInt(n):n)||0===parseInt(n)?e.style[t]="number"==typeof n?"".concat(n,"px"):n:e.style.removeProperty(t)},Z=(e,t="flex")=>{e.style.display=t},J=e=>{e.style.display="none"},X=(e,t,n,o)=>{const i=e.querySelector(t);i&&(i.style[n]=o)},$=(e,t,n)=>{t?Z(e,n):J(e)},G=e=>!(!e||!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)),Q=()=>!G(P())&&!G(E())&&!G(T()),ee=e=>!!(e.scrollHeight>e.clientHeight),te=e=>{const t=window.getComputedStyle(e);var n=parseFloat(t.getPropertyValue("animation-duration")||"0"),e=parseFloat(t.getPropertyValue("transition-duration")||"0");return 0{const n=j();G(n)&&(t&&(n.style.transition="none",n.style.width="100%"),setTimeout(()=>{n.style.transition="width ".concat(e/1e3,"s linear"),n.style.width="0%"},10))},oe=()=>"undefined"==typeof window||"undefined"==typeof document,ie='\n \n').replace(/(^|\n)\s*/g,""),ae=()=>{ln.isVisible()&&ln.resetValidationMessage()},se=e=>{var t=(()=>{const e=b();return!!e&&(e.remove(),_([document.documentElement,document.body],[h["no-backdrop"],h["toast-shown"],h["has-column"]]),!0)})();if(oe())r("SweetAlert2 requires document to initialize");else{const n=document.createElement("div");n.className=h.container,t&&W(n,h["no-transition"]),V(n,ie);const o="string"==typeof(t=e.target)?document.querySelector(t):t;o.appendChild(n),(e=>{const t=v();t.setAttribute("role",e.toast?"alert":"dialog"),t.setAttribute("aria-live",e.toast?"polite":"assertive"),e.toast||t.setAttribute("aria-modal","true")})(e),e=o,"rtl"===window.getComputedStyle(e).direction&&W(b(),h.rtl),(()=>{const e=v(),t=K(e,h.input),n=K(e,h.file),o=e.querySelector(".".concat(h.range," input")),i=e.querySelector(".".concat(h.range," output")),a=K(e,h.select),s=e.querySelector(".".concat(h.checkbox," input")),r=K(e,h.textarea);t.oninput=ae,n.onchange=ae,a.onchange=ae,s.onchange=ae,r.oninput=ae,o.oninput=()=>{ae(),i.value=o.value},o.onchange=()=>{ae(),o.nextSibling.value=o.value}})()}},re=(e,t)=>{e instanceof HTMLElement?t.appendChild(e):"object"==typeof e?ce(e,t):e&&V(t,e)},ce=(e,t)=>{e.jquery?le(t,e):V(t,e.toString())},le=(t,n)=>{if(t.textContent="",0 in n)for(let e=0;e in n;e++)t.appendChild(n[e].cloneNode(!0));else t.appendChild(n.cloneNode(!0))},ue=(()=>{if(oe())return!1;var e=document.createElement("div"),t={WebkitAnimation:"webkitAnimationEnd",OAnimation:"oAnimationEnd oanimationend",animation:"animationend"};for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&void 0!==e.style[n])return t[n];return!1})(),de=(e,t)=>{const n=L();var o=S(),i=P(),a=E(),s=T();(t.showConfirmButton||t.showDenyButton||t.showCancelButton?Z:J)(n),U(n,t,"actions"),pe(i,"confirm",t),pe(a,"deny",t),pe(s,"cancel",t),function(e,t,n,o){if(!o.buttonsStyling)return _([e,t,n],h.styled);W([e,t,n],h.styled),o.confirmButtonColor&&(e.style.backgroundColor=o.confirmButtonColor,W(e,h["default-outline"]));o.denyButtonColor&&(t.style.backgroundColor=o.denyButtonColor,W(t,h["default-outline"]));o.cancelButtonColor&&(n.style.backgroundColor=o.cancelButtonColor,W(n,h["default-outline"]))}(i,a,s,t),t.reverseButtons&&(n.insertBefore(s,o),n.insertBefore(a,o),n.insertBefore(i,o)),V(o,t.loaderHtml),U(o,t,"loader")};function pe(e,t,n){$(e,n["show".concat(o(t),"Button")],"inline-block"),V(e,n["".concat(t,"ButtonText")]),e.setAttribute("aria-label",n["".concat(t,"ButtonAriaLabel")]),e.className=h[t],U(e,n,"".concat(t,"Button")),W(e,n["".concat(t,"ButtonClass")])}const me=(e,t)=>{var n,o,i=b();i&&(o=i,"string"==typeof(n=t.backdrop)?o.style.background=n:n||W([document.documentElement,document.body],h["no-backdrop"]),o=i,(n=t.position)in h?W(o,h[n]):(s('The "position" parameter is not valid, defaulting to "center"'),W(o,h.center)),n=i,!(o=t.grow)||"string"!=typeof o||(o="grow-".concat(o))in h&&W(n,h[o]),U(i,t,"container"))};var he={promise:new WeakMap,innerParams:new WeakMap,domCache:new WeakMap};const ge=["input","file","range","select","radio","checkbox","textarea"],be=e=>{if(!ke[e.input])return r('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'.concat(e.input,'"'));var t=Ce(e.input);const n=ke[e.input](t,e);Z(n),setTimeout(()=>{R(n)})},fe=(e,t)=>{const n=F(v(),e);if(n){(t=>{for(let e=0;e{var t=Ce(e.input);e.customClass&&W(t,e.customClass.input)},ve=(e,t)=>{e.placeholder&&!t.inputPlaceholder||(e.placeholder=t.inputPlaceholder)},we=(e,t,n)=>{if(n.inputLabel){e.id=h.input;const i=document.createElement("label");var o=h["input-label"];i.setAttribute("for",e.id),i.className=o,W(i,n.customClass.inputLabel),i.innerText=n.inputLabel,t.insertAdjacentElement("beforebegin",i)}},Ce=e=>{e=h[e]||h.input;return K(v(),e)},ke={};ke.text=ke.email=ke.password=ke.number=ke.tel=ke.url=(e,t)=>("string"==typeof t.inputValue||"number"==typeof t.inputValue?e.value=t.inputValue:p(t.inputValue)||s('Unexpected type of inputValue! Expected "string", "number" or "Promise", got "'.concat(typeof t.inputValue,'"')),we(e,e,t),ve(e,t),e.type=t.input,e),ke.file=(e,t)=>(we(e,e,t),ve(e,t),e),ke.range=(e,t)=>{const n=e.querySelector("input"),o=e.querySelector("output");return n.value=t.inputValue,n.type=t.input,o.value=t.inputValue,we(n,e,t),e},ke.select=(e,t)=>{if(e.textContent="",t.inputPlaceholder){const n=document.createElement("option");V(n,t.inputPlaceholder),n.value="",n.disabled=!0,n.selected=!0,e.appendChild(n)}return we(e,e,t),e},ke.radio=e=>(e.textContent="",e),ke.checkbox=(e,t)=>{const n=F(v(),"checkbox");n.value=1,n.id=h.checkbox,n.checked=Boolean(t.inputValue);var o=e.querySelector("span");return V(o,t.inputPlaceholder),e},ke.textarea=(n,e)=>{n.value=e.inputValue,ve(n,e),we(n,n,e);return setTimeout(()=>{if("MutationObserver"in window){const t=parseInt(window.getComputedStyle(v()).width);new MutationObserver(()=>{var e,e=n.offsetWidth+(e=n,parseInt(window.getComputedStyle(e).marginLeft)+parseInt(window.getComputedStyle(e).marginRight));e>t?v().style.width="".concat(e,"px"):v().style.width=null}).observe(n,{attributes:!0,attributeFilter:["style"]})}}),n};const Ae=(e,t)=>{const n=k();U(n,t,"htmlContainer"),t.html?(re(t.html,n),Z(n,"block")):t.text?(n.textContent=t.text,Z(n,"block")):J(n),((e,o)=>{const i=v();e=he.innerParams.get(e);const a=!e||o.input!==e.input;ge.forEach(e=>{var t=h[e];const n=K(i,t);fe(e,o.inputAttributes),n.className=t,a&&J(n)}),o.input&&(a&&be(o),ye(o))})(e,t)},Be=(e,t)=>{for(const n in g)t.icon!==n&&_(e,g[n]);W(e,g[t.icon]),Ee(e,t),xe(),U(e,t,"icon")},xe=()=>{const e=v();var t=window.getComputedStyle(e).getPropertyValue("background-color");const n=e.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix");for(let e=0;e{var n;e.textContent="",t.iconHtml?V(e,Se(t.iconHtml)):"success"===t.icon?V(e,'\n
\n \n
\n
\n '):"error"===t.icon?V(e,'\n \n \n \n \n '):(n={question:"?",warning:"!",info:"i"},V(e,Se(n[t.icon])))},Ee=(e,t)=>{if(t.iconColor){e.style.color=t.iconColor,e.style.borderColor=t.iconColor;for(const n of[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"])X(e,n,"backgroundColor",t.iconColor);X(e,".swal2-success-ring","borderColor",t.iconColor)}},Se=e=>'').concat(e,"
"),Te=(e,o)=>{const i=B();if(!o.progressSteps||0===o.progressSteps.length)return J(i);Z(i),i.textContent="",o.currentProgressStep>=o.progressSteps.length&&s("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),o.progressSteps.forEach((e,t)=>{var n,e=(n=e,e=document.createElement("li"),W(e,h["progress-step"]),V(e,n),e);i.appendChild(e),t===o.currentProgressStep&&W(e,h["active-progress-step"]),t!==o.progressSteps.length-1&&(t=(e=>{const t=document.createElement("li");return W(t,h["progress-step-line"]),e.progressStepsDistance&&(t.style.width=e.progressStepsDistance),t})(o),i.appendChild(t))})},Le=(e,t)=>{e.className="".concat(h.popup," ").concat(G(e)?t.showClass.popup:""),t.toast?(W([document.documentElement,document.body],h["toast-shown"]),W(e,h.toast)):W(e,h.modal),U(e,t,"popup"),"string"==typeof t.customClass&&W(e,t.customClass),t.icon&&W(e,h["icon-".concat(t.icon)])},Oe=(e,t)=>{var n,o,i;(e=>{var t=b();const n=v();e.toast?(Y(t,"width",e.width),n.style.width="100%",n.insertBefore(S(),w())):Y(n,"width",e.width),Y(n,"padding",e.padding),e.background&&(n.style.background=e.background),J(x()),Le(n,e)})(t),me(0,t),Te(0,t),i=e,n=t,o=he.innerParams.get(i),i=w(),o&&n.icon===o.icon?(Pe(i,n),Be(i,n)):n.icon||n.iconHtml?n.icon&&-1===Object.keys(g).indexOf(n.icon)?(r('Unknown icon! Expected "success", "error", "warning", "info" or "question", got "'.concat(n.icon,'"')),J(i)):(Z(i),Pe(i,n),Be(i,n),W(i,n.showClass.icon)):J(i),(e=>{const t=A();if(!e.imageUrl)return J(t);Z(t,""),t.setAttribute("src",e.imageUrl),t.setAttribute("alt",e.imageAlt),Y(t,"width",e.imageWidth),Y(t,"height",e.imageHeight),t.className=h.image,U(t,e,"image")})(t),(e=>{const t=C();$(t,e.title||e.titleText,"block"),e.title&&re(e.title,t),e.titleText&&(t.innerText=e.titleText),U(t,e,"title")})(t),(e=>{const t=D();V(t,e.closeButtonHtml),U(t,e,"closeButton"),$(t,e.showCloseButton),t.setAttribute("aria-label",e.closeButtonAriaLabel)})(t),Ae(e,t),de(0,t),i=t,e=O(),$(e,i.footer),i.footer&&re(i.footer,e),U(e,i,"footer"),"function"==typeof t.didRender&&t.didRender(v())};const je=()=>P()&&P().click();const De=e=>{let t=v();t||ln.fire(),t=v();var n=S();H()?J(w()):Ie(t,e),Z(n),t.setAttribute("data-loading",!0),t.setAttribute("aria-busy",!0),t.focus()},Ie=(e,t)=>{var n=L();const o=S();!t&&G(P())&&(t=P()),Z(n),t&&(J(t),o.setAttribute("data-button-to-replace",t.className)),o.parentNode.insertBefore(o,t),W([e,n],h.loading)},Me={},He=o=>new Promise(e=>{if(!o)return e();var t=window.scrollX,n=window.scrollY;Me.restoreFocusTimeout=setTimeout(()=>{Me.previousActiveElement&&Me.previousActiveElement.focus?(Me.previousActiveElement.focus(),Me.previousActiveElement=null):document.body&&document.body.focus(),e()},100),window.scrollTo(t,n)});const qe=()=>{if(Me.timeout)return(()=>{const e=j();var t=parseInt(window.getComputedStyle(e).width);e.style.removeProperty("transition"),e.style.width="100%";var n=parseInt(window.getComputedStyle(e).width),n=parseInt(t/n*100);e.style.removeProperty("transition"),e.style.width="".concat(n,"%")})(),Me.timeout.stop()},Ve=()=>{if(Me.timeout){var e=Me.timeout.start();return ne(e),e}};let Ne=!1;const Ue={};const Fe=t=>{for(let e=t.target;e&&e!==document;e=e.parentNode)for(const o in Ue){var n=e.getAttribute(o);if(n)return void Ue[o].fire({template:n})}},Re={title:"",titleText:"",text:"",html:"",footer:"",icon:void 0,iconColor:void 0,iconHtml:void 0,template:void 0,toast:!1,showClass:{popup:"swal2-show",backdrop:"swal2-backdrop-show",icon:"swal2-icon-show"},hideClass:{popup:"swal2-hide",backdrop:"swal2-backdrop-hide",icon:"swal2-icon-hide"},customClass:{},target:"body",backdrop:!0,heightAuto:!0,allowOutsideClick:!0,allowEscapeKey:!0,allowEnterKey:!0,stopKeydownPropagation:!0,keydownListenerCapture:!1,showConfirmButton:!0,showDenyButton:!1,showCancelButton:!1,preConfirm:void 0,preDeny:void 0,confirmButtonText:"OK",confirmButtonAriaLabel:"",confirmButtonColor:void 0,denyButtonText:"No",denyButtonAriaLabel:"",denyButtonColor:void 0,cancelButtonText:"Cancel",cancelButtonAriaLabel:"",cancelButtonColor:void 0,buttonsStyling:!0,reverseButtons:!1,focusConfirm:!0,focusDeny:!1,focusCancel:!1,returnFocus:!0,showCloseButton:!1,closeButtonHtml:"×",closeButtonAriaLabel:"Close this dialog",loaderHtml:"",showLoaderOnConfirm:!1,showLoaderOnDeny:!1,imageUrl:void 0,imageWidth:void 0,imageHeight:void 0,imageAlt:"",timer:void 0,timerProgressBar:!1,width:void 0,padding:void 0,background:void 0,input:void 0,inputPlaceholder:"",inputLabel:"",inputValue:"",inputOptions:{},inputAutoTrim:!0,inputAttributes:{},inputValidator:void 0,returnInputValueOnDeny:!1,validationMessage:void 0,grow:!1,position:"center",progressSteps:[],currentProgressStep:void 0,progressStepsDistance:void 0,willOpen:void 0,didOpen:void 0,didRender:void 0,willClose:void 0,didClose:void 0,didDestroy:void 0,scrollbarPadding:!0},ze=["allowEscapeKey","allowOutsideClick","background","buttonsStyling","cancelButtonAriaLabel","cancelButtonColor","cancelButtonText","closeButtonAriaLabel","closeButtonHtml","confirmButtonAriaLabel","confirmButtonColor","confirmButtonText","currentProgressStep","customClass","denyButtonAriaLabel","denyButtonColor","denyButtonText","didClose","didDestroy","footer","hideClass","html","icon","iconColor","iconHtml","imageAlt","imageHeight","imageUrl","imageWidth","preConfirm","preDeny","progressSteps","returnFocus","reverseButtons","showCancelButton","showCloseButton","showConfirmButton","showDenyButton","text","title","titleText","willClose"],We={},_e=["allowOutsideClick","allowEnterKey","backdrop","focusConfirm","focusDeny","focusCancel","returnFocus","heightAuto","keydownListenerCapture"],Ke=e=>Object.prototype.hasOwnProperty.call(Re,e);const Ye=e=>We[e],Ze=e=>{!e.backdrop&&e.allowOutsideClick&&s('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`');for(const o in e)n=o,Ke(n)||s('Unknown parameter "'.concat(n,'"')),e.toast&&(t=o,_e.includes(t)&&s('The parameter "'.concat(t,'" is incompatible with toasts'))),t=o,Ye(t)&&i(t,Ye(t));var t,n};var Je=Object.freeze({isValidParameter:Ke,isUpdatableParameter:e=>-1!==ze.indexOf(e),isDeprecatedParameter:Ye,argsToParams:n=>{const o={};return"object"!=typeof n[0]||m(n[0])?["title","html","icon"].forEach((e,t)=>{t=n[t];"string"==typeof t||m(t)?o[e]=t:void 0!==t&&r("Unexpected type of ".concat(e,'! Expected "string" or "Element", got ').concat(typeof t))}):Object.assign(o,n[0]),o},isVisible:()=>G(v()),clickConfirm:je,clickDeny:()=>E()&&E().click(),clickCancel:()=>T()&&T().click(),getContainer:b,getPopup:v,getTitle:C,getHtmlContainer:k,getImage:A,getIcon:w,getInputLabel:()=>y(h["input-label"]),getCloseButton:D,getActions:L,getConfirmButton:P,getDenyButton:E,getCancelButton:T,getLoader:S,getFooter:O,getTimerProgressBar:j,getFocusableElements:I,getValidationMessage:x,isLoading:()=>v().hasAttribute("data-loading"),fire:function(...e){return new this(...e)},mixin:function(n){class e extends this{_main(e,t){return super._main(e,Object.assign({},n,t))}}return e},showLoading:De,enableLoading:De,getTimerLeft:()=>Me.timeout&&Me.timeout.getTimerLeft(),stopTimer:qe,resumeTimer:Ve,toggleTimer:()=>{var e=Me.timeout;return e&&(e.running?qe:Ve)()},increaseTimer:e=>{if(Me.timeout){e=Me.timeout.increase(e);return ne(e,!0),e}},isTimerRunning:()=>Me.timeout&&Me.timeout.isRunning(),bindClickHandler:function(e="data-swal-template"){Ue[e]=this,Ne||(document.body.addEventListener("click",Fe),Ne=!0)}});function Xe(){var e=he.innerParams.get(this);if(e){const t=he.domCache.get(this);J(t.loader),H()?e.icon&&Z(w()):(e=>{const t=e.popup.getElementsByClassName(e.loader.getAttribute("data-button-to-replace"));if(t.length)Z(t[0],"inline-block");else if(Q())J(e.actions)})(t),_([t.popup,t.actions],h.loading),t.popup.removeAttribute("aria-busy"),t.popup.removeAttribute("data-loading"),t.confirmButton.disabled=!1,t.denyButton.disabled=!1,t.cancelButton.disabled=!1}}const $e=()=>{null===q.previousBodyPadding&&document.body.scrollHeight>window.innerHeight&&(q.previousBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight="".concat(q.previousBodyPadding+(()=>{const e=document.createElement("div");e.className=h["scrollbar-measure"],document.body.appendChild(e);var t=e.getBoundingClientRect().width-e.clientWidth;return document.body.removeChild(e),t})(),"px"))},Ge=()=>{navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i)||v().scrollHeight>window.innerHeight-44&&(b().style.paddingBottom="".concat(44,"px"))},Qe=()=>{const e=b();let t;e.ontouchstart=e=>{t=et(e)},e.ontouchmove=e=>{t&&(e.preventDefault(),e.stopPropagation())}},et=e=>{var t=e.target,n=b();return!tt(e)&&!nt(e)&&(t===n||!(ee(n)||"INPUT"===t.tagName||"TEXTAREA"===t.tagName||ee(k())&&k().contains(t)))},tt=e=>e.touches&&e.touches.length&&"stylus"===e.touches[0].touchType,nt=e=>e.touches&&1{const e=a(document.body.children);e.forEach(e=>{e.hasAttribute("data-previous-aria-hidden")?(e.setAttribute("aria-hidden",e.getAttribute("data-previous-aria-hidden")),e.removeAttribute("data-previous-aria-hidden")):e.removeAttribute("aria-hidden")})};var it={swalPromiseResolve:new WeakMap};function at(e,t,n,o){H()?ct(e,o):(He(n).then(()=>ct(e,o)),Me.keydownTarget.removeEventListener("keydown",Me.keydownHandler,{capture:Me.keydownListenerCapture}),Me.keydownHandlerAdded=!1),/^((?!chrome|android).)*safari/i.test(navigator.userAgent)?(t.setAttribute("style","display:none !important"),t.removeAttribute("class"),t.innerHTML=""):t.remove(),M()&&(null!==q.previousBodyPadding&&(document.body.style.paddingRight="".concat(q.previousBodyPadding,"px"),q.previousBodyPadding=null),N(document.body,h.iosfix)&&(t=parseInt(document.body.style.top,10),_(document.body,h.iosfix),document.body.style.top="",document.body.scrollTop=-1*t),ot()),_([document.documentElement,document.body],[h.shown,h["height-auto"],h["no-backdrop"],h["toast-shown"]])}function st(e){var t=v();if(t){e=void 0!==(o=e)?Object.assign({isConfirmed:!1,isDenied:!1,isDismissed:!1},o):{isConfirmed:!1,isDenied:!1,isDismissed:!0};var n=he.innerParams.get(this);if(n&&!N(t,n.hideClass.popup)){const i=it.swalPromiseResolve.get(this);_(t,n.showClass.popup),W(t,n.hideClass.popup);var o=b();_(o,n.showClass.backdrop),W(o,n.hideClass.backdrop),((e,t,n)=>{const o=b(),i=ue&&te(t);if(typeof n.willClose==="function")n.willClose(t);if(i)rt(e,t,o,n.returnFocus,n.didClose);else at(e,o,n.returnFocus,n.didClose)})(this,t,n),i(e)}}}const rt=(e,t,n,o,i)=>{Me.swalCloseEventFinishedCallback=at.bind(null,e,n,o,i),t.addEventListener(ue,function(e){e.target===t&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback)})},ct=(e,t)=>{setTimeout(()=>{"function"==typeof t&&t.bind(e.params)(),e._destroy()})};function lt(e,t,n){const o=he.domCache.get(e);t.forEach(e=>{o[e].disabled=n})}function ut(e,t){if(!e)return!1;if("radio"===e.type){const n=e.parentNode.parentNode,o=n.querySelectorAll("input");for(let e=0;e/^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid email address"),url:(e,t)=>/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid URL")};function mt(e){var t,n;(t=e).inputValidator||Object.keys(pt).forEach(e=>{t.input===e&&(t.inputValidator=pt[e])}),e.showLoaderOnConfirm&&!e.preConfirm&&s("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request"),(n=e).target&&("string"!=typeof n.target||document.querySelector(n.target))&&("string"==typeof n.target||n.target.appendChild)||(s('Target parameter is not valid, defaulting to "body"'),n.target="body"),"string"==typeof e.title&&(e.title=e.title.split("\n").join(" ")),se(e)}const ht=["swal-title","swal-html","swal-footer"],gt=e=>{e="string"==typeof e.template?document.querySelector(e.template):e.template;if(!e)return{};e=e.content;return kt(e),Object.assign(bt(e),ft(e),yt(e),vt(e),wt(e),Ct(e,ht))},bt=e=>{const o={};return a(e.querySelectorAll("swal-param")).forEach(e=>{At(e,["name","value"]);var t=e.getAttribute("name");let n=e.getAttribute("value");"boolean"==typeof Re[t]&&"false"===n&&(n=!1),"object"==typeof Re[t]&&(n=JSON.parse(n)),o[t]=n}),o},ft=e=>{const n={};return a(e.querySelectorAll("swal-button")).forEach(e=>{At(e,["type","color","aria-label"]);var t=e.getAttribute("type");n["".concat(t,"ButtonText")]=e.innerHTML,n["show".concat(o(t),"Button")]=!0,e.hasAttribute("color")&&(n["".concat(t,"ButtonColor")]=e.getAttribute("color")),e.hasAttribute("aria-label")&&(n["".concat(t,"ButtonAriaLabel")]=e.getAttribute("aria-label"))}),n},yt=e=>{const t={},n=e.querySelector("swal-image");return n&&(At(n,["src","width","height","alt"]),n.hasAttribute("src")&&(t.imageUrl=n.getAttribute("src")),n.hasAttribute("width")&&(t.imageWidth=n.getAttribute("width")),n.hasAttribute("height")&&(t.imageHeight=n.getAttribute("height")),n.hasAttribute("alt")&&(t.imageAlt=n.getAttribute("alt"))),t},vt=e=>{const t={},n=e.querySelector("swal-icon");return n&&(At(n,["type","color"]),n.hasAttribute("type")&&(t.icon=n.getAttribute("type")),n.hasAttribute("color")&&(t.iconColor=n.getAttribute("color")),t.iconHtml=n.innerHTML),t},wt=e=>{const n={},t=e.querySelector("swal-input");t&&(At(t,["type","label","placeholder","value"]),n.input=t.getAttribute("type")||"text",t.hasAttribute("label")&&(n.inputLabel=t.getAttribute("label")),t.hasAttribute("placeholder")&&(n.inputPlaceholder=t.getAttribute("placeholder")),t.hasAttribute("value")&&(n.inputValue=t.getAttribute("value")));e=e.querySelectorAll("swal-input-option");return e.length&&(n.inputOptions={},a(e).forEach(e=>{At(e,["value"]);var t=e.getAttribute("value"),e=e.innerHTML;n.inputOptions[t]=e})),n},Ct=(e,t)=>{const n={};for(const o in t){const i=t[o],a=e.querySelector(i);a&&(At(a,[]),n[i.replace(/^swal-/,"")]=a.innerHTML.trim())}return n},kt=e=>{const t=ht.concat(["swal-param","swal-button","swal-image","swal-icon","swal-input","swal-input-option"]);a(e.children).forEach(e=>{e=e.tagName.toLowerCase();-1===t.indexOf(e)&&s("Unrecognized element <".concat(e,">"))})},At=(t,n)=>{a(t.attributes).forEach(e=>{-1===n.indexOf(e.name)&&s(['Unrecognized attribute "'.concat(e.name,'" on <').concat(t.tagName.toLowerCase(),">."),"".concat(n.length?"Allowed attributes are: ".concat(n.join(", ")):"To set the value, use HTML within the element.")])})},Bt=e=>{const t=b(),n=v();"function"==typeof e.willOpen&&e.willOpen(n);var o=window.getComputedStyle(document.body).overflowY;St(t,n,e),setTimeout(()=>{Pt(t,n)},10),M()&&(Et(t,e.scrollbarPadding,o),(()=>{const e=a(document.body.children);e.forEach(e=>{e===b()||e.contains(b())||(e.hasAttribute("aria-hidden")&&e.setAttribute("data-previous-aria-hidden",e.getAttribute("aria-hidden")),e.setAttribute("aria-hidden","true"))})})()),H()||Me.previousActiveElement||(Me.previousActiveElement=document.activeElement),"function"==typeof e.didOpen&&setTimeout(()=>e.didOpen(n)),_(t,h["no-transition"])},xt=e=>{const t=v();if(e.target===t){const n=b();t.removeEventListener(ue,xt),n.style.overflowY="auto"}},Pt=(e,t)=>{ue&&te(t)?(e.style.overflowY="hidden",t.addEventListener(ue,xt)):e.style.overflowY="auto"},Et=(e,t,n)=>{var o;(/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream||"MacIntel"===navigator.platform&&1{e.scrollTop=0})},St=(e,t,n)=>{W(e,n.showClass.backdrop),t.style.setProperty("opacity","0","important"),Z(t,"grid"),setTimeout(()=>{W(t,n.showClass.popup),t.style.removeProperty("opacity")},10),W([document.documentElement,document.body],h.shown),n.heightAuto&&n.backdrop&&!n.toast&&W([document.documentElement,document.body],h["height-auto"])},Tt=e=>e.checked?1:0,Lt=e=>e.checked?e.value:null,Ot=e=>e.files.length?null!==e.getAttribute("multiple")?e.files:e.files[0]:null,jt=(t,n)=>{const o=v(),i=e=>It[n.input](o,Mt(e),n);u(n.inputOptions)||p(n.inputOptions)?(De(P()),d(n.inputOptions).then(e=>{t.hideLoading(),i(e)})):"object"==typeof n.inputOptions?i(n.inputOptions):r("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(typeof n.inputOptions))},Dt=(t,n)=>{const o=t.getInput();J(o),d(n.inputValue).then(e=>{o.value="number"===n.input?parseFloat(e)||0:"".concat(e),Z(o),o.focus(),t.hideLoading()}).catch(e=>{r("Error in inputValue promise: ".concat(e)),o.value="",Z(o),o.focus(),t.hideLoading()})},It={select:(e,t,i)=>{const a=K(e,h.select),s=(e,t,n)=>{const o=document.createElement("option");o.value=n,V(o,t),o.selected=Ht(n,i.inputValue),e.appendChild(o)};t.forEach(e=>{var t=e[0];const n=e[1];if(Array.isArray(n)){const o=document.createElement("optgroup");o.label=t,o.disabled=!1,a.appendChild(o),n.forEach(e=>s(o,e[1],e[0]))}else s(a,n,t)}),a.focus()},radio:(e,t,a)=>{const s=K(e,h.radio);t.forEach(e=>{var t=e[0],e=e[1];const n=document.createElement("input"),o=document.createElement("label");n.type="radio",n.name=h.radio,n.value=t,Ht(t,a.inputValue)&&(n.checked=!0);const i=document.createElement("span");V(i,e),i.className=h.label,o.appendChild(n),o.appendChild(i),s.appendChild(o)});const n=s.querySelectorAll("input");n.length&&n[0].focus()}},Mt=n=>{const o=[];return"undefined"!=typeof Map&&n instanceof Map?n.forEach((e,t)=>{let n=e;"object"==typeof n&&(n=Mt(n)),o.push([t,n])}):Object.keys(n).forEach(e=>{let t=n[e];"object"==typeof t&&(t=Mt(t)),o.push([e,t])}),o},Ht=(e,t)=>t&&t.toString()===e.toString(),qt=(e,t)=>{var n=he.innerParams.get(e),o=((e,t)=>{const n=e.getInput();if(!n)return null;switch(t.input){case"checkbox":return Tt(n);case"radio":return Lt(n);case"file":return Ot(n);default:return t.inputAutoTrim?n.value.trim():n.value}})(e,n);n.inputValidator?Vt(e,o,t):e.getInput().checkValidity()?("deny"===t?Nt:Ft)(e,o):(e.enableButtons(),e.showValidationMessage(n.validationMessage))},Vt=(t,n,o)=>{const e=he.innerParams.get(t);t.disableInput();const i=Promise.resolve().then(()=>d(e.inputValidator(n,e.validationMessage)));i.then(e=>{t.enableButtons(),t.enableInput(),e?t.showValidationMessage(e):("deny"===o?Nt:Ft)(t,n)})},Nt=(t,n)=>{const e=he.innerParams.get(t||void 0);if(e.showLoaderOnDeny&&De(E()),e.preDeny){const o=Promise.resolve().then(()=>d(e.preDeny(n,e.validationMessage)));o.then(e=>{!1===e?t.hideLoading():t.closePopup({isDenied:!0,value:void 0===e?n:e})})}else t.closePopup({isDenied:!0,value:n})},Ut=(e,t)=>{e.closePopup({isConfirmed:!0,value:t})},Ft=(t,n)=>{const e=he.innerParams.get(t||void 0);if(e.showLoaderOnConfirm&&De(),e.preConfirm){t.resetValidationMessage();const o=Promise.resolve().then(()=>d(e.preConfirm(n,e.validationMessage)));o.then(e=>{G(x())||!1===e?t.hideLoading():Ut(t,void 0===e?n:e)})}else Ut(t,n)},Rt=(e,t,n)=>{const o=I();if(o.length)return(t+=n)===o.length?t=0:-1===t&&(t=o.length-1),o[t].focus();v().focus()},zt=["ArrowRight","ArrowDown"],Wt=["ArrowLeft","ArrowUp"],_t=(e,t,n)=>{var o=he.innerParams.get(e);o&&(o.stopKeydownPropagation&&t.stopPropagation(),"Enter"===t.key?Kt(e,t,o):"Tab"===t.key?Yt(t,o):[...zt,...Wt].includes(t.key)?Zt(t.key):"Escape"===t.key&&Jt(t,o,n))},Kt=(e,t,n)=>{t.isComposing||t.target&&e.getInput()&&t.target.outerHTML===e.getInput().outerHTML&&(["textarea","file"].includes(n.input)||(je(),t.preventDefault()))},Yt=(e,t)=>{var n=e.target,o=I();let i=-1;for(let e=0;e{const t=P(),n=E(),o=T();if([t,n,o].includes(document.activeElement)){e=zt.includes(e)?"nextElementSibling":"previousElementSibling";const i=document.activeElement[e];i&&i.focus()}},Jt=(e,t,n)=>{c(t.allowEscapeKey)&&(e.preventDefault(),n(l.esc))},Xt=(t,e,n)=>{e.popup.onclick=()=>{var e=he.innerParams.get(t);e.showConfirmButton||e.showDenyButton||e.showCancelButton||e.showCloseButton||e.timer||e.input||n(l.close)}};let $t=!1;const Gt=t=>{t.popup.onmousedown=()=>{t.container.onmouseup=function(e){t.container.onmouseup=void 0,e.target===t.container&&($t=!0)}}},Qt=t=>{t.container.onmousedown=()=>{t.popup.onmouseup=function(e){t.popup.onmouseup=void 0,e.target!==t.popup&&!t.popup.contains(e.target)||($t=!0)}}},en=(n,o,i)=>{o.container.onclick=e=>{var t=he.innerParams.get(n);$t?$t=!1:e.target===o.container&&c(t.allowOutsideClick)&&i(l.backdrop)}};const tn=(e,t,n)=>{var o=j();J(o),t.timer&&(e.timeout=new dt(()=>{n("timer"),delete e.timeout},t.timer),t.timerProgressBar&&(Z(o),setTimeout(()=>{e.timeout&&e.timeout.running&&ne(t.timer)})))},nn=(e,t)=>{if(!t.toast)return c(t.allowEnterKey)?void(on(e,t)||Rt(0,-1,1)):an()},on=(e,t)=>t.focusDeny&&G(e.denyButton)?(e.denyButton.focus(),!0):t.focusCancel&&G(e.cancelButton)?(e.cancelButton.focus(),!0):!(!t.focusConfirm||!G(e.confirmButton))&&(e.confirmButton.focus(),!0),an=()=>{document.activeElement&&"function"==typeof document.activeElement.blur&&document.activeElement.blur()};const sn=e=>{for(const t in e)e[t]=new WeakMap};e=Object.freeze({hideLoading:Xe,disableLoading:Xe,getInput:function(e){var t=he.innerParams.get(e||this);return(e=he.domCache.get(e||this))?F(e.popup,t.input):null},close:st,closePopup:st,closeModal:st,closeToast:st,enableButtons:function(){lt(this,["confirmButton","denyButton","cancelButton"],!1)},disableButtons:function(){lt(this,["confirmButton","denyButton","cancelButton"],!0)},enableInput:function(){return ut(this.getInput(),!1)},disableInput:function(){return ut(this.getInput(),!0)},showValidationMessage:function(e){const t=he.domCache.get(this);var n=he.innerParams.get(this);V(t.validationMessage,e),t.validationMessage.className=h["validation-message"],n.customClass&&n.customClass.validationMessage&&W(t.validationMessage,n.customClass.validationMessage),Z(t.validationMessage);const o=this.getInput();o&&(o.setAttribute("aria-invalid",!0),o.setAttribute("aria-describedby",h["validation-message"]),R(o),W(o,h.inputerror))},resetValidationMessage:function(){var e=he.domCache.get(this);e.validationMessage&&J(e.validationMessage);const t=this.getInput();t&&(t.removeAttribute("aria-invalid"),t.removeAttribute("aria-describedby"),_(t,h.inputerror))},getProgressSteps:function(){return he.domCache.get(this).progressSteps},_main:function(e,t={}){Ze(Object.assign({},t,e)),Me.currentInstance&&(Me.currentInstance._destroy(),M()&&ot()),Me.currentInstance=this,mt(e=((e,t)=>{const n=gt(e),o=Object.assign({},Re,t,n,e);return o.showClass=Object.assign({},Re.showClass,o.showClass),o.hideClass=Object.assign({},Re.hideClass,o.hideClass),o})(e,t)),Object.freeze(e),Me.timeout&&(Me.timeout.stop(),delete Me.timeout),clearTimeout(Me.restoreFocusTimeout);var s,r,c,t=(e=>{const t={popup:v(),container:b(),actions:L(),confirmButton:P(),denyButton:E(),cancelButton:T(),loader:S(),closeButton:D(),validationMessage:x(),progressSteps:B()};return he.domCache.set(e,t),t})(this);return Oe(this,e),he.innerParams.set(this,e),s=this,r=t,c=e,new Promise(e=>{const t=e=>{s.closePopup({isDismissed:!0,dismiss:e})};var n,o,i,a;it.swalPromiseResolve.set(s,e),r.confirmButton.onclick=()=>(e=>{var t=he.innerParams.get(e);e.disableButtons(),t.input?qt(e,"confirm"):Ft(e,!0)})(s),r.denyButton.onclick=()=>(e=>{var t=he.innerParams.get(e);e.disableButtons(),t.returnInputValueOnDeny?qt(e,"deny"):Nt(e,!1)})(s),r.cancelButton.onclick=()=>((e,t)=>{e.disableButtons(),t(l.cancel)})(s,t),r.closeButton.onclick=()=>t(l.close),n=s,a=r,e=t,he.innerParams.get(n).toast?Xt(n,a,e):(Gt(a),Qt(a),en(n,a,e)),o=s,a=Me,e=c,i=t,a.keydownTarget&&a.keydownHandlerAdded&&(a.keydownTarget.removeEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!1),e.toast||(a.keydownHandler=e=>_t(o,e,i),a.keydownTarget=e.keydownListenerCapture?window:v(),a.keydownListenerCapture=e.keydownListenerCapture,a.keydownTarget.addEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!0),e=s,"select"===(a=c).input||"radio"===a.input?jt(e,a):["text","email","number","tel","textarea"].includes(a.input)&&(u(a.inputValue)||p(a.inputValue))&&(De(P()),Dt(e,a)),Bt(c),tn(Me,c,t),nn(r,c),setTimeout(()=>{r.container.scrollTop=0})})},update:function(t){var e=v(),n=he.innerParams.get(this);if(!e||N(e,n.hideClass.popup))return s("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");const o={};Object.keys(t).forEach(e=>{ln.isUpdatableParameter(e)?o[e]=t[e]:s('Invalid parameter to update: "'.concat(e,'". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\n\nIf you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md'))}),n=Object.assign({},n,o),Oe(this,n),he.innerParams.set(this,n),Object.defineProperties(this,{params:{value:Object.assign({},this.params,t),writable:!1,enumerable:!0}})},_destroy:function(){var e=he.domCache.get(this);const t=he.innerParams.get(this);t&&(e.popup&&Me.swalCloseEventFinishedCallback&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback),Me.deferDisposalTimer&&(clearTimeout(Me.deferDisposalTimer),delete Me.deferDisposalTimer),"function"==typeof t.didDestroy&&t.didDestroy(),delete this.params,delete Me.keydownHandler,delete Me.keydownTarget,sn(he),sn(it),delete Me.currentInstance)}});let rn;class cn{constructor(...e){"undefined"!=typeof window&&(rn=this,e=Object.freeze(this.constructor.argsToParams(e)),Object.defineProperties(this,{params:{value:e,writable:!1,enumerable:!0,configurable:!0}}),e=this._main(this.params),he.promise.set(this,e))}then(e){const t=he.promise.get(this);return t.then(e)}finally(e){const t=he.promise.get(this);return t.finally(e)}}Object.assign(cn.prototype,e),Object.assign(cn,Je),Object.keys(e).forEach(t=>{cn[t]=function(...e){if(rn)return rn[t](...e)}}),cn.DismissReason=l,cn.version="11.1.5";const ln=cn;return ln.default=ln,ln}),void 0!==this&&this.Sweetalert2&&(this.swal=this.sweetAlert=this.Swal=this.SweetAlert=this.Sweetalert2);
\ No newline at end of file
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Sweetalert2=t()}(this,function(){"use strict";const l=Object.freeze({cancel:"cancel",backdrop:"backdrop",close:"close",esc:"esc",timer:"timer"}),t="SweetAlert2:",o=e=>e.charAt(0).toUpperCase()+e.slice(1),a=e=>Array.prototype.slice.call(e),s=e=>{console.warn("".concat(t," ").concat("object"==typeof e?e.join(" "):e))},r=e=>{console.error("".concat(t," ").concat(e))},n=[],i=(e,t)=>{t='"'.concat(e,'" is deprecated and will be removed in the next major release. Please use "').concat(t,'" instead.'),n.includes(t)||(n.push(t),s(t))},c=e=>"function"==typeof e?e():e,u=e=>e&&"function"==typeof e.toPromise,d=e=>u(e)?e.toPromise():Promise.resolve(e),p=e=>e&&Promise.resolve(e)===e,m=e=>e instanceof Element||(e=>"object"==typeof e&&e.jquery)(e);var e=e=>{const t={};for(const n in e)t[e[n]]="swal2-"+e[n];return t};const h=e(["container","shown","height-auto","iosfix","popup","modal","no-backdrop","no-transition","toast","toast-shown","show","hide","close","title","html-container","actions","confirm","deny","cancel","default-outline","footer","icon","icon-content","image","input","file","range","select","radio","checkbox","label","textarea","inputerror","input-label","validation-message","progress-steps","active-progress-step","progress-step","progress-step-line","loader","loading","styled","top","top-start","top-end","top-left","top-right","center","center-start","center-end","center-left","center-right","bottom","bottom-start","bottom-end","bottom-left","bottom-right","grow-row","grow-column","grow-fullscreen","rtl","timer-progress-bar","timer-progress-bar-container","scrollbar-measure","icon-success","icon-warning","icon-info","icon-question","icon-error"]),g=e(["success","warning","info","question","error"]),b=()=>document.body.querySelector(".".concat(h.container)),f=e=>{const t=b();return t?t.querySelector(e):null},y=e=>f(".".concat(e)),v=()=>y(h.popup),w=()=>y(h.icon),C=()=>y(h.title),k=()=>y(h["html-container"]),A=()=>y(h.image),B=()=>y(h["progress-steps"]),x=()=>y(h["validation-message"]),P=()=>f(".".concat(h.actions," .").concat(h.confirm)),E=()=>f(".".concat(h.actions," .").concat(h.deny));const S=()=>f(".".concat(h.loader)),T=()=>f(".".concat(h.actions," .").concat(h.cancel)),L=()=>y(h.actions),O=()=>y(h.footer),j=()=>y(h["timer-progress-bar"]),D=()=>y(h.close),I=()=>{const e=a(v().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')).sort((e,t)=>(e=parseInt(e.getAttribute("tabindex")),(t=parseInt(t.getAttribute("tabindex")))"-1"!==e.getAttribute("tabindex"));return(t=>{const n=[];for(let e=0;eG(e))},M=()=>!H()&&!document.body.classList.contains(h["no-backdrop"]),H=()=>document.body.classList.contains(h["toast-shown"]);const q={previousBodyPadding:null},V=(t,e)=>{if(t.textContent="",e){const n=new DOMParser,o=n.parseFromString(e,"text/html");a(o.querySelector("head").childNodes).forEach(e=>{t.appendChild(e)}),a(o.querySelector("body").childNodes).forEach(e=>{t.appendChild(e)})}},N=(t,e)=>{if(!e)return!1;var n=e.split(/\s+/);for(let e=0;e{var o,i;if(o=e,i=t,a(o.classList).forEach(e=>{Object.values(h).includes(e)||Object.values(g).includes(e)||Object.values(i.showClass).includes(e)||o.classList.remove(e)}),t.customClass&&t.customClass[n]){if("string"!=typeof t.customClass[n]&&!t.customClass[n].forEach)return s("Invalid type of customClass.".concat(n,'! Expected string or iterable object, got "').concat(typeof t.customClass[n],'"'));W(e,t.customClass[n])}},F=(e,t)=>{if(!t)return null;switch(t){case"select":case"textarea":case"file":return K(e,h[t]);case"checkbox":return e.querySelector(".".concat(h.checkbox," input"));case"radio":return e.querySelector(".".concat(h.radio," input:checked"))||e.querySelector(".".concat(h.radio," input:first-child"));case"range":return e.querySelector(".".concat(h.range," input"));default:return K(e,h.input)}},R=e=>{var t;e.focus(),"file"!==e.type&&(t=e.value,e.value="",e.value=t)},z=(e,t,n)=>{e&&t&&(t="string"==typeof t?t.split(/\s+/).filter(Boolean):t).forEach(t=>{e.forEach?e.forEach(e=>{n?e.classList.add(t):e.classList.remove(t)}):n?e.classList.add(t):e.classList.remove(t)})},W=(e,t)=>{z(e,t,!0)},_=(e,t)=>{z(e,t,!1)},K=(t,n)=>{for(let e=0;e{(n=n==="".concat(parseInt(n))?parseInt(n):n)||0===parseInt(n)?e.style[t]="number"==typeof n?"".concat(n,"px"):n:e.style.removeProperty(t)},Z=(e,t="flex")=>{e.style.display=t},J=e=>{e.style.display="none"},X=(e,t,n,o)=>{const i=e.querySelector(t);i&&(i.style[n]=o)},$=(e,t,n)=>{t?Z(e,n):J(e)},G=e=>!(!e||!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)),Q=()=>!G(P())&&!G(E())&&!G(T()),ee=e=>!!(e.scrollHeight>e.clientHeight),te=e=>{const t=window.getComputedStyle(e);var n=parseFloat(t.getPropertyValue("animation-duration")||"0"),e=parseFloat(t.getPropertyValue("transition-duration")||"0");return 0{const n=j();G(n)&&(t&&(n.style.transition="none",n.style.width="100%"),setTimeout(()=>{n.style.transition="width ".concat(e/1e3,"s linear"),n.style.width="0%"},10))},oe=()=>"undefined"==typeof window||"undefined"==typeof document,ie='\n \n').replace(/(^|\n)\s*/g,""),ae=()=>{ln.isVisible()&&ln.resetValidationMessage()},se=e=>{var t=(()=>{const e=b();return!!e&&(e.remove(),_([document.documentElement,document.body],[h["no-backdrop"],h["toast-shown"],h["has-column"]]),!0)})();if(oe())r("SweetAlert2 requires document to initialize");else{const n=document.createElement("div");n.className=h.container,t&&W(n,h["no-transition"]),V(n,ie);const o="string"==typeof(t=e.target)?document.querySelector(t):t;o.appendChild(n),(e=>{const t=v();t.setAttribute("role",e.toast?"alert":"dialog"),t.setAttribute("aria-live",e.toast?"polite":"assertive"),e.toast||t.setAttribute("aria-modal","true")})(e),e=o,"rtl"===window.getComputedStyle(e).direction&&W(b(),h.rtl),(()=>{const e=v(),t=K(e,h.input),n=K(e,h.file),o=e.querySelector(".".concat(h.range," input")),i=e.querySelector(".".concat(h.range," output")),a=K(e,h.select),s=e.querySelector(".".concat(h.checkbox," input")),r=K(e,h.textarea);t.oninput=ae,n.onchange=ae,a.onchange=ae,s.onchange=ae,r.oninput=ae,o.oninput=()=>{ae(),i.value=o.value},o.onchange=()=>{ae(),o.nextSibling.value=o.value}})()}},re=(e,t)=>{e instanceof HTMLElement?t.appendChild(e):"object"==typeof e?ce(e,t):e&&V(t,e)},ce=(e,t)=>{e.jquery?le(t,e):V(t,e.toString())},le=(t,n)=>{if(t.textContent="",0 in n)for(let e=0;e in n;e++)t.appendChild(n[e].cloneNode(!0));else t.appendChild(n.cloneNode(!0))},ue=(()=>{if(oe())return!1;var e=document.createElement("div"),t={WebkitAnimation:"webkitAnimationEnd",OAnimation:"oAnimationEnd oanimationend",animation:"animationend"};for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&void 0!==e.style[n])return t[n];return!1})(),de=(e,t)=>{const n=L();var o=S(),i=P(),a=E(),s=T();(t.showConfirmButton||t.showDenyButton||t.showCancelButton?Z:J)(n),U(n,t,"actions"),pe(i,"confirm",t),pe(a,"deny",t),pe(s,"cancel",t),function(e,t,n,o){if(!o.buttonsStyling)return _([e,t,n],h.styled);W([e,t,n],h.styled),o.confirmButtonColor&&(e.style.backgroundColor=o.confirmButtonColor,W(e,h["default-outline"]));o.denyButtonColor&&(t.style.backgroundColor=o.denyButtonColor,W(t,h["default-outline"]));o.cancelButtonColor&&(n.style.backgroundColor=o.cancelButtonColor,W(n,h["default-outline"]))}(i,a,s,t),t.reverseButtons&&(n.insertBefore(s,o),n.insertBefore(a,o),n.insertBefore(i,o)),V(o,t.loaderHtml),U(o,t,"loader")};function pe(e,t,n){$(e,n["show".concat(o(t),"Button")],"inline-block"),V(e,n["".concat(t,"ButtonText")]),e.setAttribute("aria-label",n["".concat(t,"ButtonAriaLabel")]),e.className=h[t],U(e,n,"".concat(t,"Button")),W(e,n["".concat(t,"ButtonClass")])}const me=(e,t)=>{var n,o,i=b();i&&(o=i,"string"==typeof(n=t.backdrop)?o.style.background=n:n||W([document.documentElement,document.body],h["no-backdrop"]),o=i,(n=t.position)in h?W(o,h[n]):(s('The "position" parameter is not valid, defaulting to "center"'),W(o,h.center)),n=i,!(o=t.grow)||"string"!=typeof o||(o="grow-".concat(o))in h&&W(n,h[o]),U(i,t,"container"))};var he={promise:new WeakMap,innerParams:new WeakMap,domCache:new WeakMap};const ge=["input","file","range","select","radio","checkbox","textarea"],be=e=>{if(!ke[e.input])return r('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'.concat(e.input,'"'));var t=Ce(e.input);const n=ke[e.input](t,e);Z(n),setTimeout(()=>{R(n)})},fe=(e,t)=>{const n=F(v(),e);if(n){(t=>{for(let e=0;e{var t=Ce(e.input);e.customClass&&W(t,e.customClass.input)},ve=(e,t)=>{e.placeholder&&!t.inputPlaceholder||(e.placeholder=t.inputPlaceholder)},we=(e,t,n)=>{if(n.inputLabel){e.id=h.input;const i=document.createElement("label");var o=h["input-label"];i.setAttribute("for",e.id),i.className=o,W(i,n.customClass.inputLabel),i.innerText=n.inputLabel,t.insertAdjacentElement("beforebegin",i)}},Ce=e=>{e=h[e]||h.input;return K(v(),e)},ke={};ke.text=ke.email=ke.password=ke.number=ke.tel=ke.url=(e,t)=>("string"==typeof t.inputValue||"number"==typeof t.inputValue?e.value=t.inputValue:p(t.inputValue)||s('Unexpected type of inputValue! Expected "string", "number" or "Promise", got "'.concat(typeof t.inputValue,'"')),we(e,e,t),ve(e,t),e.type=t.input,e),ke.file=(e,t)=>(we(e,e,t),ve(e,t),e),ke.range=(e,t)=>{const n=e.querySelector("input"),o=e.querySelector("output");return n.value=t.inputValue,n.type=t.input,o.value=t.inputValue,we(n,e,t),e},ke.select=(e,t)=>{if(e.textContent="",t.inputPlaceholder){const n=document.createElement("option");V(n,t.inputPlaceholder),n.value="",n.disabled=!0,n.selected=!0,e.appendChild(n)}return we(e,e,t),e},ke.radio=e=>(e.textContent="",e),ke.checkbox=(e,t)=>{const n=F(v(),"checkbox");n.value=1,n.id=h.checkbox,n.checked=Boolean(t.inputValue);var o=e.querySelector("span");return V(o,t.inputPlaceholder),e},ke.textarea=(n,e)=>{n.value=e.inputValue,ve(n,e),we(n,n,e);return setTimeout(()=>{if("MutationObserver"in window){const t=parseInt(window.getComputedStyle(v()).width);new MutationObserver(()=>{var e,e=n.offsetWidth+(e=n,parseInt(window.getComputedStyle(e).marginLeft)+parseInt(window.getComputedStyle(e).marginRight));e>t?v().style.width="".concat(e,"px"):v().style.width=null}).observe(n,{attributes:!0,attributeFilter:["style"]})}}),n};const Ae=(e,t)=>{const n=k();U(n,t,"htmlContainer"),t.html?(re(t.html,n),Z(n,"block")):t.text?(n.textContent=t.text,Z(n,"block")):J(n),((e,o)=>{const i=v();e=he.innerParams.get(e);const a=!e||o.input!==e.input;ge.forEach(e=>{var t=h[e];const n=K(i,t);fe(e,o.inputAttributes),n.className=t,a&&J(n)}),o.input&&(a&&be(o),ye(o))})(e,t)},Be=(e,t)=>{for(const n in g)t.icon!==n&&_(e,g[n]);W(e,g[t.icon]),Ee(e,t),xe(),U(e,t,"icon")},xe=()=>{const e=v();var t=window.getComputedStyle(e).getPropertyValue("background-color");const n=e.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix");for(let e=0;e{var n;e.textContent="",t.iconHtml?V(e,Se(t.iconHtml)):"success"===t.icon?V(e,'\n
\n \n
\n
\n '):"error"===t.icon?V(e,'\n \n \n \n \n '):(n={question:"?",warning:"!",info:"i"},V(e,Se(n[t.icon])))},Ee=(e,t)=>{if(t.iconColor){e.style.color=t.iconColor,e.style.borderColor=t.iconColor;for(const n of[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"])X(e,n,"backgroundColor",t.iconColor);X(e,".swal2-success-ring","borderColor",t.iconColor)}},Se=e=>'').concat(e,"
"),Te=(e,o)=>{const i=B();if(!o.progressSteps||0===o.progressSteps.length)return J(i);Z(i),i.textContent="",o.currentProgressStep>=o.progressSteps.length&&s("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),o.progressSteps.forEach((e,t)=>{var n,e=(n=e,e=document.createElement("li"),W(e,h["progress-step"]),V(e,n),e);i.appendChild(e),t===o.currentProgressStep&&W(e,h["active-progress-step"]),t!==o.progressSteps.length-1&&(t=(e=>{const t=document.createElement("li");return W(t,h["progress-step-line"]),e.progressStepsDistance&&(t.style.width=e.progressStepsDistance),t})(o),i.appendChild(t))})},Le=(e,t)=>{e.className="".concat(h.popup," ").concat(G(e)?t.showClass.popup:""),t.toast?(W([document.documentElement,document.body],h["toast-shown"]),W(e,h.toast)):W(e,h.modal),U(e,t,"popup"),"string"==typeof t.customClass&&W(e,t.customClass),t.icon&&W(e,h["icon-".concat(t.icon)])},Oe=(e,t)=>{var n,o,i;(e=>{var t=b();const n=v();e.toast?(Y(t,"width",e.width),n.style.width="100%",n.insertBefore(S(),w())):Y(n,"width",e.width),Y(n,"padding",e.padding),e.background&&(n.style.background=e.background),J(x()),Le(n,e)})(t),me(0,t),Te(0,t),i=e,n=t,o=he.innerParams.get(i),i=w(),o&&n.icon===o.icon?(Pe(i,n),Be(i,n)):n.icon||n.iconHtml?n.icon&&-1===Object.keys(g).indexOf(n.icon)?(r('Unknown icon! Expected "success", "error", "warning", "info" or "question", got "'.concat(n.icon,'"')),J(i)):(Z(i),Pe(i,n),Be(i,n),W(i,n.showClass.icon)):J(i),(e=>{const t=A();if(!e.imageUrl)return J(t);Z(t,""),t.setAttribute("src",e.imageUrl),t.setAttribute("alt",e.imageAlt),Y(t,"width",e.imageWidth),Y(t,"height",e.imageHeight),t.className=h.image,U(t,e,"image")})(t),(e=>{const t=C();$(t,e.title||e.titleText,"block"),e.title&&re(e.title,t),e.titleText&&(t.innerText=e.titleText),U(t,e,"title")})(t),(e=>{const t=D();V(t,e.closeButtonHtml),U(t,e,"closeButton"),$(t,e.showCloseButton),t.setAttribute("aria-label",e.closeButtonAriaLabel)})(t),Ae(e,t),de(0,t),i=t,e=O(),$(e,i.footer),i.footer&&re(i.footer,e),U(e,i,"footer"),"function"==typeof t.didRender&&t.didRender(v())};const je=()=>P()&&P().click();const De=e=>{let t=v();t||ln.fire(),t=v();var n=S();H()?J(w()):Ie(t,e),Z(n),t.setAttribute("data-loading",!0),t.setAttribute("aria-busy",!0),t.focus()},Ie=(e,t)=>{var n=L();const o=S();!t&&G(P())&&(t=P()),Z(n),t&&(J(t),o.setAttribute("data-button-to-replace",t.className)),o.parentNode.insertBefore(o,t),W([e,n],h.loading)},Me={},He=o=>new Promise(e=>{if(!o)return e();var t=window.scrollX,n=window.scrollY;Me.restoreFocusTimeout=setTimeout(()=>{Me.previousActiveElement&&Me.previousActiveElement.focus?(Me.previousActiveElement.focus(),Me.previousActiveElement=null):document.body&&document.body.focus(),e()},100),window.scrollTo(t,n)});const qe=()=>{if(Me.timeout)return(()=>{const e=j();var t=parseInt(window.getComputedStyle(e).width);e.style.removeProperty("transition"),e.style.width="100%";var n=parseInt(window.getComputedStyle(e).width),n=parseInt(t/n*100);e.style.removeProperty("transition"),e.style.width="".concat(n,"%")})(),Me.timeout.stop()},Ve=()=>{if(Me.timeout){var e=Me.timeout.start();return ne(e),e}};let Ne=!1;const Ue={};const Fe=t=>{for(let e=t.target;e&&e!==document;e=e.parentNode)for(const o in Ue){var n=e.getAttribute(o);if(n)return void Ue[o].fire({template:n})}},Re={title:"",titleText:"",text:"",html:"",footer:"",icon:void 0,iconColor:void 0,iconHtml:void 0,template:void 0,toast:!1,showClass:{popup:"swal2-show",backdrop:"swal2-backdrop-show",icon:"swal2-icon-show"},hideClass:{popup:"swal2-hide",backdrop:"swal2-backdrop-hide",icon:"swal2-icon-hide"},customClass:{},target:"body",backdrop:!0,heightAuto:!0,allowOutsideClick:!0,allowEscapeKey:!0,allowEnterKey:!0,stopKeydownPropagation:!0,keydownListenerCapture:!1,showConfirmButton:!0,showDenyButton:!1,showCancelButton:!1,preConfirm:void 0,preDeny:void 0,confirmButtonText:"OK",confirmButtonAriaLabel:"",confirmButtonColor:void 0,denyButtonText:"No",denyButtonAriaLabel:"",denyButtonColor:void 0,cancelButtonText:"Cancel",cancelButtonAriaLabel:"",cancelButtonColor:void 0,buttonsStyling:!0,reverseButtons:!1,focusConfirm:!0,focusDeny:!1,focusCancel:!1,returnFocus:!0,showCloseButton:!1,closeButtonHtml:"×",closeButtonAriaLabel:"Close this dialog",loaderHtml:"",showLoaderOnConfirm:!1,showLoaderOnDeny:!1,imageUrl:void 0,imageWidth:void 0,imageHeight:void 0,imageAlt:"",timer:void 0,timerProgressBar:!1,width:void 0,padding:void 0,background:void 0,input:void 0,inputPlaceholder:"",inputLabel:"",inputValue:"",inputOptions:{},inputAutoTrim:!0,inputAttributes:{},inputValidator:void 0,returnInputValueOnDeny:!1,validationMessage:void 0,grow:!1,position:"center",progressSteps:[],currentProgressStep:void 0,progressStepsDistance:void 0,willOpen:void 0,didOpen:void 0,didRender:void 0,willClose:void 0,didClose:void 0,didDestroy:void 0,scrollbarPadding:!0},ze=["allowEscapeKey","allowOutsideClick","background","buttonsStyling","cancelButtonAriaLabel","cancelButtonColor","cancelButtonText","closeButtonAriaLabel","closeButtonHtml","confirmButtonAriaLabel","confirmButtonColor","confirmButtonText","currentProgressStep","customClass","denyButtonAriaLabel","denyButtonColor","denyButtonText","didClose","didDestroy","footer","hideClass","html","icon","iconColor","iconHtml","imageAlt","imageHeight","imageUrl","imageWidth","preConfirm","preDeny","progressSteps","returnFocus","reverseButtons","showCancelButton","showCloseButton","showConfirmButton","showDenyButton","text","title","titleText","willClose"],We={},_e=["allowOutsideClick","allowEnterKey","backdrop","focusConfirm","focusDeny","focusCancel","returnFocus","heightAuto","keydownListenerCapture"],Ke=e=>Object.prototype.hasOwnProperty.call(Re,e);const Ye=e=>We[e],Ze=e=>{!e.backdrop&&e.allowOutsideClick&&s('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`');for(const o in e)n=o,Ke(n)||s('Unknown parameter "'.concat(n,'"')),e.toast&&(t=o,_e.includes(t)&&s('The parameter "'.concat(t,'" is incompatible with toasts'))),t=o,Ye(t)&&i(t,Ye(t));var t,n};var Je=Object.freeze({isValidParameter:Ke,isUpdatableParameter:e=>-1!==ze.indexOf(e),isDeprecatedParameter:Ye,argsToParams:n=>{const o={};return"object"!=typeof n[0]||m(n[0])?["title","html","icon"].forEach((e,t)=>{t=n[t];"string"==typeof t||m(t)?o[e]=t:void 0!==t&&r("Unexpected type of ".concat(e,'! Expected "string" or "Element", got ').concat(typeof t))}):Object.assign(o,n[0]),o},isVisible:()=>G(v()),clickConfirm:je,clickDeny:()=>E()&&E().click(),clickCancel:()=>T()&&T().click(),getContainer:b,getPopup:v,getTitle:C,getHtmlContainer:k,getImage:A,getIcon:w,getInputLabel:()=>y(h["input-label"]),getCloseButton:D,getActions:L,getConfirmButton:P,getDenyButton:E,getCancelButton:T,getLoader:S,getFooter:O,getTimerProgressBar:j,getFocusableElements:I,getValidationMessage:x,isLoading:()=>v().hasAttribute("data-loading"),fire:function(...e){return new this(...e)},mixin:function(n){class e extends this{_main(e,t){return super._main(e,Object.assign({},n,t))}}return e},showLoading:De,enableLoading:De,getTimerLeft:()=>Me.timeout&&Me.timeout.getTimerLeft(),stopTimer:qe,resumeTimer:Ve,toggleTimer:()=>{var e=Me.timeout;return e&&(e.running?qe:Ve)()},increaseTimer:e=>{if(Me.timeout){e=Me.timeout.increase(e);return ne(e,!0),e}},isTimerRunning:()=>Me.timeout&&Me.timeout.isRunning(),bindClickHandler:function(e="data-swal-template"){Ue[e]=this,Ne||(document.body.addEventListener("click",Fe),Ne=!0)}});function Xe(){var e=he.innerParams.get(this);if(e){const t=he.domCache.get(this);J(t.loader),H()?e.icon&&Z(w()):(e=>{const t=e.popup.getElementsByClassName(e.loader.getAttribute("data-button-to-replace"));if(t.length)Z(t[0],"inline-block");else if(Q())J(e.actions)})(t),_([t.popup,t.actions],h.loading),t.popup.removeAttribute("aria-busy"),t.popup.removeAttribute("data-loading"),t.confirmButton.disabled=!1,t.denyButton.disabled=!1,t.cancelButton.disabled=!1}}const $e=()=>{null===q.previousBodyPadding&&document.body.scrollHeight>window.innerHeight&&(q.previousBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight="".concat(q.previousBodyPadding+(()=>{const e=document.createElement("div");e.className=h["scrollbar-measure"],document.body.appendChild(e);var t=e.getBoundingClientRect().width-e.clientWidth;return document.body.removeChild(e),t})(),"px"))},Ge=()=>{navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i)||v().scrollHeight>window.innerHeight-44&&(b().style.paddingBottom="".concat(44,"px"))},Qe=()=>{const e=b();let t;e.ontouchstart=e=>{t=et(e)},e.ontouchmove=e=>{t&&(e.preventDefault(),e.stopPropagation())}},et=e=>{var t=e.target,n=b();return!tt(e)&&!nt(e)&&(t===n||!(ee(n)||"INPUT"===t.tagName||"TEXTAREA"===t.tagName||ee(k())&&k().contains(t)))},tt=e=>e.touches&&e.touches.length&&"stylus"===e.touches[0].touchType,nt=e=>e.touches&&1{const e=a(document.body.children);e.forEach(e=>{e.hasAttribute("data-previous-aria-hidden")?(e.setAttribute("aria-hidden",e.getAttribute("data-previous-aria-hidden")),e.removeAttribute("data-previous-aria-hidden")):e.removeAttribute("aria-hidden")})};var it={swalPromiseResolve:new WeakMap};function at(e,t,n,o){H()?ct(e,o):(He(n).then(()=>ct(e,o)),Me.keydownTarget.removeEventListener("keydown",Me.keydownHandler,{capture:Me.keydownListenerCapture}),Me.keydownHandlerAdded=!1),/^((?!chrome|android).)*safari/i.test(navigator.userAgent)?(t.setAttribute("style","display:none !important"),t.removeAttribute("class"),t.innerHTML=""):t.remove(),M()&&(null!==q.previousBodyPadding&&(document.body.style.paddingRight="".concat(q.previousBodyPadding,"px"),q.previousBodyPadding=null),N(document.body,h.iosfix)&&(t=parseInt(document.body.style.top,10),_(document.body,h.iosfix),document.body.style.top="",document.body.scrollTop=-1*t),ot()),_([document.documentElement,document.body],[h.shown,h["height-auto"],h["no-backdrop"],h["toast-shown"]])}function st(e){var t=v();if(t){e=void 0!==(o=e)?Object.assign({isConfirmed:!1,isDenied:!1,isDismissed:!1},o):{isConfirmed:!1,isDenied:!1,isDismissed:!0};var n=he.innerParams.get(this);if(n&&!N(t,n.hideClass.popup)){const i=it.swalPromiseResolve.get(this);_(t,n.showClass.popup),W(t,n.hideClass.popup);var o=b();_(o,n.showClass.backdrop),W(o,n.hideClass.backdrop),((e,t,n)=>{const o=b(),i=ue&&te(t);if(typeof n.willClose==="function")n.willClose(t);if(i)rt(e,t,o,n.returnFocus,n.didClose);else at(e,o,n.returnFocus,n.didClose)})(this,t,n),i(e)}}}const rt=(e,t,n,o,i)=>{Me.swalCloseEventFinishedCallback=at.bind(null,e,n,o,i),t.addEventListener(ue,function(e){e.target===t&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback)})},ct=(e,t)=>{setTimeout(()=>{"function"==typeof t&&t.bind(e.params)(),e._destroy()})};function lt(e,t,n){const o=he.domCache.get(e);t.forEach(e=>{o[e].disabled=n})}function ut(e,t){if(!e)return!1;if("radio"===e.type){const n=e.parentNode.parentNode,o=n.querySelectorAll("input");for(let e=0;e/^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid email address"),url:(e,t)=>/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid URL")};function mt(e){var t,n;(t=e).inputValidator||Object.keys(pt).forEach(e=>{t.input===e&&(t.inputValidator=pt[e])}),e.showLoaderOnConfirm&&!e.preConfirm&&s("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request"),(n=e).target&&("string"!=typeof n.target||document.querySelector(n.target))&&("string"==typeof n.target||n.target.appendChild)||(s('Target parameter is not valid, defaulting to "body"'),n.target="body"),"string"==typeof e.title&&(e.title=e.title.split("\n").join(" ")),se(e)}const ht=["swal-title","swal-html","swal-footer"],gt=e=>{e="string"==typeof e.template?document.querySelector(e.template):e.template;if(!e)return{};e=e.content;return kt(e),Object.assign(bt(e),ft(e),yt(e),vt(e),wt(e),Ct(e,ht))},bt=e=>{const o={};return a(e.querySelectorAll("swal-param")).forEach(e=>{At(e,["name","value"]);var t=e.getAttribute("name");let n=e.getAttribute("value");"boolean"==typeof Re[t]&&"false"===n&&(n=!1),"object"==typeof Re[t]&&(n=JSON.parse(n)),o[t]=n}),o},ft=e=>{const n={};return a(e.querySelectorAll("swal-button")).forEach(e=>{At(e,["type","color","aria-label"]);var t=e.getAttribute("type");n["".concat(t,"ButtonText")]=e.innerHTML,n["show".concat(o(t),"Button")]=!0,e.hasAttribute("color")&&(n["".concat(t,"ButtonColor")]=e.getAttribute("color")),e.hasAttribute("aria-label")&&(n["".concat(t,"ButtonAriaLabel")]=e.getAttribute("aria-label"))}),n},yt=e=>{const t={},n=e.querySelector("swal-image");return n&&(At(n,["src","width","height","alt"]),n.hasAttribute("src")&&(t.imageUrl=n.getAttribute("src")),n.hasAttribute("width")&&(t.imageWidth=n.getAttribute("width")),n.hasAttribute("height")&&(t.imageHeight=n.getAttribute("height")),n.hasAttribute("alt")&&(t.imageAlt=n.getAttribute("alt"))),t},vt=e=>{const t={},n=e.querySelector("swal-icon");return n&&(At(n,["type","color"]),n.hasAttribute("type")&&(t.icon=n.getAttribute("type")),n.hasAttribute("color")&&(t.iconColor=n.getAttribute("color")),t.iconHtml=n.innerHTML),t},wt=e=>{const n={},t=e.querySelector("swal-input");t&&(At(t,["type","label","placeholder","value"]),n.input=t.getAttribute("type")||"text",t.hasAttribute("label")&&(n.inputLabel=t.getAttribute("label")),t.hasAttribute("placeholder")&&(n.inputPlaceholder=t.getAttribute("placeholder")),t.hasAttribute("value")&&(n.inputValue=t.getAttribute("value")));e=e.querySelectorAll("swal-input-option");return e.length&&(n.inputOptions={},a(e).forEach(e=>{At(e,["value"]);var t=e.getAttribute("value"),e=e.innerHTML;n.inputOptions[t]=e})),n},Ct=(e,t)=>{const n={};for(const o in t){const i=t[o],a=e.querySelector(i);a&&(At(a,[]),n[i.replace(/^swal-/,"")]=a.innerHTML.trim())}return n},kt=e=>{const t=ht.concat(["swal-param","swal-button","swal-image","swal-icon","swal-input","swal-input-option"]);a(e.children).forEach(e=>{e=e.tagName.toLowerCase();-1===t.indexOf(e)&&s("Unrecognized element <".concat(e,">"))})},At=(t,n)=>{a(t.attributes).forEach(e=>{-1===n.indexOf(e.name)&&s(['Unrecognized attribute "'.concat(e.name,'" on <').concat(t.tagName.toLowerCase(),">."),"".concat(n.length?"Allowed attributes are: ".concat(n.join(", ")):"To set the value, use HTML within the element.")])})},Bt=e=>{const t=b(),n=v();"function"==typeof e.willOpen&&e.willOpen(n);var o=window.getComputedStyle(document.body).overflowY;St(t,n,e),setTimeout(()=>{Pt(t,n)},10),M()&&(Et(t,e.scrollbarPadding,o),(()=>{const e=a(document.body.children);e.forEach(e=>{e===b()||e.contains(b())||(e.hasAttribute("aria-hidden")&&e.setAttribute("data-previous-aria-hidden",e.getAttribute("aria-hidden")),e.setAttribute("aria-hidden","true"))})})()),H()||Me.previousActiveElement||(Me.previousActiveElement=document.activeElement),"function"==typeof e.didOpen&&setTimeout(()=>e.didOpen(n)),_(t,h["no-transition"])},xt=e=>{const t=v();if(e.target===t){const n=b();t.removeEventListener(ue,xt),n.style.overflowY="auto"}},Pt=(e,t)=>{ue&&te(t)?(e.style.overflowY="hidden",t.addEventListener(ue,xt)):e.style.overflowY="auto"},Et=(e,t,n)=>{var o;(/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream||"MacIntel"===navigator.platform&&1{e.scrollTop=0})},St=(e,t,n)=>{W(e,n.showClass.backdrop),t.style.setProperty("opacity","0","important"),Z(t,"grid"),setTimeout(()=>{W(t,n.showClass.popup),t.style.removeProperty("opacity")},10),W([document.documentElement,document.body],h.shown),n.heightAuto&&n.backdrop&&!n.toast&&W([document.documentElement,document.body],h["height-auto"])},Tt=e=>e.checked?1:0,Lt=e=>e.checked?e.value:null,Ot=e=>e.files.length?null!==e.getAttribute("multiple")?e.files:e.files[0]:null,jt=(t,n)=>{const o=v(),i=e=>It[n.input](o,Mt(e),n);u(n.inputOptions)||p(n.inputOptions)?(De(P()),d(n.inputOptions).then(e=>{t.hideLoading(),i(e)})):"object"==typeof n.inputOptions?i(n.inputOptions):r("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(typeof n.inputOptions))},Dt=(t,n)=>{const o=t.getInput();J(o),d(n.inputValue).then(e=>{o.value="number"===n.input?parseFloat(e)||0:"".concat(e),Z(o),o.focus(),t.hideLoading()}).catch(e=>{r("Error in inputValue promise: ".concat(e)),o.value="",Z(o),o.focus(),t.hideLoading()})},It={select:(e,t,i)=>{const a=K(e,h.select),s=(e,t,n)=>{const o=document.createElement("option");o.value=n,V(o,t),o.selected=Ht(n,i.inputValue),e.appendChild(o)};t.forEach(e=>{var t=e[0];const n=e[1];if(Array.isArray(n)){const o=document.createElement("optgroup");o.label=t,o.disabled=!1,a.appendChild(o),n.forEach(e=>s(o,e[1],e[0]))}else s(a,n,t)}),a.focus()},radio:(e,t,a)=>{const s=K(e,h.radio);t.forEach(e=>{var t=e[0],e=e[1];const n=document.createElement("input"),o=document.createElement("label");n.type="radio",n.name=h.radio,n.value=t,Ht(t,a.inputValue)&&(n.checked=!0);const i=document.createElement("span");V(i,e),i.className=h.label,o.appendChild(n),o.appendChild(i),s.appendChild(o)});const n=s.querySelectorAll("input");n.length&&n[0].focus()}},Mt=n=>{const o=[];return"undefined"!=typeof Map&&n instanceof Map?n.forEach((e,t)=>{let n=e;"object"==typeof n&&(n=Mt(n)),o.push([t,n])}):Object.keys(n).forEach(e=>{let t=n[e];"object"==typeof t&&(t=Mt(t)),o.push([e,t])}),o},Ht=(e,t)=>t&&t.toString()===e.toString(),qt=(e,t)=>{var n=he.innerParams.get(e),o=((e,t)=>{const n=e.getInput();if(!n)return null;switch(t.input){case"checkbox":return Tt(n);case"radio":return Lt(n);case"file":return Ot(n);default:return t.inputAutoTrim?n.value.trim():n.value}})(e,n);n.inputValidator?Vt(e,o,t):e.getInput().checkValidity()?("deny"===t?Nt:Ft)(e,o):(e.enableButtons(),e.showValidationMessage(n.validationMessage))},Vt=(t,n,o)=>{const e=he.innerParams.get(t);t.disableInput();const i=Promise.resolve().then(()=>d(e.inputValidator(n,e.validationMessage)));i.then(e=>{t.enableButtons(),t.enableInput(),e?t.showValidationMessage(e):("deny"===o?Nt:Ft)(t,n)})},Nt=(t,n)=>{const e=he.innerParams.get(t||void 0);if(e.showLoaderOnDeny&&De(E()),e.preDeny){const o=Promise.resolve().then(()=>d(e.preDeny(n,e.validationMessage)));o.then(e=>{!1===e?t.hideLoading():t.closePopup({isDenied:!0,value:void 0===e?n:e})})}else t.closePopup({isDenied:!0,value:n})},Ut=(e,t)=>{e.closePopup({isConfirmed:!0,value:t})},Ft=(t,n)=>{const e=he.innerParams.get(t||void 0);if(e.showLoaderOnConfirm&&De(),e.preConfirm){t.resetValidationMessage();const o=Promise.resolve().then(()=>d(e.preConfirm(n,e.validationMessage)));o.then(e=>{G(x())||!1===e?t.hideLoading():Ut(t,void 0===e?n:e)})}else Ut(t,n)},Rt=(e,t,n)=>{const o=I();if(o.length)return(t+=n)===o.length?t=0:-1===t&&(t=o.length-1),o[t].focus();v().focus()},zt=["ArrowRight","ArrowDown"],Wt=["ArrowLeft","ArrowUp"],_t=(e,t,n)=>{var o=he.innerParams.get(e);o&&(o.stopKeydownPropagation&&t.stopPropagation(),"Enter"===t.key?Kt(e,t,o):"Tab"===t.key?Yt(t,o):[...zt,...Wt].includes(t.key)?Zt(t.key):"Escape"===t.key&&Jt(t,o,n))},Kt=(e,t,n)=>{t.isComposing||t.target&&e.getInput()&&t.target.outerHTML===e.getInput().outerHTML&&(["textarea","file"].includes(n.input)||(je(),t.preventDefault()))},Yt=(e,t)=>{var n=e.target,o=I();let i=-1;for(let e=0;e{const t=P(),n=E(),o=T();if([t,n,o].includes(document.activeElement)){e=zt.includes(e)?"nextElementSibling":"previousElementSibling";const i=document.activeElement[e];i&&i.focus()}},Jt=(e,t,n)=>{c(t.allowEscapeKey)&&(e.preventDefault(),n(l.esc))},Xt=(t,e,n)=>{e.popup.onclick=()=>{var e=he.innerParams.get(t);e.showConfirmButton||e.showDenyButton||e.showCancelButton||e.showCloseButton||e.timer||e.input||n(l.close)}};let $t=!1;const Gt=t=>{t.popup.onmousedown=()=>{t.container.onmouseup=function(e){t.container.onmouseup=void 0,e.target===t.container&&($t=!0)}}},Qt=t=>{t.container.onmousedown=()=>{t.popup.onmouseup=function(e){t.popup.onmouseup=void 0,e.target!==t.popup&&!t.popup.contains(e.target)||($t=!0)}}},en=(n,o,i)=>{o.container.onclick=e=>{var t=he.innerParams.get(n);$t?$t=!1:e.target===o.container&&c(t.allowOutsideClick)&&i(l.backdrop)}};const tn=(e,t,n)=>{var o=j();J(o),t.timer&&(e.timeout=new dt(()=>{n("timer"),delete e.timeout},t.timer),t.timerProgressBar&&(Z(o),setTimeout(()=>{e.timeout&&e.timeout.running&&ne(t.timer)})))},nn=(e,t)=>{if(!t.toast)return c(t.allowEnterKey)?void(on(e,t)||Rt(0,-1,1)):an()},on=(e,t)=>t.focusDeny&&G(e.denyButton)?(e.denyButton.focus(),!0):t.focusCancel&&G(e.cancelButton)?(e.cancelButton.focus(),!0):!(!t.focusConfirm||!G(e.confirmButton))&&(e.confirmButton.focus(),!0),an=()=>{document.activeElement&&"function"==typeof document.activeElement.blur&&document.activeElement.blur()};const sn=e=>{for(const t in e)e[t]=new WeakMap};e=Object.freeze({hideLoading:Xe,disableLoading:Xe,getInput:function(e){var t=he.innerParams.get(e||this);return(e=he.domCache.get(e||this))?F(e.popup,t.input):null},close:st,closePopup:st,closeModal:st,closeToast:st,enableButtons:function(){lt(this,["confirmButton","denyButton","cancelButton"],!1)},disableButtons:function(){lt(this,["confirmButton","denyButton","cancelButton"],!0)},enableInput:function(){return ut(this.getInput(),!1)},disableInput:function(){return ut(this.getInput(),!0)},showValidationMessage:function(e){const t=he.domCache.get(this);var n=he.innerParams.get(this);V(t.validationMessage,e),t.validationMessage.className=h["validation-message"],n.customClass&&n.customClass.validationMessage&&W(t.validationMessage,n.customClass.validationMessage),Z(t.validationMessage);const o=this.getInput();o&&(o.setAttribute("aria-invalid",!0),o.setAttribute("aria-describedby",h["validation-message"]),R(o),W(o,h.inputerror))},resetValidationMessage:function(){var e=he.domCache.get(this);e.validationMessage&&J(e.validationMessage);const t=this.getInput();t&&(t.removeAttribute("aria-invalid"),t.removeAttribute("aria-describedby"),_(t,h.inputerror))},getProgressSteps:function(){return he.domCache.get(this).progressSteps},_main:function(e,t={}){Ze(Object.assign({},t,e)),Me.currentInstance&&(Me.currentInstance._destroy(),M()&&ot()),Me.currentInstance=this,mt(e=((e,t)=>{const n=gt(e),o=Object.assign({},Re,t,n,e);return o.showClass=Object.assign({},Re.showClass,o.showClass),o.hideClass=Object.assign({},Re.hideClass,o.hideClass),o})(e,t)),Object.freeze(e),Me.timeout&&(Me.timeout.stop(),delete Me.timeout),clearTimeout(Me.restoreFocusTimeout);var s,r,c,t=(e=>{const t={popup:v(),container:b(),actions:L(),confirmButton:P(),denyButton:E(),cancelButton:T(),loader:S(),closeButton:D(),validationMessage:x(),progressSteps:B()};return he.domCache.set(e,t),t})(this);return Oe(this,e),he.innerParams.set(this,e),s=this,r=t,c=e,new Promise(e=>{const t=e=>{s.closePopup({isDismissed:!0,dismiss:e})};var n,o,i,a;it.swalPromiseResolve.set(s,e),r.confirmButton.onclick=()=>(e=>{var t=he.innerParams.get(e);e.disableButtons(),t.input?qt(e,"confirm"):Ft(e,!0)})(s),r.denyButton.onclick=()=>(e=>{var t=he.innerParams.get(e);e.disableButtons(),t.returnInputValueOnDeny?qt(e,"deny"):Nt(e,!1)})(s),r.cancelButton.onclick=()=>((e,t)=>{e.disableButtons(),t(l.cancel)})(s,t),r.closeButton.onclick=()=>t(l.close),n=s,a=r,e=t,he.innerParams.get(n).toast?Xt(n,a,e):(Gt(a),Qt(a),en(n,a,e)),o=s,a=Me,e=c,i=t,a.keydownTarget&&a.keydownHandlerAdded&&(a.keydownTarget.removeEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!1),e.toast||(a.keydownHandler=e=>_t(o,e,i),a.keydownTarget=e.keydownListenerCapture?window:v(),a.keydownListenerCapture=e.keydownListenerCapture,a.keydownTarget.addEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!0),e=s,"select"===(a=c).input||"radio"===a.input?jt(e,a):["text","email","number","tel","textarea"].includes(a.input)&&(u(a.inputValue)||p(a.inputValue))&&(De(P()),Dt(e,a)),Bt(c),tn(Me,c,t),nn(r,c),setTimeout(()=>{r.container.scrollTop=0})})},update:function(t){var e=v(),n=he.innerParams.get(this);if(!e||N(e,n.hideClass.popup))return s("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");const o={};Object.keys(t).forEach(e=>{ln.isUpdatableParameter(e)?o[e]=t[e]:s('Invalid parameter to update: "'.concat(e,'". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\n\nIf you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md'))}),n=Object.assign({},n,o),Oe(this,n),he.innerParams.set(this,n),Object.defineProperties(this,{params:{value:Object.assign({},this.params,t),writable:!1,enumerable:!0}})},_destroy:function(){var e=he.domCache.get(this);const t=he.innerParams.get(this);t&&(e.popup&&Me.swalCloseEventFinishedCallback&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback),Me.deferDisposalTimer&&(clearTimeout(Me.deferDisposalTimer),delete Me.deferDisposalTimer),"function"==typeof t.didDestroy&&t.didDestroy(),delete this.params,delete Me.keydownHandler,delete Me.keydownTarget,sn(he),sn(it),delete Me.currentInstance)}});let rn;class cn{constructor(...e){"undefined"!=typeof window&&(rn=this,e=Object.freeze(this.constructor.argsToParams(e)),Object.defineProperties(this,{params:{value:e,writable:!1,enumerable:!0,configurable:!0}}),e=this._main(this.params),he.promise.set(this,e))}then(e){const t=he.promise.get(this);return t.then(e)}finally(e){const t=he.promise.get(this);return t.finally(e)}}Object.assign(cn.prototype,e),Object.assign(cn,Je),Object.keys(e).forEach(t=>{cn[t]=function(...e){if(rn)return rn[t](...e)}}),cn.DismissReason=l,cn.version="11.1.7";const ln=cn;return ln.default=ln,ln}),void 0!==this&&this.Sweetalert2&&(this.swal=this.sweetAlert=this.Swal=this.SweetAlert=this.Sweetalert2);
\ No newline at end of file
diff --git a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock
index e6bf503cd5..4d068f4656 100644
--- a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock
+++ b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock
@@ -2,37 +2,37 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.2.tgz#78f8319e7cc745e45d67e30eb0a02bc1d1b4ff97"
- integrity sha512-km7kSn56Lu/qeo6gEEOoQJ91vWOnPUhQVEYSGmnxCKYa1ZtOzFitSZNx0WBhS/REBM27rYsb8M38P8MRmeIFxQ==
- dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.2"
-
-"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.2.tgz#e4ec56c3a8bc12b46ef329c6ee7617204e4e8b78"
- integrity sha512-mtqaO6OBxZ//+NpwNuS+i381U7VgI5BWjBreeZnPtJdAo9ltG31ignTbBpX1Yo5xZ0zgytgFKZJ0BFzlDXAn0w==
- dependencies:
- "@abp/aspnetcore.mvc.ui" "~4.4.2"
- "@abp/bootstrap" "~4.4.2"
- "@abp/bootstrap-datepicker" "~4.4.2"
- "@abp/datatables.net-bs4" "~4.4.2"
- "@abp/font-awesome" "~4.4.2"
- "@abp/jquery-form" "~4.4.2"
- "@abp/jquery-validation-unobtrusive" "~4.4.2"
- "@abp/lodash" "~4.4.2"
- "@abp/luxon" "~4.4.2"
- "@abp/malihu-custom-scrollbar-plugin" "~4.4.2"
- "@abp/select2" "~4.4.2"
- "@abp/sweetalert" "~4.4.2"
- "@abp/timeago" "~4.4.2"
- "@abp/toastr" "~4.4.2"
-
-"@abp/aspnetcore.mvc.ui@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.2.tgz#ec4cb4b875efc3661d4a889569114b8f0c515296"
- integrity sha512-Ur9eR3tzG+LN1XDujZLHmtW4+Z5NxUbK7L3SRrHJXx4NgxXAklQrQhnUIcXwh347CAiVsTDMTQn/MIjJxUeRMw==
+"@abp/aspnetcore.mvc.ui.theme.basic@^5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.0-beta.1.tgz#2c78c2bd977a67f6c2ed77cfcd404cf9533eaaae"
+ integrity sha512-b8Boztxd5NbaDlXQvgHXHtw8ZNgM4tEgo14kw/bN3mcLx05fWLGd8Lzfdi7i+Ju6U3rKbgi+0MSbga93A0KSmg==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.1"
+
+"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.1.tgz#25596652bb3f7b6bac5bbd966a731144cd9646c6"
+ integrity sha512-N4SHu6rn8alK4jdve00IscngrfvqJNEjrwQclXNmP9c4NtPuVM9emZdxBzKF8jFb6Hz8HiwM9H3xV/SjKCS/7A==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui" "~5.0.0-beta.1"
+ "@abp/bootstrap" "~5.0.0-beta.1"
+ "@abp/bootstrap-datepicker" "~5.0.0-beta.1"
+ "@abp/datatables.net-bs4" "~5.0.0-beta.1"
+ "@abp/font-awesome" "~5.0.0-beta.1"
+ "@abp/jquery-form" "~5.0.0-beta.1"
+ "@abp/jquery-validation-unobtrusive" "~5.0.0-beta.1"
+ "@abp/lodash" "~5.0.0-beta.1"
+ "@abp/luxon" "~5.0.0-beta.1"
+ "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.1"
+ "@abp/select2" "~5.0.0-beta.1"
+ "@abp/sweetalert2" "~5.0.0-beta.1"
+ "@abp/timeago" "~5.0.0-beta.1"
+ "@abp/toastr" "~5.0.0-beta.1"
+
+"@abp/aspnetcore.mvc.ui@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.1.tgz#30c14386899596bf91e8871810dbaa1a0e51e996"
+ integrity sha512-pabiGHghC62eg95RfAncEt0+yGdBxdMmyqCXV+Be4JjaMz/hGZIDOPIYnaqCayZtyMmIRqG6IAwi99DqBjkQAQ==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@@ -41,214 +41,214 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
-"@abp/blogging@^4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-4.4.2.tgz#54a0ef5ebedc7d778b45c3fdc464d84e75b1a4f4"
- integrity sha512-Uc+0lU9kFsutcLadjRVkwLFxq26r/yam2ZEHHJhi5rPnc7PGL2qLct8WpyKxqRp6z61TPK7Oa8hfb5ZxkYnExQ==
+"@abp/blogging@^5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-5.0.0-beta.1.tgz#bfc5b5205dd1784d736fa6d51651728dc8e23478"
+ integrity sha512-kYxG9I1lBOWoUk/Tl9YqT7VbQiYwcBtxXOIwQV7u+cUGlSF/Ml1Wk222hgJ3OKt5Mx/X2z4uqS6zFraVyVyZQQ==
dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.2"
- "@abp/owl.carousel" "~4.4.2"
- "@abp/prismjs" "~4.4.2"
- "@abp/tui-editor" "~4.4.2"
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.1"
+ "@abp/owl.carousel" "~5.0.0-beta.1"
+ "@abp/prismjs" "~5.0.0-beta.1"
+ "@abp/tui-editor" "~5.0.0-beta.1"
-"@abp/bootstrap-datepicker@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.2.tgz#5189f2794a4bd8e912c6eeeda8cbfe959a125572"
- integrity sha512-XYIk4ArM2qxD4kITg59eDBAohQxVgW2/v3flWtTtm4O2syTER1uUcQNTecGf8lwwW7j6dNR/L7dIa2q73UJKkw==
+"@abp/bootstrap-datepicker@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.1.tgz#727e0f7305a94c95ece152ffff011bcff621f46d"
+ integrity sha512-txhdlJqyO2D9MkGLYgrsiDaC58cb2eCpk2uxoqqQeVWvuRPo/L+9rCBk+bu6J37FGJtU8aabtHJyR5xnYbv0TQ==
dependencies:
bootstrap-datepicker "^1.9.0"
-"@abp/bootstrap@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.2.tgz#2fe2b888a195c2686c609c10a0ca2b355ce76cf8"
- integrity sha512-5HAxaU9FpNk6YLr2Wc5FSq/ggrj7I5sd429tZvepOQux8voKji3vFVTFoEmuWJdQiWjcGmbjTM/HR01vsIf+ag==
+"@abp/bootstrap@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.1.tgz#075a15459ff8e3896b6553786e6c8f091c6ffcad"
+ integrity sha512-W8z6qSAsRoXmG0++xH6Bk1oRc90hFqVcjKI+5XgBQhUUCn2qBruBYOKFxPg2GeT2f1k9K5TrCEnnVrh0sOP9/A==
dependencies:
- "@abp/core" "~4.4.2"
+ "@abp/core" "~5.0.0-beta.1"
bootstrap "^4.6.0"
bootstrap-v4-rtl "4.6.0-1"
-"@abp/clipboard@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-4.4.2.tgz#a7a15cd45fdbf7f85d0c691004e10418db56f733"
- integrity sha512-Nfw1W1tQlSH44PiNTEsNW2GG1r0JaMz3FV9UZEZmKQLbaiWd6Du39xEDgJMyTJQLf+k1oOSWECuD5mamrJqTRQ==
+"@abp/clipboard@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-5.0.0-beta.1.tgz#7c46ffe185116b1d3e43ef389df9dae2b98dd0c9"
+ integrity sha512-Gsr8qZNhxoH7uH+Kd0Q7qrQdGAjU20r65zjBI7iUgtpP/18obm87SUZLPDobZLAf+UB/Wl9VnxvedyLYDnuQGQ==
dependencies:
- "@abp/core" "~4.4.2"
+ "@abp/core" "~5.0.0-beta.1"
clipboard "^2.0.6"
-"@abp/codemirror@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-4.4.2.tgz#ca3589848f36d1723a2c725fe3e48939573a9fe5"
- integrity sha512-jFivhZ1/EQQ3EHOJPnjgtay0gzPXUAa17WF2jdr5Qml208dSwb/rpwHxsVNyc408xgseZlJ/PbIBa+fJWi1iDA==
+"@abp/codemirror@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-5.0.0-beta.1.tgz#3b2f6175454d23bed01cddc62a709e52c76e2162"
+ integrity sha512-0IAW0k6lk4yrC04kIW75Ez3nIx/RUsSTb5Wqf6K7TM0N5hIVdBTdIhc3ZqVPmAlXhFuwqLRIshjMNiVfgImSBg==
dependencies:
- "@abp/core" "~4.4.2"
+ "@abp/core" "~5.0.0-beta.1"
codemirror "^5.54.0"
-"@abp/core@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.2.tgz#40a933d77373656a9ef0c7d55b00621470294d36"
- integrity sha512-wnEtyrT/nnL7e1eRjyVshjnUI2EIJ2veG4SHTZ/GZxDYfHsP6PxuhzHvu/7WD/TI4QDTWhyWX/bKYY26gqNWLw==
+"@abp/core@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.1.tgz#6cff06b13529ab9d7a6ddc4e89dc40616e6b7739"
+ integrity sha512-TK1CnurJIK/SXfsNTk6HSpxdaJgVxwvqNd4F3fxCC0Uj8s5viD3TAGk39Hkp4909WGfNrRq8BEUNvTYM/rP6gg==
dependencies:
- "@abp/utils" "^4.4.2"
+ "@abp/utils" "^5.0.0-beta.1"
-"@abp/datatables.net-bs4@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.2.tgz#c4468e7e7d796531522b5f0b05854fd7cacf32b8"
- integrity sha512-HLmWq0GJsSHO5dBvKWYxuZrbMpo+f3ln4568zoCyfO/vVrtna2JcDkRmH2JNXPlOBFA06ThPnoeGbsEOrFflVA==
+"@abp/datatables.net-bs4@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.1.tgz#110d7d8cf1c15db7432d8f0649f4317ba8de10dd"
+ integrity sha512-CPodZP9pqLdwnFZ77/mcSfuhyK1WMi/c+9VWpGXFQSGaABNKPP2UIdAChwUcBRdGkZRa/IhXx3CCr1ZMLpJsMQ==
dependencies:
- "@abp/datatables.net" "~4.4.2"
+ "@abp/datatables.net" "~5.0.0-beta.1"
datatables.net-bs4 "^1.10.21"
-"@abp/datatables.net@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.2.tgz#6bee6f6859ddf2d0a82b3c45b73ee8c987b7af43"
- integrity sha512-+s+/RHlBAizHVa4irJhXi8OiklXI000dZXyAvj4Vdm2EBZfmA8K4941pBwHlOTmIHvtkOTFtsdPYr4nquHgFyg==
+"@abp/datatables.net@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.1.tgz#8e784a011d33de154554f3239c448fcfd8adb713"
+ integrity sha512-mRMYqTCoYLmDLvL+CvmwUS4JqCqdkn6mxHd7zgkaR04xlGLEmNae5aGbs1wURJ86MOWrHbfkx66lQjkul3zbQw==
dependencies:
- "@abp/jquery" "~4.4.2"
+ "@abp/jquery" "~5.0.0-beta.1"
datatables.net "^1.10.21"
-"@abp/font-awesome@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.2.tgz#d35574f2bade6483f62c765294af47116221eb32"
- integrity sha512-eMn+CVrazi285Rafutf8RikpUxxRbsf3VIFwUebrAEp1nHq/hOSqmKQSxaGthdugNyt9ib/aCNrU+3wCqOMWqQ==
+"@abp/font-awesome@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.1.tgz#3ae721c447a009601226c381a20dc4adabe154e1"
+ integrity sha512-fsMqwApogZ1rAogStQxBX/Nh8akXPW/Alm8UayfK6TXIkPPjBz5RQSHfdlosG7M/U3mwUNGcLlaDvQXsE/nqow==
dependencies:
- "@abp/core" "~4.4.2"
+ "@abp/core" "~5.0.0-beta.1"
"@fortawesome/fontawesome-free" "^5.13.0"
-"@abp/highlight.js@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-4.4.2.tgz#c65b0c8e71b5aa9bb63580c8dd6f489e7fbc5a0e"
- integrity sha512-rbWhPeT17wMcBEsjwfFHSMztxsc5pxIrrqpa9pqjBF3fXbKBk6w2XyzZ/eGeaPNyPbz8cRgqvNhK3X0GsTuw8g==
+"@abp/highlight.js@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-5.0.0-beta.1.tgz#342512534f11160f5ccb273c31197fd440d8ce81"
+ integrity sha512-50eVFUwot4CpT/09H3zyHi3Qe7+d9Krg9hIf/OsE8PqvzNKZgwjaKGNOaNNoBvbdpS+LMpF4IcwCTZltsE+ZLA==
dependencies:
- "@abp/core" "~4.4.2"
+ "@abp/core" "~5.0.0-beta.1"
-"@abp/jquery-form@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.2.tgz#046399485d93813a9465e8d21cb7c1726be6d2fa"
- integrity sha512-5zn0M47MtVwbh/Z4y570XF9eBRDbfRIqF+cyTqcLaomOG6/98Hth8eBZXbCNUAReyvIHW+Zn1TCwYWePnjURhw==
+"@abp/jquery-form@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.1.tgz#d13f4cffce48125547b9da57cfc407f9a35a89e6"
+ integrity sha512-RYE90XIDxWkvxO5ukuZ2PHk6aA/o7NQKLcR9WsN1G2xTU/frrNPgtruGRTIj7Nx3BPUeMp7EAN2rYZwglcnO5g==
dependencies:
- "@abp/jquery" "~4.4.2"
+ "@abp/jquery" "~5.0.0-beta.1"
jquery-form "^4.3.0"
-"@abp/jquery-validation-unobtrusive@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.2.tgz#158d20f1f83af2045ecad96f0ce57f9d08872f89"
- integrity sha512-xCCsl1+1QMCi2yMLmtUR7XDMfQHQ8XkRGKNQy5Ja11rW0G4kqkAdP/lxCjJasjYO+XuxqW/pilpUU9tDGqfhCQ==
+"@abp/jquery-validation-unobtrusive@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.1.tgz#93ff6ee92bccdde77816bfb434e967fd142f6b83"
+ integrity sha512-LZE1KIALGBCINdWrHzoGczekUFtKwbXbLIgb4ZgiipO5Xja7py/iVvts10QWqUzhnBk+kmbHbj+KnjdqP4Z8pQ==
dependencies:
- "@abp/jquery-validation" "~4.4.2"
+ "@abp/jquery-validation" "~5.0.0-beta.1"
jquery-validation-unobtrusive "^3.2.11"
-"@abp/jquery-validation@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.2.tgz#c6438d3fab3e0353826cc51e1a93fb3c123e83b2"
- integrity sha512-apRk72FnAm1qRdcYUko3n4MOJEFnfMY8ArjsXIv3dXIJQyOyNWta4cK3LPvsDFCYhbdJuraKEgwTSZyrqZM3Xw==
+"@abp/jquery-validation@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.1.tgz#2964ca1266b087e4c4c0e768bfc4bfe0284e4ff5"
+ integrity sha512-ZDNdkPy2ZNu0EYDNH20Oh9R3bICCYv9CbEj4zZ8Qavixo9VTkybY3BW0nYjcu1yb1P92gZPp80W8vyfxSo//kw==
dependencies:
- "@abp/jquery" "~4.4.2"
+ "@abp/jquery" "~5.0.0-beta.1"
jquery-validation "^1.19.2"
-"@abp/jquery@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.2.tgz#925f228012af3fb443a5fd5a4bba65f232c2070f"
- integrity sha512-gUq1WoFRJytgVFU8fES64iVWz2HUnn2PonvLjTI40571ior+pHHZXvgCfsJ9YywUCc84A0+uhXRUKMc/Hvy+Bg==
+"@abp/jquery@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.1.tgz#360e7a164b6b4ce615a5ad91a1c78ef6893648f3"
+ integrity sha512-v2t+76L45tlbpGeVR39GurZl60Rj1pR/TdUidpP6zwnpx1Y3I+CvlJNDwTESeE/ixTOT3PyFbXoMEi6hI+v39A==
dependencies:
- "@abp/core" "~4.4.2"
+ "@abp/core" "~5.0.0-beta.1"
jquery "~3.6.0"
-"@abp/lodash@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.2.tgz#20e478d62e4a86821db3e8cccf1ca04846a0d0f2"
- integrity sha512-rbq+vRzH0zHaZ6vtkp8toBn6gcTGNwu7q2jLapsGHdIXEbtluP4cvkdLqynUkSrXMAdvbc8IiLKr/AC4aaQa1g==
+"@abp/lodash@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.1.tgz#618797bde42b17f91d7f99fdd5f24cb5e8a361b3"
+ integrity sha512-WsUjzHRZ6RkSMd5PTw0oWijDbbq/Wgonv8++ufUZi1WK5spZi9ohjcYM4io3Ms3fG+g4pWznaicYraMpV5tcsQ==
dependencies:
- "@abp/core" "~4.4.2"
+ "@abp/core" "~5.0.0-beta.1"
lodash "^4.17.15"
-"@abp/luxon@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.2.tgz#f250c0caba7230defd546821e5a59a1b9b87ca73"
- integrity sha512-3Z7AhVKdZDKSAs9Wld5WZoDcdQATxUOQqgm4ESij/hv4KkQltt/yybvjCbW2aEqujCAUPxf10Yd/6NG6dn8vbQ==
+"@abp/luxon@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.1.tgz#fc81fcbfb592d3baf7b9856b3cecf5b86df4bfdf"
+ integrity sha512-t4lhJ/wr1rAVH1/bnzmc8niZYvolTuXUB0h6A6UYaw205QyNtimzusYkTwkc+Z3xHFUrkLCoG7J2SVoCJuioaA==
dependencies:
- "@abp/core" "~4.4.2"
+ "@abp/core" "~5.0.0-beta.1"
luxon "^1.24.1"
-"@abp/malihu-custom-scrollbar-plugin@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.2.tgz#26575cdf4e3c8a126c271ea575d3a37277eb3ecd"
- integrity sha512-ax9gz9HM3ps1yLYrd0tfhfryRPMezu6vD+wO6Qy8nhTVCGagkTH2WsqA+1NsqmntbZvDpri4aBkfpqfJosIlAA==
+"@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.1.tgz#7af43d30af9b1f741fd9d9559d100aa4a5c52ae9"
+ integrity sha512-B195PC4/75W0EXjGEQUd/ZARb/eGWj8DX7hq3K+J+lUWzWu46dZy8s5bBij78HqxS91/q6nbxU35Z+E9xl6ICg==
dependencies:
- "@abp/core" "~4.4.2"
+ "@abp/core" "~5.0.0-beta.1"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/markdown-it@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-4.4.2.tgz#d39daa254561f99db290ce83b66061e7bece5441"
- integrity sha512-Ko0nfGrMMZQDnxwAfjlLkvjzyMJWYPwlFkkiihCM0uwd1d3oCiBxPRIZgQYcUqiHRNcOA0BoXNeS0TcLSvtblg==
+"@abp/markdown-it@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-5.0.0-beta.1.tgz#eed2f8af8008d5ac641860cbe4fb4c08b96796a3"
+ integrity sha512-n515ThJw9WdUyfYrLxGH4fh43VGeleCpd0Yg7GZyte3yclhiKmTGe2M1aAMnD7lZeoPKtJf3eHJPPtqaH0omIQ==
dependencies:
- "@abp/core" "~4.4.2"
+ "@abp/core" "~5.0.0-beta.1"
markdown-it "^11.0.0"
-"@abp/owl.carousel@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-4.4.2.tgz#ea7522108fcf9adaf0224b3755ca74c839730709"
- integrity sha512-aYe0gl4G7BhuUGJMyGMgB6j8MWyZaM8ZNpeoPiFN68CMZJMOcftqmEVwM1M3kDr8tPoI0hDz00nlJqyMsWjnDA==
+"@abp/owl.carousel@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-5.0.0-beta.1.tgz#a8f8f92e842a57a6881254e6350bd02f1bd6fb7a"
+ integrity sha512-q7dMmpypEvDvj4P9QMbgIiUmtj1/PAL3F2BWp/YyXDvOGNEdSD3usfdazHPWxhJ8bvINOntTmTjiE42/8LYbGw==
dependencies:
- "@abp/core" "~4.4.2"
+ "@abp/core" "~5.0.0-beta.1"
owl.carousel "^2.3.4"
-"@abp/prismjs@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-4.4.2.tgz#647d63c4c19561923935c4c8bc515e2751258005"
- integrity sha512-Sub/P0OVys3tVxMwyq4SeYpDmy4nFdVw/e+PmuIRQ8IDy9RgJicqV8xL9f/qmwcVHB4Afmh892+udeAiRAZ8GA==
+"@abp/prismjs@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-5.0.0-beta.1.tgz#a41883c46e2ce67b2b9dcbe1ce85de9b183cfd29"
+ integrity sha512-Ps3X6gckZYUnWcmBPnXCa1LIh8HnQYxDD0WPppbEsp1VFN49T3yNO4G5jFVRxomFi5km8AluJW2zYk3Kh/4OSw==
dependencies:
- "@abp/clipboard" "~4.4.2"
- "@abp/core" "~4.4.2"
+ "@abp/clipboard" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.1"
prismjs "^1.20.0"
-"@abp/select2@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.2.tgz#7cca21af49ce9663c8509d31420cdf65c528ce23"
- integrity sha512-X4ZStUV8SUrLjyvQ7LHUD2HC7NoUt5RjvPa8Kue0I/fxheC5H4ZIyryZJZNM7XEzyVOpa74sFTa6y/a7yzJpig==
+"@abp/select2@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.1.tgz#15988165fcfed2ebc2b8d097965e2dc1984af35e"
+ integrity sha512-SF+NkWDJNz1EeEimW5luaCMPTNN1oPzEWs47usPJo8m7HfijEvF3rymJ8jL5zWIOo05Tx3HUurLSVz0qu4vZsw==
dependencies:
- "@abp/core" "~4.4.2"
+ "@abp/core" "~5.0.0-beta.1"
select2 "^4.0.13"
-"@abp/sweetalert@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.2.tgz#f21411f4c5620e1e5ec772bf1e33b7f914a20dae"
- integrity sha512-pLMcBy0ZPx1vjnHD0Qmg+pXBDS1QkOhmZPz0lAHYBRGZY8zWxpCV59Cy7l87kif89VowR8NKEYH2ZXQZ+Klz6g==
+"@abp/sweetalert2@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.1.tgz#c6a1185f39d3207f67753e7c486eddcefc7fd0da"
+ integrity sha512-ADotpiMkIzHLy/ufK0q49V9hgF8oKE0rLRzVZV2dHBpmFR7YRcPdbb5AN9CiXDk6ol8nsocEEAwRmgD3eJG63w==
dependencies:
- "@abp/core" "~4.4.2"
- sweetalert "^2.1.2"
+ "@abp/core" "~5.0.0-beta.1"
+ sweetalert2 "^11.0.18"
-"@abp/timeago@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.2.tgz#bd644e27755a0846ced9098d53cd78b4af9c700e"
- integrity sha512-QSZ2Qv5CS4FGyzlk1Tud3amMK2T6QzBB/xdWYFCE2HhONxkbB+sXWaEX3ur+4wLxnYoPm1QU+jBGmnj2kk2kXA==
+"@abp/timeago@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.1.tgz#0f7bb8cd85b7e90d7d5c0a0940b9102e3f4f1e42"
+ integrity sha512-QwYZyeDRW+X8BGecBcK1SgsClVWNYfPgvct+WkQhTIRxzbP/c1c+1irj69sNdN3df2WLnmjfu3sBw2hzz5ykbg==
dependencies:
- "@abp/jquery" "~4.4.2"
+ "@abp/jquery" "~5.0.0-beta.1"
timeago "^1.6.7"
-"@abp/toastr@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.2.tgz#9afa476e5c64cfdd31ed1624be267a8dcbcef228"
- integrity sha512-NJTkWGG53nfLg9j+3YEk3v8i56DhxQZQheGCkEXXtqEByBQVZ+LYpzOSLIgzijOrPplGpJdo8eCt6S4xGTVlxw==
+"@abp/toastr@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.1.tgz#d420fc5db6b15f6d623d3928bb6913996511937f"
+ integrity sha512-82LfDrZQagtv4QLb643VTra4pxleOq5xYwhpOK1Ifop2K5CRgElxKfWvY2EtxdGkpCO2arvkOzjRNbxnecHB2w==
dependencies:
- "@abp/jquery" "~4.4.2"
+ "@abp/jquery" "~5.0.0-beta.1"
toastr "^2.1.4"
-"@abp/tui-editor@~4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-4.4.2.tgz#08ef187844eadf8933614675562cc9450a7d2415"
- integrity sha512-B3vXlk1wUCfvukE1saJZDT2nFjWLVg1hdJvZQjQ9wo0lRLojGFdLVKcxVv4xF57iem+W30AWOZskRqhW1NhEcw==
+"@abp/tui-editor@~5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-5.0.0-beta.1.tgz#be51a8adfe181e148b45c5fb9d2a4e2933e4e1ab"
+ integrity sha512-4ka2ABHdnuoub2sZtjaSQCJpK+ZCkXNiHsQEzKYLUVQdUW+w3fRNsYI+P7F+SJi9f1ZtYsOM0uwM3oWKqt1plA==
dependencies:
- "@abp/codemirror" "~4.4.2"
- "@abp/highlight.js" "~4.4.2"
- "@abp/jquery" "~4.4.2"
- "@abp/markdown-it" "~4.4.2"
+ "@abp/codemirror" "~5.0.0-beta.1"
+ "@abp/highlight.js" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/markdown-it" "~5.0.0-beta.1"
"@toast-ui/editor" "^2.5.1"
-"@abp/utils@^4.4.2":
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.2.tgz#33d1a8c1199241e0c926fb3fd2f439d2925d5db1"
- integrity sha512-o/1XGKSOPB+yQH6c+yyMNSr/r8rzb3PoHkxKqDNEGEf79L6EwJ8Wm+4wKaoHjVrYQtn+d/40PLEdvGEwQxVvCw==
+"@abp/utils@^5.0.0-beta.1":
+ version "5.0.0-beta.1"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.1.tgz#e1bf9240738276081c89a67073d9d85205fdf14c"
+ integrity sha512-suzKxHUautizxt5XdlJ8ONIaVMcAHrb2dp1kEnXnFRW1ip+7ZQ9/nxJj+GtY1MhHX2yPmlUQP2K8f2upJh9aoA==
dependencies:
just-compare "^1.3.0"
@@ -909,11 +909,6 @@ es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3:
es5-ext "^0.10.35"
es6-symbol "^3.1.1"
-es6-object-assign@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c"
- integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=
-
es6-symbol@^3.1.1, es6-symbol@~3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77"
@@ -2223,11 +2218,6 @@ process-nextick-args@^2.0.0, process-nextick-args@~2.0.0:
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==
-promise-polyfill@^6.0.2:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-6.1.0.tgz#dfa96943ea9c121fca4de9b5868cb39d3472e057"
- integrity sha1-36lpQ+qcEh/KTem1hoyznTRy4Fc=
-
pump@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
@@ -2653,13 +2643,10 @@ sver-compat@^1.5.0:
es6-iterator "^2.0.1"
es6-symbol "^3.1.1"
-sweetalert@^2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/sweetalert/-/sweetalert-2.1.2.tgz#010baaa80d0dbdc86f96bfcaa96b490728594b79"
- integrity sha512-iWx7X4anRBNDa/a+AdTmvAzQtkN1+s4j/JJRWlHpYE8Qimkohs8/XnFcWeYHH2lMA8LRCa5tj2d244If3S/hzA==
- dependencies:
- es6-object-assign "^1.1.0"
- promise-polyfill "^6.0.2"
+sweetalert2@^11.0.18:
+ version "11.1.7"
+ resolved "https://registry.yarnpkg.com/sweetalert2/-/sweetalert2-11.1.7.tgz#0ff2851eae77a76a3fe0ab289d3c32493e811b6d"
+ integrity sha512-7MHQVtKCTORfA9e58g9ZOfT3X58DkSBtvoCQJnqSHobXXb5C7aB8Yg/tAccTFnefCUBU41PoStjXMkzG3bNeig==
tar@^4:
version "4.4.10"
diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json
index 2458f90015..d8002eb4f4 100644
--- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json
+++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json
@@ -3,6 +3,6 @@
"name": "client-simulation-web",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "^4.4.2"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "^5.0.0-beta.1"
}
}
\ No newline at end of file
diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/sweetalert/sweetalert.min.js b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/sweetalert/sweetalert.min.js
deleted file mode 100644
index dc8f5e78ec..0000000000
--- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/sweetalert/sweetalert.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.swal=e():t.swal=e()}(this,function(){return function(t){function e(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var n={};return e.m=t,e.c=n,e.d=function(t,n,o){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:o})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=8)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o="swal-button";e.CLASS_NAMES={MODAL:"swal-modal",OVERLAY:"swal-overlay",SHOW_MODAL:"swal-overlay--show-modal",MODAL_TITLE:"swal-title",MODAL_TEXT:"swal-text",ICON:"swal-icon",ICON_CUSTOM:"swal-icon--custom",CONTENT:"swal-content",FOOTER:"swal-footer",BUTTON_CONTAINER:"swal-button-container",BUTTON:o,CONFIRM_BUTTON:o+"--confirm",CANCEL_BUTTON:o+"--cancel",DANGER_BUTTON:o+"--danger",BUTTON_LOADING:o+"--loading",BUTTON_LOADER:o+"__loader"},e.default=e.CLASS_NAMES},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getNode=function(t){var e="."+t;return document.querySelector(e)},e.stringToNode=function(t){var e=document.createElement("div");return e.innerHTML=t.trim(),e.firstChild},e.insertAfter=function(t,e){var n=e.nextSibling;e.parentNode.insertBefore(t,n)},e.removeNode=function(t){t.parentElement.removeChild(t)},e.throwErr=function(t){throw t=t.replace(/ +(?= )/g,""),"SweetAlert: "+(t=t.trim())},e.isPlainObject=function(t){if("[object Object]"!==Object.prototype.toString.call(t))return!1;var e=Object.getPrototypeOf(t);return null===e||e===Object.prototype},e.ordinalSuffixOf=function(t){var e=t%10,n=t%100;return 1===e&&11!==n?t+"st":2===e&&12!==n?t+"nd":3===e&&13!==n?t+"rd":t+"th"}},function(t,e,n){"use strict";function o(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,"__esModule",{value:!0}),o(n(25));var r=n(26);e.overlayMarkup=r.default,o(n(27)),o(n(28)),o(n(29));var i=n(0),a=i.default.MODAL_TITLE,s=i.default.MODAL_TEXT,c=i.default.ICON,l=i.default.FOOTER;e.iconMarkup='\n
',e.titleMarkup='\n
\n',e.textMarkup='\n
',e.footerMarkup='\n
\n'},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1);e.CONFIRM_KEY="confirm",e.CANCEL_KEY="cancel";var r={visible:!0,text:null,value:null,className:"",closeModal:!0},i=Object.assign({},r,{visible:!1,text:"Cancel",value:null}),a=Object.assign({},r,{text:"OK",value:!0});e.defaultButtonList={cancel:i,confirm:a};var s=function(t){switch(t){case e.CONFIRM_KEY:return a;case e.CANCEL_KEY:return i;default:var n=t.charAt(0).toUpperCase()+t.slice(1);return Object.assign({},r,{text:n,value:t})}},c=function(t,e){var n=s(t);return!0===e?Object.assign({},n,{visible:!0}):"string"==typeof e?Object.assign({},n,{visible:!0,text:e}):o.isPlainObject(e)?Object.assign({visible:!0},n,e):Object.assign({},n,{visible:!1})},l=function(t){for(var e={},n=0,o=Object.keys(t);n=0&&w.splice(e,1)}function s(t){var e=document.createElement("style");return t.attrs.type="text/css",l(e,t.attrs),i(t,e),e}function c(t){var e=document.createElement("link");return t.attrs.type="text/css",t.attrs.rel="stylesheet",l(e,t.attrs),i(t,e),e}function l(t,e){Object.keys(e).forEach(function(n){t.setAttribute(n,e[n])})}function u(t,e){var n,o,r,i;if(e.transform&&t.css){if(!(i=e.transform(t.css)))return function(){};t.css=i}if(e.singleton){var l=h++;n=g||(g=s(e)),o=f.bind(null,n,l,!1),r=f.bind(null,n,l,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=c(e),o=p.bind(null,n,e),r=function(){a(n),n.href&&URL.revokeObjectURL(n.href)}):(n=s(e),o=d.bind(null,n),r=function(){a(n)});return o(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;o(t=e)}else r()}}function f(t,e,n,o){var r=n?"":o.css;if(t.styleSheet)t.styleSheet.cssText=x(e,r);else{var i=document.createTextNode(r),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(i,a[e]):t.appendChild(i)}}function d(t,e){var n=e.css,o=e.media;if(o&&t.setAttribute("media",o),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}function p(t,e,n){var o=n.css,r=n.sourceMap,i=void 0===e.convertToAbsoluteUrls&&r;(e.convertToAbsoluteUrls||i)&&(o=y(o)),r&&(o+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */");var a=new Blob([o],{type:"text/css"}),s=t.href;t.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}var m={},b=function(t){var e;return function(){return void 0===e&&(e=t.apply(this,arguments)),e}}(function(){return window&&document&&document.all&&!window.atob}),v=function(t){var e={};return function(n){return void 0===e[n]&&(e[n]=t.call(this,n)),e[n]}}(function(t){return document.querySelector(t)}),g=null,h=0,w=[],y=n(15);t.exports=function(t,e){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");e=e||{},e.attrs="object"==typeof e.attrs?e.attrs:{},e.singleton||(e.singleton=b()),e.insertInto||(e.insertInto="head"),e.insertAt||(e.insertAt="bottom");var n=r(t,e);return o(n,e),function(t){for(var i=[],a=0;athis.length)&&-1!==this.indexOf(t,e)}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(t,e){if(null==this)throw new TypeError('"this" is null or not defined');var n=Object(this),o=n.length>>>0;if(0===o)return!1;for(var r=0|e,i=Math.max(r>=0?r:o-Math.abs(r),0);i=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(19),e.setImmediate=setImmediate,e.clearImmediate=clearImmediate},function(t,e,n){(function(t,e){!function(t,n){"use strict";function o(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n1)for(var n=1;n',e.default=e.modalMarkup},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.OVERLAY,i='\n
';e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.ICON;e.errorIconMarkup=function(){var t=r+"--error",e=t+"__line";return'\n \n \n \n
\n '},e.warningIconMarkup=function(){var t=r+"--warning";return'\n \n \n \n '},e.successIconMarkup=function(){var t=r+"--success";return'\n \n \n\n
\n
\n '}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.CONTENT;e.contentMarkup='\n \n\n
\n'},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),r=o.default.BUTTON_CONTAINER,i=o.default.BUTTON,a=o.default.BUTTON_LOADER;e.buttonMarkup='\n \n'},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(4),r=n(2),i=n(0),a=i.default.ICON,s=i.default.ICON_CUSTOM,c=["error","warning","success","info"],l={error:r.errorIconMarkup(),warning:r.warningIconMarkup(),success:r.successIconMarkup()},u=function(t,e){var n=a+"--"+t;e.classList.add(n);var o=l[t];o&&(e.innerHTML=o)},f=function(t,e){e.classList.add(s);var n=document.createElement("img");n.src=t,e.appendChild(n)},d=function(t){if(t){var e=o.injectElIntoModal(r.iconMarkup);c.includes(t)?u(t,e):f(t,e)}};e.default=d},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(2),r=n(4),i=function(t){navigator.userAgent.includes("AppleWebKit")&&(t.style.display="none",t.offsetHeight,t.style.display="")};e.initTitle=function(t){if(t){var e=r.injectElIntoModal(o.titleMarkup);e.textContent=t,i(e)}},e.initText=function(t){if(t){var e=document.createDocumentFragment();t.split("\n").forEach(function(t,n,o){e.appendChild(document.createTextNode(t)),n0}).forEach(function(t){b.classList.add(t)})}n&&t===c.CONFIRM_KEY&&b.classList.add(s),b.textContent=r;var g={};return g[t]=i,f.setActionValue(g),f.setActionOptionsFor(t,{closeModal:p}),b.addEventListener("click",function(){return u.onAction(t)}),m},p=function(t,e){var n=r.injectElIntoModal(l.footerMarkup);for(var o in t){var i=t[o],a=d(o,i,e);i.visible&&n.appendChild(a)}0===n.children.length&&n.remove()};e.default=p},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(3),r=n(4),i=n(2),a=n(5),s=n(6),c=n(0),l=c.default.CONTENT,u=function(t){t.addEventListener("input",function(t){var e=t.target,n=e.value;a.setActionValue(n)}),t.addEventListener("keyup",function(t){if("Enter"===t.key)return s.onAction(o.CONFIRM_KEY)}),setTimeout(function(){t.focus(),a.setActionValue("")},0)},f=function(t,e,n){var o=document.createElement(e),r=l+"__"+e;o.classList.add(r);for(var i in n){var a=n[i];o[i]=a}"input"===e&&u(o),t.appendChild(o)},d=function(t){if(t){var e=r.injectElIntoModal(i.contentMarkup),n=t.element,o=t.attributes;"string"==typeof n?f(e,n,o):e.appendChild(n)}};e.default=d},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=n(2),i=function(){var t=o.stringToNode(r.overlayMarkup);document.body.appendChild(t)};e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(5),r=n(6),i=n(1),a=n(3),s=n(0),c=s.default.MODAL,l=s.default.BUTTON,u=s.default.OVERLAY,f=function(t){t.preventDefault(),v()},d=function(t){t.preventDefault(),g()},p=function(t){if(o.default.isOpen)switch(t.key){case"Escape":return r.onAction(a.CANCEL_KEY)}},m=function(t){if(o.default.isOpen)switch(t.key){case"Tab":return f(t)}},b=function(t){if(o.default.isOpen)return"Tab"===t.key&&t.shiftKey?d(t):void 0},v=function(){var t=i.getNode(l);t&&(t.tabIndex=0,t.focus())},g=function(){var t=i.getNode(c),e=t.querySelectorAll("."+l),n=e.length-1,o=e[n];o&&o.focus()},h=function(t){t[t.length-1].addEventListener("keydown",m)},w=function(t){t[0].addEventListener("keydown",b)},y=function(){var t=i.getNode(c),e=t.querySelectorAll("."+l);e.length&&(h(e),w(e))},x=function(t){if(i.getNode(u)===t.target)return r.onAction(a.CANCEL_KEY)},_=function(t){var e=i.getNode(u);e.removeEventListener("click",x),t&&e.addEventListener("click",x)},k=function(t){o.default.timer&&clearTimeout(o.default.timer),t&&(o.default.timer=window.setTimeout(function(){return r.onAction(a.CANCEL_KEY)},t))},O=function(t){t.closeOnEsc?document.addEventListener("keyup",p):document.removeEventListener("keyup",p),t.dangerMode?v():g(),y(),_(t.closeOnClickOutside),k(t.timer)};e.default=O},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o=n(1),r=n(3),i=n(37),a=n(38),s={title:null,text:null,icon:null,buttons:r.defaultButtonList,content:null,className:null,closeOnClickOutside:!0,closeOnEsc:!0,dangerMode:!1,timer:null},c=Object.assign({},s);e.setDefaults=function(t){c=Object.assign({},s,t)};var l=function(t){var e=t&&t.button,n=t&&t.buttons;return void 0!==e&&void 0!==n&&o.throwErr("Cannot set both 'button' and 'buttons' options!"),void 0!==e?{confirm:e}:n},u=function(t){return o.ordinalSuffixOf(t+1)},f=function(t,e){o.throwErr(u(e)+" argument ('"+t+"') is invalid")},d=function(t,e){var n=t+1,r=e[n];o.isPlainObject(r)||void 0===r||o.throwErr("Expected "+u(n)+" argument ('"+r+"') to be a plain object")},p=function(t,e){var n=t+1,r=e[n];void 0!==r&&o.throwErr("Unexpected "+u(n)+" argument ("+r+")")},m=function(t,e,n,r){var i=typeof e,a="string"===i,s=e instanceof Element;if(a){if(0===n)return{text:e};if(1===n)return{text:e,title:r[0]};if(2===n)return d(n,r),{icon:e};f(e,n)}else{if(s&&0===n)return d(n,r),{content:e};if(o.isPlainObject(e))return p(n,r),e;f(e,n)}};e.getOpts=function(){for(var t=[],e=0;e {
+ const result = [];
+
+ for (let i = 0; i < arr.length; i++) {
+ if (result.indexOf(arr[i]) === -1) {
+ result.push(arr[i]);
+ }
+ }
+
+ return result;
+ };
+ /**
+ * Capitalize the first letter of a string
+ * @param str
+ */
+
+ const capitalizeFirstLetter = str => str.charAt(0).toUpperCase() + str.slice(1);
+ /**
+ * Convert NodeList to Array
+ * @param nodeList
+ */
+
+ const toArray = nodeList => Array.prototype.slice.call(nodeList);
+ /**
+ * Standardise console warnings
+ * @param message
+ */
+
+ const warn = message => {
+ console.warn("".concat(consolePrefix, " ").concat(typeof message === 'object' ? message.join(' ') : message));
+ };
+ /**
+ * Standardise console errors
+ * @param message
+ */
+
+ const error = message => {
+ console.error("".concat(consolePrefix, " ").concat(message));
+ };
+ /**
+ * Private global state for `warnOnce`
+ * @type {Array}
+ * @private
+ */
+
+ const previousWarnOnceMessages = [];
+ /**
+ * Show a console warning, but only if it hasn't already been shown
+ * @param message
+ */
+
+ const warnOnce = message => {
+ if (!previousWarnOnceMessages.includes(message)) {
+ previousWarnOnceMessages.push(message);
+ warn(message);
+ }
+ };
+ /**
+ * Show a one-time console warning about deprecated params/methods
+ */
+
+ const warnAboutDeprecation = (deprecatedParam, useInstead) => {
+ warnOnce("\"".concat(deprecatedParam, "\" is deprecated and will be removed in the next major release. Please use \"").concat(useInstead, "\" instead."));
+ };
+ /**
+ * If `arg` is a function, call it (with no arguments or context) and return the result.
+ * Otherwise, just pass the value through
+ * @param arg
+ */
+
+ const callIfFunction = arg => typeof arg === 'function' ? arg() : arg;
+ const hasToPromiseFn = arg => arg && typeof arg.toPromise === 'function';
+ const asPromise = arg => hasToPromiseFn(arg) ? arg.toPromise() : Promise.resolve(arg);
+ const isPromise = arg => arg && Promise.resolve(arg) === arg;
+
+ const isJqueryElement = elem => typeof elem === 'object' && elem.jquery;
+
+ const isElement = elem => elem instanceof Element || isJqueryElement(elem);
+
+ const argsToParams = args => {
+ const params = {};
+
+ if (typeof args[0] === 'object' && !isElement(args[0])) {
+ Object.assign(params, args[0]);
+ } else {
+ ['title', 'html', 'icon'].forEach((name, index) => {
+ const arg = args[index];
+
+ if (typeof arg === 'string' || isElement(arg)) {
+ params[name] = arg;
+ } else if (arg !== undefined) {
+ error("Unexpected type of ".concat(name, "! Expected \"string\" or \"Element\", got ").concat(typeof arg));
+ }
+ });
+ }
+
+ return params;
+ };
+
+ const swalPrefix = 'swal2-';
+ const prefix = items => {
+ const result = {};
+
+ for (const i in items) {
+ result[items[i]] = swalPrefix + items[i];
+ }
+
+ return result;
+ };
+ const swalClasses = prefix(['container', 'shown', 'height-auto', 'iosfix', 'popup', 'modal', 'no-backdrop', 'no-transition', 'toast', 'toast-shown', 'show', 'hide', 'close', 'title', 'html-container', 'actions', 'confirm', 'deny', 'cancel', 'default-outline', 'footer', 'icon', 'icon-content', 'image', 'input', 'file', 'range', 'select', 'radio', 'checkbox', 'label', 'textarea', 'inputerror', 'input-label', 'validation-message', 'progress-steps', 'active-progress-step', 'progress-step', 'progress-step-line', 'loader', 'loading', 'styled', 'top', 'top-start', 'top-end', 'top-left', 'top-right', 'center', 'center-start', 'center-end', 'center-left', 'center-right', 'bottom', 'bottom-start', 'bottom-end', 'bottom-left', 'bottom-right', 'grow-row', 'grow-column', 'grow-fullscreen', 'rtl', 'timer-progress-bar', 'timer-progress-bar-container', 'scrollbar-measure', 'icon-success', 'icon-warning', 'icon-info', 'icon-question', 'icon-error']);
+ const iconTypes = prefix(['success', 'warning', 'info', 'question', 'error']);
+
+ const getContainer = () => document.body.querySelector(".".concat(swalClasses.container));
+ const elementBySelector = selectorString => {
+ const container = getContainer();
+ return container ? container.querySelector(selectorString) : null;
+ };
+
+ const elementByClass = className => {
+ return elementBySelector(".".concat(className));
+ };
+
+ const getPopup = () => elementByClass(swalClasses.popup);
+ const getIcon = () => elementByClass(swalClasses.icon);
+ const getTitle = () => elementByClass(swalClasses.title);
+ const getHtmlContainer = () => elementByClass(swalClasses['html-container']);
+ const getImage = () => elementByClass(swalClasses.image);
+ const getProgressSteps = () => elementByClass(swalClasses['progress-steps']);
+ const getValidationMessage = () => elementByClass(swalClasses['validation-message']);
+ const getConfirmButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.confirm));
+ const getDenyButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.deny));
+ const getInputLabel = () => elementByClass(swalClasses['input-label']);
+ const getLoader = () => elementBySelector(".".concat(swalClasses.loader));
+ const getCancelButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.cancel));
+ const getActions = () => elementByClass(swalClasses.actions);
+ const getFooter = () => elementByClass(swalClasses.footer);
+ const getTimerProgressBar = () => elementByClass(swalClasses['timer-progress-bar']);
+ const getCloseButton = () => elementByClass(swalClasses.close); // https://github.com/jkup/focusable/blob/master/index.js
+
+ const focusable = "\n a[href],\n area[href],\n input:not([disabled]),\n select:not([disabled]),\n textarea:not([disabled]),\n button:not([disabled]),\n iframe,\n object,\n embed,\n [tabindex=\"0\"],\n [contenteditable],\n audio[controls],\n video[controls],\n summary\n";
+ const getFocusableElements = () => {
+ const focusableElementsWithTabindex = toArray(getPopup().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')) // sort according to tabindex
+ .sort((a, b) => {
+ a = parseInt(a.getAttribute('tabindex'));
+ b = parseInt(b.getAttribute('tabindex'));
+
+ if (a > b) {
+ return 1;
+ } else if (a < b) {
+ return -1;
+ }
+
+ return 0;
+ });
+ const otherFocusableElements = toArray(getPopup().querySelectorAll(focusable)).filter(el => el.getAttribute('tabindex') !== '-1');
+ return uniqueArray(focusableElementsWithTabindex.concat(otherFocusableElements)).filter(el => isVisible(el));
+ };
+ const isModal = () => {
+ return !isToast() && !document.body.classList.contains(swalClasses['no-backdrop']);
+ };
+ const isToast = () => {
+ return document.body.classList.contains(swalClasses['toast-shown']);
+ };
+ const isLoading = () => {
+ return getPopup().hasAttribute('data-loading');
+ };
+
+ const states = {
+ previousBodyPadding: null
+ };
+ const setInnerHtml = (elem, html) => {
+ // #1926
+ elem.textContent = '';
+
+ if (html) {
+ const parser = new DOMParser();
+ const parsed = parser.parseFromString(html, "text/html");
+ toArray(parsed.querySelector('head').childNodes).forEach(child => {
+ elem.appendChild(child);
+ });
+ toArray(parsed.querySelector('body').childNodes).forEach(child => {
+ elem.appendChild(child);
+ });
+ }
+ };
+ const hasClass = (elem, className) => {
+ if (!className) {
+ return false;
+ }
+
+ const classList = className.split(/\s+/);
+
+ for (let i = 0; i < classList.length; i++) {
+ if (!elem.classList.contains(classList[i])) {
+ return false;
+ }
+ }
+
+ return true;
+ };
+
+ const removeCustomClasses = (elem, params) => {
+ toArray(elem.classList).forEach(className => {
+ if (!Object.values(swalClasses).includes(className) && !Object.values(iconTypes).includes(className) && !Object.values(params.showClass).includes(className)) {
+ elem.classList.remove(className);
+ }
+ });
+ };
+
+ const applyCustomClass = (elem, params, className) => {
+ removeCustomClasses(elem, params);
+
+ if (params.customClass && params.customClass[className]) {
+ if (typeof params.customClass[className] !== 'string' && !params.customClass[className].forEach) {
+ return warn("Invalid type of customClass.".concat(className, "! Expected string or iterable object, got \"").concat(typeof params.customClass[className], "\""));
+ }
+
+ addClass(elem, params.customClass[className]);
+ }
+ };
+ const getInput = (popup, inputType) => {
+ if (!inputType) {
+ return null;
+ }
+
+ switch (inputType) {
+ case 'select':
+ case 'textarea':
+ case 'file':
+ return getChildByClass(popup, swalClasses[inputType]);
+
+ case 'checkbox':
+ return popup.querySelector(".".concat(swalClasses.checkbox, " input"));
+
+ case 'radio':
+ return popup.querySelector(".".concat(swalClasses.radio, " input:checked")) || popup.querySelector(".".concat(swalClasses.radio, " input:first-child"));
+
+ case 'range':
+ return popup.querySelector(".".concat(swalClasses.range, " input"));
+
+ default:
+ return getChildByClass(popup, swalClasses.input);
+ }
+ };
+ const focusInput = input => {
+ input.focus(); // place cursor at end of text in text input
+
+ if (input.type !== 'file') {
+ // http://stackoverflow.com/a/2345915
+ const val = input.value;
+ input.value = '';
+ input.value = val;
+ }
+ };
+ const toggleClass = (target, classList, condition) => {
+ if (!target || !classList) {
+ return;
+ }
+
+ if (typeof classList === 'string') {
+ classList = classList.split(/\s+/).filter(Boolean);
+ }
+
+ classList.forEach(className => {
+ if (target.forEach) {
+ target.forEach(elem => {
+ condition ? elem.classList.add(className) : elem.classList.remove(className);
+ });
+ } else {
+ condition ? target.classList.add(className) : target.classList.remove(className);
+ }
+ });
+ };
+ const addClass = (target, classList) => {
+ toggleClass(target, classList, true);
+ };
+ const removeClass = (target, classList) => {
+ toggleClass(target, classList, false);
+ };
+ const getChildByClass = (elem, className) => {
+ for (let i = 0; i < elem.childNodes.length; i++) {
+ if (hasClass(elem.childNodes[i], className)) {
+ return elem.childNodes[i];
+ }
+ }
+ };
+ const applyNumericalStyle = (elem, property, value) => {
+ if (value === "".concat(parseInt(value))) {
+ value = parseInt(value);
+ }
+
+ if (value || parseInt(value) === 0) {
+ elem.style[property] = typeof value === 'number' ? "".concat(value, "px") : value;
+ } else {
+ elem.style.removeProperty(property);
+ }
+ };
+ const show = (elem, display = 'flex') => {
+ elem.style.display = display;
+ };
+ const hide = elem => {
+ elem.style.display = 'none';
+ };
+ const setStyle = (parent, selector, property, value) => {
+ const el = parent.querySelector(selector);
+
+ if (el) {
+ el.style[property] = value;
+ }
+ };
+ const toggle = (elem, condition, display) => {
+ condition ? show(elem, display) : hide(elem);
+ }; // borrowed from jquery $(elem).is(':visible') implementation
+
+ const isVisible = elem => !!(elem && (elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length));
+ const allButtonsAreHidden = () => !isVisible(getConfirmButton()) && !isVisible(getDenyButton()) && !isVisible(getCancelButton());
+ const isScrollable = elem => !!(elem.scrollHeight > elem.clientHeight); // borrowed from https://stackoverflow.com/a/46352119
+
+ const hasCssAnimation = elem => {
+ const style = window.getComputedStyle(elem);
+ const animDuration = parseFloat(style.getPropertyValue('animation-duration') || '0');
+ const transDuration = parseFloat(style.getPropertyValue('transition-duration') || '0');
+ return animDuration > 0 || transDuration > 0;
+ };
+ const animateTimerProgressBar = (timer, reset = false) => {
+ const timerProgressBar = getTimerProgressBar();
+
+ if (isVisible(timerProgressBar)) {
+ if (reset) {
+ timerProgressBar.style.transition = 'none';
+ timerProgressBar.style.width = '100%';
+ }
+
+ setTimeout(() => {
+ timerProgressBar.style.transition = "width ".concat(timer / 1000, "s linear");
+ timerProgressBar.style.width = '0%';
+ }, 10);
+ }
+ };
+ const stopTimerProgressBar = () => {
+ const timerProgressBar = getTimerProgressBar();
+ const timerProgressBarWidth = parseInt(window.getComputedStyle(timerProgressBar).width);
+ timerProgressBar.style.removeProperty('transition');
+ timerProgressBar.style.width = '100%';
+ const timerProgressBarFullWidth = parseInt(window.getComputedStyle(timerProgressBar).width);
+ const timerProgressBarPercent = parseInt(timerProgressBarWidth / timerProgressBarFullWidth * 100);
+ timerProgressBar.style.removeProperty('transition');
+ timerProgressBar.style.width = "".concat(timerProgressBarPercent, "%");
+ };
+
+ // Detect Node env
+ const isNodeEnv = () => typeof window === 'undefined' || typeof document === 'undefined';
+
+ const sweetHTML = "\n \n").replace(/(^|\n)\s*/g, '');
+
+ const resetOldContainer = () => {
+ const oldContainer = getContainer();
+
+ if (!oldContainer) {
+ return false;
+ }
+
+ oldContainer.remove();
+ removeClass([document.documentElement, document.body], [swalClasses['no-backdrop'], swalClasses['toast-shown'], swalClasses['has-column']]);
+ return true;
+ };
+
+ const resetValidationMessage = () => {
+ if (Swal.isVisible()) {
+ Swal.resetValidationMessage();
+ }
+ };
+
+ const addInputChangeListeners = () => {
+ const popup = getPopup();
+ const input = getChildByClass(popup, swalClasses.input);
+ const file = getChildByClass(popup, swalClasses.file);
+ const range = popup.querySelector(".".concat(swalClasses.range, " input"));
+ const rangeOutput = popup.querySelector(".".concat(swalClasses.range, " output"));
+ const select = getChildByClass(popup, swalClasses.select);
+ const checkbox = popup.querySelector(".".concat(swalClasses.checkbox, " input"));
+ const textarea = getChildByClass(popup, swalClasses.textarea);
+ input.oninput = resetValidationMessage;
+ file.onchange = resetValidationMessage;
+ select.onchange = resetValidationMessage;
+ checkbox.onchange = resetValidationMessage;
+ textarea.oninput = resetValidationMessage;
+
+ range.oninput = () => {
+ resetValidationMessage();
+ rangeOutput.value = range.value;
+ };
+
+ range.onchange = () => {
+ resetValidationMessage();
+ range.nextSibling.value = range.value;
+ };
+ };
+
+ const getTarget = target => typeof target === 'string' ? document.querySelector(target) : target;
+
+ const setupAccessibility = params => {
+ const popup = getPopup();
+ popup.setAttribute('role', params.toast ? 'alert' : 'dialog');
+ popup.setAttribute('aria-live', params.toast ? 'polite' : 'assertive');
+
+ if (!params.toast) {
+ popup.setAttribute('aria-modal', 'true');
+ }
+ };
+
+ const setupRTL = targetElement => {
+ if (window.getComputedStyle(targetElement).direction === 'rtl') {
+ addClass(getContainer(), swalClasses.rtl);
+ }
+ };
+ /*
+ * Add modal + backdrop to DOM
+ */
+
+
+ const init = params => {
+ // Clean up the old popup container if it exists
+ const oldContainerExisted = resetOldContainer();
+ /* istanbul ignore if */
+
+ if (isNodeEnv()) {
+ error('SweetAlert2 requires document to initialize');
+ return;
+ }
+
+ const container = document.createElement('div');
+ container.className = swalClasses.container;
+
+ if (oldContainerExisted) {
+ addClass(container, swalClasses['no-transition']);
+ }
+
+ setInnerHtml(container, sweetHTML);
+ const targetElement = getTarget(params.target);
+ targetElement.appendChild(container);
+ setupAccessibility(params);
+ setupRTL(targetElement);
+ addInputChangeListeners();
+ };
+
+ const parseHtmlToContainer = (param, target) => {
+ // DOM element
+ if (param instanceof HTMLElement) {
+ target.appendChild(param); // Object
+ } else if (typeof param === 'object') {
+ handleObject(param, target); // Plain string
+ } else if (param) {
+ setInnerHtml(target, param);
+ }
+ };
+
+ const handleObject = (param, target) => {
+ // JQuery element(s)
+ if (param.jquery) {
+ handleJqueryElem(target, param); // For other objects use their string representation
+ } else {
+ setInnerHtml(target, param.toString());
+ }
+ };
+
+ const handleJqueryElem = (target, elem) => {
+ target.textContent = '';
+
+ if (0 in elem) {
+ for (let i = 0; (i in elem); i++) {
+ target.appendChild(elem[i].cloneNode(true));
+ }
+ } else {
+ target.appendChild(elem.cloneNode(true));
+ }
+ };
+
+ const animationEndEvent = (() => {
+ // Prevent run in Node env
+
+ /* istanbul ignore if */
+ if (isNodeEnv()) {
+ return false;
+ }
+
+ const testEl = document.createElement('div');
+ const transEndEventNames = {
+ WebkitAnimation: 'webkitAnimationEnd',
+ OAnimation: 'oAnimationEnd oanimationend',
+ animation: 'animationend'
+ };
+
+ for (const i in transEndEventNames) {
+ if (Object.prototype.hasOwnProperty.call(transEndEventNames, i) && typeof testEl.style[i] !== 'undefined') {
+ return transEndEventNames[i];
+ }
+ }
+
+ return false;
+ })();
+
+ // https://github.com/twbs/bootstrap/blob/master/js/src/modal.js
+
+ const measureScrollbar = () => {
+ const scrollDiv = document.createElement('div');
+ scrollDiv.className = swalClasses['scrollbar-measure'];
+ document.body.appendChild(scrollDiv);
+ const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
+ document.body.removeChild(scrollDiv);
+ return scrollbarWidth;
+ };
+
+ const renderActions = (instance, params) => {
+ const actions = getActions();
+ const loader = getLoader();
+ const confirmButton = getConfirmButton();
+ const denyButton = getDenyButton();
+ const cancelButton = getCancelButton(); // Actions (buttons) wrapper
+
+ if (!params.showConfirmButton && !params.showDenyButton && !params.showCancelButton) {
+ hide(actions);
+ } else {
+ show(actions);
+ } // Custom class
+
+
+ applyCustomClass(actions, params, 'actions'); // Render buttons
+
+ renderButton(confirmButton, 'confirm', params);
+ renderButton(denyButton, 'deny', params);
+ renderButton(cancelButton, 'cancel', params);
+ handleButtonsStyling(confirmButton, denyButton, cancelButton, params);
+
+ if (params.reverseButtons) {
+ actions.insertBefore(cancelButton, loader);
+ actions.insertBefore(denyButton, loader);
+ actions.insertBefore(confirmButton, loader);
+ } // Loader
+
+
+ setInnerHtml(loader, params.loaderHtml);
+ applyCustomClass(loader, params, 'loader');
+ };
+
+ function handleButtonsStyling(confirmButton, denyButton, cancelButton, params) {
+ if (!params.buttonsStyling) {
+ return removeClass([confirmButton, denyButton, cancelButton], swalClasses.styled);
+ }
+
+ addClass([confirmButton, denyButton, cancelButton], swalClasses.styled); // Buttons background colors
+
+ if (params.confirmButtonColor) {
+ confirmButton.style.backgroundColor = params.confirmButtonColor;
+ addClass(confirmButton, swalClasses['default-outline']);
+ }
+
+ if (params.denyButtonColor) {
+ denyButton.style.backgroundColor = params.denyButtonColor;
+ addClass(denyButton, swalClasses['default-outline']);
+ }
+
+ if (params.cancelButtonColor) {
+ cancelButton.style.backgroundColor = params.cancelButtonColor;
+ addClass(cancelButton, swalClasses['default-outline']);
+ }
+ }
+
+ function renderButton(button, buttonType, params) {
+ toggle(button, params["show".concat(capitalizeFirstLetter(buttonType), "Button")], 'inline-block');
+ setInnerHtml(button, params["".concat(buttonType, "ButtonText")]); // Set caption text
+
+ button.setAttribute('aria-label', params["".concat(buttonType, "ButtonAriaLabel")]); // ARIA label
+ // Add buttons custom classes
+
+ button.className = swalClasses[buttonType];
+ applyCustomClass(button, params, "".concat(buttonType, "Button"));
+ addClass(button, params["".concat(buttonType, "ButtonClass")]);
+ }
+
+ function handleBackdropParam(container, backdrop) {
+ if (typeof backdrop === 'string') {
+ container.style.background = backdrop;
+ } else if (!backdrop) {
+ addClass([document.documentElement, document.body], swalClasses['no-backdrop']);
+ }
+ }
+
+ function handlePositionParam(container, position) {
+ if (position in swalClasses) {
+ addClass(container, swalClasses[position]);
+ } else {
+ warn('The "position" parameter is not valid, defaulting to "center"');
+ addClass(container, swalClasses.center);
+ }
+ }
+
+ function handleGrowParam(container, grow) {
+ if (grow && typeof grow === 'string') {
+ const growClass = "grow-".concat(grow);
+
+ if (growClass in swalClasses) {
+ addClass(container, swalClasses[growClass]);
+ }
+ }
+ }
+
+ const renderContainer = (instance, params) => {
+ const container = getContainer();
+
+ if (!container) {
+ return;
+ }
+
+ handleBackdropParam(container, params.backdrop);
+ handlePositionParam(container, params.position);
+ handleGrowParam(container, params.grow); // Custom class
+
+ applyCustomClass(container, params, 'container');
+ };
+
+ /**
+ * This module containts `WeakMap`s for each effectively-"private property" that a `Swal` has.
+ * For example, to set the private property "foo" of `this` to "bar", you can `privateProps.foo.set(this, 'bar')`
+ * This is the approach that Babel will probably take to implement private methods/fields
+ * https://github.com/tc39/proposal-private-methods
+ * https://github.com/babel/babel/pull/7555
+ * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module*
+ * then we can use that language feature.
+ */
+ var privateProps = {
+ promise: new WeakMap(),
+ innerParams: new WeakMap(),
+ domCache: new WeakMap()
+ };
+
+ const inputTypes = ['input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea'];
+ const renderInput = (instance, params) => {
+ const popup = getPopup();
+ const innerParams = privateProps.innerParams.get(instance);
+ const rerender = !innerParams || params.input !== innerParams.input;
+ inputTypes.forEach(inputType => {
+ const inputClass = swalClasses[inputType];
+ const inputContainer = getChildByClass(popup, inputClass); // set attributes
+
+ setAttributes(inputType, params.inputAttributes); // set class
+
+ inputContainer.className = inputClass;
+
+ if (rerender) {
+ hide(inputContainer);
+ }
+ });
+
+ if (params.input) {
+ if (rerender) {
+ showInput(params);
+ } // set custom class
+
+
+ setCustomClass(params);
+ }
+ };
+
+ const showInput = params => {
+ if (!renderInputType[params.input]) {
+ return error("Unexpected type of input! Expected \"text\", \"email\", \"password\", \"number\", \"tel\", \"select\", \"radio\", \"checkbox\", \"textarea\", \"file\" or \"url\", got \"".concat(params.input, "\""));
+ }
+
+ const inputContainer = getInputContainer(params.input);
+ const input = renderInputType[params.input](inputContainer, params);
+ show(input); // input autofocus
+
+ setTimeout(() => {
+ focusInput(input);
+ });
+ };
+
+ const removeAttributes = input => {
+ for (let i = 0; i < input.attributes.length; i++) {
+ const attrName = input.attributes[i].name;
+
+ if (!['type', 'value', 'style'].includes(attrName)) {
+ input.removeAttribute(attrName);
+ }
+ }
+ };
+
+ const setAttributes = (inputType, inputAttributes) => {
+ const input = getInput(getPopup(), inputType);
+
+ if (!input) {
+ return;
+ }
+
+ removeAttributes(input);
+
+ for (const attr in inputAttributes) {
+ input.setAttribute(attr, inputAttributes[attr]);
+ }
+ };
+
+ const setCustomClass = params => {
+ const inputContainer = getInputContainer(params.input);
+
+ if (params.customClass) {
+ addClass(inputContainer, params.customClass.input);
+ }
+ };
+
+ const setInputPlaceholder = (input, params) => {
+ if (!input.placeholder || params.inputPlaceholder) {
+ input.placeholder = params.inputPlaceholder;
+ }
+ };
+
+ const setInputLabel = (input, prependTo, params) => {
+ if (params.inputLabel) {
+ input.id = swalClasses.input;
+ const label = document.createElement('label');
+ const labelClass = swalClasses['input-label'];
+ label.setAttribute('for', input.id);
+ label.className = labelClass;
+ addClass(label, params.customClass.inputLabel);
+ label.innerText = params.inputLabel;
+ prependTo.insertAdjacentElement('beforebegin', label);
+ }
+ };
+
+ const getInputContainer = inputType => {
+ const inputClass = swalClasses[inputType] ? swalClasses[inputType] : swalClasses.input;
+ return getChildByClass(getPopup(), inputClass);
+ };
+
+ const renderInputType = {};
+
+ renderInputType.text = renderInputType.email = renderInputType.password = renderInputType.number = renderInputType.tel = renderInputType.url = (input, params) => {
+ if (typeof params.inputValue === 'string' || typeof params.inputValue === 'number') {
+ input.value = params.inputValue;
+ } else if (!isPromise(params.inputValue)) {
+ warn("Unexpected type of inputValue! Expected \"string\", \"number\" or \"Promise\", got \"".concat(typeof params.inputValue, "\""));
+ }
+
+ setInputLabel(input, input, params);
+ setInputPlaceholder(input, params);
+ input.type = params.input;
+ return input;
+ };
+
+ renderInputType.file = (input, params) => {
+ setInputLabel(input, input, params);
+ setInputPlaceholder(input, params);
+ return input;
+ };
+
+ renderInputType.range = (range, params) => {
+ const rangeInput = range.querySelector('input');
+ const rangeOutput = range.querySelector('output');
+ rangeInput.value = params.inputValue;
+ rangeInput.type = params.input;
+ rangeOutput.value = params.inputValue;
+ setInputLabel(rangeInput, range, params);
+ return range;
+ };
+
+ renderInputType.select = (select, params) => {
+ select.textContent = '';
+
+ if (params.inputPlaceholder) {
+ const placeholder = document.createElement('option');
+ setInnerHtml(placeholder, params.inputPlaceholder);
+ placeholder.value = '';
+ placeholder.disabled = true;
+ placeholder.selected = true;
+ select.appendChild(placeholder);
+ }
+
+ setInputLabel(select, select, params);
+ return select;
+ };
+
+ renderInputType.radio = radio => {
+ radio.textContent = '';
+ return radio;
+ };
+
+ renderInputType.checkbox = (checkboxContainer, params) => {
+ const checkbox = getInput(getPopup(), 'checkbox');
+ checkbox.value = 1;
+ checkbox.id = swalClasses.checkbox;
+ checkbox.checked = Boolean(params.inputValue);
+ const label = checkboxContainer.querySelector('span');
+ setInnerHtml(label, params.inputPlaceholder);
+ return checkboxContainer;
+ };
+
+ renderInputType.textarea = (textarea, params) => {
+ textarea.value = params.inputValue;
+ setInputPlaceholder(textarea, params);
+ setInputLabel(textarea, textarea, params);
+
+ const getMargin = el => parseInt(window.getComputedStyle(el).marginLeft) + parseInt(window.getComputedStyle(el).marginRight);
+
+ setTimeout(() => {
+ // #2291
+ if ('MutationObserver' in window) {
+ // #1699
+ const initialPopupWidth = parseInt(window.getComputedStyle(getPopup()).width);
+
+ const textareaResizeHandler = () => {
+ const textareaWidth = textarea.offsetWidth + getMargin(textarea);
+
+ if (textareaWidth > initialPopupWidth) {
+ getPopup().style.width = "".concat(textareaWidth, "px");
+ } else {
+ getPopup().style.width = null;
+ }
+ };
+
+ new MutationObserver(textareaResizeHandler).observe(textarea, {
+ attributes: true,
+ attributeFilter: ['style']
+ });
+ }
+ });
+ return textarea;
+ };
+
+ const renderContent = (instance, params) => {
+ const htmlContainer = getHtmlContainer();
+ applyCustomClass(htmlContainer, params, 'htmlContainer'); // Content as HTML
+
+ if (params.html) {
+ parseHtmlToContainer(params.html, htmlContainer);
+ show(htmlContainer, 'block'); // Content as plain text
+ } else if (params.text) {
+ htmlContainer.textContent = params.text;
+ show(htmlContainer, 'block'); // No content
+ } else {
+ hide(htmlContainer);
+ }
+
+ renderInput(instance, params);
+ };
+
+ const renderFooter = (instance, params) => {
+ const footer = getFooter();
+ toggle(footer, params.footer);
+
+ if (params.footer) {
+ parseHtmlToContainer(params.footer, footer);
+ } // Custom class
+
+
+ applyCustomClass(footer, params, 'footer');
+ };
+
+ const renderCloseButton = (instance, params) => {
+ const closeButton = getCloseButton();
+ setInnerHtml(closeButton, params.closeButtonHtml); // Custom class
+
+ applyCustomClass(closeButton, params, 'closeButton');
+ toggle(closeButton, params.showCloseButton);
+ closeButton.setAttribute('aria-label', params.closeButtonAriaLabel);
+ };
+
+ const renderIcon = (instance, params) => {
+ const innerParams = privateProps.innerParams.get(instance);
+ const icon = getIcon(); // if the given icon already rendered, apply the styling without re-rendering the icon
+
+ if (innerParams && params.icon === innerParams.icon) {
+ // Custom or default content
+ setContent(icon, params);
+ applyStyles(icon, params);
+ return;
+ }
+
+ if (!params.icon && !params.iconHtml) {
+ return hide(icon);
+ }
+
+ if (params.icon && Object.keys(iconTypes).indexOf(params.icon) === -1) {
+ error("Unknown icon! Expected \"success\", \"error\", \"warning\", \"info\" or \"question\", got \"".concat(params.icon, "\""));
+ return hide(icon);
+ }
+
+ show(icon); // Custom or default content
+
+ setContent(icon, params);
+ applyStyles(icon, params); // Animate icon
+
+ addClass(icon, params.showClass.icon);
+ };
+
+ const applyStyles = (icon, params) => {
+ for (const iconType in iconTypes) {
+ if (params.icon !== iconType) {
+ removeClass(icon, iconTypes[iconType]);
+ }
+ }
+
+ addClass(icon, iconTypes[params.icon]); // Icon color
+
+ setColor(icon, params); // Success icon background color
+
+ adjustSuccessIconBackgoundColor(); // Custom class
+
+ applyCustomClass(icon, params, 'icon');
+ }; // Adjust success icon background color to match the popup background color
+
+
+ const adjustSuccessIconBackgoundColor = () => {
+ const popup = getPopup();
+ const popupBackgroundColor = window.getComputedStyle(popup).getPropertyValue('background-color');
+ const successIconParts = popup.querySelectorAll('[class^=swal2-success-circular-line], .swal2-success-fix');
+
+ for (let i = 0; i < successIconParts.length; i++) {
+ successIconParts[i].style.backgroundColor = popupBackgroundColor;
+ }
+ };
+
+ const setContent = (icon, params) => {
+ icon.textContent = '';
+
+ if (params.iconHtml) {
+ setInnerHtml(icon, iconContent(params.iconHtml));
+ } else if (params.icon === 'success') {
+ setInnerHtml(icon, "\n
\n \n
\n
\n ");
+ } else if (params.icon === 'error') {
+ setInnerHtml(icon, "\n \n \n \n \n ");
+ } else {
+ const defaultIconHtml = {
+ question: '?',
+ warning: '!',
+ info: 'i'
+ };
+ setInnerHtml(icon, iconContent(defaultIconHtml[params.icon]));
+ }
+ };
+
+ const setColor = (icon, params) => {
+ if (!params.iconColor) {
+ return;
+ }
+
+ icon.style.color = params.iconColor;
+ icon.style.borderColor = params.iconColor;
+
+ for (const sel of ['.swal2-success-line-tip', '.swal2-success-line-long', '.swal2-x-mark-line-left', '.swal2-x-mark-line-right']) {
+ setStyle(icon, sel, 'backgroundColor', params.iconColor);
+ }
+
+ setStyle(icon, '.swal2-success-ring', 'borderColor', params.iconColor);
+ };
+
+ const iconContent = content => "").concat(content, "
");
+
+ const renderImage = (instance, params) => {
+ const image = getImage();
+
+ if (!params.imageUrl) {
+ return hide(image);
+ }
+
+ show(image, ''); // Src, alt
+
+ image.setAttribute('src', params.imageUrl);
+ image.setAttribute('alt', params.imageAlt); // Width, height
+
+ applyNumericalStyle(image, 'width', params.imageWidth);
+ applyNumericalStyle(image, 'height', params.imageHeight); // Class
+
+ image.className = swalClasses.image;
+ applyCustomClass(image, params, 'image');
+ };
+
+ const createStepElement = step => {
+ const stepEl = document.createElement('li');
+ addClass(stepEl, swalClasses['progress-step']);
+ setInnerHtml(stepEl, step);
+ return stepEl;
+ };
+
+ const createLineElement = params => {
+ const lineEl = document.createElement('li');
+ addClass(lineEl, swalClasses['progress-step-line']);
+
+ if (params.progressStepsDistance) {
+ lineEl.style.width = params.progressStepsDistance;
+ }
+
+ return lineEl;
+ };
+
+ const renderProgressSteps = (instance, params) => {
+ const progressStepsContainer = getProgressSteps();
+
+ if (!params.progressSteps || params.progressSteps.length === 0) {
+ return hide(progressStepsContainer);
+ }
+
+ show(progressStepsContainer);
+ progressStepsContainer.textContent = '';
+
+ if (params.currentProgressStep >= params.progressSteps.length) {
+ warn('Invalid currentProgressStep parameter, it should be less than progressSteps.length ' + '(currentProgressStep like JS arrays starts from 0)');
+ }
+
+ params.progressSteps.forEach((step, index) => {
+ const stepEl = createStepElement(step);
+ progressStepsContainer.appendChild(stepEl);
+
+ if (index === params.currentProgressStep) {
+ addClass(stepEl, swalClasses['active-progress-step']);
+ }
+
+ if (index !== params.progressSteps.length - 1) {
+ const lineEl = createLineElement(params);
+ progressStepsContainer.appendChild(lineEl);
+ }
+ });
+ };
+
+ const renderTitle = (instance, params) => {
+ const title = getTitle();
+ toggle(title, params.title || params.titleText, 'block');
+
+ if (params.title) {
+ parseHtmlToContainer(params.title, title);
+ }
+
+ if (params.titleText) {
+ title.innerText = params.titleText;
+ } // Custom class
+
+
+ applyCustomClass(title, params, 'title');
+ };
+
+ const renderPopup = (instance, params) => {
+ const container = getContainer();
+ const popup = getPopup(); // Width
+
+ if (params.toast) {
+ // #2170
+ applyNumericalStyle(container, 'width', params.width);
+ popup.style.width = '100%';
+ popup.insertBefore(getLoader(), getIcon());
+ } else {
+ applyNumericalStyle(popup, 'width', params.width);
+ } // Padding
+
+
+ applyNumericalStyle(popup, 'padding', params.padding); // Background
+
+ if (params.background) {
+ popup.style.background = params.background;
+ }
+
+ hide(getValidationMessage()); // Classes
+
+ addClasses(popup, params);
+ };
+
+ const addClasses = (popup, params) => {
+ // Default Class + showClass when updating Swal.update({})
+ popup.className = "".concat(swalClasses.popup, " ").concat(isVisible(popup) ? params.showClass.popup : '');
+
+ if (params.toast) {
+ addClass([document.documentElement, document.body], swalClasses['toast-shown']);
+ addClass(popup, swalClasses.toast);
+ } else {
+ addClass(popup, swalClasses.modal);
+ } // Custom class
+
+
+ applyCustomClass(popup, params, 'popup');
+
+ if (typeof params.customClass === 'string') {
+ addClass(popup, params.customClass);
+ } // Icon class (#1842)
+
+
+ if (params.icon) {
+ addClass(popup, swalClasses["icon-".concat(params.icon)]);
+ }
+ };
+
+ const render = (instance, params) => {
+ renderPopup(instance, params);
+ renderContainer(instance, params);
+ renderProgressSteps(instance, params);
+ renderIcon(instance, params);
+ renderImage(instance, params);
+ renderTitle(instance, params);
+ renderCloseButton(instance, params);
+ renderContent(instance, params);
+ renderActions(instance, params);
+ renderFooter(instance, params);
+
+ if (typeof params.didRender === 'function') {
+ params.didRender(getPopup());
+ }
+ };
+
+ /*
+ * Global function to determine if SweetAlert2 popup is shown
+ */
+
+ const isVisible$1 = () => {
+ return isVisible(getPopup());
+ };
+ /*
+ * Global function to click 'Confirm' button
+ */
+
+ const clickConfirm = () => getConfirmButton() && getConfirmButton().click();
+ /*
+ * Global function to click 'Deny' button
+ */
+
+ const clickDeny = () => getDenyButton() && getDenyButton().click();
+ /*
+ * Global function to click 'Cancel' button
+ */
+
+ const clickCancel = () => getCancelButton() && getCancelButton().click();
+
+ function fire(...args) {
+ const Swal = this;
+ return new Swal(...args);
+ }
+
+ /**
+ * Returns an extended version of `Swal` containing `params` as defaults.
+ * Useful for reusing Swal configuration.
+ *
+ * For example:
+ *
+ * Before:
+ * const textPromptOptions = { input: 'text', showCancelButton: true }
+ * const {value: firstName} = await Swal.fire({ ...textPromptOptions, title: 'What is your first name?' })
+ * const {value: lastName} = await Swal.fire({ ...textPromptOptions, title: 'What is your last name?' })
+ *
+ * After:
+ * const TextPrompt = Swal.mixin({ input: 'text', showCancelButton: true })
+ * const {value: firstName} = await TextPrompt('What is your first name?')
+ * const {value: lastName} = await TextPrompt('What is your last name?')
+ *
+ * @param mixinParams
+ */
+ function mixin(mixinParams) {
+ class MixinSwal extends this {
+ _main(params, priorityMixinParams) {
+ return super._main(params, Object.assign({}, mixinParams, priorityMixinParams));
+ }
+
+ }
+
+ return MixinSwal;
+ }
+
+ /**
+ * Shows loader (spinner), this is useful with AJAX requests.
+ * By default the loader be shown instead of the "Confirm" button.
+ */
+
+ const showLoading = buttonToReplace => {
+ let popup = getPopup();
+
+ if (!popup) {
+ Swal.fire();
+ }
+
+ popup = getPopup();
+ const loader = getLoader();
+
+ if (isToast()) {
+ hide(getIcon());
+ } else {
+ replaceButton(popup, buttonToReplace);
+ }
+
+ show(loader);
+ popup.setAttribute('data-loading', true);
+ popup.setAttribute('aria-busy', true);
+ popup.focus();
+ };
+
+ const replaceButton = (popup, buttonToReplace) => {
+ const actions = getActions();
+ const loader = getLoader();
+
+ if (!buttonToReplace && isVisible(getConfirmButton())) {
+ buttonToReplace = getConfirmButton();
+ }
+
+ show(actions);
+
+ if (buttonToReplace) {
+ hide(buttonToReplace);
+ loader.setAttribute('data-button-to-replace', buttonToReplace.className);
+ }
+
+ loader.parentNode.insertBefore(loader, buttonToReplace);
+ addClass([popup, actions], swalClasses.loading);
+ };
+
+ const RESTORE_FOCUS_TIMEOUT = 100;
+
+ const globalState = {};
+
+ const focusPreviousActiveElement = () => {
+ if (globalState.previousActiveElement && globalState.previousActiveElement.focus) {
+ globalState.previousActiveElement.focus();
+ globalState.previousActiveElement = null;
+ } else if (document.body) {
+ document.body.focus();
+ }
+ }; // Restore previous active (focused) element
+
+
+ const restoreActiveElement = returnFocus => {
+ return new Promise(resolve => {
+ if (!returnFocus) {
+ return resolve();
+ }
+
+ const x = window.scrollX;
+ const y = window.scrollY;
+ globalState.restoreFocusTimeout = setTimeout(() => {
+ focusPreviousActiveElement();
+ resolve();
+ }, RESTORE_FOCUS_TIMEOUT); // issues/900
+
+ window.scrollTo(x, y);
+ });
+ };
+
+ /**
+ * If `timer` parameter is set, returns number of milliseconds of timer remained.
+ * Otherwise, returns undefined.
+ */
+
+ const getTimerLeft = () => {
+ return globalState.timeout && globalState.timeout.getTimerLeft();
+ };
+ /**
+ * Stop timer. Returns number of milliseconds of timer remained.
+ * If `timer` parameter isn't set, returns undefined.
+ */
+
+ const stopTimer = () => {
+ if (globalState.timeout) {
+ stopTimerProgressBar();
+ return globalState.timeout.stop();
+ }
+ };
+ /**
+ * Resume timer. Returns number of milliseconds of timer remained.
+ * If `timer` parameter isn't set, returns undefined.
+ */
+
+ const resumeTimer = () => {
+ if (globalState.timeout) {
+ const remaining = globalState.timeout.start();
+ animateTimerProgressBar(remaining);
+ return remaining;
+ }
+ };
+ /**
+ * Resume timer. Returns number of milliseconds of timer remained.
+ * If `timer` parameter isn't set, returns undefined.
+ */
+
+ const toggleTimer = () => {
+ const timer = globalState.timeout;
+ return timer && (timer.running ? stopTimer() : resumeTimer());
+ };
+ /**
+ * Increase timer. Returns number of milliseconds of an updated timer.
+ * If `timer` parameter isn't set, returns undefined.
+ */
+
+ const increaseTimer = n => {
+ if (globalState.timeout) {
+ const remaining = globalState.timeout.increase(n);
+ animateTimerProgressBar(remaining, true);
+ return remaining;
+ }
+ };
+ /**
+ * Check if timer is running. Returns true if timer is running
+ * or false if timer is paused or stopped.
+ * If `timer` parameter isn't set, returns undefined
+ */
+
+ const isTimerRunning = () => {
+ return globalState.timeout && globalState.timeout.isRunning();
+ };
+
+ let bodyClickListenerAdded = false;
+ const clickHandlers = {};
+ function bindClickHandler(attr = 'data-swal-template') {
+ clickHandlers[attr] = this;
+
+ if (!bodyClickListenerAdded) {
+ document.body.addEventListener('click', bodyClickListener);
+ bodyClickListenerAdded = true;
+ }
+ }
+
+ const bodyClickListener = event => {
+ for (let el = event.target; el && el !== document; el = el.parentNode) {
+ for (const attr in clickHandlers) {
+ const template = el.getAttribute(attr);
+
+ if (template) {
+ clickHandlers[attr].fire({
+ template
+ });
+ return;
+ }
+ }
+ }
+ };
+
+ const defaultParams = {
+ title: '',
+ titleText: '',
+ text: '',
+ html: '',
+ footer: '',
+ icon: undefined,
+ iconColor: undefined,
+ iconHtml: undefined,
+ template: undefined,
+ toast: false,
+ showClass: {
+ popup: 'swal2-show',
+ backdrop: 'swal2-backdrop-show',
+ icon: 'swal2-icon-show'
+ },
+ hideClass: {
+ popup: 'swal2-hide',
+ backdrop: 'swal2-backdrop-hide',
+ icon: 'swal2-icon-hide'
+ },
+ customClass: {},
+ target: 'body',
+ backdrop: true,
+ heightAuto: true,
+ allowOutsideClick: true,
+ allowEscapeKey: true,
+ allowEnterKey: true,
+ stopKeydownPropagation: true,
+ keydownListenerCapture: false,
+ showConfirmButton: true,
+ showDenyButton: false,
+ showCancelButton: false,
+ preConfirm: undefined,
+ preDeny: undefined,
+ confirmButtonText: 'OK',
+ confirmButtonAriaLabel: '',
+ confirmButtonColor: undefined,
+ denyButtonText: 'No',
+ denyButtonAriaLabel: '',
+ denyButtonColor: undefined,
+ cancelButtonText: 'Cancel',
+ cancelButtonAriaLabel: '',
+ cancelButtonColor: undefined,
+ buttonsStyling: true,
+ reverseButtons: false,
+ focusConfirm: true,
+ focusDeny: false,
+ focusCancel: false,
+ returnFocus: true,
+ showCloseButton: false,
+ closeButtonHtml: '×',
+ closeButtonAriaLabel: 'Close this dialog',
+ loaderHtml: '',
+ showLoaderOnConfirm: false,
+ showLoaderOnDeny: false,
+ imageUrl: undefined,
+ imageWidth: undefined,
+ imageHeight: undefined,
+ imageAlt: '',
+ timer: undefined,
+ timerProgressBar: false,
+ width: undefined,
+ padding: undefined,
+ background: undefined,
+ input: undefined,
+ inputPlaceholder: '',
+ inputLabel: '',
+ inputValue: '',
+ inputOptions: {},
+ inputAutoTrim: true,
+ inputAttributes: {},
+ inputValidator: undefined,
+ returnInputValueOnDeny: false,
+ validationMessage: undefined,
+ grow: false,
+ position: 'center',
+ progressSteps: [],
+ currentProgressStep: undefined,
+ progressStepsDistance: undefined,
+ willOpen: undefined,
+ didOpen: undefined,
+ didRender: undefined,
+ willClose: undefined,
+ didClose: undefined,
+ didDestroy: undefined,
+ scrollbarPadding: true
+ };
+ const updatableParams = ['allowEscapeKey', 'allowOutsideClick', 'background', 'buttonsStyling', 'cancelButtonAriaLabel', 'cancelButtonColor', 'cancelButtonText', 'closeButtonAriaLabel', 'closeButtonHtml', 'confirmButtonAriaLabel', 'confirmButtonColor', 'confirmButtonText', 'currentProgressStep', 'customClass', 'denyButtonAriaLabel', 'denyButtonColor', 'denyButtonText', 'didClose', 'didDestroy', 'footer', 'hideClass', 'html', 'icon', 'iconColor', 'iconHtml', 'imageAlt', 'imageHeight', 'imageUrl', 'imageWidth', 'preConfirm', 'preDeny', 'progressSteps', 'returnFocus', 'reverseButtons', 'showCancelButton', 'showCloseButton', 'showConfirmButton', 'showDenyButton', 'text', 'title', 'titleText', 'willClose'];
+ const deprecatedParams = {};
+ const toastIncompatibleParams = ['allowOutsideClick', 'allowEnterKey', 'backdrop', 'focusConfirm', 'focusDeny', 'focusCancel', 'returnFocus', 'heightAuto', 'keydownListenerCapture'];
+ /**
+ * Is valid parameter
+ * @param {String} paramName
+ */
+
+ const isValidParameter = paramName => {
+ return Object.prototype.hasOwnProperty.call(defaultParams, paramName);
+ };
+ /**
+ * Is valid parameter for Swal.update() method
+ * @param {String} paramName
+ */
+
+ const isUpdatableParameter = paramName => {
+ return updatableParams.indexOf(paramName) !== -1;
+ };
+ /**
+ * Is deprecated parameter
+ * @param {String} paramName
+ */
+
+ const isDeprecatedParameter = paramName => {
+ return deprecatedParams[paramName];
+ };
+
+ const checkIfParamIsValid = param => {
+ if (!isValidParameter(param)) {
+ warn("Unknown parameter \"".concat(param, "\""));
+ }
+ };
+
+ const checkIfToastParamIsValid = param => {
+ if (toastIncompatibleParams.includes(param)) {
+ warn("The parameter \"".concat(param, "\" is incompatible with toasts"));
+ }
+ };
+
+ const checkIfParamIsDeprecated = param => {
+ if (isDeprecatedParameter(param)) {
+ warnAboutDeprecation(param, isDeprecatedParameter(param));
+ }
+ };
+ /**
+ * Show relevant warnings for given params
+ *
+ * @param params
+ */
+
+
+ const showWarningsForParams = params => {
+ if (!params.backdrop && params.allowOutsideClick) {
+ warn('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`');
+ }
+
+ for (const param in params) {
+ checkIfParamIsValid(param);
+
+ if (params.toast) {
+ checkIfToastParamIsValid(param);
+ }
+
+ checkIfParamIsDeprecated(param);
+ }
+ };
+
+
+
+ var staticMethods = /*#__PURE__*/Object.freeze({
+ isValidParameter: isValidParameter,
+ isUpdatableParameter: isUpdatableParameter,
+ isDeprecatedParameter: isDeprecatedParameter,
+ argsToParams: argsToParams,
+ isVisible: isVisible$1,
+ clickConfirm: clickConfirm,
+ clickDeny: clickDeny,
+ clickCancel: clickCancel,
+ getContainer: getContainer,
+ getPopup: getPopup,
+ getTitle: getTitle,
+ getHtmlContainer: getHtmlContainer,
+ getImage: getImage,
+ getIcon: getIcon,
+ getInputLabel: getInputLabel,
+ getCloseButton: getCloseButton,
+ getActions: getActions,
+ getConfirmButton: getConfirmButton,
+ getDenyButton: getDenyButton,
+ getCancelButton: getCancelButton,
+ getLoader: getLoader,
+ getFooter: getFooter,
+ getTimerProgressBar: getTimerProgressBar,
+ getFocusableElements: getFocusableElements,
+ getValidationMessage: getValidationMessage,
+ isLoading: isLoading,
+ fire: fire,
+ mixin: mixin,
+ showLoading: showLoading,
+ enableLoading: showLoading,
+ getTimerLeft: getTimerLeft,
+ stopTimer: stopTimer,
+ resumeTimer: resumeTimer,
+ toggleTimer: toggleTimer,
+ increaseTimer: increaseTimer,
+ isTimerRunning: isTimerRunning,
+ bindClickHandler: bindClickHandler
+ });
+
+ /**
+ * Hides loader and shows back the button which was hidden by .showLoading()
+ */
+
+ function hideLoading() {
+ // do nothing if popup is closed
+ const innerParams = privateProps.innerParams.get(this);
+
+ if (!innerParams) {
+ return;
+ }
+
+ const domCache = privateProps.domCache.get(this);
+ hide(domCache.loader);
+
+ if (isToast()) {
+ if (innerParams.icon) {
+ show(getIcon());
+ }
+ } else {
+ showRelatedButton(domCache);
+ }
+
+ removeClass([domCache.popup, domCache.actions], swalClasses.loading);
+ domCache.popup.removeAttribute('aria-busy');
+ domCache.popup.removeAttribute('data-loading');
+ domCache.confirmButton.disabled = false;
+ domCache.denyButton.disabled = false;
+ domCache.cancelButton.disabled = false;
+ }
+
+ const showRelatedButton = domCache => {
+ const buttonToReplace = domCache.popup.getElementsByClassName(domCache.loader.getAttribute('data-button-to-replace'));
+
+ if (buttonToReplace.length) {
+ show(buttonToReplace[0], 'inline-block');
+ } else if (allButtonsAreHidden()) {
+ hide(domCache.actions);
+ }
+ };
+
+ function getInput$1(instance) {
+ const innerParams = privateProps.innerParams.get(instance || this);
+ const domCache = privateProps.domCache.get(instance || this);
+
+ if (!domCache) {
+ return null;
+ }
+
+ return getInput(domCache.popup, innerParams.input);
+ }
+
+ const fixScrollbar = () => {
+ // for queues, do not do this more than once
+ if (states.previousBodyPadding !== null) {
+ return;
+ } // if the body has overflow
+
+
+ if (document.body.scrollHeight > window.innerHeight) {
+ // add padding so the content doesn't shift after removal of scrollbar
+ states.previousBodyPadding = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right'));
+ document.body.style.paddingRight = "".concat(states.previousBodyPadding + measureScrollbar(), "px");
+ }
+ };
+ const undoScrollbar = () => {
+ if (states.previousBodyPadding !== null) {
+ document.body.style.paddingRight = "".concat(states.previousBodyPadding, "px");
+ states.previousBodyPadding = null;
+ }
+ };
+
+ /* istanbul ignore file */
+
+ const iOSfix = () => {
+ const iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1;
+
+ if (iOS && !hasClass(document.body, swalClasses.iosfix)) {
+ const offset = document.body.scrollTop;
+ document.body.style.top = "".concat(offset * -1, "px");
+ addClass(document.body, swalClasses.iosfix);
+ lockBodyScroll();
+ addBottomPaddingForTallPopups(); // #1948
+ }
+ };
+
+ const addBottomPaddingForTallPopups = () => {
+ const safari = !navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i);
+
+ if (safari) {
+ const bottomPanelHeight = 44;
+
+ if (getPopup().scrollHeight > window.innerHeight - bottomPanelHeight) {
+ getContainer().style.paddingBottom = "".concat(bottomPanelHeight, "px");
+ }
+ }
+ };
+
+ const lockBodyScroll = () => {
+ // #1246
+ const container = getContainer();
+ let preventTouchMove;
+
+ container.ontouchstart = e => {
+ preventTouchMove = shouldPreventTouchMove(e);
+ };
+
+ container.ontouchmove = e => {
+ if (preventTouchMove) {
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ };
+ };
+
+ const shouldPreventTouchMove = event => {
+ const target = event.target;
+ const container = getContainer();
+
+ if (isStylys(event) || isZoom(event)) {
+ return false;
+ }
+
+ if (target === container) {
+ return true;
+ }
+
+ if (!isScrollable(container) && target.tagName !== 'INPUT' && // #1603
+ target.tagName !== 'TEXTAREA' && // #2266
+ !(isScrollable(getHtmlContainer()) && // #1944
+ getHtmlContainer().contains(target))) {
+ return true;
+ }
+
+ return false;
+ };
+
+ const isStylys = event => {
+ // #1786
+ return event.touches && event.touches.length && event.touches[0].touchType === 'stylus';
+ };
+
+ const isZoom = event => {
+ // #1891
+ return event.touches && event.touches.length > 1;
+ };
+
+ const undoIOSfix = () => {
+ if (hasClass(document.body, swalClasses.iosfix)) {
+ const offset = parseInt(document.body.style.top, 10);
+ removeClass(document.body, swalClasses.iosfix);
+ document.body.style.top = '';
+ document.body.scrollTop = offset * -1;
+ }
+ };
+
+ // Adding aria-hidden="true" to elements outside of the active modal dialog ensures that
+ // elements not within the active modal dialog will not be surfaced if a user opens a screen
+ // reader’s list of elements (headings, form controls, landmarks, etc.) in the document.
+
+ const setAriaHidden = () => {
+ const bodyChildren = toArray(document.body.children);
+ bodyChildren.forEach(el => {
+ if (el === getContainer() || el.contains(getContainer())) {
+ return;
+ }
+
+ if (el.hasAttribute('aria-hidden')) {
+ el.setAttribute('data-previous-aria-hidden', el.getAttribute('aria-hidden'));
+ }
+
+ el.setAttribute('aria-hidden', 'true');
+ });
+ };
+ const unsetAriaHidden = () => {
+ const bodyChildren = toArray(document.body.children);
+ bodyChildren.forEach(el => {
+ if (el.hasAttribute('data-previous-aria-hidden')) {
+ el.setAttribute('aria-hidden', el.getAttribute('data-previous-aria-hidden'));
+ el.removeAttribute('data-previous-aria-hidden');
+ } else {
+ el.removeAttribute('aria-hidden');
+ }
+ });
+ };
+
+ /**
+ * This module containts `WeakMap`s for each effectively-"private property" that a `Swal` has.
+ * For example, to set the private property "foo" of `this` to "bar", you can `privateProps.foo.set(this, 'bar')`
+ * This is the approach that Babel will probably take to implement private methods/fields
+ * https://github.com/tc39/proposal-private-methods
+ * https://github.com/babel/babel/pull/7555
+ * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module*
+ * then we can use that language feature.
+ */
+ var privateMethods = {
+ swalPromiseResolve: new WeakMap()
+ };
+
+ /*
+ * Instance method to close sweetAlert
+ */
+
+ function removePopupAndResetState(instance, container, returnFocus, didClose) {
+ if (isToast()) {
+ triggerDidCloseAndDispose(instance, didClose);
+ } else {
+ restoreActiveElement(returnFocus).then(() => triggerDidCloseAndDispose(instance, didClose));
+ globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, {
+ capture: globalState.keydownListenerCapture
+ });
+ globalState.keydownHandlerAdded = false;
+ }
+
+ const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); // workaround for #2088
+ // for some reason removing the container in Safari will scroll the document to bottom
+
+ if (isSafari) {
+ container.setAttribute('style', 'display:none !important');
+ container.removeAttribute('class');
+ container.innerHTML = '';
+ } else {
+ container.remove();
+ }
+
+ if (isModal()) {
+ undoScrollbar();
+ undoIOSfix();
+ unsetAriaHidden();
+ }
+
+ removeBodyClasses();
+ }
+
+ function removeBodyClasses() {
+ removeClass([document.documentElement, document.body], [swalClasses.shown, swalClasses['height-auto'], swalClasses['no-backdrop'], swalClasses['toast-shown']]);
+ }
+
+ function close(resolveValue) {
+ const popup = getPopup();
+
+ if (!popup) {
+ return;
+ }
+
+ resolveValue = prepareResolveValue(resolveValue);
+ const innerParams = privateProps.innerParams.get(this);
+
+ if (!innerParams || hasClass(popup, innerParams.hideClass.popup)) {
+ return;
+ }
+
+ const swalPromiseResolve = privateMethods.swalPromiseResolve.get(this);
+ removeClass(popup, innerParams.showClass.popup);
+ addClass(popup, innerParams.hideClass.popup);
+ const backdrop = getContainer();
+ removeClass(backdrop, innerParams.showClass.backdrop);
+ addClass(backdrop, innerParams.hideClass.backdrop);
+ handlePopupAnimation(this, popup, innerParams); // Resolve Swal promise
+
+ swalPromiseResolve(resolveValue);
+ }
+
+ const prepareResolveValue = resolveValue => {
+ // When user calls Swal.close()
+ if (typeof resolveValue === 'undefined') {
+ return {
+ isConfirmed: false,
+ isDenied: false,
+ isDismissed: true
+ };
+ }
+
+ return Object.assign({
+ isConfirmed: false,
+ isDenied: false,
+ isDismissed: false
+ }, resolveValue);
+ };
+
+ const handlePopupAnimation = (instance, popup, innerParams) => {
+ const container = getContainer(); // If animation is supported, animate
+
+ const animationIsSupported = animationEndEvent && hasCssAnimation(popup);
+
+ if (typeof innerParams.willClose === 'function') {
+ innerParams.willClose(popup);
+ }
+
+ if (animationIsSupported) {
+ animatePopup(instance, popup, container, innerParams.returnFocus, innerParams.didClose);
+ } else {
+ // Otherwise, remove immediately
+ removePopupAndResetState(instance, container, innerParams.returnFocus, innerParams.didClose);
+ }
+ };
+
+ const animatePopup = (instance, popup, container, returnFocus, didClose) => {
+ globalState.swalCloseEventFinishedCallback = removePopupAndResetState.bind(null, instance, container, returnFocus, didClose);
+ popup.addEventListener(animationEndEvent, function (e) {
+ if (e.target === popup) {
+ globalState.swalCloseEventFinishedCallback();
+ delete globalState.swalCloseEventFinishedCallback;
+ }
+ });
+ };
+
+ const triggerDidCloseAndDispose = (instance, didClose) => {
+ setTimeout(() => {
+ if (typeof didClose === 'function') {
+ didClose.bind(instance.params)();
+ }
+
+ instance._destroy();
+ });
+ };
+
+ function setButtonsDisabled(instance, buttons, disabled) {
+ const domCache = privateProps.domCache.get(instance);
+ buttons.forEach(button => {
+ domCache[button].disabled = disabled;
+ });
+ }
+
+ function setInputDisabled(input, disabled) {
+ if (!input) {
+ return false;
+ }
+
+ if (input.type === 'radio') {
+ const radiosContainer = input.parentNode.parentNode;
+ const radios = radiosContainer.querySelectorAll('input');
+
+ for (let i = 0; i < radios.length; i++) {
+ radios[i].disabled = disabled;
+ }
+ } else {
+ input.disabled = disabled;
+ }
+ }
+
+ function enableButtons() {
+ setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], false);
+ }
+ function disableButtons() {
+ setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], true);
+ }
+ function enableInput() {
+ return setInputDisabled(this.getInput(), false);
+ }
+ function disableInput() {
+ return setInputDisabled(this.getInput(), true);
+ }
+
+ function showValidationMessage(error) {
+ const domCache = privateProps.domCache.get(this);
+ const params = privateProps.innerParams.get(this);
+ setInnerHtml(domCache.validationMessage, error);
+ domCache.validationMessage.className = swalClasses['validation-message'];
+
+ if (params.customClass && params.customClass.validationMessage) {
+ addClass(domCache.validationMessage, params.customClass.validationMessage);
+ }
+
+ show(domCache.validationMessage);
+ const input = this.getInput();
+
+ if (input) {
+ input.setAttribute('aria-invalid', true);
+ input.setAttribute('aria-describedby', swalClasses['validation-message']);
+ focusInput(input);
+ addClass(input, swalClasses.inputerror);
+ }
+ } // Hide block with validation message
+
+ function resetValidationMessage$1() {
+ const domCache = privateProps.domCache.get(this);
+
+ if (domCache.validationMessage) {
+ hide(domCache.validationMessage);
+ }
+
+ const input = this.getInput();
+
+ if (input) {
+ input.removeAttribute('aria-invalid');
+ input.removeAttribute('aria-describedby');
+ removeClass(input, swalClasses.inputerror);
+ }
+ }
+
+ function getProgressSteps$1() {
+ const domCache = privateProps.domCache.get(this);
+ return domCache.progressSteps;
+ }
+
+ class Timer {
+ constructor(callback, delay) {
+ this.callback = callback;
+ this.remaining = delay;
+ this.running = false;
+ this.start();
+ }
+
+ start() {
+ if (!this.running) {
+ this.running = true;
+ this.started = new Date();
+ this.id = setTimeout(this.callback, this.remaining);
+ }
+
+ return this.remaining;
+ }
+
+ stop() {
+ if (this.running) {
+ this.running = false;
+ clearTimeout(this.id);
+ this.remaining -= new Date() - this.started;
+ }
+
+ return this.remaining;
+ }
+
+ increase(n) {
+ const running = this.running;
+
+ if (running) {
+ this.stop();
+ }
+
+ this.remaining += n;
+
+ if (running) {
+ this.start();
+ }
+
+ return this.remaining;
+ }
+
+ getTimerLeft() {
+ if (this.running) {
+ this.stop();
+ this.start();
+ }
+
+ return this.remaining;
+ }
+
+ isRunning() {
+ return this.running;
+ }
+
+ }
+
+ var defaultInputValidators = {
+ email: (string, validationMessage) => {
+ return /^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid email address');
+ },
+ url: (string, validationMessage) => {
+ // taken from https://stackoverflow.com/a/3809435 with a small change from #1306 and #2013
+ return /^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid URL');
+ }
+ };
+
+ function setDefaultInputValidators(params) {
+ // Use default `inputValidator` for supported input types if not provided
+ if (!params.inputValidator) {
+ Object.keys(defaultInputValidators).forEach(key => {
+ if (params.input === key) {
+ params.inputValidator = defaultInputValidators[key];
+ }
+ });
+ }
+ }
+
+ function validateCustomTargetElement(params) {
+ // Determine if the custom target element is valid
+ if (!params.target || typeof params.target === 'string' && !document.querySelector(params.target) || typeof params.target !== 'string' && !params.target.appendChild) {
+ warn('Target parameter is not valid, defaulting to "body"');
+ params.target = 'body';
+ }
+ }
+ /**
+ * Set type, text and actions on popup
+ *
+ * @param params
+ * @returns {boolean}
+ */
+
+
+ function setParameters(params) {
+ setDefaultInputValidators(params); // showLoaderOnConfirm && preConfirm
+
+ if (params.showLoaderOnConfirm && !params.preConfirm) {
+ warn('showLoaderOnConfirm is set to true, but preConfirm is not defined.\n' + 'showLoaderOnConfirm should be used together with preConfirm, see usage example:\n' + 'https://sweetalert2.github.io/#ajax-request');
+ }
+
+ validateCustomTargetElement(params); // Replace newlines with in title
+
+ if (typeof params.title === 'string') {
+ params.title = params.title.split('\n').join(' ');
+ }
+
+ init(params);
+ }
+
+ const swalStringParams = ['swal-title', 'swal-html', 'swal-footer'];
+ const getTemplateParams = params => {
+ const template = typeof params.template === 'string' ? document.querySelector(params.template) : params.template;
+
+ if (!template) {
+ return {};
+ }
+
+ const templateContent = template.content;
+ showWarningsForElements(templateContent);
+ const result = Object.assign(getSwalParams(templateContent), getSwalButtons(templateContent), getSwalImage(templateContent), getSwalIcon(templateContent), getSwalInput(templateContent), getSwalStringParams(templateContent, swalStringParams));
+ return result;
+ };
+
+ const getSwalParams = templateContent => {
+ const result = {};
+ toArray(templateContent.querySelectorAll('swal-param')).forEach(param => {
+ showWarningsForAttributes(param, ['name', 'value']);
+ const paramName = param.getAttribute('name');
+ let value = param.getAttribute('value');
+
+ if (typeof defaultParams[paramName] === 'boolean' && value === 'false') {
+ value = false;
+ }
+
+ if (typeof defaultParams[paramName] === 'object') {
+ value = JSON.parse(value);
+ }
+
+ result[paramName] = value;
+ });
+ return result;
+ };
+
+ const getSwalButtons = templateContent => {
+ const result = {};
+ toArray(templateContent.querySelectorAll('swal-button')).forEach(button => {
+ showWarningsForAttributes(button, ['type', 'color', 'aria-label']);
+ const type = button.getAttribute('type');
+ result["".concat(type, "ButtonText")] = button.innerHTML;
+ result["show".concat(capitalizeFirstLetter(type), "Button")] = true;
+
+ if (button.hasAttribute('color')) {
+ result["".concat(type, "ButtonColor")] = button.getAttribute('color');
+ }
+
+ if (button.hasAttribute('aria-label')) {
+ result["".concat(type, "ButtonAriaLabel")] = button.getAttribute('aria-label');
+ }
+ });
+ return result;
+ };
+
+ const getSwalImage = templateContent => {
+ const result = {};
+ const image = templateContent.querySelector('swal-image');
+
+ if (image) {
+ showWarningsForAttributes(image, ['src', 'width', 'height', 'alt']);
+
+ if (image.hasAttribute('src')) {
+ result.imageUrl = image.getAttribute('src');
+ }
+
+ if (image.hasAttribute('width')) {
+ result.imageWidth = image.getAttribute('width');
+ }
+
+ if (image.hasAttribute('height')) {
+ result.imageHeight = image.getAttribute('height');
+ }
+
+ if (image.hasAttribute('alt')) {
+ result.imageAlt = image.getAttribute('alt');
+ }
+ }
+
+ return result;
+ };
+
+ const getSwalIcon = templateContent => {
+ const result = {};
+ const icon = templateContent.querySelector('swal-icon');
+
+ if (icon) {
+ showWarningsForAttributes(icon, ['type', 'color']);
+
+ if (icon.hasAttribute('type')) {
+ result.icon = icon.getAttribute('type');
+ }
+
+ if (icon.hasAttribute('color')) {
+ result.iconColor = icon.getAttribute('color');
+ }
+
+ result.iconHtml = icon.innerHTML;
+ }
+
+ return result;
+ };
+
+ const getSwalInput = templateContent => {
+ const result = {};
+ const input = templateContent.querySelector('swal-input');
+
+ if (input) {
+ showWarningsForAttributes(input, ['type', 'label', 'placeholder', 'value']);
+ result.input = input.getAttribute('type') || 'text';
+
+ if (input.hasAttribute('label')) {
+ result.inputLabel = input.getAttribute('label');
+ }
+
+ if (input.hasAttribute('placeholder')) {
+ result.inputPlaceholder = input.getAttribute('placeholder');
+ }
+
+ if (input.hasAttribute('value')) {
+ result.inputValue = input.getAttribute('value');
+ }
+ }
+
+ const inputOptions = templateContent.querySelectorAll('swal-input-option');
+
+ if (inputOptions.length) {
+ result.inputOptions = {};
+ toArray(inputOptions).forEach(option => {
+ showWarningsForAttributes(option, ['value']);
+ const optionValue = option.getAttribute('value');
+ const optionName = option.innerHTML;
+ result.inputOptions[optionValue] = optionName;
+ });
+ }
+
+ return result;
+ };
+
+ const getSwalStringParams = (templateContent, paramNames) => {
+ const result = {};
+
+ for (const i in paramNames) {
+ const paramName = paramNames[i];
+ const tag = templateContent.querySelector(paramName);
+
+ if (tag) {
+ showWarningsForAttributes(tag, []);
+ result[paramName.replace(/^swal-/, '')] = tag.innerHTML.trim();
+ }
+ }
+
+ return result;
+ };
+
+ const showWarningsForElements = template => {
+ const allowedElements = swalStringParams.concat(['swal-param', 'swal-button', 'swal-image', 'swal-icon', 'swal-input', 'swal-input-option']);
+ toArray(template.children).forEach(el => {
+ const tagName = el.tagName.toLowerCase();
+
+ if (allowedElements.indexOf(tagName) === -1) {
+ warn("Unrecognized element <".concat(tagName, ">"));
+ }
+ });
+ };
+
+ const showWarningsForAttributes = (el, allowedAttributes) => {
+ toArray(el.attributes).forEach(attribute => {
+ if (allowedAttributes.indexOf(attribute.name) === -1) {
+ warn(["Unrecognized attribute \"".concat(attribute.name, "\" on <").concat(el.tagName.toLowerCase(), ">."), "".concat(allowedAttributes.length ? "Allowed attributes are: ".concat(allowedAttributes.join(', ')) : 'To set the value, use HTML within the element.')]);
+ }
+ });
+ };
+
+ const SHOW_CLASS_TIMEOUT = 10;
+ /**
+ * Open popup, add necessary classes and styles, fix scrollbar
+ *
+ * @param params
+ */
+
+ const openPopup = params => {
+ const container = getContainer();
+ const popup = getPopup();
+
+ if (typeof params.willOpen === 'function') {
+ params.willOpen(popup);
+ }
+
+ const bodyStyles = window.getComputedStyle(document.body);
+ const initialBodyOverflow = bodyStyles.overflowY;
+ addClasses$1(container, popup, params); // scrolling is 'hidden' until animation is done, after that 'auto'
+
+ setTimeout(() => {
+ setScrollingVisibility(container, popup);
+ }, SHOW_CLASS_TIMEOUT);
+
+ if (isModal()) {
+ fixScrollContainer(container, params.scrollbarPadding, initialBodyOverflow);
+ setAriaHidden();
+ }
+
+ if (!isToast() && !globalState.previousActiveElement) {
+ globalState.previousActiveElement = document.activeElement;
+ }
+
+ if (typeof params.didOpen === 'function') {
+ setTimeout(() => params.didOpen(popup));
+ }
+
+ removeClass(container, swalClasses['no-transition']);
+ };
+
+ const swalOpenAnimationFinished = event => {
+ const popup = getPopup();
+
+ if (event.target !== popup) {
+ return;
+ }
+
+ const container = getContainer();
+ popup.removeEventListener(animationEndEvent, swalOpenAnimationFinished);
+ container.style.overflowY = 'auto';
+ };
+
+ const setScrollingVisibility = (container, popup) => {
+ if (animationEndEvent && hasCssAnimation(popup)) {
+ container.style.overflowY = 'hidden';
+ popup.addEventListener(animationEndEvent, swalOpenAnimationFinished);
+ } else {
+ container.style.overflowY = 'auto';
+ }
+ };
+
+ const fixScrollContainer = (container, scrollbarPadding, initialBodyOverflow) => {
+ iOSfix();
+
+ if (scrollbarPadding && initialBodyOverflow !== 'hidden') {
+ fixScrollbar();
+ } // sweetalert2/issues/1247
+
+
+ setTimeout(() => {
+ container.scrollTop = 0;
+ });
+ };
+
+ const addClasses$1 = (container, popup, params) => {
+ addClass(container, params.showClass.backdrop); // the workaround with setting/unsetting opacity is needed for #2019 and 2059
+
+ popup.style.setProperty('opacity', '0', 'important');
+ show(popup, 'grid');
+ setTimeout(() => {
+ // Animate popup right after showing it
+ addClass(popup, params.showClass.popup); // and remove the opacity workaround
+
+ popup.style.removeProperty('opacity');
+ }, SHOW_CLASS_TIMEOUT); // 10ms in order to fix #2062
+
+ addClass([document.documentElement, document.body], swalClasses.shown);
+
+ if (params.heightAuto && params.backdrop && !params.toast) {
+ addClass([document.documentElement, document.body], swalClasses['height-auto']);
+ }
+ };
+
+ const handleInputOptionsAndValue = (instance, params) => {
+ if (params.input === 'select' || params.input === 'radio') {
+ handleInputOptions(instance, params);
+ } else if (['text', 'email', 'number', 'tel', 'textarea'].includes(params.input) && (hasToPromiseFn(params.inputValue) || isPromise(params.inputValue))) {
+ showLoading(getConfirmButton());
+ handleInputValue(instance, params);
+ }
+ };
+ const getInputValue = (instance, innerParams) => {
+ const input = instance.getInput();
+
+ if (!input) {
+ return null;
+ }
+
+ switch (innerParams.input) {
+ case 'checkbox':
+ return getCheckboxValue(input);
+
+ case 'radio':
+ return getRadioValue(input);
+
+ case 'file':
+ return getFileValue(input);
+
+ default:
+ return innerParams.inputAutoTrim ? input.value.trim() : input.value;
+ }
+ };
+
+ const getCheckboxValue = input => input.checked ? 1 : 0;
+
+ const getRadioValue = input => input.checked ? input.value : null;
+
+ const getFileValue = input => input.files.length ? input.getAttribute('multiple') !== null ? input.files : input.files[0] : null;
+
+ const handleInputOptions = (instance, params) => {
+ const popup = getPopup();
+
+ const processInputOptions = inputOptions => populateInputOptions[params.input](popup, formatInputOptions(inputOptions), params);
+
+ if (hasToPromiseFn(params.inputOptions) || isPromise(params.inputOptions)) {
+ showLoading(getConfirmButton());
+ asPromise(params.inputOptions).then(inputOptions => {
+ instance.hideLoading();
+ processInputOptions(inputOptions);
+ });
+ } else if (typeof params.inputOptions === 'object') {
+ processInputOptions(params.inputOptions);
+ } else {
+ error("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(typeof params.inputOptions));
+ }
+ };
+
+ const handleInputValue = (instance, params) => {
+ const input = instance.getInput();
+ hide(input);
+ asPromise(params.inputValue).then(inputValue => {
+ input.value = params.input === 'number' ? parseFloat(inputValue) || 0 : "".concat(inputValue);
+ show(input);
+ input.focus();
+ instance.hideLoading();
+ }).catch(err => {
+ error("Error in inputValue promise: ".concat(err));
+ input.value = '';
+ show(input);
+ input.focus();
+ instance.hideLoading();
+ });
+ };
+
+ const populateInputOptions = {
+ select: (popup, inputOptions, params) => {
+ const select = getChildByClass(popup, swalClasses.select);
+
+ const renderOption = (parent, optionLabel, optionValue) => {
+ const option = document.createElement('option');
+ option.value = optionValue;
+ setInnerHtml(option, optionLabel);
+ option.selected = isSelected(optionValue, params.inputValue);
+ parent.appendChild(option);
+ };
+
+ inputOptions.forEach(inputOption => {
+ const optionValue = inputOption[0];
+ const optionLabel = inputOption[1]; // spec:
+ // https://www.w3.org/TR/html401/interact/forms.html#h-17.6
+ // "...all OPTGROUP elements must be specified directly within a SELECT element (i.e., groups may not be nested)..."
+ // check whether this is a
+
+ if (Array.isArray(optionLabel)) {
+ // if it is an array, then it is an
+ const optgroup = document.createElement('optgroup');
+ optgroup.label = optionValue;
+ optgroup.disabled = false; // not configurable for now
+
+ select.appendChild(optgroup);
+ optionLabel.forEach(o => renderOption(optgroup, o[1], o[0]));
+ } else {
+ // case of
+ renderOption(select, optionLabel, optionValue);
+ }
+ });
+ select.focus();
+ },
+ radio: (popup, inputOptions, params) => {
+ const radio = getChildByClass(popup, swalClasses.radio);
+ inputOptions.forEach(inputOption => {
+ const radioValue = inputOption[0];
+ const radioLabel = inputOption[1];
+ const radioInput = document.createElement('input');
+ const radioLabelElement = document.createElement('label');
+ radioInput.type = 'radio';
+ radioInput.name = swalClasses.radio;
+ radioInput.value = radioValue;
+
+ if (isSelected(radioValue, params.inputValue)) {
+ radioInput.checked = true;
+ }
+
+ const label = document.createElement('span');
+ setInnerHtml(label, radioLabel);
+ label.className = swalClasses.label;
+ radioLabelElement.appendChild(radioInput);
+ radioLabelElement.appendChild(label);
+ radio.appendChild(radioLabelElement);
+ });
+ const radios = radio.querySelectorAll('input');
+
+ if (radios.length) {
+ radios[0].focus();
+ }
+ }
+ };
+ /**
+ * Converts `inputOptions` into an array of `[value, label]`s
+ * @param inputOptions
+ */
+
+ const formatInputOptions = inputOptions => {
+ const result = [];
+
+ if (typeof Map !== 'undefined' && inputOptions instanceof Map) {
+ inputOptions.forEach((value, key) => {
+ let valueFormatted = value;
+
+ if (typeof valueFormatted === 'object') {
+ // case of
+ valueFormatted = formatInputOptions(valueFormatted);
+ }
+
+ result.push([key, valueFormatted]);
+ });
+ } else {
+ Object.keys(inputOptions).forEach(key => {
+ let valueFormatted = inputOptions[key];
+
+ if (typeof valueFormatted === 'object') {
+ // case of
+ valueFormatted = formatInputOptions(valueFormatted);
+ }
+
+ result.push([key, valueFormatted]);
+ });
+ }
+
+ return result;
+ };
+
+ const isSelected = (optionValue, inputValue) => {
+ return inputValue && inputValue.toString() === optionValue.toString();
+ };
+
+ const handleConfirmButtonClick = instance => {
+ const innerParams = privateProps.innerParams.get(instance);
+ instance.disableButtons();
+
+ if (innerParams.input) {
+ handleConfirmOrDenyWithInput(instance, 'confirm');
+ } else {
+ confirm(instance, true);
+ }
+ };
+ const handleDenyButtonClick = instance => {
+ const innerParams = privateProps.innerParams.get(instance);
+ instance.disableButtons();
+
+ if (innerParams.returnInputValueOnDeny) {
+ handleConfirmOrDenyWithInput(instance, 'deny');
+ } else {
+ deny(instance, false);
+ }
+ };
+ const handleCancelButtonClick = (instance, dismissWith) => {
+ instance.disableButtons();
+ dismissWith(DismissReason.cancel);
+ };
+
+ const handleConfirmOrDenyWithInput = (instance, type
+ /* 'confirm' | 'deny' */
+ ) => {
+ const innerParams = privateProps.innerParams.get(instance);
+ const inputValue = getInputValue(instance, innerParams);
+
+ if (innerParams.inputValidator) {
+ handleInputValidator(instance, inputValue, type);
+ } else if (!instance.getInput().checkValidity()) {
+ instance.enableButtons();
+ instance.showValidationMessage(innerParams.validationMessage);
+ } else if (type === 'deny') {
+ deny(instance, inputValue);
+ } else {
+ confirm(instance, inputValue);
+ }
+ };
+
+ const handleInputValidator = (instance, inputValue, type
+ /* 'confirm' | 'deny' */
+ ) => {
+ const innerParams = privateProps.innerParams.get(instance);
+ instance.disableInput();
+ const validationPromise = Promise.resolve().then(() => asPromise(innerParams.inputValidator(inputValue, innerParams.validationMessage)));
+ validationPromise.then(validationMessage => {
+ instance.enableButtons();
+ instance.enableInput();
+
+ if (validationMessage) {
+ instance.showValidationMessage(validationMessage);
+ } else if (type === 'deny') {
+ deny(instance, inputValue);
+ } else {
+ confirm(instance, inputValue);
+ }
+ });
+ };
+
+ const deny = (instance, value) => {
+ const innerParams = privateProps.innerParams.get(instance || undefined);
+
+ if (innerParams.showLoaderOnDeny) {
+ showLoading(getDenyButton());
+ }
+
+ if (innerParams.preDeny) {
+ const preDenyPromise = Promise.resolve().then(() => asPromise(innerParams.preDeny(value, innerParams.validationMessage)));
+ preDenyPromise.then(preDenyValue => {
+ if (preDenyValue === false) {
+ instance.hideLoading();
+ } else {
+ instance.closePopup({
+ isDenied: true,
+ value: typeof preDenyValue === 'undefined' ? value : preDenyValue
+ });
+ }
+ });
+ } else {
+ instance.closePopup({
+ isDenied: true,
+ value
+ });
+ }
+ };
+
+ const succeedWith = (instance, value) => {
+ instance.closePopup({
+ isConfirmed: true,
+ value
+ });
+ };
+
+ const confirm = (instance, value) => {
+ const innerParams = privateProps.innerParams.get(instance || undefined);
+
+ if (innerParams.showLoaderOnConfirm) {
+ showLoading();
+ }
+
+ if (innerParams.preConfirm) {
+ instance.resetValidationMessage();
+ const preConfirmPromise = Promise.resolve().then(() => asPromise(innerParams.preConfirm(value, innerParams.validationMessage)));
+ preConfirmPromise.then(preConfirmValue => {
+ if (isVisible(getValidationMessage()) || preConfirmValue === false) {
+ instance.hideLoading();
+ } else {
+ succeedWith(instance, typeof preConfirmValue === 'undefined' ? value : preConfirmValue);
+ }
+ });
+ } else {
+ succeedWith(instance, value);
+ }
+ };
+
+ const addKeydownHandler = (instance, globalState, innerParams, dismissWith) => {
+ if (globalState.keydownTarget && globalState.keydownHandlerAdded) {
+ globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, {
+ capture: globalState.keydownListenerCapture
+ });
+ globalState.keydownHandlerAdded = false;
+ }
+
+ if (!innerParams.toast) {
+ globalState.keydownHandler = e => keydownHandler(instance, e, dismissWith);
+
+ globalState.keydownTarget = innerParams.keydownListenerCapture ? window : getPopup();
+ globalState.keydownListenerCapture = innerParams.keydownListenerCapture;
+ globalState.keydownTarget.addEventListener('keydown', globalState.keydownHandler, {
+ capture: globalState.keydownListenerCapture
+ });
+ globalState.keydownHandlerAdded = true;
+ }
+ }; // Focus handling
+
+ const setFocus = (innerParams, index, increment) => {
+ const focusableElements = getFocusableElements(); // search for visible elements and select the next possible match
+
+ if (focusableElements.length) {
+ index = index + increment; // rollover to first item
+
+ if (index === focusableElements.length) {
+ index = 0; // go to last item
+ } else if (index === -1) {
+ index = focusableElements.length - 1;
+ }
+
+ return focusableElements[index].focus();
+ } // no visible focusable elements, focus the popup
+
+
+ getPopup().focus();
+ };
+ const arrowKeysNextButton = ['ArrowRight', 'ArrowDown'];
+ const arrowKeysPreviousButton = ['ArrowLeft', 'ArrowUp'];
+
+ const keydownHandler = (instance, e, dismissWith) => {
+ const innerParams = privateProps.innerParams.get(instance);
+
+ if (!innerParams) {
+ return; // This instance has already been destroyed
+ }
+
+ if (innerParams.stopKeydownPropagation) {
+ e.stopPropagation();
+ } // ENTER
+
+
+ if (e.key === 'Enter') {
+ handleEnter(instance, e, innerParams); // TAB
+ } else if (e.key === 'Tab') {
+ handleTab(e, innerParams); // ARROWS - switch focus between buttons
+ } else if ([...arrowKeysNextButton, ...arrowKeysPreviousButton].includes(e.key)) {
+ handleArrows(e.key); // ESC
+ } else if (e.key === 'Escape') {
+ handleEsc(e, innerParams, dismissWith);
+ }
+ };
+
+ const handleEnter = (instance, e, innerParams) => {
+ // #720 #721
+ if (e.isComposing) {
+ return;
+ }
+
+ if (e.target && instance.getInput() && e.target.outerHTML === instance.getInput().outerHTML) {
+ if (['textarea', 'file'].includes(innerParams.input)) {
+ return; // do not submit
+ }
+
+ clickConfirm();
+ e.preventDefault();
+ }
+ };
+
+ const handleTab = (e, innerParams) => {
+ const targetElement = e.target;
+ const focusableElements = getFocusableElements();
+ let btnIndex = -1;
+
+ for (let i = 0; i < focusableElements.length; i++) {
+ if (targetElement === focusableElements[i]) {
+ btnIndex = i;
+ break;
+ }
+ }
+
+ if (!e.shiftKey) {
+ // Cycle to the next button
+ setFocus(innerParams, btnIndex, 1);
+ } else {
+ // Cycle to the prev button
+ setFocus(innerParams, btnIndex, -1);
+ }
+
+ e.stopPropagation();
+ e.preventDefault();
+ };
+
+ const handleArrows = key => {
+ const confirmButton = getConfirmButton();
+ const denyButton = getDenyButton();
+ const cancelButton = getCancelButton();
+
+ if (![confirmButton, denyButton, cancelButton].includes(document.activeElement)) {
+ return;
+ }
+
+ const sibling = arrowKeysNextButton.includes(key) ? 'nextElementSibling' : 'previousElementSibling';
+ const buttonToFocus = document.activeElement[sibling];
+
+ if (buttonToFocus) {
+ buttonToFocus.focus();
+ }
+ };
+
+ const handleEsc = (e, innerParams, dismissWith) => {
+ if (callIfFunction(innerParams.allowEscapeKey)) {
+ e.preventDefault();
+ dismissWith(DismissReason.esc);
+ }
+ };
+
+ const handlePopupClick = (instance, domCache, dismissWith) => {
+ const innerParams = privateProps.innerParams.get(instance);
+
+ if (innerParams.toast) {
+ handleToastClick(instance, domCache, dismissWith);
+ } else {
+ // Ignore click events that had mousedown on the popup but mouseup on the container
+ // This can happen when the user drags a slider
+ handleModalMousedown(domCache); // Ignore click events that had mousedown on the container but mouseup on the popup
+
+ handleContainerMousedown(domCache);
+ handleModalClick(instance, domCache, dismissWith);
+ }
+ };
+
+ const handleToastClick = (instance, domCache, dismissWith) => {
+ // Closing toast by internal click
+ domCache.popup.onclick = () => {
+ const innerParams = privateProps.innerParams.get(instance);
+
+ if (innerParams.showConfirmButton || innerParams.showDenyButton || innerParams.showCancelButton || innerParams.showCloseButton || innerParams.timer || innerParams.input) {
+ return;
+ }
+
+ dismissWith(DismissReason.close);
+ };
+ };
+
+ let ignoreOutsideClick = false;
+
+ const handleModalMousedown = domCache => {
+ domCache.popup.onmousedown = () => {
+ domCache.container.onmouseup = function (e) {
+ domCache.container.onmouseup = undefined; // We only check if the mouseup target is the container because usually it doesn't
+ // have any other direct children aside of the popup
+
+ if (e.target === domCache.container) {
+ ignoreOutsideClick = true;
+ }
+ };
+ };
+ };
+
+ const handleContainerMousedown = domCache => {
+ domCache.container.onmousedown = () => {
+ domCache.popup.onmouseup = function (e) {
+ domCache.popup.onmouseup = undefined; // We also need to check if the mouseup target is a child of the popup
+
+ if (e.target === domCache.popup || domCache.popup.contains(e.target)) {
+ ignoreOutsideClick = true;
+ }
+ };
+ };
+ };
+
+ const handleModalClick = (instance, domCache, dismissWith) => {
+ domCache.container.onclick = e => {
+ const innerParams = privateProps.innerParams.get(instance);
+
+ if (ignoreOutsideClick) {
+ ignoreOutsideClick = false;
+ return;
+ }
+
+ if (e.target === domCache.container && callIfFunction(innerParams.allowOutsideClick)) {
+ dismissWith(DismissReason.backdrop);
+ }
+ };
+ };
+
+ function _main(userParams, mixinParams = {}) {
+ showWarningsForParams(Object.assign({}, mixinParams, userParams));
+
+ if (globalState.currentInstance) {
+ globalState.currentInstance._destroy();
+
+ if (isModal()) {
+ unsetAriaHidden();
+ }
+ }
+
+ globalState.currentInstance = this;
+ const innerParams = prepareParams(userParams, mixinParams);
+ setParameters(innerParams);
+ Object.freeze(innerParams); // clear the previous timer
+
+ if (globalState.timeout) {
+ globalState.timeout.stop();
+ delete globalState.timeout;
+ } // clear the restore focus timeout
+
+
+ clearTimeout(globalState.restoreFocusTimeout);
+ const domCache = populateDomCache(this);
+ render(this, innerParams);
+ privateProps.innerParams.set(this, innerParams);
+ return swalPromise(this, domCache, innerParams);
+ }
+
+ const prepareParams = (userParams, mixinParams) => {
+ const templateParams = getTemplateParams(userParams);
+ const params = Object.assign({}, defaultParams, mixinParams, templateParams, userParams); // precedence is described in #2131
+
+ params.showClass = Object.assign({}, defaultParams.showClass, params.showClass);
+ params.hideClass = Object.assign({}, defaultParams.hideClass, params.hideClass);
+ return params;
+ };
+
+ const swalPromise = (instance, domCache, innerParams) => {
+ return new Promise(resolve => {
+ // functions to handle all closings/dismissals
+ const dismissWith = dismiss => {
+ instance.closePopup({
+ isDismissed: true,
+ dismiss
+ });
+ };
+
+ privateMethods.swalPromiseResolve.set(instance, resolve);
+
+ domCache.confirmButton.onclick = () => handleConfirmButtonClick(instance);
+
+ domCache.denyButton.onclick = () => handleDenyButtonClick(instance);
+
+ domCache.cancelButton.onclick = () => handleCancelButtonClick(instance, dismissWith);
+
+ domCache.closeButton.onclick = () => dismissWith(DismissReason.close);
+
+ handlePopupClick(instance, domCache, dismissWith);
+ addKeydownHandler(instance, globalState, innerParams, dismissWith);
+ handleInputOptionsAndValue(instance, innerParams);
+ openPopup(innerParams);
+ setupTimer(globalState, innerParams, dismissWith);
+ initFocus(domCache, innerParams); // Scroll container to top on open (#1247, #1946)
+
+ setTimeout(() => {
+ domCache.container.scrollTop = 0;
+ });
+ });
+ };
+
+ const populateDomCache = instance => {
+ const domCache = {
+ popup: getPopup(),
+ container: getContainer(),
+ actions: getActions(),
+ confirmButton: getConfirmButton(),
+ denyButton: getDenyButton(),
+ cancelButton: getCancelButton(),
+ loader: getLoader(),
+ closeButton: getCloseButton(),
+ validationMessage: getValidationMessage(),
+ progressSteps: getProgressSteps()
+ };
+ privateProps.domCache.set(instance, domCache);
+ return domCache;
+ };
+
+ const setupTimer = (globalState$$1, innerParams, dismissWith) => {
+ const timerProgressBar = getTimerProgressBar();
+ hide(timerProgressBar);
+
+ if (innerParams.timer) {
+ globalState$$1.timeout = new Timer(() => {
+ dismissWith('timer');
+ delete globalState$$1.timeout;
+ }, innerParams.timer);
+
+ if (innerParams.timerProgressBar) {
+ show(timerProgressBar);
+ setTimeout(() => {
+ if (globalState$$1.timeout && globalState$$1.timeout.running) {
+ // timer can be already stopped or unset at this point
+ animateTimerProgressBar(innerParams.timer);
+ }
+ });
+ }
+ }
+ };
+
+ const initFocus = (domCache, innerParams) => {
+ if (innerParams.toast) {
+ return;
+ }
+
+ if (!callIfFunction(innerParams.allowEnterKey)) {
+ return blurActiveElement();
+ }
+
+ if (!focusButton(domCache, innerParams)) {
+ setFocus(innerParams, -1, 1);
+ }
+ };
+
+ const focusButton = (domCache, innerParams) => {
+ if (innerParams.focusDeny && isVisible(domCache.denyButton)) {
+ domCache.denyButton.focus();
+ return true;
+ }
+
+ if (innerParams.focusCancel && isVisible(domCache.cancelButton)) {
+ domCache.cancelButton.focus();
+ return true;
+ }
+
+ if (innerParams.focusConfirm && isVisible(domCache.confirmButton)) {
+ domCache.confirmButton.focus();
+ return true;
+ }
+
+ return false;
+ };
+
+ const blurActiveElement = () => {
+ if (document.activeElement && typeof document.activeElement.blur === 'function') {
+ document.activeElement.blur();
+ }
+ };
+
+ /**
+ * Updates popup parameters.
+ */
+
+ function update(params) {
+ const popup = getPopup();
+ const innerParams = privateProps.innerParams.get(this);
+
+ if (!popup || hasClass(popup, innerParams.hideClass.popup)) {
+ return warn("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");
+ }
+
+ const validUpdatableParams = {}; // assign valid params from `params` to `defaults`
+
+ Object.keys(params).forEach(param => {
+ if (Swal.isUpdatableParameter(param)) {
+ validUpdatableParams[param] = params[param];
+ } else {
+ warn("Invalid parameter to update: \"".concat(param, "\". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\n\nIf you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md"));
+ }
+ });
+ const updatedParams = Object.assign({}, innerParams, validUpdatableParams);
+ render(this, updatedParams);
+ privateProps.innerParams.set(this, updatedParams);
+ Object.defineProperties(this, {
+ params: {
+ value: Object.assign({}, this.params, params),
+ writable: false,
+ enumerable: true
+ }
+ });
+ }
+
+ function _destroy() {
+ const domCache = privateProps.domCache.get(this);
+ const innerParams = privateProps.innerParams.get(this);
+
+ if (!innerParams) {
+ return; // This instance has already been destroyed
+ } // Check if there is another Swal closing
+
+
+ if (domCache.popup && globalState.swalCloseEventFinishedCallback) {
+ globalState.swalCloseEventFinishedCallback();
+ delete globalState.swalCloseEventFinishedCallback;
+ } // Check if there is a swal disposal defer timer
+
+
+ if (globalState.deferDisposalTimer) {
+ clearTimeout(globalState.deferDisposalTimer);
+ delete globalState.deferDisposalTimer;
+ }
+
+ if (typeof innerParams.didDestroy === 'function') {
+ innerParams.didDestroy();
+ }
+
+ disposeSwal(this);
+ }
+
+ const disposeSwal = instance => {
+ // Unset this.params so GC will dispose it (#1569)
+ delete instance.params; // Unset globalState props so GC will dispose globalState (#1569)
+
+ delete globalState.keydownHandler;
+ delete globalState.keydownTarget; // Unset WeakMaps so GC will be able to dispose them (#1569)
+
+ unsetWeakMaps(privateProps);
+ unsetWeakMaps(privateMethods); // Unset currentInstance
+
+ delete globalState.currentInstance;
+ };
+
+ const unsetWeakMaps = obj => {
+ for (const i in obj) {
+ obj[i] = new WeakMap();
+ }
+ };
+
+
+
+ var instanceMethods = /*#__PURE__*/Object.freeze({
+ hideLoading: hideLoading,
+ disableLoading: hideLoading,
+ getInput: getInput$1,
+ close: close,
+ closePopup: close,
+ closeModal: close,
+ closeToast: close,
+ enableButtons: enableButtons,
+ disableButtons: disableButtons,
+ enableInput: enableInput,
+ disableInput: disableInput,
+ showValidationMessage: showValidationMessage,
+ resetValidationMessage: resetValidationMessage$1,
+ getProgressSteps: getProgressSteps$1,
+ _main: _main,
+ update: update,
+ _destroy: _destroy
+ });
+
+ let currentInstance;
+
+ class SweetAlert {
+ constructor(...args) {
+ // Prevent run in Node env
+ if (typeof window === 'undefined') {
+ return;
+ }
+
+ currentInstance = this;
+ const outerParams = Object.freeze(this.constructor.argsToParams(args));
+ Object.defineProperties(this, {
+ params: {
+ value: outerParams,
+ writable: false,
+ enumerable: true,
+ configurable: true
+ }
+ });
+
+ const promise = this._main(this.params);
+
+ privateProps.promise.set(this, promise);
+ } // `catch` cannot be the name of a module export, so we define our thenable methods here instead
+
+
+ then(onFulfilled) {
+ const promise = privateProps.promise.get(this);
+ return promise.then(onFulfilled);
+ }
+
+ finally(onFinally) {
+ const promise = privateProps.promise.get(this);
+ return promise.finally(onFinally);
+ }
+
+ } // Assign instance methods from src/instanceMethods/*.js to prototype
+
+
+ Object.assign(SweetAlert.prototype, instanceMethods); // Assign static methods from src/staticMethods/*.js to constructor
+
+ Object.assign(SweetAlert, staticMethods); // Proxy to instance methods to constructor, for now, for backwards compatibility
+
+ Object.keys(instanceMethods).forEach(key => {
+ SweetAlert[key] = function (...args) {
+ if (currentInstance) {
+ return currentInstance[key](...args);
+ }
+ };
+ });
+ SweetAlert.DismissReason = DismissReason;
+ SweetAlert.version = '11.1.7';
+
+ const Swal = SweetAlert;
+ Swal.default = Swal;
+
+ return Swal;
+
+}));
+if (typeof this !== 'undefined' && this.Sweetalert2){ this.swal = this.sweetAlert = this.Swal = this.SweetAlert = this.Sweetalert2}
+
+"undefined"!=typeof document&&function(e,t){var n=e.createElement("style");if(e.getElementsByTagName("head")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,".swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4!important;grid-row:1/4!important;grid-template-columns:1fr 99fr 1fr;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:grid;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;box-sizing:border-box;grid-template-areas:\"top-start top top-end\" \"center-start center center-end\" \"bottom-start bottom-center bottom-end\";grid-template-rows:minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto);grid-template-rows:minmax(min-content,auto) minmax(min-content,auto) minmax(min-content,auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-bottom-start,.swal2-container.swal2-center-start,.swal2-container.swal2-top-start{grid-template-columns:minmax(0,1fr) auto auto}.swal2-container.swal2-bottom,.swal2-container.swal2-center,.swal2-container.swal2-top{grid-template-columns:auto minmax(0,1fr) auto}.swal2-container.swal2-bottom-end,.swal2-container.swal2-center-end,.swal2-container.swal2-top-end{grid-template-columns:auto auto minmax(0,1fr)}.swal2-container.swal2-top-start>.swal2-popup{align-self:start}.swal2-container.swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}.swal2-container.swal2-top-end>.swal2-popup,.swal2-container.swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}.swal2-container.swal2-center-left>.swal2-popup,.swal2-container.swal2-center-start>.swal2-popup{grid-row:2;align-self:center}.swal2-container.swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}.swal2-container.swal2-center-end>.swal2-popup,.swal2-container.swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}.swal2-container.swal2-bottom-left>.swal2-popup,.swal2-container.swal2-bottom-start>.swal2-popup{grid-column:1;grid-row:3;align-self:end}.swal2-container.swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}.swal2-container.swal2-bottom-end>.swal2-popup,.swal2-container.swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}.swal2-container.swal2-grow-fullscreen>.swal2-popup,.swal2-container.swal2-grow-row>.swal2-popup{grid-column:1/4;width:100%}.swal2-container.swal2-grow-column>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}.swal2-container.swal2-no-transition{transition:none!important}.swal2-popup{display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0,100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-title{position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px transparent;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7367f0;color:#fff;font-size:1em}.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px rgba(115,103,240,.5)}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#ea5455;color:#fff;font-size:1em}.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px rgba(234,84,85,.5)}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7d88;color:#fff;font-size:1em}.swal2-styled.swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,125,136,.5)}.swal2-styled.swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled:focus{outline:0}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto!important;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:2em auto 1em}.swal2-close{z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em 2em 0}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px transparent;color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em 2em 0;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-file{width:75%;margin-right:auto;margin-left:auto;background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto 0}.swal2-validation-message{align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:.25em solid transparent;border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{background-color:transparent!important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:transparent;pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}");
\ No newline at end of file
diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/sweetalert2/sweetalert2.all.min.js b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/sweetalert2/sweetalert2.all.min.js
new file mode 100644
index 0000000000..7a84d6cdf6
--- /dev/null
+++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/sweetalert2/sweetalert2.all.min.js
@@ -0,0 +1,2 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Sweetalert2=t()}(this,function(){"use strict";const l=Object.freeze({cancel:"cancel",backdrop:"backdrop",close:"close",esc:"esc",timer:"timer"}),t="SweetAlert2:",o=e=>e.charAt(0).toUpperCase()+e.slice(1),a=e=>Array.prototype.slice.call(e),s=e=>{console.warn("".concat(t," ").concat("object"==typeof e?e.join(" "):e))},r=e=>{console.error("".concat(t," ").concat(e))},n=[],i=(e,t)=>{t='"'.concat(e,'" is deprecated and will be removed in the next major release. Please use "').concat(t,'" instead.'),n.includes(t)||(n.push(t),s(t))},c=e=>"function"==typeof e?e():e,u=e=>e&&"function"==typeof e.toPromise,d=e=>u(e)?e.toPromise():Promise.resolve(e),p=e=>e&&Promise.resolve(e)===e,m=e=>e instanceof Element||(e=>"object"==typeof e&&e.jquery)(e);var e=e=>{const t={};for(const n in e)t[e[n]]="swal2-"+e[n];return t};const h=e(["container","shown","height-auto","iosfix","popup","modal","no-backdrop","no-transition","toast","toast-shown","show","hide","close","title","html-container","actions","confirm","deny","cancel","default-outline","footer","icon","icon-content","image","input","file","range","select","radio","checkbox","label","textarea","inputerror","input-label","validation-message","progress-steps","active-progress-step","progress-step","progress-step-line","loader","loading","styled","top","top-start","top-end","top-left","top-right","center","center-start","center-end","center-left","center-right","bottom","bottom-start","bottom-end","bottom-left","bottom-right","grow-row","grow-column","grow-fullscreen","rtl","timer-progress-bar","timer-progress-bar-container","scrollbar-measure","icon-success","icon-warning","icon-info","icon-question","icon-error"]),g=e(["success","warning","info","question","error"]),b=()=>document.body.querySelector(".".concat(h.container)),f=e=>{const t=b();return t?t.querySelector(e):null},y=e=>f(".".concat(e)),v=()=>y(h.popup),w=()=>y(h.icon),C=()=>y(h.title),k=()=>y(h["html-container"]),A=()=>y(h.image),B=()=>y(h["progress-steps"]),x=()=>y(h["validation-message"]),P=()=>f(".".concat(h.actions," .").concat(h.confirm)),E=()=>f(".".concat(h.actions," .").concat(h.deny));const S=()=>f(".".concat(h.loader)),T=()=>f(".".concat(h.actions," .").concat(h.cancel)),L=()=>y(h.actions),O=()=>y(h.footer),j=()=>y(h["timer-progress-bar"]),D=()=>y(h.close),I=()=>{const e=a(v().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')).sort((e,t)=>(e=parseInt(e.getAttribute("tabindex")),(t=parseInt(t.getAttribute("tabindex")))"-1"!==e.getAttribute("tabindex"));return(t=>{const n=[];for(let e=0;eG(e))},M=()=>!H()&&!document.body.classList.contains(h["no-backdrop"]),H=()=>document.body.classList.contains(h["toast-shown"]);const q={previousBodyPadding:null},V=(t,e)=>{if(t.textContent="",e){const n=new DOMParser,o=n.parseFromString(e,"text/html");a(o.querySelector("head").childNodes).forEach(e=>{t.appendChild(e)}),a(o.querySelector("body").childNodes).forEach(e=>{t.appendChild(e)})}},N=(t,e)=>{if(!e)return!1;var n=e.split(/\s+/);for(let e=0;e{var o,i;if(o=e,i=t,a(o.classList).forEach(e=>{Object.values(h).includes(e)||Object.values(g).includes(e)||Object.values(i.showClass).includes(e)||o.classList.remove(e)}),t.customClass&&t.customClass[n]){if("string"!=typeof t.customClass[n]&&!t.customClass[n].forEach)return s("Invalid type of customClass.".concat(n,'! Expected string or iterable object, got "').concat(typeof t.customClass[n],'"'));W(e,t.customClass[n])}},F=(e,t)=>{if(!t)return null;switch(t){case"select":case"textarea":case"file":return K(e,h[t]);case"checkbox":return e.querySelector(".".concat(h.checkbox," input"));case"radio":return e.querySelector(".".concat(h.radio," input:checked"))||e.querySelector(".".concat(h.radio," input:first-child"));case"range":return e.querySelector(".".concat(h.range," input"));default:return K(e,h.input)}},R=e=>{var t;e.focus(),"file"!==e.type&&(t=e.value,e.value="",e.value=t)},z=(e,t,n)=>{e&&t&&(t="string"==typeof t?t.split(/\s+/).filter(Boolean):t).forEach(t=>{e.forEach?e.forEach(e=>{n?e.classList.add(t):e.classList.remove(t)}):n?e.classList.add(t):e.classList.remove(t)})},W=(e,t)=>{z(e,t,!0)},_=(e,t)=>{z(e,t,!1)},K=(t,n)=>{for(let e=0;e{(n=n==="".concat(parseInt(n))?parseInt(n):n)||0===parseInt(n)?e.style[t]="number"==typeof n?"".concat(n,"px"):n:e.style.removeProperty(t)},Z=(e,t="flex")=>{e.style.display=t},J=e=>{e.style.display="none"},X=(e,t,n,o)=>{const i=e.querySelector(t);i&&(i.style[n]=o)},$=(e,t,n)=>{t?Z(e,n):J(e)},G=e=>!(!e||!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)),Q=()=>!G(P())&&!G(E())&&!G(T()),ee=e=>!!(e.scrollHeight>e.clientHeight),te=e=>{const t=window.getComputedStyle(e);var n=parseFloat(t.getPropertyValue("animation-duration")||"0"),e=parseFloat(t.getPropertyValue("transition-duration")||"0");return 0{const n=j();G(n)&&(t&&(n.style.transition="none",n.style.width="100%"),setTimeout(()=>{n.style.transition="width ".concat(e/1e3,"s linear"),n.style.width="0%"},10))},oe=()=>"undefined"==typeof window||"undefined"==typeof document,ie='\n \n').replace(/(^|\n)\s*/g,""),ae=()=>{ln.isVisible()&&ln.resetValidationMessage()},se=e=>{var t=(()=>{const e=b();return!!e&&(e.remove(),_([document.documentElement,document.body],[h["no-backdrop"],h["toast-shown"],h["has-column"]]),!0)})();if(oe())r("SweetAlert2 requires document to initialize");else{const n=document.createElement("div");n.className=h.container,t&&W(n,h["no-transition"]),V(n,ie);const o="string"==typeof(t=e.target)?document.querySelector(t):t;o.appendChild(n),(e=>{const t=v();t.setAttribute("role",e.toast?"alert":"dialog"),t.setAttribute("aria-live",e.toast?"polite":"assertive"),e.toast||t.setAttribute("aria-modal","true")})(e),e=o,"rtl"===window.getComputedStyle(e).direction&&W(b(),h.rtl),(()=>{const e=v(),t=K(e,h.input),n=K(e,h.file),o=e.querySelector(".".concat(h.range," input")),i=e.querySelector(".".concat(h.range," output")),a=K(e,h.select),s=e.querySelector(".".concat(h.checkbox," input")),r=K(e,h.textarea);t.oninput=ae,n.onchange=ae,a.onchange=ae,s.onchange=ae,r.oninput=ae,o.oninput=()=>{ae(),i.value=o.value},o.onchange=()=>{ae(),o.nextSibling.value=o.value}})()}},re=(e,t)=>{e instanceof HTMLElement?t.appendChild(e):"object"==typeof e?ce(e,t):e&&V(t,e)},ce=(e,t)=>{e.jquery?le(t,e):V(t,e.toString())},le=(t,n)=>{if(t.textContent="",0 in n)for(let e=0;e in n;e++)t.appendChild(n[e].cloneNode(!0));else t.appendChild(n.cloneNode(!0))},ue=(()=>{if(oe())return!1;var e=document.createElement("div"),t={WebkitAnimation:"webkitAnimationEnd",OAnimation:"oAnimationEnd oanimationend",animation:"animationend"};for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&void 0!==e.style[n])return t[n];return!1})(),de=(e,t)=>{const n=L();var o=S(),i=P(),a=E(),s=T();(t.showConfirmButton||t.showDenyButton||t.showCancelButton?Z:J)(n),U(n,t,"actions"),pe(i,"confirm",t),pe(a,"deny",t),pe(s,"cancel",t),function(e,t,n,o){if(!o.buttonsStyling)return _([e,t,n],h.styled);W([e,t,n],h.styled),o.confirmButtonColor&&(e.style.backgroundColor=o.confirmButtonColor,W(e,h["default-outline"]));o.denyButtonColor&&(t.style.backgroundColor=o.denyButtonColor,W(t,h["default-outline"]));o.cancelButtonColor&&(n.style.backgroundColor=o.cancelButtonColor,W(n,h["default-outline"]))}(i,a,s,t),t.reverseButtons&&(n.insertBefore(s,o),n.insertBefore(a,o),n.insertBefore(i,o)),V(o,t.loaderHtml),U(o,t,"loader")};function pe(e,t,n){$(e,n["show".concat(o(t),"Button")],"inline-block"),V(e,n["".concat(t,"ButtonText")]),e.setAttribute("aria-label",n["".concat(t,"ButtonAriaLabel")]),e.className=h[t],U(e,n,"".concat(t,"Button")),W(e,n["".concat(t,"ButtonClass")])}const me=(e,t)=>{var n,o,i=b();i&&(o=i,"string"==typeof(n=t.backdrop)?o.style.background=n:n||W([document.documentElement,document.body],h["no-backdrop"]),o=i,(n=t.position)in h?W(o,h[n]):(s('The "position" parameter is not valid, defaulting to "center"'),W(o,h.center)),n=i,!(o=t.grow)||"string"!=typeof o||(o="grow-".concat(o))in h&&W(n,h[o]),U(i,t,"container"))};var he={promise:new WeakMap,innerParams:new WeakMap,domCache:new WeakMap};const ge=["input","file","range","select","radio","checkbox","textarea"],be=e=>{if(!ke[e.input])return r('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'.concat(e.input,'"'));var t=Ce(e.input);const n=ke[e.input](t,e);Z(n),setTimeout(()=>{R(n)})},fe=(e,t)=>{const n=F(v(),e);if(n){(t=>{for(let e=0;e{var t=Ce(e.input);e.customClass&&W(t,e.customClass.input)},ve=(e,t)=>{e.placeholder&&!t.inputPlaceholder||(e.placeholder=t.inputPlaceholder)},we=(e,t,n)=>{if(n.inputLabel){e.id=h.input;const i=document.createElement("label");var o=h["input-label"];i.setAttribute("for",e.id),i.className=o,W(i,n.customClass.inputLabel),i.innerText=n.inputLabel,t.insertAdjacentElement("beforebegin",i)}},Ce=e=>{e=h[e]||h.input;return K(v(),e)},ke={};ke.text=ke.email=ke.password=ke.number=ke.tel=ke.url=(e,t)=>("string"==typeof t.inputValue||"number"==typeof t.inputValue?e.value=t.inputValue:p(t.inputValue)||s('Unexpected type of inputValue! Expected "string", "number" or "Promise", got "'.concat(typeof t.inputValue,'"')),we(e,e,t),ve(e,t),e.type=t.input,e),ke.file=(e,t)=>(we(e,e,t),ve(e,t),e),ke.range=(e,t)=>{const n=e.querySelector("input"),o=e.querySelector("output");return n.value=t.inputValue,n.type=t.input,o.value=t.inputValue,we(n,e,t),e},ke.select=(e,t)=>{if(e.textContent="",t.inputPlaceholder){const n=document.createElement("option");V(n,t.inputPlaceholder),n.value="",n.disabled=!0,n.selected=!0,e.appendChild(n)}return we(e,e,t),e},ke.radio=e=>(e.textContent="",e),ke.checkbox=(e,t)=>{const n=F(v(),"checkbox");n.value=1,n.id=h.checkbox,n.checked=Boolean(t.inputValue);var o=e.querySelector("span");return V(o,t.inputPlaceholder),e},ke.textarea=(n,e)=>{n.value=e.inputValue,ve(n,e),we(n,n,e);return setTimeout(()=>{if("MutationObserver"in window){const t=parseInt(window.getComputedStyle(v()).width);new MutationObserver(()=>{var e,e=n.offsetWidth+(e=n,parseInt(window.getComputedStyle(e).marginLeft)+parseInt(window.getComputedStyle(e).marginRight));e>t?v().style.width="".concat(e,"px"):v().style.width=null}).observe(n,{attributes:!0,attributeFilter:["style"]})}}),n};const Ae=(e,t)=>{const n=k();U(n,t,"htmlContainer"),t.html?(re(t.html,n),Z(n,"block")):t.text?(n.textContent=t.text,Z(n,"block")):J(n),((e,o)=>{const i=v();e=he.innerParams.get(e);const a=!e||o.input!==e.input;ge.forEach(e=>{var t=h[e];const n=K(i,t);fe(e,o.inputAttributes),n.className=t,a&&J(n)}),o.input&&(a&&be(o),ye(o))})(e,t)},Be=(e,t)=>{for(const n in g)t.icon!==n&&_(e,g[n]);W(e,g[t.icon]),Ee(e,t),xe(),U(e,t,"icon")},xe=()=>{const e=v();var t=window.getComputedStyle(e).getPropertyValue("background-color");const n=e.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix");for(let e=0;e{var n;e.textContent="",t.iconHtml?V(e,Se(t.iconHtml)):"success"===t.icon?V(e,'\n
\n \n
\n
\n '):"error"===t.icon?V(e,'\n \n \n \n \n '):(n={question:"?",warning:"!",info:"i"},V(e,Se(n[t.icon])))},Ee=(e,t)=>{if(t.iconColor){e.style.color=t.iconColor,e.style.borderColor=t.iconColor;for(const n of[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"])X(e,n,"backgroundColor",t.iconColor);X(e,".swal2-success-ring","borderColor",t.iconColor)}},Se=e=>'').concat(e,"
"),Te=(e,o)=>{const i=B();if(!o.progressSteps||0===o.progressSteps.length)return J(i);Z(i),i.textContent="",o.currentProgressStep>=o.progressSteps.length&&s("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),o.progressSteps.forEach((e,t)=>{var n,e=(n=e,e=document.createElement("li"),W(e,h["progress-step"]),V(e,n),e);i.appendChild(e),t===o.currentProgressStep&&W(e,h["active-progress-step"]),t!==o.progressSteps.length-1&&(t=(e=>{const t=document.createElement("li");return W(t,h["progress-step-line"]),e.progressStepsDistance&&(t.style.width=e.progressStepsDistance),t})(o),i.appendChild(t))})},Le=(e,t)=>{e.className="".concat(h.popup," ").concat(G(e)?t.showClass.popup:""),t.toast?(W([document.documentElement,document.body],h["toast-shown"]),W(e,h.toast)):W(e,h.modal),U(e,t,"popup"),"string"==typeof t.customClass&&W(e,t.customClass),t.icon&&W(e,h["icon-".concat(t.icon)])},Oe=(e,t)=>{var n,o,i;(e=>{var t=b();const n=v();e.toast?(Y(t,"width",e.width),n.style.width="100%",n.insertBefore(S(),w())):Y(n,"width",e.width),Y(n,"padding",e.padding),e.background&&(n.style.background=e.background),J(x()),Le(n,e)})(t),me(0,t),Te(0,t),i=e,n=t,o=he.innerParams.get(i),i=w(),o&&n.icon===o.icon?(Pe(i,n),Be(i,n)):n.icon||n.iconHtml?n.icon&&-1===Object.keys(g).indexOf(n.icon)?(r('Unknown icon! Expected "success", "error", "warning", "info" or "question", got "'.concat(n.icon,'"')),J(i)):(Z(i),Pe(i,n),Be(i,n),W(i,n.showClass.icon)):J(i),(e=>{const t=A();if(!e.imageUrl)return J(t);Z(t,""),t.setAttribute("src",e.imageUrl),t.setAttribute("alt",e.imageAlt),Y(t,"width",e.imageWidth),Y(t,"height",e.imageHeight),t.className=h.image,U(t,e,"image")})(t),(e=>{const t=C();$(t,e.title||e.titleText,"block"),e.title&&re(e.title,t),e.titleText&&(t.innerText=e.titleText),U(t,e,"title")})(t),(e=>{const t=D();V(t,e.closeButtonHtml),U(t,e,"closeButton"),$(t,e.showCloseButton),t.setAttribute("aria-label",e.closeButtonAriaLabel)})(t),Ae(e,t),de(0,t),i=t,e=O(),$(e,i.footer),i.footer&&re(i.footer,e),U(e,i,"footer"),"function"==typeof t.didRender&&t.didRender(v())};const je=()=>P()&&P().click();const De=e=>{let t=v();t||ln.fire(),t=v();var n=S();H()?J(w()):Ie(t,e),Z(n),t.setAttribute("data-loading",!0),t.setAttribute("aria-busy",!0),t.focus()},Ie=(e,t)=>{var n=L();const o=S();!t&&G(P())&&(t=P()),Z(n),t&&(J(t),o.setAttribute("data-button-to-replace",t.className)),o.parentNode.insertBefore(o,t),W([e,n],h.loading)},Me={},He=o=>new Promise(e=>{if(!o)return e();var t=window.scrollX,n=window.scrollY;Me.restoreFocusTimeout=setTimeout(()=>{Me.previousActiveElement&&Me.previousActiveElement.focus?(Me.previousActiveElement.focus(),Me.previousActiveElement=null):document.body&&document.body.focus(),e()},100),window.scrollTo(t,n)});const qe=()=>{if(Me.timeout)return(()=>{const e=j();var t=parseInt(window.getComputedStyle(e).width);e.style.removeProperty("transition"),e.style.width="100%";var n=parseInt(window.getComputedStyle(e).width),n=parseInt(t/n*100);e.style.removeProperty("transition"),e.style.width="".concat(n,"%")})(),Me.timeout.stop()},Ve=()=>{if(Me.timeout){var e=Me.timeout.start();return ne(e),e}};let Ne=!1;const Ue={};const Fe=t=>{for(let e=t.target;e&&e!==document;e=e.parentNode)for(const o in Ue){var n=e.getAttribute(o);if(n)return void Ue[o].fire({template:n})}},Re={title:"",titleText:"",text:"",html:"",footer:"",icon:void 0,iconColor:void 0,iconHtml:void 0,template:void 0,toast:!1,showClass:{popup:"swal2-show",backdrop:"swal2-backdrop-show",icon:"swal2-icon-show"},hideClass:{popup:"swal2-hide",backdrop:"swal2-backdrop-hide",icon:"swal2-icon-hide"},customClass:{},target:"body",backdrop:!0,heightAuto:!0,allowOutsideClick:!0,allowEscapeKey:!0,allowEnterKey:!0,stopKeydownPropagation:!0,keydownListenerCapture:!1,showConfirmButton:!0,showDenyButton:!1,showCancelButton:!1,preConfirm:void 0,preDeny:void 0,confirmButtonText:"OK",confirmButtonAriaLabel:"",confirmButtonColor:void 0,denyButtonText:"No",denyButtonAriaLabel:"",denyButtonColor:void 0,cancelButtonText:"Cancel",cancelButtonAriaLabel:"",cancelButtonColor:void 0,buttonsStyling:!0,reverseButtons:!1,focusConfirm:!0,focusDeny:!1,focusCancel:!1,returnFocus:!0,showCloseButton:!1,closeButtonHtml:"×",closeButtonAriaLabel:"Close this dialog",loaderHtml:"",showLoaderOnConfirm:!1,showLoaderOnDeny:!1,imageUrl:void 0,imageWidth:void 0,imageHeight:void 0,imageAlt:"",timer:void 0,timerProgressBar:!1,width:void 0,padding:void 0,background:void 0,input:void 0,inputPlaceholder:"",inputLabel:"",inputValue:"",inputOptions:{},inputAutoTrim:!0,inputAttributes:{},inputValidator:void 0,returnInputValueOnDeny:!1,validationMessage:void 0,grow:!1,position:"center",progressSteps:[],currentProgressStep:void 0,progressStepsDistance:void 0,willOpen:void 0,didOpen:void 0,didRender:void 0,willClose:void 0,didClose:void 0,didDestroy:void 0,scrollbarPadding:!0},ze=["allowEscapeKey","allowOutsideClick","background","buttonsStyling","cancelButtonAriaLabel","cancelButtonColor","cancelButtonText","closeButtonAriaLabel","closeButtonHtml","confirmButtonAriaLabel","confirmButtonColor","confirmButtonText","currentProgressStep","customClass","denyButtonAriaLabel","denyButtonColor","denyButtonText","didClose","didDestroy","footer","hideClass","html","icon","iconColor","iconHtml","imageAlt","imageHeight","imageUrl","imageWidth","preConfirm","preDeny","progressSteps","returnFocus","reverseButtons","showCancelButton","showCloseButton","showConfirmButton","showDenyButton","text","title","titleText","willClose"],We={},_e=["allowOutsideClick","allowEnterKey","backdrop","focusConfirm","focusDeny","focusCancel","returnFocus","heightAuto","keydownListenerCapture"],Ke=e=>Object.prototype.hasOwnProperty.call(Re,e);const Ye=e=>We[e],Ze=e=>{!e.backdrop&&e.allowOutsideClick&&s('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`');for(const o in e)n=o,Ke(n)||s('Unknown parameter "'.concat(n,'"')),e.toast&&(t=o,_e.includes(t)&&s('The parameter "'.concat(t,'" is incompatible with toasts'))),t=o,Ye(t)&&i(t,Ye(t));var t,n};var Je=Object.freeze({isValidParameter:Ke,isUpdatableParameter:e=>-1!==ze.indexOf(e),isDeprecatedParameter:Ye,argsToParams:n=>{const o={};return"object"!=typeof n[0]||m(n[0])?["title","html","icon"].forEach((e,t)=>{t=n[t];"string"==typeof t||m(t)?o[e]=t:void 0!==t&&r("Unexpected type of ".concat(e,'! Expected "string" or "Element", got ').concat(typeof t))}):Object.assign(o,n[0]),o},isVisible:()=>G(v()),clickConfirm:je,clickDeny:()=>E()&&E().click(),clickCancel:()=>T()&&T().click(),getContainer:b,getPopup:v,getTitle:C,getHtmlContainer:k,getImage:A,getIcon:w,getInputLabel:()=>y(h["input-label"]),getCloseButton:D,getActions:L,getConfirmButton:P,getDenyButton:E,getCancelButton:T,getLoader:S,getFooter:O,getTimerProgressBar:j,getFocusableElements:I,getValidationMessage:x,isLoading:()=>v().hasAttribute("data-loading"),fire:function(...e){return new this(...e)},mixin:function(n){class e extends this{_main(e,t){return super._main(e,Object.assign({},n,t))}}return e},showLoading:De,enableLoading:De,getTimerLeft:()=>Me.timeout&&Me.timeout.getTimerLeft(),stopTimer:qe,resumeTimer:Ve,toggleTimer:()=>{var e=Me.timeout;return e&&(e.running?qe:Ve)()},increaseTimer:e=>{if(Me.timeout){e=Me.timeout.increase(e);return ne(e,!0),e}},isTimerRunning:()=>Me.timeout&&Me.timeout.isRunning(),bindClickHandler:function(e="data-swal-template"){Ue[e]=this,Ne||(document.body.addEventListener("click",Fe),Ne=!0)}});function Xe(){var e=he.innerParams.get(this);if(e){const t=he.domCache.get(this);J(t.loader),H()?e.icon&&Z(w()):(e=>{const t=e.popup.getElementsByClassName(e.loader.getAttribute("data-button-to-replace"));if(t.length)Z(t[0],"inline-block");else if(Q())J(e.actions)})(t),_([t.popup,t.actions],h.loading),t.popup.removeAttribute("aria-busy"),t.popup.removeAttribute("data-loading"),t.confirmButton.disabled=!1,t.denyButton.disabled=!1,t.cancelButton.disabled=!1}}const $e=()=>{null===q.previousBodyPadding&&document.body.scrollHeight>window.innerHeight&&(q.previousBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight="".concat(q.previousBodyPadding+(()=>{const e=document.createElement("div");e.className=h["scrollbar-measure"],document.body.appendChild(e);var t=e.getBoundingClientRect().width-e.clientWidth;return document.body.removeChild(e),t})(),"px"))},Ge=()=>{navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i)||v().scrollHeight>window.innerHeight-44&&(b().style.paddingBottom="".concat(44,"px"))},Qe=()=>{const e=b();let t;e.ontouchstart=e=>{t=et(e)},e.ontouchmove=e=>{t&&(e.preventDefault(),e.stopPropagation())}},et=e=>{var t=e.target,n=b();return!tt(e)&&!nt(e)&&(t===n||!(ee(n)||"INPUT"===t.tagName||"TEXTAREA"===t.tagName||ee(k())&&k().contains(t)))},tt=e=>e.touches&&e.touches.length&&"stylus"===e.touches[0].touchType,nt=e=>e.touches&&1{const e=a(document.body.children);e.forEach(e=>{e.hasAttribute("data-previous-aria-hidden")?(e.setAttribute("aria-hidden",e.getAttribute("data-previous-aria-hidden")),e.removeAttribute("data-previous-aria-hidden")):e.removeAttribute("aria-hidden")})};var it={swalPromiseResolve:new WeakMap};function at(e,t,n,o){H()?ct(e,o):(He(n).then(()=>ct(e,o)),Me.keydownTarget.removeEventListener("keydown",Me.keydownHandler,{capture:Me.keydownListenerCapture}),Me.keydownHandlerAdded=!1),/^((?!chrome|android).)*safari/i.test(navigator.userAgent)?(t.setAttribute("style","display:none !important"),t.removeAttribute("class"),t.innerHTML=""):t.remove(),M()&&(null!==q.previousBodyPadding&&(document.body.style.paddingRight="".concat(q.previousBodyPadding,"px"),q.previousBodyPadding=null),N(document.body,h.iosfix)&&(t=parseInt(document.body.style.top,10),_(document.body,h.iosfix),document.body.style.top="",document.body.scrollTop=-1*t),ot()),_([document.documentElement,document.body],[h.shown,h["height-auto"],h["no-backdrop"],h["toast-shown"]])}function st(e){var t=v();if(t){e=void 0!==(o=e)?Object.assign({isConfirmed:!1,isDenied:!1,isDismissed:!1},o):{isConfirmed:!1,isDenied:!1,isDismissed:!0};var n=he.innerParams.get(this);if(n&&!N(t,n.hideClass.popup)){const i=it.swalPromiseResolve.get(this);_(t,n.showClass.popup),W(t,n.hideClass.popup);var o=b();_(o,n.showClass.backdrop),W(o,n.hideClass.backdrop),((e,t,n)=>{const o=b(),i=ue&&te(t);if(typeof n.willClose==="function")n.willClose(t);if(i)rt(e,t,o,n.returnFocus,n.didClose);else at(e,o,n.returnFocus,n.didClose)})(this,t,n),i(e)}}}const rt=(e,t,n,o,i)=>{Me.swalCloseEventFinishedCallback=at.bind(null,e,n,o,i),t.addEventListener(ue,function(e){e.target===t&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback)})},ct=(e,t)=>{setTimeout(()=>{"function"==typeof t&&t.bind(e.params)(),e._destroy()})};function lt(e,t,n){const o=he.domCache.get(e);t.forEach(e=>{o[e].disabled=n})}function ut(e,t){if(!e)return!1;if("radio"===e.type){const n=e.parentNode.parentNode,o=n.querySelectorAll("input");for(let e=0;e/^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid email address"),url:(e,t)=>/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid URL")};function mt(e){var t,n;(t=e).inputValidator||Object.keys(pt).forEach(e=>{t.input===e&&(t.inputValidator=pt[e])}),e.showLoaderOnConfirm&&!e.preConfirm&&s("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request"),(n=e).target&&("string"!=typeof n.target||document.querySelector(n.target))&&("string"==typeof n.target||n.target.appendChild)||(s('Target parameter is not valid, defaulting to "body"'),n.target="body"),"string"==typeof e.title&&(e.title=e.title.split("\n").join(" ")),se(e)}const ht=["swal-title","swal-html","swal-footer"],gt=e=>{e="string"==typeof e.template?document.querySelector(e.template):e.template;if(!e)return{};e=e.content;return kt(e),Object.assign(bt(e),ft(e),yt(e),vt(e),wt(e),Ct(e,ht))},bt=e=>{const o={};return a(e.querySelectorAll("swal-param")).forEach(e=>{At(e,["name","value"]);var t=e.getAttribute("name");let n=e.getAttribute("value");"boolean"==typeof Re[t]&&"false"===n&&(n=!1),"object"==typeof Re[t]&&(n=JSON.parse(n)),o[t]=n}),o},ft=e=>{const n={};return a(e.querySelectorAll("swal-button")).forEach(e=>{At(e,["type","color","aria-label"]);var t=e.getAttribute("type");n["".concat(t,"ButtonText")]=e.innerHTML,n["show".concat(o(t),"Button")]=!0,e.hasAttribute("color")&&(n["".concat(t,"ButtonColor")]=e.getAttribute("color")),e.hasAttribute("aria-label")&&(n["".concat(t,"ButtonAriaLabel")]=e.getAttribute("aria-label"))}),n},yt=e=>{const t={},n=e.querySelector("swal-image");return n&&(At(n,["src","width","height","alt"]),n.hasAttribute("src")&&(t.imageUrl=n.getAttribute("src")),n.hasAttribute("width")&&(t.imageWidth=n.getAttribute("width")),n.hasAttribute("height")&&(t.imageHeight=n.getAttribute("height")),n.hasAttribute("alt")&&(t.imageAlt=n.getAttribute("alt"))),t},vt=e=>{const t={},n=e.querySelector("swal-icon");return n&&(At(n,["type","color"]),n.hasAttribute("type")&&(t.icon=n.getAttribute("type")),n.hasAttribute("color")&&(t.iconColor=n.getAttribute("color")),t.iconHtml=n.innerHTML),t},wt=e=>{const n={},t=e.querySelector("swal-input");t&&(At(t,["type","label","placeholder","value"]),n.input=t.getAttribute("type")||"text",t.hasAttribute("label")&&(n.inputLabel=t.getAttribute("label")),t.hasAttribute("placeholder")&&(n.inputPlaceholder=t.getAttribute("placeholder")),t.hasAttribute("value")&&(n.inputValue=t.getAttribute("value")));e=e.querySelectorAll("swal-input-option");return e.length&&(n.inputOptions={},a(e).forEach(e=>{At(e,["value"]);var t=e.getAttribute("value"),e=e.innerHTML;n.inputOptions[t]=e})),n},Ct=(e,t)=>{const n={};for(const o in t){const i=t[o],a=e.querySelector(i);a&&(At(a,[]),n[i.replace(/^swal-/,"")]=a.innerHTML.trim())}return n},kt=e=>{const t=ht.concat(["swal-param","swal-button","swal-image","swal-icon","swal-input","swal-input-option"]);a(e.children).forEach(e=>{e=e.tagName.toLowerCase();-1===t.indexOf(e)&&s("Unrecognized element <".concat(e,">"))})},At=(t,n)=>{a(t.attributes).forEach(e=>{-1===n.indexOf(e.name)&&s(['Unrecognized attribute "'.concat(e.name,'" on <').concat(t.tagName.toLowerCase(),">."),"".concat(n.length?"Allowed attributes are: ".concat(n.join(", ")):"To set the value, use HTML within the element.")])})},Bt=e=>{const t=b(),n=v();"function"==typeof e.willOpen&&e.willOpen(n);var o=window.getComputedStyle(document.body).overflowY;St(t,n,e),setTimeout(()=>{Pt(t,n)},10),M()&&(Et(t,e.scrollbarPadding,o),(()=>{const e=a(document.body.children);e.forEach(e=>{e===b()||e.contains(b())||(e.hasAttribute("aria-hidden")&&e.setAttribute("data-previous-aria-hidden",e.getAttribute("aria-hidden")),e.setAttribute("aria-hidden","true"))})})()),H()||Me.previousActiveElement||(Me.previousActiveElement=document.activeElement),"function"==typeof e.didOpen&&setTimeout(()=>e.didOpen(n)),_(t,h["no-transition"])},xt=e=>{const t=v();if(e.target===t){const n=b();t.removeEventListener(ue,xt),n.style.overflowY="auto"}},Pt=(e,t)=>{ue&&te(t)?(e.style.overflowY="hidden",t.addEventListener(ue,xt)):e.style.overflowY="auto"},Et=(e,t,n)=>{var o;(/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream||"MacIntel"===navigator.platform&&1{e.scrollTop=0})},St=(e,t,n)=>{W(e,n.showClass.backdrop),t.style.setProperty("opacity","0","important"),Z(t,"grid"),setTimeout(()=>{W(t,n.showClass.popup),t.style.removeProperty("opacity")},10),W([document.documentElement,document.body],h.shown),n.heightAuto&&n.backdrop&&!n.toast&&W([document.documentElement,document.body],h["height-auto"])},Tt=e=>e.checked?1:0,Lt=e=>e.checked?e.value:null,Ot=e=>e.files.length?null!==e.getAttribute("multiple")?e.files:e.files[0]:null,jt=(t,n)=>{const o=v(),i=e=>It[n.input](o,Mt(e),n);u(n.inputOptions)||p(n.inputOptions)?(De(P()),d(n.inputOptions).then(e=>{t.hideLoading(),i(e)})):"object"==typeof n.inputOptions?i(n.inputOptions):r("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(typeof n.inputOptions))},Dt=(t,n)=>{const o=t.getInput();J(o),d(n.inputValue).then(e=>{o.value="number"===n.input?parseFloat(e)||0:"".concat(e),Z(o),o.focus(),t.hideLoading()}).catch(e=>{r("Error in inputValue promise: ".concat(e)),o.value="",Z(o),o.focus(),t.hideLoading()})},It={select:(e,t,i)=>{const a=K(e,h.select),s=(e,t,n)=>{const o=document.createElement("option");o.value=n,V(o,t),o.selected=Ht(n,i.inputValue),e.appendChild(o)};t.forEach(e=>{var t=e[0];const n=e[1];if(Array.isArray(n)){const o=document.createElement("optgroup");o.label=t,o.disabled=!1,a.appendChild(o),n.forEach(e=>s(o,e[1],e[0]))}else s(a,n,t)}),a.focus()},radio:(e,t,a)=>{const s=K(e,h.radio);t.forEach(e=>{var t=e[0],e=e[1];const n=document.createElement("input"),o=document.createElement("label");n.type="radio",n.name=h.radio,n.value=t,Ht(t,a.inputValue)&&(n.checked=!0);const i=document.createElement("span");V(i,e),i.className=h.label,o.appendChild(n),o.appendChild(i),s.appendChild(o)});const n=s.querySelectorAll("input");n.length&&n[0].focus()}},Mt=n=>{const o=[];return"undefined"!=typeof Map&&n instanceof Map?n.forEach((e,t)=>{let n=e;"object"==typeof n&&(n=Mt(n)),o.push([t,n])}):Object.keys(n).forEach(e=>{let t=n[e];"object"==typeof t&&(t=Mt(t)),o.push([e,t])}),o},Ht=(e,t)=>t&&t.toString()===e.toString(),qt=(e,t)=>{var n=he.innerParams.get(e),o=((e,t)=>{const n=e.getInput();if(!n)return null;switch(t.input){case"checkbox":return Tt(n);case"radio":return Lt(n);case"file":return Ot(n);default:return t.inputAutoTrim?n.value.trim():n.value}})(e,n);n.inputValidator?Vt(e,o,t):e.getInput().checkValidity()?("deny"===t?Nt:Ft)(e,o):(e.enableButtons(),e.showValidationMessage(n.validationMessage))},Vt=(t,n,o)=>{const e=he.innerParams.get(t);t.disableInput();const i=Promise.resolve().then(()=>d(e.inputValidator(n,e.validationMessage)));i.then(e=>{t.enableButtons(),t.enableInput(),e?t.showValidationMessage(e):("deny"===o?Nt:Ft)(t,n)})},Nt=(t,n)=>{const e=he.innerParams.get(t||void 0);if(e.showLoaderOnDeny&&De(E()),e.preDeny){const o=Promise.resolve().then(()=>d(e.preDeny(n,e.validationMessage)));o.then(e=>{!1===e?t.hideLoading():t.closePopup({isDenied:!0,value:void 0===e?n:e})})}else t.closePopup({isDenied:!0,value:n})},Ut=(e,t)=>{e.closePopup({isConfirmed:!0,value:t})},Ft=(t,n)=>{const e=he.innerParams.get(t||void 0);if(e.showLoaderOnConfirm&&De(),e.preConfirm){t.resetValidationMessage();const o=Promise.resolve().then(()=>d(e.preConfirm(n,e.validationMessage)));o.then(e=>{G(x())||!1===e?t.hideLoading():Ut(t,void 0===e?n:e)})}else Ut(t,n)},Rt=(e,t,n)=>{const o=I();if(o.length)return(t+=n)===o.length?t=0:-1===t&&(t=o.length-1),o[t].focus();v().focus()},zt=["ArrowRight","ArrowDown"],Wt=["ArrowLeft","ArrowUp"],_t=(e,t,n)=>{var o=he.innerParams.get(e);o&&(o.stopKeydownPropagation&&t.stopPropagation(),"Enter"===t.key?Kt(e,t,o):"Tab"===t.key?Yt(t,o):[...zt,...Wt].includes(t.key)?Zt(t.key):"Escape"===t.key&&Jt(t,o,n))},Kt=(e,t,n)=>{t.isComposing||t.target&&e.getInput()&&t.target.outerHTML===e.getInput().outerHTML&&(["textarea","file"].includes(n.input)||(je(),t.preventDefault()))},Yt=(e,t)=>{var n=e.target,o=I();let i=-1;for(let e=0;e{const t=P(),n=E(),o=T();if([t,n,o].includes(document.activeElement)){e=zt.includes(e)?"nextElementSibling":"previousElementSibling";const i=document.activeElement[e];i&&i.focus()}},Jt=(e,t,n)=>{c(t.allowEscapeKey)&&(e.preventDefault(),n(l.esc))},Xt=(t,e,n)=>{e.popup.onclick=()=>{var e=he.innerParams.get(t);e.showConfirmButton||e.showDenyButton||e.showCancelButton||e.showCloseButton||e.timer||e.input||n(l.close)}};let $t=!1;const Gt=t=>{t.popup.onmousedown=()=>{t.container.onmouseup=function(e){t.container.onmouseup=void 0,e.target===t.container&&($t=!0)}}},Qt=t=>{t.container.onmousedown=()=>{t.popup.onmouseup=function(e){t.popup.onmouseup=void 0,e.target!==t.popup&&!t.popup.contains(e.target)||($t=!0)}}},en=(n,o,i)=>{o.container.onclick=e=>{var t=he.innerParams.get(n);$t?$t=!1:e.target===o.container&&c(t.allowOutsideClick)&&i(l.backdrop)}};const tn=(e,t,n)=>{var o=j();J(o),t.timer&&(e.timeout=new dt(()=>{n("timer"),delete e.timeout},t.timer),t.timerProgressBar&&(Z(o),setTimeout(()=>{e.timeout&&e.timeout.running&&ne(t.timer)})))},nn=(e,t)=>{if(!t.toast)return c(t.allowEnterKey)?void(on(e,t)||Rt(0,-1,1)):an()},on=(e,t)=>t.focusDeny&&G(e.denyButton)?(e.denyButton.focus(),!0):t.focusCancel&&G(e.cancelButton)?(e.cancelButton.focus(),!0):!(!t.focusConfirm||!G(e.confirmButton))&&(e.confirmButton.focus(),!0),an=()=>{document.activeElement&&"function"==typeof document.activeElement.blur&&document.activeElement.blur()};const sn=e=>{for(const t in e)e[t]=new WeakMap};e=Object.freeze({hideLoading:Xe,disableLoading:Xe,getInput:function(e){var t=he.innerParams.get(e||this);return(e=he.domCache.get(e||this))?F(e.popup,t.input):null},close:st,closePopup:st,closeModal:st,closeToast:st,enableButtons:function(){lt(this,["confirmButton","denyButton","cancelButton"],!1)},disableButtons:function(){lt(this,["confirmButton","denyButton","cancelButton"],!0)},enableInput:function(){return ut(this.getInput(),!1)},disableInput:function(){return ut(this.getInput(),!0)},showValidationMessage:function(e){const t=he.domCache.get(this);var n=he.innerParams.get(this);V(t.validationMessage,e),t.validationMessage.className=h["validation-message"],n.customClass&&n.customClass.validationMessage&&W(t.validationMessage,n.customClass.validationMessage),Z(t.validationMessage);const o=this.getInput();o&&(o.setAttribute("aria-invalid",!0),o.setAttribute("aria-describedby",h["validation-message"]),R(o),W(o,h.inputerror))},resetValidationMessage:function(){var e=he.domCache.get(this);e.validationMessage&&J(e.validationMessage);const t=this.getInput();t&&(t.removeAttribute("aria-invalid"),t.removeAttribute("aria-describedby"),_(t,h.inputerror))},getProgressSteps:function(){return he.domCache.get(this).progressSteps},_main:function(e,t={}){Ze(Object.assign({},t,e)),Me.currentInstance&&(Me.currentInstance._destroy(),M()&&ot()),Me.currentInstance=this,mt(e=((e,t)=>{const n=gt(e),o=Object.assign({},Re,t,n,e);return o.showClass=Object.assign({},Re.showClass,o.showClass),o.hideClass=Object.assign({},Re.hideClass,o.hideClass),o})(e,t)),Object.freeze(e),Me.timeout&&(Me.timeout.stop(),delete Me.timeout),clearTimeout(Me.restoreFocusTimeout);var s,r,c,t=(e=>{const t={popup:v(),container:b(),actions:L(),confirmButton:P(),denyButton:E(),cancelButton:T(),loader:S(),closeButton:D(),validationMessage:x(),progressSteps:B()};return he.domCache.set(e,t),t})(this);return Oe(this,e),he.innerParams.set(this,e),s=this,r=t,c=e,new Promise(e=>{const t=e=>{s.closePopup({isDismissed:!0,dismiss:e})};var n,o,i,a;it.swalPromiseResolve.set(s,e),r.confirmButton.onclick=()=>(e=>{var t=he.innerParams.get(e);e.disableButtons(),t.input?qt(e,"confirm"):Ft(e,!0)})(s),r.denyButton.onclick=()=>(e=>{var t=he.innerParams.get(e);e.disableButtons(),t.returnInputValueOnDeny?qt(e,"deny"):Nt(e,!1)})(s),r.cancelButton.onclick=()=>((e,t)=>{e.disableButtons(),t(l.cancel)})(s,t),r.closeButton.onclick=()=>t(l.close),n=s,a=r,e=t,he.innerParams.get(n).toast?Xt(n,a,e):(Gt(a),Qt(a),en(n,a,e)),o=s,a=Me,e=c,i=t,a.keydownTarget&&a.keydownHandlerAdded&&(a.keydownTarget.removeEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!1),e.toast||(a.keydownHandler=e=>_t(o,e,i),a.keydownTarget=e.keydownListenerCapture?window:v(),a.keydownListenerCapture=e.keydownListenerCapture,a.keydownTarget.addEventListener("keydown",a.keydownHandler,{capture:a.keydownListenerCapture}),a.keydownHandlerAdded=!0),e=s,"select"===(a=c).input||"radio"===a.input?jt(e,a):["text","email","number","tel","textarea"].includes(a.input)&&(u(a.inputValue)||p(a.inputValue))&&(De(P()),Dt(e,a)),Bt(c),tn(Me,c,t),nn(r,c),setTimeout(()=>{r.container.scrollTop=0})})},update:function(t){var e=v(),n=he.innerParams.get(this);if(!e||N(e,n.hideClass.popup))return s("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");const o={};Object.keys(t).forEach(e=>{ln.isUpdatableParameter(e)?o[e]=t[e]:s('Invalid parameter to update: "'.concat(e,'". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\n\nIf you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md'))}),n=Object.assign({},n,o),Oe(this,n),he.innerParams.set(this,n),Object.defineProperties(this,{params:{value:Object.assign({},this.params,t),writable:!1,enumerable:!0}})},_destroy:function(){var e=he.domCache.get(this);const t=he.innerParams.get(this);t&&(e.popup&&Me.swalCloseEventFinishedCallback&&(Me.swalCloseEventFinishedCallback(),delete Me.swalCloseEventFinishedCallback),Me.deferDisposalTimer&&(clearTimeout(Me.deferDisposalTimer),delete Me.deferDisposalTimer),"function"==typeof t.didDestroy&&t.didDestroy(),delete this.params,delete Me.keydownHandler,delete Me.keydownTarget,sn(he),sn(it),delete Me.currentInstance)}});let rn;class cn{constructor(...e){"undefined"!=typeof window&&(rn=this,e=Object.freeze(this.constructor.argsToParams(e)),Object.defineProperties(this,{params:{value:e,writable:!1,enumerable:!0,configurable:!0}}),e=this._main(this.params),he.promise.set(this,e))}then(e){const t=he.promise.get(this);return t.then(e)}finally(e){const t=he.promise.get(this);return t.finally(e)}}Object.assign(cn.prototype,e),Object.assign(cn,Je),Object.keys(e).forEach(t=>{cn[t]=function(...e){if(rn)return rn[t](...e)}}),cn.DismissReason=l,cn.version="11.1.7";const ln=cn;return ln.default=ln,ln}),void 0!==this&&this.Sweetalert2&&(this.swal=this.sweetAlert=this.Swal=this.SweetAlert=this.Sweetalert2);
+"undefined"!=typeof document&&function(e,t){var n=e.createElement("style");if(e.getElementsByTagName("head")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,".swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4!important;grid-row:1/4!important;grid-template-columns:1fr 99fr 1fr;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:grid;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;box-sizing:border-box;grid-template-areas:\"top-start top top-end\" \"center-start center center-end\" \"bottom-start bottom-center bottom-end\";grid-template-rows:minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto);grid-template-rows:minmax(min-content,auto) minmax(min-content,auto) minmax(min-content,auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-bottom-start,.swal2-container.swal2-center-start,.swal2-container.swal2-top-start{grid-template-columns:minmax(0,1fr) auto auto}.swal2-container.swal2-bottom,.swal2-container.swal2-center,.swal2-container.swal2-top{grid-template-columns:auto minmax(0,1fr) auto}.swal2-container.swal2-bottom-end,.swal2-container.swal2-center-end,.swal2-container.swal2-top-end{grid-template-columns:auto auto minmax(0,1fr)}.swal2-container.swal2-top-start>.swal2-popup{align-self:start}.swal2-container.swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}.swal2-container.swal2-top-end>.swal2-popup,.swal2-container.swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}.swal2-container.swal2-center-left>.swal2-popup,.swal2-container.swal2-center-start>.swal2-popup{grid-row:2;align-self:center}.swal2-container.swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}.swal2-container.swal2-center-end>.swal2-popup,.swal2-container.swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}.swal2-container.swal2-bottom-left>.swal2-popup,.swal2-container.swal2-bottom-start>.swal2-popup{grid-column:1;grid-row:3;align-self:end}.swal2-container.swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}.swal2-container.swal2-bottom-end>.swal2-popup,.swal2-container.swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}.swal2-container.swal2-grow-fullscreen>.swal2-popup,.swal2-container.swal2-grow-row>.swal2-popup{grid-column:1/4;width:100%}.swal2-container.swal2-grow-column>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}.swal2-container.swal2-no-transition{transition:none!important}.swal2-popup{display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0,100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-title{position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px transparent;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7367f0;color:#fff;font-size:1em}.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px rgba(115,103,240,.5)}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#ea5455;color:#fff;font-size:1em}.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px rgba(234,84,85,.5)}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7d88;color:#fff;font-size:1em}.swal2-styled.swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,125,136,.5)}.swal2-styled.swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled:focus{outline:0}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto!important;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:2em auto 1em}.swal2-close{z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em 2em 0}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px transparent;color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em 2em 0;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-file{width:75%;margin-right:auto;margin-left:auto;background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto 0}.swal2-validation-message{align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:.25em solid transparent;border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{background-color:transparent!important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:transparent;pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}");
\ No newline at end of file
diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/sweetalert2/sweetalert2.css b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/sweetalert2/sweetalert2.css
new file mode 100644
index 0000000000..3c7543d3b3
--- /dev/null
+++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/sweetalert2/sweetalert2.css
@@ -0,0 +1,1316 @@
+.swal2-popup.swal2-toast {
+ box-sizing: border-box;
+ grid-column: 1/4 !important;
+ grid-row: 1/4 !important;
+ grid-template-columns: 1fr 99fr 1fr;
+ padding: 1em;
+ overflow-y: hidden;
+ background: #fff;
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0.075), 0 1px 2px rgba(0, 0, 0, 0.075), 1px 2px 4px rgba(0, 0, 0, 0.075), 1px 3px 8px rgba(0, 0, 0, 0.075), 2px 4px 16px rgba(0, 0, 0, 0.075);
+ pointer-events: all;
+}
+.swal2-popup.swal2-toast > * {
+ grid-column: 2;
+}
+.swal2-popup.swal2-toast .swal2-title {
+ margin: 0.5em 1em;
+ padding: 0;
+ font-size: 1em;
+ text-align: initial;
+}
+.swal2-popup.swal2-toast .swal2-loading {
+ justify-content: center;
+}
+.swal2-popup.swal2-toast .swal2-input {
+ height: 2em;
+ margin: 0.5em;
+ font-size: 1em;
+}
+.swal2-popup.swal2-toast .swal2-validation-message {
+ font-size: 1em;
+}
+.swal2-popup.swal2-toast .swal2-footer {
+ margin: 0.5em 0 0;
+ padding: 0.5em 0 0;
+ font-size: 0.8em;
+}
+.swal2-popup.swal2-toast .swal2-close {
+ grid-column: 3/3;
+ grid-row: 1/99;
+ align-self: center;
+ width: 0.8em;
+ height: 0.8em;
+ margin: 0;
+ font-size: 2em;
+}
+.swal2-popup.swal2-toast .swal2-html-container {
+ margin: 0.5em 1em;
+ padding: 0;
+ font-size: 1em;
+ text-align: initial;
+}
+.swal2-popup.swal2-toast .swal2-html-container:empty {
+ padding: 0;
+}
+.swal2-popup.swal2-toast .swal2-loader {
+ grid-column: 1;
+ grid-row: 1/99;
+ align-self: center;
+ width: 2em;
+ height: 2em;
+ margin: 0.25em;
+}
+.swal2-popup.swal2-toast .swal2-icon {
+ grid-column: 1;
+ grid-row: 1/99;
+ align-self: center;
+ width: 2em;
+ min-width: 2em;
+ height: 2em;
+ margin: 0 0.5em 0 0;
+}
+.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content {
+ display: flex;
+ align-items: center;
+ font-size: 1.8em;
+ font-weight: bold;
+}
+.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring {
+ width: 2em;
+ height: 2em;
+}
+.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line] {
+ top: 0.875em;
+ width: 1.375em;
+}
+.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left] {
+ left: 0.3125em;
+}
+.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right] {
+ right: 0.3125em;
+}
+.swal2-popup.swal2-toast .swal2-actions {
+ justify-content: flex-start;
+ height: auto;
+ margin: 0;
+ margin-top: 0.5em;
+ padding: 0 0.5em;
+}
+.swal2-popup.swal2-toast .swal2-styled {
+ margin: 0.25em 0.5em;
+ padding: 0.4em 0.6em;
+ font-size: 1em;
+}
+.swal2-popup.swal2-toast .swal2-success {
+ border-color: #a5dc86;
+}
+.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line] {
+ position: absolute;
+ width: 1.6em;
+ height: 3em;
+ transform: rotate(45deg);
+ border-radius: 50%;
+}
+.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left] {
+ top: -0.8em;
+ left: -0.5em;
+ transform: rotate(-45deg);
+ transform-origin: 2em 2em;
+ border-radius: 4em 0 0 4em;
+}
+.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right] {
+ top: -0.25em;
+ left: 0.9375em;
+ transform-origin: 0 1.5em;
+ border-radius: 0 4em 4em 0;
+}
+.swal2-popup.swal2-toast .swal2-success .swal2-success-ring {
+ width: 2em;
+ height: 2em;
+}
+.swal2-popup.swal2-toast .swal2-success .swal2-success-fix {
+ top: 0;
+ left: 0.4375em;
+ width: 0.4375em;
+ height: 2.6875em;
+}
+.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line] {
+ height: 0.3125em;
+}
+.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip] {
+ top: 1.125em;
+ left: 0.1875em;
+ width: 0.75em;
+}
+.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long] {
+ top: 0.9375em;
+ right: 0.1875em;
+ width: 1.375em;
+}
+.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip {
+ -webkit-animation: swal2-toast-animate-success-line-tip 0.75s;
+ animation: swal2-toast-animate-success-line-tip 0.75s;
+}
+.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long {
+ -webkit-animation: swal2-toast-animate-success-line-long 0.75s;
+ animation: swal2-toast-animate-success-line-long 0.75s;
+}
+.swal2-popup.swal2-toast.swal2-show {
+ -webkit-animation: swal2-toast-show 0.5s;
+ animation: swal2-toast-show 0.5s;
+}
+.swal2-popup.swal2-toast.swal2-hide {
+ -webkit-animation: swal2-toast-hide 0.1s forwards;
+ animation: swal2-toast-hide 0.1s forwards;
+}
+
+.swal2-container {
+ display: grid;
+ position: fixed;
+ z-index: 1060;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ box-sizing: border-box;
+ grid-template-areas: "top-start top top-end" "center-start center center-end" "bottom-start bottom-center bottom-end";
+ grid-template-rows: minmax(-webkit-min-content, auto) minmax(-webkit-min-content, auto) minmax(-webkit-min-content, auto);
+ grid-template-rows: minmax(min-content, auto) minmax(min-content, auto) minmax(min-content, auto);
+ height: 100%;
+ padding: 0.625em;
+ overflow-x: hidden;
+ transition: background-color 0.1s;
+ -webkit-overflow-scrolling: touch;
+}
+.swal2-container.swal2-backdrop-show, .swal2-container.swal2-noanimation {
+ background: rgba(0, 0, 0, 0.4);
+}
+.swal2-container.swal2-backdrop-hide {
+ background: transparent !important;
+}
+.swal2-container.swal2-top-start, .swal2-container.swal2-center-start, .swal2-container.swal2-bottom-start {
+ grid-template-columns: minmax(0, 1fr) auto auto;
+}
+.swal2-container.swal2-top, .swal2-container.swal2-center, .swal2-container.swal2-bottom {
+ grid-template-columns: auto minmax(0, 1fr) auto;
+}
+.swal2-container.swal2-top-end, .swal2-container.swal2-center-end, .swal2-container.swal2-bottom-end {
+ grid-template-columns: auto auto minmax(0, 1fr);
+}
+.swal2-container.swal2-top-start > .swal2-popup {
+ align-self: start;
+}
+.swal2-container.swal2-top > .swal2-popup {
+ grid-column: 2;
+ align-self: start;
+ justify-self: center;
+}
+.swal2-container.swal2-top-end > .swal2-popup, .swal2-container.swal2-top-right > .swal2-popup {
+ grid-column: 3;
+ align-self: start;
+ justify-self: end;
+}
+.swal2-container.swal2-center-start > .swal2-popup, .swal2-container.swal2-center-left > .swal2-popup {
+ grid-row: 2;
+ align-self: center;
+}
+.swal2-container.swal2-center > .swal2-popup {
+ grid-column: 2;
+ grid-row: 2;
+ align-self: center;
+ justify-self: center;
+}
+.swal2-container.swal2-center-end > .swal2-popup, .swal2-container.swal2-center-right > .swal2-popup {
+ grid-column: 3;
+ grid-row: 2;
+ align-self: center;
+ justify-self: end;
+}
+.swal2-container.swal2-bottom-start > .swal2-popup, .swal2-container.swal2-bottom-left > .swal2-popup {
+ grid-column: 1;
+ grid-row: 3;
+ align-self: end;
+}
+.swal2-container.swal2-bottom > .swal2-popup {
+ grid-column: 2;
+ grid-row: 3;
+ justify-self: center;
+ align-self: end;
+}
+.swal2-container.swal2-bottom-end > .swal2-popup, .swal2-container.swal2-bottom-right > .swal2-popup {
+ grid-column: 3;
+ grid-row: 3;
+ align-self: end;
+ justify-self: end;
+}
+.swal2-container.swal2-grow-row > .swal2-popup, .swal2-container.swal2-grow-fullscreen > .swal2-popup {
+ grid-column: 1/4;
+ width: 100%;
+}
+.swal2-container.swal2-grow-column > .swal2-popup, .swal2-container.swal2-grow-fullscreen > .swal2-popup {
+ grid-row: 1/4;
+ align-self: stretch;
+}
+.swal2-container.swal2-no-transition {
+ transition: none !important;
+}
+
+.swal2-popup {
+ display: none;
+ position: relative;
+ box-sizing: border-box;
+ grid-template-columns: minmax(0, 100%);
+ width: 32em;
+ max-width: 100%;
+ padding: 0 0 1.25em;
+ border: none;
+ border-radius: 5px;
+ background: #fff;
+ color: #545454;
+ font-family: inherit;
+ font-size: 1rem;
+}
+.swal2-popup:focus {
+ outline: none;
+}
+.swal2-popup.swal2-loading {
+ overflow-y: hidden;
+}
+
+.swal2-title {
+ position: relative;
+ max-width: 100%;
+ margin: 0;
+ padding: 0.8em 1em 0;
+ color: #595959;
+ font-size: 1.875em;
+ font-weight: 600;
+ text-align: center;
+ text-transform: none;
+ word-wrap: break-word;
+}
+
+.swal2-actions {
+ display: flex;
+ z-index: 1;
+ box-sizing: border-box;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: center;
+ width: auto;
+ margin: 1.25em auto 0;
+ padding: 0;
+}
+.swal2-actions:not(.swal2-loading) .swal2-styled[disabled] {
+ opacity: 0.4;
+}
+.swal2-actions:not(.swal2-loading) .swal2-styled:hover {
+ background-image: linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1));
+}
+.swal2-actions:not(.swal2-loading) .swal2-styled:active {
+ background-image: linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2));
+}
+
+.swal2-loader {
+ display: none;
+ align-items: center;
+ justify-content: center;
+ width: 2.2em;
+ height: 2.2em;
+ margin: 0 1.875em;
+ -webkit-animation: swal2-rotate-loading 1.5s linear 0s infinite normal;
+ animation: swal2-rotate-loading 1.5s linear 0s infinite normal;
+ border-width: 0.25em;
+ border-style: solid;
+ border-radius: 100%;
+ border-color: #2778c4 transparent #2778c4 transparent;
+}
+
+.swal2-styled {
+ margin: 0.3125em;
+ padding: 0.625em 1.1em;
+ transition: box-shadow 0.1s;
+ box-shadow: 0 0 0 3px transparent;
+ font-weight: 500;
+}
+.swal2-styled:not([disabled]) {
+ cursor: pointer;
+}
+.swal2-styled.swal2-confirm {
+ border: 0;
+ border-radius: 0.25em;
+ background: initial;
+ background-color: #7367f0;
+ color: #fff;
+ font-size: 1em;
+}
+.swal2-styled.swal2-confirm:focus {
+ box-shadow: 0 0 0 3px rgba(115, 103, 240, 0.5);
+}
+.swal2-styled.swal2-deny {
+ border: 0;
+ border-radius: 0.25em;
+ background: initial;
+ background-color: #ea5455;
+ color: #fff;
+ font-size: 1em;
+}
+.swal2-styled.swal2-deny:focus {
+ box-shadow: 0 0 0 3px rgba(234, 84, 85, 0.5);
+}
+.swal2-styled.swal2-cancel {
+ border: 0;
+ border-radius: 0.25em;
+ background: initial;
+ background-color: #6e7d88;
+ color: #fff;
+ font-size: 1em;
+}
+.swal2-styled.swal2-cancel:focus {
+ box-shadow: 0 0 0 3px rgba(110, 125, 136, 0.5);
+}
+.swal2-styled.swal2-default-outline:focus {
+ box-shadow: 0 0 0 3px rgba(100, 150, 200, 0.5);
+}
+.swal2-styled:focus {
+ outline: none;
+}
+.swal2-styled::-moz-focus-inner {
+ border: 0;
+}
+
+.swal2-footer {
+ justify-content: center;
+ margin: 1em 0 0;
+ padding: 1em 1em 0;
+ border-top: 1px solid #eee;
+ color: #545454;
+ font-size: 1em;
+}
+
+.swal2-timer-progress-bar-container {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ grid-column: auto !important;
+ height: 0.25em;
+ overflow: hidden;
+ border-bottom-right-radius: 5px;
+ border-bottom-left-radius: 5px;
+}
+
+.swal2-timer-progress-bar {
+ width: 100%;
+ height: 0.25em;
+ background: rgba(0, 0, 0, 0.2);
+}
+
+.swal2-image {
+ max-width: 100%;
+ margin: 2em auto 1em;
+}
+
+.swal2-close {
+ z-index: 2;
+ align-items: center;
+ justify-content: center;
+ width: 1.2em;
+ height: 1.2em;
+ margin-top: 0;
+ margin-right: 0;
+ margin-bottom: -1.2em;
+ padding: 0;
+ overflow: hidden;
+ transition: color 0.1s, box-shadow 0.1s;
+ border: none;
+ border-radius: 5px;
+ background: transparent;
+ color: #ccc;
+ font-family: serif;
+ font-family: monospace;
+ font-size: 2.5em;
+ cursor: pointer;
+ justify-self: end;
+}
+.swal2-close:hover {
+ transform: none;
+ background: transparent;
+ color: #f27474;
+}
+.swal2-close:focus {
+ outline: none;
+ box-shadow: inset 0 0 0 3px rgba(100, 150, 200, 0.5);
+}
+.swal2-close::-moz-focus-inner {
+ border: 0;
+}
+
+.swal2-html-container {
+ z-index: 1;
+ justify-content: center;
+ margin: 1em 1.6em 0.3em;
+ padding: 0;
+ overflow: auto;
+ color: #545454;
+ font-size: 1.125em;
+ font-weight: normal;
+ line-height: normal;
+ text-align: center;
+ word-wrap: break-word;
+ word-break: break-word;
+}
+
+.swal2-input,
+.swal2-file,
+.swal2-textarea,
+.swal2-select,
+.swal2-radio,
+.swal2-checkbox {
+ margin: 1em 2em 0;
+}
+
+.swal2-input,
+.swal2-file,
+.swal2-textarea {
+ box-sizing: border-box;
+ width: auto;
+ transition: border-color 0.1s, box-shadow 0.1s;
+ border: 1px solid #d9d9d9;
+ border-radius: 0.1875em;
+ background: inherit;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06), 0 0 0 3px transparent;
+ color: inherit;
+ font-size: 1.125em;
+}
+.swal2-input.swal2-inputerror,
+.swal2-file.swal2-inputerror,
+.swal2-textarea.swal2-inputerror {
+ border-color: #f27474 !important;
+ box-shadow: 0 0 2px #f27474 !important;
+}
+.swal2-input:focus,
+.swal2-file:focus,
+.swal2-textarea:focus {
+ border: 1px solid #b4dbed;
+ outline: none;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06), 0 0 0 3px rgba(100, 150, 200, 0.5);
+}
+.swal2-input::-moz-placeholder, .swal2-file::-moz-placeholder, .swal2-textarea::-moz-placeholder {
+ color: #ccc;
+}
+.swal2-input:-ms-input-placeholder, .swal2-file:-ms-input-placeholder, .swal2-textarea:-ms-input-placeholder {
+ color: #ccc;
+}
+.swal2-input::placeholder,
+.swal2-file::placeholder,
+.swal2-textarea::placeholder {
+ color: #ccc;
+}
+
+.swal2-range {
+ margin: 1em 2em 0;
+ background: #fff;
+}
+.swal2-range input {
+ width: 80%;
+}
+.swal2-range output {
+ width: 20%;
+ color: inherit;
+ font-weight: 600;
+ text-align: center;
+}
+.swal2-range input,
+.swal2-range output {
+ height: 2.625em;
+ padding: 0;
+ font-size: 1.125em;
+ line-height: 2.625em;
+}
+
+.swal2-input {
+ height: 2.625em;
+ padding: 0 0.75em;
+}
+
+.swal2-file {
+ width: 75%;
+ margin-right: auto;
+ margin-left: auto;
+ background: inherit;
+ font-size: 1.125em;
+}
+
+.swal2-textarea {
+ height: 6.75em;
+ padding: 0.75em;
+}
+
+.swal2-select {
+ min-width: 50%;
+ max-width: 100%;
+ padding: 0.375em 0.625em;
+ background: inherit;
+ color: inherit;
+ font-size: 1.125em;
+}
+
+.swal2-radio,
+.swal2-checkbox {
+ align-items: center;
+ justify-content: center;
+ background: #fff;
+ color: inherit;
+}
+.swal2-radio label,
+.swal2-checkbox label {
+ margin: 0 0.6em;
+ font-size: 1.125em;
+}
+.swal2-radio input,
+.swal2-checkbox input {
+ flex-shrink: 0;
+ margin: 0 0.4em;
+}
+
+.swal2-input-label {
+ display: flex;
+ justify-content: center;
+ margin: 1em auto 0;
+}
+
+.swal2-validation-message {
+ align-items: center;
+ justify-content: center;
+ margin: 1em 0 0;
+ padding: 0.625em;
+ overflow: hidden;
+ background: #f0f0f0;
+ color: #666666;
+ font-size: 1em;
+ font-weight: 300;
+}
+.swal2-validation-message::before {
+ content: "!";
+ display: inline-block;
+ width: 1.5em;
+ min-width: 1.5em;
+ height: 1.5em;
+ margin: 0 0.625em;
+ border-radius: 50%;
+ background-color: #f27474;
+ color: #fff;
+ font-weight: 600;
+ line-height: 1.5em;
+ text-align: center;
+}
+
+.swal2-icon {
+ position: relative;
+ box-sizing: content-box;
+ justify-content: center;
+ width: 5em;
+ height: 5em;
+ margin: 2.5em auto 0.6em;
+ border: 0.25em solid transparent;
+ border-radius: 50%;
+ border-color: #000;
+ font-family: inherit;
+ line-height: 5em;
+ cursor: default;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.swal2-icon .swal2-icon-content {
+ display: flex;
+ align-items: center;
+ font-size: 3.75em;
+}
+.swal2-icon.swal2-error {
+ border-color: #f27474;
+ color: #f27474;
+}
+.swal2-icon.swal2-error .swal2-x-mark {
+ position: relative;
+ flex-grow: 1;
+}
+.swal2-icon.swal2-error [class^=swal2-x-mark-line] {
+ display: block;
+ position: absolute;
+ top: 2.3125em;
+ width: 2.9375em;
+ height: 0.3125em;
+ border-radius: 0.125em;
+ background-color: #f27474;
+}
+.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left] {
+ left: 1.0625em;
+ transform: rotate(45deg);
+}
+.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right] {
+ right: 1em;
+ transform: rotate(-45deg);
+}
+.swal2-icon.swal2-error.swal2-icon-show {
+ -webkit-animation: swal2-animate-error-icon 0.5s;
+ animation: swal2-animate-error-icon 0.5s;
+}
+.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark {
+ -webkit-animation: swal2-animate-error-x-mark 0.5s;
+ animation: swal2-animate-error-x-mark 0.5s;
+}
+.swal2-icon.swal2-warning {
+ border-color: #facea8;
+ color: #f8bb86;
+}
+.swal2-icon.swal2-info {
+ border-color: #9de0f6;
+ color: #3fc3ee;
+}
+.swal2-icon.swal2-question {
+ border-color: #c9dae1;
+ color: #87adbd;
+}
+.swal2-icon.swal2-success {
+ border-color: #a5dc86;
+ color: #a5dc86;
+}
+.swal2-icon.swal2-success [class^=swal2-success-circular-line] {
+ position: absolute;
+ width: 3.75em;
+ height: 7.5em;
+ transform: rotate(45deg);
+ border-radius: 50%;
+}
+.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left] {
+ top: -0.4375em;
+ left: -2.0635em;
+ transform: rotate(-45deg);
+ transform-origin: 3.75em 3.75em;
+ border-radius: 7.5em 0 0 7.5em;
+}
+.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right] {
+ top: -0.6875em;
+ left: 1.875em;
+ transform: rotate(-45deg);
+ transform-origin: 0 3.75em;
+ border-radius: 0 7.5em 7.5em 0;
+}
+.swal2-icon.swal2-success .swal2-success-ring {
+ position: absolute;
+ z-index: 2;
+ top: -0.25em;
+ left: -0.25em;
+ box-sizing: content-box;
+ width: 100%;
+ height: 100%;
+ border: 0.25em solid rgba(165, 220, 134, 0.3);
+ border-radius: 50%;
+}
+.swal2-icon.swal2-success .swal2-success-fix {
+ position: absolute;
+ z-index: 1;
+ top: 0.5em;
+ left: 1.625em;
+ width: 0.4375em;
+ height: 5.625em;
+ transform: rotate(-45deg);
+}
+.swal2-icon.swal2-success [class^=swal2-success-line] {
+ display: block;
+ position: absolute;
+ z-index: 2;
+ height: 0.3125em;
+ border-radius: 0.125em;
+ background-color: #a5dc86;
+}
+.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip] {
+ top: 2.875em;
+ left: 0.8125em;
+ width: 1.5625em;
+ transform: rotate(45deg);
+}
+.swal2-icon.swal2-success [class^=swal2-success-line][class$=long] {
+ top: 2.375em;
+ right: 0.5em;
+ width: 2.9375em;
+ transform: rotate(-45deg);
+}
+.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip {
+ -webkit-animation: swal2-animate-success-line-tip 0.75s;
+ animation: swal2-animate-success-line-tip 0.75s;
+}
+.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long {
+ -webkit-animation: swal2-animate-success-line-long 0.75s;
+ animation: swal2-animate-success-line-long 0.75s;
+}
+.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right {
+ -webkit-animation: swal2-rotate-success-circular-line 4.25s ease-in;
+ animation: swal2-rotate-success-circular-line 4.25s ease-in;
+}
+
+.swal2-progress-steps {
+ flex-wrap: wrap;
+ align-items: center;
+ max-width: 100%;
+ margin: 1.25em auto;
+ padding: 0;
+ background: inherit;
+ font-weight: 600;
+}
+.swal2-progress-steps li {
+ display: inline-block;
+ position: relative;
+}
+.swal2-progress-steps .swal2-progress-step {
+ z-index: 20;
+ flex-shrink: 0;
+ width: 2em;
+ height: 2em;
+ border-radius: 2em;
+ background: #2778c4;
+ color: #fff;
+ line-height: 2em;
+ text-align: center;
+}
+.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step {
+ background: #2778c4;
+}
+.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step ~ .swal2-progress-step {
+ background: #add8e6;
+ color: #fff;
+}
+.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step ~ .swal2-progress-step-line {
+ background: #add8e6;
+}
+.swal2-progress-steps .swal2-progress-step-line {
+ z-index: 10;
+ flex-shrink: 0;
+ width: 2.5em;
+ height: 0.4em;
+ margin: 0 -1px;
+ background: #2778c4;
+}
+
+[class^=swal2] {
+ -webkit-tap-highlight-color: transparent;
+}
+
+.swal2-show {
+ -webkit-animation: swal2-show 0.3s;
+ animation: swal2-show 0.3s;
+}
+
+.swal2-hide {
+ -webkit-animation: swal2-hide 0.15s forwards;
+ animation: swal2-hide 0.15s forwards;
+}
+
+.swal2-noanimation {
+ transition: none;
+}
+
+.swal2-scrollbar-measure {
+ position: absolute;
+ top: -9999px;
+ width: 50px;
+ height: 50px;
+ overflow: scroll;
+}
+
+.swal2-rtl .swal2-close {
+ margin-right: initial;
+ margin-left: 0;
+}
+.swal2-rtl .swal2-timer-progress-bar {
+ right: 0;
+ left: auto;
+}
+
+@-webkit-keyframes swal2-toast-show {
+ 0% {
+ transform: translateY(-0.625em) rotateZ(2deg);
+ }
+ 33% {
+ transform: translateY(0) rotateZ(-2deg);
+ }
+ 66% {
+ transform: translateY(0.3125em) rotateZ(2deg);
+ }
+ 100% {
+ transform: translateY(0) rotateZ(0deg);
+ }
+}
+
+@keyframes swal2-toast-show {
+ 0% {
+ transform: translateY(-0.625em) rotateZ(2deg);
+ }
+ 33% {
+ transform: translateY(0) rotateZ(-2deg);
+ }
+ 66% {
+ transform: translateY(0.3125em) rotateZ(2deg);
+ }
+ 100% {
+ transform: translateY(0) rotateZ(0deg);
+ }
+}
+@-webkit-keyframes swal2-toast-hide {
+ 100% {
+ transform: rotateZ(1deg);
+ opacity: 0;
+ }
+}
+@keyframes swal2-toast-hide {
+ 100% {
+ transform: rotateZ(1deg);
+ opacity: 0;
+ }
+}
+@-webkit-keyframes swal2-toast-animate-success-line-tip {
+ 0% {
+ top: 0.5625em;
+ left: 0.0625em;
+ width: 0;
+ }
+ 54% {
+ top: 0.125em;
+ left: 0.125em;
+ width: 0;
+ }
+ 70% {
+ top: 0.625em;
+ left: -0.25em;
+ width: 1.625em;
+ }
+ 84% {
+ top: 1.0625em;
+ left: 0.75em;
+ width: 0.5em;
+ }
+ 100% {
+ top: 1.125em;
+ left: 0.1875em;
+ width: 0.75em;
+ }
+}
+@keyframes swal2-toast-animate-success-line-tip {
+ 0% {
+ top: 0.5625em;
+ left: 0.0625em;
+ width: 0;
+ }
+ 54% {
+ top: 0.125em;
+ left: 0.125em;
+ width: 0;
+ }
+ 70% {
+ top: 0.625em;
+ left: -0.25em;
+ width: 1.625em;
+ }
+ 84% {
+ top: 1.0625em;
+ left: 0.75em;
+ width: 0.5em;
+ }
+ 100% {
+ top: 1.125em;
+ left: 0.1875em;
+ width: 0.75em;
+ }
+}
+@-webkit-keyframes swal2-toast-animate-success-line-long {
+ 0% {
+ top: 1.625em;
+ right: 1.375em;
+ width: 0;
+ }
+ 65% {
+ top: 1.25em;
+ right: 0.9375em;
+ width: 0;
+ }
+ 84% {
+ top: 0.9375em;
+ right: 0;
+ width: 1.125em;
+ }
+ 100% {
+ top: 0.9375em;
+ right: 0.1875em;
+ width: 1.375em;
+ }
+}
+@keyframes swal2-toast-animate-success-line-long {
+ 0% {
+ top: 1.625em;
+ right: 1.375em;
+ width: 0;
+ }
+ 65% {
+ top: 1.25em;
+ right: 0.9375em;
+ width: 0;
+ }
+ 84% {
+ top: 0.9375em;
+ right: 0;
+ width: 1.125em;
+ }
+ 100% {
+ top: 0.9375em;
+ right: 0.1875em;
+ width: 1.375em;
+ }
+}
+@-webkit-keyframes swal2-show {
+ 0% {
+ transform: scale(0.7);
+ }
+ 45% {
+ transform: scale(1.05);
+ }
+ 80% {
+ transform: scale(0.95);
+ }
+ 100% {
+ transform: scale(1);
+ }
+}
+@keyframes swal2-show {
+ 0% {
+ transform: scale(0.7);
+ }
+ 45% {
+ transform: scale(1.05);
+ }
+ 80% {
+ transform: scale(0.95);
+ }
+ 100% {
+ transform: scale(1);
+ }
+}
+@-webkit-keyframes swal2-hide {
+ 0% {
+ transform: scale(1);
+ opacity: 1;
+ }
+ 100% {
+ transform: scale(0.5);
+ opacity: 0;
+ }
+}
+@keyframes swal2-hide {
+ 0% {
+ transform: scale(1);
+ opacity: 1;
+ }
+ 100% {
+ transform: scale(0.5);
+ opacity: 0;
+ }
+}
+@-webkit-keyframes swal2-animate-success-line-tip {
+ 0% {
+ top: 1.1875em;
+ left: 0.0625em;
+ width: 0;
+ }
+ 54% {
+ top: 1.0625em;
+ left: 0.125em;
+ width: 0;
+ }
+ 70% {
+ top: 2.1875em;
+ left: -0.375em;
+ width: 3.125em;
+ }
+ 84% {
+ top: 3em;
+ left: 1.3125em;
+ width: 1.0625em;
+ }
+ 100% {
+ top: 2.8125em;
+ left: 0.8125em;
+ width: 1.5625em;
+ }
+}
+@keyframes swal2-animate-success-line-tip {
+ 0% {
+ top: 1.1875em;
+ left: 0.0625em;
+ width: 0;
+ }
+ 54% {
+ top: 1.0625em;
+ left: 0.125em;
+ width: 0;
+ }
+ 70% {
+ top: 2.1875em;
+ left: -0.375em;
+ width: 3.125em;
+ }
+ 84% {
+ top: 3em;
+ left: 1.3125em;
+ width: 1.0625em;
+ }
+ 100% {
+ top: 2.8125em;
+ left: 0.8125em;
+ width: 1.5625em;
+ }
+}
+@-webkit-keyframes swal2-animate-success-line-long {
+ 0% {
+ top: 3.375em;
+ right: 2.875em;
+ width: 0;
+ }
+ 65% {
+ top: 3.375em;
+ right: 2.875em;
+ width: 0;
+ }
+ 84% {
+ top: 2.1875em;
+ right: 0;
+ width: 3.4375em;
+ }
+ 100% {
+ top: 2.375em;
+ right: 0.5em;
+ width: 2.9375em;
+ }
+}
+@keyframes swal2-animate-success-line-long {
+ 0% {
+ top: 3.375em;
+ right: 2.875em;
+ width: 0;
+ }
+ 65% {
+ top: 3.375em;
+ right: 2.875em;
+ width: 0;
+ }
+ 84% {
+ top: 2.1875em;
+ right: 0;
+ width: 3.4375em;
+ }
+ 100% {
+ top: 2.375em;
+ right: 0.5em;
+ width: 2.9375em;
+ }
+}
+@-webkit-keyframes swal2-rotate-success-circular-line {
+ 0% {
+ transform: rotate(-45deg);
+ }
+ 5% {
+ transform: rotate(-45deg);
+ }
+ 12% {
+ transform: rotate(-405deg);
+ }
+ 100% {
+ transform: rotate(-405deg);
+ }
+}
+@keyframes swal2-rotate-success-circular-line {
+ 0% {
+ transform: rotate(-45deg);
+ }
+ 5% {
+ transform: rotate(-45deg);
+ }
+ 12% {
+ transform: rotate(-405deg);
+ }
+ 100% {
+ transform: rotate(-405deg);
+ }
+}
+@-webkit-keyframes swal2-animate-error-x-mark {
+ 0% {
+ margin-top: 1.625em;
+ transform: scale(0.4);
+ opacity: 0;
+ }
+ 50% {
+ margin-top: 1.625em;
+ transform: scale(0.4);
+ opacity: 0;
+ }
+ 80% {
+ margin-top: -0.375em;
+ transform: scale(1.15);
+ }
+ 100% {
+ margin-top: 0;
+ transform: scale(1);
+ opacity: 1;
+ }
+}
+@keyframes swal2-animate-error-x-mark {
+ 0% {
+ margin-top: 1.625em;
+ transform: scale(0.4);
+ opacity: 0;
+ }
+ 50% {
+ margin-top: 1.625em;
+ transform: scale(0.4);
+ opacity: 0;
+ }
+ 80% {
+ margin-top: -0.375em;
+ transform: scale(1.15);
+ }
+ 100% {
+ margin-top: 0;
+ transform: scale(1);
+ opacity: 1;
+ }
+}
+@-webkit-keyframes swal2-animate-error-icon {
+ 0% {
+ transform: rotateX(100deg);
+ opacity: 0;
+ }
+ 100% {
+ transform: rotateX(0deg);
+ opacity: 1;
+ }
+}
+@keyframes swal2-animate-error-icon {
+ 0% {
+ transform: rotateX(100deg);
+ opacity: 0;
+ }
+ 100% {
+ transform: rotateX(0deg);
+ opacity: 1;
+ }
+}
+@-webkit-keyframes swal2-rotate-loading {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+@keyframes swal2-rotate-loading {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) {
+ overflow: hidden;
+}
+body.swal2-height-auto {
+ height: auto !important;
+}
+body.swal2-no-backdrop .swal2-container {
+ background-color: transparent !important;
+ pointer-events: none;
+}
+body.swal2-no-backdrop .swal2-container .swal2-popup {
+ pointer-events: all;
+}
+body.swal2-no-backdrop .swal2-container .swal2-modal {
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.4);
+}
+@media print {
+ body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) {
+ overflow-y: scroll !important;
+ }
+ body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) > [aria-hidden=true] {
+ display: none;
+ }
+ body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container {
+ position: static !important;
+ }
+}
+body.swal2-toast-shown .swal2-container {
+ box-sizing: border-box;
+ width: 360px;
+ max-width: 100%;
+ background-color: transparent;
+ pointer-events: none;
+}
+body.swal2-toast-shown .swal2-container.swal2-top {
+ top: 0;
+ right: auto;
+ bottom: auto;
+ left: 50%;
+ transform: translateX(-50%);
+}
+body.swal2-toast-shown .swal2-container.swal2-top-end, body.swal2-toast-shown .swal2-container.swal2-top-right {
+ top: 0;
+ right: 0;
+ bottom: auto;
+ left: auto;
+}
+body.swal2-toast-shown .swal2-container.swal2-top-start, body.swal2-toast-shown .swal2-container.swal2-top-left {
+ top: 0;
+ right: auto;
+ bottom: auto;
+ left: 0;
+}
+body.swal2-toast-shown .swal2-container.swal2-center-start, body.swal2-toast-shown .swal2-container.swal2-center-left {
+ top: 50%;
+ right: auto;
+ bottom: auto;
+ left: 0;
+ transform: translateY(-50%);
+}
+body.swal2-toast-shown .swal2-container.swal2-center {
+ top: 50%;
+ right: auto;
+ bottom: auto;
+ left: 50%;
+ transform: translate(-50%, -50%);
+}
+body.swal2-toast-shown .swal2-container.swal2-center-end, body.swal2-toast-shown .swal2-container.swal2-center-right {
+ top: 50%;
+ right: 0;
+ bottom: auto;
+ left: auto;
+ transform: translateY(-50%);
+}
+body.swal2-toast-shown .swal2-container.swal2-bottom-start, body.swal2-toast-shown .swal2-container.swal2-bottom-left {
+ top: auto;
+ right: auto;
+ bottom: 0;
+ left: 0;
+}
+body.swal2-toast-shown .swal2-container.swal2-bottom {
+ top: auto;
+ right: auto;
+ bottom: 0;
+ left: 50%;
+ transform: translateX(-50%);
+}
+body.swal2-toast-shown .swal2-container.swal2-bottom-end, body.swal2-toast-shown .swal2-container.swal2-bottom-right {
+ top: auto;
+ right: 0;
+ bottom: 0;
+ left: auto;
+}
\ No newline at end of file
diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/sweetalert2/sweetalert2.js b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/sweetalert2/sweetalert2.js
new file mode 100644
index 0000000000..5bda4321cb
--- /dev/null
+++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/sweetalert2/sweetalert2.js
@@ -0,0 +1,3120 @@
+/*!
+* sweetalert2 v11.1.7
+* Released under the MIT License.
+*/
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global = global || self, global.Sweetalert2 = factory());
+}(this, function () { 'use strict';
+
+ const DismissReason = Object.freeze({
+ cancel: 'cancel',
+ backdrop: 'backdrop',
+ close: 'close',
+ esc: 'esc',
+ timer: 'timer'
+ });
+
+ const consolePrefix = 'SweetAlert2:';
+ /**
+ * Filter the unique values into a new array
+ * @param arr
+ */
+
+ const uniqueArray = arr => {
+ const result = [];
+
+ for (let i = 0; i < arr.length; i++) {
+ if (result.indexOf(arr[i]) === -1) {
+ result.push(arr[i]);
+ }
+ }
+
+ return result;
+ };
+ /**
+ * Capitalize the first letter of a string
+ * @param str
+ */
+
+ const capitalizeFirstLetter = str => str.charAt(0).toUpperCase() + str.slice(1);
+ /**
+ * Convert NodeList to Array
+ * @param nodeList
+ */
+
+ const toArray = nodeList => Array.prototype.slice.call(nodeList);
+ /**
+ * Standardise console warnings
+ * @param message
+ */
+
+ const warn = message => {
+ console.warn("".concat(consolePrefix, " ").concat(typeof message === 'object' ? message.join(' ') : message));
+ };
+ /**
+ * Standardise console errors
+ * @param message
+ */
+
+ const error = message => {
+ console.error("".concat(consolePrefix, " ").concat(message));
+ };
+ /**
+ * Private global state for `warnOnce`
+ * @type {Array}
+ * @private
+ */
+
+ const previousWarnOnceMessages = [];
+ /**
+ * Show a console warning, but only if it hasn't already been shown
+ * @param message
+ */
+
+ const warnOnce = message => {
+ if (!previousWarnOnceMessages.includes(message)) {
+ previousWarnOnceMessages.push(message);
+ warn(message);
+ }
+ };
+ /**
+ * Show a one-time console warning about deprecated params/methods
+ */
+
+ const warnAboutDeprecation = (deprecatedParam, useInstead) => {
+ warnOnce("\"".concat(deprecatedParam, "\" is deprecated and will be removed in the next major release. Please use \"").concat(useInstead, "\" instead."));
+ };
+ /**
+ * If `arg` is a function, call it (with no arguments or context) and return the result.
+ * Otherwise, just pass the value through
+ * @param arg
+ */
+
+ const callIfFunction = arg => typeof arg === 'function' ? arg() : arg;
+ const hasToPromiseFn = arg => arg && typeof arg.toPromise === 'function';
+ const asPromise = arg => hasToPromiseFn(arg) ? arg.toPromise() : Promise.resolve(arg);
+ const isPromise = arg => arg && Promise.resolve(arg) === arg;
+
+ const isJqueryElement = elem => typeof elem === 'object' && elem.jquery;
+
+ const isElement = elem => elem instanceof Element || isJqueryElement(elem);
+
+ const argsToParams = args => {
+ const params = {};
+
+ if (typeof args[0] === 'object' && !isElement(args[0])) {
+ Object.assign(params, args[0]);
+ } else {
+ ['title', 'html', 'icon'].forEach((name, index) => {
+ const arg = args[index];
+
+ if (typeof arg === 'string' || isElement(arg)) {
+ params[name] = arg;
+ } else if (arg !== undefined) {
+ error("Unexpected type of ".concat(name, "! Expected \"string\" or \"Element\", got ").concat(typeof arg));
+ }
+ });
+ }
+
+ return params;
+ };
+
+ const swalPrefix = 'swal2-';
+ const prefix = items => {
+ const result = {};
+
+ for (const i in items) {
+ result[items[i]] = swalPrefix + items[i];
+ }
+
+ return result;
+ };
+ const swalClasses = prefix(['container', 'shown', 'height-auto', 'iosfix', 'popup', 'modal', 'no-backdrop', 'no-transition', 'toast', 'toast-shown', 'show', 'hide', 'close', 'title', 'html-container', 'actions', 'confirm', 'deny', 'cancel', 'default-outline', 'footer', 'icon', 'icon-content', 'image', 'input', 'file', 'range', 'select', 'radio', 'checkbox', 'label', 'textarea', 'inputerror', 'input-label', 'validation-message', 'progress-steps', 'active-progress-step', 'progress-step', 'progress-step-line', 'loader', 'loading', 'styled', 'top', 'top-start', 'top-end', 'top-left', 'top-right', 'center', 'center-start', 'center-end', 'center-left', 'center-right', 'bottom', 'bottom-start', 'bottom-end', 'bottom-left', 'bottom-right', 'grow-row', 'grow-column', 'grow-fullscreen', 'rtl', 'timer-progress-bar', 'timer-progress-bar-container', 'scrollbar-measure', 'icon-success', 'icon-warning', 'icon-info', 'icon-question', 'icon-error']);
+ const iconTypes = prefix(['success', 'warning', 'info', 'question', 'error']);
+
+ const getContainer = () => document.body.querySelector(".".concat(swalClasses.container));
+ const elementBySelector = selectorString => {
+ const container = getContainer();
+ return container ? container.querySelector(selectorString) : null;
+ };
+
+ const elementByClass = className => {
+ return elementBySelector(".".concat(className));
+ };
+
+ const getPopup = () => elementByClass(swalClasses.popup);
+ const getIcon = () => elementByClass(swalClasses.icon);
+ const getTitle = () => elementByClass(swalClasses.title);
+ const getHtmlContainer = () => elementByClass(swalClasses['html-container']);
+ const getImage = () => elementByClass(swalClasses.image);
+ const getProgressSteps = () => elementByClass(swalClasses['progress-steps']);
+ const getValidationMessage = () => elementByClass(swalClasses['validation-message']);
+ const getConfirmButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.confirm));
+ const getDenyButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.deny));
+ const getInputLabel = () => elementByClass(swalClasses['input-label']);
+ const getLoader = () => elementBySelector(".".concat(swalClasses.loader));
+ const getCancelButton = () => elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.cancel));
+ const getActions = () => elementByClass(swalClasses.actions);
+ const getFooter = () => elementByClass(swalClasses.footer);
+ const getTimerProgressBar = () => elementByClass(swalClasses['timer-progress-bar']);
+ const getCloseButton = () => elementByClass(swalClasses.close); // https://github.com/jkup/focusable/blob/master/index.js
+
+ const focusable = "\n a[href],\n area[href],\n input:not([disabled]),\n select:not([disabled]),\n textarea:not([disabled]),\n button:not([disabled]),\n iframe,\n object,\n embed,\n [tabindex=\"0\"],\n [contenteditable],\n audio[controls],\n video[controls],\n summary\n";
+ const getFocusableElements = () => {
+ const focusableElementsWithTabindex = toArray(getPopup().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')) // sort according to tabindex
+ .sort((a, b) => {
+ a = parseInt(a.getAttribute('tabindex'));
+ b = parseInt(b.getAttribute('tabindex'));
+
+ if (a > b) {
+ return 1;
+ } else if (a < b) {
+ return -1;
+ }
+
+ return 0;
+ });
+ const otherFocusableElements = toArray(getPopup().querySelectorAll(focusable)).filter(el => el.getAttribute('tabindex') !== '-1');
+ return uniqueArray(focusableElementsWithTabindex.concat(otherFocusableElements)).filter(el => isVisible(el));
+ };
+ const isModal = () => {
+ return !isToast() && !document.body.classList.contains(swalClasses['no-backdrop']);
+ };
+ const isToast = () => {
+ return document.body.classList.contains(swalClasses['toast-shown']);
+ };
+ const isLoading = () => {
+ return getPopup().hasAttribute('data-loading');
+ };
+
+ const states = {
+ previousBodyPadding: null
+ };
+ const setInnerHtml = (elem, html) => {
+ // #1926
+ elem.textContent = '';
+
+ if (html) {
+ const parser = new DOMParser();
+ const parsed = parser.parseFromString(html, "text/html");
+ toArray(parsed.querySelector('head').childNodes).forEach(child => {
+ elem.appendChild(child);
+ });
+ toArray(parsed.querySelector('body').childNodes).forEach(child => {
+ elem.appendChild(child);
+ });
+ }
+ };
+ const hasClass = (elem, className) => {
+ if (!className) {
+ return false;
+ }
+
+ const classList = className.split(/\s+/);
+
+ for (let i = 0; i < classList.length; i++) {
+ if (!elem.classList.contains(classList[i])) {
+ return false;
+ }
+ }
+
+ return true;
+ };
+
+ const removeCustomClasses = (elem, params) => {
+ toArray(elem.classList).forEach(className => {
+ if (!Object.values(swalClasses).includes(className) && !Object.values(iconTypes).includes(className) && !Object.values(params.showClass).includes(className)) {
+ elem.classList.remove(className);
+ }
+ });
+ };
+
+ const applyCustomClass = (elem, params, className) => {
+ removeCustomClasses(elem, params);
+
+ if (params.customClass && params.customClass[className]) {
+ if (typeof params.customClass[className] !== 'string' && !params.customClass[className].forEach) {
+ return warn("Invalid type of customClass.".concat(className, "! Expected string or iterable object, got \"").concat(typeof params.customClass[className], "\""));
+ }
+
+ addClass(elem, params.customClass[className]);
+ }
+ };
+ const getInput = (popup, inputType) => {
+ if (!inputType) {
+ return null;
+ }
+
+ switch (inputType) {
+ case 'select':
+ case 'textarea':
+ case 'file':
+ return getChildByClass(popup, swalClasses[inputType]);
+
+ case 'checkbox':
+ return popup.querySelector(".".concat(swalClasses.checkbox, " input"));
+
+ case 'radio':
+ return popup.querySelector(".".concat(swalClasses.radio, " input:checked")) || popup.querySelector(".".concat(swalClasses.radio, " input:first-child"));
+
+ case 'range':
+ return popup.querySelector(".".concat(swalClasses.range, " input"));
+
+ default:
+ return getChildByClass(popup, swalClasses.input);
+ }
+ };
+ const focusInput = input => {
+ input.focus(); // place cursor at end of text in text input
+
+ if (input.type !== 'file') {
+ // http://stackoverflow.com/a/2345915
+ const val = input.value;
+ input.value = '';
+ input.value = val;
+ }
+ };
+ const toggleClass = (target, classList, condition) => {
+ if (!target || !classList) {
+ return;
+ }
+
+ if (typeof classList === 'string') {
+ classList = classList.split(/\s+/).filter(Boolean);
+ }
+
+ classList.forEach(className => {
+ if (target.forEach) {
+ target.forEach(elem => {
+ condition ? elem.classList.add(className) : elem.classList.remove(className);
+ });
+ } else {
+ condition ? target.classList.add(className) : target.classList.remove(className);
+ }
+ });
+ };
+ const addClass = (target, classList) => {
+ toggleClass(target, classList, true);
+ };
+ const removeClass = (target, classList) => {
+ toggleClass(target, classList, false);
+ };
+ const getChildByClass = (elem, className) => {
+ for (let i = 0; i < elem.childNodes.length; i++) {
+ if (hasClass(elem.childNodes[i], className)) {
+ return elem.childNodes[i];
+ }
+ }
+ };
+ const applyNumericalStyle = (elem, property, value) => {
+ if (value === "".concat(parseInt(value))) {
+ value = parseInt(value);
+ }
+
+ if (value || parseInt(value) === 0) {
+ elem.style[property] = typeof value === 'number' ? "".concat(value, "px") : value;
+ } else {
+ elem.style.removeProperty(property);
+ }
+ };
+ const show = (elem, display = 'flex') => {
+ elem.style.display = display;
+ };
+ const hide = elem => {
+ elem.style.display = 'none';
+ };
+ const setStyle = (parent, selector, property, value) => {
+ const el = parent.querySelector(selector);
+
+ if (el) {
+ el.style[property] = value;
+ }
+ };
+ const toggle = (elem, condition, display) => {
+ condition ? show(elem, display) : hide(elem);
+ }; // borrowed from jquery $(elem).is(':visible') implementation
+
+ const isVisible = elem => !!(elem && (elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length));
+ const allButtonsAreHidden = () => !isVisible(getConfirmButton()) && !isVisible(getDenyButton()) && !isVisible(getCancelButton());
+ const isScrollable = elem => !!(elem.scrollHeight > elem.clientHeight); // borrowed from https://stackoverflow.com/a/46352119
+
+ const hasCssAnimation = elem => {
+ const style = window.getComputedStyle(elem);
+ const animDuration = parseFloat(style.getPropertyValue('animation-duration') || '0');
+ const transDuration = parseFloat(style.getPropertyValue('transition-duration') || '0');
+ return animDuration > 0 || transDuration > 0;
+ };
+ const animateTimerProgressBar = (timer, reset = false) => {
+ const timerProgressBar = getTimerProgressBar();
+
+ if (isVisible(timerProgressBar)) {
+ if (reset) {
+ timerProgressBar.style.transition = 'none';
+ timerProgressBar.style.width = '100%';
+ }
+
+ setTimeout(() => {
+ timerProgressBar.style.transition = "width ".concat(timer / 1000, "s linear");
+ timerProgressBar.style.width = '0%';
+ }, 10);
+ }
+ };
+ const stopTimerProgressBar = () => {
+ const timerProgressBar = getTimerProgressBar();
+ const timerProgressBarWidth = parseInt(window.getComputedStyle(timerProgressBar).width);
+ timerProgressBar.style.removeProperty('transition');
+ timerProgressBar.style.width = '100%';
+ const timerProgressBarFullWidth = parseInt(window.getComputedStyle(timerProgressBar).width);
+ const timerProgressBarPercent = parseInt(timerProgressBarWidth / timerProgressBarFullWidth * 100);
+ timerProgressBar.style.removeProperty('transition');
+ timerProgressBar.style.width = "".concat(timerProgressBarPercent, "%");
+ };
+
+ // Detect Node env
+ const isNodeEnv = () => typeof window === 'undefined' || typeof document === 'undefined';
+
+ const sweetHTML = "\n \n").replace(/(^|\n)\s*/g, '');
+
+ const resetOldContainer = () => {
+ const oldContainer = getContainer();
+
+ if (!oldContainer) {
+ return false;
+ }
+
+ oldContainer.remove();
+ removeClass([document.documentElement, document.body], [swalClasses['no-backdrop'], swalClasses['toast-shown'], swalClasses['has-column']]);
+ return true;
+ };
+
+ const resetValidationMessage = () => {
+ if (Swal.isVisible()) {
+ Swal.resetValidationMessage();
+ }
+ };
+
+ const addInputChangeListeners = () => {
+ const popup = getPopup();
+ const input = getChildByClass(popup, swalClasses.input);
+ const file = getChildByClass(popup, swalClasses.file);
+ const range = popup.querySelector(".".concat(swalClasses.range, " input"));
+ const rangeOutput = popup.querySelector(".".concat(swalClasses.range, " output"));
+ const select = getChildByClass(popup, swalClasses.select);
+ const checkbox = popup.querySelector(".".concat(swalClasses.checkbox, " input"));
+ const textarea = getChildByClass(popup, swalClasses.textarea);
+ input.oninput = resetValidationMessage;
+ file.onchange = resetValidationMessage;
+ select.onchange = resetValidationMessage;
+ checkbox.onchange = resetValidationMessage;
+ textarea.oninput = resetValidationMessage;
+
+ range.oninput = () => {
+ resetValidationMessage();
+ rangeOutput.value = range.value;
+ };
+
+ range.onchange = () => {
+ resetValidationMessage();
+ range.nextSibling.value = range.value;
+ };
+ };
+
+ const getTarget = target => typeof target === 'string' ? document.querySelector(target) : target;
+
+ const setupAccessibility = params => {
+ const popup = getPopup();
+ popup.setAttribute('role', params.toast ? 'alert' : 'dialog');
+ popup.setAttribute('aria-live', params.toast ? 'polite' : 'assertive');
+
+ if (!params.toast) {
+ popup.setAttribute('aria-modal', 'true');
+ }
+ };
+
+ const setupRTL = targetElement => {
+ if (window.getComputedStyle(targetElement).direction === 'rtl') {
+ addClass(getContainer(), swalClasses.rtl);
+ }
+ };
+ /*
+ * Add modal + backdrop to DOM
+ */
+
+
+ const init = params => {
+ // Clean up the old popup container if it exists
+ const oldContainerExisted = resetOldContainer();
+ /* istanbul ignore if */
+
+ if (isNodeEnv()) {
+ error('SweetAlert2 requires document to initialize');
+ return;
+ }
+
+ const container = document.createElement('div');
+ container.className = swalClasses.container;
+
+ if (oldContainerExisted) {
+ addClass(container, swalClasses['no-transition']);
+ }
+
+ setInnerHtml(container, sweetHTML);
+ const targetElement = getTarget(params.target);
+ targetElement.appendChild(container);
+ setupAccessibility(params);
+ setupRTL(targetElement);
+ addInputChangeListeners();
+ };
+
+ const parseHtmlToContainer = (param, target) => {
+ // DOM element
+ if (param instanceof HTMLElement) {
+ target.appendChild(param); // Object
+ } else if (typeof param === 'object') {
+ handleObject(param, target); // Plain string
+ } else if (param) {
+ setInnerHtml(target, param);
+ }
+ };
+
+ const handleObject = (param, target) => {
+ // JQuery element(s)
+ if (param.jquery) {
+ handleJqueryElem(target, param); // For other objects use their string representation
+ } else {
+ setInnerHtml(target, param.toString());
+ }
+ };
+
+ const handleJqueryElem = (target, elem) => {
+ target.textContent = '';
+
+ if (0 in elem) {
+ for (let i = 0; (i in elem); i++) {
+ target.appendChild(elem[i].cloneNode(true));
+ }
+ } else {
+ target.appendChild(elem.cloneNode(true));
+ }
+ };
+
+ const animationEndEvent = (() => {
+ // Prevent run in Node env
+
+ /* istanbul ignore if */
+ if (isNodeEnv()) {
+ return false;
+ }
+
+ const testEl = document.createElement('div');
+ const transEndEventNames = {
+ WebkitAnimation: 'webkitAnimationEnd',
+ OAnimation: 'oAnimationEnd oanimationend',
+ animation: 'animationend'
+ };
+
+ for (const i in transEndEventNames) {
+ if (Object.prototype.hasOwnProperty.call(transEndEventNames, i) && typeof testEl.style[i] !== 'undefined') {
+ return transEndEventNames[i];
+ }
+ }
+
+ return false;
+ })();
+
+ // https://github.com/twbs/bootstrap/blob/master/js/src/modal.js
+
+ const measureScrollbar = () => {
+ const scrollDiv = document.createElement('div');
+ scrollDiv.className = swalClasses['scrollbar-measure'];
+ document.body.appendChild(scrollDiv);
+ const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
+ document.body.removeChild(scrollDiv);
+ return scrollbarWidth;
+ };
+
+ const renderActions = (instance, params) => {
+ const actions = getActions();
+ const loader = getLoader();
+ const confirmButton = getConfirmButton();
+ const denyButton = getDenyButton();
+ const cancelButton = getCancelButton(); // Actions (buttons) wrapper
+
+ if (!params.showConfirmButton && !params.showDenyButton && !params.showCancelButton) {
+ hide(actions);
+ } else {
+ show(actions);
+ } // Custom class
+
+
+ applyCustomClass(actions, params, 'actions'); // Render buttons
+
+ renderButton(confirmButton, 'confirm', params);
+ renderButton(denyButton, 'deny', params);
+ renderButton(cancelButton, 'cancel', params);
+ handleButtonsStyling(confirmButton, denyButton, cancelButton, params);
+
+ if (params.reverseButtons) {
+ actions.insertBefore(cancelButton, loader);
+ actions.insertBefore(denyButton, loader);
+ actions.insertBefore(confirmButton, loader);
+ } // Loader
+
+
+ setInnerHtml(loader, params.loaderHtml);
+ applyCustomClass(loader, params, 'loader');
+ };
+
+ function handleButtonsStyling(confirmButton, denyButton, cancelButton, params) {
+ if (!params.buttonsStyling) {
+ return removeClass([confirmButton, denyButton, cancelButton], swalClasses.styled);
+ }
+
+ addClass([confirmButton, denyButton, cancelButton], swalClasses.styled); // Buttons background colors
+
+ if (params.confirmButtonColor) {
+ confirmButton.style.backgroundColor = params.confirmButtonColor;
+ addClass(confirmButton, swalClasses['default-outline']);
+ }
+
+ if (params.denyButtonColor) {
+ denyButton.style.backgroundColor = params.denyButtonColor;
+ addClass(denyButton, swalClasses['default-outline']);
+ }
+
+ if (params.cancelButtonColor) {
+ cancelButton.style.backgroundColor = params.cancelButtonColor;
+ addClass(cancelButton, swalClasses['default-outline']);
+ }
+ }
+
+ function renderButton(button, buttonType, params) {
+ toggle(button, params["show".concat(capitalizeFirstLetter(buttonType), "Button")], 'inline-block');
+ setInnerHtml(button, params["".concat(buttonType, "ButtonText")]); // Set caption text
+
+ button.setAttribute('aria-label', params["".concat(buttonType, "ButtonAriaLabel")]); // ARIA label
+ // Add buttons custom classes
+
+ button.className = swalClasses[buttonType];
+ applyCustomClass(button, params, "".concat(buttonType, "Button"));
+ addClass(button, params["".concat(buttonType, "ButtonClass")]);
+ }
+
+ function handleBackdropParam(container, backdrop) {
+ if (typeof backdrop === 'string') {
+ container.style.background = backdrop;
+ } else if (!backdrop) {
+ addClass([document.documentElement, document.body], swalClasses['no-backdrop']);
+ }
+ }
+
+ function handlePositionParam(container, position) {
+ if (position in swalClasses) {
+ addClass(container, swalClasses[position]);
+ } else {
+ warn('The "position" parameter is not valid, defaulting to "center"');
+ addClass(container, swalClasses.center);
+ }
+ }
+
+ function handleGrowParam(container, grow) {
+ if (grow && typeof grow === 'string') {
+ const growClass = "grow-".concat(grow);
+
+ if (growClass in swalClasses) {
+ addClass(container, swalClasses[growClass]);
+ }
+ }
+ }
+
+ const renderContainer = (instance, params) => {
+ const container = getContainer();
+
+ if (!container) {
+ return;
+ }
+
+ handleBackdropParam(container, params.backdrop);
+ handlePositionParam(container, params.position);
+ handleGrowParam(container, params.grow); // Custom class
+
+ applyCustomClass(container, params, 'container');
+ };
+
+ /**
+ * This module containts `WeakMap`s for each effectively-"private property" that a `Swal` has.
+ * For example, to set the private property "foo" of `this` to "bar", you can `privateProps.foo.set(this, 'bar')`
+ * This is the approach that Babel will probably take to implement private methods/fields
+ * https://github.com/tc39/proposal-private-methods
+ * https://github.com/babel/babel/pull/7555
+ * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module*
+ * then we can use that language feature.
+ */
+ var privateProps = {
+ promise: new WeakMap(),
+ innerParams: new WeakMap(),
+ domCache: new WeakMap()
+ };
+
+ const inputTypes = ['input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea'];
+ const renderInput = (instance, params) => {
+ const popup = getPopup();
+ const innerParams = privateProps.innerParams.get(instance);
+ const rerender = !innerParams || params.input !== innerParams.input;
+ inputTypes.forEach(inputType => {
+ const inputClass = swalClasses[inputType];
+ const inputContainer = getChildByClass(popup, inputClass); // set attributes
+
+ setAttributes(inputType, params.inputAttributes); // set class
+
+ inputContainer.className = inputClass;
+
+ if (rerender) {
+ hide(inputContainer);
+ }
+ });
+
+ if (params.input) {
+ if (rerender) {
+ showInput(params);
+ } // set custom class
+
+
+ setCustomClass(params);
+ }
+ };
+
+ const showInput = params => {
+ if (!renderInputType[params.input]) {
+ return error("Unexpected type of input! Expected \"text\", \"email\", \"password\", \"number\", \"tel\", \"select\", \"radio\", \"checkbox\", \"textarea\", \"file\" or \"url\", got \"".concat(params.input, "\""));
+ }
+
+ const inputContainer = getInputContainer(params.input);
+ const input = renderInputType[params.input](inputContainer, params);
+ show(input); // input autofocus
+
+ setTimeout(() => {
+ focusInput(input);
+ });
+ };
+
+ const removeAttributes = input => {
+ for (let i = 0; i < input.attributes.length; i++) {
+ const attrName = input.attributes[i].name;
+
+ if (!['type', 'value', 'style'].includes(attrName)) {
+ input.removeAttribute(attrName);
+ }
+ }
+ };
+
+ const setAttributes = (inputType, inputAttributes) => {
+ const input = getInput(getPopup(), inputType);
+
+ if (!input) {
+ return;
+ }
+
+ removeAttributes(input);
+
+ for (const attr in inputAttributes) {
+ input.setAttribute(attr, inputAttributes[attr]);
+ }
+ };
+
+ const setCustomClass = params => {
+ const inputContainer = getInputContainer(params.input);
+
+ if (params.customClass) {
+ addClass(inputContainer, params.customClass.input);
+ }
+ };
+
+ const setInputPlaceholder = (input, params) => {
+ if (!input.placeholder || params.inputPlaceholder) {
+ input.placeholder = params.inputPlaceholder;
+ }
+ };
+
+ const setInputLabel = (input, prependTo, params) => {
+ if (params.inputLabel) {
+ input.id = swalClasses.input;
+ const label = document.createElement('label');
+ const labelClass = swalClasses['input-label'];
+ label.setAttribute('for', input.id);
+ label.className = labelClass;
+ addClass(label, params.customClass.inputLabel);
+ label.innerText = params.inputLabel;
+ prependTo.insertAdjacentElement('beforebegin', label);
+ }
+ };
+
+ const getInputContainer = inputType => {
+ const inputClass = swalClasses[inputType] ? swalClasses[inputType] : swalClasses.input;
+ return getChildByClass(getPopup(), inputClass);
+ };
+
+ const renderInputType = {};
+
+ renderInputType.text = renderInputType.email = renderInputType.password = renderInputType.number = renderInputType.tel = renderInputType.url = (input, params) => {
+ if (typeof params.inputValue === 'string' || typeof params.inputValue === 'number') {
+ input.value = params.inputValue;
+ } else if (!isPromise(params.inputValue)) {
+ warn("Unexpected type of inputValue! Expected \"string\", \"number\" or \"Promise\", got \"".concat(typeof params.inputValue, "\""));
+ }
+
+ setInputLabel(input, input, params);
+ setInputPlaceholder(input, params);
+ input.type = params.input;
+ return input;
+ };
+
+ renderInputType.file = (input, params) => {
+ setInputLabel(input, input, params);
+ setInputPlaceholder(input, params);
+ return input;
+ };
+
+ renderInputType.range = (range, params) => {
+ const rangeInput = range.querySelector('input');
+ const rangeOutput = range.querySelector('output');
+ rangeInput.value = params.inputValue;
+ rangeInput.type = params.input;
+ rangeOutput.value = params.inputValue;
+ setInputLabel(rangeInput, range, params);
+ return range;
+ };
+
+ renderInputType.select = (select, params) => {
+ select.textContent = '';
+
+ if (params.inputPlaceholder) {
+ const placeholder = document.createElement('option');
+ setInnerHtml(placeholder, params.inputPlaceholder);
+ placeholder.value = '';
+ placeholder.disabled = true;
+ placeholder.selected = true;
+ select.appendChild(placeholder);
+ }
+
+ setInputLabel(select, select, params);
+ return select;
+ };
+
+ renderInputType.radio = radio => {
+ radio.textContent = '';
+ return radio;
+ };
+
+ renderInputType.checkbox = (checkboxContainer, params) => {
+ const checkbox = getInput(getPopup(), 'checkbox');
+ checkbox.value = 1;
+ checkbox.id = swalClasses.checkbox;
+ checkbox.checked = Boolean(params.inputValue);
+ const label = checkboxContainer.querySelector('span');
+ setInnerHtml(label, params.inputPlaceholder);
+ return checkboxContainer;
+ };
+
+ renderInputType.textarea = (textarea, params) => {
+ textarea.value = params.inputValue;
+ setInputPlaceholder(textarea, params);
+ setInputLabel(textarea, textarea, params);
+
+ const getMargin = el => parseInt(window.getComputedStyle(el).marginLeft) + parseInt(window.getComputedStyle(el).marginRight);
+
+ setTimeout(() => {
+ // #2291
+ if ('MutationObserver' in window) {
+ // #1699
+ const initialPopupWidth = parseInt(window.getComputedStyle(getPopup()).width);
+
+ const textareaResizeHandler = () => {
+ const textareaWidth = textarea.offsetWidth + getMargin(textarea);
+
+ if (textareaWidth > initialPopupWidth) {
+ getPopup().style.width = "".concat(textareaWidth, "px");
+ } else {
+ getPopup().style.width = null;
+ }
+ };
+
+ new MutationObserver(textareaResizeHandler).observe(textarea, {
+ attributes: true,
+ attributeFilter: ['style']
+ });
+ }
+ });
+ return textarea;
+ };
+
+ const renderContent = (instance, params) => {
+ const htmlContainer = getHtmlContainer();
+ applyCustomClass(htmlContainer, params, 'htmlContainer'); // Content as HTML
+
+ if (params.html) {
+ parseHtmlToContainer(params.html, htmlContainer);
+ show(htmlContainer, 'block'); // Content as plain text
+ } else if (params.text) {
+ htmlContainer.textContent = params.text;
+ show(htmlContainer, 'block'); // No content
+ } else {
+ hide(htmlContainer);
+ }
+
+ renderInput(instance, params);
+ };
+
+ const renderFooter = (instance, params) => {
+ const footer = getFooter();
+ toggle(footer, params.footer);
+
+ if (params.footer) {
+ parseHtmlToContainer(params.footer, footer);
+ } // Custom class
+
+
+ applyCustomClass(footer, params, 'footer');
+ };
+
+ const renderCloseButton = (instance, params) => {
+ const closeButton = getCloseButton();
+ setInnerHtml(closeButton, params.closeButtonHtml); // Custom class
+
+ applyCustomClass(closeButton, params, 'closeButton');
+ toggle(closeButton, params.showCloseButton);
+ closeButton.setAttribute('aria-label', params.closeButtonAriaLabel);
+ };
+
+ const renderIcon = (instance, params) => {
+ const innerParams = privateProps.innerParams.get(instance);
+ const icon = getIcon(); // if the given icon already rendered, apply the styling without re-rendering the icon
+
+ if (innerParams && params.icon === innerParams.icon) {
+ // Custom or default content
+ setContent(icon, params);
+ applyStyles(icon, params);
+ return;
+ }
+
+ if (!params.icon && !params.iconHtml) {
+ return hide(icon);
+ }
+
+ if (params.icon && Object.keys(iconTypes).indexOf(params.icon) === -1) {
+ error("Unknown icon! Expected \"success\", \"error\", \"warning\", \"info\" or \"question\", got \"".concat(params.icon, "\""));
+ return hide(icon);
+ }
+
+ show(icon); // Custom or default content
+
+ setContent(icon, params);
+ applyStyles(icon, params); // Animate icon
+
+ addClass(icon, params.showClass.icon);
+ };
+
+ const applyStyles = (icon, params) => {
+ for (const iconType in iconTypes) {
+ if (params.icon !== iconType) {
+ removeClass(icon, iconTypes[iconType]);
+ }
+ }
+
+ addClass(icon, iconTypes[params.icon]); // Icon color
+
+ setColor(icon, params); // Success icon background color
+
+ adjustSuccessIconBackgoundColor(); // Custom class
+
+ applyCustomClass(icon, params, 'icon');
+ }; // Adjust success icon background color to match the popup background color
+
+
+ const adjustSuccessIconBackgoundColor = () => {
+ const popup = getPopup();
+ const popupBackgroundColor = window.getComputedStyle(popup).getPropertyValue('background-color');
+ const successIconParts = popup.querySelectorAll('[class^=swal2-success-circular-line], .swal2-success-fix');
+
+ for (let i = 0; i < successIconParts.length; i++) {
+ successIconParts[i].style.backgroundColor = popupBackgroundColor;
+ }
+ };
+
+ const setContent = (icon, params) => {
+ icon.textContent = '';
+
+ if (params.iconHtml) {
+ setInnerHtml(icon, iconContent(params.iconHtml));
+ } else if (params.icon === 'success') {
+ setInnerHtml(icon, "\n
\n \n
\n
\n ");
+ } else if (params.icon === 'error') {
+ setInnerHtml(icon, "\n \n \n \n \n ");
+ } else {
+ const defaultIconHtml = {
+ question: '?',
+ warning: '!',
+ info: 'i'
+ };
+ setInnerHtml(icon, iconContent(defaultIconHtml[params.icon]));
+ }
+ };
+
+ const setColor = (icon, params) => {
+ if (!params.iconColor) {
+ return;
+ }
+
+ icon.style.color = params.iconColor;
+ icon.style.borderColor = params.iconColor;
+
+ for (const sel of ['.swal2-success-line-tip', '.swal2-success-line-long', '.swal2-x-mark-line-left', '.swal2-x-mark-line-right']) {
+ setStyle(icon, sel, 'backgroundColor', params.iconColor);
+ }
+
+ setStyle(icon, '.swal2-success-ring', 'borderColor', params.iconColor);
+ };
+
+ const iconContent = content => "").concat(content, "
");
+
+ const renderImage = (instance, params) => {
+ const image = getImage();
+
+ if (!params.imageUrl) {
+ return hide(image);
+ }
+
+ show(image, ''); // Src, alt
+
+ image.setAttribute('src', params.imageUrl);
+ image.setAttribute('alt', params.imageAlt); // Width, height
+
+ applyNumericalStyle(image, 'width', params.imageWidth);
+ applyNumericalStyle(image, 'height', params.imageHeight); // Class
+
+ image.className = swalClasses.image;
+ applyCustomClass(image, params, 'image');
+ };
+
+ const createStepElement = step => {
+ const stepEl = document.createElement('li');
+ addClass(stepEl, swalClasses['progress-step']);
+ setInnerHtml(stepEl, step);
+ return stepEl;
+ };
+
+ const createLineElement = params => {
+ const lineEl = document.createElement('li');
+ addClass(lineEl, swalClasses['progress-step-line']);
+
+ if (params.progressStepsDistance) {
+ lineEl.style.width = params.progressStepsDistance;
+ }
+
+ return lineEl;
+ };
+
+ const renderProgressSteps = (instance, params) => {
+ const progressStepsContainer = getProgressSteps();
+
+ if (!params.progressSteps || params.progressSteps.length === 0) {
+ return hide(progressStepsContainer);
+ }
+
+ show(progressStepsContainer);
+ progressStepsContainer.textContent = '';
+
+ if (params.currentProgressStep >= params.progressSteps.length) {
+ warn('Invalid currentProgressStep parameter, it should be less than progressSteps.length ' + '(currentProgressStep like JS arrays starts from 0)');
+ }
+
+ params.progressSteps.forEach((step, index) => {
+ const stepEl = createStepElement(step);
+ progressStepsContainer.appendChild(stepEl);
+
+ if (index === params.currentProgressStep) {
+ addClass(stepEl, swalClasses['active-progress-step']);
+ }
+
+ if (index !== params.progressSteps.length - 1) {
+ const lineEl = createLineElement(params);
+ progressStepsContainer.appendChild(lineEl);
+ }
+ });
+ };
+
+ const renderTitle = (instance, params) => {
+ const title = getTitle();
+ toggle(title, params.title || params.titleText, 'block');
+
+ if (params.title) {
+ parseHtmlToContainer(params.title, title);
+ }
+
+ if (params.titleText) {
+ title.innerText = params.titleText;
+ } // Custom class
+
+
+ applyCustomClass(title, params, 'title');
+ };
+
+ const renderPopup = (instance, params) => {
+ const container = getContainer();
+ const popup = getPopup(); // Width
+
+ if (params.toast) {
+ // #2170
+ applyNumericalStyle(container, 'width', params.width);
+ popup.style.width = '100%';
+ popup.insertBefore(getLoader(), getIcon());
+ } else {
+ applyNumericalStyle(popup, 'width', params.width);
+ } // Padding
+
+
+ applyNumericalStyle(popup, 'padding', params.padding); // Background
+
+ if (params.background) {
+ popup.style.background = params.background;
+ }
+
+ hide(getValidationMessage()); // Classes
+
+ addClasses(popup, params);
+ };
+
+ const addClasses = (popup, params) => {
+ // Default Class + showClass when updating Swal.update({})
+ popup.className = "".concat(swalClasses.popup, " ").concat(isVisible(popup) ? params.showClass.popup : '');
+
+ if (params.toast) {
+ addClass([document.documentElement, document.body], swalClasses['toast-shown']);
+ addClass(popup, swalClasses.toast);
+ } else {
+ addClass(popup, swalClasses.modal);
+ } // Custom class
+
+
+ applyCustomClass(popup, params, 'popup');
+
+ if (typeof params.customClass === 'string') {
+ addClass(popup, params.customClass);
+ } // Icon class (#1842)
+
+
+ if (params.icon) {
+ addClass(popup, swalClasses["icon-".concat(params.icon)]);
+ }
+ };
+
+ const render = (instance, params) => {
+ renderPopup(instance, params);
+ renderContainer(instance, params);
+ renderProgressSteps(instance, params);
+ renderIcon(instance, params);
+ renderImage(instance, params);
+ renderTitle(instance, params);
+ renderCloseButton(instance, params);
+ renderContent(instance, params);
+ renderActions(instance, params);
+ renderFooter(instance, params);
+
+ if (typeof params.didRender === 'function') {
+ params.didRender(getPopup());
+ }
+ };
+
+ /*
+ * Global function to determine if SweetAlert2 popup is shown
+ */
+
+ const isVisible$1 = () => {
+ return isVisible(getPopup());
+ };
+ /*
+ * Global function to click 'Confirm' button
+ */
+
+ const clickConfirm = () => getConfirmButton() && getConfirmButton().click();
+ /*
+ * Global function to click 'Deny' button
+ */
+
+ const clickDeny = () => getDenyButton() && getDenyButton().click();
+ /*
+ * Global function to click 'Cancel' button
+ */
+
+ const clickCancel = () => getCancelButton() && getCancelButton().click();
+
+ function fire(...args) {
+ const Swal = this;
+ return new Swal(...args);
+ }
+
+ /**
+ * Returns an extended version of `Swal` containing `params` as defaults.
+ * Useful for reusing Swal configuration.
+ *
+ * For example:
+ *
+ * Before:
+ * const textPromptOptions = { input: 'text', showCancelButton: true }
+ * const {value: firstName} = await Swal.fire({ ...textPromptOptions, title: 'What is your first name?' })
+ * const {value: lastName} = await Swal.fire({ ...textPromptOptions, title: 'What is your last name?' })
+ *
+ * After:
+ * const TextPrompt = Swal.mixin({ input: 'text', showCancelButton: true })
+ * const {value: firstName} = await TextPrompt('What is your first name?')
+ * const {value: lastName} = await TextPrompt('What is your last name?')
+ *
+ * @param mixinParams
+ */
+ function mixin(mixinParams) {
+ class MixinSwal extends this {
+ _main(params, priorityMixinParams) {
+ return super._main(params, Object.assign({}, mixinParams, priorityMixinParams));
+ }
+
+ }
+
+ return MixinSwal;
+ }
+
+ /**
+ * Shows loader (spinner), this is useful with AJAX requests.
+ * By default the loader be shown instead of the "Confirm" button.
+ */
+
+ const showLoading = buttonToReplace => {
+ let popup = getPopup();
+
+ if (!popup) {
+ Swal.fire();
+ }
+
+ popup = getPopup();
+ const loader = getLoader();
+
+ if (isToast()) {
+ hide(getIcon());
+ } else {
+ replaceButton(popup, buttonToReplace);
+ }
+
+ show(loader);
+ popup.setAttribute('data-loading', true);
+ popup.setAttribute('aria-busy', true);
+ popup.focus();
+ };
+
+ const replaceButton = (popup, buttonToReplace) => {
+ const actions = getActions();
+ const loader = getLoader();
+
+ if (!buttonToReplace && isVisible(getConfirmButton())) {
+ buttonToReplace = getConfirmButton();
+ }
+
+ show(actions);
+
+ if (buttonToReplace) {
+ hide(buttonToReplace);
+ loader.setAttribute('data-button-to-replace', buttonToReplace.className);
+ }
+
+ loader.parentNode.insertBefore(loader, buttonToReplace);
+ addClass([popup, actions], swalClasses.loading);
+ };
+
+ const RESTORE_FOCUS_TIMEOUT = 100;
+
+ const globalState = {};
+
+ const focusPreviousActiveElement = () => {
+ if (globalState.previousActiveElement && globalState.previousActiveElement.focus) {
+ globalState.previousActiveElement.focus();
+ globalState.previousActiveElement = null;
+ } else if (document.body) {
+ document.body.focus();
+ }
+ }; // Restore previous active (focused) element
+
+
+ const restoreActiveElement = returnFocus => {
+ return new Promise(resolve => {
+ if (!returnFocus) {
+ return resolve();
+ }
+
+ const x = window.scrollX;
+ const y = window.scrollY;
+ globalState.restoreFocusTimeout = setTimeout(() => {
+ focusPreviousActiveElement();
+ resolve();
+ }, RESTORE_FOCUS_TIMEOUT); // issues/900
+
+ window.scrollTo(x, y);
+ });
+ };
+
+ /**
+ * If `timer` parameter is set, returns number of milliseconds of timer remained.
+ * Otherwise, returns undefined.
+ */
+
+ const getTimerLeft = () => {
+ return globalState.timeout && globalState.timeout.getTimerLeft();
+ };
+ /**
+ * Stop timer. Returns number of milliseconds of timer remained.
+ * If `timer` parameter isn't set, returns undefined.
+ */
+
+ const stopTimer = () => {
+ if (globalState.timeout) {
+ stopTimerProgressBar();
+ return globalState.timeout.stop();
+ }
+ };
+ /**
+ * Resume timer. Returns number of milliseconds of timer remained.
+ * If `timer` parameter isn't set, returns undefined.
+ */
+
+ const resumeTimer = () => {
+ if (globalState.timeout) {
+ const remaining = globalState.timeout.start();
+ animateTimerProgressBar(remaining);
+ return remaining;
+ }
+ };
+ /**
+ * Resume timer. Returns number of milliseconds of timer remained.
+ * If `timer` parameter isn't set, returns undefined.
+ */
+
+ const toggleTimer = () => {
+ const timer = globalState.timeout;
+ return timer && (timer.running ? stopTimer() : resumeTimer());
+ };
+ /**
+ * Increase timer. Returns number of milliseconds of an updated timer.
+ * If `timer` parameter isn't set, returns undefined.
+ */
+
+ const increaseTimer = n => {
+ if (globalState.timeout) {
+ const remaining = globalState.timeout.increase(n);
+ animateTimerProgressBar(remaining, true);
+ return remaining;
+ }
+ };
+ /**
+ * Check if timer is running. Returns true if timer is running
+ * or false if timer is paused or stopped.
+ * If `timer` parameter isn't set, returns undefined
+ */
+
+ const isTimerRunning = () => {
+ return globalState.timeout && globalState.timeout.isRunning();
+ };
+
+ let bodyClickListenerAdded = false;
+ const clickHandlers = {};
+ function bindClickHandler(attr = 'data-swal-template') {
+ clickHandlers[attr] = this;
+
+ if (!bodyClickListenerAdded) {
+ document.body.addEventListener('click', bodyClickListener);
+ bodyClickListenerAdded = true;
+ }
+ }
+
+ const bodyClickListener = event => {
+ for (let el = event.target; el && el !== document; el = el.parentNode) {
+ for (const attr in clickHandlers) {
+ const template = el.getAttribute(attr);
+
+ if (template) {
+ clickHandlers[attr].fire({
+ template
+ });
+ return;
+ }
+ }
+ }
+ };
+
+ const defaultParams = {
+ title: '',
+ titleText: '',
+ text: '',
+ html: '',
+ footer: '',
+ icon: undefined,
+ iconColor: undefined,
+ iconHtml: undefined,
+ template: undefined,
+ toast: false,
+ showClass: {
+ popup: 'swal2-show',
+ backdrop: 'swal2-backdrop-show',
+ icon: 'swal2-icon-show'
+ },
+ hideClass: {
+ popup: 'swal2-hide',
+ backdrop: 'swal2-backdrop-hide',
+ icon: 'swal2-icon-hide'
+ },
+ customClass: {},
+ target: 'body',
+ backdrop: true,
+ heightAuto: true,
+ allowOutsideClick: true,
+ allowEscapeKey: true,
+ allowEnterKey: true,
+ stopKeydownPropagation: true,
+ keydownListenerCapture: false,
+ showConfirmButton: true,
+ showDenyButton: false,
+ showCancelButton: false,
+ preConfirm: undefined,
+ preDeny: undefined,
+ confirmButtonText: 'OK',
+ confirmButtonAriaLabel: '',
+ confirmButtonColor: undefined,
+ denyButtonText: 'No',
+ denyButtonAriaLabel: '',
+ denyButtonColor: undefined,
+ cancelButtonText: 'Cancel',
+ cancelButtonAriaLabel: '',
+ cancelButtonColor: undefined,
+ buttonsStyling: true,
+ reverseButtons: false,
+ focusConfirm: true,
+ focusDeny: false,
+ focusCancel: false,
+ returnFocus: true,
+ showCloseButton: false,
+ closeButtonHtml: '×',
+ closeButtonAriaLabel: 'Close this dialog',
+ loaderHtml: '',
+ showLoaderOnConfirm: false,
+ showLoaderOnDeny: false,
+ imageUrl: undefined,
+ imageWidth: undefined,
+ imageHeight: undefined,
+ imageAlt: '',
+ timer: undefined,
+ timerProgressBar: false,
+ width: undefined,
+ padding: undefined,
+ background: undefined,
+ input: undefined,
+ inputPlaceholder: '',
+ inputLabel: '',
+ inputValue: '',
+ inputOptions: {},
+ inputAutoTrim: true,
+ inputAttributes: {},
+ inputValidator: undefined,
+ returnInputValueOnDeny: false,
+ validationMessage: undefined,
+ grow: false,
+ position: 'center',
+ progressSteps: [],
+ currentProgressStep: undefined,
+ progressStepsDistance: undefined,
+ willOpen: undefined,
+ didOpen: undefined,
+ didRender: undefined,
+ willClose: undefined,
+ didClose: undefined,
+ didDestroy: undefined,
+ scrollbarPadding: true
+ };
+ const updatableParams = ['allowEscapeKey', 'allowOutsideClick', 'background', 'buttonsStyling', 'cancelButtonAriaLabel', 'cancelButtonColor', 'cancelButtonText', 'closeButtonAriaLabel', 'closeButtonHtml', 'confirmButtonAriaLabel', 'confirmButtonColor', 'confirmButtonText', 'currentProgressStep', 'customClass', 'denyButtonAriaLabel', 'denyButtonColor', 'denyButtonText', 'didClose', 'didDestroy', 'footer', 'hideClass', 'html', 'icon', 'iconColor', 'iconHtml', 'imageAlt', 'imageHeight', 'imageUrl', 'imageWidth', 'preConfirm', 'preDeny', 'progressSteps', 'returnFocus', 'reverseButtons', 'showCancelButton', 'showCloseButton', 'showConfirmButton', 'showDenyButton', 'text', 'title', 'titleText', 'willClose'];
+ const deprecatedParams = {};
+ const toastIncompatibleParams = ['allowOutsideClick', 'allowEnterKey', 'backdrop', 'focusConfirm', 'focusDeny', 'focusCancel', 'returnFocus', 'heightAuto', 'keydownListenerCapture'];
+ /**
+ * Is valid parameter
+ * @param {String} paramName
+ */
+
+ const isValidParameter = paramName => {
+ return Object.prototype.hasOwnProperty.call(defaultParams, paramName);
+ };
+ /**
+ * Is valid parameter for Swal.update() method
+ * @param {String} paramName
+ */
+
+ const isUpdatableParameter = paramName => {
+ return updatableParams.indexOf(paramName) !== -1;
+ };
+ /**
+ * Is deprecated parameter
+ * @param {String} paramName
+ */
+
+ const isDeprecatedParameter = paramName => {
+ return deprecatedParams[paramName];
+ };
+
+ const checkIfParamIsValid = param => {
+ if (!isValidParameter(param)) {
+ warn("Unknown parameter \"".concat(param, "\""));
+ }
+ };
+
+ const checkIfToastParamIsValid = param => {
+ if (toastIncompatibleParams.includes(param)) {
+ warn("The parameter \"".concat(param, "\" is incompatible with toasts"));
+ }
+ };
+
+ const checkIfParamIsDeprecated = param => {
+ if (isDeprecatedParameter(param)) {
+ warnAboutDeprecation(param, isDeprecatedParameter(param));
+ }
+ };
+ /**
+ * Show relevant warnings for given params
+ *
+ * @param params
+ */
+
+
+ const showWarningsForParams = params => {
+ if (!params.backdrop && params.allowOutsideClick) {
+ warn('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`');
+ }
+
+ for (const param in params) {
+ checkIfParamIsValid(param);
+
+ if (params.toast) {
+ checkIfToastParamIsValid(param);
+ }
+
+ checkIfParamIsDeprecated(param);
+ }
+ };
+
+
+
+ var staticMethods = /*#__PURE__*/Object.freeze({
+ isValidParameter: isValidParameter,
+ isUpdatableParameter: isUpdatableParameter,
+ isDeprecatedParameter: isDeprecatedParameter,
+ argsToParams: argsToParams,
+ isVisible: isVisible$1,
+ clickConfirm: clickConfirm,
+ clickDeny: clickDeny,
+ clickCancel: clickCancel,
+ getContainer: getContainer,
+ getPopup: getPopup,
+ getTitle: getTitle,
+ getHtmlContainer: getHtmlContainer,
+ getImage: getImage,
+ getIcon: getIcon,
+ getInputLabel: getInputLabel,
+ getCloseButton: getCloseButton,
+ getActions: getActions,
+ getConfirmButton: getConfirmButton,
+ getDenyButton: getDenyButton,
+ getCancelButton: getCancelButton,
+ getLoader: getLoader,
+ getFooter: getFooter,
+ getTimerProgressBar: getTimerProgressBar,
+ getFocusableElements: getFocusableElements,
+ getValidationMessage: getValidationMessage,
+ isLoading: isLoading,
+ fire: fire,
+ mixin: mixin,
+ showLoading: showLoading,
+ enableLoading: showLoading,
+ getTimerLeft: getTimerLeft,
+ stopTimer: stopTimer,
+ resumeTimer: resumeTimer,
+ toggleTimer: toggleTimer,
+ increaseTimer: increaseTimer,
+ isTimerRunning: isTimerRunning,
+ bindClickHandler: bindClickHandler
+ });
+
+ /**
+ * Hides loader and shows back the button which was hidden by .showLoading()
+ */
+
+ function hideLoading() {
+ // do nothing if popup is closed
+ const innerParams = privateProps.innerParams.get(this);
+
+ if (!innerParams) {
+ return;
+ }
+
+ const domCache = privateProps.domCache.get(this);
+ hide(domCache.loader);
+
+ if (isToast()) {
+ if (innerParams.icon) {
+ show(getIcon());
+ }
+ } else {
+ showRelatedButton(domCache);
+ }
+
+ removeClass([domCache.popup, domCache.actions], swalClasses.loading);
+ domCache.popup.removeAttribute('aria-busy');
+ domCache.popup.removeAttribute('data-loading');
+ domCache.confirmButton.disabled = false;
+ domCache.denyButton.disabled = false;
+ domCache.cancelButton.disabled = false;
+ }
+
+ const showRelatedButton = domCache => {
+ const buttonToReplace = domCache.popup.getElementsByClassName(domCache.loader.getAttribute('data-button-to-replace'));
+
+ if (buttonToReplace.length) {
+ show(buttonToReplace[0], 'inline-block');
+ } else if (allButtonsAreHidden()) {
+ hide(domCache.actions);
+ }
+ };
+
+ function getInput$1(instance) {
+ const innerParams = privateProps.innerParams.get(instance || this);
+ const domCache = privateProps.domCache.get(instance || this);
+
+ if (!domCache) {
+ return null;
+ }
+
+ return getInput(domCache.popup, innerParams.input);
+ }
+
+ const fixScrollbar = () => {
+ // for queues, do not do this more than once
+ if (states.previousBodyPadding !== null) {
+ return;
+ } // if the body has overflow
+
+
+ if (document.body.scrollHeight > window.innerHeight) {
+ // add padding so the content doesn't shift after removal of scrollbar
+ states.previousBodyPadding = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right'));
+ document.body.style.paddingRight = "".concat(states.previousBodyPadding + measureScrollbar(), "px");
+ }
+ };
+ const undoScrollbar = () => {
+ if (states.previousBodyPadding !== null) {
+ document.body.style.paddingRight = "".concat(states.previousBodyPadding, "px");
+ states.previousBodyPadding = null;
+ }
+ };
+
+ /* istanbul ignore file */
+
+ const iOSfix = () => {
+ const iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1;
+
+ if (iOS && !hasClass(document.body, swalClasses.iosfix)) {
+ const offset = document.body.scrollTop;
+ document.body.style.top = "".concat(offset * -1, "px");
+ addClass(document.body, swalClasses.iosfix);
+ lockBodyScroll();
+ addBottomPaddingForTallPopups(); // #1948
+ }
+ };
+
+ const addBottomPaddingForTallPopups = () => {
+ const safari = !navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i);
+
+ if (safari) {
+ const bottomPanelHeight = 44;
+
+ if (getPopup().scrollHeight > window.innerHeight - bottomPanelHeight) {
+ getContainer().style.paddingBottom = "".concat(bottomPanelHeight, "px");
+ }
+ }
+ };
+
+ const lockBodyScroll = () => {
+ // #1246
+ const container = getContainer();
+ let preventTouchMove;
+
+ container.ontouchstart = e => {
+ preventTouchMove = shouldPreventTouchMove(e);
+ };
+
+ container.ontouchmove = e => {
+ if (preventTouchMove) {
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ };
+ };
+
+ const shouldPreventTouchMove = event => {
+ const target = event.target;
+ const container = getContainer();
+
+ if (isStylys(event) || isZoom(event)) {
+ return false;
+ }
+
+ if (target === container) {
+ return true;
+ }
+
+ if (!isScrollable(container) && target.tagName !== 'INPUT' && // #1603
+ target.tagName !== 'TEXTAREA' && // #2266
+ !(isScrollable(getHtmlContainer()) && // #1944
+ getHtmlContainer().contains(target))) {
+ return true;
+ }
+
+ return false;
+ };
+
+ const isStylys = event => {
+ // #1786
+ return event.touches && event.touches.length && event.touches[0].touchType === 'stylus';
+ };
+
+ const isZoom = event => {
+ // #1891
+ return event.touches && event.touches.length > 1;
+ };
+
+ const undoIOSfix = () => {
+ if (hasClass(document.body, swalClasses.iosfix)) {
+ const offset = parseInt(document.body.style.top, 10);
+ removeClass(document.body, swalClasses.iosfix);
+ document.body.style.top = '';
+ document.body.scrollTop = offset * -1;
+ }
+ };
+
+ // Adding aria-hidden="true" to elements outside of the active modal dialog ensures that
+ // elements not within the active modal dialog will not be surfaced if a user opens a screen
+ // reader’s list of elements (headings, form controls, landmarks, etc.) in the document.
+
+ const setAriaHidden = () => {
+ const bodyChildren = toArray(document.body.children);
+ bodyChildren.forEach(el => {
+ if (el === getContainer() || el.contains(getContainer())) {
+ return;
+ }
+
+ if (el.hasAttribute('aria-hidden')) {
+ el.setAttribute('data-previous-aria-hidden', el.getAttribute('aria-hidden'));
+ }
+
+ el.setAttribute('aria-hidden', 'true');
+ });
+ };
+ const unsetAriaHidden = () => {
+ const bodyChildren = toArray(document.body.children);
+ bodyChildren.forEach(el => {
+ if (el.hasAttribute('data-previous-aria-hidden')) {
+ el.setAttribute('aria-hidden', el.getAttribute('data-previous-aria-hidden'));
+ el.removeAttribute('data-previous-aria-hidden');
+ } else {
+ el.removeAttribute('aria-hidden');
+ }
+ });
+ };
+
+ /**
+ * This module containts `WeakMap`s for each effectively-"private property" that a `Swal` has.
+ * For example, to set the private property "foo" of `this` to "bar", you can `privateProps.foo.set(this, 'bar')`
+ * This is the approach that Babel will probably take to implement private methods/fields
+ * https://github.com/tc39/proposal-private-methods
+ * https://github.com/babel/babel/pull/7555
+ * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module*
+ * then we can use that language feature.
+ */
+ var privateMethods = {
+ swalPromiseResolve: new WeakMap()
+ };
+
+ /*
+ * Instance method to close sweetAlert
+ */
+
+ function removePopupAndResetState(instance, container, returnFocus, didClose) {
+ if (isToast()) {
+ triggerDidCloseAndDispose(instance, didClose);
+ } else {
+ restoreActiveElement(returnFocus).then(() => triggerDidCloseAndDispose(instance, didClose));
+ globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, {
+ capture: globalState.keydownListenerCapture
+ });
+ globalState.keydownHandlerAdded = false;
+ }
+
+ const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); // workaround for #2088
+ // for some reason removing the container in Safari will scroll the document to bottom
+
+ if (isSafari) {
+ container.setAttribute('style', 'display:none !important');
+ container.removeAttribute('class');
+ container.innerHTML = '';
+ } else {
+ container.remove();
+ }
+
+ if (isModal()) {
+ undoScrollbar();
+ undoIOSfix();
+ unsetAriaHidden();
+ }
+
+ removeBodyClasses();
+ }
+
+ function removeBodyClasses() {
+ removeClass([document.documentElement, document.body], [swalClasses.shown, swalClasses['height-auto'], swalClasses['no-backdrop'], swalClasses['toast-shown']]);
+ }
+
+ function close(resolveValue) {
+ const popup = getPopup();
+
+ if (!popup) {
+ return;
+ }
+
+ resolveValue = prepareResolveValue(resolveValue);
+ const innerParams = privateProps.innerParams.get(this);
+
+ if (!innerParams || hasClass(popup, innerParams.hideClass.popup)) {
+ return;
+ }
+
+ const swalPromiseResolve = privateMethods.swalPromiseResolve.get(this);
+ removeClass(popup, innerParams.showClass.popup);
+ addClass(popup, innerParams.hideClass.popup);
+ const backdrop = getContainer();
+ removeClass(backdrop, innerParams.showClass.backdrop);
+ addClass(backdrop, innerParams.hideClass.backdrop);
+ handlePopupAnimation(this, popup, innerParams); // Resolve Swal promise
+
+ swalPromiseResolve(resolveValue);
+ }
+
+ const prepareResolveValue = resolveValue => {
+ // When user calls Swal.close()
+ if (typeof resolveValue === 'undefined') {
+ return {
+ isConfirmed: false,
+ isDenied: false,
+ isDismissed: true
+ };
+ }
+
+ return Object.assign({
+ isConfirmed: false,
+ isDenied: false,
+ isDismissed: false
+ }, resolveValue);
+ };
+
+ const handlePopupAnimation = (instance, popup, innerParams) => {
+ const container = getContainer(); // If animation is supported, animate
+
+ const animationIsSupported = animationEndEvent && hasCssAnimation(popup);
+
+ if (typeof innerParams.willClose === 'function') {
+ innerParams.willClose(popup);
+ }
+
+ if (animationIsSupported) {
+ animatePopup(instance, popup, container, innerParams.returnFocus, innerParams.didClose);
+ } else {
+ // Otherwise, remove immediately
+ removePopupAndResetState(instance, container, innerParams.returnFocus, innerParams.didClose);
+ }
+ };
+
+ const animatePopup = (instance, popup, container, returnFocus, didClose) => {
+ globalState.swalCloseEventFinishedCallback = removePopupAndResetState.bind(null, instance, container, returnFocus, didClose);
+ popup.addEventListener(animationEndEvent, function (e) {
+ if (e.target === popup) {
+ globalState.swalCloseEventFinishedCallback();
+ delete globalState.swalCloseEventFinishedCallback;
+ }
+ });
+ };
+
+ const triggerDidCloseAndDispose = (instance, didClose) => {
+ setTimeout(() => {
+ if (typeof didClose === 'function') {
+ didClose.bind(instance.params)();
+ }
+
+ instance._destroy();
+ });
+ };
+
+ function setButtonsDisabled(instance, buttons, disabled) {
+ const domCache = privateProps.domCache.get(instance);
+ buttons.forEach(button => {
+ domCache[button].disabled = disabled;
+ });
+ }
+
+ function setInputDisabled(input, disabled) {
+ if (!input) {
+ return false;
+ }
+
+ if (input.type === 'radio') {
+ const radiosContainer = input.parentNode.parentNode;
+ const radios = radiosContainer.querySelectorAll('input');
+
+ for (let i = 0; i < radios.length; i++) {
+ radios[i].disabled = disabled;
+ }
+ } else {
+ input.disabled = disabled;
+ }
+ }
+
+ function enableButtons() {
+ setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], false);
+ }
+ function disableButtons() {
+ setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], true);
+ }
+ function enableInput() {
+ return setInputDisabled(this.getInput(), false);
+ }
+ function disableInput() {
+ return setInputDisabled(this.getInput(), true);
+ }
+
+ function showValidationMessage(error) {
+ const domCache = privateProps.domCache.get(this);
+ const params = privateProps.innerParams.get(this);
+ setInnerHtml(domCache.validationMessage, error);
+ domCache.validationMessage.className = swalClasses['validation-message'];
+
+ if (params.customClass && params.customClass.validationMessage) {
+ addClass(domCache.validationMessage, params.customClass.validationMessage);
+ }
+
+ show(domCache.validationMessage);
+ const input = this.getInput();
+
+ if (input) {
+ input.setAttribute('aria-invalid', true);
+ input.setAttribute('aria-describedby', swalClasses['validation-message']);
+ focusInput(input);
+ addClass(input, swalClasses.inputerror);
+ }
+ } // Hide block with validation message
+
+ function resetValidationMessage$1() {
+ const domCache = privateProps.domCache.get(this);
+
+ if (domCache.validationMessage) {
+ hide(domCache.validationMessage);
+ }
+
+ const input = this.getInput();
+
+ if (input) {
+ input.removeAttribute('aria-invalid');
+ input.removeAttribute('aria-describedby');
+ removeClass(input, swalClasses.inputerror);
+ }
+ }
+
+ function getProgressSteps$1() {
+ const domCache = privateProps.domCache.get(this);
+ return domCache.progressSteps;
+ }
+
+ class Timer {
+ constructor(callback, delay) {
+ this.callback = callback;
+ this.remaining = delay;
+ this.running = false;
+ this.start();
+ }
+
+ start() {
+ if (!this.running) {
+ this.running = true;
+ this.started = new Date();
+ this.id = setTimeout(this.callback, this.remaining);
+ }
+
+ return this.remaining;
+ }
+
+ stop() {
+ if (this.running) {
+ this.running = false;
+ clearTimeout(this.id);
+ this.remaining -= new Date() - this.started;
+ }
+
+ return this.remaining;
+ }
+
+ increase(n) {
+ const running = this.running;
+
+ if (running) {
+ this.stop();
+ }
+
+ this.remaining += n;
+
+ if (running) {
+ this.start();
+ }
+
+ return this.remaining;
+ }
+
+ getTimerLeft() {
+ if (this.running) {
+ this.stop();
+ this.start();
+ }
+
+ return this.remaining;
+ }
+
+ isRunning() {
+ return this.running;
+ }
+
+ }
+
+ var defaultInputValidators = {
+ email: (string, validationMessage) => {
+ return /^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid email address');
+ },
+ url: (string, validationMessage) => {
+ // taken from https://stackoverflow.com/a/3809435 with a small change from #1306 and #2013
+ return /^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid URL');
+ }
+ };
+
+ function setDefaultInputValidators(params) {
+ // Use default `inputValidator` for supported input types if not provided
+ if (!params.inputValidator) {
+ Object.keys(defaultInputValidators).forEach(key => {
+ if (params.input === key) {
+ params.inputValidator = defaultInputValidators[key];
+ }
+ });
+ }
+ }
+
+ function validateCustomTargetElement(params) {
+ // Determine if the custom target element is valid
+ if (!params.target || typeof params.target === 'string' && !document.querySelector(params.target) || typeof params.target !== 'string' && !params.target.appendChild) {
+ warn('Target parameter is not valid, defaulting to "body"');
+ params.target = 'body';
+ }
+ }
+ /**
+ * Set type, text and actions on popup
+ *
+ * @param params
+ * @returns {boolean}
+ */
+
+
+ function setParameters(params) {
+ setDefaultInputValidators(params); // showLoaderOnConfirm && preConfirm
+
+ if (params.showLoaderOnConfirm && !params.preConfirm) {
+ warn('showLoaderOnConfirm is set to true, but preConfirm is not defined.\n' + 'showLoaderOnConfirm should be used together with preConfirm, see usage example:\n' + 'https://sweetalert2.github.io/#ajax-request');
+ }
+
+ validateCustomTargetElement(params); // Replace newlines with in title
+
+ if (typeof params.title === 'string') {
+ params.title = params.title.split('\n').join(' ');
+ }
+
+ init(params);
+ }
+
+ const swalStringParams = ['swal-title', 'swal-html', 'swal-footer'];
+ const getTemplateParams = params => {
+ const template = typeof params.template === 'string' ? document.querySelector(params.template) : params.template;
+
+ if (!template) {
+ return {};
+ }
+
+ const templateContent = template.content;
+ showWarningsForElements(templateContent);
+ const result = Object.assign(getSwalParams(templateContent), getSwalButtons(templateContent), getSwalImage(templateContent), getSwalIcon(templateContent), getSwalInput(templateContent), getSwalStringParams(templateContent, swalStringParams));
+ return result;
+ };
+
+ const getSwalParams = templateContent => {
+ const result = {};
+ toArray(templateContent.querySelectorAll('swal-param')).forEach(param => {
+ showWarningsForAttributes(param, ['name', 'value']);
+ const paramName = param.getAttribute('name');
+ let value = param.getAttribute('value');
+
+ if (typeof defaultParams[paramName] === 'boolean' && value === 'false') {
+ value = false;
+ }
+
+ if (typeof defaultParams[paramName] === 'object') {
+ value = JSON.parse(value);
+ }
+
+ result[paramName] = value;
+ });
+ return result;
+ };
+
+ const getSwalButtons = templateContent => {
+ const result = {};
+ toArray(templateContent.querySelectorAll('swal-button')).forEach(button => {
+ showWarningsForAttributes(button, ['type', 'color', 'aria-label']);
+ const type = button.getAttribute('type');
+ result["".concat(type, "ButtonText")] = button.innerHTML;
+ result["show".concat(capitalizeFirstLetter(type), "Button")] = true;
+
+ if (button.hasAttribute('color')) {
+ result["".concat(type, "ButtonColor")] = button.getAttribute('color');
+ }
+
+ if (button.hasAttribute('aria-label')) {
+ result["".concat(type, "ButtonAriaLabel")] = button.getAttribute('aria-label');
+ }
+ });
+ return result;
+ };
+
+ const getSwalImage = templateContent => {
+ const result = {};
+ const image = templateContent.querySelector('swal-image');
+
+ if (image) {
+ showWarningsForAttributes(image, ['src', 'width', 'height', 'alt']);
+
+ if (image.hasAttribute('src')) {
+ result.imageUrl = image.getAttribute('src');
+ }
+
+ if (image.hasAttribute('width')) {
+ result.imageWidth = image.getAttribute('width');
+ }
+
+ if (image.hasAttribute('height')) {
+ result.imageHeight = image.getAttribute('height');
+ }
+
+ if (image.hasAttribute('alt')) {
+ result.imageAlt = image.getAttribute('alt');
+ }
+ }
+
+ return result;
+ };
+
+ const getSwalIcon = templateContent => {
+ const result = {};
+ const icon = templateContent.querySelector('swal-icon');
+
+ if (icon) {
+ showWarningsForAttributes(icon, ['type', 'color']);
+
+ if (icon.hasAttribute('type')) {
+ result.icon = icon.getAttribute('type');
+ }
+
+ if (icon.hasAttribute('color')) {
+ result.iconColor = icon.getAttribute('color');
+ }
+
+ result.iconHtml = icon.innerHTML;
+ }
+
+ return result;
+ };
+
+ const getSwalInput = templateContent => {
+ const result = {};
+ const input = templateContent.querySelector('swal-input');
+
+ if (input) {
+ showWarningsForAttributes(input, ['type', 'label', 'placeholder', 'value']);
+ result.input = input.getAttribute('type') || 'text';
+
+ if (input.hasAttribute('label')) {
+ result.inputLabel = input.getAttribute('label');
+ }
+
+ if (input.hasAttribute('placeholder')) {
+ result.inputPlaceholder = input.getAttribute('placeholder');
+ }
+
+ if (input.hasAttribute('value')) {
+ result.inputValue = input.getAttribute('value');
+ }
+ }
+
+ const inputOptions = templateContent.querySelectorAll('swal-input-option');
+
+ if (inputOptions.length) {
+ result.inputOptions = {};
+ toArray(inputOptions).forEach(option => {
+ showWarningsForAttributes(option, ['value']);
+ const optionValue = option.getAttribute('value');
+ const optionName = option.innerHTML;
+ result.inputOptions[optionValue] = optionName;
+ });
+ }
+
+ return result;
+ };
+
+ const getSwalStringParams = (templateContent, paramNames) => {
+ const result = {};
+
+ for (const i in paramNames) {
+ const paramName = paramNames[i];
+ const tag = templateContent.querySelector(paramName);
+
+ if (tag) {
+ showWarningsForAttributes(tag, []);
+ result[paramName.replace(/^swal-/, '')] = tag.innerHTML.trim();
+ }
+ }
+
+ return result;
+ };
+
+ const showWarningsForElements = template => {
+ const allowedElements = swalStringParams.concat(['swal-param', 'swal-button', 'swal-image', 'swal-icon', 'swal-input', 'swal-input-option']);
+ toArray(template.children).forEach(el => {
+ const tagName = el.tagName.toLowerCase();
+
+ if (allowedElements.indexOf(tagName) === -1) {
+ warn("Unrecognized element <".concat(tagName, ">"));
+ }
+ });
+ };
+
+ const showWarningsForAttributes = (el, allowedAttributes) => {
+ toArray(el.attributes).forEach(attribute => {
+ if (allowedAttributes.indexOf(attribute.name) === -1) {
+ warn(["Unrecognized attribute \"".concat(attribute.name, "\" on <").concat(el.tagName.toLowerCase(), ">."), "".concat(allowedAttributes.length ? "Allowed attributes are: ".concat(allowedAttributes.join(', ')) : 'To set the value, use HTML within the element.')]);
+ }
+ });
+ };
+
+ const SHOW_CLASS_TIMEOUT = 10;
+ /**
+ * Open popup, add necessary classes and styles, fix scrollbar
+ *
+ * @param params
+ */
+
+ const openPopup = params => {
+ const container = getContainer();
+ const popup = getPopup();
+
+ if (typeof params.willOpen === 'function') {
+ params.willOpen(popup);
+ }
+
+ const bodyStyles = window.getComputedStyle(document.body);
+ const initialBodyOverflow = bodyStyles.overflowY;
+ addClasses$1(container, popup, params); // scrolling is 'hidden' until animation is done, after that 'auto'
+
+ setTimeout(() => {
+ setScrollingVisibility(container, popup);
+ }, SHOW_CLASS_TIMEOUT);
+
+ if (isModal()) {
+ fixScrollContainer(container, params.scrollbarPadding, initialBodyOverflow);
+ setAriaHidden();
+ }
+
+ if (!isToast() && !globalState.previousActiveElement) {
+ globalState.previousActiveElement = document.activeElement;
+ }
+
+ if (typeof params.didOpen === 'function') {
+ setTimeout(() => params.didOpen(popup));
+ }
+
+ removeClass(container, swalClasses['no-transition']);
+ };
+
+ const swalOpenAnimationFinished = event => {
+ const popup = getPopup();
+
+ if (event.target !== popup) {
+ return;
+ }
+
+ const container = getContainer();
+ popup.removeEventListener(animationEndEvent, swalOpenAnimationFinished);
+ container.style.overflowY = 'auto';
+ };
+
+ const setScrollingVisibility = (container, popup) => {
+ if (animationEndEvent && hasCssAnimation(popup)) {
+ container.style.overflowY = 'hidden';
+ popup.addEventListener(animationEndEvent, swalOpenAnimationFinished);
+ } else {
+ container.style.overflowY = 'auto';
+ }
+ };
+
+ const fixScrollContainer = (container, scrollbarPadding, initialBodyOverflow) => {
+ iOSfix();
+
+ if (scrollbarPadding && initialBodyOverflow !== 'hidden') {
+ fixScrollbar();
+ } // sweetalert2/issues/1247
+
+
+ setTimeout(() => {
+ container.scrollTop = 0;
+ });
+ };
+
+ const addClasses$1 = (container, popup, params) => {
+ addClass(container, params.showClass.backdrop); // the workaround with setting/unsetting opacity is needed for #2019 and 2059
+
+ popup.style.setProperty('opacity', '0', 'important');
+ show(popup, 'grid');
+ setTimeout(() => {
+ // Animate popup right after showing it
+ addClass(popup, params.showClass.popup); // and remove the opacity workaround
+
+ popup.style.removeProperty('opacity');
+ }, SHOW_CLASS_TIMEOUT); // 10ms in order to fix #2062
+
+ addClass([document.documentElement, document.body], swalClasses.shown);
+
+ if (params.heightAuto && params.backdrop && !params.toast) {
+ addClass([document.documentElement, document.body], swalClasses['height-auto']);
+ }
+ };
+
+ const handleInputOptionsAndValue = (instance, params) => {
+ if (params.input === 'select' || params.input === 'radio') {
+ handleInputOptions(instance, params);
+ } else if (['text', 'email', 'number', 'tel', 'textarea'].includes(params.input) && (hasToPromiseFn(params.inputValue) || isPromise(params.inputValue))) {
+ showLoading(getConfirmButton());
+ handleInputValue(instance, params);
+ }
+ };
+ const getInputValue = (instance, innerParams) => {
+ const input = instance.getInput();
+
+ if (!input) {
+ return null;
+ }
+
+ switch (innerParams.input) {
+ case 'checkbox':
+ return getCheckboxValue(input);
+
+ case 'radio':
+ return getRadioValue(input);
+
+ case 'file':
+ return getFileValue(input);
+
+ default:
+ return innerParams.inputAutoTrim ? input.value.trim() : input.value;
+ }
+ };
+
+ const getCheckboxValue = input => input.checked ? 1 : 0;
+
+ const getRadioValue = input => input.checked ? input.value : null;
+
+ const getFileValue = input => input.files.length ? input.getAttribute('multiple') !== null ? input.files : input.files[0] : null;
+
+ const handleInputOptions = (instance, params) => {
+ const popup = getPopup();
+
+ const processInputOptions = inputOptions => populateInputOptions[params.input](popup, formatInputOptions(inputOptions), params);
+
+ if (hasToPromiseFn(params.inputOptions) || isPromise(params.inputOptions)) {
+ showLoading(getConfirmButton());
+ asPromise(params.inputOptions).then(inputOptions => {
+ instance.hideLoading();
+ processInputOptions(inputOptions);
+ });
+ } else if (typeof params.inputOptions === 'object') {
+ processInputOptions(params.inputOptions);
+ } else {
+ error("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(typeof params.inputOptions));
+ }
+ };
+
+ const handleInputValue = (instance, params) => {
+ const input = instance.getInput();
+ hide(input);
+ asPromise(params.inputValue).then(inputValue => {
+ input.value = params.input === 'number' ? parseFloat(inputValue) || 0 : "".concat(inputValue);
+ show(input);
+ input.focus();
+ instance.hideLoading();
+ }).catch(err => {
+ error("Error in inputValue promise: ".concat(err));
+ input.value = '';
+ show(input);
+ input.focus();
+ instance.hideLoading();
+ });
+ };
+
+ const populateInputOptions = {
+ select: (popup, inputOptions, params) => {
+ const select = getChildByClass(popup, swalClasses.select);
+
+ const renderOption = (parent, optionLabel, optionValue) => {
+ const option = document.createElement('option');
+ option.value = optionValue;
+ setInnerHtml(option, optionLabel);
+ option.selected = isSelected(optionValue, params.inputValue);
+ parent.appendChild(option);
+ };
+
+ inputOptions.forEach(inputOption => {
+ const optionValue = inputOption[0];
+ const optionLabel = inputOption[1]; // spec:
+ // https://www.w3.org/TR/html401/interact/forms.html#h-17.6
+ // "...all OPTGROUP elements must be specified directly within a SELECT element (i.e., groups may not be nested)..."
+ // check whether this is a
+
+ if (Array.isArray(optionLabel)) {
+ // if it is an array, then it is an
+ const optgroup = document.createElement('optgroup');
+ optgroup.label = optionValue;
+ optgroup.disabled = false; // not configurable for now
+
+ select.appendChild(optgroup);
+ optionLabel.forEach(o => renderOption(optgroup, o[1], o[0]));
+ } else {
+ // case of
+ renderOption(select, optionLabel, optionValue);
+ }
+ });
+ select.focus();
+ },
+ radio: (popup, inputOptions, params) => {
+ const radio = getChildByClass(popup, swalClasses.radio);
+ inputOptions.forEach(inputOption => {
+ const radioValue = inputOption[0];
+ const radioLabel = inputOption[1];
+ const radioInput = document.createElement('input');
+ const radioLabelElement = document.createElement('label');
+ radioInput.type = 'radio';
+ radioInput.name = swalClasses.radio;
+ radioInput.value = radioValue;
+
+ if (isSelected(radioValue, params.inputValue)) {
+ radioInput.checked = true;
+ }
+
+ const label = document.createElement('span');
+ setInnerHtml(label, radioLabel);
+ label.className = swalClasses.label;
+ radioLabelElement.appendChild(radioInput);
+ radioLabelElement.appendChild(label);
+ radio.appendChild(radioLabelElement);
+ });
+ const radios = radio.querySelectorAll('input');
+
+ if (radios.length) {
+ radios[0].focus();
+ }
+ }
+ };
+ /**
+ * Converts `inputOptions` into an array of `[value, label]`s
+ * @param inputOptions
+ */
+
+ const formatInputOptions = inputOptions => {
+ const result = [];
+
+ if (typeof Map !== 'undefined' && inputOptions instanceof Map) {
+ inputOptions.forEach((value, key) => {
+ let valueFormatted = value;
+
+ if (typeof valueFormatted === 'object') {
+ // case of
+ valueFormatted = formatInputOptions(valueFormatted);
+ }
+
+ result.push([key, valueFormatted]);
+ });
+ } else {
+ Object.keys(inputOptions).forEach(key => {
+ let valueFormatted = inputOptions[key];
+
+ if (typeof valueFormatted === 'object') {
+ // case of
+ valueFormatted = formatInputOptions(valueFormatted);
+ }
+
+ result.push([key, valueFormatted]);
+ });
+ }
+
+ return result;
+ };
+
+ const isSelected = (optionValue, inputValue) => {
+ return inputValue && inputValue.toString() === optionValue.toString();
+ };
+
+ const handleConfirmButtonClick = instance => {
+ const innerParams = privateProps.innerParams.get(instance);
+ instance.disableButtons();
+
+ if (innerParams.input) {
+ handleConfirmOrDenyWithInput(instance, 'confirm');
+ } else {
+ confirm(instance, true);
+ }
+ };
+ const handleDenyButtonClick = instance => {
+ const innerParams = privateProps.innerParams.get(instance);
+ instance.disableButtons();
+
+ if (innerParams.returnInputValueOnDeny) {
+ handleConfirmOrDenyWithInput(instance, 'deny');
+ } else {
+ deny(instance, false);
+ }
+ };
+ const handleCancelButtonClick = (instance, dismissWith) => {
+ instance.disableButtons();
+ dismissWith(DismissReason.cancel);
+ };
+
+ const handleConfirmOrDenyWithInput = (instance, type
+ /* 'confirm' | 'deny' */
+ ) => {
+ const innerParams = privateProps.innerParams.get(instance);
+ const inputValue = getInputValue(instance, innerParams);
+
+ if (innerParams.inputValidator) {
+ handleInputValidator(instance, inputValue, type);
+ } else if (!instance.getInput().checkValidity()) {
+ instance.enableButtons();
+ instance.showValidationMessage(innerParams.validationMessage);
+ } else if (type === 'deny') {
+ deny(instance, inputValue);
+ } else {
+ confirm(instance, inputValue);
+ }
+ };
+
+ const handleInputValidator = (instance, inputValue, type
+ /* 'confirm' | 'deny' */
+ ) => {
+ const innerParams = privateProps.innerParams.get(instance);
+ instance.disableInput();
+ const validationPromise = Promise.resolve().then(() => asPromise(innerParams.inputValidator(inputValue, innerParams.validationMessage)));
+ validationPromise.then(validationMessage => {
+ instance.enableButtons();
+ instance.enableInput();
+
+ if (validationMessage) {
+ instance.showValidationMessage(validationMessage);
+ } else if (type === 'deny') {
+ deny(instance, inputValue);
+ } else {
+ confirm(instance, inputValue);
+ }
+ });
+ };
+
+ const deny = (instance, value) => {
+ const innerParams = privateProps.innerParams.get(instance || undefined);
+
+ if (innerParams.showLoaderOnDeny) {
+ showLoading(getDenyButton());
+ }
+
+ if (innerParams.preDeny) {
+ const preDenyPromise = Promise.resolve().then(() => asPromise(innerParams.preDeny(value, innerParams.validationMessage)));
+ preDenyPromise.then(preDenyValue => {
+ if (preDenyValue === false) {
+ instance.hideLoading();
+ } else {
+ instance.closePopup({
+ isDenied: true,
+ value: typeof preDenyValue === 'undefined' ? value : preDenyValue
+ });
+ }
+ });
+ } else {
+ instance.closePopup({
+ isDenied: true,
+ value
+ });
+ }
+ };
+
+ const succeedWith = (instance, value) => {
+ instance.closePopup({
+ isConfirmed: true,
+ value
+ });
+ };
+
+ const confirm = (instance, value) => {
+ const innerParams = privateProps.innerParams.get(instance || undefined);
+
+ if (innerParams.showLoaderOnConfirm) {
+ showLoading();
+ }
+
+ if (innerParams.preConfirm) {
+ instance.resetValidationMessage();
+ const preConfirmPromise = Promise.resolve().then(() => asPromise(innerParams.preConfirm(value, innerParams.validationMessage)));
+ preConfirmPromise.then(preConfirmValue => {
+ if (isVisible(getValidationMessage()) || preConfirmValue === false) {
+ instance.hideLoading();
+ } else {
+ succeedWith(instance, typeof preConfirmValue === 'undefined' ? value : preConfirmValue);
+ }
+ });
+ } else {
+ succeedWith(instance, value);
+ }
+ };
+
+ const addKeydownHandler = (instance, globalState, innerParams, dismissWith) => {
+ if (globalState.keydownTarget && globalState.keydownHandlerAdded) {
+ globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, {
+ capture: globalState.keydownListenerCapture
+ });
+ globalState.keydownHandlerAdded = false;
+ }
+
+ if (!innerParams.toast) {
+ globalState.keydownHandler = e => keydownHandler(instance, e, dismissWith);
+
+ globalState.keydownTarget = innerParams.keydownListenerCapture ? window : getPopup();
+ globalState.keydownListenerCapture = innerParams.keydownListenerCapture;
+ globalState.keydownTarget.addEventListener('keydown', globalState.keydownHandler, {
+ capture: globalState.keydownListenerCapture
+ });
+ globalState.keydownHandlerAdded = true;
+ }
+ }; // Focus handling
+
+ const setFocus = (innerParams, index, increment) => {
+ const focusableElements = getFocusableElements(); // search for visible elements and select the next possible match
+
+ if (focusableElements.length) {
+ index = index + increment; // rollover to first item
+
+ if (index === focusableElements.length) {
+ index = 0; // go to last item
+ } else if (index === -1) {
+ index = focusableElements.length - 1;
+ }
+
+ return focusableElements[index].focus();
+ } // no visible focusable elements, focus the popup
+
+
+ getPopup().focus();
+ };
+ const arrowKeysNextButton = ['ArrowRight', 'ArrowDown'];
+ const arrowKeysPreviousButton = ['ArrowLeft', 'ArrowUp'];
+
+ const keydownHandler = (instance, e, dismissWith) => {
+ const innerParams = privateProps.innerParams.get(instance);
+
+ if (!innerParams) {
+ return; // This instance has already been destroyed
+ }
+
+ if (innerParams.stopKeydownPropagation) {
+ e.stopPropagation();
+ } // ENTER
+
+
+ if (e.key === 'Enter') {
+ handleEnter(instance, e, innerParams); // TAB
+ } else if (e.key === 'Tab') {
+ handleTab(e, innerParams); // ARROWS - switch focus between buttons
+ } else if ([...arrowKeysNextButton, ...arrowKeysPreviousButton].includes(e.key)) {
+ handleArrows(e.key); // ESC
+ } else if (e.key === 'Escape') {
+ handleEsc(e, innerParams, dismissWith);
+ }
+ };
+
+ const handleEnter = (instance, e, innerParams) => {
+ // #720 #721
+ if (e.isComposing) {
+ return;
+ }
+
+ if (e.target && instance.getInput() && e.target.outerHTML === instance.getInput().outerHTML) {
+ if (['textarea', 'file'].includes(innerParams.input)) {
+ return; // do not submit
+ }
+
+ clickConfirm();
+ e.preventDefault();
+ }
+ };
+
+ const handleTab = (e, innerParams) => {
+ const targetElement = e.target;
+ const focusableElements = getFocusableElements();
+ let btnIndex = -1;
+
+ for (let i = 0; i < focusableElements.length; i++) {
+ if (targetElement === focusableElements[i]) {
+ btnIndex = i;
+ break;
+ }
+ }
+
+ if (!e.shiftKey) {
+ // Cycle to the next button
+ setFocus(innerParams, btnIndex, 1);
+ } else {
+ // Cycle to the prev button
+ setFocus(innerParams, btnIndex, -1);
+ }
+
+ e.stopPropagation();
+ e.preventDefault();
+ };
+
+ const handleArrows = key => {
+ const confirmButton = getConfirmButton();
+ const denyButton = getDenyButton();
+ const cancelButton = getCancelButton();
+
+ if (![confirmButton, denyButton, cancelButton].includes(document.activeElement)) {
+ return;
+ }
+
+ const sibling = arrowKeysNextButton.includes(key) ? 'nextElementSibling' : 'previousElementSibling';
+ const buttonToFocus = document.activeElement[sibling];
+
+ if (buttonToFocus) {
+ buttonToFocus.focus();
+ }
+ };
+
+ const handleEsc = (e, innerParams, dismissWith) => {
+ if (callIfFunction(innerParams.allowEscapeKey)) {
+ e.preventDefault();
+ dismissWith(DismissReason.esc);
+ }
+ };
+
+ const handlePopupClick = (instance, domCache, dismissWith) => {
+ const innerParams = privateProps.innerParams.get(instance);
+
+ if (innerParams.toast) {
+ handleToastClick(instance, domCache, dismissWith);
+ } else {
+ // Ignore click events that had mousedown on the popup but mouseup on the container
+ // This can happen when the user drags a slider
+ handleModalMousedown(domCache); // Ignore click events that had mousedown on the container but mouseup on the popup
+
+ handleContainerMousedown(domCache);
+ handleModalClick(instance, domCache, dismissWith);
+ }
+ };
+
+ const handleToastClick = (instance, domCache, dismissWith) => {
+ // Closing toast by internal click
+ domCache.popup.onclick = () => {
+ const innerParams = privateProps.innerParams.get(instance);
+
+ if (innerParams.showConfirmButton || innerParams.showDenyButton || innerParams.showCancelButton || innerParams.showCloseButton || innerParams.timer || innerParams.input) {
+ return;
+ }
+
+ dismissWith(DismissReason.close);
+ };
+ };
+
+ let ignoreOutsideClick = false;
+
+ const handleModalMousedown = domCache => {
+ domCache.popup.onmousedown = () => {
+ domCache.container.onmouseup = function (e) {
+ domCache.container.onmouseup = undefined; // We only check if the mouseup target is the container because usually it doesn't
+ // have any other direct children aside of the popup
+
+ if (e.target === domCache.container) {
+ ignoreOutsideClick = true;
+ }
+ };
+ };
+ };
+
+ const handleContainerMousedown = domCache => {
+ domCache.container.onmousedown = () => {
+ domCache.popup.onmouseup = function (e) {
+ domCache.popup.onmouseup = undefined; // We also need to check if the mouseup target is a child of the popup
+
+ if (e.target === domCache.popup || domCache.popup.contains(e.target)) {
+ ignoreOutsideClick = true;
+ }
+ };
+ };
+ };
+
+ const handleModalClick = (instance, domCache, dismissWith) => {
+ domCache.container.onclick = e => {
+ const innerParams = privateProps.innerParams.get(instance);
+
+ if (ignoreOutsideClick) {
+ ignoreOutsideClick = false;
+ return;
+ }
+
+ if (e.target === domCache.container && callIfFunction(innerParams.allowOutsideClick)) {
+ dismissWith(DismissReason.backdrop);
+ }
+ };
+ };
+
+ function _main(userParams, mixinParams = {}) {
+ showWarningsForParams(Object.assign({}, mixinParams, userParams));
+
+ if (globalState.currentInstance) {
+ globalState.currentInstance._destroy();
+
+ if (isModal()) {
+ unsetAriaHidden();
+ }
+ }
+
+ globalState.currentInstance = this;
+ const innerParams = prepareParams(userParams, mixinParams);
+ setParameters(innerParams);
+ Object.freeze(innerParams); // clear the previous timer
+
+ if (globalState.timeout) {
+ globalState.timeout.stop();
+ delete globalState.timeout;
+ } // clear the restore focus timeout
+
+
+ clearTimeout(globalState.restoreFocusTimeout);
+ const domCache = populateDomCache(this);
+ render(this, innerParams);
+ privateProps.innerParams.set(this, innerParams);
+ return swalPromise(this, domCache, innerParams);
+ }
+
+ const prepareParams = (userParams, mixinParams) => {
+ const templateParams = getTemplateParams(userParams);
+ const params = Object.assign({}, defaultParams, mixinParams, templateParams, userParams); // precedence is described in #2131
+
+ params.showClass = Object.assign({}, defaultParams.showClass, params.showClass);
+ params.hideClass = Object.assign({}, defaultParams.hideClass, params.hideClass);
+ return params;
+ };
+
+ const swalPromise = (instance, domCache, innerParams) => {
+ return new Promise(resolve => {
+ // functions to handle all closings/dismissals
+ const dismissWith = dismiss => {
+ instance.closePopup({
+ isDismissed: true,
+ dismiss
+ });
+ };
+
+ privateMethods.swalPromiseResolve.set(instance, resolve);
+
+ domCache.confirmButton.onclick = () => handleConfirmButtonClick(instance);
+
+ domCache.denyButton.onclick = () => handleDenyButtonClick(instance);
+
+ domCache.cancelButton.onclick = () => handleCancelButtonClick(instance, dismissWith);
+
+ domCache.closeButton.onclick = () => dismissWith(DismissReason.close);
+
+ handlePopupClick(instance, domCache, dismissWith);
+ addKeydownHandler(instance, globalState, innerParams, dismissWith);
+ handleInputOptionsAndValue(instance, innerParams);
+ openPopup(innerParams);
+ setupTimer(globalState, innerParams, dismissWith);
+ initFocus(domCache, innerParams); // Scroll container to top on open (#1247, #1946)
+
+ setTimeout(() => {
+ domCache.container.scrollTop = 0;
+ });
+ });
+ };
+
+ const populateDomCache = instance => {
+ const domCache = {
+ popup: getPopup(),
+ container: getContainer(),
+ actions: getActions(),
+ confirmButton: getConfirmButton(),
+ denyButton: getDenyButton(),
+ cancelButton: getCancelButton(),
+ loader: getLoader(),
+ closeButton: getCloseButton(),
+ validationMessage: getValidationMessage(),
+ progressSteps: getProgressSteps()
+ };
+ privateProps.domCache.set(instance, domCache);
+ return domCache;
+ };
+
+ const setupTimer = (globalState$$1, innerParams, dismissWith) => {
+ const timerProgressBar = getTimerProgressBar();
+ hide(timerProgressBar);
+
+ if (innerParams.timer) {
+ globalState$$1.timeout = new Timer(() => {
+ dismissWith('timer');
+ delete globalState$$1.timeout;
+ }, innerParams.timer);
+
+ if (innerParams.timerProgressBar) {
+ show(timerProgressBar);
+ setTimeout(() => {
+ if (globalState$$1.timeout && globalState$$1.timeout.running) {
+ // timer can be already stopped or unset at this point
+ animateTimerProgressBar(innerParams.timer);
+ }
+ });
+ }
+ }
+ };
+
+ const initFocus = (domCache, innerParams) => {
+ if (innerParams.toast) {
+ return;
+ }
+
+ if (!callIfFunction(innerParams.allowEnterKey)) {
+ return blurActiveElement();
+ }
+
+ if (!focusButton(domCache, innerParams)) {
+ setFocus(innerParams, -1, 1);
+ }
+ };
+
+ const focusButton = (domCache, innerParams) => {
+ if (innerParams.focusDeny && isVisible(domCache.denyButton)) {
+ domCache.denyButton.focus();
+ return true;
+ }
+
+ if (innerParams.focusCancel && isVisible(domCache.cancelButton)) {
+ domCache.cancelButton.focus();
+ return true;
+ }
+
+ if (innerParams.focusConfirm && isVisible(domCache.confirmButton)) {
+ domCache.confirmButton.focus();
+ return true;
+ }
+
+ return false;
+ };
+
+ const blurActiveElement = () => {
+ if (document.activeElement && typeof document.activeElement.blur === 'function') {
+ document.activeElement.blur();
+ }
+ };
+
+ /**
+ * Updates popup parameters.
+ */
+
+ function update(params) {
+ const popup = getPopup();
+ const innerParams = privateProps.innerParams.get(this);
+
+ if (!popup || hasClass(popup, innerParams.hideClass.popup)) {
+ return warn("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");
+ }
+
+ const validUpdatableParams = {}; // assign valid params from `params` to `defaults`
+
+ Object.keys(params).forEach(param => {
+ if (Swal.isUpdatableParameter(param)) {
+ validUpdatableParams[param] = params[param];
+ } else {
+ warn("Invalid parameter to update: \"".concat(param, "\". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\n\nIf you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md"));
+ }
+ });
+ const updatedParams = Object.assign({}, innerParams, validUpdatableParams);
+ render(this, updatedParams);
+ privateProps.innerParams.set(this, updatedParams);
+ Object.defineProperties(this, {
+ params: {
+ value: Object.assign({}, this.params, params),
+ writable: false,
+ enumerable: true
+ }
+ });
+ }
+
+ function _destroy() {
+ const domCache = privateProps.domCache.get(this);
+ const innerParams = privateProps.innerParams.get(this);
+
+ if (!innerParams) {
+ return; // This instance has already been destroyed
+ } // Check if there is another Swal closing
+
+
+ if (domCache.popup && globalState.swalCloseEventFinishedCallback) {
+ globalState.swalCloseEventFinishedCallback();
+ delete globalState.swalCloseEventFinishedCallback;
+ } // Check if there is a swal disposal defer timer
+
+
+ if (globalState.deferDisposalTimer) {
+ clearTimeout(globalState.deferDisposalTimer);
+ delete globalState.deferDisposalTimer;
+ }
+
+ if (typeof innerParams.didDestroy === 'function') {
+ innerParams.didDestroy();
+ }
+
+ disposeSwal(this);
+ }
+
+ const disposeSwal = instance => {
+ // Unset this.params so GC will dispose it (#1569)
+ delete instance.params; // Unset globalState props so GC will dispose globalState (#1569)
+
+ delete globalState.keydownHandler;
+ delete globalState.keydownTarget; // Unset WeakMaps so GC will be able to dispose them (#1569)
+
+ unsetWeakMaps(privateProps);
+ unsetWeakMaps(privateMethods); // Unset currentInstance
+
+ delete globalState.currentInstance;
+ };
+
+ const unsetWeakMaps = obj => {
+ for (const i in obj) {
+ obj[i] = new WeakMap();
+ }
+ };
+
+
+
+ var instanceMethods = /*#__PURE__*/Object.freeze({
+ hideLoading: hideLoading,
+ disableLoading: hideLoading,
+ getInput: getInput$1,
+ close: close,
+ closePopup: close,
+ closeModal: close,
+ closeToast: close,
+ enableButtons: enableButtons,
+ disableButtons: disableButtons,
+ enableInput: enableInput,
+ disableInput: disableInput,
+ showValidationMessage: showValidationMessage,
+ resetValidationMessage: resetValidationMessage$1,
+ getProgressSteps: getProgressSteps$1,
+ _main: _main,
+ update: update,
+ _destroy: _destroy
+ });
+
+ let currentInstance;
+
+ class SweetAlert {
+ constructor(...args) {
+ // Prevent run in Node env
+ if (typeof window === 'undefined') {
+ return;
+ }
+
+ currentInstance = this;
+ const outerParams = Object.freeze(this.constructor.argsToParams(args));
+ Object.defineProperties(this, {
+ params: {
+ value: outerParams,
+ writable: false,
+ enumerable: true,
+ configurable: true
+ }
+ });
+
+ const promise = this._main(this.params);
+
+ privateProps.promise.set(this, promise);
+ } // `catch` cannot be the name of a module export, so we define our thenable methods here instead
+
+
+ then(onFulfilled) {
+ const promise = privateProps.promise.get(this);
+ return promise.then(onFulfilled);
+ }
+
+ finally(onFinally) {
+ const promise = privateProps.promise.get(this);
+ return promise.finally(onFinally);
+ }
+
+ } // Assign instance methods from src/instanceMethods/*.js to prototype
+
+
+ Object.assign(SweetAlert.prototype, instanceMethods); // Assign static methods from src/staticMethods/*.js to constructor
+
+ Object.assign(SweetAlert, staticMethods); // Proxy to instance methods to constructor, for now, for backwards compatibility
+
+ Object.keys(instanceMethods).forEach(key => {
+ SweetAlert[key] = function (...args) {
+ if (currentInstance) {
+ return currentInstance[key](...args);
+ }
+ };
+ });
+ SweetAlert.DismissReason = DismissReason;
+ SweetAlert.version = '11.1.7';
+
+ const Swal = SweetAlert;
+ Swal.default = Swal;
+
+ return Swal;
+
+}));
+if (typeof this !== 'undefined' && this.Sweetalert2){ this.swal = this.sweetAlert = this.Swal = this.SweetAlert = this.Sweetalert2}
diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/sweetalert2/sweetalert2.min.css b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/sweetalert2/sweetalert2.min.css
new file mode 100644
index 0000000000..342b3beddd
--- /dev/null
+++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/sweetalert2/sweetalert2.min.css
@@ -0,0 +1 @@
+.swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4!important;grid-row:1/4!important;grid-template-columns:1fr 99fr 1fr;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:grid;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;box-sizing:border-box;grid-template-areas:"top-start top top-end" "center-start center center-end" "bottom-start bottom-center bottom-end";grid-template-rows:minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto) minmax(-webkit-min-content,auto);grid-template-rows:minmax(min-content,auto) minmax(min-content,auto) minmax(min-content,auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-bottom-start,.swal2-container.swal2-center-start,.swal2-container.swal2-top-start{grid-template-columns:minmax(0,1fr) auto auto}.swal2-container.swal2-bottom,.swal2-container.swal2-center,.swal2-container.swal2-top{grid-template-columns:auto minmax(0,1fr) auto}.swal2-container.swal2-bottom-end,.swal2-container.swal2-center-end,.swal2-container.swal2-top-end{grid-template-columns:auto auto minmax(0,1fr)}.swal2-container.swal2-top-start>.swal2-popup{align-self:start}.swal2-container.swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}.swal2-container.swal2-top-end>.swal2-popup,.swal2-container.swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}.swal2-container.swal2-center-left>.swal2-popup,.swal2-container.swal2-center-start>.swal2-popup{grid-row:2;align-self:center}.swal2-container.swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}.swal2-container.swal2-center-end>.swal2-popup,.swal2-container.swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}.swal2-container.swal2-bottom-left>.swal2-popup,.swal2-container.swal2-bottom-start>.swal2-popup{grid-column:1;grid-row:3;align-self:end}.swal2-container.swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}.swal2-container.swal2-bottom-end>.swal2-popup,.swal2-container.swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}.swal2-container.swal2-grow-fullscreen>.swal2-popup,.swal2-container.swal2-grow-row>.swal2-popup{grid-column:1/4;width:100%}.swal2-container.swal2-grow-column>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}.swal2-container.swal2-no-transition{transition:none!important}.swal2-popup{display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0,100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-title{position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px transparent;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7367f0;color:#fff;font-size:1em}.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px rgba(115,103,240,.5)}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#ea5455;color:#fff;font-size:1em}.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px rgba(234,84,85,.5)}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7d88;color:#fff;font-size:1em}.swal2-styled.swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,125,136,.5)}.swal2-styled.swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled:focus{outline:0}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto!important;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:2em auto 1em}.swal2-close{z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em 2em 0}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px transparent;color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em 2em 0;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-file{width:75%;margin-right:auto;margin-left:auto;background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto 0}.swal2-validation-message{align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:"!";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:.25em solid transparent;border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{background-color:transparent!important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:transparent;pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}
\ No newline at end of file
diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/sweetalert2/sweetalert2.min.js b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/sweetalert2/sweetalert2.min.js
new file mode 100644
index 0000000000..fe84b2427f
--- /dev/null
+++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/sweetalert2/sweetalert2.min.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Sweetalert2=t()}(this,function(){"use strict";const l=Object.freeze({cancel:"cancel",backdrop:"backdrop",close:"close",esc:"esc",timer:"timer"}),t="SweetAlert2:",o=e=>e.charAt(0).toUpperCase()+e.slice(1),a=e=>Array.prototype.slice.call(e),s=e=>{console.warn("".concat(t," ").concat("object"==typeof e?e.join(" "):e))},r=e=>{console.error("".concat(t," ").concat(e))},n=[],i=(e,t)=>{t='"'.concat(e,'" is deprecated and will be removed in the next major release. Please use "').concat(t,'" instead.'),n.includes(t)||(n.push(t),s(t))},c=e=>"function"==typeof e?e():e,u=e=>e&&"function"==typeof e.toPromise,d=e=>u(e)?e.toPromise():Promise.resolve(e),p=e=>e&&Promise.resolve(e)===e,m=e=>e instanceof Element||(e=>"object"==typeof e&&e.jquery)(e);var e=e=>{const t={};for(const n in e)t[e[n]]="swal2-"+e[n];return t};const h=e(["container","shown","height-auto","iosfix","popup","modal","no-backdrop","no-transition","toast","toast-shown","show","hide","close","title","html-container","actions","confirm","deny","cancel","default-outline","footer","icon","icon-content","image","input","file","range","select","radio","checkbox","label","textarea","inputerror","input-label","validation-message","progress-steps","active-progress-step","progress-step","progress-step-line","loader","loading","styled","top","top-start","top-end","top-left","top-right","center","center-start","center-end","center-left","center-right","bottom","bottom-start","bottom-end","bottom-left","bottom-right","grow-row","grow-column","grow-fullscreen","rtl","timer-progress-bar","timer-progress-bar-container","scrollbar-measure","icon-success","icon-warning","icon-info","icon-question","icon-error"]),g=e(["success","warning","info","question","error"]),b=()=>document.body.querySelector(".".concat(h.container)),f=e=>{const t=b();return t?t.querySelector(e):null},y=e=>f(".".concat(e)),v=()=>y(h.popup),w=()=>y(h.icon),C=()=>y(h.title),k=()=>y(h["html-container"]),A=()=>y(h.image),B=()=>y(h["progress-steps"]),x=()=>y(h["validation-message"]),P=()=>f(".".concat(h.actions," .").concat(h.confirm)),E=()=>f(".".concat(h.actions," .").concat(h.deny));const S=()=>f(".".concat(h.loader)),T=()=>f(".".concat(h.actions," .").concat(h.cancel)),L=()=>y(h.actions),O=()=>y(h.footer),j=()=>y(h["timer-progress-bar"]),D=()=>y(h.close),I=()=>{const e=a(v().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')).sort((e,t)=>(e=parseInt(e.getAttribute("tabindex")),(t=parseInt(t.getAttribute("tabindex")))