From 642e70ba1e0992ed8441c11b651006d9d37bd47b Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Mon, 19 Feb 2024 15:56:39 -0800 Subject: [PATCH 01/13] Fix workflow icons (#15370) --- .../Views/Items/UpdateContentTask.Fields.Thumbnail.cshtml | 2 +- .../Views/Items/ForEachTask.Fields.Design.cshtml | 2 +- .../Views/Items/ForEachTask.Fields.Thumbnail.cshtml | 2 +- .../Views/Items/ForLoopTask.Fields.Design.cshtml | 2 +- .../Views/Items/ForLoopTask.Fields.Thumbnail.cshtml | 2 +- .../Views/Items/WhileLoopTask.Fields.Design.cshtml | 2 +- .../Views/Items/WhileLoopTask.Fields.Thumbnail.cshtml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/Views/Items/UpdateContentTask.Fields.Thumbnail.cshtml b/src/OrchardCore.Modules/OrchardCore.Contents/Views/Items/UpdateContentTask.Fields.Thumbnail.cshtml index 0343b13a9dd..355fdb70631 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/Views/Items/UpdateContentTask.Fields.Thumbnail.cshtml +++ b/src/OrchardCore.Modules/OrchardCore.Contents/Views/Items/UpdateContentTask.Fields.Thumbnail.cshtml @@ -1,2 +1,2 @@ -

@T["Update Content"]

+

@T["Update Content"]

@T["Update a content item."]

diff --git a/src/OrchardCore.Modules/OrchardCore.Workflows/Views/Items/ForEachTask.Fields.Design.cshtml b/src/OrchardCore.Modules/OrchardCore.Workflows/Views/Items/ForEachTask.Fields.Design.cshtml index 7bda3813eb5..3e2c6fa6f7c 100644 --- a/src/OrchardCore.Modules/OrchardCore.Workflows/Views/Items/ForEachTask.Fields.Design.cshtml +++ b/src/OrchardCore.Modules/OrchardCore.Workflows/Views/Items/ForEachTask.Fields.Design.cshtml @@ -1,6 +1,6 @@ @model ActivityViewModel
-

@Model.Activity.GetTitleOrDefault(() => T["For Each"])

+

@Model.Activity.GetTitleOrDefault(() => T["For Each"])

@T["Iterate {0} over {1}", Model.Activity.LoopVariableName, Model.Activity.Enumerable] diff --git a/src/OrchardCore.Modules/OrchardCore.Workflows/Views/Items/ForEachTask.Fields.Thumbnail.cshtml b/src/OrchardCore.Modules/OrchardCore.Workflows/Views/Items/ForEachTask.Fields.Thumbnail.cshtml index 0a1e0b1f67a..0d0e28f6d7f 100644 --- a/src/OrchardCore.Modules/OrchardCore.Workflows/Views/Items/ForEachTask.Fields.Thumbnail.cshtml +++ b/src/OrchardCore.Modules/OrchardCore.Workflows/Views/Items/ForEachTask.Fields.Thumbnail.cshtml @@ -1,2 +1,2 @@ -

@T["For Each"]

+

@T["For Each"]

@T["Iterate over a list of items."]

diff --git a/src/OrchardCore.Modules/OrchardCore.Workflows/Views/Items/ForLoopTask.Fields.Design.cshtml b/src/OrchardCore.Modules/OrchardCore.Workflows/Views/Items/ForLoopTask.Fields.Design.cshtml index e998efbfc5c..982c0c37448 100644 --- a/src/OrchardCore.Modules/OrchardCore.Workflows/Views/Items/ForLoopTask.Fields.Design.cshtml +++ b/src/OrchardCore.Modules/OrchardCore.Workflows/Views/Items/ForLoopTask.Fields.Design.cshtml @@ -1,6 +1,6 @@ @model ActivityViewModel
-

@Model.Activity.GetTitleOrDefault(() => T["For Loop"])

+

@Model.Activity.GetTitleOrDefault(() => T["For Loop"])

@T["Iterate {0} from {1} to {2}", Model.Activity.LoopVariableName, Model.Activity.From, Model.Activity.To] diff --git a/src/OrchardCore.Modules/OrchardCore.Workflows/Views/Items/ForLoopTask.Fields.Thumbnail.cshtml b/src/OrchardCore.Modules/OrchardCore.Workflows/Views/Items/ForLoopTask.Fields.Thumbnail.cshtml index 14ba877a26a..7e4572bcff9 100644 --- a/src/OrchardCore.Modules/OrchardCore.Workflows/Views/Items/ForLoopTask.Fields.Thumbnail.cshtml +++ b/src/OrchardCore.Modules/OrchardCore.Workflows/Views/Items/ForLoopTask.Fields.Thumbnail.cshtml @@ -1,2 +1,2 @@ -

@T["For Loop"]

+

@T["For Loop"]

@T["Iterate from a start to end number."]

diff --git a/src/OrchardCore.Modules/OrchardCore.Workflows/Views/Items/WhileLoopTask.Fields.Design.cshtml b/src/OrchardCore.Modules/OrchardCore.Workflows/Views/Items/WhileLoopTask.Fields.Design.cshtml index a8554eaf920..fba3d974afd 100644 --- a/src/OrchardCore.Modules/OrchardCore.Workflows/Views/Items/WhileLoopTask.Fields.Design.cshtml +++ b/src/OrchardCore.Modules/OrchardCore.Workflows/Views/Items/WhileLoopTask.Fields.Design.cshtml @@ -1,6 +1,6 @@ @model ActivityViewModel
-

@Model.Activity.GetTitleOrDefault(() => T["While Loop"])

+

@Model.Activity.GetTitleOrDefault(() => T["While Loop"])

@T["Loop while {0} is true", Model.Activity.Condition] diff --git a/src/OrchardCore.Modules/OrchardCore.Workflows/Views/Items/WhileLoopTask.Fields.Thumbnail.cshtml b/src/OrchardCore.Modules/OrchardCore.Workflows/Views/Items/WhileLoopTask.Fields.Thumbnail.cshtml index a3b99246a98..84d2fd36949 100644 --- a/src/OrchardCore.Modules/OrchardCore.Workflows/Views/Items/WhileLoopTask.Fields.Thumbnail.cshtml +++ b/src/OrchardCore.Modules/OrchardCore.Workflows/Views/Items/WhileLoopTask.Fields.Thumbnail.cshtml @@ -1,2 +1,2 @@ -

@T["While Loop"]

+

@T["While Loop"]

@T["Iterate while a condition is true."]

From a34d70d14f21beb0ae4e228e19847c6964894a36 Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Tue, 20 Feb 2024 06:18:11 -0800 Subject: [PATCH 02/13] Add docs for Full-Text Search for Admin UI (#15369) --- src/docs/reference/modules/Contents/README.md | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/src/docs/reference/modules/Contents/README.md b/src/docs/reference/modules/Contents/README.md index 3bb95104f4a..cbc653363fb 100644 --- a/src/docs/reference/modules/Contents/README.md +++ b/src/docs/reference/modules/Contents/README.md @@ -423,6 +423,58 @@ query { } ``` +## List Content Types by Stereotype + +Starting with version 1.7, the Contents admin UI provides a way to manage content items of content types that share the same Stereotype. + +For example, lets say we want list all content items of a content types that use `Test` stereotype. To do that, add an admin menu item that directs the user to `/Admin/Contents/ContentItems?stereotype=Test`. Adding `stereotype=Test` to the URL will render the UI using any content type that has `Test` as it's stereotype. + +## Full-Text Search for Admin UI + +Starting with version 1.7, a new options have been introduced to enable control over the behavior of the full-text search in the administration user interface for content items. + +For instance, consider a content type called `Product.` Currently, when a user performs a search, the default behavior is to check if the search terms are present in the `DisplayText` column of the `ContentItemIndex` for the content item. However, what if a user wants to search for a product using its serial number, which is not part of the `DisplayText` field? + +With the newly added options, we can now allow searching for products based on either the display text or the serial number. To modify the default behavior, two steps need to be taken: + + 1. Implement `IContentsAdminListFilterProvider` interface by defining a custom lookup logic. For example: + + ```csharp + public class ProductContentsAdminListFilterProvider : IContentsAdminListFilterProvider + { + public void Build(QueryEngineBuilder builder) + { + builder + .WithNamedTerm("producttext", builder => builder + .ManyCondition( + (val, query) => query.Any( + (q) => q.With(i => i.DisplayText != null && i.DisplayText.Contains(val)), + (q) => q.With(i => i.SerialNumber != null && i.SerialNumber.Contains(val)) + ), + (val, query) => query.All( + (q) => q.With(i => i.DisplayText == null || i.DisplayText.NotContains(val)), + (q) => q.With(i => i.SerialNumber == null || i.SerialNumber.NotContains(val)) + ) + ) + ); + } + } + ``` + + 2. Register the custom default term name as a search option by adding it to the `ContentsAdminListFilterOptions.` For example: + + ```csharp + services.Configure(options => + { + options.DefaultTermNames.Add("Product", "producttext"); + }); + ``` + +Now, when a user searches for a product's serial number in the administration UI, we will utilize the `producttext` filter instead of the default `text` filter to perform the search. + +The `UseExactMatch` option in the `ContentsAdminListFilterOptions` class modifies the default search behavior by enclosing searched terms within quotation marks, creating an exact match search by default, this unless if the search text explicitly uses 'OR' or 'AND' operators. + + ## Videos From 10f129cc1d8dec28ec0ffaa799c0299a6b7a8734 Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Tue, 20 Feb 2024 06:19:09 -0800 Subject: [PATCH 03/13] Add multiple constructors for ListValueOption (#15368) --- .../TextFieldPredefinedListEditorSettings.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/OrchardCore.Modules/OrchardCore.ContentFields/Settings/TextFieldPredefinedListEditorSettings.cs b/src/OrchardCore.Modules/OrchardCore.ContentFields/Settings/TextFieldPredefinedListEditorSettings.cs index 4e60c8547c5..e67d9b42496 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Settings/TextFieldPredefinedListEditorSettings.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Settings/TextFieldPredefinedListEditorSettings.cs @@ -22,5 +22,19 @@ public class ListValueOption [JsonPropertyName("value")] public string Value { get; set; } + + public ListValueOption() + { + } + + public ListValueOption(string name) : this(name, name) + { + } + + public ListValueOption(string name, string value) + { + Name = name; + Value = value; + } } } From d9854e153b3e9ec94247b58a694b75d634656c89 Mon Sep 17 00:00:00 2001 From: Hisham Bin Ateya Date: Wed, 21 Feb 2024 16:17:23 +0300 Subject: [PATCH 04/13] Update StackExchange.Redis 2.7.20 (#15379) --- src/OrchardCore.Build/Dependencies.props | 2 +- src/docs/resources/libraries/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OrchardCore.Build/Dependencies.props b/src/OrchardCore.Build/Dependencies.props index eab300202c7..9d41c286348 100644 --- a/src/OrchardCore.Build/Dependencies.props +++ b/src/OrchardCore.Build/Dependencies.props @@ -61,7 +61,7 @@ - + diff --git a/src/docs/resources/libraries/README.md b/src/docs/resources/libraries/README.md index f6b63375397..8b29c7a705c 100644 --- a/src/docs/resources/libraries/README.md +++ b/src/docs/resources/libraries/README.md @@ -42,7 +42,7 @@ The below table lists the different .NET libraries used in Orchard Core: | [PdfPig](https://github.com/UglyToad/PdfPig/) | Library to read and extract text and other content from PDF files. | 0.1.8 | [Apache-2.0](https://github.com/UglyToad/PdfPig/blob/master/LICENSE) | | [Serilog.AspNetCore](https://github.com/serilog/serilog-aspnetcore) | Serilog integration for ASP.NET Core. | 7.0.0 | [Apache-2.0](https://github.com/serilog/serilog-aspnetcore/blob/dev/LICENSE) | | [Shortcodes](https://github.com/sebastienros/shortcodes) | Shortcodes processor for .NET. | 1.3.3 | [MIT](https://github.com/sebastienros/shortcodes/blob/dev/LICENSE) | -| [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis) | General purpose redis client. | 2.7.17 | [MIT](https://github.com/StackExchange/StackExchange.Redis/blob/main/LICENSE) | +| [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis) | General purpose redis client. | 2.7.20 | [MIT](https://github.com/StackExchange/StackExchange.Redis/blob/main/LICENSE) | | [YesSql](https://github.com/sebastienros/yessql) | .NET document database working on any RDBMS. | 5.0.0-beta-0002 | [MIT](https://github.com/sebastienros/yessql/blob/dev/LICENSE) | | [ZString](https://github.com/Cysharp/ZString) | Zero Allocation StringBuilder for .NET Core and Unity. | 2.5.1 | [MIT](https://github.com/Cysharp/ZString/blob/master/LICENSE) | From f291c33f0efec4e60a226d6c6370666de4cabd1e Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Wed, 21 Feb 2024 10:03:29 -0800 Subject: [PATCH 05/13] Update the ContentElement constructor (#15365) --- .../ContentElement.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OrchardCore/OrchardCore.ContentManagement.Abstractions/ContentElement.cs b/src/OrchardCore/OrchardCore.ContentManagement.Abstractions/ContentElement.cs index 0adec5490f6..f648d15b8ea 100644 --- a/src/OrchardCore/OrchardCore.ContentManagement.Abstractions/ContentElement.cs +++ b/src/OrchardCore/OrchardCore.ContentManagement.Abstractions/ContentElement.cs @@ -14,11 +14,11 @@ public class ContentElement : IContent private Dictionary _elements; private JsonDynamicObject _dynamicObject; - internal ContentElement() : this([]) + protected ContentElement() : this([]) { } - internal ContentElement(JsonObject data) => Data = data; + protected ContentElement(JsonObject data) => Data = data; [JsonIgnore] protected internal Dictionary Elements => _elements ??= []; From eb0511f4dbd505820a0ce144d97690a1d550f3ef Mon Sep 17 00:00:00 2001 From: Niraj Soni <23270244+ns8482e@users.noreply.github.com> Date: Wed, 21 Feb 2024 14:48:27 -0600 Subject: [PATCH 06/13] DisplayAsync to return actual pre-rendered IHtmlContent (#15247) Fixes #15235 --- .../Implementation/DefaultHtmlDisplay.cs | 6 ++++ .../Implementation/DisplayHelper.cs | 6 ++++ .../PositionWrapper.cs | 35 +++++++++++++++++-- .../Shapes/Shape.cs | 22 ++---------- .../Theming/ThemeLayout.cs | 4 +-- .../Views/ShapeViewModel.cs | 24 ++----------- 6 files changed, 52 insertions(+), 45 deletions(-) diff --git a/src/OrchardCore/OrchardCore.DisplayManagement/Implementation/DefaultHtmlDisplay.cs b/src/OrchardCore/OrchardCore.DisplayManagement/Implementation/DefaultHtmlDisplay.cs index fab1d676f32..85f3e19c9f6 100644 --- a/src/OrchardCore/OrchardCore.DisplayManagement/Implementation/DefaultHtmlDisplay.cs +++ b/src/OrchardCore/OrchardCore.DisplayManagement/Implementation/DefaultHtmlDisplay.cs @@ -47,6 +47,12 @@ public async Task ExecuteAsync(DisplayContext context) return HtmlString.Empty; } + // Check if the shape is Position Wrapper + if(shape is PositionWrapper wrapper) + { + return PositionWrapper.UnWrap(wrapper); + } + // Check if the shape is pre-rendered. if (shape is IHtmlContent htmlContent) { diff --git a/src/OrchardCore/OrchardCore.DisplayManagement/Implementation/DisplayHelper.cs b/src/OrchardCore/OrchardCore.DisplayManagement/Implementation/DisplayHelper.cs index 99b757f4e5d..d293c15eb9b 100644 --- a/src/OrchardCore/OrchardCore.DisplayManagement/Implementation/DisplayHelper.cs +++ b/src/OrchardCore/OrchardCore.DisplayManagement/Implementation/DisplayHelper.cs @@ -72,6 +72,12 @@ public Task ShapeExecuteAsync(IShape shape) return Task.FromResult(HtmlString.Empty); } + // Check if the shape is wrapper, return underlying IHtmlContent + if( shape is PositionWrapper wrapper) + { + return Task.FromResult(PositionWrapper.UnWrap(wrapper)); + } + // Check if the shape is pre-rendered. if (shape is IHtmlContent htmlContent) { diff --git a/src/OrchardCore/OrchardCore.DisplayManagement/PositionWrapper.cs b/src/OrchardCore/OrchardCore.DisplayManagement/PositionWrapper.cs index 94ee0248dfa..b0d7841d1d3 100644 --- a/src/OrchardCore/OrchardCore.DisplayManagement/PositionWrapper.cs +++ b/src/OrchardCore/OrchardCore.DisplayManagement/PositionWrapper.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.IO; using System.Text.Encodings.Web; @@ -8,7 +9,7 @@ namespace OrchardCore.DisplayManagement { - public class PositionWrapper : IHtmlContent, IPositioned, IShape + public sealed class PositionWrapper : IHtmlContent, IPositioned, IShape { private readonly IHtmlContent _value; public string Position { get; set; } @@ -29,13 +30,13 @@ public class PositionWrapper : IHtmlContent, IPositioned, IShape public IReadOnlyList Items => throw new System.NotImplementedException(); - public PositionWrapper(IHtmlContent value, string position) + private PositionWrapper(IHtmlContent value, string position) { _value = value; Position = position; } - public PositionWrapper(string value, string position) + private PositionWrapper(string value, string position) { _value = new HtmlContentString(value); Position = position; @@ -50,5 +51,33 @@ public ValueTask AddAsync(object item, string position) { throw new System.NotImplementedException(); } + + public static IPositioned TryWrap(object value, string position) + { + if (value is IPositioned wrapper) + { + // Update the new Position + if (position != null) + { + wrapper.Position = position; + } + return wrapper; + } + else if (value is IHtmlContent content) + { + return new PositionWrapper(content, position); + } + else if (value is string stringContent) + { + return new PositionWrapper(stringContent, position); + } + else + { + return null; + } + } + + public static IHtmlContent UnWrap(PositionWrapper wrapper) + => wrapper._value; } } diff --git a/src/OrchardCore/OrchardCore.DisplayManagement/Shapes/Shape.cs b/src/OrchardCore/OrchardCore.DisplayManagement/Shapes/Shape.cs index ae7f47ea11d..662b9013ad6 100644 --- a/src/OrchardCore/OrchardCore.DisplayManagement/Shapes/Shape.cs +++ b/src/OrchardCore/OrchardCore.DisplayManagement/Shapes/Shape.cs @@ -65,26 +65,10 @@ public virtual ValueTask AddAsync(object item, string position) _items ??= []; - if (item is IHtmlContent) + var wrapped = PositionWrapper.TryWrap(item, position); + if (wrapped is not null) { - _items.Add(new PositionWrapper((IHtmlContent)item, position)); - } - else if (item is string) - { - _items.Add(new PositionWrapper((string)item, position)); - } - else - { - var shape = item as IPositioned; - if (shape != null) - { - if (position != null) - { - shape.Position = position; - } - - _items.Add(shape); - } + _items.Add(wrapped); } return new ValueTask(this); diff --git a/src/OrchardCore/OrchardCore.DisplayManagement/Theming/ThemeLayout.cs b/src/OrchardCore/OrchardCore.DisplayManagement/Theming/ThemeLayout.cs index a57a39285b4..6c5d60ab014 100644 --- a/src/OrchardCore/OrchardCore.DisplayManagement/Theming/ThemeLayout.cs +++ b/src/OrchardCore/OrchardCore.DisplayManagement/Theming/ThemeLayout.cs @@ -27,7 +27,7 @@ public override async Task ExecuteAsync() await ThemeLayout.Zones["Content"].AddAsync(body); // Pre-render all shapes and replace the zone content with it. - ThemeLayout.Zones["Content"] = new PositionWrapper(await DisplayAsync(ThemeLayout.Zones["Content"]), ""); + ThemeLayout.Zones["Content"] = PositionWrapper.TryWrap(await DisplayAsync(ThemeLayout.Zones["Content"]), "") as IShape; // Render each layout zone. foreach (var zone in ThemeLayout.Properties.ToArray()) @@ -46,7 +46,7 @@ public override async Task ExecuteAsync() continue; } - ThemeLayout.Zones[zone.Key] = new PositionWrapper(await DisplayAsync(shape), ""); + ThemeLayout.Zones[zone.Key] = PositionWrapper.TryWrap(await DisplayAsync(shape), "") as IShape; } } diff --git a/src/OrchardCore/OrchardCore.DisplayManagement/Views/ShapeViewModel.cs b/src/OrchardCore/OrchardCore.DisplayManagement/Views/ShapeViewModel.cs index c6b8ce84d72..33305412241 100644 --- a/src/OrchardCore/OrchardCore.DisplayManagement/Views/ShapeViewModel.cs +++ b/src/OrchardCore/OrchardCore.DisplayManagement/Views/ShapeViewModel.cs @@ -81,27 +81,9 @@ public ValueTask AddAsync(object item, string position) _sorted = false; _items ??= []; - if (item is IHtmlContent) - { - _items.Add(new PositionWrapper((IHtmlContent)item, position)); - } - else if (item is string) - { - _items.Add(new PositionWrapper((string)item, position)); - } - else - { - if (item is IPositioned shape) - { - if (position != null) - { - shape.Position = position; - } - - _items.Add(shape); - } - } - + var wrapped = PositionWrapper.TryWrap(item, position); + if (wrapped is not null) + _items.Add(wrapped); return new ValueTask(this); } } From a92ebbffb4c3b23b2ab3d226b92b9bd7a21f35a0 Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Wed, 21 Feb 2024 12:50:50 -0800 Subject: [PATCH 07/13] Register JsonSerializerOptions in the IoC Container (#15328) --- .../Deployment/AdminMenuDeploymentSource.cs | 11 +----- .../Recipes/AdminMenuStep.cs | 13 +++---- .../OrchardCore.Apis.GraphQL/Startup.cs | 2 +- .../Handlers/AutoroutePartHandler.cs | 1 + .../OrchardCore.ContentFields/Migrations.cs | 4 +- .../Settings/LinkFieldSettingsDriver.cs | 3 +- .../Settings/TextFieldSettingsDriver.cs | 3 +- .../OrchardCore.ContentFields/Startup.cs | 2 +- .../Startup.cs | 4 +- .../AuditTrailContentEventDisplayDriver.cs | 4 +- .../Deployment/Download/DownloadController.cs | 3 +- .../Liquid/BuildDisplayFilter.cs | 3 +- .../Liquid/FullTextFilter.cs | 4 +- .../Recipes/ContentStep.cs | 2 +- .../OrchardCore.Contents/Startup.cs | 4 +- .../Workflows/Activities/ContentActivity.cs | 1 + .../Activities/ContentCreatedEvent.cs | 6 ++- .../Activities/ContentDeletedEvent.cs | 6 ++- .../Activities/ContentDraftSavedEvent.cs | 6 ++- .../Workflows/Activities/ContentEvent.cs | 6 ++- .../Activities/ContentPublishedEvent.cs | 6 ++- .../Workflows/Activities/ContentTask.cs | 5 ++- .../Activities/ContentUnpublishedEvent.cs | 6 ++- .../Activities/ContentUpdatedEvent.cs | 6 ++- .../Activities/ContentVersionedEvent.cs | 5 ++- .../Workflows/Activities/DeleteContentTask.cs | 5 ++- .../Activities/PublishContentTask.cs | 6 ++- .../Activities/RetrieveContentTask.cs | 6 ++- .../Activities/UnpublishContentTask.cs | 6 ++- .../OrchardCore.Cors/Startup.cs | 2 +- .../Services/CustomSettingsService.cs | 2 +- .../DeploymentPlanDeploymentSource.cs | 9 ++++- .../Recipes/DeploymentPlansRecipeStep.cs | 7 +++- .../Steps/CustomFileDeploymentSource.cs | 4 +- .../Login/Services/FacebookLoginService.cs | 6 +-- .../Services/FacebookService.cs | 1 + .../Deployment/AllFeaturesDeploymentSource.cs | 4 +- .../Recipes/Executors/FeatureStep.cs | 11 +++--- .../OrchardCore.Flows/Startup.cs | 7 ---- .../Deployment/AllLayersDeploymentSource.cs | 19 +++------- .../OrchardCore.Layers/Recipes/LayerStep.cs | 10 +---- .../OrchardCore.Lists/Startup.cs | 2 - .../Controllers/AdminController.cs | 2 - .../OrchardCore.Media.Azure/Startup.cs | 4 -- .../AllMediaProfilesDeploymentSource.cs | 4 +- .../OrchardCore.Media/Migrations.cs | 4 +- .../OrchardCore.Media/Startup.cs | 4 +- .../Deployment/AzureADDeploymentSource.cs | 7 ++-- .../Recipes/OpenIdServerSettingsStep.cs | 4 +- .../Recipes/OpenIdValidationSettingsStep.cs | 7 +++- .../OpenIdValidationSettingsStepModel.cs | 3 +- .../Services/OpenIdClientService.cs | 1 + .../Services/OpenIdServerService.cs | 6 ++- .../Services/OpenIdValidationService.cs | 1 + .../Settings/OpenIdValidationSettings.cs | 1 - .../OrchardCore.OpenId/Startup.cs | 10 ++--- .../Deployment/PlacementsDeploymentSource.cs | 14 ++++--- .../Deployment/AllQueriesDeploymentSource.cs | 10 ++++- .../OrchardCore.Queries/Recipes/QueryStep.cs | 9 ++++- .../OrchardCore.Queries/Sql/SqlQuerySource.cs | 6 ++- .../Deployment/AllRolesDeploymentSource.cs | 4 +- .../OrchardCore.Roles/Recipes/RolesStep.cs | 2 + ...tPickerFieldElasticEditorSettingsDriver.cs | 3 +- .../Startup.cs | 4 +- .../Deployment/LuceneIndexDeploymentSource.cs | 4 +- .../LuceneSettingsDeploymentSource.cs | 4 +- .../Recipes/LuceneIndexRebuildStep.cs | 4 +- .../OrchardCore.Search.Lucene/Startup.cs | 2 +- .../SearchSettingsDeploymentSource.cs | 4 +- .../SiteSettingsDeploymentSource.cs | 3 +- .../AllShortcodeTemplatesDeploymentSource.cs | 4 +- .../Recipes/SitemapsStep.cs | 3 +- .../OrchardCore.Sitemaps/Startup.cs | 4 +- .../Drivers/GeoPointFieldSettingsDriver.cs | 3 +- .../Controllers/AdminController.cs | 9 +++-- .../TaxonomyContentsAdminListDisplayDriver.cs | 1 + .../Drivers/TaxonomyFieldDisplayDriver.cs | 2 + .../Drivers/TaxonomyFieldDriverHelper.cs | 1 + .../Drivers/TaxonomyFieldTagsDisplayDriver.cs | 5 ++- .../Indexing/TaxonomyIndex.cs | 3 +- .../Settings/TaxonomyFieldSettingsDriver.cs | 3 +- .../TaxonomyFieldTagsEditorSettingsDriver.cs | 3 +- .../OrchardCore.Taxonomies/Startup.cs | 2 +- .../Views/Content.TermAdmin.cshtml | 37 +++++++++---------- .../AllAdminTemplatesDeploymentSource.cs | 4 +- .../Recipes/TemplateStep.cs | 3 +- .../OrchardCore.Tenants/Startup.cs | 4 +- .../CustomUserSettingsDeploymentSource.cs | 11 +++--- .../CustomUserSettingsDisplayDriver.cs | 2 + .../Models/UsersStepUserModel.cs | 1 + .../Services/CustomUserSettingsService.cs | 2 +- .../OrchardCore.Users/Startup.cs | 1 - .../TwoFactorAuthenticationStartup.cs | 2 +- .../Controllers/AdminController.cs | 2 +- .../AllWorkflowTypeDeploymentSource.cs | 14 ++++--- .../Recipes/WorkflowTypeStep.cs | 7 +++- .../Services/WorkflowManager.cs | 13 +++++-- .../Drivers/UserTaskEventContentDriver.cs | 10 ++++- .../JsonSerializerOptionsConfiguration.cs | 32 ++++++++++++++++ .../Records/Migrations.cs | 1 + .../DefaultJsonContentSerializer.cs | 31 +++++----------- .../OrchardCoreBuilderExtensions.cs | 10 ++--- .../Notify/NotifyFilter.cs | 2 +- .../Documents/DocumentEntityManager.cs | 5 ++- .../Documents/DocumentEntityManagerOfT.cs | 3 +- .../VolatileDocumentEntityManager.cs | 3 +- .../AzureAISearchSettingsDeploymentSource.cs | 4 +- .../Recipes/AzureAISearchIndexSettingsStep.cs | 27 +++++++++----- .../ElasticIndexDeploymentSource.cs | 4 +- .../ElasticSettingsDeploymentSource.cs | 4 +- .../SiteSettingsPropertyDeploymentSource.cs | 3 +- .../Services/IWorkflowManager.cs | 5 ++- .../Extensions/ServiceCollectionExtensions.cs | 4 ++ .../ContentStepLuceneQueryTests.cs | 2 +- .../GraphQL/ContentItemsFieldTypeTests.cs | 22 +++++++++-- .../OpenIdApplicationStepTests.cs | 1 + .../OpenIdServerDeploymentSourceTests.cs | 6 +++ .../Recipes/RecipeExecutorTests.cs | 3 +- .../Workflows/WorkflowManagerTests.cs | 4 ++ 119 files changed, 408 insertions(+), 278 deletions(-) create mode 100644 src/OrchardCore/OrchardCore.Abstractions/Extensions/JsonSerializerOptionsConfiguration.cs diff --git a/src/OrchardCore.Modules/OrchardCore.AdminMenu/Deployment/AdminMenuDeploymentSource.cs b/src/OrchardCore.Modules/OrchardCore.AdminMenu/Deployment/AdminMenuDeploymentSource.cs index e07ba5551ef..0cb65240c45 100644 --- a/src/OrchardCore.Modules/OrchardCore.AdminMenu/Deployment/AdminMenuDeploymentSource.cs +++ b/src/OrchardCore.Modules/OrchardCore.AdminMenu/Deployment/AdminMenuDeploymentSource.cs @@ -1,11 +1,9 @@ using System.Text.Json; using System.Text.Json.Nodes; -using System.Text.Json.Serialization; using System.Threading.Tasks; using Microsoft.Extensions.Options; using OrchardCore.AdminMenu.Services; using OrchardCore.Deployment; -using OrchardCore.Json; namespace OrchardCore.AdminMenu.Deployment { @@ -14,15 +12,10 @@ public class AdminMenuDeploymentSource : IDeploymentSource private readonly IAdminMenuService _adminMenuService; private readonly JsonSerializerOptions _serializationOptions; - public AdminMenuDeploymentSource(IAdminMenuService adminMenuService, IOptions derivedTypesOptions) + public AdminMenuDeploymentSource(IAdminMenuService adminMenuService, IOptions serializationOptions) { _adminMenuService = adminMenuService; - - // The recipe step contains polymorphic types which need to be resolved - _serializationOptions = new() - { - TypeInfoResolver = new PolymorphicJsonTypeInfoResolver(derivedTypesOptions.Value) - }; + _serializationOptions = serializationOptions.Value; } public async Task ProcessDeploymentStepAsync(DeploymentStep step, DeploymentPlanResult result) diff --git a/src/OrchardCore.Modules/OrchardCore.AdminMenu/Recipes/AdminMenuStep.cs b/src/OrchardCore.Modules/OrchardCore.AdminMenu/Recipes/AdminMenuStep.cs index 1e578340f61..dff8ef5d672 100644 --- a/src/OrchardCore.Modules/OrchardCore.AdminMenu/Recipes/AdminMenuStep.cs +++ b/src/OrchardCore.Modules/OrchardCore.AdminMenu/Recipes/AdminMenuStep.cs @@ -2,11 +2,9 @@ using System.Linq; using System.Text.Json; using System.Text.Json.Nodes; -using System.Text.Json.Serialization; using System.Threading.Tasks; using Microsoft.Extensions.Options; using OrchardCore.AdminMenu.Services; -using OrchardCore.Json; using OrchardCore.Recipes.Models; using OrchardCore.Recipes.Services; @@ -20,15 +18,14 @@ public class AdminMenuStep : IRecipeStepHandler private readonly IAdminMenuService _adminMenuService; private readonly JsonSerializerOptions _serializationOptions; - public AdminMenuStep(IAdminMenuService adminMenuService, IOptions derivedTypesOptions) + public AdminMenuStep( + IAdminMenuService adminMenuService, + IOptions serializationOptions) { _adminMenuService = adminMenuService; // The recipe step contains polymorphic types (menu items) which need to be resolved - _serializationOptions = new() - { - TypeInfoResolver = new PolymorphicJsonTypeInfoResolver(derivedTypesOptions.Value) - }; + _serializationOptions = serializationOptions.Value; } public async Task ExecuteAsync(RecipeExecutionContext context) @@ -38,7 +35,7 @@ public async Task ExecuteAsync(RecipeExecutionContext context) return; } - var model = context.Step.ToObject(); + var model = context.Step.ToObject(_serializationOptions); foreach (var token in model.Data.Cast()) { diff --git a/src/OrchardCore.Modules/OrchardCore.Apis.GraphQL/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Apis.GraphQL/Startup.cs index 963237964a4..8bdf71dda32 100644 --- a/src/OrchardCore.Modules/OrchardCore.Apis.GraphQL/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Apis.GraphQL/Startup.cs @@ -1,3 +1,4 @@ +using System; using GraphQL; using GraphQL.DataLoader; using GraphQL.Execution; @@ -14,7 +15,6 @@ using OrchardCore.Modules; using OrchardCore.Navigation; using OrchardCore.Security.Permissions; -using System; namespace OrchardCore.Apis.GraphQL { diff --git a/src/OrchardCore.Modules/OrchardCore.Autoroute/Handlers/AutoroutePartHandler.cs b/src/OrchardCore.Modules/OrchardCore.Autoroute/Handlers/AutoroutePartHandler.cs index 833546fdd66..d8690e060be 100644 --- a/src/OrchardCore.Modules/OrchardCore.Autoroute/Handlers/AutoroutePartHandler.cs +++ b/src/OrchardCore.Modules/OrchardCore.Autoroute/Handlers/AutoroutePartHandler.cs @@ -37,6 +37,7 @@ public class AutoroutePartHandler : ContentPartHandler private readonly ITagCache _tagCache; private readonly ISession _session; private readonly IServiceProvider _serviceProvider; + protected readonly IStringLocalizer S; private IContentManager _contentManager; diff --git a/src/OrchardCore.Modules/OrchardCore.ContentFields/Migrations.cs b/src/OrchardCore.Modules/OrchardCore.ContentFields/Migrations.cs index 4131435aa4e..5a49971612d 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Migrations.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Migrations.cs @@ -14,7 +14,9 @@ public class Migrations : DataMigration private readonly IContentDefinitionManager _contentDefinitionManager; private readonly ShellDescriptor _shellDescriptor; - public Migrations(IContentDefinitionManager contentDefinitionManager, ShellDescriptor shellDescriptor) + public Migrations( + IContentDefinitionManager contentDefinitionManager, + ShellDescriptor shellDescriptor) { _contentDefinitionManager = contentDefinitionManager; _shellDescriptor = shellDescriptor; diff --git a/src/OrchardCore.Modules/OrchardCore.ContentFields/Settings/LinkFieldSettingsDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentFields/Settings/LinkFieldSettingsDriver.cs index 6d61f64e832..2f2131a9216 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Settings/LinkFieldSettingsDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Settings/LinkFieldSettingsDriver.cs @@ -23,8 +23,7 @@ public override IDisplayResult Edit(ContentPartFieldDefinition partFieldDefiniti model.TextPlaceholder = settings.TextPlaceholder; model.DefaultUrl = settings.DefaultUrl; model.DefaultText = settings.DefaultText; - }) - .Location("Content"); + }).Location("Content"); } public override async Task UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context) diff --git a/src/OrchardCore.Modules/OrchardCore.ContentFields/Settings/TextFieldSettingsDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentFields/Settings/TextFieldSettingsDriver.cs index ed5eb8d2c5e..d0de20ad677 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Settings/TextFieldSettingsDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Settings/TextFieldSettingsDriver.cs @@ -18,8 +18,7 @@ public override IDisplayResult Edit(ContentPartFieldDefinition partFieldDefiniti model.Hint = settings.Hint; model.Required = settings.Required; model.DefaultValue = settings.DefaultValue; - }) - .Location("Content"); + }).Location("Content"); } public override async Task UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context) diff --git a/src/OrchardCore.Modules/OrchardCore.ContentFields/Startup.cs b/src/OrchardCore.Modules/OrchardCore.ContentFields/Startup.cs index 105438153e8..d49cde5fd74 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Startup.cs @@ -1,3 +1,4 @@ +using System; using Fluid; using Microsoft.Extensions.DependencyInjection; using OrchardCore.ContentFields.Drivers; @@ -15,7 +16,6 @@ using OrchardCore.Data.Migration; using OrchardCore.Indexing; using OrchardCore.Modules; -using System; namespace OrchardCore.ContentFields { diff --git a/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Startup.cs b/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Startup.cs index 1e465f9c8a2..337ca81f121 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Startup.cs @@ -1,3 +1,5 @@ +using System; +using System.Globalization; using Fluid; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Builder; @@ -23,8 +25,6 @@ using OrchardCore.Security.Permissions; using OrchardCore.Settings; using OrchardCore.Sitemaps.Builders; -using System; -using System.Globalization; namespace OrchardCore.ContentLocalization { diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/AuditTrail/Drivers/AuditTrailContentEventDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Contents/AuditTrail/Drivers/AuditTrailContentEventDisplayDriver.cs index 4baba6ce656..7c42f547bdc 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/AuditTrail/Drivers/AuditTrailContentEventDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/AuditTrail/Drivers/AuditTrailContentEventDisplayDriver.cs @@ -22,7 +22,9 @@ public class AuditTrailContentEventDisplayDriver : AuditTrailEventSectionDisplay private readonly IAuditTrailManager _auditTrailManager; private readonly ISession _session; - public AuditTrailContentEventDisplayDriver(IAuditTrailManager auditTrailManager, ISession session) + public AuditTrailContentEventDisplayDriver( + IAuditTrailManager auditTrailManager, + ISession session) { _auditTrailManager = auditTrailManager; _session = session; diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/Deployment/Download/DownloadController.cs b/src/OrchardCore.Modules/OrchardCore.Contents/Deployment/Download/DownloadController.cs index 376f143cb7a..2f1a4cf918a 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/Deployment/Download/DownloadController.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/Deployment/Download/DownloadController.cs @@ -18,8 +18,7 @@ public class DownloadController : Controller public DownloadController( IAuthorizationService authorizationService, - IContentManager contentManager - ) + IContentManager contentManager) { _authorizationService = authorizationService; _contentManager = contentManager; diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/Liquid/BuildDisplayFilter.cs b/src/OrchardCore.Modules/OrchardCore.Contents/Liquid/BuildDisplayFilter.cs index 2185293499a..8112c3aa4b4 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/Liquid/BuildDisplayFilter.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/Liquid/BuildDisplayFilter.cs @@ -19,7 +19,8 @@ public class BuildDisplayFilter : ILiquidFilter private readonly IContentItemDisplayManager _contentItemDisplayManager; private readonly IUpdateModelAccessor _updateModelAccessor; - public BuildDisplayFilter(IContentItemRecursionHelper buildDisplayRecursionHelper, + public BuildDisplayFilter( + IContentItemRecursionHelper buildDisplayRecursionHelper, IContentItemDisplayManager contentItemDisplayManager, IUpdateModelAccessor updateModelAccessor) { diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/Liquid/FullTextFilter.cs b/src/OrchardCore.Modules/OrchardCore.Contents/Liquid/FullTextFilter.cs index adea189a572..58577201e44 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/Liquid/FullTextFilter.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/Liquid/FullTextFilter.cs @@ -15,7 +15,9 @@ public class FullTextFilter : ILiquidFilter private readonly IContentManager _contentManager; private readonly IContentItemRecursionHelper _fullTextRecursionHelper; - public FullTextFilter(IContentManager contentManager, IContentItemRecursionHelper fullTextRecursionHelper) + public FullTextFilter( + IContentManager contentManager, + IContentItemRecursionHelper fullTextRecursionHelper) { _contentManager = contentManager; _fullTextRecursionHelper = fullTextRecursionHelper; diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/Recipes/ContentStep.cs b/src/OrchardCore.Modules/OrchardCore.Contents/Recipes/ContentStep.cs index f59787d0cd6..7791ffb436d 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/Recipes/ContentStep.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/Recipes/ContentStep.cs @@ -32,7 +32,7 @@ public Task ExecuteAsync(RecipeExecutionContext context) } // Otherwise, the import of content items is deferred after all migrations are completed, - // this prevents e.g. a content handler to trigger a workflow before worflows migrations. + // this prevents e.g. a content handler to trigger a workflow before workflows migrations. ShellScope.AddDeferredTask(scope => { var contentManager = scope.ServiceProvider.GetRequiredService(); diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Contents/Startup.cs index cf2abe2e624..67a3ac3d519 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/Startup.cs @@ -1,3 +1,5 @@ +using System; +using System.Threading.Tasks; using Fluid; using Fluid.Values; using Microsoft.AspNetCore.Authorization; @@ -50,8 +52,6 @@ using OrchardCore.Sitemaps.Handlers; using OrchardCore.Sitemaps.Models; using OrchardCore.Sitemaps.Services; -using System; -using System.Threading.Tasks; using YesSql.Filters.Query; namespace OrchardCore.Contents diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentActivity.cs b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentActivity.cs index ce7900fa5ce..21d9d9ceb3f 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentActivity.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentActivity.cs @@ -16,6 +16,7 @@ namespace OrchardCore.Contents.Workflows.Activities { public abstract class ContentActivity : Activity { + protected readonly IStringLocalizer S; protected ContentActivity( diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentCreatedEvent.cs b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentCreatedEvent.cs index 289783fe5a2..2df0fd8d65e 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentCreatedEvent.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentCreatedEvent.cs @@ -6,7 +6,11 @@ namespace OrchardCore.Contents.Workflows.Activities { public class ContentCreatedEvent : ContentEvent { - public ContentCreatedEvent(IContentManager contentManager, IWorkflowScriptEvaluator scriptEvaluator, IStringLocalizer localizer) : base(contentManager, scriptEvaluator, localizer) + public ContentCreatedEvent( + IContentManager contentManager, + IWorkflowScriptEvaluator scriptEvaluator, + IStringLocalizer localizer) + : base(contentManager, scriptEvaluator, localizer) { } diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentDeletedEvent.cs b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentDeletedEvent.cs index fd3e6662b7c..4b4ea669d4e 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentDeletedEvent.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentDeletedEvent.cs @@ -6,7 +6,11 @@ namespace OrchardCore.Contents.Workflows.Activities { public class ContentDeletedEvent : ContentEvent { - public ContentDeletedEvent(IContentManager contentManager, IWorkflowScriptEvaluator scriptEvaluator, IStringLocalizer localizer) : base(contentManager, scriptEvaluator, localizer) + public ContentDeletedEvent( + IContentManager contentManager, + IWorkflowScriptEvaluator scriptEvaluator, + IStringLocalizer localizer) + : base(contentManager, scriptEvaluator, localizer) { } diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentDraftSavedEvent.cs b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentDraftSavedEvent.cs index 21b93d631e6..96d69de978b 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentDraftSavedEvent.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentDraftSavedEvent.cs @@ -6,7 +6,11 @@ namespace OrchardCore.Contents.Workflows.Activities { public class ContentDraftSavedEvent : ContentEvent { - public ContentDraftSavedEvent(IContentManager contentManager, IWorkflowScriptEvaluator scriptEvaluator, IStringLocalizer localizer) : base(contentManager, scriptEvaluator, localizer) + public ContentDraftSavedEvent( + IContentManager contentManager, + IWorkflowScriptEvaluator scriptEvaluator, + IStringLocalizer localizer) + : base(contentManager, scriptEvaluator, localizer) { } diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentEvent.cs b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentEvent.cs index d2e3c401a7d..7e0efd08885 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentEvent.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentEvent.cs @@ -11,7 +11,11 @@ namespace OrchardCore.Contents.Workflows.Activities { public abstract class ContentEvent : ContentActivity, IEvent { - protected ContentEvent(IContentManager contentManager, IWorkflowScriptEvaluator scriptEvaluator, IStringLocalizer localizer) : base(contentManager, scriptEvaluator, localizer) + protected ContentEvent( + IContentManager contentManager, + IWorkflowScriptEvaluator scriptEvaluator, + IStringLocalizer localizer) + : base(contentManager, scriptEvaluator, localizer) { } diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentPublishedEvent.cs b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentPublishedEvent.cs index 9e37381ed4f..470f663f340 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentPublishedEvent.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentPublishedEvent.cs @@ -6,7 +6,11 @@ namespace OrchardCore.Contents.Workflows.Activities { public class ContentPublishedEvent : ContentEvent { - public ContentPublishedEvent(IContentManager contentManager, IWorkflowScriptEvaluator scriptEvaluator, IStringLocalizer localizer) : base(contentManager, scriptEvaluator, localizer) + public ContentPublishedEvent( + IContentManager contentManager, + IWorkflowScriptEvaluator scriptEvaluator, + IStringLocalizer localizer) + : base(contentManager, scriptEvaluator, localizer) { } diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentTask.cs b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentTask.cs index b261683acab..cebe217c0a3 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentTask.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentTask.cs @@ -7,7 +7,10 @@ namespace OrchardCore.Contents.Workflows.Activities { public abstract class ContentTask : ContentActivity, ITask { - protected ContentTask(IContentManager contentManager, IWorkflowScriptEvaluator scriptEvaluator, IStringLocalizer localizer) + protected ContentTask( + IContentManager contentManager, + IWorkflowScriptEvaluator scriptEvaluator, + IStringLocalizer localizer) : base(contentManager, scriptEvaluator, localizer) { } diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentUnpublishedEvent.cs b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentUnpublishedEvent.cs index 64938986b15..49da36b13b6 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentUnpublishedEvent.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentUnpublishedEvent.cs @@ -6,7 +6,11 @@ namespace OrchardCore.Contents.Workflows.Activities { public class ContentUnpublishedEvent : ContentEvent { - public ContentUnpublishedEvent(IContentManager contentManager, IWorkflowScriptEvaluator scriptEvaluator, IStringLocalizer localizer) : base(contentManager, scriptEvaluator, localizer) + public ContentUnpublishedEvent( + IContentManager contentManager, + IWorkflowScriptEvaluator scriptEvaluator, + IStringLocalizer localizer) + : base(contentManager, scriptEvaluator, localizer) { } diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentUpdatedEvent.cs b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentUpdatedEvent.cs index 8ecc1238f3d..57cfa6446bc 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentUpdatedEvent.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentUpdatedEvent.cs @@ -6,7 +6,11 @@ namespace OrchardCore.Contents.Workflows.Activities { public class ContentUpdatedEvent : ContentEvent { - public ContentUpdatedEvent(IContentManager contentManager, IWorkflowScriptEvaluator scriptEvaluator, IStringLocalizer localizer) : base(contentManager, scriptEvaluator, localizer) + public ContentUpdatedEvent( + IContentManager contentManager, + IWorkflowScriptEvaluator scriptEvaluator, + IStringLocalizer localizer) + : base(contentManager, scriptEvaluator, localizer) { } diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentVersionedEvent.cs b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentVersionedEvent.cs index 51322519090..c7364c7319f 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentVersionedEvent.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/ContentVersionedEvent.cs @@ -6,7 +6,10 @@ namespace OrchardCore.Contents.Workflows.Activities { public class ContentVersionedEvent : ContentEvent { - public ContentVersionedEvent(IContentManager contentManager, IWorkflowScriptEvaluator scriptEvaluator, IStringLocalizer localizer) : base(contentManager, scriptEvaluator, localizer) + public ContentVersionedEvent(IContentManager contentManager, + IWorkflowScriptEvaluator scriptEvaluator, + IStringLocalizer localizer) + : base(contentManager, scriptEvaluator, localizer) { } diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/DeleteContentTask.cs b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/DeleteContentTask.cs index 7022ebc6185..5381862eae4 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/DeleteContentTask.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/DeleteContentTask.cs @@ -12,7 +12,10 @@ namespace OrchardCore.Contents.Workflows.Activities { public class DeleteContentTask : ContentTask { - public DeleteContentTask(IContentManager contentManager, IWorkflowScriptEvaluator scriptEvaluator, IStringLocalizer localizer) : base(contentManager, scriptEvaluator, localizer) + public DeleteContentTask(IContentManager contentManager, + IWorkflowScriptEvaluator scriptEvaluator, + IStringLocalizer localizer) + : base(contentManager, scriptEvaluator, localizer) { } diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/PublishContentTask.cs b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/PublishContentTask.cs index f6919242a23..2875b2fd763 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/PublishContentTask.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/PublishContentTask.cs @@ -12,7 +12,11 @@ namespace OrchardCore.Contents.Workflows.Activities { public class PublishContentTask : ContentTask { - public PublishContentTask(IContentManager contentManager, IWorkflowScriptEvaluator scriptEvaluator, IStringLocalizer localizer) : base(contentManager, scriptEvaluator, localizer) + public PublishContentTask( + IContentManager contentManager, + IWorkflowScriptEvaluator scriptEvaluator, + IStringLocalizer localizer) + : base(contentManager, scriptEvaluator, localizer) { } diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/RetrieveContentTask.cs b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/RetrieveContentTask.cs index b5475c5debb..0663dd93607 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/RetrieveContentTask.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/RetrieveContentTask.cs @@ -13,7 +13,11 @@ namespace OrchardCore.Contents.Workflows.Activities { public class RetrieveContentTask : ContentTask { - public RetrieveContentTask(IContentManager contentManager, IWorkflowScriptEvaluator scriptEvaluator, IStringLocalizer localizer) : base(contentManager, scriptEvaluator, localizer) + public RetrieveContentTask( + IContentManager contentManager, + IWorkflowScriptEvaluator scriptEvaluator, + IStringLocalizer localizer) + : base(contentManager, scriptEvaluator, localizer) { } diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/UnpublishContentTask.cs b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/UnpublishContentTask.cs index af2b8a4a3af..a74c535cb18 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/UnpublishContentTask.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Activities/UnpublishContentTask.cs @@ -12,7 +12,11 @@ namespace OrchardCore.Contents.Workflows.Activities { public class UnpublishContentTask : ContentTask { - public UnpublishContentTask(IContentManager contentManager, IWorkflowScriptEvaluator scriptEvaluator, IStringLocalizer localizer) : base(contentManager, scriptEvaluator, localizer) + public UnpublishContentTask( + IContentManager contentManager, + IWorkflowScriptEvaluator scriptEvaluator, + IStringLocalizer localizer) + : base(contentManager, scriptEvaluator, localizer) { } diff --git a/src/OrchardCore.Modules/OrchardCore.Cors/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Cors/Startup.cs index 43d74afe38a..5b90899adb4 100644 --- a/src/OrchardCore.Modules/OrchardCore.Cors/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Cors/Startup.cs @@ -1,3 +1,4 @@ +using System; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Cors.Infrastructure; using Microsoft.AspNetCore.Routing; @@ -8,7 +9,6 @@ using OrchardCore.Modules; using OrchardCore.Navigation; using OrchardCore.Security.Permissions; -using System; using CorsService = OrchardCore.Cors.Services.CorsService; namespace OrchardCore.Cors diff --git a/src/OrchardCore.Modules/OrchardCore.CustomSettings/Services/CustomSettingsService.cs b/src/OrchardCore.Modules/OrchardCore.CustomSettings/Services/CustomSettingsService.cs index 6d57abc5c9c..319fe4684f4 100644 --- a/src/OrchardCore.Modules/OrchardCore.CustomSettings/Services/CustomSettingsService.cs +++ b/src/OrchardCore.Modules/OrchardCore.CustomSettings/Services/CustomSettingsService.cs @@ -33,7 +33,7 @@ public CustomSettingsService( _httpContextAccessor = httpContextAccessor; _authorizationService = authorizationService; _contentDefinitionManager = contentDefinitionManager; - _settingsTypes = new Lazy>>(async () => await GetContentTypeAsync()); + _settingsTypes = new Lazy>>(GetContentTypeAsync()); } public async Task> GetAllSettingsTypeNamesAsync() diff --git a/src/OrchardCore.Modules/OrchardCore.Deployment/Deployment/DeploymentPlanDeploymentSource.cs b/src/OrchardCore.Modules/OrchardCore.Deployment/Deployment/DeploymentPlanDeploymentSource.cs index f122b92eded..8f3c6f1b867 100644 --- a/src/OrchardCore.Modules/OrchardCore.Deployment/Deployment/DeploymentPlanDeploymentSource.cs +++ b/src/OrchardCore.Modules/OrchardCore.Deployment/Deployment/DeploymentPlanDeploymentSource.cs @@ -1,7 +1,9 @@ using System.Collections.Generic; using System.Linq; +using System.Text.Json; using System.Text.Json.Nodes; using System.Threading.Tasks; +using Microsoft.Extensions.Options; namespace OrchardCore.Deployment.Deployment { @@ -9,13 +11,16 @@ public class DeploymentPlanDeploymentSource : IDeploymentSource { private readonly IDeploymentPlanService _deploymentPlanService; private readonly IEnumerable _deploymentStepFactories; + private readonly JsonSerializerOptions _jsonSerializerOptions; public DeploymentPlanDeploymentSource( IDeploymentPlanService deploymentPlanService, - IEnumerable deploymentStepFactories) + IEnumerable deploymentStepFactories, + IOptions jsonSerializerOptions) { _deploymentPlanService = deploymentPlanService; _deploymentStepFactories = deploymentStepFactories; + _jsonSerializerOptions = jsonSerializerOptions.Value; } public async Task ProcessDeploymentStepAsync(DeploymentStep deploymentStep, DeploymentPlanResult result) @@ -52,7 +57,7 @@ public async Task ProcessDeploymentStepAsync(DeploymentStep deploymentStep, Depl result.Steps.Add(new JsonObject { ["name"] = "deployment", - ["Plans"] = JArray.FromObject(plans), + ["Plans"] = JArray.FromObject(plans, _jsonSerializerOptions), }); } diff --git a/src/OrchardCore.Modules/OrchardCore.Deployment/Recipes/DeploymentPlansRecipeStep.cs b/src/OrchardCore.Modules/OrchardCore.Deployment/Recipes/DeploymentPlansRecipeStep.cs index 22af8f5010b..aa4b85650f4 100644 --- a/src/OrchardCore.Modules/OrchardCore.Deployment/Recipes/DeploymentPlansRecipeStep.cs +++ b/src/OrchardCore.Modules/OrchardCore.Deployment/Recipes/DeploymentPlansRecipeStep.cs @@ -1,9 +1,11 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Text.Json; using System.Text.Json.Nodes; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; using OrchardCore.Recipes.Models; using OrchardCore.Recipes.Services; @@ -15,13 +17,16 @@ namespace OrchardCore.Deployment.Recipes public class DeploymentPlansRecipeStep : IRecipeStepHandler { private readonly IServiceProvider _serviceProvider; + private readonly JsonSerializerOptions _jsonSerializerOptions; private readonly IDeploymentPlanService _deploymentPlanService; public DeploymentPlansRecipeStep( IServiceProvider serviceProvider, + IOptions jsonSerializerOptions, IDeploymentPlanService deploymentPlanService) { _serviceProvider = serviceProvider; + _jsonSerializerOptions = jsonSerializerOptions.Value; _deploymentPlanService = deploymentPlanService; } @@ -50,7 +55,7 @@ public Task ExecuteAsync(RecipeExecutionContext context) { if (deploymentStepFactories.TryGetValue(step.Type, out var deploymentStepFactory)) { - var deploymentStep = (DeploymentStep)step.Step.ToObject(deploymentStepFactory.Create().GetType()); + var deploymentStep = (DeploymentStep)step.Step.ToObject(deploymentStepFactory.Create().GetType(), _jsonSerializerOptions); deploymentPlan.DeploymentSteps.Add(deploymentStep); } diff --git a/src/OrchardCore.Modules/OrchardCore.Deployment/Steps/CustomFileDeploymentSource.cs b/src/OrchardCore.Modules/OrchardCore.Deployment/Steps/CustomFileDeploymentSource.cs index 677ad1323f8..c5586213017 100644 --- a/src/OrchardCore.Modules/OrchardCore.Deployment/Steps/CustomFileDeploymentSource.cs +++ b/src/OrchardCore.Modules/OrchardCore.Deployment/Steps/CustomFileDeploymentSource.cs @@ -7,9 +7,7 @@ public class CustomFileDeploymentSource : IDeploymentSource { public Task ProcessDeploymentStepAsync(DeploymentStep step, DeploymentPlanResult result) { - var customFile = step as CustomFileDeploymentStep; - - if (customFile == null) + if (step is not CustomFileDeploymentStep customFile) { return Task.CompletedTask; } diff --git a/src/OrchardCore.Modules/OrchardCore.Facebook/Login/Services/FacebookLoginService.cs b/src/OrchardCore.Modules/OrchardCore.Facebook/Login/Services/FacebookLoginService.cs index a992d8151b5..adcd8ce2967 100644 --- a/src/OrchardCore.Modules/OrchardCore.Facebook/Login/Services/FacebookLoginService.cs +++ b/src/OrchardCore.Modules/OrchardCore.Facebook/Login/Services/FacebookLoginService.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Collections.Immutable; using System.ComponentModel.DataAnnotations; +using System.Text.Json; using System.Text.Json.Nodes; using System.Threading.Tasks; using OrchardCore.Facebook.Login.Settings; @@ -13,8 +14,7 @@ public class FacebookLoginService : IFacebookLoginService { private readonly ISiteService _siteService; - public FacebookLoginService( - ISiteService siteService) + public FacebookLoginService(ISiteService siteService) { _siteService = siteService; } @@ -36,7 +36,7 @@ public async Task UpdateSettingsAsync(FacebookLoginSettings settings) ArgumentNullException.ThrowIfNull(settings); var container = await _siteService.LoadSiteSettingsAsync(); - container.Properties[nameof(FacebookLoginSettings)] = JObject.FromObject(settings); + container.Properties[nameof(FacebookLoginSettings)] = JObject.FromObject(settings, JOptions.Default); await _siteService.UpdateSiteSettingsAsync(container); } diff --git a/src/OrchardCore.Modules/OrchardCore.Facebook/Services/FacebookService.cs b/src/OrchardCore.Modules/OrchardCore.Facebook/Services/FacebookService.cs index 0679fbb3009..c4e0ff96c47 100644 --- a/src/OrchardCore.Modules/OrchardCore.Facebook/Services/FacebookService.cs +++ b/src/OrchardCore.Modules/OrchardCore.Facebook/Services/FacebookService.cs @@ -12,6 +12,7 @@ namespace OrchardCore.Facebook.Services public class FacebookService : IFacebookService { private readonly ISiteService _siteService; + protected readonly IStringLocalizer S; public FacebookService( diff --git a/src/OrchardCore.Modules/OrchardCore.Features/Deployment/AllFeaturesDeploymentSource.cs b/src/OrchardCore.Modules/OrchardCore.Features/Deployment/AllFeaturesDeploymentSource.cs index 882fceed3fd..04c038b74ca 100644 --- a/src/OrchardCore.Modules/OrchardCore.Features/Deployment/AllFeaturesDeploymentSource.cs +++ b/src/OrchardCore.Modules/OrchardCore.Features/Deployment/AllFeaturesDeploymentSource.cs @@ -17,9 +17,7 @@ public AllFeaturesDeploymentSource(IModuleService moduleService) public async Task ProcessDeploymentStepAsync(DeploymentStep step, DeploymentPlanResult result) { - var allFeaturesStep = step as AllFeaturesDeploymentStep; - - if (allFeaturesStep == null) + if (step is not AllFeaturesDeploymentStep allFeaturesStep) { return; } diff --git a/src/OrchardCore.Modules/OrchardCore.Features/Recipes/Executors/FeatureStep.cs b/src/OrchardCore.Modules/OrchardCore.Features/Recipes/Executors/FeatureStep.cs index 26a7f701851..411c423f494 100644 --- a/src/OrchardCore.Modules/OrchardCore.Features/Recipes/Executors/FeatureStep.cs +++ b/src/OrchardCore.Modules/OrchardCore.Features/Recipes/Executors/FeatureStep.cs @@ -15,7 +15,8 @@ public class FeatureStep : IRecipeStepHandler { private readonly IShellFeaturesManager _shellFeaturesManager; - public FeatureStep(IShellFeaturesManager shellFeaturesManager) + public FeatureStep( + IShellFeaturesManager shellFeaturesManager) { _shellFeaturesManager = shellFeaturesManager; } @@ -29,12 +30,12 @@ public async Task ExecuteAsync(RecipeExecutionContext context) var step = context.Step.ToObject(); - var features = (await _shellFeaturesManager.GetAvailableFeaturesAsync()); + var features = await _shellFeaturesManager.GetAvailableFeaturesAsync(); - var featuresToDisable = features.Where(x => step.Disable?.Contains(x.Id) == true).ToList(); - var featuresToEnable = features.Where(x => step.Enable?.Contains(x.Id) == true).ToList(); + var featuresToDisable = features.Where(x => step.Disable?.Contains(x.Id) == true).ToArray(); + var featuresToEnable = features.Where(x => step.Enable?.Contains(x.Id) == true).ToArray(); - if (featuresToDisable.Count > 0 || featuresToEnable.Count > 0) + if (featuresToDisable.Length > 0 || featuresToEnable.Length > 0) { await _shellFeaturesManager.UpdateFeaturesAsync(featuresToDisable, featuresToEnable, true); } diff --git a/src/OrchardCore.Modules/OrchardCore.Flows/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Flows/Startup.cs index 58884ad145d..ba65ad68400 100644 --- a/src/OrchardCore.Modules/OrchardCore.Flows/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Flows/Startup.cs @@ -1,15 +1,9 @@ -using System; using Fluid; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Routing; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Options; -using OrchardCore.Admin; using OrchardCore.ContentManagement; using OrchardCore.ContentManagement.Display.ContentDisplay; using OrchardCore.ContentTypes.Editors; using OrchardCore.Data.Migration; -using OrchardCore.Flows.Controllers; using OrchardCore.Flows.Drivers; using OrchardCore.Flows.Handlers; using OrchardCore.Flows.Indexing; @@ -18,7 +12,6 @@ using OrchardCore.Flows.ViewModels; using OrchardCore.Indexing; using OrchardCore.Modules; -using OrchardCore.Mvc.Core.Utilities; namespace OrchardCore.Flows { diff --git a/src/OrchardCore.Modules/OrchardCore.Layers/Deployment/AllLayersDeploymentSource.cs b/src/OrchardCore.Modules/OrchardCore.Layers/Deployment/AllLayersDeploymentSource.cs index 7b30fe6f5bf..a1fb33a8497 100644 --- a/src/OrchardCore.Modules/OrchardCore.Layers/Deployment/AllLayersDeploymentSource.cs +++ b/src/OrchardCore.Modules/OrchardCore.Layers/Deployment/AllLayersDeploymentSource.cs @@ -1,10 +1,8 @@ using System.Text.Json; using System.Text.Json.Nodes; -using System.Text.Json.Serialization; using System.Threading.Tasks; using Microsoft.Extensions.Options; using OrchardCore.Deployment; -using OrchardCore.Json; using OrchardCore.Layers.Models; using OrchardCore.Layers.Services; using OrchardCore.Settings; @@ -15,28 +13,21 @@ public class AllLayersDeploymentSource : IDeploymentSource { private readonly ILayerService _layerService; private readonly ISiteService _siteService; - private readonly JsonSerializerOptions _serializationOptions; + private readonly JsonSerializerOptions _jsonSerializerOptions; public AllLayersDeploymentSource( ILayerService layerService, ISiteService siteService, - IOptions derivedTypesOptions) + IOptions serializationOptions) { _layerService = layerService; _siteService = siteService; - - // The recipe step contains polymorphic types which need to be resolved - _serializationOptions = new() - { - TypeInfoResolver = new PolymorphicJsonTypeInfoResolver(derivedTypesOptions.Value) - }; + _jsonSerializerOptions = serializationOptions.Value; } public async Task ProcessDeploymentStepAsync(DeploymentStep step, DeploymentPlanResult result) { - var allLayersStep = step as AllLayersDeploymentStep; - - if (allLayersStep == null) + if (step is not AllLayersDeploymentStep) { return; } @@ -46,7 +37,7 @@ public async Task ProcessDeploymentStepAsync(DeploymentStep step, DeploymentPlan result.Steps.Add(new JsonObject { ["name"] = "Layers", - ["Layers"] = JArray.FromObject(layers.Layers, _serializationOptions), + ["Layers"] = JArray.FromObject(layers.Layers, _jsonSerializerOptions), }); var siteSettings = await _siteService.GetSiteSettingsAsync(); diff --git a/src/OrchardCore.Modules/OrchardCore.Layers/Recipes/LayerStep.cs b/src/OrchardCore.Modules/OrchardCore.Layers/Recipes/LayerStep.cs index 2c6ba7d64dd..43ec709329e 100644 --- a/src/OrchardCore.Modules/OrchardCore.Layers/Recipes/LayerStep.cs +++ b/src/OrchardCore.Modules/OrchardCore.Layers/Recipes/LayerStep.cs @@ -3,10 +3,8 @@ using System.Linq; using System.Text.Json; using System.Text.Json.Nodes; -using System.Text.Json.Serialization; using System.Threading.Tasks; using Microsoft.Extensions.Options; -using OrchardCore.Json; using OrchardCore.Layers.Models; using OrchardCore.Layers.Services; using OrchardCore.Recipes.Models; @@ -32,17 +30,13 @@ public LayerStep( IRuleMigrator ruleMigrator, IConditionIdGenerator conditionIdGenerator, IEnumerable factories, - IOptions derivedTypesOptions) + IOptions serializationOptions) { _layerService = layerService; _ruleMigrator = ruleMigrator; _conditionIdGenerator = conditionIdGenerator; _factories = factories; - - _serializationOptions = new() - { - TypeInfoResolver = new PolymorphicJsonTypeInfoResolver(derivedTypesOptions.Value) - }; + _serializationOptions = serializationOptions.Value; } public async Task ExecuteAsync(RecipeExecutionContext context) diff --git a/src/OrchardCore.Modules/OrchardCore.Lists/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Lists/Startup.cs index c2c99f1bc04..1e306ffbbaa 100644 --- a/src/OrchardCore.Modules/OrchardCore.Lists/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Lists/Startup.cs @@ -3,8 +3,6 @@ using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Routing; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Options; -using OrchardCore.Admin; using OrchardCore.AdminMenu; using OrchardCore.ContentLocalization.Handlers; using OrchardCore.ContentLocalization.Models; diff --git a/src/OrchardCore.Modules/OrchardCore.Media.AmazonS3/Controllers/AdminController.cs b/src/OrchardCore.Modules/OrchardCore.Media.AmazonS3/Controllers/AdminController.cs index 31c67894a66..3db2145da07 100644 --- a/src/OrchardCore.Modules/OrchardCore.Media.AmazonS3/Controllers/AdminController.cs +++ b/src/OrchardCore.Modules/OrchardCore.Media.AmazonS3/Controllers/AdminController.cs @@ -1,6 +1,4 @@ -using System; using System.Linq; -using System.Text; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/src/OrchardCore.Modules/OrchardCore.Media.Azure/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Media.Azure/Startup.cs index 513fc37613a..435dc5f42cb 100644 --- a/src/OrchardCore.Modules/OrchardCore.Media.Azure/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Media.Azure/Startup.cs @@ -1,15 +1,12 @@ using System; using System.IO; -using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Routing; using Microsoft.AspNetCore.StaticFiles; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; -using OrchardCore.Admin; using OrchardCore.Environment.Shell; using OrchardCore.Environment.Shell.Configuration; using OrchardCore.FileStorage; @@ -18,7 +15,6 @@ using OrchardCore.Media.Core.Events; using OrchardCore.Media.Events; using OrchardCore.Modules; -using OrchardCore.Mvc.Core.Utilities; using OrchardCore.Navigation; using OrchardCore.Security.Permissions; diff --git a/src/OrchardCore.Modules/OrchardCore.Media/Deployment/AllMediaProfilesDeploymentSource.cs b/src/OrchardCore.Modules/OrchardCore.Media/Deployment/AllMediaProfilesDeploymentSource.cs index 6c88cdf7683..0c64a52b54b 100644 --- a/src/OrchardCore.Modules/OrchardCore.Media/Deployment/AllMediaProfilesDeploymentSource.cs +++ b/src/OrchardCore.Modules/OrchardCore.Media/Deployment/AllMediaProfilesDeploymentSource.cs @@ -16,9 +16,7 @@ public AllMediaProfilesDeploymentSource(MediaProfilesManager mediaProfilesManage public async Task ProcessDeploymentStepAsync(DeploymentStep step, DeploymentPlanResult result) { - var allMediaProfilesStep = step as AllMediaProfilesDeploymentStep; - - if (allMediaProfilesStep == null) + if (step is not AllMediaProfilesDeploymentStep) { return; } diff --git a/src/OrchardCore.Modules/OrchardCore.Media/Migrations.cs b/src/OrchardCore.Modules/OrchardCore.Media/Migrations.cs index bc35f2ceaa2..f1e1f87a8c2 100644 --- a/src/OrchardCore.Modules/OrchardCore.Media/Migrations.cs +++ b/src/OrchardCore.Modules/OrchardCore.Media/Migrations.cs @@ -13,7 +13,9 @@ public class Migrations : DataMigration private readonly IContentDefinitionManager _contentDefinitionManager; private readonly ShellDescriptor _shellDescriptor; - public Migrations(IContentDefinitionManager contentDefinitionManager, ShellDescriptor shellDescriptor) + public Migrations( + IContentDefinitionManager contentDefinitionManager, + ShellDescriptor shellDescriptor) { _contentDefinitionManager = contentDefinitionManager; _shellDescriptor = shellDescriptor; diff --git a/src/OrchardCore.Modules/OrchardCore.Media/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Media/Startup.cs index aabbd807d39..58c196e338b 100644 --- a/src/OrchardCore.Modules/OrchardCore.Media/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Media/Startup.cs @@ -1,3 +1,5 @@ +using System; +using System.IO; using Fluid; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Builder; @@ -48,8 +50,6 @@ using SixLabors.ImageSharp.Web.DependencyInjection; using SixLabors.ImageSharp.Web.Middleware; using SixLabors.ImageSharp.Web.Providers; -using System; -using System.IO; namespace OrchardCore.Media { diff --git a/src/OrchardCore.Modules/OrchardCore.Microsoft.Authentication/Deployment/AzureADDeploymentSource.cs b/src/OrchardCore.Modules/OrchardCore.Microsoft.Authentication/Deployment/AzureADDeploymentSource.cs index ce399d0b817..a252c36473d 100644 --- a/src/OrchardCore.Modules/OrchardCore.Microsoft.Authentication/Deployment/AzureADDeploymentSource.cs +++ b/src/OrchardCore.Modules/OrchardCore.Microsoft.Authentication/Deployment/AzureADDeploymentSource.cs @@ -1,3 +1,4 @@ +using System.Text.Json; using System.Text.Json.Nodes; using System.Threading.Tasks; using OrchardCore.Deployment; @@ -17,9 +18,7 @@ public AzureADDeploymentSource(IAzureADService azureADService) public async Task ProcessDeploymentStepAsync(DeploymentStep step, DeploymentPlanResult result) { - var azureADStep = step as AzureADDeploymentStep; - - if (azureADStep == null) + if (step is not AzureADDeploymentStep azureADStep) { return; } @@ -28,7 +27,7 @@ public async Task ProcessDeploymentStepAsync(DeploymentStep step, DeploymentPlan var obj = new JsonObject { ["name"] = nameof(AzureADSettings) }; - obj.Merge(JObject.FromObject(settings)); + obj.Merge(JObject.FromObject(settings, JOptions.Default)); result.Steps.Add(obj); } diff --git a/src/OrchardCore.Modules/OrchardCore.OpenId/Recipes/OpenIdServerSettingsStep.cs b/src/OrchardCore.Modules/OrchardCore.OpenId/Recipes/OpenIdServerSettingsStep.cs index fc40623cb37..91f5c8b8d4a 100644 --- a/src/OrchardCore.Modules/OrchardCore.OpenId/Recipes/OpenIdServerSettingsStep.cs +++ b/src/OrchardCore.Modules/OrchardCore.OpenId/Recipes/OpenIdServerSettingsStep.cs @@ -17,7 +17,9 @@ public class OpenIdServerSettingsStep : IRecipeStepHandler private readonly IOpenIdServerService _serverService; public OpenIdServerSettingsStep(IOpenIdServerService serverService) - => _serverService = serverService; + { + _serverService = serverService; + } public async Task ExecuteAsync(RecipeExecutionContext context) { diff --git a/src/OrchardCore.Modules/OrchardCore.OpenId/Recipes/OpenIdValidationSettingsStep.cs b/src/OrchardCore.Modules/OrchardCore.OpenId/Recipes/OpenIdValidationSettingsStep.cs index e305181a7ca..fbf75ec3595 100644 --- a/src/OrchardCore.Modules/OrchardCore.OpenId/Recipes/OpenIdValidationSettingsStep.cs +++ b/src/OrchardCore.Modules/OrchardCore.OpenId/Recipes/OpenIdValidationSettingsStep.cs @@ -15,8 +15,11 @@ public class OpenIdValidationSettingsStep : IRecipeStepHandler { private readonly IOpenIdValidationService _validationService; - public OpenIdValidationSettingsStep(IOpenIdValidationService validationService) - => _validationService = validationService; + public OpenIdValidationSettingsStep( + IOpenIdValidationService validationService) + { + _validationService = validationService; + } public async Task ExecuteAsync(RecipeExecutionContext context) { diff --git a/src/OrchardCore.Modules/OrchardCore.OpenId/Recipes/OpenIdValidationSettingsStepModel.cs b/src/OrchardCore.Modules/OrchardCore.OpenId/Recipes/OpenIdValidationSettingsStepModel.cs index 729fdfef66f..deb28ced670 100644 --- a/src/OrchardCore.Modules/OrchardCore.OpenId/Recipes/OpenIdValidationSettingsStepModel.cs +++ b/src/OrchardCore.Modules/OrchardCore.OpenId/Recipes/OpenIdValidationSettingsStepModel.cs @@ -2,11 +2,12 @@ namespace OrchardCore.OpenId.Recipes { public class OpenIdValidationSettingsStepModel { - public string MetadataAddress { get; set; } + public string Audience { get; set; } public string Authority { get; set; } + public bool DisableTokenTypeValidation { get; set; } public string Tenant { get; set; } diff --git a/src/OrchardCore.Modules/OrchardCore.OpenId/Services/OpenIdClientService.cs b/src/OrchardCore.Modules/OrchardCore.OpenId/Services/OpenIdClientService.cs index 6fad5099a0b..af48416387c 100644 --- a/src/OrchardCore.Modules/OrchardCore.OpenId/Services/OpenIdClientService.cs +++ b/src/OrchardCore.Modules/OrchardCore.OpenId/Services/OpenIdClientService.cs @@ -13,6 +13,7 @@ namespace OrchardCore.OpenId.Services public class OpenIdClientService : IOpenIdClientService { private readonly ISiteService _siteService; + protected readonly IStringLocalizer S; public OpenIdClientService( diff --git a/src/OrchardCore.Modules/OrchardCore.OpenId/Services/OpenIdServerService.cs b/src/OrchardCore.Modules/OrchardCore.OpenId/Services/OpenIdServerService.cs index 81b6f398c94..381f4185c9c 100644 --- a/src/OrchardCore.Modules/OrchardCore.OpenId/Services/OpenIdServerService.cs +++ b/src/OrchardCore.Modules/OrchardCore.OpenId/Services/OpenIdServerService.cs @@ -7,6 +7,7 @@ using System.Runtime.InteropServices; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; +using System.Text.Json; using System.Text.Json.Nodes; using System.Threading.Tasks; using Microsoft.AspNetCore.DataProtection; @@ -29,6 +30,7 @@ public class OpenIdServerService : IOpenIdServerService private readonly IOptionsMonitor _shellOptions; private readonly ShellSettings _shellSettings; private readonly ISiteService _siteService; + protected readonly IStringLocalizer S; public OpenIdServerService( @@ -65,7 +67,7 @@ private OpenIdServerSettings GetSettingsFromContainer(ISite container) { if (container.Properties.TryGetPropertyValue(nameof(OpenIdServerSettings), out var settings)) { - return settings.ToObject(); + return settings.ToObject(JOptions.Default); } // If the OpenID server settings haven't been populated yet, the authorization, @@ -89,7 +91,7 @@ public async Task UpdateSettingsAsync(OpenIdServerSettings settings) ArgumentNullException.ThrowIfNull(settings); var container = await _siteService.LoadSiteSettingsAsync(); - container.Properties[nameof(OpenIdServerSettings)] = JObject.FromObject(settings); + container.Properties[nameof(OpenIdServerSettings)] = JObject.FromObject(settings, JOptions.Default); await _siteService.UpdateSiteSettingsAsync(container); } diff --git a/src/OrchardCore.Modules/OrchardCore.OpenId/Services/OpenIdValidationService.cs b/src/OrchardCore.Modules/OrchardCore.OpenId/Services/OpenIdValidationService.cs index 4b17a6d5887..52fbef3f6d3 100644 --- a/src/OrchardCore.Modules/OrchardCore.OpenId/Services/OpenIdValidationService.cs +++ b/src/OrchardCore.Modules/OrchardCore.OpenId/Services/OpenIdValidationService.cs @@ -22,6 +22,7 @@ public class OpenIdValidationService : IOpenIdValidationService private readonly ShellSettings _shellSettings; private readonly IShellHost _shellHost; private readonly ISiteService _siteService; + protected readonly IStringLocalizer S; public OpenIdValidationService( diff --git a/src/OrchardCore.Modules/OrchardCore.OpenId/Settings/OpenIdValidationSettings.cs b/src/OrchardCore.Modules/OrchardCore.OpenId/Settings/OpenIdValidationSettings.cs index 3aacb8406de..873bd399c00 100644 --- a/src/OrchardCore.Modules/OrchardCore.OpenId/Settings/OpenIdValidationSettings.cs +++ b/src/OrchardCore.Modules/OrchardCore.OpenId/Settings/OpenIdValidationSettings.cs @@ -9,6 +9,5 @@ public class OpenIdValidationSettings public bool DisableTokenTypeValidation { get; set; } public string Tenant { get; set; } public Uri MetadataAddress { get; set; } - } } diff --git a/src/OrchardCore.Modules/OrchardCore.OpenId/Startup.cs b/src/OrchardCore.Modules/OrchardCore.OpenId/Startup.cs index 4b011821039..709b4fc4cd6 100644 --- a/src/OrchardCore.Modules/OrchardCore.OpenId/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.OpenId/Startup.cs @@ -1,3 +1,8 @@ +using System; +using System.ComponentModel.DataAnnotations; +using System.Diagnostics; +using System.Linq; +using System.Threading.Tasks; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication.OpenIdConnect; using Microsoft.AspNetCore.Builder; @@ -29,11 +34,6 @@ using OrchardCore.Security; using OrchardCore.Security.Permissions; using OrchardCore.Settings; -using System; -using System.ComponentModel.DataAnnotations; -using System.Diagnostics; -using System.Linq; -using System.Threading.Tasks; namespace OrchardCore.OpenId { diff --git a/src/OrchardCore.Modules/OrchardCore.Placements/Deployment/PlacementsDeploymentSource.cs b/src/OrchardCore.Modules/OrchardCore.Placements/Deployment/PlacementsDeploymentSource.cs index f2c92873ab3..be178f4910b 100644 --- a/src/OrchardCore.Modules/OrchardCore.Placements/Deployment/PlacementsDeploymentSource.cs +++ b/src/OrchardCore.Modules/OrchardCore.Placements/Deployment/PlacementsDeploymentSource.cs @@ -1,5 +1,7 @@ +using System.Text.Json; using System.Text.Json.Nodes; using System.Threading.Tasks; +using Microsoft.Extensions.Options; using OrchardCore.Deployment; using OrchardCore.Placements.Services; @@ -8,17 +10,19 @@ namespace OrchardCore.Placements.Deployment public class PlacementsDeploymentSource : IDeploymentSource { private readonly PlacementsManager _placementsManager; + private readonly JsonSerializerOptions _jsonSerializerOptions; - public PlacementsDeploymentSource(PlacementsManager placementsManager) + public PlacementsDeploymentSource( + PlacementsManager placementsManager, + IOptions jsonSerializerOptions) { _placementsManager = placementsManager; + _jsonSerializerOptions = jsonSerializerOptions.Value; } public async Task ProcessDeploymentStepAsync(DeploymentStep step, DeploymentPlanResult result) { - var placementsStep = step as PlacementsDeploymentStep; - - if (placementsStep == null) + if (step is not PlacementsDeploymentStep) { return; } @@ -28,7 +32,7 @@ public async Task ProcessDeploymentStepAsync(DeploymentStep step, DeploymentPlan foreach (var placement in placements) { - placementObjects[placement.Key] = JArray.FromObject(placement.Value); + placementObjects[placement.Key] = JArray.FromObject(placement.Value, _jsonSerializerOptions); } result.Steps.Add(new JsonObject diff --git a/src/OrchardCore.Modules/OrchardCore.Queries/Deployment/AllQueriesDeploymentSource.cs b/src/OrchardCore.Modules/OrchardCore.Queries/Deployment/AllQueriesDeploymentSource.cs index 7c7b4643f07..7ecdc9e65a8 100644 --- a/src/OrchardCore.Modules/OrchardCore.Queries/Deployment/AllQueriesDeploymentSource.cs +++ b/src/OrchardCore.Modules/OrchardCore.Queries/Deployment/AllQueriesDeploymentSource.cs @@ -1,5 +1,7 @@ +using System.Text.Json; using System.Text.Json.Nodes; using System.Threading.Tasks; +using Microsoft.Extensions.Options; using OrchardCore.Deployment; namespace OrchardCore.Queries.Deployment @@ -7,10 +9,14 @@ namespace OrchardCore.Queries.Deployment public class AllQueriesDeploymentSource : IDeploymentSource { private readonly IQueryManager _queryManager; + private readonly JsonSerializerOptions _jsonSerializerOptions; - public AllQueriesDeploymentSource(IQueryManager queryManager) + public AllQueriesDeploymentSource( + IQueryManager queryManager, + IOptions jsonSerializerOptions) { _queryManager = queryManager; + _jsonSerializerOptions = jsonSerializerOptions.Value; } public async Task ProcessDeploymentStepAsync(DeploymentStep step, DeploymentPlanResult result) @@ -27,7 +33,7 @@ public async Task ProcessDeploymentStepAsync(DeploymentStep step, DeploymentPlan result.Steps.Add(new JsonObject { ["name"] = "Queries", - ["Queries"] = JArray.FromObject(queries), + ["Queries"] = JArray.FromObject(queries, _jsonSerializerOptions), }); } } diff --git a/src/OrchardCore.Modules/OrchardCore.Queries/Recipes/QueryStep.cs b/src/OrchardCore.Modules/OrchardCore.Queries/Recipes/QueryStep.cs index 56f988b7913..e46b2baaf17 100644 --- a/src/OrchardCore.Modules/OrchardCore.Queries/Recipes/QueryStep.cs +++ b/src/OrchardCore.Modules/OrchardCore.Queries/Recipes/QueryStep.cs @@ -1,9 +1,11 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Text.Json; using System.Text.Json.Nodes; using System.Threading.Tasks; using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; using OrchardCore.Recipes.Models; using OrchardCore.Recipes.Services; @@ -16,15 +18,18 @@ public class QueryStep : IRecipeStepHandler { private readonly IQueryManager _queryManager; private readonly IEnumerable _querySources; + private readonly JsonSerializerOptions _jsonSerializerOptions; private readonly ILogger _logger; public QueryStep( IQueryManager queryManager, IEnumerable querySources, + IOptions jsonSerializerOptions, ILogger logger) { _queryManager = queryManager; _querySources = querySources; + _jsonSerializerOptions = jsonSerializerOptions.Value; _logger = logger; } @@ -35,7 +40,7 @@ public async Task ExecuteAsync(RecipeExecutionContext context) return; } - var model = context.Step.ToObject(); + var model = context.Step.ToObject(_jsonSerializerOptions); foreach (var token in model.Queries.Cast()) { @@ -49,7 +54,7 @@ public async Task ExecuteAsync(RecipeExecutionContext context) continue; } - var query = token.ToObject(sample.GetType()) as Query; + var query = token.ToObject(sample.GetType(), _jsonSerializerOptions) as Query; await _queryManager.SaveQueryAsync(query.Name, query); } } diff --git a/src/OrchardCore.Modules/OrchardCore.Queries/Sql/SqlQuerySource.cs b/src/OrchardCore.Modules/OrchardCore.Queries/Sql/SqlQuerySource.cs index 555b43c186c..dac4c8d7120 100644 --- a/src/OrchardCore.Modules/OrchardCore.Queries/Sql/SqlQuerySource.cs +++ b/src/OrchardCore.Modules/OrchardCore.Queries/Sql/SqlQuerySource.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Text.Json; using System.Text.Json.Nodes; using System.Threading.Tasks; using Dapper; @@ -19,17 +20,20 @@ public class SqlQuerySource : IQuerySource private readonly ILiquidTemplateManager _liquidTemplateManager; private readonly IDbConnectionAccessor _dbConnectionAccessor; private readonly ISession _session; + private readonly JsonSerializerOptions _jsonSerializerOptions; private readonly TemplateOptions _templateOptions; public SqlQuerySource( ILiquidTemplateManager liquidTemplateManager, IDbConnectionAccessor dbConnectionAccessor, ISession session, + IOptions jsonSerializerOptions, IOptions templateOptions) { _liquidTemplateManager = liquidTemplateManager; _dbConnectionAccessor = dbConnectionAccessor; _session = session; + _jsonSerializerOptions = jsonSerializerOptions.Value; _templateOptions = templateOptions.Value; } @@ -82,7 +86,7 @@ public async Task ExecuteQueryAsync(Query query, IDictionary(); foreach (var document in queryResults) { - results.Add(JObject.FromObject(document)); + results.Add(JObject.FromObject(document, _jsonSerializerOptions)); } sqlQueryResults.Items = results; diff --git a/src/OrchardCore.Modules/OrchardCore.Roles/Deployment/AllRolesDeploymentSource.cs b/src/OrchardCore.Modules/OrchardCore.Roles/Deployment/AllRolesDeploymentSource.cs index 80bf4a3c077..49a769415fa 100644 --- a/src/OrchardCore.Modules/OrchardCore.Roles/Deployment/AllRolesDeploymentSource.cs +++ b/src/OrchardCore.Modules/OrchardCore.Roles/Deployment/AllRolesDeploymentSource.cs @@ -16,7 +16,9 @@ public class AllRolesDeploymentSource : IDeploymentSource private readonly RoleManager _roleManager; private readonly IRoleService _roleService; - public AllRolesDeploymentSource(RoleManager roleManager, IRoleService roleService) + public AllRolesDeploymentSource( + RoleManager roleManager, + IRoleService roleService) { _roleManager = roleManager; _roleService = roleService; diff --git a/src/OrchardCore.Modules/OrchardCore.Roles/Recipes/RolesStep.cs b/src/OrchardCore.Modules/OrchardCore.Roles/Recipes/RolesStep.cs index 22368501705..133d4bcb525 100644 --- a/src/OrchardCore.Modules/OrchardCore.Roles/Recipes/RolesStep.cs +++ b/src/OrchardCore.Modules/OrchardCore.Roles/Recipes/RolesStep.cs @@ -34,7 +34,9 @@ public async Task ExecuteAsync(RecipeExecutionContext context) foreach (var importedRole in model.Roles) { if (string.IsNullOrWhiteSpace(importedRole.Name)) + { continue; + } var role = (Role)await _roleManager.FindByNameAsync(importedRole.Name); var isNewRole = role == null; diff --git a/src/OrchardCore.Modules/OrchardCore.Search.Elasticsearch/Drivers/ContentPickerFieldElasticEditorSettingsDriver.cs b/src/OrchardCore.Modules/OrchardCore.Search.Elasticsearch/Drivers/ContentPickerFieldElasticEditorSettingsDriver.cs index f8e99254417..b0bdf7a7a52 100644 --- a/src/OrchardCore.Modules/OrchardCore.Search.Elasticsearch/Drivers/ContentPickerFieldElasticEditorSettingsDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Search.Elasticsearch/Drivers/ContentPickerFieldElasticEditorSettingsDriver.cs @@ -13,7 +13,8 @@ public class ContentPickerFieldElasticEditorSettingsDriver : ContentPartFieldDef { private readonly ElasticIndexSettingsService _elasticIndexSettingsService; - public ContentPickerFieldElasticEditorSettingsDriver(ElasticIndexSettingsService elasticIndexSettingsService) + public ContentPickerFieldElasticEditorSettingsDriver( + ElasticIndexSettingsService elasticIndexSettingsService) { _elasticIndexSettingsService = elasticIndexSettingsService; } diff --git a/src/OrchardCore.Modules/OrchardCore.Search.Elasticsearch/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Search.Elasticsearch/Startup.cs index bcdb989d4ff..2bb7960ad40 100644 --- a/src/OrchardCore.Modules/OrchardCore.Search.Elasticsearch/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Search.Elasticsearch/Startup.cs @@ -1,3 +1,5 @@ +using System.Text.Json; +using System.Text.Json.Nodes; using Microsoft.AspNetCore.Authorization; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -23,8 +25,6 @@ using OrchardCore.Search.Lucene.Handler; using OrchardCore.Security.Permissions; using OrchardCore.Settings; -using System.Text.Json; -using System.Text.Json.Nodes; namespace OrchardCore.Search.Elasticsearch { diff --git a/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Deployment/LuceneIndexDeploymentSource.cs b/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Deployment/LuceneIndexDeploymentSource.cs index 6d0b56f9339..a2c024f00c8 100644 --- a/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Deployment/LuceneIndexDeploymentSource.cs +++ b/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Deployment/LuceneIndexDeploymentSource.cs @@ -18,9 +18,7 @@ public LuceneIndexDeploymentSource(LuceneIndexSettingsService luceneIndexSetting public async Task ProcessDeploymentStepAsync(DeploymentStep step, DeploymentPlanResult result) { - var luceneIndexStep = step as LuceneIndexDeploymentStep; - - if (luceneIndexStep == null) + if (step is not LuceneIndexDeploymentStep luceneIndexStep) { return; } diff --git a/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Deployment/LuceneSettingsDeploymentSource.cs b/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Deployment/LuceneSettingsDeploymentSource.cs index 1dd1a929c3e..40191ae032d 100644 --- a/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Deployment/LuceneSettingsDeploymentSource.cs +++ b/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Deployment/LuceneSettingsDeploymentSource.cs @@ -15,9 +15,7 @@ public LuceneSettingsDeploymentSource(LuceneIndexingService luceneIndexingServic public async Task ProcessDeploymentStepAsync(DeploymentStep step, DeploymentPlanResult result) { - var luceneSettingsStep = step as LuceneSettingsDeploymentStep; - - if (luceneSettingsStep == null) + if (step is not LuceneSettingsDeploymentStep) { return; } diff --git a/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Recipes/LuceneIndexRebuildStep.cs b/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Recipes/LuceneIndexRebuildStep.cs index 3131c9a8638..c3dfae69f51 100644 --- a/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Recipes/LuceneIndexRebuildStep.cs +++ b/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Recipes/LuceneIndexRebuildStep.cs @@ -1,8 +1,10 @@ using System; using System.Linq; +using System.Text.Json; using System.Text.Json.Nodes; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; using OrchardCore.BackgroundJobs; using OrchardCore.Recipes.Models; using OrchardCore.Recipes.Services; @@ -10,7 +12,7 @@ namespace OrchardCore.Search.Lucene.Recipes { /// - /// This recipe step rebuilds a lucene index. + /// This recipe step rebuilds a Lucene index. /// public class LuceneIndexRebuildStep : IRecipeStepHandler { diff --git a/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Startup.cs index c1131e3a7b4..9d06c767f65 100644 --- a/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Startup.cs @@ -1,3 +1,4 @@ +using System.Text.Json.Serialization; using Lucene.Net.Analysis.Standard; using Microsoft.AspNetCore.Authorization; using Microsoft.Extensions.DependencyInjection; @@ -24,7 +25,6 @@ using OrchardCore.Search.Lucene.Settings; using OrchardCore.Security.Permissions; using OrchardCore.Settings; -using System.Text.Json.Serialization; namespace OrchardCore.Search.Lucene { diff --git a/src/OrchardCore.Modules/OrchardCore.Search/Deployment/SearchSettingsDeploymentSource.cs b/src/OrchardCore.Modules/OrchardCore.Search/Deployment/SearchSettingsDeploymentSource.cs index 392dc578ab3..a461a61f723 100644 --- a/src/OrchardCore.Modules/OrchardCore.Search/Deployment/SearchSettingsDeploymentSource.cs +++ b/src/OrchardCore.Modules/OrchardCore.Search/Deployment/SearchSettingsDeploymentSource.cs @@ -17,9 +17,7 @@ public SearchSettingsDeploymentSource(ISiteService site) public async Task ProcessDeploymentStepAsync(DeploymentStep step, DeploymentPlanResult result) { - var searchSettingsStep = step as SearchSettingsDeploymentStep; - - if (searchSettingsStep == null) + if (step is not SearchSettingsDeploymentStep) { return; } diff --git a/src/OrchardCore.Modules/OrchardCore.Settings/Deployment/SiteSettingsDeploymentSource.cs b/src/OrchardCore.Modules/OrchardCore.Settings/Deployment/SiteSettingsDeploymentSource.cs index 8a09407607a..3a163c5705d 100644 --- a/src/OrchardCore.Modules/OrchardCore.Settings/Deployment/SiteSettingsDeploymentSource.cs +++ b/src/OrchardCore.Modules/OrchardCore.Settings/Deployment/SiteSettingsDeploymentSource.cs @@ -16,8 +16,7 @@ public SiteSettingsDeploymentSource(ISiteService siteService) public async Task ProcessDeploymentStepAsync(DeploymentStep step, DeploymentPlanResult result) { - var settingsStep = step as SiteSettingsDeploymentStep; - if (settingsStep == null) + if (step is not SiteSettingsDeploymentStep settingsStep) { return; } diff --git a/src/OrchardCore.Modules/OrchardCore.Shortcodes/Deployment/AllShortcodeTemplatesDeploymentSource.cs b/src/OrchardCore.Modules/OrchardCore.Shortcodes/Deployment/AllShortcodeTemplatesDeploymentSource.cs index 5c4eaf2d69c..277093f5b0d 100644 --- a/src/OrchardCore.Modules/OrchardCore.Shortcodes/Deployment/AllShortcodeTemplatesDeploymentSource.cs +++ b/src/OrchardCore.Modules/OrchardCore.Shortcodes/Deployment/AllShortcodeTemplatesDeploymentSource.cs @@ -16,9 +16,7 @@ public AllShortcodeTemplatesDeploymentSource(ShortcodeTemplatesManager templates public async Task ProcessDeploymentStepAsync(DeploymentStep step, DeploymentPlanResult result) { - var allTemplatesStep = step as AllShortcodeTemplatesDeploymentStep; - - if (allTemplatesStep == null) + if (step is not AllShortcodeTemplatesDeploymentStep) { return; } diff --git a/src/OrchardCore.Modules/OrchardCore.Sitemaps/Recipes/SitemapsStep.cs b/src/OrchardCore.Modules/OrchardCore.Sitemaps/Recipes/SitemapsStep.cs index edfc620e226..340ae02b6e3 100644 --- a/src/OrchardCore.Modules/OrchardCore.Sitemaps/Recipes/SitemapsStep.cs +++ b/src/OrchardCore.Modules/OrchardCore.Sitemaps/Recipes/SitemapsStep.cs @@ -16,7 +16,8 @@ public class SitemapsStep : IRecipeStepHandler { private readonly ISitemapManager _sitemapManager; - public SitemapsStep(ISitemapManager sitemapManager) + public SitemapsStep( + ISitemapManager sitemapManager) { _sitemapManager = sitemapManager; } diff --git a/src/OrchardCore.Modules/OrchardCore.Sitemaps/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Sitemaps/Startup.cs index 3ea66075970..139db9fdec1 100644 --- a/src/OrchardCore.Modules/OrchardCore.Sitemaps/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Sitemaps/Startup.cs @@ -1,3 +1,5 @@ +using System; +using System.Text.Json.Serialization; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Routing; using Microsoft.Extensions.DependencyInjection; @@ -23,8 +25,6 @@ using OrchardCore.Sitemaps.Recipes; using OrchardCore.Sitemaps.Routing; using OrchardCore.Sitemaps.Services; -using System; -using System.Text.Json.Serialization; namespace OrchardCore.Sitemaps { diff --git a/src/OrchardCore.Modules/OrchardCore.Spatial/Drivers/GeoPointFieldSettingsDriver.cs b/src/OrchardCore.Modules/OrchardCore.Spatial/Drivers/GeoPointFieldSettingsDriver.cs index d33fcdce8c1..aa314a4afb2 100644 --- a/src/OrchardCore.Modules/OrchardCore.Spatial/Drivers/GeoPointFieldSettingsDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Spatial/Drivers/GeoPointFieldSettingsDriver.cs @@ -18,8 +18,7 @@ public override IDisplayResult Edit(ContentPartFieldDefinition partFieldDefiniti model.Hint = settings.Hint; model.Required = settings.Required; - }) - .Location("Content"); + }).Location("Content"); } public override async Task UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context) diff --git a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Controllers/AdminController.cs b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Controllers/AdminController.cs index 08b5ad0b717..ffc2d45e3fc 100644 --- a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Controllers/AdminController.cs +++ b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Controllers/AdminController.cs @@ -1,10 +1,12 @@ using System.Linq; +using System.Text.Json; using System.Text.Json.Nodes; using System.Text.Json.Settings; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Localization; +using Microsoft.Extensions.Options; using OrchardCore.Admin; using OrchardCore.ContentManagement; using OrchardCore.ContentManagement.Display; @@ -25,10 +27,11 @@ public class AdminController : Controller private readonly IContentItemDisplayManager _contentItemDisplayManager; private readonly IContentDefinitionManager _contentDefinitionManager; private readonly ISession _session; - protected readonly IHtmlLocalizer H; private readonly INotifier _notifier; private readonly IUpdateModelAccessor _updateModelAccessor; + protected readonly IHtmlLocalizer H; + public AdminController( ISession session, IContentManager contentManager, @@ -182,7 +185,7 @@ public async Task Edit(string taxonomyContentItemId, string taxon } // Look for the target taxonomy item in the hierarchy. - JsonObject taxonomyItem = FindTaxonomyItem((JsonObject)taxonomy.As().Content, taxonomyItemId); + var taxonomyItem = FindTaxonomyItem((JsonObject)taxonomy.As().Content, taxonomyItemId); // Couldn't find targeted taxonomy item. if (taxonomyItem == null) @@ -235,7 +238,7 @@ public async Task EditPost(string taxonomyContentItemId, string t } // Look for the target taxonomy item in the hierarchy. - JsonObject taxonomyItem = FindTaxonomyItem((JsonObject)taxonomy.As().Content, taxonomyItemId); + var taxonomyItem = FindTaxonomyItem((JsonObject)taxonomy.As().Content, taxonomyItemId); // Couldn't find targeted taxonomy item. if (taxonomyItem == null) diff --git a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyContentsAdminListDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyContentsAdminListDisplayDriver.cs index 865ea3d37a4..4e3cb88a468 100644 --- a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyContentsAdminListDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyContentsAdminListDisplayDriver.cs @@ -28,6 +28,7 @@ public class TaxonomyContentsAdminListDisplayDriver : DisplayDriver { private readonly IContentManager _contentManager; + protected readonly IStringLocalizer S; public TaxonomyFieldTagsDisplayDriver( IContentManager contentManager, - IStringLocalizer s) + IStringLocalizer stringLocalizer) { _contentManager = contentManager; - S = s; + S = stringLocalizer; } public override IDisplayResult Display(TaxonomyField field, BuildFieldDisplayContext context) diff --git a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Indexing/TaxonomyIndex.cs b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Indexing/TaxonomyIndex.cs index a0500909d4e..2a48c14b072 100644 --- a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Indexing/TaxonomyIndex.cs +++ b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Indexing/TaxonomyIndex.cs @@ -29,7 +29,8 @@ public class TaxonomyIndexProvider : IndexProvider, IScopedIndexPro private readonly HashSet _ignoredTypes = []; private IContentDefinitionManager _contentDefinitionManager; - public TaxonomyIndexProvider(IServiceProvider serviceProvider) + public TaxonomyIndexProvider( + IServiceProvider serviceProvider) { _serviceProvider = serviceProvider; } diff --git a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Settings/TaxonomyFieldSettingsDriver.cs b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Settings/TaxonomyFieldSettingsDriver.cs index e70cc65b180..d1d6bc215dc 100644 --- a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Settings/TaxonomyFieldSettingsDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Settings/TaxonomyFieldSettingsDriver.cs @@ -21,8 +21,7 @@ public override IDisplayResult Edit(ContentPartFieldDefinition partFieldDefiniti model.Unique = settings.Unique; model.LeavesOnly = settings.LeavesOnly; model.Open = settings.Open; - }) - .Location("Content"); + }).Location("Content"); } public override async Task UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context) diff --git a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Settings/TaxonomyFieldTagsEditorSettingsDriver.cs b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Settings/TaxonomyFieldTagsEditorSettingsDriver.cs index b40c5972991..654094f2d1b 100644 --- a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Settings/TaxonomyFieldTagsEditorSettingsDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Settings/TaxonomyFieldTagsEditorSettingsDriver.cs @@ -16,8 +16,7 @@ public override IDisplayResult Edit(ContentPartFieldDefinition partFieldDefiniti var settings = partFieldDefinition.Settings.ToObject(); model.Open = settings.Open; - }) - .Location("Content"); + }).Location("Content"); } public override async Task UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context) diff --git a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Startup.cs index 9add4f47987..48845159375 100644 --- a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Startup.cs @@ -1,3 +1,4 @@ +using System; using Fluid; using Microsoft.Extensions.DependencyInjection; using OrchardCore.Apis; @@ -28,7 +29,6 @@ using OrchardCore.Taxonomies.Services; using OrchardCore.Taxonomies.Settings; using OrchardCore.Taxonomies.ViewModels; -using System; namespace OrchardCore.Taxonomies { diff --git a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Views/Content.TermAdmin.cshtml b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Views/Content.TermAdmin.cshtml index 3f7a4ae7e53..fa6c90b4d0e 100644 --- a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Views/Content.TermAdmin.cshtml +++ b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Views/Content.TermAdmin.cshtml @@ -2,7 +2,6 @@ @inject OrchardCore.ContentManagement.Display.IContentItemDisplayManager ContentItemDisplayManager @inject OrchardCore.DisplayManagement.ModelBinding.IUpdateModelAccessor ModelUpdaterAccessor - @{ ContentItem contentItem = Model.ContentItem; var termsArray = (JsonArray)contentItem.Content.Terms; @@ -19,29 +18,29 @@ } @@ -62,5 +61,5 @@ } } - + diff --git a/src/OrchardCore.Modules/OrchardCore.Templates/Deployment/AllAdminTemplatesDeploymentSource.cs b/src/OrchardCore.Modules/OrchardCore.Templates/Deployment/AllAdminTemplatesDeploymentSource.cs index a7c3c0cd5c9..243f1d83879 100644 --- a/src/OrchardCore.Modules/OrchardCore.Templates/Deployment/AllAdminTemplatesDeploymentSource.cs +++ b/src/OrchardCore.Modules/OrchardCore.Templates/Deployment/AllAdminTemplatesDeploymentSource.cs @@ -18,9 +18,7 @@ public AllAdminTemplatesDeploymentSource(AdminTemplatesManager templatesManager) public async Task ProcessDeploymentStepAsync(DeploymentStep step, DeploymentPlanResult result) { - var allTemplatesStep = step as AllAdminTemplatesDeploymentStep; - - if (allTemplatesStep == null) + if (step is not AllAdminTemplatesDeploymentStep allTemplatesStep) { return; } diff --git a/src/OrchardCore.Modules/OrchardCore.Templates/Recipes/TemplateStep.cs b/src/OrchardCore.Modules/OrchardCore.Templates/Recipes/TemplateStep.cs index f2de0b831c5..0bfbc887fff 100644 --- a/src/OrchardCore.Modules/OrchardCore.Templates/Recipes/TemplateStep.cs +++ b/src/OrchardCore.Modules/OrchardCore.Templates/Recipes/TemplateStep.cs @@ -15,7 +15,8 @@ public class TemplateStep : IRecipeStepHandler { private readonly TemplatesManager _templatesManager; - public TemplateStep(TemplatesManager templatesManager) + public TemplateStep( + TemplatesManager templatesManager) { _templatesManager = templatesManager; } diff --git a/src/OrchardCore.Modules/OrchardCore.Tenants/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Tenants/Startup.cs index 470987bca65..7b64bf8fcf8 100644 --- a/src/OrchardCore.Modules/OrchardCore.Tenants/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Tenants/Startup.cs @@ -1,3 +1,5 @@ +using System; +using System.IO; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Routing; using Microsoft.Extensions.DependencyInjection; @@ -17,8 +19,6 @@ using OrchardCore.Tenants.Deployment; using OrchardCore.Tenants.Recipes; using OrchardCore.Tenants.Services; -using System; -using System.IO; namespace OrchardCore.Tenants { diff --git a/src/OrchardCore.Modules/OrchardCore.Users/Deployment/CustomUserSettingsDeploymentSource.cs b/src/OrchardCore.Modules/OrchardCore.Users/Deployment/CustomUserSettingsDeploymentSource.cs index ab00d50ab2e..06b53cf77e3 100644 --- a/src/OrchardCore.Modules/OrchardCore.Users/Deployment/CustomUserSettingsDeploymentSource.cs +++ b/src/OrchardCore.Modules/OrchardCore.Users/Deployment/CustomUserSettingsDeploymentSource.cs @@ -13,7 +13,9 @@ public class CustomUserSettingsDeploymentSource : IDeploymentSource private readonly CustomUserSettingsService _customUserSettingsService; private readonly ISession _session; - public CustomUserSettingsDeploymentSource(CustomUserSettingsService customUserSettingsService, ISession session) + public CustomUserSettingsDeploymentSource( + CustomUserSettingsService customUserSettingsService, + ISession session) { _customUserSettingsService = customUserSettingsService; _session = session; @@ -21,15 +23,14 @@ public CustomUserSettingsDeploymentSource(CustomUserSettingsService customUserSe public async Task ProcessDeploymentStepAsync(DeploymentStep step, DeploymentPlanResult result) { - var customUserSettingsStep = step as CustomUserSettingsDeploymentStep; - if (customUserSettingsStep == null) + if (step is not CustomUserSettingsDeploymentStep customUserSettingsStep) { return; } var settingsTypes = customUserSettingsStep.IncludeAll - ? (await _customUserSettingsService.GetAllSettingsTypesAsync()).ToList() - : (await _customUserSettingsService.GetSettingsTypesAsync(customUserSettingsStep.SettingsTypeNames)).ToList(); + ? (await _customUserSettingsService.GetAllSettingsTypesAsync()).ToArray() + : (await _customUserSettingsService.GetSettingsTypesAsync(customUserSettingsStep.SettingsTypeNames)).ToArray(); // Todo: check permissions for each settings type var userData = new JsonArray(); diff --git a/src/OrchardCore.Modules/OrchardCore.Users/Drivers/CustomUserSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Users/Drivers/CustomUserSettingsDisplayDriver.cs index e0a71092b96..7ae07d472aa 100644 --- a/src/OrchardCore.Modules/OrchardCore.Users/Drivers/CustomUserSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Users/Drivers/CustomUserSettingsDisplayDriver.cs @@ -1,10 +1,12 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Text.Json; using System.Text.Json.Nodes; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.Options; using OrchardCore.ContentManagement; using OrchardCore.ContentManagement.Display; using OrchardCore.ContentManagement.Metadata; diff --git a/src/OrchardCore.Modules/OrchardCore.Users/Models/UsersStepUserModel.cs b/src/OrchardCore.Modules/OrchardCore.Users/Models/UsersStepUserModel.cs index 5b38e5be2bc..f8cd2d4791a 100644 --- a/src/OrchardCore.Modules/OrchardCore.Users/Models/UsersStepUserModel.cs +++ b/src/OrchardCore.Modules/OrchardCore.Users/Models/UsersStepUserModel.cs @@ -25,6 +25,7 @@ public class UsersStepUserModel public string SecurityStamp { get; set; } public string ResetToken { get; set; } + public string PhoneNumber { get; set; } public bool PhoneNumberConfirmed { get; set; } diff --git a/src/OrchardCore.Modules/OrchardCore.Users/Services/CustomUserSettingsService.cs b/src/OrchardCore.Modules/OrchardCore.Users/Services/CustomUserSettingsService.cs index c9ada8479ed..029e8db97de 100644 --- a/src/OrchardCore.Modules/OrchardCore.Users/Services/CustomUserSettingsService.cs +++ b/src/OrchardCore.Modules/OrchardCore.Users/Services/CustomUserSettingsService.cs @@ -25,7 +25,7 @@ public CustomUserSettingsService( { _contentManager = contentManager; _contentDefinitionManager = contentDefinitionManager; - _settingsTypes = new Lazy>>(async () => await GetContentTypeAsync()); + _settingsTypes = new Lazy>>(GetContentTypeAsync); _session = session; } diff --git a/src/OrchardCore.Modules/OrchardCore.Users/Startup.cs b/src/OrchardCore.Modules/OrchardCore.Users/Startup.cs index d406e0555bb..dcaff32d83a 100644 --- a/src/OrchardCore.Modules/OrchardCore.Users/Startup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Users/Startup.cs @@ -13,7 +13,6 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Options; -using OrchardCore.Admin; using OrchardCore.Admin.Models; using OrchardCore.Data; using OrchardCore.Data.Migration; diff --git a/src/OrchardCore.Modules/OrchardCore.Users/TwoFactorAuthenticationStartup.cs b/src/OrchardCore.Modules/OrchardCore.Users/TwoFactorAuthenticationStartup.cs index 26de0d6b210..6c88617f953 100644 --- a/src/OrchardCore.Modules/OrchardCore.Users/TwoFactorAuthenticationStartup.cs +++ b/src/OrchardCore.Modules/OrchardCore.Users/TwoFactorAuthenticationStartup.cs @@ -1,3 +1,4 @@ +using System; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; @@ -14,7 +15,6 @@ using OrchardCore.Users.Filters; using OrchardCore.Users.Models; using OrchardCore.Users.Services; -using System; namespace OrchardCore.Users; diff --git a/src/OrchardCore.Modules/OrchardCore.Widgets/Controllers/AdminController.cs b/src/OrchardCore.Modules/OrchardCore.Widgets/Controllers/AdminController.cs index 588be470081..aa616ab6d58 100644 --- a/src/OrchardCore.Modules/OrchardCore.Widgets/Controllers/AdminController.cs +++ b/src/OrchardCore.Modules/OrchardCore.Widgets/Controllers/AdminController.cs @@ -1,3 +1,4 @@ +using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using OrchardCore.Admin; using OrchardCore.ContentManagement; @@ -6,7 +7,6 @@ using OrchardCore.DisplayManagement.ModelBinding; using OrchardCore.Widgets.Models; using OrchardCore.Widgets.ViewModels; -using System.Threading.Tasks; namespace OrchardCore.Widgets.Controllers { diff --git a/src/OrchardCore.Modules/OrchardCore.Workflows/Deployment/AllWorkflowTypeDeploymentSource.cs b/src/OrchardCore.Modules/OrchardCore.Workflows/Deployment/AllWorkflowTypeDeploymentSource.cs index 40e1bf881a5..c432d37790d 100644 --- a/src/OrchardCore.Modules/OrchardCore.Workflows/Deployment/AllWorkflowTypeDeploymentSource.cs +++ b/src/OrchardCore.Modules/OrchardCore.Workflows/Deployment/AllWorkflowTypeDeploymentSource.cs @@ -1,5 +1,7 @@ +using System.Text.Json; using System.Text.Json.Nodes; using System.Threading.Tasks; +using Microsoft.Extensions.Options; using OrchardCore.Deployment; using OrchardCore.Workflows.Services; @@ -8,17 +10,19 @@ namespace OrchardCore.Workflows.Deployment public class AllWorkflowTypeDeploymentSource : IDeploymentSource { private readonly IWorkflowTypeStore _workflowTypeStore; + private readonly JsonSerializerOptions _jsonSerializerOptions; - public AllWorkflowTypeDeploymentSource(IWorkflowTypeStore workflowTypeStore) + public AllWorkflowTypeDeploymentSource( + IWorkflowTypeStore workflowTypeStore, + IOptions jsonSerializerOptions) { _workflowTypeStore = workflowTypeStore; + _jsonSerializerOptions = jsonSerializerOptions.Value; } public async Task ProcessDeploymentStepAsync(DeploymentStep step, DeploymentPlanResult result) { - var allContentStep = step as AllWorkflowTypeDeploymentStep; - - if (allContentStep == null) + if (step is not AllWorkflowTypeDeploymentStep) { return; } @@ -32,7 +36,7 @@ public async Task ProcessDeploymentStepAsync(DeploymentStep step, DeploymentPlan foreach (var workflow in await _workflowTypeStore.ListAsync()) { - var objectData = JObject.FromObject(workflow); + var objectData = JObject.FromObject(workflow, _jsonSerializerOptions); // Don't serialize the Id as it could be interpreted as an updated object when added back to YesSql objectData.Remove(nameof(workflow.Id)); diff --git a/src/OrchardCore.Modules/OrchardCore.Workflows/Recipes/WorkflowTypeStep.cs b/src/OrchardCore.Modules/OrchardCore.Workflows/Recipes/WorkflowTypeStep.cs index a452ce70521..9064096a911 100644 --- a/src/OrchardCore.Modules/OrchardCore.Workflows/Recipes/WorkflowTypeStep.cs +++ b/src/OrchardCore.Modules/OrchardCore.Workflows/Recipes/WorkflowTypeStep.cs @@ -1,10 +1,12 @@ using System; using System.Linq; +using System.Text.Json; using System.Text.Json.Nodes; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Infrastructure; using Microsoft.AspNetCore.Mvc.Routing; +using Microsoft.Extensions.Options; using OrchardCore.Recipes.Models; using OrchardCore.Recipes.Services; using OrchardCore.Workflows.Http.Activities; @@ -19,15 +21,18 @@ public class WorkflowTypeStep : IRecipeStepHandler { private readonly IWorkflowTypeStore _workflowTypeStore; private readonly ISecurityTokenService _securityTokenService; + private readonly JsonSerializerOptions _jsonSerializerOptions; private readonly IUrlHelper _urlHelper; public WorkflowTypeStep(IWorkflowTypeStore workflowTypeStore, ISecurityTokenService securityTokenService, IActionContextAccessor actionContextAccessor, + IOptions jsonSerializerOptions, IUrlHelperFactory urlHelperFactory) { _workflowTypeStore = workflowTypeStore; _securityTokenService = securityTokenService; + _jsonSerializerOptions = jsonSerializerOptions.Value; _urlHelper = urlHelperFactory.GetUrlHelper(actionContextAccessor.ActionContext); } @@ -42,7 +47,7 @@ public async Task ExecuteAsync(RecipeExecutionContext context) foreach (var token in model.Data.Cast()) { - var workflow = token.ToObject(); + var workflow = token.ToObject(_jsonSerializerOptions); foreach (var activity in workflow.Activities.Where(a => a.Name == nameof(HttpRequestEvent))) { diff --git a/src/OrchardCore.Modules/OrchardCore.Workflows/Services/WorkflowManager.cs b/src/OrchardCore.Modules/OrchardCore.Workflows/Services/WorkflowManager.cs index 301096184a9..2e691299e54 100644 --- a/src/OrchardCore.Modules/OrchardCore.Workflows/Services/WorkflowManager.cs +++ b/src/OrchardCore.Modules/OrchardCore.Workflows/Services/WorkflowManager.cs @@ -1,11 +1,13 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Text.Json; using System.Text.Json.Nodes; using System.Threading; using System.Threading.Tasks; using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; using OrchardCore.Locking.Distributed; using OrchardCore.Modules; using OrchardCore.Workflows.Activities; @@ -30,6 +32,7 @@ public class WorkflowManager : IWorkflowManager private readonly ILogger _logger; private readonly ILogger _missingActivityLogger; private readonly IStringLocalizer _missingActivityLocalizer; + private readonly JsonSerializerOptions _jsonSerializerOptions; private readonly IClock _clock; private readonly Dictionary _recursions = []; @@ -47,6 +50,7 @@ public WorkflowManager ILogger logger, ILogger missingActivityLogger, IStringLocalizer missingActivityLocalizer, + IOptions jsonSerializerOptions, IClock clock) { _activityLibrary = activityLibrary; @@ -59,6 +63,7 @@ public WorkflowManager _logger = logger; _missingActivityLogger = missingActivityLogger; _missingActivityLocalizer = missingActivityLocalizer; + _jsonSerializerOptions = jsonSerializerOptions.Value; _clock = clock; } @@ -73,7 +78,7 @@ public Workflow NewWorkflow(WorkflowType workflowType, string correlationId = nu State = JObject.FromObject(new WorkflowState { ActivityStates = workflowType.Activities.ToDictionary(x => x.ActivityId, x => x.Properties) - }), + }, _jsonSerializerOptions), CorrelationId = correlationId, LockTimeout = workflowType.LockTimeout, LockExpiration = workflowType.LockExpiration, @@ -90,7 +95,7 @@ public async Task CreateWorkflowExecutionContextAsync( ArgumentNullException.ThrowIfNull(workflow); - var state = workflow.State.ToObject(); + var state = workflow.State.ToObject(_jsonSerializerOptions); var activityQuery = await Task.WhenAll(workflowType.Activities.Select(x => { if (!state.ActivityStates.TryGetValue(x.ActivityId, out var activityState)) @@ -551,7 +556,7 @@ private void DecrementRecursion(Workflow workflow) private async Task PersistAsync(WorkflowExecutionContext workflowContext) { - var state = workflowContext.Workflow.State.ToObject(); + var state = workflowContext.Workflow.State.ToObject(_jsonSerializerOptions); state.Input = await SerializeAsync(workflowContext.Input); state.Output = await SerializeAsync(workflowContext.Output); @@ -560,7 +565,7 @@ private async Task PersistAsync(WorkflowExecutionContext workflowContext) state.ExecutedActivities = workflowContext.ExecutedActivities.ToList(); state.ActivityStates = workflowContext.Activities.ToDictionary(x => x.Key, x => x.Value.Activity.Properties); - workflowContext.Workflow.State = JObject.FromObject(state); + workflowContext.Workflow.State = JObject.FromObject(state, _jsonSerializerOptions); await _workflowStore.SaveAsync(workflowContext.Workflow); } diff --git a/src/OrchardCore.Modules/OrchardCore.Workflows/UserTasks/Drivers/UserTaskEventContentDriver.cs b/src/OrchardCore.Modules/OrchardCore.Workflows/UserTasks/Drivers/UserTaskEventContentDriver.cs index d9b0be556d2..8c0c478c5eb 100644 --- a/src/OrchardCore.Modules/OrchardCore.Workflows/UserTasks/Drivers/UserTaskEventContentDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Workflows/UserTasks/Drivers/UserTaskEventContentDriver.cs @@ -2,10 +2,12 @@ using System.Collections.Generic; using System.Linq; using System.Security.Claims; +using System.Text.Json; using System.Text.Json.Nodes; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc.Localization; +using Microsoft.Extensions.Options; using OrchardCore.ContentManagement; using OrchardCore.ContentManagement.Display.ContentDisplay; using OrchardCore.ContentManagement.Workflows; @@ -26,6 +28,8 @@ public class UserTaskEventContentDriver : ContentDisplayDriver private readonly IWorkflowManager _workflowManager; private readonly INotifier _notifier; private readonly IHttpContextAccessor _httpContextAccessor; + private readonly JsonSerializerOptions _jsonSerializerOptions; + protected readonly IHtmlLocalizer H; public UserTaskEventContentDriver( @@ -34,6 +38,7 @@ public UserTaskEventContentDriver( IWorkflowManager workflowManager, INotifier notifier, IHtmlLocalizer localizer, + IOptions jsonSerializerOptions, IHttpContextAccessor httpContextAccessor) { _workflowStore = workflowStore; @@ -41,6 +46,7 @@ public UserTaskEventContentDriver( _workflowManager = workflowManager; _notifier = notifier; _httpContextAccessor = httpContextAccessor; + _jsonSerializerOptions = jsonSerializerOptions.Value; H = localizer; } @@ -103,7 +109,7 @@ private async Task> GetUserTaskActionsAsync(string contentItemId) var userRoles = user.Claims.Where(x => x.Type == ClaimTypes.Role).Select(x => x.Value).ToList(); var actionsQuery = from workflow in workflows - let workflowState = workflow.State.ToObject() + let workflowState = workflow.State.ToObject(_jsonSerializerOptions) from blockingActivity in workflow.BlockingActivities where blockingActivity.Name == nameof(UserTaskEvent) from action in GetUserTaskActions(workflowState, blockingActivity.ActivityId, userRoles) @@ -118,7 +124,7 @@ private IEnumerable GetUserTaskActions(WorkflowState workflowState, stri { var activity = _activityLibrary.InstantiateActivity(nameof(UserTaskEvent), activityState); - if (activity.Roles.Any() && !userRoles.Any(x => activity.Roles.Contains(x))) + if (activity.Roles.Count > 0 && !userRoles.Any(activity.Roles.Contains)) yield break; foreach (var action in activity.Actions) diff --git a/src/OrchardCore/OrchardCore.Abstractions/Extensions/JsonSerializerOptionsConfiguration.cs b/src/OrchardCore/OrchardCore.Abstractions/Extensions/JsonSerializerOptionsConfiguration.cs new file mode 100644 index 00000000000..4461b6ba52b --- /dev/null +++ b/src/OrchardCore/OrchardCore.Abstractions/Extensions/JsonSerializerOptionsConfiguration.cs @@ -0,0 +1,32 @@ +using System.Text.Json; +using System.Text.Json.Serialization; +using Microsoft.Extensions.Options; +using OrchardCore.Json; +using OrchardCore.Json.Serialization; + +namespace OrchardCore.Extensions; + +public class JsonSerializerOptionsConfiguration : IConfigureOptions +{ + private readonly JsonDerivedTypesOptions _derivedTypesOptions; + + public JsonSerializerOptionsConfiguration( + IOptions derivedTypesOptions) + { + _derivedTypesOptions = derivedTypesOptions.Value; + } + + public void Configure(JsonSerializerOptions options) + { + options.DefaultIgnoreCondition = JOptions.Base.DefaultIgnoreCondition; + options.ReferenceHandler = JOptions.Base.ReferenceHandler; + options.ReadCommentHandling = JOptions.Base.ReadCommentHandling; + options.PropertyNameCaseInsensitive = JOptions.Base.PropertyNameCaseInsensitive; + options.AllowTrailingCommas = JOptions.Base.AllowTrailingCommas; + options.WriteIndented = JOptions.Base.WriteIndented; + + options.TypeInfoResolverChain.Add(new PolymorphicJsonTypeInfoResolver(_derivedTypesOptions)); + options.Converters.Add(DynamicJsonConverter.Instance); + options.Converters.Add(PathStringJsonConverter.Instance); + } +} diff --git a/src/OrchardCore/OrchardCore.ContentManagement/Records/Migrations.cs b/src/OrchardCore/OrchardCore.ContentManagement/Records/Migrations.cs index 7f543586908..456db5f02e5 100644 --- a/src/OrchardCore/OrchardCore.ContentManagement/Records/Migrations.cs +++ b/src/OrchardCore/OrchardCore.ContentManagement/Records/Migrations.cs @@ -11,6 +11,7 @@ namespace OrchardCore.ContentManagement.Records public class Migrations : DataMigration { private readonly IContentDefinitionManager _contentDefinitionManager; + public Migrations(IContentDefinitionManager contentDefinitionManager) { _contentDefinitionManager = contentDefinitionManager; diff --git a/src/OrchardCore/OrchardCore.Data.YesSql/DefaultJsonContentSerializer.cs b/src/OrchardCore/OrchardCore.Data.YesSql/DefaultJsonContentSerializer.cs index 1758f2834b6..d62507cb738 100644 --- a/src/OrchardCore/OrchardCore.Data.YesSql/DefaultJsonContentSerializer.cs +++ b/src/OrchardCore/OrchardCore.Data.YesSql/DefaultJsonContentSerializer.cs @@ -1,8 +1,6 @@ using System; -using System.Collections.Generic; using System.Text.Json; -using System.Text.Json.Serialization.Metadata; -using OrchardCore.Json.Serialization; +using Microsoft.Extensions.Options; namespace YesSql.Serialization { @@ -10,32 +8,21 @@ public class DefaultJsonContentSerializer : IContentSerializer { private readonly JsonSerializerOptions _options; - public DefaultJsonContentSerializer() + public DefaultJsonContentSerializer(IOptions options) { - _options = new(JOptions.Base); - _options.Converters.Add(System.Text.Json.Serialization.DynamicJsonConverter.Instance); - _options.Converters.Add(PathStringJsonConverter.Instance); + _options = options.Value; } - public DefaultJsonContentSerializer(IEnumerable typeInfoResolvers) - { - _options = new(JOptions.Base); - foreach (var resolver in typeInfoResolvers) - { - _options.TypeInfoResolverChain.Add(resolver); - } - - _options.Converters.Add(System.Text.Json.Serialization.DynamicJsonConverter.Instance); - _options.Converters.Add(PathStringJsonConverter.Instance); - } - - public DefaultJsonContentSerializer(JsonSerializerOptions options) => _options = options; + public DefaultJsonContentSerializer(JsonSerializerOptions options) + => _options = options; public object Deserialize(string content, Type type) => JsonSerializer.Deserialize(content, type, _options); - public dynamic DeserializeDynamic(string content) => JsonSerializer.Deserialize(content, _options); + public dynamic DeserializeDynamic(string content) + => JsonSerializer.Deserialize(content, _options); - public string Serialize(object item) => JsonSerializer.Serialize(item, _options); + public string Serialize(object item) + => JsonSerializer.Serialize(item, _options); } } diff --git a/src/OrchardCore/OrchardCore.Data.YesSql/OrchardCoreBuilderExtensions.cs b/src/OrchardCore/OrchardCore.Data.YesSql/OrchardCoreBuilderExtensions.cs index 3c80b76df40..d30376f643f 100644 --- a/src/OrchardCore/OrchardCore.Data.YesSql/OrchardCoreBuilderExtensions.cs +++ b/src/OrchardCore/OrchardCore.Data.YesSql/OrchardCoreBuilderExtensions.cs @@ -3,8 +3,7 @@ using System.Data; using System.IO; using System.Linq; -using System.Text.Json.Serialization; -using System.Text.Json.Serialization.Metadata; +using System.Text.Json; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using OrchardCore.Data; @@ -14,7 +13,6 @@ using OrchardCore.Environment.Shell; using OrchardCore.Environment.Shell.Removing; using OrchardCore.Environment.Shell.Scope; -using OrchardCore.Json; using OrchardCore.Modules; using YesSql; using YesSql.Indexes; @@ -182,9 +180,7 @@ private static YesSql.Configuration GetStoreConfiguration(IServiceProvider sp, Y var tableNameFactory = sp.GetRequiredService(); var loggerFactory = sp.GetRequiredService(); - var typeInfoResolvers = sp.GetServices().ToList(); - var derivedTypesOptions = sp.GetService>(); - typeInfoResolvers.Add(new PolymorphicJsonTypeInfoResolver(derivedTypesOptions.Value)); + var serializerOptions = sp.GetRequiredService>(); var storeConfiguration = new YesSql.Configuration { @@ -193,7 +189,7 @@ private static YesSql.Configuration GetStoreConfiguration(IServiceProvider sp, Y TableNameConvention = tableNameFactory.Create(databaseTableOptions), IdentityColumnSize = Enum.Parse(databaseTableOptions.IdentityColumnSize), Logger = loggerFactory.CreateLogger("YesSql"), - ContentSerializer = new DefaultJsonContentSerializer(typeInfoResolvers) + ContentSerializer = new DefaultJsonContentSerializer(serializerOptions.Value) }; if (yesSqlOptions.IdGenerator != null) diff --git a/src/OrchardCore/OrchardCore.DisplayManagement/Notify/NotifyFilter.cs b/src/OrchardCore/OrchardCore.DisplayManagement/Notify/NotifyFilter.cs index 84c8ab54ba8..870c22c4703 100644 --- a/src/OrchardCore/OrchardCore.DisplayManagement/Notify/NotifyFilter.cs +++ b/src/OrchardCore/OrchardCore.DisplayManagement/Notify/NotifyFilter.cs @@ -44,7 +44,7 @@ public NotifyFilter( _htmlEncoder = htmlEncoder; _logger = logger; - _settings = new(System.Text.Json.JOptions.Default); + _settings = new(JOptions.Default); _settings.Converters.Add(new NotifyEntryConverter(htmlEncoder)); } diff --git a/src/OrchardCore/OrchardCore.Infrastructure/Documents/DocumentEntityManager.cs b/src/OrchardCore/OrchardCore.Infrastructure/Documents/DocumentEntityManager.cs index 14b7714994b..bd2769a3765 100644 --- a/src/OrchardCore/OrchardCore.Infrastructure/Documents/DocumentEntityManager.cs +++ b/src/OrchardCore/OrchardCore.Infrastructure/Documents/DocumentEntityManager.cs @@ -12,7 +12,10 @@ namespace OrchardCore.Documents { private readonly IDocumentManager _documentManager; - public DocumentEntityManager(IDocumentManager documentManager) => _documentManager = documentManager; + public DocumentEntityManager(IDocumentManager documentManager) + { + _documentManager = documentManager; + } public async Task GetAsync(string key) where T : new() { diff --git a/src/OrchardCore/OrchardCore.Infrastructure/Documents/DocumentEntityManagerOfT.cs b/src/OrchardCore/OrchardCore.Infrastructure/Documents/DocumentEntityManagerOfT.cs index e6f4cc0030a..30804762639 100644 --- a/src/OrchardCore/OrchardCore.Infrastructure/Documents/DocumentEntityManagerOfT.cs +++ b/src/OrchardCore/OrchardCore.Infrastructure/Documents/DocumentEntityManagerOfT.cs @@ -8,7 +8,8 @@ namespace OrchardCore.Documents public class DocumentEntityManager : DocumentEntityManager, IDocumentEntityManager where TDocumentStore : IDocumentStore where TDocumentEntity : class, IDocumentEntity, new() { - public DocumentEntityManager(IDocumentManager documentManager) : base(documentManager) + public DocumentEntityManager(IDocumentManager documentManager) + : base(documentManager) { } } diff --git a/src/OrchardCore/OrchardCore.Infrastructure/Documents/VolatileDocumentEntityManager.cs b/src/OrchardCore/OrchardCore.Infrastructure/Documents/VolatileDocumentEntityManager.cs index 352ebf227b7..b33d4ea9be6 100644 --- a/src/OrchardCore/OrchardCore.Infrastructure/Documents/VolatileDocumentEntityManager.cs +++ b/src/OrchardCore/OrchardCore.Infrastructure/Documents/VolatileDocumentEntityManager.cs @@ -5,7 +5,8 @@ namespace OrchardCore.Documents /// public class VolatileDocumentEntityManager : DocumentEntityManager, IVolatileDocumentEntityManager where TDocumentEntity : class, IDocumentEntity, new() { - public VolatileDocumentEntityManager(IVolatileDocumentManager documentManager) : base(documentManager) + public VolatileDocumentEntityManager(IVolatileDocumentManager documentManager) + : base(documentManager) { } } diff --git a/src/OrchardCore/OrchardCore.Search.AzureAI.Core/Deployment/AzureAISearchSettingsDeploymentSource.cs b/src/OrchardCore/OrchardCore.Search.AzureAI.Core/Deployment/AzureAISearchSettingsDeploymentSource.cs index 14f24ef9ccc..f813c5d06ee 100644 --- a/src/OrchardCore/OrchardCore.Search.AzureAI.Core/Deployment/AzureAISearchSettingsDeploymentSource.cs +++ b/src/OrchardCore/OrchardCore.Search.AzureAI.Core/Deployment/AzureAISearchSettingsDeploymentSource.cs @@ -12,9 +12,7 @@ public class AzureAISearchSettingsDeploymentSource(ISiteService siteService) : I public async Task ProcessDeploymentStepAsync(DeploymentStep step, DeploymentPlanResult result) { - var settingsStep = step as AzureAISearchSettingsDeploymentStep; - - if (settingsStep == null) + if (step is not AzureAISearchSettingsDeploymentStep) { return; } diff --git a/src/OrchardCore/OrchardCore.Search.AzureAI.Core/Recipes/AzureAISearchIndexSettingsStep.cs b/src/OrchardCore/OrchardCore.Search.AzureAI.Core/Recipes/AzureAISearchIndexSettingsStep.cs index d48f4159295..13d481feea6 100644 --- a/src/OrchardCore/OrchardCore.Search.AzureAI.Core/Recipes/AzureAISearchIndexSettingsStep.cs +++ b/src/OrchardCore/OrchardCore.Search.AzureAI.Core/Recipes/AzureAISearchIndexSettingsStep.cs @@ -13,19 +13,26 @@ namespace OrchardCore.Search.AzureAI.Recipes; -public class AzureAISearchIndexSettingsStep( - AzureAISearchIndexManager indexManager, - AzureAIIndexDocumentManager azureAIIndexDocumentManager, - AzureAISearchIndexSettingsService azureAISearchIndexSettingsService, - ILogger logger - ) : IRecipeStepHandler +public class AzureAISearchIndexSettingsStep : IRecipeStepHandler { public const string Name = "azureai-index-create"; - private readonly AzureAISearchIndexManager _indexManager = indexManager; - private readonly AzureAIIndexDocumentManager _azureAIIndexDocumentManager = azureAIIndexDocumentManager; - private readonly AzureAISearchIndexSettingsService _azureAISearchIndexSettingsService = azureAISearchIndexSettingsService; - private readonly ILogger _logger = logger; + private readonly AzureAISearchIndexManager _indexManager; + private readonly AzureAIIndexDocumentManager _azureAIIndexDocumentManager; + private readonly AzureAISearchIndexSettingsService _azureAISearchIndexSettingsService; + private readonly ILogger _logger; + + public AzureAISearchIndexSettingsStep( + AzureAISearchIndexManager indexManager, + AzureAIIndexDocumentManager azureAIIndexDocumentManager, + AzureAISearchIndexSettingsService azureAISearchIndexSettingsService, + ILogger logger) + { + _indexManager = indexManager; + _azureAIIndexDocumentManager = azureAIIndexDocumentManager; + _azureAISearchIndexSettingsService = azureAISearchIndexSettingsService; + _logger = logger; + } public async Task ExecuteAsync(RecipeExecutionContext context) { diff --git a/src/OrchardCore/OrchardCore.Search.Elasticsearch.Core/Deployment/ElasticIndexDeploymentSource.cs b/src/OrchardCore/OrchardCore.Search.Elasticsearch.Core/Deployment/ElasticIndexDeploymentSource.cs index 44e5493c995..1f3b28376bf 100644 --- a/src/OrchardCore/OrchardCore.Search.Elasticsearch.Core/Deployment/ElasticIndexDeploymentSource.cs +++ b/src/OrchardCore/OrchardCore.Search.Elasticsearch.Core/Deployment/ElasticIndexDeploymentSource.cs @@ -19,9 +19,7 @@ public ElasticIndexDeploymentSource(ElasticIndexSettingsService elasticIndexSett public async Task ProcessDeploymentStepAsync(DeploymentStep step, DeploymentPlanResult result) { - var elasticIndexStep = step as ElasticIndexDeploymentStep; - - if (elasticIndexStep == null) + if (step is not ElasticIndexDeploymentStep elasticIndexStep) { return; } diff --git a/src/OrchardCore/OrchardCore.Search.Elasticsearch.Core/Deployment/ElasticSettingsDeploymentSource.cs b/src/OrchardCore/OrchardCore.Search.Elasticsearch.Core/Deployment/ElasticSettingsDeploymentSource.cs index ecbe1d9e763..f0e249f0e99 100644 --- a/src/OrchardCore/OrchardCore.Search.Elasticsearch.Core/Deployment/ElasticSettingsDeploymentSource.cs +++ b/src/OrchardCore/OrchardCore.Search.Elasticsearch.Core/Deployment/ElasticSettingsDeploymentSource.cs @@ -16,9 +16,7 @@ public ElasticSettingsDeploymentSource(ElasticIndexingService elasticIndexingSer public async Task ProcessDeploymentStepAsync(DeploymentStep step, DeploymentPlanResult result) { - var elasticSettingsStep = step as ElasticSettingsDeploymentStep; - - if (elasticSettingsStep == null) + if (step is not ElasticSettingsDeploymentStep) { return; } diff --git a/src/OrchardCore/OrchardCore.Settings.Core/Deployment/SiteSettingsPropertyDeploymentSource.cs b/src/OrchardCore/OrchardCore.Settings.Core/Deployment/SiteSettingsPropertyDeploymentSource.cs index f98b0e12209..1f57c38402c 100644 --- a/src/OrchardCore/OrchardCore.Settings.Core/Deployment/SiteSettingsPropertyDeploymentSource.cs +++ b/src/OrchardCore/OrchardCore.Settings.Core/Deployment/SiteSettingsPropertyDeploymentSource.cs @@ -16,8 +16,7 @@ public SiteSettingsPropertyDeploymentSource(ISiteService siteService) public async Task ProcessDeploymentStepAsync(DeploymentStep step, DeploymentPlanResult result) { - var settingsStep = step as SiteSettingsPropertyDeploymentStep; - if (settingsStep == null) + if (step is not SiteSettingsPropertyDeploymentStep settingsStep) { return; } diff --git a/src/OrchardCore/OrchardCore.Workflows.Abstractions/Services/IWorkflowManager.cs b/src/OrchardCore/OrchardCore.Workflows.Abstractions/Services/IWorkflowManager.cs index 03a3cccaf44..78e620e6deb 100644 --- a/src/OrchardCore/OrchardCore.Workflows.Abstractions/Services/IWorkflowManager.cs +++ b/src/OrchardCore/OrchardCore.Workflows.Abstractions/Services/IWorkflowManager.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Text.Json; using System.Text.Json.Nodes; using System.Threading.Tasks; using Microsoft.AspNetCore.Routing; @@ -77,13 +78,13 @@ public static Task> TriggerEventAsync(this return workflowManager.TriggerEventAsync(name, new RouteValueDictionary(input), correlationId); } - public static Task RestartWorkflowAsync(this IWorkflowManager workflowManager, Workflow workflow, WorkflowType workflowType) + public static Task RestartWorkflowAsync(this IWorkflowManager workflowManager, Workflow workflow, WorkflowType workflowType, JsonSerializerOptions jsonSerializerOptions = null) { ArgumentNullException.ThrowIfNull(workflow); ArgumentNullException.ThrowIfNull(workflowType); - var state = workflow.State.ToObject(); + var state = workflow.State.ToObject(jsonSerializerOptions); return workflowManager.RestartWorkflowAsync(workflowType, state.Input, workflow.CorrelationId); } diff --git a/src/OrchardCore/OrchardCore/Modules/Extensions/ServiceCollectionExtensions.cs b/src/OrchardCore/OrchardCore/Modules/Extensions/ServiceCollectionExtensions.cs index 27d408d61ed..f3bf77e1cea 100644 --- a/src/OrchardCore/OrchardCore/Modules/Extensions/ServiceCollectionExtensions.cs +++ b/src/OrchardCore/OrchardCore/Modules/Extensions/ServiceCollectionExtensions.cs @@ -3,6 +3,7 @@ using System.IO; using System.Linq; using System.Net.Http; +using System.Text.Json; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.DataProtection; @@ -28,6 +29,7 @@ using OrchardCore.Environment.Shell.Builders; using OrchardCore.Environment.Shell.Configuration; using OrchardCore.Environment.Shell.Descriptor.Models; +using OrchardCore.Extensions; using OrchardCore.Localization; using OrchardCore.Locking; using OrchardCore.Locking.Distributed; @@ -152,6 +154,8 @@ private static void AddDefaultServices(OrchardCoreBuilder builder) services.AddSingleton(); + services.AddTransient, JsonSerializerOptionsConfiguration>(); + services.AddScoped(); services.AddSingleton(); diff --git a/test/OrchardCore.Tests/Apis/ContentManagement/DeploymentPlans/ContentStepLuceneQueryTests.cs b/test/OrchardCore.Tests/Apis/ContentManagement/DeploymentPlans/ContentStepLuceneQueryTests.cs index c07bdebe3df..c6829ce6855 100644 --- a/test/OrchardCore.Tests/Apis/ContentManagement/DeploymentPlans/ContentStepLuceneQueryTests.cs +++ b/test/OrchardCore.Tests/Apis/ContentManagement/DeploymentPlans/ContentStepLuceneQueryTests.cs @@ -46,7 +46,7 @@ public async Task ShouldUpdateLuceneIndexesOnImport() var nodes = result["data"]["recentBlogPosts"]; - Assert.Equal(2, nodes.AsArray().Count()); + Assert.Equal(2, nodes.AsArray().Count); Assert.Equal("new version", nodes[0]["displayText"].ToString()); Assert.Equal("second content item display text", nodes[1]["displayText"].ToString()); } diff --git a/test/OrchardCore.Tests/Apis/GraphQL/ContentItemsFieldTypeTests.cs b/test/OrchardCore.Tests/Apis/GraphQL/ContentItemsFieldTypeTests.cs index 626640b937c..34fc2f52d9f 100644 --- a/test/OrchardCore.Tests/Apis/GraphQL/ContentItemsFieldTypeTests.cs +++ b/test/OrchardCore.Tests/Apis/GraphQL/ContentItemsFieldTypeTests.cs @@ -1,3 +1,4 @@ +using System.Text.Json; using System.Text.Json.Nodes; using GraphQL; using GraphQL.Execution; @@ -11,6 +12,8 @@ using OrchardCore.ContentManagement.Records; using OrchardCore.Data; using OrchardCore.Environment.Shell; +using OrchardCore.Json; +using OrchardCore.Json.Serialization; using YesSql.Indexes; using YesSql.Provider.Sqlite; using YesSql.Serialization; @@ -36,8 +39,21 @@ public async Task InitializeAsync() _prefix = "tp"; _prefixedStore = await StoreFactory.CreateAndInitializeAsync(new Configuration().UseSqLite(string.Format(connectionStringTemplate, _tempFilename + _prefix)).SetTablePrefix(_prefix + "_")); - _store.Configuration.ContentSerializer = new DefaultJsonContentSerializer(); - _prefixedStore.Configuration.ContentSerializer = new DefaultJsonContentSerializer(); + var jsonDerivedTypesOptions = new JsonDerivedTypesOptions(); + + var jsonOptions = new JsonSerializerOptions(JOptions.Base); + jsonOptions.TypeInfoResolverChain.Add(new System.Text.Json.Serialization.PolymorphicJsonTypeInfoResolver(jsonDerivedTypesOptions)); + jsonOptions.Converters.Add(DynamicJsonConverter.Instance); + jsonOptions.Converters.Add(PathStringJsonConverter.Instance); + + var jsonSerializerOptions = new Mock>(); + jsonSerializerOptions.Setup(x => x.Value) + .Returns(jsonOptions); + + var contentSerializer = new DefaultJsonContentSerializer(jsonSerializerOptions.Object); + + _store.Configuration.ContentSerializer = contentSerializer; + _prefixedStore.Configuration.ContentSerializer = contentSerializer; await CreateTablesAsync(_store); await CreateTablesAsync(_prefixedStore); @@ -141,7 +157,7 @@ public async Task ShouldFilterByContentItemIndex() context.Arguments["where"] = new ArgumentValue(JObject.Parse("{ \"contentItemId\": \"1\" }"), ArgumentSource.Variable); var dogs = await ((LockedAsyncFieldResolver>)type.Resolver) - .ResolveAsync(context) as IEnumerable; + .ResolveAsync(context) as IEnumerable; Assert.Single(dogs); Assert.Equal("doug", dogs.First().As().Name); diff --git a/test/OrchardCore.Tests/Modules/OrchardCore.OpenId/OpenIdApplicationStepTests.cs b/test/OrchardCore.Tests/Modules/OrchardCore.OpenId/OpenIdApplicationStepTests.cs index 8bb3535a655..21340c8a500 100644 --- a/test/OrchardCore.Tests/Modules/OrchardCore.OpenId/OpenIdApplicationStepTests.cs +++ b/test/OrchardCore.Tests/Modules/OrchardCore.OpenId/OpenIdApplicationStepTests.cs @@ -34,6 +34,7 @@ public async Task OpenIdApplicationCanBeParsed(string recipeName, OpenIdApplicat .Returns( new ValueTask(actual)); + var step = new OpenIdApplicationStep(appManagerMock.Object); var recipe = JsonNode.Parse(GetRecipeFileContent(recipeName)); var context = new RecipeExecutionContext diff --git a/test/OrchardCore.Tests/Modules/OrchardCore.OpenId/OpenIdServerDeploymentSourceTests.cs b/test/OrchardCore.Tests/Modules/OrchardCore.OpenId/OpenIdServerDeploymentSourceTests.cs index 8cc39a4d739..cd6f0dfd020 100644 --- a/test/OrchardCore.Tests/Modules/OrchardCore.OpenId/OpenIdServerDeploymentSourceTests.cs +++ b/test/OrchardCore.Tests/Modules/OrchardCore.OpenId/OpenIdServerDeploymentSourceTests.cs @@ -1,5 +1,7 @@ +using System.Text.Json; using System.Text.Json.Nodes; using OrchardCore.Deployment; +using OrchardCore.Json.Serialization; using OrchardCore.OpenId.Deployment; using OrchardCore.OpenId.Recipes; using OrchardCore.OpenId.Services; @@ -93,6 +95,10 @@ public async Task ServerDeploymentSourceIsReadableByRecipe() var descriptor = new RecipeDescriptor(); var result = new DeploymentPlanResult(fileBuilder, descriptor); + var jsonOptions = new JsonSerializerOptions(JOptions.Base); + jsonOptions.Converters.Add(System.Text.Json.Serialization.DynamicJsonConverter.Instance); + jsonOptions.Converters.Add(PathStringJsonConverter.Instance); + var deploymentSource = new OpenIdServerDeploymentSource(deployServerServiceMock.Object); // Act diff --git a/test/OrchardCore.Tests/Recipes/RecipeExecutorTests.cs b/test/OrchardCore.Tests/Recipes/RecipeExecutorTests.cs index 76b16d9fa39..17d67f131b6 100644 --- a/test/OrchardCore.Tests/Recipes/RecipeExecutorTests.cs +++ b/test/OrchardCore.Tests/Recipes/RecipeExecutorTests.cs @@ -31,6 +31,7 @@ public async Task ShouldTrimValidScriptExpression(string recipeName, string expe var recipeEventHandlers = new List { new RecipeEventHandler() }; var loggerMock = new Mock>(); + var recipeExecutor = new RecipeExecutor( shellHostMock.Object, scope.ShellContext.Settings, @@ -57,7 +58,7 @@ public async Task ShouldTrimValidScriptExpression(string recipeName, string expe ServiceProvider = CreateServiceProvider(), }; - private static IServiceProvider CreateServiceProvider() => new ServiceCollection() + private static ServiceProvider CreateServiceProvider() => new ServiceCollection() .AddScripting() .AddSingleton() .AddLogging() diff --git a/test/OrchardCore.Tests/Workflows/WorkflowManagerTests.cs b/test/OrchardCore.Tests/Workflows/WorkflowManagerTests.cs index 45a7842f869..f379bbb2198 100644 --- a/test/OrchardCore.Tests/Workflows/WorkflowManagerTests.cs +++ b/test/OrchardCore.Tests/Workflows/WorkflowManagerTests.cs @@ -1,3 +1,4 @@ +using System.Text.Json; using System.Text.Json.Nodes; using OrchardCore.DisplayManagement; using OrchardCore.Locking.Distributed; @@ -113,6 +114,8 @@ WorkflowType workflowType var missingActivityLocalizer = new Mock>(); var clock = new Mock(); var workflowFaultHandler = new Mock(); + var jsonOptionsMock = new Mock>(); + var workflowManager = new WorkflowManager( activityLibrary.Object, workflowTypeStore.Object, @@ -124,6 +127,7 @@ WorkflowType workflowType workflowManagerLogger.Object, missingActivityLogger.Object, missingActivityLocalizer.Object, + jsonOptionsMock.Object, clock.Object ); From 3bd5ae8a7bbf1e9b2a924e6a15d4905494a49b2b Mon Sep 17 00:00:00 2001 From: Hisham Bin Ateya Date: Wed, 21 Feb 2024 23:58:27 +0300 Subject: [PATCH 08/13] Fix CORS assets by running gulp (#15380) --- .../OrchardCore.Cors/Assets/Admin/cors-admin.js | 17 +++++++++-------- .../OrchardCore.Cors/Views/Admin/Index.cshtml | 2 +- .../wwwroot/Scripts/cors-admin.js | 8 ++++---- .../wwwroot/Scripts/cors-admin.min.js | 2 +- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/OrchardCore.Modules/OrchardCore.Cors/Assets/Admin/cors-admin.js b/src/OrchardCore.Modules/OrchardCore.Cors/Assets/Admin/cors-admin.js index 14a32bb24e4..81621d50124 100644 --- a/src/OrchardCore.Modules/OrchardCore.Cors/Assets/Admin/cors-admin.js +++ b/src/OrchardCore.Modules/OrchardCore.Cors/Assets/Admin/cors-admin.js @@ -24,14 +24,14 @@ var optionsList = Vue.component('options-list', var policyDetails = Vue.component('policy-details', { - components: { optionsList : optionsList }, + components: { optionsList: optionsList }, props: ['policy'], template: '#policy-details' }); var corsApp = new Vue({ el: '#corsAdmin', - components: { policyDetails : policyDetails, optionsList : optionsList }, + components: { policyDetails: policyDetails, optionsList: optionsList }, data: { selectedPolicy: null, policies: null, @@ -70,24 +70,26 @@ var corsApp = new Vue({ if (policy.isDefaultPolicy) { this.policies.forEach(p => p.isDefaultPolicy = false); } - if (policy.OriginalName) { + + if (policy.originalName) { var policyIndex = this.policies.findIndex((oldPolicy) => oldPolicy.name === policy.originalName); this.policies[policyIndex] = policy; } else { this.policies.push(policy); } + this.save(); this.back(); }, save: function () { - document.getElementById('CorsSettings').value = JSON.stringify(this.policies); + document.getElementById('corsSettings').value = JSON.stringify(this.policies); document.getElementById('corsForm').submit(); }, back: function () { this.selectedPolicy = null; }, - searchBox: function() { + searchBox: function () { var searchBox = $('#search-box'); // On Enter, edit the item if there is a single one @@ -121,9 +123,8 @@ var corsApp = new Vue({ var found = text.indexOf(search) > -1; $(this).toggle(found); - if(found) - { - intVisible++; + if (found) { + intVisible++; } }); diff --git a/src/OrchardCore.Modules/OrchardCore.Cors/Views/Admin/Index.cshtml b/src/OrchardCore.Modules/OrchardCore.Cors/Views/Admin/Index.cshtml index c20181f8e84..15b9fc0f122 100644 --- a/src/OrchardCore.Modules/OrchardCore.Cors/Views/Admin/Index.cshtml +++ b/src/OrchardCore.Modules/OrchardCore.Cors/Views/Admin/Index.cshtml @@ -17,7 +17,7 @@

@T["The current tenant will be reloaded when the CORS is executed."]

@T["CORS stands for Cross-Origin Resource Sharing. More information can be found here:"] https://docs.microsoft.com/en-us/aspnet/core/security/cors
- +
diff --git a/src/OrchardCore.Modules/OrchardCore.Cors/wwwroot/Scripts/cors-admin.js b/src/OrchardCore.Modules/OrchardCore.Cors/wwwroot/Scripts/cors-admin.js index e51442d0c9e..a149ed0b229 100644 --- a/src/OrchardCore.Modules/OrchardCore.Cors/wwwroot/Scripts/cors-admin.js +++ b/src/OrchardCore.Modules/OrchardCore.Cors/wwwroot/Scripts/cors-admin.js @@ -42,7 +42,7 @@ var corsApp = new Vue({ }, data: { selectedPolicy: null, - policies: [], + policies: null, defaultPolicyName: null }, updated: function updated() { @@ -76,9 +76,9 @@ var corsApp = new Vue({ this.save(); }, updatePolicy: function updatePolicy(policy, event) { - if (policy.IsDefaultPolicy) { + if (policy.isDefaultPolicy) { this.policies.forEach(function (p) { - return p.IsDefaultPolicy = false; + return p.isDefaultPolicy = false; }); } if (policy.originalName) { @@ -93,7 +93,7 @@ var corsApp = new Vue({ this.back(); }, save: function save() { - document.getElementById('CorsSettings').value = JSON.stringify(this.policies); + document.getElementById('corsSettings').value = JSON.stringify(this.policies); document.getElementById('corsForm').submit(); }, back: function back() { diff --git a/src/OrchardCore.Modules/OrchardCore.Cors/wwwroot/Scripts/cors-admin.min.js b/src/OrchardCore.Modules/OrchardCore.Cors/wwwroot/Scripts/cors-admin.min.js index b8a66405788..2fc2cd87dd1 100644 --- a/src/OrchardCore.Modules/OrchardCore.Cors/wwwroot/Scripts/cors-admin.min.js +++ b/src/OrchardCore.Modules/OrchardCore.Cors/wwwroot/Scripts/cors-admin.min.js @@ -1 +1 @@ -var optionsList=Vue.component("options-list",{props:["options","optionType","title","subTitle"],template:"#options-list",data:function(){return{newOption:""}},methods:{addOption:function(i){null!==i&&""!==i&&($.inArray(i.toLowerCase(),this.options.map((function(i){return i.toLowerCase()})))<0&&this.options.push(i))},deleteOption:function(i){this.options.splice($.inArray(i,this.options),1)}}}),policyDetails=Vue.component("policy-details",{components:{optionsList:optionsList},props:["policy"],template:"#policy-details"}),corsApp=new Vue({el:"#corsAdmin",components:{policyDetails:policyDetails,optionsList:optionsList},data:{selectedPolicy:null,policies:[],defaultPolicyName:null},updated:function(){this.searchBox()},methods:{newPolicy:function(){this.selectedPolicy={name:"New policy",allowedOrigins:[],allowAnyOrigin:!0,allowedMethods:[],allowAnyMethod:!0,allowedHeaders:[],allowAnyHeader:!0,allowCredentials:!0,isDefaultPolicy:!1}},editPolicy:function(i){this.selectedPolicy=Object.assign({},i),this.selectedPolicy.originalName=this.selectedPolicy.name},deletePolicy:function(i,e){this.selectedPolicy=null;var t=this.policies.filter((function(e){return e.name===i.name}));t.length>0&&this.policies.splice($.inArray(t[0],this.policies),1),e.stopPropagation(),this.save()},updatePolicy:function(i,e){if(i.isDefaultPolicy&&this.policies.forEach((function(i){return i.isDefaultPolicy=!1})),i.originalName){var t=this.policies.findIndex((function(e){return e.name===i.originalName}));this.policies[t]=i}else this.policies.push(i);this.save(),this.back()},save:function(){document.getElementById("CorsSettings").value=JSON.stringify(this.policies),document.getElementById("corsForm").submit()},back:function(){this.selectedPolicy=null},searchBox:function(){var i=$("#search-box");i.keypress((function(i){if(13==i.which){var e=$("#corsAdmin > ul > li:visible");return 1==e.length&&(window.location=e.find(".edit").attr("href")),!1}})),i.keyup((function(e){var t=$(this).val().toLowerCase(),o=$("[data-filter-value]");if(27==e.keyCode||""==t)i.val(""),o.toggle(!0),$("#list-alert").addClass("d-none");else{var s=0;o.each((function(){var i=$(this).data("filter-value").toLowerCase().indexOf(t)>-1;$(this).toggle(i),i&&s++})),0==s?$("#list-alert").removeClass("d-none"):$("#list-alert").addClass("d-none")}}))}}}); +var optionsList=Vue.component("options-list",{props:["options","optionType","title","subTitle"],template:"#options-list",data:function(){return{newOption:""}},methods:{addOption:function(i){null!==i&&""!==i&&($.inArray(i.toLowerCase(),this.options.map((function(i){return i.toLowerCase()})))<0&&this.options.push(i))},deleteOption:function(i){this.options.splice($.inArray(i,this.options),1)}}}),policyDetails=Vue.component("policy-details",{components:{optionsList:optionsList},props:["policy"],template:"#policy-details"}),corsApp=new Vue({el:"#corsAdmin",components:{policyDetails:policyDetails,optionsList:optionsList},data:{selectedPolicy:null,policies:null,defaultPolicyName:null},updated:function(){this.searchBox()},methods:{newPolicy:function(){this.selectedPolicy={name:"New policy",allowedOrigins:[],allowAnyOrigin:!0,allowedMethods:[],allowAnyMethod:!0,allowedHeaders:[],allowAnyHeader:!0,allowCredentials:!0,isDefaultPolicy:!1}},editPolicy:function(i){this.selectedPolicy=Object.assign({},i),this.selectedPolicy.originalName=this.selectedPolicy.name},deletePolicy:function(i,e){this.selectedPolicy=null;var t=this.policies.filter((function(e){return e.name===i.name}));t.length>0&&this.policies.splice($.inArray(t[0],this.policies),1),e.stopPropagation(),this.save()},updatePolicy:function(i,e){if(i.isDefaultPolicy&&this.policies.forEach((function(i){return i.isDefaultPolicy=!1})),i.originalName){var t=this.policies.findIndex((function(e){return e.name===i.originalName}));this.policies[t]=i}else this.policies.push(i);this.save(),this.back()},save:function(){document.getElementById("corsSettings").value=JSON.stringify(this.policies),document.getElementById("corsForm").submit()},back:function(){this.selectedPolicy=null},searchBox:function(){var i=$("#search-box");i.keypress((function(i){if(13==i.which){var e=$("#corsAdmin > ul > li:visible");return 1==e.length&&(window.location=e.find(".edit").attr("href")),!1}})),i.keyup((function(e){var t=$(this).val().toLowerCase(),o=$("[data-filter-value]");if(27==e.keyCode||""==t)i.val(""),o.toggle(!0),$("#list-alert").addClass("d-none");else{var s=0;o.each((function(){var i=$(this).data("filter-value").toLowerCase().indexOf(t)>-1;$(this).toggle(i),i&&s++})),0==s?$("#list-alert").removeClass("d-none"):$("#list-alert").addClass("d-none")}}))}}}); From fe2ba6ed5ac8a7ef7e29b73bdc2c46d067674958 Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Wed, 21 Feb 2024 14:34:05 -0800 Subject: [PATCH 09/13] Support comments in recipes (#15386) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sébastien Ros --- .../Controllers/ImportController.cs | 3 ++- .../OrchardCore.Abstractions/Json/JOptions.cs | 4 ++-- .../Configuration/Internal/JsonConfigurationParser.cs | 9 ++------- .../OrchardCore.Mvc.Core/Utilities/StringExtensions.cs | 5 +++-- 4 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/OrchardCore.Modules/OrchardCore.Deployment/Controllers/ImportController.cs b/src/OrchardCore.Modules/OrchardCore.Deployment/Controllers/ImportController.cs index 19e1c0be4fb..34d2b5a3357 100644 --- a/src/OrchardCore.Modules/OrchardCore.Deployment/Controllers/ImportController.cs +++ b/src/OrchardCore.Modules/OrchardCore.Deployment/Controllers/ImportController.cs @@ -1,5 +1,6 @@ using System.IO; using System.IO.Compression; +using System.Text.Json; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; @@ -129,7 +130,7 @@ public async Task Json(ImportJsonViewModel model) return Forbid(); } - if (!model.Json.IsJson()) + if (!model.Json.IsJson(JOptions.Document)) { ModelState.AddModelError(nameof(model.Json), S["The recipe is written in an incorrect json format."]); } diff --git a/src/OrchardCore/OrchardCore.Abstractions/Json/JOptions.cs b/src/OrchardCore/OrchardCore.Abstractions/Json/JOptions.cs index f587531b902..7fdb2854208 100644 --- a/src/OrchardCore/OrchardCore.Abstractions/Json/JOptions.cs +++ b/src/OrchardCore/OrchardCore.Abstractions/Json/JOptions.cs @@ -62,8 +62,8 @@ static JOptions() Document = new JsonDocumentOptions { - CommentHandling = Default.ReadCommentHandling, - AllowTrailingCommas = Default.AllowTrailingCommas, + CommentHandling = JsonCommentHandling.Skip, + AllowTrailingCommas = true, }; } } diff --git a/src/OrchardCore/OrchardCore.Abstractions/Shell/Configuration/Internal/JsonConfigurationParser.cs b/src/OrchardCore/OrchardCore.Abstractions/Shell/Configuration/Internal/JsonConfigurationParser.cs index 0ab3d1a1d41..67568bc1e93 100644 --- a/src/OrchardCore/OrchardCore.Abstractions/Shell/Configuration/Internal/JsonConfigurationParser.cs +++ b/src/OrchardCore/OrchardCore.Abstractions/Shell/Configuration/Internal/JsonConfigurationParser.cs @@ -54,15 +54,10 @@ private JsonConfigurationParser() { } private async Task> ParseStreamAsync(Stream input) { - var jsonDocumentOptions = new JsonDocumentOptions - { - CommentHandling = JsonCommentHandling.Skip, - AllowTrailingCommas = true, - }; - try { - using (var doc = await JsonDocument.ParseAsync(input, jsonDocumentOptions)) + // Use JOptions.Document to allow comments and trailing commas + using (var doc = await JsonDocument.ParseAsync(input, JOptions.Document)) { if (doc.RootElement.ValueKind != JsonValueKind.Object) { diff --git a/src/OrchardCore/OrchardCore.Mvc.Core/Utilities/StringExtensions.cs b/src/OrchardCore/OrchardCore.Mvc.Core/Utilities/StringExtensions.cs index fcf2247b0a0..8ecf827b993 100644 --- a/src/OrchardCore/OrchardCore.Mvc.Core/Utilities/StringExtensions.cs +++ b/src/OrchardCore/OrchardCore.Mvc.Core/Utilities/StringExtensions.cs @@ -4,6 +4,7 @@ using System.Globalization; using System.Net; using System.Text; +using System.Text.Json; using System.Text.Json.Nodes; using System.Text.RegularExpressions; using Cysharp.Text; @@ -501,11 +502,11 @@ public static string ToPascalCase(this string attribute, char upperAfterDelimite /// /// Tests if a string is valid json. /// - public static bool IsJson(this string json) + public static bool IsJson(this string json, JsonDocumentOptions jsonDocumentOptions = default) { try { - JsonNode.Parse(json); + JsonNode.Parse(json, null, jsonDocumentOptions); return true; } catch From d9816f7c9b2d8fca38288de61324f3ae75570f05 Mon Sep 17 00:00:00 2001 From: Antoine Griffard Date: Thu, 22 Feb 2024 00:20:39 +0100 Subject: [PATCH 10/13] Bootstrap 5.3.3 (#15374) Co-authored-by: Mike Alhayek Co-authored-by: Sebastien Ros --- .../package-lock.json | 14 +- .../OrchardCore.AdminDashboard/package.json | 2 +- .../OrchardCore.AdminMenu/package-lock.json | 14 +- .../OrchardCore.AdminMenu/package.json | 2 +- .../OrchardCore.AuditTrail/package-lock.json | 14 +- .../OrchardCore.AuditTrail/package.json | 2 +- .../package-lock.json | 8 +- .../OrchardCore.ContentFields/package.json | 2 +- .../wwwroot/Scripts/steporder.js | 2 +- .../wwwroot/Scripts/steporder.min.js | 2 +- .../OrchardCore.Markdown/package-lock.json | 14 +- .../OrchardCore.Markdown/package.json | 2 +- .../OrchardCore.Media/package-lock.json | 14 +- .../OrchardCore.Media/package.json | 2 +- .../ResourceManagementOptionsConfiguration.cs | 22 +- .../OrchardCore.Resources/package-lock.json | 14 +- .../OrchardCore.Resources/package.json | 2 +- .../wwwroot/Scripts/bootstrap.bundle.js | 15 +- .../wwwroot/Scripts/bootstrap.bundle.min.js | 6 +- .../wwwroot/Scripts/bootstrap.js | 15 +- .../wwwroot/Scripts/bootstrap.min.js | 6 +- .../wwwroot/Scripts/trumbowyg-plugins.js | 2842 ++++++++--------- .../wwwroot/Scripts/trumbowyg-plugins.min.js | 2 +- .../wwwroot/Styles/bootstrap.css | 51 +- .../wwwroot/Styles/bootstrap.min.css | 6 +- .../wwwroot/Styles/bootstrap.rtl.css | 56 +- .../wwwroot/Styles/bootstrap.rtl.min.css | 6 +- .../wwwroot/Styles/trumbowyg-plugins.css | 140 +- .../wwwroot/Styles/trumbowyg-plugins.min.css | 2 +- .../OrchardCore.Setup/package-lock.json | 14 +- .../OrchardCore.Setup/package.json | 2 +- .../wwwroot/Scripts/setup.js | 17 +- .../wwwroot/Scripts/setup.min.js | 6 +- .../wwwroot/Styles/setup.css | 75 +- .../wwwroot/Styles/setup.min.css | 6 +- .../OrchardCore.Shortcodes/package-lock.json | 14 +- .../OrchardCore.Shortcodes/package.json | 2 +- .../OrchardCore.Themes/package-lock.json | 14 +- .../OrchardCore.Themes/package.json | 2 +- .../OrchardCore.Workflows/package-lock.json | 14 +- .../OrchardCore.Workflows/package.json | 2 +- .../Assets/js/header/global/constants.js | 7 +- .../TheAdmin/package-lock.json | 14 +- src/OrchardCore.Themes/TheAdmin/package.json | 2 +- .../TheAdmin/wwwroot/js/TheAdmin-header.js | 9 +- .../wwwroot/js/TheAdmin-header.min.js | 2 +- .../TheTheme/package-lock.json | 14 +- src/OrchardCore.Themes/TheTheme/package.json | 2 +- .../reference/modules/Resources/README.md | 4 +- src/docs/resources/libraries/README.md | 2 +- 50 files changed, 1754 insertions(+), 1749 deletions(-) diff --git a/src/OrchardCore.Modules/OrchardCore.AdminDashboard/package-lock.json b/src/OrchardCore.Modules/OrchardCore.AdminDashboard/package-lock.json index 48765ccb97c..d7e103934cd 100644 --- a/src/OrchardCore.Modules/OrchardCore.AdminDashboard/package-lock.json +++ b/src/OrchardCore.Modules/OrchardCore.AdminDashboard/package-lock.json @@ -8,7 +8,7 @@ "name": "orchardcore.admindashboard", "version": "1.0.0", "dependencies": { - "bootstrap": "5.3.2" + "bootstrap": "5.3.3" } }, "node_modules/@popperjs/core": { @@ -22,9 +22,9 @@ } }, "node_modules/bootstrap": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", - "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", "funding": [ { "type": "github", @@ -48,9 +48,9 @@ "peer": true }, "bootstrap": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", - "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", "requires": {} } } diff --git a/src/OrchardCore.Modules/OrchardCore.AdminDashboard/package.json b/src/OrchardCore.Modules/OrchardCore.AdminDashboard/package.json index 9db89dc7018..386b0ca6843 100644 --- a/src/OrchardCore.Modules/OrchardCore.AdminDashboard/package.json +++ b/src/OrchardCore.Modules/OrchardCore.AdminDashboard/package.json @@ -2,6 +2,6 @@ "name": "orchardcore.admindashboard", "version": "1.0.0", "dependencies": { - "bootstrap": "5.3.2" + "bootstrap": "5.3.3" } } diff --git a/src/OrchardCore.Modules/OrchardCore.AdminMenu/package-lock.json b/src/OrchardCore.Modules/OrchardCore.AdminMenu/package-lock.json index 0fa4d87f30b..e956244fc35 100644 --- a/src/OrchardCore.Modules/OrchardCore.AdminMenu/package-lock.json +++ b/src/OrchardCore.Modules/OrchardCore.AdminMenu/package-lock.json @@ -8,7 +8,7 @@ "name": "orchardcore.adminmenu", "version": "1.0.0", "dependencies": { - "bootstrap": "5.3.2", + "bootstrap": "5.3.3", "fontawesome-iconpicker": "3.2.0" } }, @@ -23,9 +23,9 @@ } }, "node_modules/bootstrap": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", - "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", "funding": [ { "type": "github", @@ -55,9 +55,9 @@ "peer": true }, "bootstrap": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", - "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", "requires": {} }, "fontawesome-iconpicker": { diff --git a/src/OrchardCore.Modules/OrchardCore.AdminMenu/package.json b/src/OrchardCore.Modules/OrchardCore.AdminMenu/package.json index 8574228fb25..77be46b6dc4 100644 --- a/src/OrchardCore.Modules/OrchardCore.AdminMenu/package.json +++ b/src/OrchardCore.Modules/OrchardCore.AdminMenu/package.json @@ -2,7 +2,7 @@ "name": "orchardcore.adminmenu", "version": "1.0.0", "dependencies": { - "bootstrap": "5.3.2", + "bootstrap": "5.3.3", "fontawesome-iconpicker": "3.2.0" } } diff --git a/src/OrchardCore.Modules/OrchardCore.AuditTrail/package-lock.json b/src/OrchardCore.Modules/OrchardCore.AuditTrail/package-lock.json index 0ecbc7e5f28..6fd119a3934 100644 --- a/src/OrchardCore.Modules/OrchardCore.AuditTrail/package-lock.json +++ b/src/OrchardCore.Modules/OrchardCore.AuditTrail/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "MIT", "dependencies": { - "bootstrap": "5.3.2", + "bootstrap": "5.3.3", "diff": "5.1.0", "react": "^16.14.0", "react-diff-viewer": "^3.1.1", @@ -2506,9 +2506,9 @@ } }, "node_modules/bootstrap": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", - "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", "funding": [ { "type": "github", @@ -7117,9 +7117,9 @@ "optional": true }, "bootstrap": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", - "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", "requires": {} }, "brace-expansion": { diff --git a/src/OrchardCore.Modules/OrchardCore.AuditTrail/package.json b/src/OrchardCore.Modules/OrchardCore.AuditTrail/package.json index fb45f8aa776..480a5181055 100644 --- a/src/OrchardCore.Modules/OrchardCore.AuditTrail/package.json +++ b/src/OrchardCore.Modules/OrchardCore.AuditTrail/package.json @@ -5,7 +5,7 @@ "license": "MIT", "description": "A diff module for OrchardCore.", "dependencies": { - "bootstrap": "5.3.2", + "bootstrap": "5.3.3", "diff": "5.1.0", "react": "^16.14.0", "react-diff-viewer": "^3.1.1", diff --git a/src/OrchardCore.Modules/OrchardCore.ContentFields/package-lock.json b/src/OrchardCore.Modules/OrchardCore.ContentFields/package-lock.json index 0dfbfdcc143..8f9603861af 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/package-lock.json +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/package-lock.json @@ -8,7 +8,7 @@ "name": "orchardcore.contentfields", "version": "1.0.0", "dependencies": { - "bootstrap": "5.3.2" + "bootstrap": "5.3.3" } }, "node_modules/@popperjs/core": { @@ -22,9 +22,9 @@ } }, "node_modules/bootstrap": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", - "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", "funding": [ { "type": "github", diff --git a/src/OrchardCore.Modules/OrchardCore.ContentFields/package.json b/src/OrchardCore.Modules/OrchardCore.ContentFields/package.json index 256bc781b6a..29024527ecc 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/package.json +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/package.json @@ -2,6 +2,6 @@ "name": "orchardcore.contentfields", "version": "1.0.0", "dependencies": { - "bootstrap": "5.3.2" + "bootstrap": "5.3.3" } } diff --git a/src/OrchardCore.Modules/OrchardCore.Deployment/wwwroot/Scripts/steporder.js b/src/OrchardCore.Modules/OrchardCore.Deployment/wwwroot/Scripts/steporder.js index e9776c52404..9ae97727786 100644 --- a/src/OrchardCore.Modules/OrchardCore.Deployment/wwwroot/Scripts/steporder.js +++ b/src/OrchardCore.Modules/OrchardCore.Deployment/wwwroot/Scripts/steporder.js @@ -22,7 +22,7 @@ function updateStepOrders(oldIndex, newIndex) { } $(function () { var sortable = document.getElementById("stepOrder"); - if (!sortable) { + if (sortable) { return; } var sortable = Sortable.create(sortable, { diff --git a/src/OrchardCore.Modules/OrchardCore.Deployment/wwwroot/Scripts/steporder.min.js b/src/OrchardCore.Modules/OrchardCore.Deployment/wwwroot/Scripts/steporder.min.js index 9322f5f5f7a..cfd9c35556a 100644 --- a/src/OrchardCore.Modules/OrchardCore.Deployment/wwwroot/Scripts/steporder.min.js +++ b/src/OrchardCore.Modules/OrchardCore.Deployment/wwwroot/Scripts/steporder.min.js @@ -1 +1 @@ -function updateStepOrders(e,t){var r=$("#stepOrderUrl").data("url"),a=$("#deploymentPlanId").data("id");$.ajax({url:r,method:"POST",data:{__RequestVerificationToken:$("input[name='__RequestVerificationToken']").val(),id:a,newIndex:t,oldIndex:e},error:function(e){alert($("#stepOrderErrorMessage").data("message"))}})}$((function(){var e=document.getElementById("stepOrder");if(!e){return;}e=Sortable.create(e,{handle:".ui-sortable-handle",onSort:function(e){updateStepOrders(e.oldIndex,e.newIndex)}})})); +function updateStepOrders(e,t){var r=$("#stepOrderUrl").data("url"),a=$("#deploymentPlanId").data("id");$.ajax({url:r,method:"POST",data:{__RequestVerificationToken:$("input[name='__RequestVerificationToken']").val(),id:a,newIndex:t,oldIndex:e},error:function(e){alert($("#stepOrderErrorMessage").data("message"))}})}$((function(){if(!(e=document.getElementById("stepOrder")))var e=Sortable.create(e,{handle:".ui-sortable-handle",onSort:function(e){updateStepOrders(e.oldIndex,e.newIndex)}})})); diff --git a/src/OrchardCore.Modules/OrchardCore.Markdown/package-lock.json b/src/OrchardCore.Modules/OrchardCore.Markdown/package-lock.json index 23596fb7b0d..40b24087c17 100644 --- a/src/OrchardCore.Modules/OrchardCore.Markdown/package-lock.json +++ b/src/OrchardCore.Modules/OrchardCore.Markdown/package-lock.json @@ -8,7 +8,7 @@ "name": "orchardcore.markdown", "version": "1.0.0", "dependencies": { - "bootstrap": "5.3.2", + "bootstrap": "5.3.3", "easymde": "2.18.0" } }, @@ -49,9 +49,9 @@ } }, "node_modules/bootstrap": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", - "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", "funding": [ { "type": "github", @@ -142,9 +142,9 @@ } }, "bootstrap": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", - "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", "requires": {} }, "codemirror": { diff --git a/src/OrchardCore.Modules/OrchardCore.Markdown/package.json b/src/OrchardCore.Modules/OrchardCore.Markdown/package.json index f6b14e18286..f69520d2483 100644 --- a/src/OrchardCore.Modules/OrchardCore.Markdown/package.json +++ b/src/OrchardCore.Modules/OrchardCore.Markdown/package.json @@ -2,7 +2,7 @@ "name": "orchardcore.markdown", "version": "1.0.0", "dependencies": { - "bootstrap": "5.3.2", + "bootstrap": "5.3.3", "easymde": "2.18.0" } } diff --git a/src/OrchardCore.Modules/OrchardCore.Media/package-lock.json b/src/OrchardCore.Modules/OrchardCore.Media/package-lock.json index 87f64757257..c88be49645c 100644 --- a/src/OrchardCore.Modules/OrchardCore.Media/package-lock.json +++ b/src/OrchardCore.Modules/OrchardCore.Media/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "dependencies": { "blueimp-file-upload": "10.32.0", - "bootstrap": "5.3.2" + "bootstrap": "5.3.3" } }, "node_modules/@popperjs/core": { @@ -57,9 +57,9 @@ } }, "node_modules/bootstrap": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", - "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", "funding": [ { "type": "github", @@ -117,9 +117,9 @@ "optional": true }, "bootstrap": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", - "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", "requires": {} }, "jquery": { diff --git a/src/OrchardCore.Modules/OrchardCore.Media/package.json b/src/OrchardCore.Modules/OrchardCore.Media/package.json index 1a3b4f046d0..13e09e6705a 100644 --- a/src/OrchardCore.Modules/OrchardCore.Media/package.json +++ b/src/OrchardCore.Modules/OrchardCore.Media/package.json @@ -3,6 +3,6 @@ "version": "1.0.0", "dependencies": { "blueimp-file-upload": "10.32.0", - "bootstrap": "5.3.2" + "bootstrap": "5.3.3" } } diff --git a/src/OrchardCore.Modules/OrchardCore.Resources/ResourceManagementOptionsConfiguration.cs b/src/OrchardCore.Modules/OrchardCore.Resources/ResourceManagementOptionsConfiguration.cs index d29aa803543..f5368dcc1aa 100644 --- a/src/OrchardCore.Modules/OrchardCore.Resources/ResourceManagementOptionsConfiguration.cs +++ b/src/OrchardCore.Modules/OrchardCore.Resources/ResourceManagementOptionsConfiguration.cs @@ -179,31 +179,31 @@ ResourceManifest BuildManifest() .DefineScript("bootstrap") .SetDependencies("popperjs") .SetUrl("~/OrchardCore.Resources/Scripts/bootstrap.min.js", "~/OrchardCore.Resources/Scripts/bootstrap.js") - .SetCdn("https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.min.js", "https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.js") - .SetCdnIntegrity("sha384-BBtl+eGJRgqQAUMxJ7pMwbEyER4l1g+O15P+16Ep7Q9Q+zqX6gSbd85u4mG4QzX+", "sha384-0OXpCFnSQ8aVy03XgJ/CRB6pSELypcPWNcgqPnyguU/ADjPf/kx/dG4WfXjjU64D") - .SetVersion("5.3.2"); + .SetCdn("https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.min.js", "https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.js") + .SetCdnIntegrity("sha384-0pUGZvbkm6XF6gxjEnlmuGrJXVbNuzT9qBBavbLwCsOGabYfZo0T0to5eqruptLy", "sha384-jYoAmFjufJZfBzwTARyz2gk7Jj9mQb2cLeP9n5PcgLCVVd+8QfjY1+qFj+rBkViV") + .SetVersion("5.3.3"); manifest .DefineScript("bootstrap-bundle") .SetDependencies("jQuery") .SetUrl("~/OrchardCore.Resources/Scripts/bootstrap.bundle.min.js", "~/OrchardCore.Resources/Scripts/bootstrap.bundle.js") - .SetCdn("https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js", "https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.js") - .SetCdnIntegrity("sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL", "sha384-6yr0NH5/NO/eJn8MXILS94sAfqCcf2wpWTTxRwskNor6dIjwbYjw1/PZpr654rQ5") - .SetVersion("5.3.2"); + .SetCdn("https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js", "https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.js") + .SetCdnIntegrity("sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz", "sha384-5xO2n1cyGKAe630nacBqFQxWoXjUIkhoc/FxQrWM07EIZ3TuqkAsusDeyPDOIeid") + .SetVersion("5.3.3"); manifest .DefineStyle("bootstrap") .SetUrl("~/OrchardCore.Resources/Styles/bootstrap.min.css", "~/OrchardCore.Resources/Styles/bootstrap.css") - .SetCdn("https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css", "https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.css") - .SetCdnIntegrity("sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN", "sha384-8dbpXuP2nso7zrhApj0aSxeb0ZitbTeO0hTKxRcXavYE0vv4nhBEqvv+o+0X94A8") - .SetVersion("5.3.2"); + .SetCdn("https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css", "https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.css") + .SetCdnIntegrity("sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH", "sha384-qAlWxD5RDF+aEdUc1Z7GR/tE4zYjX1Igo/LrIexlnzM6G63a6F1fXZWpZKSrSW86") + .SetVersion("5.3.3"); manifest .DefineStyle("bootstrap-rtl") .SetUrl("~/OrchardCore.Resources/Styles/bootstrap.rtl.min.css", "~/OrchardCore.Resources/Styles/bootstrap.rtl.css") - .SetCdn("https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.rtl.min.css", "https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.rtl.css") + .SetCdn("https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.rtl.min.css", "https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.rtl.css") .SetCdnIntegrity("sha384-nU14brUcp6StFntEOOEBvcJm4huWjB0OcIeQ3fltAfSmuZFrkAif0T+UtNGlKKQv", "sha384-CEku08bnqQAT/vzi6/zxMQmSyxoOTK1jx7mbT8P7etf/YhPbxASCX5BIVuAK9sfy") - .SetVersion("5.3.2"); + .SetVersion("5.3.3"); manifest .DefineStyle("bootstrap-select") diff --git a/src/OrchardCore.Modules/OrchardCore.Resources/package-lock.json b/src/OrchardCore.Modules/OrchardCore.Resources/package-lock.json index 41a3b57cc41..99882e67ca2 100644 --- a/src/OrchardCore.Modules/OrchardCore.Resources/package-lock.json +++ b/src/OrchardCore.Modules/OrchardCore.Resources/package-lock.json @@ -10,7 +10,7 @@ "dependencies": { "@fortawesome/fontawesome-free": "6.5.1", "@popperjs/core": "2.11.8", - "bootstrap": "5.3.2", + "bootstrap": "5.3.3", "bootstrap-select": "1.14.0-beta3", "codemirror": "5.65.7", "jquery": "3.7.1", @@ -162,9 +162,9 @@ "dev": true }, "node_modules/bootstrap": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", - "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", "funding": [ { "type": "github", @@ -744,9 +744,9 @@ "dev": true }, "bootstrap": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", - "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", "requires": {} }, "bootstrap-select": { diff --git a/src/OrchardCore.Modules/OrchardCore.Resources/package.json b/src/OrchardCore.Modules/OrchardCore.Resources/package.json index 4057dd3ba85..6d518c62372 100644 --- a/src/OrchardCore.Modules/OrchardCore.Resources/package.json +++ b/src/OrchardCore.Modules/OrchardCore.Resources/package.json @@ -4,7 +4,7 @@ "dependencies": { "@fortawesome/fontawesome-free": "6.5.1", "@popperjs/core": "2.11.8", - "bootstrap": "5.3.2", + "bootstrap": "5.3.3", "bootstrap-select": "1.14.0-beta3", "nouislider": "15.7.0", "codemirror": "5.65.7", diff --git a/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/bootstrap.bundle.js b/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/bootstrap.bundle.js index d783fa4a280..42738433bad 100644 --- a/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/bootstrap.bundle.js +++ b/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/bootstrap.bundle.js @@ -33,8 +33,8 @@ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToAr function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } /*! - * Bootstrap v5.3.2 (https://getbootstrap.com/) - * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Bootstrap v5.3.3 (https://getbootstrap.com/) + * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ (function (global, factory) { @@ -744,7 +744,7 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == /** * Constants */ - var VERSION = '5.3.2'; + var VERSION = '5.3.3'; /** * Class definition @@ -858,9 +858,11 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) { hrefAttribute = "#".concat(hrefAttribute.split('#')[1]); } - selector = hrefAttribute && hrefAttribute !== '#' ? parseSelector(hrefAttribute.trim()) : null; + selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null; } - return selector; + return selector ? selector.split(',').map(function (sel) { + return parseSelector(sel); + }).join(',') : null; }; var SelectorEngine = { find: function find(selector) { @@ -5186,7 +5188,10 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == br: [], col: [], code: [], + dd: [], div: [], + dl: [], + dt: [], em: [], hr: [], h1: [], diff --git a/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/bootstrap.bundle.min.js b/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/bootstrap.bundle.min.js index b1a05a4a2ab..f88a1516027 100644 --- a/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/bootstrap.bundle.min.js +++ b/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/bootstrap.bundle.min.js @@ -1,6 +1,6 @@ function _get(){return _get="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var i=_superPropBase(e,t);if(i){var r=Object.getOwnPropertyDescriptor(i,t);return r.get?r.get.call(arguments.length<3?e:n):r.value}},_get.apply(this,arguments)}function _superPropBase(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=_getPrototypeOf(e)););return e}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&_setPrototypeOf(e,t)}function _setPrototypeOf(e,t){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},_setPrototypeOf(e,t)}function _createSuper(e){var t=_isNativeReflectConstruct();return function(){var n,i=_getPrototypeOf(e);if(t){var r=_getPrototypeOf(this).constructor;n=Reflect.construct(i,arguments,r)}else n=i.apply(this,arguments);return _possibleConstructorReturn(this,n)}}function _possibleConstructorReturn(e,t){if(t&&("object"===_typeof(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(e)}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function _getPrototypeOf(e){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},_getPrototypeOf(e)}function ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function _objectSpread(e){for(var t=1;t=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw o}}}}function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_unsupportedIterableToArray(e)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray(e,t):void 0}}function _iterableToArray(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _arrayWithoutHoles(e){if(Array.isArray(e))return _arrayLikeToArray(e)}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n0?document.querySelector(a(e)):null},u=function(e){if(!l(e)||0===e.getClientRects().length)return!1;var t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){var i=e.closest("summary");if(i&&i.parentNode!==n)return!1;if(null===i)return!1}return t},f=function(e){return!e||e.nodeType!==Node.ELEMENT_NODE||(!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")))},d=function e(t){if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){var n=t.getRootNode();return n instanceof ShadowRoot?n:null}return t instanceof ShadowRoot?t:t.parentNode?e(t.parentNode):null},h=function(){},p=function(e){e.offsetHeight},_=function(){return window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null},v=[],g=function(){return"rtl"===document.documentElement.dir},m=function(e){var t;t=function(){var t=_();if(t){var n=e.NAME,i=t.fn[n];t.fn[n]=e.jQueryInterface,t.fn[n].Constructor=e,t.fn[n].noConflict=function(){return t.fn[n]=i,e.jQueryInterface}}},"loading"===document.readyState?(v.length||document.addEventListener("DOMContentLoaded",(function(){for(var e=0,t=v;e1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;return"function"==typeof e?e.apply(void 0,_toConsumableArray(t)):n},b=function(e,t){if(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]){var n=function(e){if(!e)return 0;var t=window.getComputedStyle(e),n=t.transitionDuration,i=t.transitionDelay,r=Number.parseFloat(n),o=Number.parseFloat(i);return r||o?(n=n.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(n)+Number.parseFloat(i))):0}(t)+5,i=!1;t.addEventListener(o,(function n(r){r.target===t&&(i=!0,t.removeEventListener(o,n),y(e))})),setTimeout((function(){i||s(t)}),n)}else y(e)},k=function(e,t,n,i){var r=e.length,o=e.indexOf(t);return-1===o?!n&&i?e[r-1]:e[0]:(o+=n?1:-1,i&&(o=(o+r)%r),e[Math.max(0,Math.min(o,r-1))])},w=/[^.]*(?=\..*)\.|.*/,C=/\..*/,O=/::\d+$/,A={},E=1,T={mouseenter:"mouseover",mouseleave:"mouseout"},S=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function x(e,t){return t&&"".concat(t,"::").concat(E++)||e.uidEvent||E++}function I(e){var t=x(e);return e.uidEvent=t,A[t]=A[t]||{},A[t]}function P(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(e).find((function(e){return e.callable===t&&e.delegationSelector===n}))}function L(e,t,n){var i="string"==typeof t,r=i?n:t||n,o=M(e);return S.has(o)||(o=e),[i,r,o]}function j(e,t,n,i,r){if("string"==typeof t&&e){var o=_slicedToArray(L(t,n,i),3),a=o[0],s=o[1],l=o[2];if(t in T){s=function(e){return function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)}}(s)}var c=I(e),u=c[l]||(c[l]={}),f=P(u,s,a?n:null);if(f)f.oneOff=f.oneOff&&r;else{var d=x(s,t.replace(w,"")),h=a?function(e,t,n){return function i(r){for(var o=e.querySelectorAll(t),a=r.target;a&&a!==this;a=a.parentNode){var s,l=_createForOfIteratorHelper(o);try{for(l.s();!(s=l.n()).done;)if(s.value===a)return H(r,{delegateTarget:a}),i.oneOff&&F.off(e,r.type,t,n),n.apply(a,[r])}catch(e){l.e(e)}finally{l.f()}}}}(e,n,s):function(e,t){return function n(i){return H(i,{delegateTarget:e}),n.oneOff&&F.off(e,i.type,t),t.apply(e,[i])}}(e,s);h.delegationSelector=a?n:null,h.callable=s,h.oneOff=r,h.uidEvent=d,u[d]=h,e.addEventListener(l,h,a)}}}function D(e,t,n,i,r){var o=P(t[n],i,r);o&&(e.removeEventListener(n,o,Boolean(r)),delete t[n][o.uidEvent])}function N(e,t,n,i){for(var r=t[n]||{},o=0,a=Object.entries(r);o1&&void 0!==arguments[1]?arguments[1]:{},n=function(){var t=_slicedToArray(r[i],2),n=t[0],o=t[1];try{e[n]=o}catch(t){Object.defineProperty(e,n,{configurable:!0,get:function(){return o}})}},i=0,r=Object.entries(t);i1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType,i=0,r=Object.entries(n);i2&&void 0!==arguments[2])||arguments[2])}},{key:"_getConfig",value:function(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}}],[{key:"getInstance",value:function(e){return i(c(e),this.DATA_KEY)}},{key:"getOrCreateInstance",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(e)||new this(e,"object"===_typeof(t)?t:null)}},{key:"VERSION",get:function(){return"5.3.2"}},{key:"DATA_KEY",get:function(){return"bs.".concat(this.NAME)}},{key:"EVENT_KEY",get:function(){return".".concat(this.DATA_KEY)}},{key:"eventName",value:function(e){return"".concat(e).concat(this.EVENT_KEY)}}]),o}(K),U=function(e){var t=e.getAttribute("data-bs-target");if(!t||"#"===t){var n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n="#".concat(n.split("#")[1])),t=n&&"#"!==n?a(n.trim()):null}return t},X={find:function(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return(t=[]).concat.apply(t,_toConsumableArray(Element.prototype.querySelectorAll.call(n,e)))},findOne:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(t,e)},children:function(e,t){var n;return(n=[]).concat.apply(n,_toConsumableArray(e.children)).filter((function(e){return e.matches(t)}))},parents:function(e,t){for(var n=[],i=e.parentNode.closest(t);i;)n.push(i),i=i.parentNode.closest(t);return n},prev:function(e,t){for(var n=e.previousElementSibling;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next:function(e,t){for(var n=e.nextElementSibling;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren:function(e){var t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((function(e){return"".concat(e,':not([tabindex^="-"])')})).join(",");return this.find(t,e).filter((function(e){return!f(e)&&u(e)}))},getSelectorFromElement:function(e){var t=U(e);return t&&X.findOne(t)?t:null},getElementFromSelector:function(e){var t=U(e);return t?X.findOne(t):null},getMultipleElementsFromSelector:function(e){var t=U(e);return t?X.find(t):[]}},Y=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"hide",n="click.dismiss".concat(e.EVENT_KEY),i=e.NAME;F.on(document,n,'[data-bs-dismiss="'.concat(i,'"]'),(function(n){if(["A","AREA"].includes(this.tagName)&&n.preventDefault(),!f(this)){var r=X.getElementFromSelector(this)||this.closest(".".concat(i));e.getOrCreateInstance(r)[t]()}}))},$=".".concat("bs.alert"),G="close".concat($),J="closed".concat($),Z=function(e){_inherits(n,e);var t=_createSuper(n);function n(){return _classCallCheck(this,n),t.apply(this,arguments)}return _createClass(n,[{key:"close",value:function(){var e=this;if(!F.trigger(this._element,G).defaultPrevented){this._element.classList.remove("show");var t=this._element.classList.contains("fade");this._queueCallback((function(){return e._destroyElement()}),this._element,t)}}},{key:"_destroyElement",value:function(){this._element.remove(),F.trigger(this._element,J),this.dispose()}}],[{key:"NAME",get:function(){return"alert"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e](this)}}))}}]),n}(Q);Y(Z,"close"),m(Z);var ee=".".concat("bs.button"),te='[data-bs-toggle="button"]',ne="click".concat(ee).concat(".data-api"),ie=function(e){_inherits(n,e);var t=_createSuper(n);function n(){return _classCallCheck(this,n),t.apply(this,arguments)}return _createClass(n,[{key:"toggle",value:function(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}}],[{key:"NAME",get:function(){return"button"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this);"toggle"===e&&t[e]()}))}}]),n}(Q);F.on(document,ne,te,(function(e){e.preventDefault();var t=e.target.closest(te);ie.getOrCreateInstance(t).toggle()})),m(ie);var re=".bs.swipe",oe="touchstart".concat(re),ae="touchmove".concat(re),se="touchend".concat(re),le="pointerdown".concat(re),ce="pointerup".concat(re),ue={endCallback:null,leftCallback:null,rightCallback:null},fe={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"},de=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;return _classCallCheck(this,n),(r=t.call(this))._element=e,e&&n.isSupported()?(r._config=r._getConfig(i),r._deltaX=0,r._supportPointerEvents=Boolean(window.PointerEvent),r._initEvents(),r):_possibleConstructorReturn(r)}return _createClass(n,[{key:"dispose",value:function(){F.off(this._element,re)}},{key:"_start",value:function(e){this._supportPointerEvents?this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX):this._deltaX=e.touches[0].clientX}},{key:"_end",value:function(e){this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX-this._deltaX),this._handleSwipe(),y(this._config.endCallback)}},{key:"_move",value:function(e){this._deltaX=e.touches&&e.touches.length>1?0:e.touches[0].clientX-this._deltaX}},{key:"_handleSwipe",value:function(){var e=Math.abs(this._deltaX);if(!(e<=40)){var t=e/this._deltaX;this._deltaX=0,t&&y(t>0?this._config.rightCallback:this._config.leftCallback)}}},{key:"_initEvents",value:function(){var e=this;this._supportPointerEvents?(F.on(this._element,le,(function(t){return e._start(t)})),F.on(this._element,ce,(function(t){return e._end(t)})),this._element.classList.add("pointer-event")):(F.on(this._element,oe,(function(t){return e._start(t)})),F.on(this._element,ae,(function(t){return e._move(t)})),F.on(this._element,se,(function(t){return e._end(t)})))}},{key:"_eventIsPointerPenTouch",value:function(e){return this._supportPointerEvents&&("pen"===e.pointerType||"touch"===e.pointerType)}}],[{key:"Default",get:function(){return ue}},{key:"DefaultType",get:function(){return fe}},{key:"NAME",get:function(){return"swipe"}},{key:"isSupported",value:function(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}]),n}(K),he=".".concat("bs.carousel"),pe=".data-api",_e="next",ve="prev",ge="left",me="right",ye="slide".concat(he),be="slid".concat(he),ke="keydown".concat(he),we="mouseenter".concat(he),Ce="mouseleave".concat(he),Oe="dragstart".concat(he),Ae="load".concat(he).concat(pe),Ee="click".concat(he).concat(pe),Te="carousel",Se="active",xe=".active",Ie=".carousel-item",Pe=xe+Ie,Le=(_defineProperty(e={},"ArrowLeft",me),_defineProperty(e,"ArrowRight",ge),e),je={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},De={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"},Ne=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;return _classCallCheck(this,n),(r=t.call(this,e,i))._interval=null,r._activeElement=null,r._isSliding=!1,r.touchTimeout=null,r._swipeHelper=null,r._indicatorsElement=X.findOne(".carousel-indicators",r._element),r._addEventListeners(),r._config.ride===Te&&r.cycle(),r}return _createClass(n,[{key:"next",value:function(){this._slide(_e)}},{key:"nextWhenVisible",value:function(){!document.hidden&&u(this._element)&&this.next()}},{key:"prev",value:function(){this._slide(ve)}},{key:"pause",value:function(){this._isSliding&&s(this._element),this._clearInterval()}},{key:"cycle",value:function(){var e=this;this._clearInterval(),this._updateInterval(),this._interval=setInterval((function(){return e.nextWhenVisible()}),this._config.interval)}},{key:"_maybeEnableCycle",value:function(){var e=this;this._config.ride&&(this._isSliding?F.one(this._element,be,(function(){return e.cycle()})):this.cycle())}},{key:"to",value:function(e){var t=this,n=this._getItems();if(!(e>n.length-1||e<0))if(this._isSliding)F.one(this._element,be,(function(){return t.to(e)}));else{var i=this._getItemIndex(this._getActive());if(i!==e){var r=e>i?_e:ve;this._slide(r,n[e])}}}},{key:"dispose",value:function(){this._swipeHelper&&this._swipeHelper.dispose(),_get(_getPrototypeOf(n.prototype),"dispose",this).call(this)}},{key:"_configAfterMerge",value:function(e){return e.defaultInterval=e.interval,e}},{key:"_addEventListeners",value:function(){var e=this;this._config.keyboard&&F.on(this._element,ke,(function(t){return e._keydown(t)})),"hover"===this._config.pause&&(F.on(this._element,we,(function(){return e.pause()})),F.on(this._element,Ce,(function(){return e._maybeEnableCycle()}))),this._config.touch&&de.isSupported()&&this._addTouchEventListeners()}},{key:"_addTouchEventListeners",value:function(){var e,t=this,n=_createForOfIteratorHelper(X.find(".carousel-item img",this._element));try{for(n.s();!(e=n.n()).done;){var i=e.value;F.on(i,Oe,(function(e){return e.preventDefault()}))}}catch(e){n.e(e)}finally{n.f()}var r={leftCallback:function(){return t._slide(t._directionToOrder(ge))},rightCallback:function(){return t._slide(t._directionToOrder(me))},endCallback:function(){"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(){return t._maybeEnableCycle()}),500+t._config.interval))}};this._swipeHelper=new de(this._element,r)}},{key:"_keydown",value:function(e){if(!/input|textarea/i.test(e.target.tagName)){var t=Le[e.key];t&&(e.preventDefault(),this._slide(this._directionToOrder(t)))}}},{key:"_getItemIndex",value:function(e){return this._getItems().indexOf(e)}},{key:"_setActiveIndicatorElement",value:function(e){if(this._indicatorsElement){var t=X.findOne(xe,this._indicatorsElement);t.classList.remove(Se),t.removeAttribute("aria-current");var n=X.findOne('[data-bs-slide-to="'.concat(e,'"]'),this._indicatorsElement);n&&(n.classList.add(Se),n.setAttribute("aria-current","true"))}}},{key:"_updateInterval",value:function(){var e=this._activeElement||this._getActive();if(e){var t=Number.parseInt(e.getAttribute("data-bs-interval"),10);this._config.interval=t||this._config.defaultInterval}}},{key:"_slide",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!this._isSliding){var i=this._getActive(),r=e===_e,o=n||k(this._getItems(),i,r,this._config.wrap);if(o!==i){var a=this._getItemIndex(o),s=function(n){return F.trigger(t._element,n,{relatedTarget:o,direction:t._orderToDirection(e),from:t._getItemIndex(i),to:a})};if(!s(ye).defaultPrevented&&i&&o){var l=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(a),this._activeElement=o;var c=r?"carousel-item-start":"carousel-item-end",u=r?"carousel-item-next":"carousel-item-prev";o.classList.add(u),p(o),i.classList.add(c),o.classList.add(c);this._queueCallback((function(){o.classList.remove(c,u),o.classList.add(Se),i.classList.remove(Se,u,c),t._isSliding=!1,s(be)}),i,this._isAnimated()),l&&this.cycle()}}}}},{key:"_isAnimated",value:function(){return this._element.classList.contains("slide")}},{key:"_getActive",value:function(){return X.findOne(Pe,this._element)}},{key:"_getItems",value:function(){return X.find(Ie,this._element)}},{key:"_clearInterval",value:function(){this._interval&&(clearInterval(this._interval),this._interval=null)}},{key:"_directionToOrder",value:function(e){return g()?e===ge?ve:_e:e===ge?_e:ve}},{key:"_orderToDirection",value:function(e){return g()?e===ve?ge:me:e===ve?me:ge}}],[{key:"Default",get:function(){return je}},{key:"DefaultType",get:function(){return De}},{key:"NAME",get:function(){return"carousel"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this,e);if("number"!=typeof e){if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e]()}}else t.to(e)}))}}]),n}(Q);F.on(document,Ee,"[data-bs-slide], [data-bs-slide-to]",(function(e){var t=X.getElementFromSelector(this);if(t&&t.classList.contains(Te)){e.preventDefault();var n=Ne.getOrCreateInstance(t),i=this.getAttribute("data-bs-slide-to");if(i)return n.to(i),void n._maybeEnableCycle();if("next"===V(this,"slide"))return n.next(),void n._maybeEnableCycle();n.prev(),n._maybeEnableCycle()}})),F.on(window,Ae,(function(){var e,t=_createForOfIteratorHelper(X.find('[data-bs-ride="carousel"]'));try{for(t.s();!(e=t.n()).done;){var n=e.value;Ne.getOrCreateInstance(n)}}catch(e){t.e(e)}finally{t.f()}})),m(Ne);var Me=".".concat("bs.collapse"),Fe="show".concat(Me),He="shown".concat(Me),Re="hide".concat(Me),We="hidden".concat(Me),Be="click".concat(Me).concat(".data-api"),ze="show",qe="collapse",Ve="collapsing",Ke=":scope .".concat(qe," .").concat(qe),Qe='[data-bs-toggle="collapse"]',Ue={parent:null,toggle:!0},Xe={parent:"(null|element)",toggle:"boolean"},Ye=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;_classCallCheck(this,n),(r=t.call(this,e,i))._isTransitioning=!1,r._triggerArray=[];var o,a=_createForOfIteratorHelper(X.find(Qe));try{for(a.s();!(o=a.n()).done;){var s=o.value,l=X.getSelectorFromElement(s),c=X.find(l).filter((function(e){return e===r._element}));null!==l&&c.length&&r._triggerArray.push(s)}}catch(e){a.e(e)}finally{a.f()}return r._initializeChildren(),r._config.parent||r._addAriaAndCollapsedClass(r._triggerArray,r._isShown()),r._config.toggle&&r.toggle(),r}return _createClass(n,[{key:"toggle",value:function(){this._isShown()?this.hide():this.show()}},{key:"show",value:function(){var e=this;if(!this._isTransitioning&&!this._isShown()){var t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((function(t){return t!==e._element})).map((function(e){return n.getOrCreateInstance(e,{toggle:!1})}))),!t.length||!t[0]._isTransitioning)if(!F.trigger(this._element,Fe).defaultPrevented){var i,r=_createForOfIteratorHelper(t);try{for(r.s();!(i=r.n()).done;){i.value.hide()}}catch(e){r.e(e)}finally{r.f()}var o=this._getDimension();this._element.classList.remove(qe),this._element.classList.add(Ve),this._element.style[o]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;var a=o[0].toUpperCase()+o.slice(1),s="scroll".concat(a);this._queueCallback((function(){e._isTransitioning=!1,e._element.classList.remove(Ve),e._element.classList.add(qe,ze),e._element.style[o]="",F.trigger(e._element,He)}),this._element,!0),this._element.style[o]="".concat(this._element[s],"px")}}}},{key:"hide",value:function(){var e=this;if(!this._isTransitioning&&this._isShown()&&!F.trigger(this._element,Re).defaultPrevented){var t=this._getDimension();this._element.style[t]="".concat(this._element.getBoundingClientRect()[t],"px"),p(this._element),this._element.classList.add(Ve),this._element.classList.remove(qe,ze);var n,i=_createForOfIteratorHelper(this._triggerArray);try{for(i.s();!(n=i.n()).done;){var r=n.value,o=X.getElementFromSelector(r);o&&!this._isShown(o)&&this._addAriaAndCollapsedClass([r],!1)}}catch(e){i.e(e)}finally{i.f()}this._isTransitioning=!0;this._element.style[t]="",this._queueCallback((function(){e._isTransitioning=!1,e._element.classList.remove(Ve),e._element.classList.add(qe),F.trigger(e._element,We)}),this._element,!0)}}},{key:"_isShown",value:function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(ze)}},{key:"_configAfterMerge",value:function(e){return e.toggle=Boolean(e.toggle),e.parent=c(e.parent),e}},{key:"_getDimension",value:function(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}},{key:"_initializeChildren",value:function(){if(this._config.parent){var e,t=_createForOfIteratorHelper(this._getFirstLevelChildren(Qe));try{for(t.s();!(e=t.n()).done;){var n=e.value,i=X.getElementFromSelector(n);i&&this._addAriaAndCollapsedClass([n],this._isShown(i))}}catch(e){t.e(e)}finally{t.f()}}}},{key:"_getFirstLevelChildren",value:function(e){var t=X.find(Ke,this._config.parent);return X.find(e,this._config.parent).filter((function(e){return!t.includes(e)}))}},{key:"_addAriaAndCollapsedClass",value:function(e,t){if(e.length){var n,i=_createForOfIteratorHelper(e);try{for(i.s();!(n=i.n()).done;){var r=n.value;r.classList.toggle("collapsed",!t),r.setAttribute("aria-expanded",t)}}catch(e){i.e(e)}finally{i.f()}}}}],[{key:"Default",get:function(){return Ue}},{key:"DefaultType",get:function(){return Xe}},{key:"NAME",get:function(){return"collapse"}},{key:"jQueryInterface",value:function(e){var t={};return"string"==typeof e&&/show|hide/.test(e)&&(t.toggle=!1),this.each((function(){var i=n.getOrCreateInstance(this,t);if("string"==typeof e){if(void 0===i[e])throw new TypeError('No method named "'.concat(e,'"'));i[e]()}}))}}]),n}(Q);F.on(document,Be,Qe,(function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();var t,n=_createForOfIteratorHelper(X.getMultipleElementsFromSelector(this));try{for(n.s();!(t=n.n()).done;){var i=t.value;Ye.getOrCreateInstance(i,{toggle:!1}).toggle()}}catch(e){n.e(e)}finally{n.f()}})),m(Ye);var $e="top",Ge="bottom",Je="right",Ze="left",et="auto",tt=[$e,Ge,Je,Ze],nt="start",it="end",rt="clippingParents",ot="viewport",at="popper",st="reference",lt=tt.reduce((function(e,t){return e.concat([t+"-"+nt,t+"-"+it])}),[]),ct=[].concat(tt,[et]).reduce((function(e,t){return e.concat([t,t+"-"+nt,t+"-"+it])}),[]),ut="beforeRead",ft="read",dt="afterRead",ht="beforeMain",pt="main",_t="afterMain",vt="beforeWrite",gt="write",mt="afterWrite",yt=[ut,ft,dt,ht,pt,_t,vt,gt,mt];function bt(e){return e?(e.nodeName||"").toLowerCase():null}function kt(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function wt(e){return e instanceof kt(e).Element||e instanceof Element}function Ct(e){return e instanceof kt(e).HTMLElement||e instanceof HTMLElement}function Ot(e){return"undefined"!=typeof ShadowRoot&&(e instanceof kt(e).ShadowRoot||e instanceof ShadowRoot)}var At={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},i=t.attributes[e]||{},r=t.elements[e];Ct(r)&&bt(r)&&(Object.assign(r.style,n),Object.keys(i).forEach((function(e){var t=i[e];!1===t?r.removeAttribute(e):r.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var i=t.elements[e],r=t.attributes[e]||{},o=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});Ct(i)&&bt(i)&&(Object.assign(i.style,o),Object.keys(r).forEach((function(e){i.removeAttribute(e)})))}))}},requires:["computeStyles"]};function Et(e){return e.split("-")[0]}var Tt=Math.max,St=Math.min,xt=Math.round;function It(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function Pt(){return!/^((?!chrome|android).)*safari/i.test(It())}function Lt(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var i=e.getBoundingClientRect(),r=1,o=1;t&&Ct(e)&&(r=e.offsetWidth>0&&xt(i.width)/e.offsetWidth||1,o=e.offsetHeight>0&&xt(i.height)/e.offsetHeight||1);var a=(wt(e)?kt(e):window).visualViewport,s=!Pt()&&n,l=(i.left+(s&&a?a.offsetLeft:0))/r,c=(i.top+(s&&a?a.offsetTop:0))/o,u=i.width/r,f=i.height/o;return{width:u,height:f,top:c,right:l+u,bottom:c+f,left:l,x:l,y:c}}function jt(e){var t=Lt(e),n=e.offsetWidth,i=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-i)<=1&&(i=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:i}}function Dt(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Ot(n)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Nt(e){return kt(e).getComputedStyle(e)}function Mt(e){return["table","td","th"].indexOf(bt(e))>=0}function Ft(e){return((wt(e)?e.ownerDocument:e.document)||window.document).documentElement}function Ht(e){return"html"===bt(e)?e:e.assignedSlot||e.parentNode||(Ot(e)?e.host:null)||Ft(e)}function Rt(e){return Ct(e)&&"fixed"!==Nt(e).position?e.offsetParent:null}function Wt(e){for(var t=kt(e),n=Rt(e);n&&Mt(n)&&"static"===Nt(n).position;)n=Rt(n);return n&&("html"===bt(n)||"body"===bt(n)&&"static"===Nt(n).position)?t:n||function(e){var t=/firefox/i.test(It());if(/Trident/i.test(It())&&Ct(e)&&"fixed"===Nt(e).position)return null;var n=Ht(e);for(Ot(n)&&(n=n.host);Ct(n)&&["html","body"].indexOf(bt(n))<0;){var i=Nt(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||t}function Bt(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function zt(e,t,n){return Tt(e,St(t,n))}function qt(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function Vt(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}var Kt={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,i=e.name,r=e.options,o=n.elements.arrow,a=n.modifiersData.popperOffsets,s=Et(n.placement),l=Bt(s),c=[Ze,Je].indexOf(s)>=0?"height":"width";if(o&&a){var u=function(e,t){return qt("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:Vt(e,tt))}(r.padding,n),f=jt(o),d="y"===l?$e:Ze,h="y"===l?Ge:Je,p=n.rects.reference[c]+n.rects.reference[l]-a[l]-n.rects.popper[c],_=a[l]-n.rects.reference[l],v=Wt(o),g=v?"y"===l?v.clientHeight||0:v.clientWidth||0:0,m=p/2-_/2,y=u[d],b=g-f[c]-u[h],k=g/2-f[c]/2+m,w=zt(y,k,b),C=l;n.modifiersData[i]=((t={})[C]=w,t.centerOffset=w-k,t)}},effect:function(e){var t=e.state,n=e.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=t.elements.popper.querySelector(i)))&&Dt(t.elements.popper,i)&&(t.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Qt(e){return e.split("-")[1]}var Ut={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Xt(e){var t,n=e.popper,i=e.popperRect,r=e.placement,o=e.variation,a=e.offsets,s=e.position,l=e.gpuAcceleration,c=e.adaptive,u=e.roundOffsets,f=e.isFixed,d=a.x,h=void 0===d?0:d,p=a.y,_=void 0===p?0:p,v="function"==typeof u?u({x:h,y:_}):{x:h,y:_};h=v.x,_=v.y;var g=a.hasOwnProperty("x"),m=a.hasOwnProperty("y"),y=Ze,b=$e,k=window;if(c){var w=Wt(n),C="clientHeight",O="clientWidth";if(w===kt(n)&&"static"!==Nt(w=Ft(n)).position&&"absolute"===s&&(C="scrollHeight",O="scrollWidth"),r===$e||(r===Ze||r===Je)&&o===it)b=Ge,_-=(f&&w===k&&k.visualViewport?k.visualViewport.height:w[C])-i.height,_*=l?1:-1;if(r===Ze||(r===$e||r===Ge)&&o===it)y=Je,h-=(f&&w===k&&k.visualViewport?k.visualViewport.width:w[O])-i.width,h*=l?1:-1}var A,E=Object.assign({position:s},c&&Ut),T=!0===u?function(e,t){var n=e.x,i=e.y,r=t.devicePixelRatio||1;return{x:xt(n*r)/r||0,y:xt(i*r)/r||0}}({x:h,y:_},kt(n)):{x:h,y:_};return h=T.x,_=T.y,l?Object.assign({},E,((A={})[b]=m?"0":"",A[y]=g?"0":"",A.transform=(k.devicePixelRatio||1)<=1?"translate("+h+"px, "+_+"px)":"translate3d("+h+"px, "+_+"px, 0)",A)):Object.assign({},E,((t={})[b]=m?_+"px":"",t[y]=g?h+"px":"",t.transform="",t))}var Yt={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,i=n.gpuAcceleration,r=void 0===i||i,o=n.adaptive,a=void 0===o||o,s=n.roundOffsets,l=void 0===s||s,c={placement:Et(t.placement),variation:Qt(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:r,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,Xt(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,Xt(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},$t={passive:!0};var Gt={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,i=e.options,r=i.scroll,o=void 0===r||r,a=i.resize,s=void 0===a||a,l=kt(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&c.forEach((function(e){e.addEventListener("scroll",n.update,$t)})),s&&l.addEventListener("resize",n.update,$t),function(){o&&c.forEach((function(e){e.removeEventListener("scroll",n.update,$t)})),s&&l.removeEventListener("resize",n.update,$t)}},data:{}},Jt={left:"right",right:"left",bottom:"top",top:"bottom"};function Zt(e){return e.replace(/left|right|bottom|top/g,(function(e){return Jt[e]}))}var en={start:"end",end:"start"};function tn(e){return e.replace(/start|end/g,(function(e){return en[e]}))}function nn(e){var t=kt(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function rn(e){return Lt(Ft(e)).left+nn(e).scrollLeft}function on(e){var t=Nt(e),n=t.overflow,i=t.overflowX,r=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+r+i)}function an(e){return["html","body","#document"].indexOf(bt(e))>=0?e.ownerDocument.body:Ct(e)&&on(e)?e:an(Ht(e))}function sn(e,t){var n;void 0===t&&(t=[]);var i=an(e),r=i===(null==(n=e.ownerDocument)?void 0:n.body),o=kt(i),a=r?[o].concat(o.visualViewport||[],on(i)?i:[]):i,s=t.concat(a);return r?s:s.concat(sn(Ht(a)))}function ln(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function cn(e,t,n){return t===ot?ln(function(e,t){var n=kt(e),i=Ft(e),r=n.visualViewport,o=i.clientWidth,a=i.clientHeight,s=0,l=0;if(r){o=r.width,a=r.height;var c=Pt();(c||!c&&"fixed"===t)&&(s=r.offsetLeft,l=r.offsetTop)}return{width:o,height:a,x:s+rn(e),y:l}}(e,n)):wt(t)?function(e,t){var n=Lt(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):ln(function(e){var t,n=Ft(e),i=nn(e),r=null==(t=e.ownerDocument)?void 0:t.body,o=Tt(n.scrollWidth,n.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),a=Tt(n.scrollHeight,n.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),s=-i.scrollLeft+rn(e),l=-i.scrollTop;return"rtl"===Nt(r||n).direction&&(s+=Tt(n.clientWidth,r?r.clientWidth:0)-o),{width:o,height:a,x:s,y:l}}(Ft(e)))}function un(e,t,n,i){var r="clippingParents"===t?function(e){var t=sn(Ht(e)),n=["absolute","fixed"].indexOf(Nt(e).position)>=0&&Ct(e)?Wt(e):e;return wt(n)?t.filter((function(e){return wt(e)&&Dt(e,n)&&"body"!==bt(e)})):[]}(e):[].concat(t),o=[].concat(r,[n]),a=o[0],s=o.reduce((function(t,n){var r=cn(e,n,i);return t.top=Tt(r.top,t.top),t.right=St(r.right,t.right),t.bottom=St(r.bottom,t.bottom),t.left=Tt(r.left,t.left),t}),cn(e,a,i));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}function fn(e){var t,n=e.reference,i=e.element,r=e.placement,o=r?Et(r):null,a=r?Qt(r):null,s=n.x+n.width/2-i.width/2,l=n.y+n.height/2-i.height/2;switch(o){case $e:t={x:s,y:n.y-i.height};break;case Ge:t={x:s,y:n.y+n.height};break;case Je:t={x:n.x+n.width,y:l};break;case Ze:t={x:n.x-i.width,y:l};break;default:t={x:n.x,y:n.y}}var c=o?Bt(o):null;if(null!=c){var u="y"===c?"height":"width";switch(a){case nt:t[c]=t[c]-(n[u]/2-i[u]/2);break;case it:t[c]=t[c]+(n[u]/2-i[u]/2)}}return t}function dn(e,t){void 0===t&&(t={});var n=t,i=n.placement,r=void 0===i?e.placement:i,o=n.strategy,a=void 0===o?e.strategy:o,s=n.boundary,l=void 0===s?rt:s,c=n.rootBoundary,u=void 0===c?ot:c,f=n.elementContext,d=void 0===f?at:f,h=n.altBoundary,p=void 0!==h&&h,_=n.padding,v=void 0===_?0:_,g=qt("number"!=typeof v?v:Vt(v,tt)),m=d===at?st:at,y=e.rects.popper,b=e.elements[p?m:d],k=un(wt(b)?b:b.contextElement||Ft(e.elements.popper),l,u,a),w=Lt(e.elements.reference),C=fn({reference:w,element:y,strategy:"absolute",placement:r}),O=ln(Object.assign({},y,C)),A=d===at?O:w,E={top:k.top-A.top+g.top,bottom:A.bottom-k.bottom+g.bottom,left:k.left-A.left+g.left,right:A.right-k.right+g.right},T=e.modifiersData.offset;if(d===at&&T){var S=T[r];Object.keys(E).forEach((function(e){var t=[Je,Ge].indexOf(e)>=0?1:-1,n=[$e,Ge].indexOf(e)>=0?"y":"x";E[e]+=S[n]*t}))}return E}function hn(e,t){void 0===t&&(t={});var n=t,i=n.placement,r=n.boundary,o=n.rootBoundary,a=n.padding,s=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?ct:l,u=Qt(i),f=u?s?lt:lt.filter((function(e){return Qt(e)===u})):tt,d=f.filter((function(e){return c.indexOf(e)>=0}));0===d.length&&(d=f);var h=d.reduce((function(t,n){return t[n]=dn(e,{placement:n,boundary:r,rootBoundary:o,padding:a})[Et(n)],t}),{});return Object.keys(h).sort((function(e,t){return h[e]-h[t]}))}var pn={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name;if(!t.modifiersData[i]._skip){for(var r=n.mainAxis,o=void 0===r||r,a=n.altAxis,s=void 0===a||a,l=n.fallbackPlacements,c=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,h=n.flipVariations,p=void 0===h||h,_=n.allowedAutoPlacements,v=t.options.placement,g=Et(v),m=l||(g===v||!p?[Zt(v)]:function(e){if(Et(e)===et)return[];var t=Zt(e);return[tn(e),t,tn(t)]}(v)),y=[v].concat(m).reduce((function(e,n){return e.concat(Et(n)===et?hn(t,{placement:n,boundary:u,rootBoundary:f,padding:c,flipVariations:p,allowedAutoPlacements:_}):n)}),[]),b=t.rects.reference,k=t.rects.popper,w=new Map,C=!0,O=y[0],A=0;A=0,I=x?"width":"height",P=dn(t,{placement:E,boundary:u,rootBoundary:f,altBoundary:d,padding:c}),L=x?S?Je:Ze:S?Ge:$e;b[I]>k[I]&&(L=Zt(L));var j=Zt(L),D=[];if(o&&D.push(P[T]<=0),s&&D.push(P[L]<=0,P[j]<=0),D.every((function(e){return e}))){O=E,C=!1;break}w.set(E,D)}if(C)for(var N=function(e){var t=y.find((function(t){var n=w.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return O=t,"break"},M=p?3:1;M>0;M--){if("break"===N(M))break}t.placement!==O&&(t.modifiersData[i]._skip=!0,t.placement=O,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function _n(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function vn(e){return[$e,Je,Ge,Ze].some((function(t){return e[t]>=0}))}var gn={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,i=t.rects.reference,r=t.rects.popper,o=t.modifiersData.preventOverflow,a=dn(t,{elementContext:"reference"}),s=dn(t,{altBoundary:!0}),l=_n(a,i),c=_n(s,r,o),u=vn(l),f=vn(c);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var mn={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,i=e.name,r=n.offset,o=void 0===r?[0,0]:r,a=ct.reduce((function(e,n){return e[n]=function(e,t,n){var i=Et(e),r=[Ze,$e].indexOf(i)>=0?-1:1,o="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=o[0],s=o[1];return a=a||0,s=(s||0)*r,[Ze,Je].indexOf(i)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,o),e}),{}),s=a[t.placement],l=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[i]=a}};var yn={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=fn({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}};var bn={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name,r=n.mainAxis,o=void 0===r||r,a=n.altAxis,s=void 0!==a&&a,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,h=void 0===d||d,p=n.tetherOffset,_=void 0===p?0:p,v=dn(t,{boundary:l,rootBoundary:c,padding:f,altBoundary:u}),g=Et(t.placement),m=Qt(t.placement),y=!m,b=Bt(g),k="x"===b?"y":"x",w=t.modifiersData.popperOffsets,C=t.rects.reference,O=t.rects.popper,A="function"==typeof _?_(Object.assign({},t.rects,{placement:t.placement})):_,E="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),T=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,S={x:0,y:0};if(w){if(o){var x,I="y"===b?$e:Ze,P="y"===b?Ge:Je,L="y"===b?"height":"width",j=w[b],D=j+v[I],N=j-v[P],M=h?-O[L]/2:0,F=m===nt?C[L]:O[L],H=m===nt?-O[L]:-C[L],R=t.elements.arrow,W=h&&R?jt(R):{width:0,height:0},B=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=B[I],q=B[P],V=zt(0,C[L],W[L]),K=y?C[L]/2-M-V-z-E.mainAxis:F-V-z-E.mainAxis,Q=y?-C[L]/2+M+V+q+E.mainAxis:H+V+q+E.mainAxis,U=t.elements.arrow&&Wt(t.elements.arrow),X=U?"y"===b?U.clientTop||0:U.clientLeft||0:0,Y=null!=(x=null==T?void 0:T[b])?x:0,$=j+Q-Y,G=zt(h?St(D,j+K-Y-X):D,j,h?Tt(N,$):N);w[b]=G,S[b]=G-j}if(s){var J,Z="x"===b?$e:Ze,ee="x"===b?Ge:Je,te=w[k],ne="y"===k?"height":"width",ie=te+v[Z],re=te-v[ee],oe=-1!==[$e,Ze].indexOf(g),ae=null!=(J=null==T?void 0:T[k])?J:0,se=oe?ie:te-C[ne]-O[ne]-ae+E.altAxis,le=oe?te+C[ne]+O[ne]-ae-E.altAxis:re,ce=h&&oe?function(e,t,n){var i=zt(e,t,n);return i>n?n:i}(se,te,le):zt(h?se:ie,te,h?le:re);w[k]=ce,S[k]=ce-te}t.modifiersData[i]=S}},requiresIfExists:["offset"]};function kn(e,t,n){void 0===n&&(n=!1);var i,r,o=Ct(t),a=Ct(t)&&function(e){var t=e.getBoundingClientRect(),n=xt(t.width)/e.offsetWidth||1,i=xt(t.height)/e.offsetHeight||1;return 1!==n||1!==i}(t),s=Ft(t),l=Lt(e,a,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(o||!o&&!n)&&(("body"!==bt(t)||on(s))&&(c=(i=t)!==kt(i)&&Ct(i)?{scrollLeft:(r=i).scrollLeft,scrollTop:r.scrollTop}:nn(i)),Ct(t)?((u=Lt(t,!0)).x+=t.clientLeft,u.y+=t.clientTop):s&&(u.x=rn(s))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function wn(e){var t=new Map,n=new Set,i=[];function r(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var i=t.get(e);i&&r(i)}})),i.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||r(e)})),i}var Cn={placement:"bottom",modifiers:[],strategy:"absolute"};function On(){for(var e=arguments.length,t=new Array(e),n=0;n0}},{key:"_disableOverFlow",value:function(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}},{key:"_setElementAttributes",value:function(e,t,n){var i=this,r=this.getWidth();this._applyManipulationCallback(e,(function(e){if(!(e!==i._element&&window.innerWidth>e.clientWidth+r)){i._saveInitialAttribute(e,t);var o=window.getComputedStyle(e).getPropertyValue(t);e.style.setProperty(t,"".concat(n(Number.parseFloat(o)),"px"))}}))}},{key:"_saveInitialAttribute",value:function(e,t){var n=e.style.getPropertyValue(t);n&&B(e,t,n)}},{key:"_resetElementAttributes",value:function(e,t){this._applyManipulationCallback(e,(function(e){var n=V(e,t);null!==n?(z(e,t),e.style.setProperty(t,n)):e.style.removeProperty(t)}))}},{key:"_applyManipulationCallback",value:function(e,t){if(l(e))t(e);else{var n,i=_createForOfIteratorHelper(X.find(e,this._element));try{for(i.s();!(n=i.n()).done;){t(n.value)}}catch(e){i.e(e)}finally{i.f()}}}}]),e}(),yi=".".concat("bs.modal"),bi="hide".concat(yi),ki="hidePrevented".concat(yi),wi="hidden".concat(yi),Ci="show".concat(yi),Oi="shown".concat(yi),Ai="resize".concat(yi),Ei="click.dismiss".concat(yi),Ti="mousedown.dismiss".concat(yi),Si="keydown.dismiss".concat(yi),xi="click".concat(yi).concat(".data-api"),Ii="modal-open",Pi="show",Li="modal-static",ji={backdrop:!0,focus:!0,keyboard:!0},Di={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"},Ni=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;return _classCallCheck(this,n),(r=t.call(this,e,i))._dialog=X.findOne(".modal-dialog",r._element),r._backdrop=r._initializeBackDrop(),r._focustrap=r._initializeFocusTrap(),r._isShown=!1,r._isTransitioning=!1,r._scrollBar=new mi,r._addEventListeners(),r}return _createClass(n,[{key:"toggle",value:function(e){return this._isShown?this.hide():this.show(e)}},{key:"show",value:function(e){var t=this;this._isShown||this._isTransitioning||(F.trigger(this._element,Ci,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(Ii),this._adjustDialog(),this._backdrop.show((function(){return t._showElement(e)}))))}},{key:"hide",value:function(){var e=this;this._isShown&&!this._isTransitioning&&(F.trigger(this._element,bi).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(Pi),this._queueCallback((function(){return e._hideModal()}),this._element,this._isAnimated())))}},{key:"dispose",value:function(){F.off(window,yi),F.off(this._dialog,yi),this._backdrop.dispose(),this._focustrap.deactivate(),_get(_getPrototypeOf(n.prototype),"dispose",this).call(this)}},{key:"handleUpdate",value:function(){this._adjustDialog()}},{key:"_initializeBackDrop",value:function(){return new ai({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}},{key:"_initializeFocusTrap",value:function(){return new hi({trapElement:this._element})}},{key:"_showElement",value:function(e){var t=this;document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;var n=X.findOne(".modal-body",this._dialog);n&&(n.scrollTop=0),p(this._element),this._element.classList.add(Pi);this._queueCallback((function(){t._config.focus&&t._focustrap.activate(),t._isTransitioning=!1,F.trigger(t._element,Oi,{relatedTarget:e})}),this._dialog,this._isAnimated())}},{key:"_addEventListeners",value:function(){var e=this;F.on(this._element,Si,(function(t){"Escape"===t.key&&(e._config.keyboard?e.hide():e._triggerBackdropTransition())})),F.on(window,Ai,(function(){e._isShown&&!e._isTransitioning&&e._adjustDialog()})),F.on(this._element,Ti,(function(t){F.one(e._element,Ei,(function(n){e._element===t.target&&e._element===n.target&&("static"!==e._config.backdrop?e._config.backdrop&&e.hide():e._triggerBackdropTransition())}))}))}},{key:"_hideModal",value:function(){var e=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((function(){document.body.classList.remove(Ii),e._resetAdjustments(),e._scrollBar.reset(),F.trigger(e._element,wi)}))}},{key:"_isAnimated",value:function(){return this._element.classList.contains("fade")}},{key:"_triggerBackdropTransition",value:function(){var e=this;if(!F.trigger(this._element,ki).defaultPrevented){var t=this._element.scrollHeight>document.documentElement.clientHeight,n=this._element.style.overflowY;"hidden"===n||this._element.classList.contains(Li)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(Li),this._queueCallback((function(){e._element.classList.remove(Li),e._queueCallback((function(){e._element.style.overflowY=n}),e._dialog)}),this._dialog),this._element.focus())}}},{key:"_adjustDialog",value:function(){var e=this._element.scrollHeight>document.documentElement.clientHeight,t=this._scrollBar.getWidth(),n=t>0;if(n&&!e){var i=g()?"paddingLeft":"paddingRight";this._element.style[i]="".concat(t,"px")}if(!n&&e){var r=g()?"paddingRight":"paddingLeft";this._element.style[r]="".concat(t,"px")}}},{key:"_resetAdjustments",value:function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}}],[{key:"Default",get:function(){return ji}},{key:"DefaultType",get:function(){return Di}},{key:"NAME",get:function(){return"modal"}},{key:"jQueryInterface",value:function(e,t){return this.each((function(){var i=n.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===i[e])throw new TypeError('No method named "'.concat(e,'"'));i[e](t)}}))}}]),n}(Q);F.on(document,xi,'[data-bs-toggle="modal"]',(function(e){var t=this,n=X.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&e.preventDefault(),F.one(n,Ci,(function(e){e.defaultPrevented||F.one(n,wi,(function(){u(t)&&t.focus()}))}));var i=X.findOne(".modal.show");i&&Ni.getInstance(i).hide(),Ni.getOrCreateInstance(n).toggle(this)})),Y(Ni),m(Ni);var Mi=".".concat("bs.offcanvas"),Fi=".data-api",Hi="load".concat(Mi).concat(Fi),Ri="show",Wi="showing",Bi="hiding",zi=".offcanvas.show",qi="show".concat(Mi),Vi="shown".concat(Mi),Ki="hide".concat(Mi),Qi="hidePrevented".concat(Mi),Ui="hidden".concat(Mi),Xi="resize".concat(Mi),Yi="click".concat(Mi).concat(Fi),$i="keydown.dismiss".concat(Mi),Gi={backdrop:!0,keyboard:!0,scroll:!1},Ji={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"},Zi=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;return _classCallCheck(this,n),(r=t.call(this,e,i))._isShown=!1,r._backdrop=r._initializeBackDrop(),r._focustrap=r._initializeFocusTrap(),r._addEventListeners(),r}return _createClass(n,[{key:"toggle",value:function(e){return this._isShown?this.hide():this.show(e)}},{key:"show",value:function(e){var t=this;if(!this._isShown&&!F.trigger(this._element,qi,{relatedTarget:e}).defaultPrevented){this._isShown=!0,this._backdrop.show(),this._config.scroll||(new mi).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Wi);this._queueCallback((function(){t._config.scroll&&!t._config.backdrop||t._focustrap.activate(),t._element.classList.add(Ri),t._element.classList.remove(Wi),F.trigger(t._element,Vi,{relatedTarget:e})}),this._element,!0)}}},{key:"hide",value:function(){var e=this;if(this._isShown&&!F.trigger(this._element,Ki).defaultPrevented){this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(Bi),this._backdrop.hide();this._queueCallback((function(){e._element.classList.remove(Ri,Bi),e._element.removeAttribute("aria-modal"),e._element.removeAttribute("role"),e._config.scroll||(new mi).reset(),F.trigger(e._element,Ui)}),this._element,!0)}}},{key:"dispose",value:function(){this._backdrop.dispose(),this._focustrap.deactivate(),_get(_getPrototypeOf(n.prototype),"dispose",this).call(this)}},{key:"_initializeBackDrop",value:function(){var e=this,t=Boolean(this._config.backdrop);return new ai({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?function(){"static"!==e._config.backdrop?e.hide():F.trigger(e._element,Qi)}:null})}},{key:"_initializeFocusTrap",value:function(){return new hi({trapElement:this._element})}},{key:"_addEventListeners",value:function(){var e=this;F.on(this._element,$i,(function(t){"Escape"===t.key&&(e._config.keyboard?e.hide():F.trigger(e._element,Qi))}))}}],[{key:"Default",get:function(){return Gi}},{key:"DefaultType",get:function(){return Ji}},{key:"NAME",get:function(){return"offcanvas"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e](this)}}))}}]),n}(Q);F.on(document,Yi,'[data-bs-toggle="offcanvas"]',(function(e){var t=this,n=X.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),!f(this)){F.one(n,Ui,(function(){u(t)&&t.focus()}));var i=X.findOne(zi);i&&i!==n&&Zi.getInstance(i).hide(),Zi.getOrCreateInstance(n).toggle(this)}})),F.on(window,Hi,(function(){var e,t=_createForOfIteratorHelper(X.find(zi));try{for(t.s();!(e=t.n()).done;){var n=e.value;Zi.getOrCreateInstance(n).show()}}catch(e){t.e(e)}finally{t.f()}})),F.on(window,Xi,(function(){var e,t=_createForOfIteratorHelper(X.find("[aria-modal][class*=show][class*=offcanvas-]"));try{for(t.s();!(e=t.n()).done;){var n=e.value;"fixed"!==getComputedStyle(n).position&&Zi.getOrCreateInstance(n).hide()}}catch(e){t.e(e)}finally{t.f()}})),Y(Zi),m(Zi);var er={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},tr=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),nr=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,ir=function(e,t){var n=e.nodeName.toLowerCase();return t.includes(n)?!tr.has(n)||Boolean(nr.test(e.nodeValue)):t.filter((function(e){return e instanceof RegExp})).some((function(e){return e.test(n)}))};var rr={allowList:er,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},or={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},ar={entry:"(string|element|function|null)",selector:"(string|element)"},sr=function(e){_inherits(n,e);var t=_createSuper(n);function n(e){var i;return _classCallCheck(this,n),(i=t.call(this))._config=i._getConfig(e),i}return _createClass(n,[{key:"getContent",value:function(){var e=this;return Object.values(this._config.content).map((function(t){return e._resolvePossibleFunction(t)})).filter(Boolean)}},{key:"hasContent",value:function(){return this.getContent().length>0}},{key:"changeContent",value:function(e){return this._checkContent(e),this._config.content=_objectSpread(_objectSpread({},this._config.content),e),this}},{key:"toHtml",value:function(){var e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(var t=0,n=Object.entries(this._config.content);t
',title:"",trigger:"hover focus"},gr={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"},mr=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;if(_classCallCheck(this,n),void 0===xn)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");return(r=t.call(this,e,i))._isEnabled=!0,r._timeout=0,r._isHovered=null,r._activeTrigger={},r._popper=null,r._templateFactory=null,r._newContent=null,r.tip=null,r._setListeners(),r._config.selector||r._fixTitle(),r}return _createClass(n,[{key:"enable",value:function(){this._isEnabled=!0}},{key:"disable",value:function(){this._isEnabled=!1}},{key:"toggleEnabled",value:function(){this._isEnabled=!this._isEnabled}},{key:"toggle",value:function(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}},{key:"dispose",value:function(){clearTimeout(this._timeout),F.off(this._element.closest(fr),dr,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),_get(_getPrototypeOf(n.prototype),"dispose",this).call(this)}},{key:"show",value:function(){var e=this;if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(this._isWithContent()&&this._isEnabled){var t=F.trigger(this._element,this.constructor.eventName("show")),n=(d(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(!t.defaultPrevented&&n){this._disposePopper();var i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));var r=this._config.container;if(this._element.ownerDocument.documentElement.contains(this.tip)||(r.append(i),F.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(ur),"ontouchstart"in document.documentElement){var o,a,s=_createForOfIteratorHelper((o=[]).concat.apply(o,_toConsumableArray(document.body.children)));try{for(s.s();!(a=s.n()).done;){var l=a.value;F.on(l,"mouseover",h)}}catch(e){s.e(e)}finally{s.f()}}this._queueCallback((function(){F.trigger(e._element,e.constructor.eventName("shown")),!1===e._isHovered&&e._leave(),e._isHovered=!1}),this.tip,this._isAnimated())}}}},{key:"hide",value:function(){var e=this;if(this._isShown()&&!F.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(ur),"ontouchstart"in document.documentElement){var t,n,i=_createForOfIteratorHelper((t=[]).concat.apply(t,_toConsumableArray(document.body.children)));try{for(i.s();!(n=i.n()).done;){var r=n.value;F.off(r,"mouseover",h)}}catch(e){i.e(e)}finally{i.f()}}this._activeTrigger.click=!1,this._activeTrigger[pr]=!1,this._activeTrigger[hr]=!1,this._isHovered=null;this._queueCallback((function(){e._isWithActiveTrigger()||(e._isHovered||e._disposePopper(),e._element.removeAttribute("aria-describedby"),F.trigger(e._element,e.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}},{key:"update",value:function(){this._popper&&this._popper.update()}},{key:"_isWithContent",value:function(){return Boolean(this._getTitle())}},{key:"_getTipElement",value:function(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}},{key:"_createTipElement",value:function(e){var t=this._getTemplateFactory(e).toHtml();if(!t)return null;t.classList.remove(cr,ur),t.classList.add("bs-".concat(this.constructor.NAME,"-auto"));var n=function(e){do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e}(this.constructor.NAME).toString();return t.setAttribute("id",n),this._isAnimated()&&t.classList.add(cr),t}},{key:"setContent",value:function(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}},{key:"_getTemplateFactory",value:function(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new sr(_objectSpread(_objectSpread({},this._config),{},{content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)})),this._templateFactory}},{key:"_getContentForTemplate",value:function(){return _defineProperty({},".tooltip-inner",this._getTitle())}},{key:"_getTitle",value:function(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}},{key:"_initializeOnDelegatedTarget",value:function(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}},{key:"_isAnimated",value:function(){return this._config.animation||this.tip&&this.tip.classList.contains(cr)}},{key:"_isShown",value:function(){return this.tip&&this.tip.classList.contains(ur)}},{key:"_createPopper",value:function(e){var t=y(this._config.placement,[this,e,this._element]),n=_r[t.toUpperCase()];return Sn(this._element,e,this._getPopperConfig(n))}},{key:"_getOffset",value:function(){var e=this,t=this._config.offset;return"string"==typeof t?t.split(",").map((function(e){return Number.parseInt(e,10)})):"function"==typeof t?function(n){return t(n,e._element)}:t}},{key:"_resolvePossibleFunction",value:function(e){return y(e,[this._element])}},{key:"_getPopperConfig",value:function(e){var t=this,n={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:".".concat(this.constructor.NAME,"-arrow")}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:function(e){t._getTipElement().setAttribute("data-popper-placement",e.state.placement)}}]};return _objectSpread(_objectSpread({},n),y(this._config.popperConfig,[n]))}},{key:"_setListeners",value:function(){var e,t=this,n=_createForOfIteratorHelper(this._config.trigger.split(" "));try{for(n.s();!(e=n.n()).done;){var i=e.value;if("click"===i)F.on(this._element,this.constructor.eventName("click"),this._config.selector,(function(e){t._initializeOnDelegatedTarget(e).toggle()}));else if("manual"!==i){var r=i===hr?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),o=i===hr?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");F.on(this._element,r,this._config.selector,(function(e){var n=t._initializeOnDelegatedTarget(e);n._activeTrigger["focusin"===e.type?pr:hr]=!0,n._enter()})),F.on(this._element,o,this._config.selector,(function(e){var n=t._initializeOnDelegatedTarget(e);n._activeTrigger["focusout"===e.type?pr:hr]=n._element.contains(e.relatedTarget),n._leave()}))}}}catch(e){n.e(e)}finally{n.f()}this._hideModalHandler=function(){t._element&&t.hide()},F.on(this._element.closest(fr),dr,this._hideModalHandler)}},{key:"_fixTitle",value:function(){var e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}},{key:"_enter",value:function(){var e=this;this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((function(){e._isHovered&&e.show()}),this._config.delay.show))}},{key:"_leave",value:function(){var e=this;this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((function(){e._isHovered||e.hide()}),this._config.delay.hide))}},{key:"_setTimeout",value:function(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}},{key:"_isWithActiveTrigger",value:function(){return Object.values(this._activeTrigger).includes(!0)}},{key:"_getConfig",value:function(e){for(var t=q(this._element),n=0,i=Object.keys(t);n

',trigger:"click"}),br=_objectSpread(_objectSpread({},mr.DefaultType),{},{content:"(null|string|element|function)"}),kr=function(e){_inherits(n,e);var t=_createSuper(n);function n(){return _classCallCheck(this,n),t.apply(this,arguments)}return _createClass(n,[{key:"_isWithContent",value:function(){return this._getTitle()||this._getContent()}},{key:"_getContentForTemplate",value:function(){var e;return _defineProperty(e={},".popover-header",this._getTitle()),_defineProperty(e,".popover-body",this._getContent()),e}},{key:"_getContent",value:function(){return this._resolvePossibleFunction(this._config.content)}}],[{key:"Default",get:function(){return yr}},{key:"DefaultType",get:function(){return br}},{key:"NAME",get:function(){return"popover"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError('No method named "'.concat(e,'"'));t[e]()}}))}}]),n}(mr);m(kr);var wr=".".concat("bs.scrollspy"),Cr="activate".concat(wr),Or="click".concat(wr),Ar="load".concat(wr).concat(".data-api"),Er="active",Tr="[href]",Sr=".nav-link",xr="".concat(Sr,", ").concat(".nav-item"," > ").concat(Sr,", ").concat(".list-group-item"),Ir={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},Pr={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"},Lr=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;return _classCallCheck(this,n),(r=t.call(this,e,i))._targetLinks=new Map,r._observableSections=new Map,r._rootElement="visible"===getComputedStyle(r._element).overflowY?null:r._element,r._activeTarget=null,r._observer=null,r._previousScrollData={visibleEntryTop:0,parentScrollTop:0},r.refresh(),r}return _createClass(n,[{key:"refresh",value:function(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();var e,t=_createForOfIteratorHelper(this._observableSections.values());try{for(t.s();!(e=t.n()).done;){var n=e.value;this._observer.observe(n)}}catch(e){t.e(e)}finally{t.f()}}},{key:"dispose",value:function(){this._observer.disconnect(),_get(_getPrototypeOf(n.prototype),"dispose",this).call(this)}},{key:"_configAfterMerge",value:function(e){return e.target=c(e.target)||document.body,e.rootMargin=e.offset?"".concat(e.offset,"px 0px -30%"):e.rootMargin,"string"==typeof e.threshold&&(e.threshold=e.threshold.split(",").map((function(e){return Number.parseFloat(e)}))),e}},{key:"_maybeEnableSmoothScroll",value:function(){var e=this;this._config.smoothScroll&&(F.off(this._config.target,Or),F.on(this._config.target,Or,Tr,(function(t){var n=e._observableSections.get(t.target.hash);if(n){t.preventDefault();var i=e._rootElement||window,r=n.offsetTop-e._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:r,behavior:"smooth"});i.scrollTop=r}})))}},{key:"_getNewObserver",value:function(){var e=this,t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((function(t){return e._observerCallback(t)}),t)}},{key:"_observerCallback",value:function(e){var t=this,n=function(e){return t._targetLinks.get("#".concat(e.target.id))},i=function(e){t._previousScrollData.visibleEntryTop=e.target.offsetTop,t._process(n(e))},r=(this._rootElement||document.documentElement).scrollTop,o=r>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=r;var a,s=_createForOfIteratorHelper(e);try{for(s.s();!(a=s.n()).done;){var l=a.value;if(l.isIntersecting){var c=l.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(o&&c){if(i(l),!r)return}else o||c||i(l)}else this._activeTarget=null,this._clearActiveClass(n(l))}}catch(e){s.e(e)}finally{s.f()}}},{key:"_initializeTargetsAndObservables",value:function(){this._targetLinks=new Map,this._observableSections=new Map;var e,t=_createForOfIteratorHelper(X.find(Tr,this._config.target));try{for(t.s();!(e=t.n()).done;){var n=e.value;if(n.hash&&!f(n)){var i=X.findOne(decodeURI(n.hash),this._element);u(i)&&(this._targetLinks.set(decodeURI(n.hash),n),this._observableSections.set(n.hash,i))}}}catch(e){t.e(e)}finally{t.f()}}},{key:"_process",value:function(e){this._activeTarget!==e&&(this._clearActiveClass(this._config.target),this._activeTarget=e,e.classList.add(Er),this._activateParents(e),F.trigger(this._element,Cr,{relatedTarget:e}))}},{key:"_activateParents",value:function(e){if(e.classList.contains("dropdown-item"))X.findOne(".dropdown-toggle",e.closest(".dropdown")).classList.add(Er);else{var t,n=_createForOfIteratorHelper(X.parents(e,".nav, .list-group"));try{for(n.s();!(t=n.n()).done;){var i,r=t.value,o=_createForOfIteratorHelper(X.prev(r,xr));try{for(o.s();!(i=o.n()).done;){i.value.classList.add(Er)}}catch(e){o.e(e)}finally{o.f()}}}catch(e){n.e(e)}finally{n.f()}}}},{key:"_clearActiveClass",value:function(e){e.classList.remove(Er);var t,n=_createForOfIteratorHelper(X.find("".concat(Tr,".").concat(Er),e));try{for(n.s();!(t=n.n()).done;){t.value.classList.remove(Er)}}catch(e){n.e(e)}finally{n.f()}}}],[{key:"Default",get:function(){return Ir}},{key:"DefaultType",get:function(){return Pr}},{key:"NAME",get:function(){return"scrollspy"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e]()}}))}}]),n}(Q);F.on(window,Ar,(function(){var e,t=_createForOfIteratorHelper(X.find('[data-bs-spy="scroll"]'));try{for(t.s();!(e=t.n()).done;){var n=e.value;Lr.getOrCreateInstance(n)}}catch(e){t.e(e)}finally{t.f()}})),m(Lr);var jr=".".concat("bs.tab"),Dr="hide".concat(jr),Nr="hidden".concat(jr),Mr="show".concat(jr),Fr="shown".concat(jr),Hr="click".concat(jr),Rr="keydown".concat(jr),Wr="load".concat(jr),Br="ArrowLeft",zr="ArrowRight",qr="ArrowUp",Vr="ArrowDown",Kr="Home",Qr="End",Ur="active",Xr="fade",Yr="show",$r=".dropdown-toggle",Gr=":not(".concat($r,")"),Jr=".nav-link".concat(Gr,", .list-group-item").concat(Gr,', [role="tab"]').concat(Gr),Zr='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',eo="".concat(Jr,", ").concat(Zr),to=".".concat(Ur,'[data-bs-toggle="tab"], .').concat(Ur,'[data-bs-toggle="pill"], .').concat(Ur,'[data-bs-toggle="list"]'),no=function(e){_inherits(n,e);var t=_createSuper(n);function n(e){var i;return _classCallCheck(this,n),(i=t.call(this,e))._parent=i._element.closest('.list-group, .nav, [role="tablist"]'),i._parent?(i._setInitialAttributes(i._parent,i._getChildren()),F.on(i._element,Rr,(function(e){return i._keydown(e)})),i):_possibleConstructorReturn(i)}return _createClass(n,[{key:"show",value:function(){var e=this._element;if(!this._elemIsActive(e)){var t=this._getActiveElem(),n=t?F.trigger(t,Dr,{relatedTarget:e}):null;F.trigger(e,Mr,{relatedTarget:t}).defaultPrevented||n&&n.defaultPrevented||(this._deactivate(t,e),this._activate(e,t))}}},{key:"_activate",value:function(e,t){var n=this;if(e){e.classList.add(Ur),this._activate(X.getElementFromSelector(e));this._queueCallback((function(){"tab"===e.getAttribute("role")?(e.removeAttribute("tabindex"),e.setAttribute("aria-selected",!0),n._toggleDropDown(e,!0),F.trigger(e,Fr,{relatedTarget:t})):e.classList.add(Yr)}),e,e.classList.contains(Xr))}}},{key:"_deactivate",value:function(e,t){var n=this;if(e){e.classList.remove(Ur),e.blur(),this._deactivate(X.getElementFromSelector(e));this._queueCallback((function(){"tab"===e.getAttribute("role")?(e.setAttribute("aria-selected",!1),e.setAttribute("tabindex","-1"),n._toggleDropDown(e,!1),F.trigger(e,Nr,{relatedTarget:t})):e.classList.remove(Yr)}),e,e.classList.contains(Xr))}}},{key:"_keydown",value:function(e){if([Br,zr,qr,Vr,Kr,Qr].includes(e.key)){e.stopPropagation(),e.preventDefault();var t,i=this._getChildren().filter((function(e){return!f(e)}));if([Kr,Qr].includes(e.key))t=i[e.key===Kr?0:i.length-1];else{var r=[zr,Vr].includes(e.key);t=k(i,e.target,r,!0)}t&&(t.focus({preventScroll:!0}),n.getOrCreateInstance(t).show())}}},{key:"_getChildren",value:function(){return X.find(eo,this._parent)}},{key:"_getActiveElem",value:function(){var e=this;return this._getChildren().find((function(t){return e._elemIsActive(t)}))||null}},{key:"_setInitialAttributes",value:function(e,t){this._setAttributeIfNotExists(e,"role","tablist");var n,i=_createForOfIteratorHelper(t);try{for(i.s();!(n=i.n()).done;){var r=n.value;this._setInitialAttributesOnChild(r)}}catch(e){i.e(e)}finally{i.f()}}},{key:"_setInitialAttributesOnChild",value:function(e){e=this._getInnerElement(e);var t=this._elemIsActive(e),n=this._getOuterElement(e);e.setAttribute("aria-selected",t),n!==e&&this._setAttributeIfNotExists(n,"role","presentation"),t||e.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(e,"role","tab"),this._setInitialAttributesOnTargetPanel(e)}},{key:"_setInitialAttributesOnTargetPanel",value:function(e){var t=X.getElementFromSelector(e);t&&(this._setAttributeIfNotExists(t,"role","tabpanel"),e.id&&this._setAttributeIfNotExists(t,"aria-labelledby","".concat(e.id)))}},{key:"_toggleDropDown",value:function(e,t){var n=this._getOuterElement(e);if(n.classList.contains("dropdown")){var i=function(e,i){var r=X.findOne(e,n);r&&r.classList.toggle(i,t)};i($r,Ur),i(".dropdown-menu",Yr),n.setAttribute("aria-expanded",t)}}},{key:"_setAttributeIfNotExists",value:function(e,t,n){e.hasAttribute(t)||e.setAttribute(t,n)}},{key:"_elemIsActive",value:function(e){return e.classList.contains(Ur)}},{key:"_getInnerElement",value:function(e){return e.matches(eo)?e:X.findOne(eo,e)}},{key:"_getOuterElement",value:function(e){return e.closest(".nav-item, .list-group-item")||e}}],[{key:"NAME",get:function(){return"tab"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e]()}}))}}]),n}(Q);F.on(document,Hr,Zr,(function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault(),f(this)||no.getOrCreateInstance(this).show()})),F.on(window,Wr,(function(){var e,t=_createForOfIteratorHelper(X.find(to));try{for(t.s();!(e=t.n()).done;){var n=e.value;no.getOrCreateInstance(n)}}catch(e){t.e(e)}finally{t.f()}})),m(no);var io=".".concat("bs.toast"),ro="mouseover".concat(io),oo="mouseout".concat(io),ao="focusin".concat(io),so="focusout".concat(io),lo="hide".concat(io),co="hidden".concat(io),uo="show".concat(io),fo="shown".concat(io),ho="hide",po="show",_o="showing",vo={animation:"boolean",autohide:"boolean",delay:"number"},go={animation:!0,autohide:!0,delay:5e3},mo=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;return _classCallCheck(this,n),(r=t.call(this,e,i))._timeout=null,r._hasMouseInteraction=!1,r._hasKeyboardInteraction=!1,r._setListeners(),r}return _createClass(n,[{key:"show",value:function(){var e=this;if(!F.trigger(this._element,uo).defaultPrevented){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");this._element.classList.remove(ho),p(this._element),this._element.classList.add(po,_o),this._queueCallback((function(){e._element.classList.remove(_o),F.trigger(e._element,fo),e._maybeScheduleHide()}),this._element,this._config.animation)}}},{key:"hide",value:function(){var e=this;if(this.isShown()&&!F.trigger(this._element,lo).defaultPrevented){this._element.classList.add(_o),this._queueCallback((function(){e._element.classList.add(ho),e._element.classList.remove(_o,po),F.trigger(e._element,co)}),this._element,this._config.animation)}}},{key:"dispose",value:function(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(po),_get(_getPrototypeOf(n.prototype),"dispose",this).call(this)}},{key:"isShown",value:function(){return this._element.classList.contains(po)}},{key:"_maybeScheduleHide",value:function(){var e=this;this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((function(){e.hide()}),this._config.delay)))}},{key:"_onInteraction",value:function(e,t){switch(e.type){case"mouseover":case"mouseout":this._hasMouseInteraction=t;break;case"focusin":case"focusout":this._hasKeyboardInteraction=t}if(t)this._clearTimeout();else{var n=e.relatedTarget;this._element===n||this._element.contains(n)||this._maybeScheduleHide()}}},{key:"_setListeners",value:function(){var e=this;F.on(this._element,ro,(function(t){return e._onInteraction(t,!0)})),F.on(this._element,oo,(function(t){return e._onInteraction(t,!1)})),F.on(this._element,ao,(function(t){return e._onInteraction(t,!0)})),F.on(this._element,so,(function(t){return e._onInteraction(t,!1)}))}},{key:"_clearTimeout",value:function(){clearTimeout(this._timeout),this._timeout=null}}],[{key:"Default",get:function(){return go}},{key:"DefaultType",get:function(){return vo}},{key:"NAME",get:function(){return"toast"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError('No method named "'.concat(e,'"'));t[e](this)}}))}}]),n}(Q);return Y(mo),m(mo),{Alert:Z,Button:ie,Carousel:Ne,Collapse:Ye,Dropdown:ei,Modal:Ni,Offcanvas:Zi,Popover:kr,ScrollSpy:Lr,Tab:no,Toast:mo,Tooltip:mr}})); + */}!function(e,t){"object"===("undefined"==typeof exports?"undefined":_typeof(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).bootstrap=t()}(this,(function(){"use strict";var e,t=new Map,n=function(e,n,i){t.has(e)||t.set(e,new Map);var r=t.get(e);r.has(n)||0===r.size?r.set(n,i):console.error("Bootstrap doesn't allow more than one instance per element. Bound instance: ".concat(Array.from(r.keys())[0],"."))},i=function(e,n){return t.has(e)&&t.get(e).get(n)||null},r=function(e,n){if(t.has(e)){var i=t.get(e);i.delete(n),0===i.size&&t.delete(e)}},o="transitionend",a=function(e){return e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(function(e,t){return"#".concat(CSS.escape(t))}))),e},s=function(e){e.dispatchEvent(new Event(o))},l=function(e){return!(!e||"object"!==_typeof(e))&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType)},c=function(e){return l(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(a(e)):null},u=function(e){if(!l(e)||0===e.getClientRects().length)return!1;var t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){var i=e.closest("summary");if(i&&i.parentNode!==n)return!1;if(null===i)return!1}return t},f=function(e){return!e||e.nodeType!==Node.ELEMENT_NODE||(!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")))},d=function e(t){if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){var n=t.getRootNode();return n instanceof ShadowRoot?n:null}return t instanceof ShadowRoot?t:t.parentNode?e(t.parentNode):null},h=function(){},p=function(e){e.offsetHeight},_=function(){return window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null},v=[],g=function(){return"rtl"===document.documentElement.dir},m=function(e){var t;t=function(){var t=_();if(t){var n=e.NAME,i=t.fn[n];t.fn[n]=e.jQueryInterface,t.fn[n].Constructor=e,t.fn[n].noConflict=function(){return t.fn[n]=i,e.jQueryInterface}}},"loading"===document.readyState?(v.length||document.addEventListener("DOMContentLoaded",(function(){for(var e=0,t=v;e1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;return"function"==typeof e?e.apply(void 0,_toConsumableArray(t)):n},b=function(e,t){if(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]){var n=function(e){if(!e)return 0;var t=window.getComputedStyle(e),n=t.transitionDuration,i=t.transitionDelay,r=Number.parseFloat(n),o=Number.parseFloat(i);return r||o?(n=n.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(n)+Number.parseFloat(i))):0}(t)+5,i=!1;t.addEventListener(o,(function n(r){r.target===t&&(i=!0,t.removeEventListener(o,n),y(e))})),setTimeout((function(){i||s(t)}),n)}else y(e)},k=function(e,t,n,i){var r=e.length,o=e.indexOf(t);return-1===o?!n&&i?e[r-1]:e[0]:(o+=n?1:-1,i&&(o=(o+r)%r),e[Math.max(0,Math.min(o,r-1))])},w=/[^.]*(?=\..*)\.|.*/,C=/\..*/,O=/::\d+$/,A={},E=1,T={mouseenter:"mouseover",mouseleave:"mouseout"},S=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function x(e,t){return t&&"".concat(t,"::").concat(E++)||e.uidEvent||E++}function I(e){var t=x(e);return e.uidEvent=t,A[t]=A[t]||{},A[t]}function P(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(e).find((function(e){return e.callable===t&&e.delegationSelector===n}))}function L(e,t,n){var i="string"==typeof t,r=i?n:t||n,o=M(e);return S.has(o)||(o=e),[i,r,o]}function j(e,t,n,i,r){if("string"==typeof t&&e){var o=_slicedToArray(L(t,n,i),3),a=o[0],s=o[1],l=o[2];if(t in T){s=function(e){return function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)}}(s)}var c=I(e),u=c[l]||(c[l]={}),f=P(u,s,a?n:null);if(f)f.oneOff=f.oneOff&&r;else{var d=x(s,t.replace(w,"")),h=a?function(e,t,n){return function i(r){for(var o=e.querySelectorAll(t),a=r.target;a&&a!==this;a=a.parentNode){var s,l=_createForOfIteratorHelper(o);try{for(l.s();!(s=l.n()).done;)if(s.value===a)return H(r,{delegateTarget:a}),i.oneOff&&F.off(e,r.type,t,n),n.apply(a,[r])}catch(e){l.e(e)}finally{l.f()}}}}(e,n,s):function(e,t){return function n(i){return H(i,{delegateTarget:e}),n.oneOff&&F.off(e,i.type,t),t.apply(e,[i])}}(e,s);h.delegationSelector=a?n:null,h.callable=s,h.oneOff=r,h.uidEvent=d,u[d]=h,e.addEventListener(l,h,a)}}}function D(e,t,n,i,r){var o=P(t[n],i,r);o&&(e.removeEventListener(n,o,Boolean(r)),delete t[n][o.uidEvent])}function N(e,t,n,i){for(var r=t[n]||{},o=0,a=Object.entries(r);o1&&void 0!==arguments[1]?arguments[1]:{},n=function(){var t=_slicedToArray(r[i],2),n=t[0],o=t[1];try{e[n]=o}catch(t){Object.defineProperty(e,n,{configurable:!0,get:function(){return o}})}},i=0,r=Object.entries(t);i1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType,i=0,r=Object.entries(n);i2&&void 0!==arguments[2])||arguments[2])}},{key:"_getConfig",value:function(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}}],[{key:"getInstance",value:function(e){return i(c(e),this.DATA_KEY)}},{key:"getOrCreateInstance",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(e)||new this(e,"object"===_typeof(t)?t:null)}},{key:"VERSION",get:function(){return"5.3.3"}},{key:"DATA_KEY",get:function(){return"bs.".concat(this.NAME)}},{key:"EVENT_KEY",get:function(){return".".concat(this.DATA_KEY)}},{key:"eventName",value:function(e){return"".concat(e).concat(this.EVENT_KEY)}}]),o}(K),U=function(e){var t=e.getAttribute("data-bs-target");if(!t||"#"===t){var n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n="#".concat(n.split("#")[1])),t=n&&"#"!==n?n.trim():null}return t?t.split(",").map((function(e){return a(e)})).join(","):null},X={find:function(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return(t=[]).concat.apply(t,_toConsumableArray(Element.prototype.querySelectorAll.call(n,e)))},findOne:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(t,e)},children:function(e,t){var n;return(n=[]).concat.apply(n,_toConsumableArray(e.children)).filter((function(e){return e.matches(t)}))},parents:function(e,t){for(var n=[],i=e.parentNode.closest(t);i;)n.push(i),i=i.parentNode.closest(t);return n},prev:function(e,t){for(var n=e.previousElementSibling;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next:function(e,t){for(var n=e.nextElementSibling;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren:function(e){var t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((function(e){return"".concat(e,':not([tabindex^="-"])')})).join(",");return this.find(t,e).filter((function(e){return!f(e)&&u(e)}))},getSelectorFromElement:function(e){var t=U(e);return t&&X.findOne(t)?t:null},getElementFromSelector:function(e){var t=U(e);return t?X.findOne(t):null},getMultipleElementsFromSelector:function(e){var t=U(e);return t?X.find(t):[]}},Y=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"hide",n="click.dismiss".concat(e.EVENT_KEY),i=e.NAME;F.on(document,n,'[data-bs-dismiss="'.concat(i,'"]'),(function(n){if(["A","AREA"].includes(this.tagName)&&n.preventDefault(),!f(this)){var r=X.getElementFromSelector(this)||this.closest(".".concat(i));e.getOrCreateInstance(r)[t]()}}))},$=".".concat("bs.alert"),G="close".concat($),J="closed".concat($),Z=function(e){_inherits(n,e);var t=_createSuper(n);function n(){return _classCallCheck(this,n),t.apply(this,arguments)}return _createClass(n,[{key:"close",value:function(){var e=this;if(!F.trigger(this._element,G).defaultPrevented){this._element.classList.remove("show");var t=this._element.classList.contains("fade");this._queueCallback((function(){return e._destroyElement()}),this._element,t)}}},{key:"_destroyElement",value:function(){this._element.remove(),F.trigger(this._element,J),this.dispose()}}],[{key:"NAME",get:function(){return"alert"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e](this)}}))}}]),n}(Q);Y(Z,"close"),m(Z);var ee=".".concat("bs.button"),te='[data-bs-toggle="button"]',ne="click".concat(ee).concat(".data-api"),ie=function(e){_inherits(n,e);var t=_createSuper(n);function n(){return _classCallCheck(this,n),t.apply(this,arguments)}return _createClass(n,[{key:"toggle",value:function(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}}],[{key:"NAME",get:function(){return"button"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this);"toggle"===e&&t[e]()}))}}]),n}(Q);F.on(document,ne,te,(function(e){e.preventDefault();var t=e.target.closest(te);ie.getOrCreateInstance(t).toggle()})),m(ie);var re=".bs.swipe",oe="touchstart".concat(re),ae="touchmove".concat(re),se="touchend".concat(re),le="pointerdown".concat(re),ce="pointerup".concat(re),ue={endCallback:null,leftCallback:null,rightCallback:null},fe={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"},de=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;return _classCallCheck(this,n),(r=t.call(this))._element=e,e&&n.isSupported()?(r._config=r._getConfig(i),r._deltaX=0,r._supportPointerEvents=Boolean(window.PointerEvent),r._initEvents(),r):_possibleConstructorReturn(r)}return _createClass(n,[{key:"dispose",value:function(){F.off(this._element,re)}},{key:"_start",value:function(e){this._supportPointerEvents?this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX):this._deltaX=e.touches[0].clientX}},{key:"_end",value:function(e){this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX-this._deltaX),this._handleSwipe(),y(this._config.endCallback)}},{key:"_move",value:function(e){this._deltaX=e.touches&&e.touches.length>1?0:e.touches[0].clientX-this._deltaX}},{key:"_handleSwipe",value:function(){var e=Math.abs(this._deltaX);if(!(e<=40)){var t=e/this._deltaX;this._deltaX=0,t&&y(t>0?this._config.rightCallback:this._config.leftCallback)}}},{key:"_initEvents",value:function(){var e=this;this._supportPointerEvents?(F.on(this._element,le,(function(t){return e._start(t)})),F.on(this._element,ce,(function(t){return e._end(t)})),this._element.classList.add("pointer-event")):(F.on(this._element,oe,(function(t){return e._start(t)})),F.on(this._element,ae,(function(t){return e._move(t)})),F.on(this._element,se,(function(t){return e._end(t)})))}},{key:"_eventIsPointerPenTouch",value:function(e){return this._supportPointerEvents&&("pen"===e.pointerType||"touch"===e.pointerType)}}],[{key:"Default",get:function(){return ue}},{key:"DefaultType",get:function(){return fe}},{key:"NAME",get:function(){return"swipe"}},{key:"isSupported",value:function(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}]),n}(K),he=".".concat("bs.carousel"),pe=".data-api",_e="next",ve="prev",ge="left",me="right",ye="slide".concat(he),be="slid".concat(he),ke="keydown".concat(he),we="mouseenter".concat(he),Ce="mouseleave".concat(he),Oe="dragstart".concat(he),Ae="load".concat(he).concat(pe),Ee="click".concat(he).concat(pe),Te="carousel",Se="active",xe=".active",Ie=".carousel-item",Pe=xe+Ie,Le=(_defineProperty(e={},"ArrowLeft",me),_defineProperty(e,"ArrowRight",ge),e),je={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},De={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"},Ne=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;return _classCallCheck(this,n),(r=t.call(this,e,i))._interval=null,r._activeElement=null,r._isSliding=!1,r.touchTimeout=null,r._swipeHelper=null,r._indicatorsElement=X.findOne(".carousel-indicators",r._element),r._addEventListeners(),r._config.ride===Te&&r.cycle(),r}return _createClass(n,[{key:"next",value:function(){this._slide(_e)}},{key:"nextWhenVisible",value:function(){!document.hidden&&u(this._element)&&this.next()}},{key:"prev",value:function(){this._slide(ve)}},{key:"pause",value:function(){this._isSliding&&s(this._element),this._clearInterval()}},{key:"cycle",value:function(){var e=this;this._clearInterval(),this._updateInterval(),this._interval=setInterval((function(){return e.nextWhenVisible()}),this._config.interval)}},{key:"_maybeEnableCycle",value:function(){var e=this;this._config.ride&&(this._isSliding?F.one(this._element,be,(function(){return e.cycle()})):this.cycle())}},{key:"to",value:function(e){var t=this,n=this._getItems();if(!(e>n.length-1||e<0))if(this._isSliding)F.one(this._element,be,(function(){return t.to(e)}));else{var i=this._getItemIndex(this._getActive());if(i!==e){var r=e>i?_e:ve;this._slide(r,n[e])}}}},{key:"dispose",value:function(){this._swipeHelper&&this._swipeHelper.dispose(),_get(_getPrototypeOf(n.prototype),"dispose",this).call(this)}},{key:"_configAfterMerge",value:function(e){return e.defaultInterval=e.interval,e}},{key:"_addEventListeners",value:function(){var e=this;this._config.keyboard&&F.on(this._element,ke,(function(t){return e._keydown(t)})),"hover"===this._config.pause&&(F.on(this._element,we,(function(){return e.pause()})),F.on(this._element,Ce,(function(){return e._maybeEnableCycle()}))),this._config.touch&&de.isSupported()&&this._addTouchEventListeners()}},{key:"_addTouchEventListeners",value:function(){var e,t=this,n=_createForOfIteratorHelper(X.find(".carousel-item img",this._element));try{for(n.s();!(e=n.n()).done;){var i=e.value;F.on(i,Oe,(function(e){return e.preventDefault()}))}}catch(e){n.e(e)}finally{n.f()}var r={leftCallback:function(){return t._slide(t._directionToOrder(ge))},rightCallback:function(){return t._slide(t._directionToOrder(me))},endCallback:function(){"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(){return t._maybeEnableCycle()}),500+t._config.interval))}};this._swipeHelper=new de(this._element,r)}},{key:"_keydown",value:function(e){if(!/input|textarea/i.test(e.target.tagName)){var t=Le[e.key];t&&(e.preventDefault(),this._slide(this._directionToOrder(t)))}}},{key:"_getItemIndex",value:function(e){return this._getItems().indexOf(e)}},{key:"_setActiveIndicatorElement",value:function(e){if(this._indicatorsElement){var t=X.findOne(xe,this._indicatorsElement);t.classList.remove(Se),t.removeAttribute("aria-current");var n=X.findOne('[data-bs-slide-to="'.concat(e,'"]'),this._indicatorsElement);n&&(n.classList.add(Se),n.setAttribute("aria-current","true"))}}},{key:"_updateInterval",value:function(){var e=this._activeElement||this._getActive();if(e){var t=Number.parseInt(e.getAttribute("data-bs-interval"),10);this._config.interval=t||this._config.defaultInterval}}},{key:"_slide",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!this._isSliding){var i=this._getActive(),r=e===_e,o=n||k(this._getItems(),i,r,this._config.wrap);if(o!==i){var a=this._getItemIndex(o),s=function(n){return F.trigger(t._element,n,{relatedTarget:o,direction:t._orderToDirection(e),from:t._getItemIndex(i),to:a})};if(!s(ye).defaultPrevented&&i&&o){var l=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(a),this._activeElement=o;var c=r?"carousel-item-start":"carousel-item-end",u=r?"carousel-item-next":"carousel-item-prev";o.classList.add(u),p(o),i.classList.add(c),o.classList.add(c);this._queueCallback((function(){o.classList.remove(c,u),o.classList.add(Se),i.classList.remove(Se,u,c),t._isSliding=!1,s(be)}),i,this._isAnimated()),l&&this.cycle()}}}}},{key:"_isAnimated",value:function(){return this._element.classList.contains("slide")}},{key:"_getActive",value:function(){return X.findOne(Pe,this._element)}},{key:"_getItems",value:function(){return X.find(Ie,this._element)}},{key:"_clearInterval",value:function(){this._interval&&(clearInterval(this._interval),this._interval=null)}},{key:"_directionToOrder",value:function(e){return g()?e===ge?ve:_e:e===ge?_e:ve}},{key:"_orderToDirection",value:function(e){return g()?e===ve?ge:me:e===ve?me:ge}}],[{key:"Default",get:function(){return je}},{key:"DefaultType",get:function(){return De}},{key:"NAME",get:function(){return"carousel"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this,e);if("number"!=typeof e){if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e]()}}else t.to(e)}))}}]),n}(Q);F.on(document,Ee,"[data-bs-slide], [data-bs-slide-to]",(function(e){var t=X.getElementFromSelector(this);if(t&&t.classList.contains(Te)){e.preventDefault();var n=Ne.getOrCreateInstance(t),i=this.getAttribute("data-bs-slide-to");if(i)return n.to(i),void n._maybeEnableCycle();if("next"===V(this,"slide"))return n.next(),void n._maybeEnableCycle();n.prev(),n._maybeEnableCycle()}})),F.on(window,Ae,(function(){var e,t=_createForOfIteratorHelper(X.find('[data-bs-ride="carousel"]'));try{for(t.s();!(e=t.n()).done;){var n=e.value;Ne.getOrCreateInstance(n)}}catch(e){t.e(e)}finally{t.f()}})),m(Ne);var Me=".".concat("bs.collapse"),Fe="show".concat(Me),He="shown".concat(Me),Re="hide".concat(Me),We="hidden".concat(Me),Be="click".concat(Me).concat(".data-api"),ze="show",qe="collapse",Ve="collapsing",Ke=":scope .".concat(qe," .").concat(qe),Qe='[data-bs-toggle="collapse"]',Ue={parent:null,toggle:!0},Xe={parent:"(null|element)",toggle:"boolean"},Ye=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;_classCallCheck(this,n),(r=t.call(this,e,i))._isTransitioning=!1,r._triggerArray=[];var o,a=_createForOfIteratorHelper(X.find(Qe));try{for(a.s();!(o=a.n()).done;){var s=o.value,l=X.getSelectorFromElement(s),c=X.find(l).filter((function(e){return e===r._element}));null!==l&&c.length&&r._triggerArray.push(s)}}catch(e){a.e(e)}finally{a.f()}return r._initializeChildren(),r._config.parent||r._addAriaAndCollapsedClass(r._triggerArray,r._isShown()),r._config.toggle&&r.toggle(),r}return _createClass(n,[{key:"toggle",value:function(){this._isShown()?this.hide():this.show()}},{key:"show",value:function(){var e=this;if(!this._isTransitioning&&!this._isShown()){var t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((function(t){return t!==e._element})).map((function(e){return n.getOrCreateInstance(e,{toggle:!1})}))),!t.length||!t[0]._isTransitioning)if(!F.trigger(this._element,Fe).defaultPrevented){var i,r=_createForOfIteratorHelper(t);try{for(r.s();!(i=r.n()).done;){i.value.hide()}}catch(e){r.e(e)}finally{r.f()}var o=this._getDimension();this._element.classList.remove(qe),this._element.classList.add(Ve),this._element.style[o]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;var a=o[0].toUpperCase()+o.slice(1),s="scroll".concat(a);this._queueCallback((function(){e._isTransitioning=!1,e._element.classList.remove(Ve),e._element.classList.add(qe,ze),e._element.style[o]="",F.trigger(e._element,He)}),this._element,!0),this._element.style[o]="".concat(this._element[s],"px")}}}},{key:"hide",value:function(){var e=this;if(!this._isTransitioning&&this._isShown()&&!F.trigger(this._element,Re).defaultPrevented){var t=this._getDimension();this._element.style[t]="".concat(this._element.getBoundingClientRect()[t],"px"),p(this._element),this._element.classList.add(Ve),this._element.classList.remove(qe,ze);var n,i=_createForOfIteratorHelper(this._triggerArray);try{for(i.s();!(n=i.n()).done;){var r=n.value,o=X.getElementFromSelector(r);o&&!this._isShown(o)&&this._addAriaAndCollapsedClass([r],!1)}}catch(e){i.e(e)}finally{i.f()}this._isTransitioning=!0;this._element.style[t]="",this._queueCallback((function(){e._isTransitioning=!1,e._element.classList.remove(Ve),e._element.classList.add(qe),F.trigger(e._element,We)}),this._element,!0)}}},{key:"_isShown",value:function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(ze)}},{key:"_configAfterMerge",value:function(e){return e.toggle=Boolean(e.toggle),e.parent=c(e.parent),e}},{key:"_getDimension",value:function(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}},{key:"_initializeChildren",value:function(){if(this._config.parent){var e,t=_createForOfIteratorHelper(this._getFirstLevelChildren(Qe));try{for(t.s();!(e=t.n()).done;){var n=e.value,i=X.getElementFromSelector(n);i&&this._addAriaAndCollapsedClass([n],this._isShown(i))}}catch(e){t.e(e)}finally{t.f()}}}},{key:"_getFirstLevelChildren",value:function(e){var t=X.find(Ke,this._config.parent);return X.find(e,this._config.parent).filter((function(e){return!t.includes(e)}))}},{key:"_addAriaAndCollapsedClass",value:function(e,t){if(e.length){var n,i=_createForOfIteratorHelper(e);try{for(i.s();!(n=i.n()).done;){var r=n.value;r.classList.toggle("collapsed",!t),r.setAttribute("aria-expanded",t)}}catch(e){i.e(e)}finally{i.f()}}}}],[{key:"Default",get:function(){return Ue}},{key:"DefaultType",get:function(){return Xe}},{key:"NAME",get:function(){return"collapse"}},{key:"jQueryInterface",value:function(e){var t={};return"string"==typeof e&&/show|hide/.test(e)&&(t.toggle=!1),this.each((function(){var i=n.getOrCreateInstance(this,t);if("string"==typeof e){if(void 0===i[e])throw new TypeError('No method named "'.concat(e,'"'));i[e]()}}))}}]),n}(Q);F.on(document,Be,Qe,(function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();var t,n=_createForOfIteratorHelper(X.getMultipleElementsFromSelector(this));try{for(n.s();!(t=n.n()).done;){var i=t.value;Ye.getOrCreateInstance(i,{toggle:!1}).toggle()}}catch(e){n.e(e)}finally{n.f()}})),m(Ye);var $e="top",Ge="bottom",Je="right",Ze="left",et="auto",tt=[$e,Ge,Je,Ze],nt="start",it="end",rt="clippingParents",ot="viewport",at="popper",st="reference",lt=tt.reduce((function(e,t){return e.concat([t+"-"+nt,t+"-"+it])}),[]),ct=[].concat(tt,[et]).reduce((function(e,t){return e.concat([t,t+"-"+nt,t+"-"+it])}),[]),ut="beforeRead",ft="read",dt="afterRead",ht="beforeMain",pt="main",_t="afterMain",vt="beforeWrite",gt="write",mt="afterWrite",yt=[ut,ft,dt,ht,pt,_t,vt,gt,mt];function bt(e){return e?(e.nodeName||"").toLowerCase():null}function kt(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function wt(e){return e instanceof kt(e).Element||e instanceof Element}function Ct(e){return e instanceof kt(e).HTMLElement||e instanceof HTMLElement}function Ot(e){return"undefined"!=typeof ShadowRoot&&(e instanceof kt(e).ShadowRoot||e instanceof ShadowRoot)}var At={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},i=t.attributes[e]||{},r=t.elements[e];Ct(r)&&bt(r)&&(Object.assign(r.style,n),Object.keys(i).forEach((function(e){var t=i[e];!1===t?r.removeAttribute(e):r.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var i=t.elements[e],r=t.attributes[e]||{},o=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});Ct(i)&&bt(i)&&(Object.assign(i.style,o),Object.keys(r).forEach((function(e){i.removeAttribute(e)})))}))}},requires:["computeStyles"]};function Et(e){return e.split("-")[0]}var Tt=Math.max,St=Math.min,xt=Math.round;function It(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function Pt(){return!/^((?!chrome|android).)*safari/i.test(It())}function Lt(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var i=e.getBoundingClientRect(),r=1,o=1;t&&Ct(e)&&(r=e.offsetWidth>0&&xt(i.width)/e.offsetWidth||1,o=e.offsetHeight>0&&xt(i.height)/e.offsetHeight||1);var a=(wt(e)?kt(e):window).visualViewport,s=!Pt()&&n,l=(i.left+(s&&a?a.offsetLeft:0))/r,c=(i.top+(s&&a?a.offsetTop:0))/o,u=i.width/r,f=i.height/o;return{width:u,height:f,top:c,right:l+u,bottom:c+f,left:l,x:l,y:c}}function jt(e){var t=Lt(e),n=e.offsetWidth,i=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-i)<=1&&(i=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:i}}function Dt(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Ot(n)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Nt(e){return kt(e).getComputedStyle(e)}function Mt(e){return["table","td","th"].indexOf(bt(e))>=0}function Ft(e){return((wt(e)?e.ownerDocument:e.document)||window.document).documentElement}function Ht(e){return"html"===bt(e)?e:e.assignedSlot||e.parentNode||(Ot(e)?e.host:null)||Ft(e)}function Rt(e){return Ct(e)&&"fixed"!==Nt(e).position?e.offsetParent:null}function Wt(e){for(var t=kt(e),n=Rt(e);n&&Mt(n)&&"static"===Nt(n).position;)n=Rt(n);return n&&("html"===bt(n)||"body"===bt(n)&&"static"===Nt(n).position)?t:n||function(e){var t=/firefox/i.test(It());if(/Trident/i.test(It())&&Ct(e)&&"fixed"===Nt(e).position)return null;var n=Ht(e);for(Ot(n)&&(n=n.host);Ct(n)&&["html","body"].indexOf(bt(n))<0;){var i=Nt(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||t}function Bt(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function zt(e,t,n){return Tt(e,St(t,n))}function qt(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function Vt(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}var Kt={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,i=e.name,r=e.options,o=n.elements.arrow,a=n.modifiersData.popperOffsets,s=Et(n.placement),l=Bt(s),c=[Ze,Je].indexOf(s)>=0?"height":"width";if(o&&a){var u=function(e,t){return qt("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:Vt(e,tt))}(r.padding,n),f=jt(o),d="y"===l?$e:Ze,h="y"===l?Ge:Je,p=n.rects.reference[c]+n.rects.reference[l]-a[l]-n.rects.popper[c],_=a[l]-n.rects.reference[l],v=Wt(o),g=v?"y"===l?v.clientHeight||0:v.clientWidth||0:0,m=p/2-_/2,y=u[d],b=g-f[c]-u[h],k=g/2-f[c]/2+m,w=zt(y,k,b),C=l;n.modifiersData[i]=((t={})[C]=w,t.centerOffset=w-k,t)}},effect:function(e){var t=e.state,n=e.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=t.elements.popper.querySelector(i)))&&Dt(t.elements.popper,i)&&(t.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Qt(e){return e.split("-")[1]}var Ut={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Xt(e){var t,n=e.popper,i=e.popperRect,r=e.placement,o=e.variation,a=e.offsets,s=e.position,l=e.gpuAcceleration,c=e.adaptive,u=e.roundOffsets,f=e.isFixed,d=a.x,h=void 0===d?0:d,p=a.y,_=void 0===p?0:p,v="function"==typeof u?u({x:h,y:_}):{x:h,y:_};h=v.x,_=v.y;var g=a.hasOwnProperty("x"),m=a.hasOwnProperty("y"),y=Ze,b=$e,k=window;if(c){var w=Wt(n),C="clientHeight",O="clientWidth";if(w===kt(n)&&"static"!==Nt(w=Ft(n)).position&&"absolute"===s&&(C="scrollHeight",O="scrollWidth"),r===$e||(r===Ze||r===Je)&&o===it)b=Ge,_-=(f&&w===k&&k.visualViewport?k.visualViewport.height:w[C])-i.height,_*=l?1:-1;if(r===Ze||(r===$e||r===Ge)&&o===it)y=Je,h-=(f&&w===k&&k.visualViewport?k.visualViewport.width:w[O])-i.width,h*=l?1:-1}var A,E=Object.assign({position:s},c&&Ut),T=!0===u?function(e,t){var n=e.x,i=e.y,r=t.devicePixelRatio||1;return{x:xt(n*r)/r||0,y:xt(i*r)/r||0}}({x:h,y:_},kt(n)):{x:h,y:_};return h=T.x,_=T.y,l?Object.assign({},E,((A={})[b]=m?"0":"",A[y]=g?"0":"",A.transform=(k.devicePixelRatio||1)<=1?"translate("+h+"px, "+_+"px)":"translate3d("+h+"px, "+_+"px, 0)",A)):Object.assign({},E,((t={})[b]=m?_+"px":"",t[y]=g?h+"px":"",t.transform="",t))}var Yt={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,i=n.gpuAcceleration,r=void 0===i||i,o=n.adaptive,a=void 0===o||o,s=n.roundOffsets,l=void 0===s||s,c={placement:Et(t.placement),variation:Qt(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:r,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,Xt(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,Xt(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},$t={passive:!0};var Gt={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,i=e.options,r=i.scroll,o=void 0===r||r,a=i.resize,s=void 0===a||a,l=kt(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&c.forEach((function(e){e.addEventListener("scroll",n.update,$t)})),s&&l.addEventListener("resize",n.update,$t),function(){o&&c.forEach((function(e){e.removeEventListener("scroll",n.update,$t)})),s&&l.removeEventListener("resize",n.update,$t)}},data:{}},Jt={left:"right",right:"left",bottom:"top",top:"bottom"};function Zt(e){return e.replace(/left|right|bottom|top/g,(function(e){return Jt[e]}))}var en={start:"end",end:"start"};function tn(e){return e.replace(/start|end/g,(function(e){return en[e]}))}function nn(e){var t=kt(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function rn(e){return Lt(Ft(e)).left+nn(e).scrollLeft}function on(e){var t=Nt(e),n=t.overflow,i=t.overflowX,r=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+r+i)}function an(e){return["html","body","#document"].indexOf(bt(e))>=0?e.ownerDocument.body:Ct(e)&&on(e)?e:an(Ht(e))}function sn(e,t){var n;void 0===t&&(t=[]);var i=an(e),r=i===(null==(n=e.ownerDocument)?void 0:n.body),o=kt(i),a=r?[o].concat(o.visualViewport||[],on(i)?i:[]):i,s=t.concat(a);return r?s:s.concat(sn(Ht(a)))}function ln(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function cn(e,t,n){return t===ot?ln(function(e,t){var n=kt(e),i=Ft(e),r=n.visualViewport,o=i.clientWidth,a=i.clientHeight,s=0,l=0;if(r){o=r.width,a=r.height;var c=Pt();(c||!c&&"fixed"===t)&&(s=r.offsetLeft,l=r.offsetTop)}return{width:o,height:a,x:s+rn(e),y:l}}(e,n)):wt(t)?function(e,t){var n=Lt(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):ln(function(e){var t,n=Ft(e),i=nn(e),r=null==(t=e.ownerDocument)?void 0:t.body,o=Tt(n.scrollWidth,n.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),a=Tt(n.scrollHeight,n.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),s=-i.scrollLeft+rn(e),l=-i.scrollTop;return"rtl"===Nt(r||n).direction&&(s+=Tt(n.clientWidth,r?r.clientWidth:0)-o),{width:o,height:a,x:s,y:l}}(Ft(e)))}function un(e,t,n,i){var r="clippingParents"===t?function(e){var t=sn(Ht(e)),n=["absolute","fixed"].indexOf(Nt(e).position)>=0&&Ct(e)?Wt(e):e;return wt(n)?t.filter((function(e){return wt(e)&&Dt(e,n)&&"body"!==bt(e)})):[]}(e):[].concat(t),o=[].concat(r,[n]),a=o[0],s=o.reduce((function(t,n){var r=cn(e,n,i);return t.top=Tt(r.top,t.top),t.right=St(r.right,t.right),t.bottom=St(r.bottom,t.bottom),t.left=Tt(r.left,t.left),t}),cn(e,a,i));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}function fn(e){var t,n=e.reference,i=e.element,r=e.placement,o=r?Et(r):null,a=r?Qt(r):null,s=n.x+n.width/2-i.width/2,l=n.y+n.height/2-i.height/2;switch(o){case $e:t={x:s,y:n.y-i.height};break;case Ge:t={x:s,y:n.y+n.height};break;case Je:t={x:n.x+n.width,y:l};break;case Ze:t={x:n.x-i.width,y:l};break;default:t={x:n.x,y:n.y}}var c=o?Bt(o):null;if(null!=c){var u="y"===c?"height":"width";switch(a){case nt:t[c]=t[c]-(n[u]/2-i[u]/2);break;case it:t[c]=t[c]+(n[u]/2-i[u]/2)}}return t}function dn(e,t){void 0===t&&(t={});var n=t,i=n.placement,r=void 0===i?e.placement:i,o=n.strategy,a=void 0===o?e.strategy:o,s=n.boundary,l=void 0===s?rt:s,c=n.rootBoundary,u=void 0===c?ot:c,f=n.elementContext,d=void 0===f?at:f,h=n.altBoundary,p=void 0!==h&&h,_=n.padding,v=void 0===_?0:_,g=qt("number"!=typeof v?v:Vt(v,tt)),m=d===at?st:at,y=e.rects.popper,b=e.elements[p?m:d],k=un(wt(b)?b:b.contextElement||Ft(e.elements.popper),l,u,a),w=Lt(e.elements.reference),C=fn({reference:w,element:y,strategy:"absolute",placement:r}),O=ln(Object.assign({},y,C)),A=d===at?O:w,E={top:k.top-A.top+g.top,bottom:A.bottom-k.bottom+g.bottom,left:k.left-A.left+g.left,right:A.right-k.right+g.right},T=e.modifiersData.offset;if(d===at&&T){var S=T[r];Object.keys(E).forEach((function(e){var t=[Je,Ge].indexOf(e)>=0?1:-1,n=[$e,Ge].indexOf(e)>=0?"y":"x";E[e]+=S[n]*t}))}return E}function hn(e,t){void 0===t&&(t={});var n=t,i=n.placement,r=n.boundary,o=n.rootBoundary,a=n.padding,s=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?ct:l,u=Qt(i),f=u?s?lt:lt.filter((function(e){return Qt(e)===u})):tt,d=f.filter((function(e){return c.indexOf(e)>=0}));0===d.length&&(d=f);var h=d.reduce((function(t,n){return t[n]=dn(e,{placement:n,boundary:r,rootBoundary:o,padding:a})[Et(n)],t}),{});return Object.keys(h).sort((function(e,t){return h[e]-h[t]}))}var pn={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name;if(!t.modifiersData[i]._skip){for(var r=n.mainAxis,o=void 0===r||r,a=n.altAxis,s=void 0===a||a,l=n.fallbackPlacements,c=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,h=n.flipVariations,p=void 0===h||h,_=n.allowedAutoPlacements,v=t.options.placement,g=Et(v),m=l||(g===v||!p?[Zt(v)]:function(e){if(Et(e)===et)return[];var t=Zt(e);return[tn(e),t,tn(t)]}(v)),y=[v].concat(m).reduce((function(e,n){return e.concat(Et(n)===et?hn(t,{placement:n,boundary:u,rootBoundary:f,padding:c,flipVariations:p,allowedAutoPlacements:_}):n)}),[]),b=t.rects.reference,k=t.rects.popper,w=new Map,C=!0,O=y[0],A=0;A=0,I=x?"width":"height",P=dn(t,{placement:E,boundary:u,rootBoundary:f,altBoundary:d,padding:c}),L=x?S?Je:Ze:S?Ge:$e;b[I]>k[I]&&(L=Zt(L));var j=Zt(L),D=[];if(o&&D.push(P[T]<=0),s&&D.push(P[L]<=0,P[j]<=0),D.every((function(e){return e}))){O=E,C=!1;break}w.set(E,D)}if(C)for(var N=function(e){var t=y.find((function(t){var n=w.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return O=t,"break"},M=p?3:1;M>0;M--){if("break"===N(M))break}t.placement!==O&&(t.modifiersData[i]._skip=!0,t.placement=O,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function _n(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function vn(e){return[$e,Je,Ge,Ze].some((function(t){return e[t]>=0}))}var gn={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,i=t.rects.reference,r=t.rects.popper,o=t.modifiersData.preventOverflow,a=dn(t,{elementContext:"reference"}),s=dn(t,{altBoundary:!0}),l=_n(a,i),c=_n(s,r,o),u=vn(l),f=vn(c);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var mn={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,i=e.name,r=n.offset,o=void 0===r?[0,0]:r,a=ct.reduce((function(e,n){return e[n]=function(e,t,n){var i=Et(e),r=[Ze,$e].indexOf(i)>=0?-1:1,o="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=o[0],s=o[1];return a=a||0,s=(s||0)*r,[Ze,Je].indexOf(i)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,o),e}),{}),s=a[t.placement],l=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[i]=a}};var yn={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=fn({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}};var bn={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name,r=n.mainAxis,o=void 0===r||r,a=n.altAxis,s=void 0!==a&&a,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,h=void 0===d||d,p=n.tetherOffset,_=void 0===p?0:p,v=dn(t,{boundary:l,rootBoundary:c,padding:f,altBoundary:u}),g=Et(t.placement),m=Qt(t.placement),y=!m,b=Bt(g),k="x"===b?"y":"x",w=t.modifiersData.popperOffsets,C=t.rects.reference,O=t.rects.popper,A="function"==typeof _?_(Object.assign({},t.rects,{placement:t.placement})):_,E="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),T=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,S={x:0,y:0};if(w){if(o){var x,I="y"===b?$e:Ze,P="y"===b?Ge:Je,L="y"===b?"height":"width",j=w[b],D=j+v[I],N=j-v[P],M=h?-O[L]/2:0,F=m===nt?C[L]:O[L],H=m===nt?-O[L]:-C[L],R=t.elements.arrow,W=h&&R?jt(R):{width:0,height:0},B=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=B[I],q=B[P],V=zt(0,C[L],W[L]),K=y?C[L]/2-M-V-z-E.mainAxis:F-V-z-E.mainAxis,Q=y?-C[L]/2+M+V+q+E.mainAxis:H+V+q+E.mainAxis,U=t.elements.arrow&&Wt(t.elements.arrow),X=U?"y"===b?U.clientTop||0:U.clientLeft||0:0,Y=null!=(x=null==T?void 0:T[b])?x:0,$=j+Q-Y,G=zt(h?St(D,j+K-Y-X):D,j,h?Tt(N,$):N);w[b]=G,S[b]=G-j}if(s){var J,Z="x"===b?$e:Ze,ee="x"===b?Ge:Je,te=w[k],ne="y"===k?"height":"width",ie=te+v[Z],re=te-v[ee],oe=-1!==[$e,Ze].indexOf(g),ae=null!=(J=null==T?void 0:T[k])?J:0,se=oe?ie:te-C[ne]-O[ne]-ae+E.altAxis,le=oe?te+C[ne]+O[ne]-ae-E.altAxis:re,ce=h&&oe?function(e,t,n){var i=zt(e,t,n);return i>n?n:i}(se,te,le):zt(h?se:ie,te,h?le:re);w[k]=ce,S[k]=ce-te}t.modifiersData[i]=S}},requiresIfExists:["offset"]};function kn(e,t,n){void 0===n&&(n=!1);var i,r,o=Ct(t),a=Ct(t)&&function(e){var t=e.getBoundingClientRect(),n=xt(t.width)/e.offsetWidth||1,i=xt(t.height)/e.offsetHeight||1;return 1!==n||1!==i}(t),s=Ft(t),l=Lt(e,a,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(o||!o&&!n)&&(("body"!==bt(t)||on(s))&&(c=(i=t)!==kt(i)&&Ct(i)?{scrollLeft:(r=i).scrollLeft,scrollTop:r.scrollTop}:nn(i)),Ct(t)?((u=Lt(t,!0)).x+=t.clientLeft,u.y+=t.clientTop):s&&(u.x=rn(s))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function wn(e){var t=new Map,n=new Set,i=[];function r(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var i=t.get(e);i&&r(i)}})),i.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||r(e)})),i}var Cn={placement:"bottom",modifiers:[],strategy:"absolute"};function On(){for(var e=arguments.length,t=new Array(e),n=0;n0}},{key:"_disableOverFlow",value:function(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}},{key:"_setElementAttributes",value:function(e,t,n){var i=this,r=this.getWidth();this._applyManipulationCallback(e,(function(e){if(!(e!==i._element&&window.innerWidth>e.clientWidth+r)){i._saveInitialAttribute(e,t);var o=window.getComputedStyle(e).getPropertyValue(t);e.style.setProperty(t,"".concat(n(Number.parseFloat(o)),"px"))}}))}},{key:"_saveInitialAttribute",value:function(e,t){var n=e.style.getPropertyValue(t);n&&B(e,t,n)}},{key:"_resetElementAttributes",value:function(e,t){this._applyManipulationCallback(e,(function(e){var n=V(e,t);null!==n?(z(e,t),e.style.setProperty(t,n)):e.style.removeProperty(t)}))}},{key:"_applyManipulationCallback",value:function(e,t){if(l(e))t(e);else{var n,i=_createForOfIteratorHelper(X.find(e,this._element));try{for(i.s();!(n=i.n()).done;){t(n.value)}}catch(e){i.e(e)}finally{i.f()}}}}]),e}(),yi=".".concat("bs.modal"),bi="hide".concat(yi),ki="hidePrevented".concat(yi),wi="hidden".concat(yi),Ci="show".concat(yi),Oi="shown".concat(yi),Ai="resize".concat(yi),Ei="click.dismiss".concat(yi),Ti="mousedown.dismiss".concat(yi),Si="keydown.dismiss".concat(yi),xi="click".concat(yi).concat(".data-api"),Ii="modal-open",Pi="show",Li="modal-static",ji={backdrop:!0,focus:!0,keyboard:!0},Di={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"},Ni=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;return _classCallCheck(this,n),(r=t.call(this,e,i))._dialog=X.findOne(".modal-dialog",r._element),r._backdrop=r._initializeBackDrop(),r._focustrap=r._initializeFocusTrap(),r._isShown=!1,r._isTransitioning=!1,r._scrollBar=new mi,r._addEventListeners(),r}return _createClass(n,[{key:"toggle",value:function(e){return this._isShown?this.hide():this.show(e)}},{key:"show",value:function(e){var t=this;this._isShown||this._isTransitioning||(F.trigger(this._element,Ci,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(Ii),this._adjustDialog(),this._backdrop.show((function(){return t._showElement(e)}))))}},{key:"hide",value:function(){var e=this;this._isShown&&!this._isTransitioning&&(F.trigger(this._element,bi).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(Pi),this._queueCallback((function(){return e._hideModal()}),this._element,this._isAnimated())))}},{key:"dispose",value:function(){F.off(window,yi),F.off(this._dialog,yi),this._backdrop.dispose(),this._focustrap.deactivate(),_get(_getPrototypeOf(n.prototype),"dispose",this).call(this)}},{key:"handleUpdate",value:function(){this._adjustDialog()}},{key:"_initializeBackDrop",value:function(){return new ai({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}},{key:"_initializeFocusTrap",value:function(){return new hi({trapElement:this._element})}},{key:"_showElement",value:function(e){var t=this;document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;var n=X.findOne(".modal-body",this._dialog);n&&(n.scrollTop=0),p(this._element),this._element.classList.add(Pi);this._queueCallback((function(){t._config.focus&&t._focustrap.activate(),t._isTransitioning=!1,F.trigger(t._element,Oi,{relatedTarget:e})}),this._dialog,this._isAnimated())}},{key:"_addEventListeners",value:function(){var e=this;F.on(this._element,Si,(function(t){"Escape"===t.key&&(e._config.keyboard?e.hide():e._triggerBackdropTransition())})),F.on(window,Ai,(function(){e._isShown&&!e._isTransitioning&&e._adjustDialog()})),F.on(this._element,Ti,(function(t){F.one(e._element,Ei,(function(n){e._element===t.target&&e._element===n.target&&("static"!==e._config.backdrop?e._config.backdrop&&e.hide():e._triggerBackdropTransition())}))}))}},{key:"_hideModal",value:function(){var e=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((function(){document.body.classList.remove(Ii),e._resetAdjustments(),e._scrollBar.reset(),F.trigger(e._element,wi)}))}},{key:"_isAnimated",value:function(){return this._element.classList.contains("fade")}},{key:"_triggerBackdropTransition",value:function(){var e=this;if(!F.trigger(this._element,ki).defaultPrevented){var t=this._element.scrollHeight>document.documentElement.clientHeight,n=this._element.style.overflowY;"hidden"===n||this._element.classList.contains(Li)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(Li),this._queueCallback((function(){e._element.classList.remove(Li),e._queueCallback((function(){e._element.style.overflowY=n}),e._dialog)}),this._dialog),this._element.focus())}}},{key:"_adjustDialog",value:function(){var e=this._element.scrollHeight>document.documentElement.clientHeight,t=this._scrollBar.getWidth(),n=t>0;if(n&&!e){var i=g()?"paddingLeft":"paddingRight";this._element.style[i]="".concat(t,"px")}if(!n&&e){var r=g()?"paddingRight":"paddingLeft";this._element.style[r]="".concat(t,"px")}}},{key:"_resetAdjustments",value:function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}}],[{key:"Default",get:function(){return ji}},{key:"DefaultType",get:function(){return Di}},{key:"NAME",get:function(){return"modal"}},{key:"jQueryInterface",value:function(e,t){return this.each((function(){var i=n.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===i[e])throw new TypeError('No method named "'.concat(e,'"'));i[e](t)}}))}}]),n}(Q);F.on(document,xi,'[data-bs-toggle="modal"]',(function(e){var t=this,n=X.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&e.preventDefault(),F.one(n,Ci,(function(e){e.defaultPrevented||F.one(n,wi,(function(){u(t)&&t.focus()}))}));var i=X.findOne(".modal.show");i&&Ni.getInstance(i).hide(),Ni.getOrCreateInstance(n).toggle(this)})),Y(Ni),m(Ni);var Mi=".".concat("bs.offcanvas"),Fi=".data-api",Hi="load".concat(Mi).concat(Fi),Ri="show",Wi="showing",Bi="hiding",zi=".offcanvas.show",qi="show".concat(Mi),Vi="shown".concat(Mi),Ki="hide".concat(Mi),Qi="hidePrevented".concat(Mi),Ui="hidden".concat(Mi),Xi="resize".concat(Mi),Yi="click".concat(Mi).concat(Fi),$i="keydown.dismiss".concat(Mi),Gi={backdrop:!0,keyboard:!0,scroll:!1},Ji={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"},Zi=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;return _classCallCheck(this,n),(r=t.call(this,e,i))._isShown=!1,r._backdrop=r._initializeBackDrop(),r._focustrap=r._initializeFocusTrap(),r._addEventListeners(),r}return _createClass(n,[{key:"toggle",value:function(e){return this._isShown?this.hide():this.show(e)}},{key:"show",value:function(e){var t=this;if(!this._isShown&&!F.trigger(this._element,qi,{relatedTarget:e}).defaultPrevented){this._isShown=!0,this._backdrop.show(),this._config.scroll||(new mi).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Wi);this._queueCallback((function(){t._config.scroll&&!t._config.backdrop||t._focustrap.activate(),t._element.classList.add(Ri),t._element.classList.remove(Wi),F.trigger(t._element,Vi,{relatedTarget:e})}),this._element,!0)}}},{key:"hide",value:function(){var e=this;if(this._isShown&&!F.trigger(this._element,Ki).defaultPrevented){this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(Bi),this._backdrop.hide();this._queueCallback((function(){e._element.classList.remove(Ri,Bi),e._element.removeAttribute("aria-modal"),e._element.removeAttribute("role"),e._config.scroll||(new mi).reset(),F.trigger(e._element,Ui)}),this._element,!0)}}},{key:"dispose",value:function(){this._backdrop.dispose(),this._focustrap.deactivate(),_get(_getPrototypeOf(n.prototype),"dispose",this).call(this)}},{key:"_initializeBackDrop",value:function(){var e=this,t=Boolean(this._config.backdrop);return new ai({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?function(){"static"!==e._config.backdrop?e.hide():F.trigger(e._element,Qi)}:null})}},{key:"_initializeFocusTrap",value:function(){return new hi({trapElement:this._element})}},{key:"_addEventListeners",value:function(){var e=this;F.on(this._element,$i,(function(t){"Escape"===t.key&&(e._config.keyboard?e.hide():F.trigger(e._element,Qi))}))}}],[{key:"Default",get:function(){return Gi}},{key:"DefaultType",get:function(){return Ji}},{key:"NAME",get:function(){return"offcanvas"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e](this)}}))}}]),n}(Q);F.on(document,Yi,'[data-bs-toggle="offcanvas"]',(function(e){var t=this,n=X.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),!f(this)){F.one(n,Ui,(function(){u(t)&&t.focus()}));var i=X.findOne(zi);i&&i!==n&&Zi.getInstance(i).hide(),Zi.getOrCreateInstance(n).toggle(this)}})),F.on(window,Hi,(function(){var e,t=_createForOfIteratorHelper(X.find(zi));try{for(t.s();!(e=t.n()).done;){var n=e.value;Zi.getOrCreateInstance(n).show()}}catch(e){t.e(e)}finally{t.f()}})),F.on(window,Xi,(function(){var e,t=_createForOfIteratorHelper(X.find("[aria-modal][class*=show][class*=offcanvas-]"));try{for(t.s();!(e=t.n()).done;){var n=e.value;"fixed"!==getComputedStyle(n).position&&Zi.getOrCreateInstance(n).hide()}}catch(e){t.e(e)}finally{t.f()}})),Y(Zi),m(Zi);var er={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},tr=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),nr=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,ir=function(e,t){var n=e.nodeName.toLowerCase();return t.includes(n)?!tr.has(n)||Boolean(nr.test(e.nodeValue)):t.filter((function(e){return e instanceof RegExp})).some((function(e){return e.test(n)}))};var rr={allowList:er,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},or={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},ar={entry:"(string|element|function|null)",selector:"(string|element)"},sr=function(e){_inherits(n,e);var t=_createSuper(n);function n(e){var i;return _classCallCheck(this,n),(i=t.call(this))._config=i._getConfig(e),i}return _createClass(n,[{key:"getContent",value:function(){var e=this;return Object.values(this._config.content).map((function(t){return e._resolvePossibleFunction(t)})).filter(Boolean)}},{key:"hasContent",value:function(){return this.getContent().length>0}},{key:"changeContent",value:function(e){return this._checkContent(e),this._config.content=_objectSpread(_objectSpread({},this._config.content),e),this}},{key:"toHtml",value:function(){var e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(var t=0,n=Object.entries(this._config.content);t
',title:"",trigger:"hover focus"},gr={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"},mr=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;if(_classCallCheck(this,n),void 0===xn)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");return(r=t.call(this,e,i))._isEnabled=!0,r._timeout=0,r._isHovered=null,r._activeTrigger={},r._popper=null,r._templateFactory=null,r._newContent=null,r.tip=null,r._setListeners(),r._config.selector||r._fixTitle(),r}return _createClass(n,[{key:"enable",value:function(){this._isEnabled=!0}},{key:"disable",value:function(){this._isEnabled=!1}},{key:"toggleEnabled",value:function(){this._isEnabled=!this._isEnabled}},{key:"toggle",value:function(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}},{key:"dispose",value:function(){clearTimeout(this._timeout),F.off(this._element.closest(fr),dr,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),_get(_getPrototypeOf(n.prototype),"dispose",this).call(this)}},{key:"show",value:function(){var e=this;if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(this._isWithContent()&&this._isEnabled){var t=F.trigger(this._element,this.constructor.eventName("show")),n=(d(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(!t.defaultPrevented&&n){this._disposePopper();var i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));var r=this._config.container;if(this._element.ownerDocument.documentElement.contains(this.tip)||(r.append(i),F.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(ur),"ontouchstart"in document.documentElement){var o,a,s=_createForOfIteratorHelper((o=[]).concat.apply(o,_toConsumableArray(document.body.children)));try{for(s.s();!(a=s.n()).done;){var l=a.value;F.on(l,"mouseover",h)}}catch(e){s.e(e)}finally{s.f()}}this._queueCallback((function(){F.trigger(e._element,e.constructor.eventName("shown")),!1===e._isHovered&&e._leave(),e._isHovered=!1}),this.tip,this._isAnimated())}}}},{key:"hide",value:function(){var e=this;if(this._isShown()&&!F.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(ur),"ontouchstart"in document.documentElement){var t,n,i=_createForOfIteratorHelper((t=[]).concat.apply(t,_toConsumableArray(document.body.children)));try{for(i.s();!(n=i.n()).done;){var r=n.value;F.off(r,"mouseover",h)}}catch(e){i.e(e)}finally{i.f()}}this._activeTrigger.click=!1,this._activeTrigger[pr]=!1,this._activeTrigger[hr]=!1,this._isHovered=null;this._queueCallback((function(){e._isWithActiveTrigger()||(e._isHovered||e._disposePopper(),e._element.removeAttribute("aria-describedby"),F.trigger(e._element,e.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}},{key:"update",value:function(){this._popper&&this._popper.update()}},{key:"_isWithContent",value:function(){return Boolean(this._getTitle())}},{key:"_getTipElement",value:function(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}},{key:"_createTipElement",value:function(e){var t=this._getTemplateFactory(e).toHtml();if(!t)return null;t.classList.remove(cr,ur),t.classList.add("bs-".concat(this.constructor.NAME,"-auto"));var n=function(e){do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e}(this.constructor.NAME).toString();return t.setAttribute("id",n),this._isAnimated()&&t.classList.add(cr),t}},{key:"setContent",value:function(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}},{key:"_getTemplateFactory",value:function(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new sr(_objectSpread(_objectSpread({},this._config),{},{content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)})),this._templateFactory}},{key:"_getContentForTemplate",value:function(){return _defineProperty({},".tooltip-inner",this._getTitle())}},{key:"_getTitle",value:function(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}},{key:"_initializeOnDelegatedTarget",value:function(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}},{key:"_isAnimated",value:function(){return this._config.animation||this.tip&&this.tip.classList.contains(cr)}},{key:"_isShown",value:function(){return this.tip&&this.tip.classList.contains(ur)}},{key:"_createPopper",value:function(e){var t=y(this._config.placement,[this,e,this._element]),n=_r[t.toUpperCase()];return Sn(this._element,e,this._getPopperConfig(n))}},{key:"_getOffset",value:function(){var e=this,t=this._config.offset;return"string"==typeof t?t.split(",").map((function(e){return Number.parseInt(e,10)})):"function"==typeof t?function(n){return t(n,e._element)}:t}},{key:"_resolvePossibleFunction",value:function(e){return y(e,[this._element])}},{key:"_getPopperConfig",value:function(e){var t=this,n={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:".".concat(this.constructor.NAME,"-arrow")}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:function(e){t._getTipElement().setAttribute("data-popper-placement",e.state.placement)}}]};return _objectSpread(_objectSpread({},n),y(this._config.popperConfig,[n]))}},{key:"_setListeners",value:function(){var e,t=this,n=_createForOfIteratorHelper(this._config.trigger.split(" "));try{for(n.s();!(e=n.n()).done;){var i=e.value;if("click"===i)F.on(this._element,this.constructor.eventName("click"),this._config.selector,(function(e){t._initializeOnDelegatedTarget(e).toggle()}));else if("manual"!==i){var r=i===hr?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),o=i===hr?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");F.on(this._element,r,this._config.selector,(function(e){var n=t._initializeOnDelegatedTarget(e);n._activeTrigger["focusin"===e.type?pr:hr]=!0,n._enter()})),F.on(this._element,o,this._config.selector,(function(e){var n=t._initializeOnDelegatedTarget(e);n._activeTrigger["focusout"===e.type?pr:hr]=n._element.contains(e.relatedTarget),n._leave()}))}}}catch(e){n.e(e)}finally{n.f()}this._hideModalHandler=function(){t._element&&t.hide()},F.on(this._element.closest(fr),dr,this._hideModalHandler)}},{key:"_fixTitle",value:function(){var e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}},{key:"_enter",value:function(){var e=this;this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((function(){e._isHovered&&e.show()}),this._config.delay.show))}},{key:"_leave",value:function(){var e=this;this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((function(){e._isHovered||e.hide()}),this._config.delay.hide))}},{key:"_setTimeout",value:function(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}},{key:"_isWithActiveTrigger",value:function(){return Object.values(this._activeTrigger).includes(!0)}},{key:"_getConfig",value:function(e){for(var t=q(this._element),n=0,i=Object.keys(t);n

',trigger:"click"}),br=_objectSpread(_objectSpread({},mr.DefaultType),{},{content:"(null|string|element|function)"}),kr=function(e){_inherits(n,e);var t=_createSuper(n);function n(){return _classCallCheck(this,n),t.apply(this,arguments)}return _createClass(n,[{key:"_isWithContent",value:function(){return this._getTitle()||this._getContent()}},{key:"_getContentForTemplate",value:function(){var e;return _defineProperty(e={},".popover-header",this._getTitle()),_defineProperty(e,".popover-body",this._getContent()),e}},{key:"_getContent",value:function(){return this._resolvePossibleFunction(this._config.content)}}],[{key:"Default",get:function(){return yr}},{key:"DefaultType",get:function(){return br}},{key:"NAME",get:function(){return"popover"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError('No method named "'.concat(e,'"'));t[e]()}}))}}]),n}(mr);m(kr);var wr=".".concat("bs.scrollspy"),Cr="activate".concat(wr),Or="click".concat(wr),Ar="load".concat(wr).concat(".data-api"),Er="active",Tr="[href]",Sr=".nav-link",xr="".concat(Sr,", ").concat(".nav-item"," > ").concat(Sr,", ").concat(".list-group-item"),Ir={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},Pr={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"},Lr=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;return _classCallCheck(this,n),(r=t.call(this,e,i))._targetLinks=new Map,r._observableSections=new Map,r._rootElement="visible"===getComputedStyle(r._element).overflowY?null:r._element,r._activeTarget=null,r._observer=null,r._previousScrollData={visibleEntryTop:0,parentScrollTop:0},r.refresh(),r}return _createClass(n,[{key:"refresh",value:function(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();var e,t=_createForOfIteratorHelper(this._observableSections.values());try{for(t.s();!(e=t.n()).done;){var n=e.value;this._observer.observe(n)}}catch(e){t.e(e)}finally{t.f()}}},{key:"dispose",value:function(){this._observer.disconnect(),_get(_getPrototypeOf(n.prototype),"dispose",this).call(this)}},{key:"_configAfterMerge",value:function(e){return e.target=c(e.target)||document.body,e.rootMargin=e.offset?"".concat(e.offset,"px 0px -30%"):e.rootMargin,"string"==typeof e.threshold&&(e.threshold=e.threshold.split(",").map((function(e){return Number.parseFloat(e)}))),e}},{key:"_maybeEnableSmoothScroll",value:function(){var e=this;this._config.smoothScroll&&(F.off(this._config.target,Or),F.on(this._config.target,Or,Tr,(function(t){var n=e._observableSections.get(t.target.hash);if(n){t.preventDefault();var i=e._rootElement||window,r=n.offsetTop-e._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:r,behavior:"smooth"});i.scrollTop=r}})))}},{key:"_getNewObserver",value:function(){var e=this,t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((function(t){return e._observerCallback(t)}),t)}},{key:"_observerCallback",value:function(e){var t=this,n=function(e){return t._targetLinks.get("#".concat(e.target.id))},i=function(e){t._previousScrollData.visibleEntryTop=e.target.offsetTop,t._process(n(e))},r=(this._rootElement||document.documentElement).scrollTop,o=r>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=r;var a,s=_createForOfIteratorHelper(e);try{for(s.s();!(a=s.n()).done;){var l=a.value;if(l.isIntersecting){var c=l.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(o&&c){if(i(l),!r)return}else o||c||i(l)}else this._activeTarget=null,this._clearActiveClass(n(l))}}catch(e){s.e(e)}finally{s.f()}}},{key:"_initializeTargetsAndObservables",value:function(){this._targetLinks=new Map,this._observableSections=new Map;var e,t=_createForOfIteratorHelper(X.find(Tr,this._config.target));try{for(t.s();!(e=t.n()).done;){var n=e.value;if(n.hash&&!f(n)){var i=X.findOne(decodeURI(n.hash),this._element);u(i)&&(this._targetLinks.set(decodeURI(n.hash),n),this._observableSections.set(n.hash,i))}}}catch(e){t.e(e)}finally{t.f()}}},{key:"_process",value:function(e){this._activeTarget!==e&&(this._clearActiveClass(this._config.target),this._activeTarget=e,e.classList.add(Er),this._activateParents(e),F.trigger(this._element,Cr,{relatedTarget:e}))}},{key:"_activateParents",value:function(e){if(e.classList.contains("dropdown-item"))X.findOne(".dropdown-toggle",e.closest(".dropdown")).classList.add(Er);else{var t,n=_createForOfIteratorHelper(X.parents(e,".nav, .list-group"));try{for(n.s();!(t=n.n()).done;){var i,r=t.value,o=_createForOfIteratorHelper(X.prev(r,xr));try{for(o.s();!(i=o.n()).done;){i.value.classList.add(Er)}}catch(e){o.e(e)}finally{o.f()}}}catch(e){n.e(e)}finally{n.f()}}}},{key:"_clearActiveClass",value:function(e){e.classList.remove(Er);var t,n=_createForOfIteratorHelper(X.find("".concat(Tr,".").concat(Er),e));try{for(n.s();!(t=n.n()).done;){t.value.classList.remove(Er)}}catch(e){n.e(e)}finally{n.f()}}}],[{key:"Default",get:function(){return Ir}},{key:"DefaultType",get:function(){return Pr}},{key:"NAME",get:function(){return"scrollspy"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e]()}}))}}]),n}(Q);F.on(window,Ar,(function(){var e,t=_createForOfIteratorHelper(X.find('[data-bs-spy="scroll"]'));try{for(t.s();!(e=t.n()).done;){var n=e.value;Lr.getOrCreateInstance(n)}}catch(e){t.e(e)}finally{t.f()}})),m(Lr);var jr=".".concat("bs.tab"),Dr="hide".concat(jr),Nr="hidden".concat(jr),Mr="show".concat(jr),Fr="shown".concat(jr),Hr="click".concat(jr),Rr="keydown".concat(jr),Wr="load".concat(jr),Br="ArrowLeft",zr="ArrowRight",qr="ArrowUp",Vr="ArrowDown",Kr="Home",Qr="End",Ur="active",Xr="fade",Yr="show",$r=".dropdown-toggle",Gr=":not(".concat($r,")"),Jr=".nav-link".concat(Gr,", .list-group-item").concat(Gr,', [role="tab"]').concat(Gr),Zr='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',eo="".concat(Jr,", ").concat(Zr),to=".".concat(Ur,'[data-bs-toggle="tab"], .').concat(Ur,'[data-bs-toggle="pill"], .').concat(Ur,'[data-bs-toggle="list"]'),no=function(e){_inherits(n,e);var t=_createSuper(n);function n(e){var i;return _classCallCheck(this,n),(i=t.call(this,e))._parent=i._element.closest('.list-group, .nav, [role="tablist"]'),i._parent?(i._setInitialAttributes(i._parent,i._getChildren()),F.on(i._element,Rr,(function(e){return i._keydown(e)})),i):_possibleConstructorReturn(i)}return _createClass(n,[{key:"show",value:function(){var e=this._element;if(!this._elemIsActive(e)){var t=this._getActiveElem(),n=t?F.trigger(t,Dr,{relatedTarget:e}):null;F.trigger(e,Mr,{relatedTarget:t}).defaultPrevented||n&&n.defaultPrevented||(this._deactivate(t,e),this._activate(e,t))}}},{key:"_activate",value:function(e,t){var n=this;if(e){e.classList.add(Ur),this._activate(X.getElementFromSelector(e));this._queueCallback((function(){"tab"===e.getAttribute("role")?(e.removeAttribute("tabindex"),e.setAttribute("aria-selected",!0),n._toggleDropDown(e,!0),F.trigger(e,Fr,{relatedTarget:t})):e.classList.add(Yr)}),e,e.classList.contains(Xr))}}},{key:"_deactivate",value:function(e,t){var n=this;if(e){e.classList.remove(Ur),e.blur(),this._deactivate(X.getElementFromSelector(e));this._queueCallback((function(){"tab"===e.getAttribute("role")?(e.setAttribute("aria-selected",!1),e.setAttribute("tabindex","-1"),n._toggleDropDown(e,!1),F.trigger(e,Nr,{relatedTarget:t})):e.classList.remove(Yr)}),e,e.classList.contains(Xr))}}},{key:"_keydown",value:function(e){if([Br,zr,qr,Vr,Kr,Qr].includes(e.key)){e.stopPropagation(),e.preventDefault();var t,i=this._getChildren().filter((function(e){return!f(e)}));if([Kr,Qr].includes(e.key))t=i[e.key===Kr?0:i.length-1];else{var r=[zr,Vr].includes(e.key);t=k(i,e.target,r,!0)}t&&(t.focus({preventScroll:!0}),n.getOrCreateInstance(t).show())}}},{key:"_getChildren",value:function(){return X.find(eo,this._parent)}},{key:"_getActiveElem",value:function(){var e=this;return this._getChildren().find((function(t){return e._elemIsActive(t)}))||null}},{key:"_setInitialAttributes",value:function(e,t){this._setAttributeIfNotExists(e,"role","tablist");var n,i=_createForOfIteratorHelper(t);try{for(i.s();!(n=i.n()).done;){var r=n.value;this._setInitialAttributesOnChild(r)}}catch(e){i.e(e)}finally{i.f()}}},{key:"_setInitialAttributesOnChild",value:function(e){e=this._getInnerElement(e);var t=this._elemIsActive(e),n=this._getOuterElement(e);e.setAttribute("aria-selected",t),n!==e&&this._setAttributeIfNotExists(n,"role","presentation"),t||e.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(e,"role","tab"),this._setInitialAttributesOnTargetPanel(e)}},{key:"_setInitialAttributesOnTargetPanel",value:function(e){var t=X.getElementFromSelector(e);t&&(this._setAttributeIfNotExists(t,"role","tabpanel"),e.id&&this._setAttributeIfNotExists(t,"aria-labelledby","".concat(e.id)))}},{key:"_toggleDropDown",value:function(e,t){var n=this._getOuterElement(e);if(n.classList.contains("dropdown")){var i=function(e,i){var r=X.findOne(e,n);r&&r.classList.toggle(i,t)};i($r,Ur),i(".dropdown-menu",Yr),n.setAttribute("aria-expanded",t)}}},{key:"_setAttributeIfNotExists",value:function(e,t,n){e.hasAttribute(t)||e.setAttribute(t,n)}},{key:"_elemIsActive",value:function(e){return e.classList.contains(Ur)}},{key:"_getInnerElement",value:function(e){return e.matches(eo)?e:X.findOne(eo,e)}},{key:"_getOuterElement",value:function(e){return e.closest(".nav-item, .list-group-item")||e}}],[{key:"NAME",get:function(){return"tab"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e]()}}))}}]),n}(Q);F.on(document,Hr,Zr,(function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault(),f(this)||no.getOrCreateInstance(this).show()})),F.on(window,Wr,(function(){var e,t=_createForOfIteratorHelper(X.find(to));try{for(t.s();!(e=t.n()).done;){var n=e.value;no.getOrCreateInstance(n)}}catch(e){t.e(e)}finally{t.f()}})),m(no);var io=".".concat("bs.toast"),ro="mouseover".concat(io),oo="mouseout".concat(io),ao="focusin".concat(io),so="focusout".concat(io),lo="hide".concat(io),co="hidden".concat(io),uo="show".concat(io),fo="shown".concat(io),ho="hide",po="show",_o="showing",vo={animation:"boolean",autohide:"boolean",delay:"number"},go={animation:!0,autohide:!0,delay:5e3},mo=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;return _classCallCheck(this,n),(r=t.call(this,e,i))._timeout=null,r._hasMouseInteraction=!1,r._hasKeyboardInteraction=!1,r._setListeners(),r}return _createClass(n,[{key:"show",value:function(){var e=this;if(!F.trigger(this._element,uo).defaultPrevented){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");this._element.classList.remove(ho),p(this._element),this._element.classList.add(po,_o),this._queueCallback((function(){e._element.classList.remove(_o),F.trigger(e._element,fo),e._maybeScheduleHide()}),this._element,this._config.animation)}}},{key:"hide",value:function(){var e=this;if(this.isShown()&&!F.trigger(this._element,lo).defaultPrevented){this._element.classList.add(_o),this._queueCallback((function(){e._element.classList.add(ho),e._element.classList.remove(_o,po),F.trigger(e._element,co)}),this._element,this._config.animation)}}},{key:"dispose",value:function(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(po),_get(_getPrototypeOf(n.prototype),"dispose",this).call(this)}},{key:"isShown",value:function(){return this._element.classList.contains(po)}},{key:"_maybeScheduleHide",value:function(){var e=this;this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((function(){e.hide()}),this._config.delay)))}},{key:"_onInteraction",value:function(e,t){switch(e.type){case"mouseover":case"mouseout":this._hasMouseInteraction=t;break;case"focusin":case"focusout":this._hasKeyboardInteraction=t}if(t)this._clearTimeout();else{var n=e.relatedTarget;this._element===n||this._element.contains(n)||this._maybeScheduleHide()}}},{key:"_setListeners",value:function(){var e=this;F.on(this._element,ro,(function(t){return e._onInteraction(t,!0)})),F.on(this._element,oo,(function(t){return e._onInteraction(t,!1)})),F.on(this._element,ao,(function(t){return e._onInteraction(t,!0)})),F.on(this._element,so,(function(t){return e._onInteraction(t,!1)}))}},{key:"_clearTimeout",value:function(){clearTimeout(this._timeout),this._timeout=null}}],[{key:"Default",get:function(){return go}},{key:"DefaultType",get:function(){return vo}},{key:"NAME",get:function(){return"toast"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError('No method named "'.concat(e,'"'));t[e](this)}}))}}]),n}(Q);return Y(mo),m(mo),{Alert:Z,Button:ie,Carousel:Ne,Collapse:Ye,Dropdown:ei,Modal:Ni,Offcanvas:Zi,Popover:kr,ScrollSpy:Lr,Tab:no,Toast:mo,Tooltip:mr}})); diff --git a/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/bootstrap.js b/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/bootstrap.js index 4f4f930d44d..c209d82bd47 100644 --- a/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/bootstrap.js +++ b/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/bootstrap.js @@ -33,8 +33,8 @@ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _ty function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } /*! - * Bootstrap v5.3.2 (https://getbootstrap.com/) - * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Bootstrap v5.3.3 (https://getbootstrap.com/) + * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ (function (global, factory) { @@ -770,7 +770,7 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == /** * Constants */ - var VERSION = '5.3.2'; + var VERSION = '5.3.3'; /** * Class definition @@ -884,9 +884,11 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) { hrefAttribute = "#".concat(hrefAttribute.split('#')[1]); } - selector = hrefAttribute && hrefAttribute !== '#' ? parseSelector(hrefAttribute.trim()) : null; + selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null; } - return selector; + return selector ? selector.split(',').map(function (sel) { + return parseSelector(sel); + }).join(',') : null; }; var SelectorEngine = { find: function find(selector) { @@ -3593,7 +3595,10 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == br: [], col: [], code: [], + dd: [], div: [], + dl: [], + dt: [], em: [], hr: [], h1: [], diff --git a/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/bootstrap.min.js b/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/bootstrap.min.js index ab2471a549f..3b04ea16fdf 100644 --- a/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/bootstrap.min.js +++ b/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/bootstrap.min.js @@ -1,6 +1,6 @@ function _get(){return _get="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var i=_superPropBase(e,t);if(i){var r=Object.getOwnPropertyDescriptor(i,t);return r.get?r.get.call(arguments.length<3?e:n):r.value}},_get.apply(this,arguments)}function _superPropBase(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=_getPrototypeOf(e)););return e}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&_setPrototypeOf(e,t)}function _setPrototypeOf(e,t){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},_setPrototypeOf(e,t)}function _createSuper(e){var t=_isNativeReflectConstruct();return function(){var n,i=_getPrototypeOf(e);if(t){var r=_getPrototypeOf(this).constructor;n=Reflect.construct(i,arguments,r)}else n=i.apply(this,arguments);return _possibleConstructorReturn(this,n)}}function _possibleConstructorReturn(e,t){if(t&&("object"===_typeof(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(e)}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function _getPrototypeOf(e){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},_getPrototypeOf(e)}function ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function _objectSpread(e){for(var t=1;t=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw o}}}}function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_unsupportedIterableToArray(e)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray(e,t):void 0}}function _iterableToArray(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _arrayWithoutHoles(e){if(Array.isArray(e))return _arrayLikeToArray(e)}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n0?document.querySelector(c(e)):null},d=function(e){if(!f(e)||0===e.getClientRects().length)return!1;var t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){var i=e.closest("summary");if(i&&i.parentNode!==n)return!1;if(null===i)return!1}return t},_=function(e){return!e||e.nodeType!==Node.ELEMENT_NODE||(!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")))},p=function e(t){if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){var n=t.getRootNode();return n instanceof ShadowRoot?n:null}return t instanceof ShadowRoot?t:t.parentNode?e(t.parentNode):null},v=function(){},g=function(e){e.offsetHeight},m=function(){return window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null},y=[],b=function(){return"rtl"===document.documentElement.dir},k=function(e){var t;t=function(){var t=m();if(t){var n=e.NAME,i=t.fn[n];t.fn[n]=e.jQueryInterface,t.fn[n].Constructor=e,t.fn[n].noConflict=function(){return t.fn[n]=i,e.jQueryInterface}}},"loading"===document.readyState?(y.length||document.addEventListener("DOMContentLoaded",(function(){for(var e=0,t=y;e1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;return"function"==typeof e?e.apply(void 0,_toConsumableArray(t)):n},C=function(e,t){if(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]){var n=function(e){if(!e)return 0;var t=window.getComputedStyle(e),n=t.transitionDuration,i=t.transitionDelay,r=Number.parseFloat(n),o=Number.parseFloat(i);return r||o?(n=n.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(n)+Number.parseFloat(i))):0}(t)+5,i=!1;t.addEventListener(l,(function n(r){r.target===t&&(i=!0,t.removeEventListener(l,n),w(e))})),setTimeout((function(){i||u(t)}),n)}else w(e)},A=function(e,t,n,i){var r=e.length,o=e.indexOf(t);return-1===o?!n&&i?e[r-1]:e[0]:(o+=n?1:-1,i&&(o=(o+r)%r),e[Math.max(0,Math.min(o,r-1))])},T=/[^.]*(?=\..*)\.|.*/,E=/\..*/,O=/::\d+$/,S={},I=1,P={mouseenter:"mouseover",mouseleave:"mouseout"},L=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function j(e,t){return t&&"".concat(t,"::").concat(I++)||e.uidEvent||I++}function N(e){var t=j(e);return e.uidEvent=t,S[t]=S[t]||{},S[t]}function D(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(e).find((function(e){return e.callable===t&&e.delegationSelector===n}))}function F(e,t,n){var i="string"==typeof t,r=i?n:t||n,o=z(e);return L.has(o)||(o=e),[i,r,o]}function M(e,t,n,i,r){if("string"==typeof t&&e){var o=_slicedToArray(F(t,n,i),3),a=o[0],s=o[1],l=o[2];if(t in P){s=function(e){return function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)}}(s)}var c=N(e),u=c[l]||(c[l]={}),f=D(u,s,a?n:null);if(f)f.oneOff=f.oneOff&&r;else{var h=j(s,t.replace(T,"")),d=a?function(e,t,n){return function i(r){for(var o=e.querySelectorAll(t),a=r.target;a&&a!==this;a=a.parentNode){var s,l=_createForOfIteratorHelper(o);try{for(l.s();!(s=l.n()).done;)if(s.value===a)return B(r,{delegateTarget:a}),i.oneOff&&R.off(e,r.type,t,n),n.apply(a,[r])}catch(e){l.e(e)}finally{l.f()}}}}(e,n,s):function(e,t){return function n(i){return B(i,{delegateTarget:e}),n.oneOff&&R.off(e,i.type,t),t.apply(e,[i])}}(e,s);d.delegationSelector=a?n:null,d.callable=s,d.oneOff=r,d.uidEvent=h,u[h]=d,e.addEventListener(l,d,a)}}}function x(e,t,n,i,r){var o=D(t[n],i,r);o&&(e.removeEventListener(n,o,Boolean(r)),delete t[n][o.uidEvent])}function H(e,t,n,i){for(var r=t[n]||{},o=0,a=Object.entries(r);o1&&void 0!==arguments[1]?arguments[1]:{},n=function(){var t=_slicedToArray(r[i],2),n=t[0],o=t[1];try{e[n]=o}catch(t){Object.defineProperty(e,n,{configurable:!0,get:function(){return o}})}},i=0,r=Object.entries(t);i1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType,i=0,r=Object.entries(n);i2&&void 0!==arguments[2])||arguments[2])}},{key:"_getConfig",value:function(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}}],[{key:"getInstance",value:function(e){return a(h(e),this.DATA_KEY)}},{key:"getOrCreateInstance",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(e)||new this(e,"object"===_typeof(t)?t:null)}},{key:"VERSION",get:function(){return"5.3.2"}},{key:"DATA_KEY",get:function(){return"bs.".concat(this.NAME)}},{key:"EVENT_KEY",get:function(){return".".concat(this.DATA_KEY)}},{key:"eventName",value:function(e){return"".concat(e).concat(this.EVENT_KEY)}}]),n}(Y),$=function(e){var t=e.getAttribute("data-bs-target");if(!t||"#"===t){var n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n="#".concat(n.split("#")[1])),t=n&&"#"!==n?c(n.trim()):null}return t},G={find:function(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return(t=[]).concat.apply(t,_toConsumableArray(Element.prototype.querySelectorAll.call(n,e)))},findOne:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(t,e)},children:function(e,t){var n;return(n=[]).concat.apply(n,_toConsumableArray(e.children)).filter((function(e){return e.matches(t)}))},parents:function(e,t){for(var n=[],i=e.parentNode.closest(t);i;)n.push(i),i=i.parentNode.closest(t);return n},prev:function(e,t){for(var n=e.previousElementSibling;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next:function(e,t){for(var n=e.nextElementSibling;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren:function(e){var t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((function(e){return"".concat(e,':not([tabindex^="-"])')})).join(",");return this.find(t,e).filter((function(e){return!_(e)&&d(e)}))},getSelectorFromElement:function(e){var t=$(e);return t&&G.findOne(t)?t:null},getElementFromSelector:function(e){var t=$(e);return t?G.findOne(t):null},getMultipleElementsFromSelector:function(e){var t=$(e);return t?G.find(t):[]}},J=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"hide",n="click.dismiss".concat(e.EVENT_KEY),i=e.NAME;R.on(document,n,'[data-bs-dismiss="'.concat(i,'"]'),(function(n){if(["A","AREA"].includes(this.tagName)&&n.preventDefault(),!_(this)){var r=G.getElementFromSelector(this)||this.closest(".".concat(i));e.getOrCreateInstance(r)[t]()}}))},Z=".".concat("bs.alert"),ee="close".concat(Z),te="closed".concat(Z),ne=function(e){_inherits(n,e);var t=_createSuper(n);function n(){return _classCallCheck(this,n),t.apply(this,arguments)}return _createClass(n,[{key:"close",value:function(){var e=this;if(!R.trigger(this._element,ee).defaultPrevented){this._element.classList.remove("show");var t=this._element.classList.contains("fade");this._queueCallback((function(){return e._destroyElement()}),this._element,t)}}},{key:"_destroyElement",value:function(){this._element.remove(),R.trigger(this._element,te),this.dispose()}}],[{key:"NAME",get:function(){return"alert"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e](this)}}))}}]),n}(U);J(ne,"close"),k(ne);var ie=".".concat("bs.button"),re='[data-bs-toggle="button"]',oe="click".concat(ie).concat(".data-api"),ae=function(e){_inherits(n,e);var t=_createSuper(n);function n(){return _classCallCheck(this,n),t.apply(this,arguments)}return _createClass(n,[{key:"toggle",value:function(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}}],[{key:"NAME",get:function(){return"button"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this);"toggle"===e&&t[e]()}))}}]),n}(U);R.on(document,oe,re,(function(e){e.preventDefault();var t=e.target.closest(re);ae.getOrCreateInstance(t).toggle()})),k(ae);var se=".bs.swipe",le="touchstart".concat(se),ce="touchmove".concat(se),ue="touchend".concat(se),fe="pointerdown".concat(se),he="pointerup".concat(se),de={endCallback:null,leftCallback:null,rightCallback:null},_e={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"},pe=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;return _classCallCheck(this,n),(r=t.call(this))._element=e,e&&n.isSupported()?(r._config=r._getConfig(i),r._deltaX=0,r._supportPointerEvents=Boolean(window.PointerEvent),r._initEvents(),r):_possibleConstructorReturn(r)}return _createClass(n,[{key:"dispose",value:function(){R.off(this._element,se)}},{key:"_start",value:function(e){this._supportPointerEvents?this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX):this._deltaX=e.touches[0].clientX}},{key:"_end",value:function(e){this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX-this._deltaX),this._handleSwipe(),w(this._config.endCallback)}},{key:"_move",value:function(e){this._deltaX=e.touches&&e.touches.length>1?0:e.touches[0].clientX-this._deltaX}},{key:"_handleSwipe",value:function(){var e=Math.abs(this._deltaX);if(!(e<=40)){var t=e/this._deltaX;this._deltaX=0,t&&w(t>0?this._config.rightCallback:this._config.leftCallback)}}},{key:"_initEvents",value:function(){var e=this;this._supportPointerEvents?(R.on(this._element,fe,(function(t){return e._start(t)})),R.on(this._element,he,(function(t){return e._end(t)})),this._element.classList.add("pointer-event")):(R.on(this._element,le,(function(t){return e._start(t)})),R.on(this._element,ce,(function(t){return e._move(t)})),R.on(this._element,ue,(function(t){return e._end(t)})))}},{key:"_eventIsPointerPenTouch",value:function(e){return this._supportPointerEvents&&("pen"===e.pointerType||"touch"===e.pointerType)}}],[{key:"Default",get:function(){return de}},{key:"DefaultType",get:function(){return _e}},{key:"NAME",get:function(){return"swipe"}},{key:"isSupported",value:function(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}]),n}(Y),ve=".".concat("bs.carousel"),ge=".data-api",me="next",ye="prev",be="left",ke="right",we="slide".concat(ve),Ce="slid".concat(ve),Ae="keydown".concat(ve),Te="mouseenter".concat(ve),Ee="mouseleave".concat(ve),Oe="dragstart".concat(ve),Se="load".concat(ve).concat(ge),Ie="click".concat(ve).concat(ge),Pe="carousel",Le="active",je=".active",Ne=".carousel-item",De=je+Ne,Fe=(_defineProperty(t={},"ArrowLeft",ke),_defineProperty(t,"ArrowRight",be),t),Me={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},xe={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"},He=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;return _classCallCheck(this,n),(r=t.call(this,e,i))._interval=null,r._activeElement=null,r._isSliding=!1,r.touchTimeout=null,r._swipeHelper=null,r._indicatorsElement=G.findOne(".carousel-indicators",r._element),r._addEventListeners(),r._config.ride===Pe&&r.cycle(),r}return _createClass(n,[{key:"next",value:function(){this._slide(me)}},{key:"nextWhenVisible",value:function(){!document.hidden&&d(this._element)&&this.next()}},{key:"prev",value:function(){this._slide(ye)}},{key:"pause",value:function(){this._isSliding&&u(this._element),this._clearInterval()}},{key:"cycle",value:function(){var e=this;this._clearInterval(),this._updateInterval(),this._interval=setInterval((function(){return e.nextWhenVisible()}),this._config.interval)}},{key:"_maybeEnableCycle",value:function(){var e=this;this._config.ride&&(this._isSliding?R.one(this._element,Ce,(function(){return e.cycle()})):this.cycle())}},{key:"to",value:function(e){var t=this,n=this._getItems();if(!(e>n.length-1||e<0))if(this._isSliding)R.one(this._element,Ce,(function(){return t.to(e)}));else{var i=this._getItemIndex(this._getActive());if(i!==e){var r=e>i?me:ye;this._slide(r,n[e])}}}},{key:"dispose",value:function(){this._swipeHelper&&this._swipeHelper.dispose(),_get(_getPrototypeOf(n.prototype),"dispose",this).call(this)}},{key:"_configAfterMerge",value:function(e){return e.defaultInterval=e.interval,e}},{key:"_addEventListeners",value:function(){var e=this;this._config.keyboard&&R.on(this._element,Ae,(function(t){return e._keydown(t)})),"hover"===this._config.pause&&(R.on(this._element,Te,(function(){return e.pause()})),R.on(this._element,Ee,(function(){return e._maybeEnableCycle()}))),this._config.touch&&pe.isSupported()&&this._addTouchEventListeners()}},{key:"_addTouchEventListeners",value:function(){var e,t=this,n=_createForOfIteratorHelper(G.find(".carousel-item img",this._element));try{for(n.s();!(e=n.n()).done;){var i=e.value;R.on(i,Oe,(function(e){return e.preventDefault()}))}}catch(e){n.e(e)}finally{n.f()}var r={leftCallback:function(){return t._slide(t._directionToOrder(be))},rightCallback:function(){return t._slide(t._directionToOrder(ke))},endCallback:function(){"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(){return t._maybeEnableCycle()}),500+t._config.interval))}};this._swipeHelper=new pe(this._element,r)}},{key:"_keydown",value:function(e){if(!/input|textarea/i.test(e.target.tagName)){var t=Fe[e.key];t&&(e.preventDefault(),this._slide(this._directionToOrder(t)))}}},{key:"_getItemIndex",value:function(e){return this._getItems().indexOf(e)}},{key:"_setActiveIndicatorElement",value:function(e){if(this._indicatorsElement){var t=G.findOne(je,this._indicatorsElement);t.classList.remove(Le),t.removeAttribute("aria-current");var n=G.findOne('[data-bs-slide-to="'.concat(e,'"]'),this._indicatorsElement);n&&(n.classList.add(Le),n.setAttribute("aria-current","true"))}}},{key:"_updateInterval",value:function(){var e=this._activeElement||this._getActive();if(e){var t=Number.parseInt(e.getAttribute("data-bs-interval"),10);this._config.interval=t||this._config.defaultInterval}}},{key:"_slide",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!this._isSliding){var i=this._getActive(),r=e===me,o=n||A(this._getItems(),i,r,this._config.wrap);if(o!==i){var a=this._getItemIndex(o),s=function(n){return R.trigger(t._element,n,{relatedTarget:o,direction:t._orderToDirection(e),from:t._getItemIndex(i),to:a})};if(!s(we).defaultPrevented&&i&&o){var l=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(a),this._activeElement=o;var c=r?"carousel-item-start":"carousel-item-end",u=r?"carousel-item-next":"carousel-item-prev";o.classList.add(u),g(o),i.classList.add(c),o.classList.add(c);this._queueCallback((function(){o.classList.remove(c,u),o.classList.add(Le),i.classList.remove(Le,u,c),t._isSliding=!1,s(Ce)}),i,this._isAnimated()),l&&this.cycle()}}}}},{key:"_isAnimated",value:function(){return this._element.classList.contains("slide")}},{key:"_getActive",value:function(){return G.findOne(De,this._element)}},{key:"_getItems",value:function(){return G.find(Ne,this._element)}},{key:"_clearInterval",value:function(){this._interval&&(clearInterval(this._interval),this._interval=null)}},{key:"_directionToOrder",value:function(e){return b()?e===be?ye:me:e===be?me:ye}},{key:"_orderToDirection",value:function(e){return b()?e===ye?be:ke:e===ye?ke:be}}],[{key:"Default",get:function(){return Me}},{key:"DefaultType",get:function(){return xe}},{key:"NAME",get:function(){return"carousel"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this,e);if("number"!=typeof e){if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e]()}}else t.to(e)}))}}]),n}(U);R.on(document,Ie,"[data-bs-slide], [data-bs-slide-to]",(function(e){var t=G.getElementFromSelector(this);if(t&&t.classList.contains(Pe)){e.preventDefault();var n=He.getOrCreateInstance(t),i=this.getAttribute("data-bs-slide-to");if(i)return n.to(i),void n._maybeEnableCycle();if("next"===X(this,"slide"))return n.next(),void n._maybeEnableCycle();n.prev(),n._maybeEnableCycle()}})),R.on(window,Se,(function(){var e,t=_createForOfIteratorHelper(G.find('[data-bs-ride="carousel"]'));try{for(t.s();!(e=t.n()).done;){var n=e.value;He.getOrCreateInstance(n)}}catch(e){t.e(e)}finally{t.f()}})),k(He);var ze=".".concat("bs.collapse"),Re="show".concat(ze),Be="shown".concat(ze),We="hide".concat(ze),qe="hidden".concat(ze),Ke="click".concat(ze).concat(".data-api"),Ve="show",Qe="collapse",Xe="collapsing",Ye=":scope .".concat(Qe," .").concat(Qe),Ue='[data-bs-toggle="collapse"]',$e={parent:null,toggle:!0},Ge={parent:"(null|element)",toggle:"boolean"},Je=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;_classCallCheck(this,n),(r=t.call(this,e,i))._isTransitioning=!1,r._triggerArray=[];var o,a=_createForOfIteratorHelper(G.find(Ue));try{for(a.s();!(o=a.n()).done;){var s=o.value,l=G.getSelectorFromElement(s),c=G.find(l).filter((function(e){return e===r._element}));null!==l&&c.length&&r._triggerArray.push(s)}}catch(e){a.e(e)}finally{a.f()}return r._initializeChildren(),r._config.parent||r._addAriaAndCollapsedClass(r._triggerArray,r._isShown()),r._config.toggle&&r.toggle(),r}return _createClass(n,[{key:"toggle",value:function(){this._isShown()?this.hide():this.show()}},{key:"show",value:function(){var e=this;if(!this._isTransitioning&&!this._isShown()){var t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((function(t){return t!==e._element})).map((function(e){return n.getOrCreateInstance(e,{toggle:!1})}))),!t.length||!t[0]._isTransitioning)if(!R.trigger(this._element,Re).defaultPrevented){var i,r=_createForOfIteratorHelper(t);try{for(r.s();!(i=r.n()).done;){i.value.hide()}}catch(e){r.e(e)}finally{r.f()}var o=this._getDimension();this._element.classList.remove(Qe),this._element.classList.add(Xe),this._element.style[o]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;var a=o[0].toUpperCase()+o.slice(1),s="scroll".concat(a);this._queueCallback((function(){e._isTransitioning=!1,e._element.classList.remove(Xe),e._element.classList.add(Qe,Ve),e._element.style[o]="",R.trigger(e._element,Be)}),this._element,!0),this._element.style[o]="".concat(this._element[s],"px")}}}},{key:"hide",value:function(){var e=this;if(!this._isTransitioning&&this._isShown()&&!R.trigger(this._element,We).defaultPrevented){var t=this._getDimension();this._element.style[t]="".concat(this._element.getBoundingClientRect()[t],"px"),g(this._element),this._element.classList.add(Xe),this._element.classList.remove(Qe,Ve);var n,i=_createForOfIteratorHelper(this._triggerArray);try{for(i.s();!(n=i.n()).done;){var r=n.value,o=G.getElementFromSelector(r);o&&!this._isShown(o)&&this._addAriaAndCollapsedClass([r],!1)}}catch(e){i.e(e)}finally{i.f()}this._isTransitioning=!0;this._element.style[t]="",this._queueCallback((function(){e._isTransitioning=!1,e._element.classList.remove(Xe),e._element.classList.add(Qe),R.trigger(e._element,qe)}),this._element,!0)}}},{key:"_isShown",value:function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(Ve)}},{key:"_configAfterMerge",value:function(e){return e.toggle=Boolean(e.toggle),e.parent=h(e.parent),e}},{key:"_getDimension",value:function(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}},{key:"_initializeChildren",value:function(){if(this._config.parent){var e,t=_createForOfIteratorHelper(this._getFirstLevelChildren(Ue));try{for(t.s();!(e=t.n()).done;){var n=e.value,i=G.getElementFromSelector(n);i&&this._addAriaAndCollapsedClass([n],this._isShown(i))}}catch(e){t.e(e)}finally{t.f()}}}},{key:"_getFirstLevelChildren",value:function(e){var t=G.find(Ye,this._config.parent);return G.find(e,this._config.parent).filter((function(e){return!t.includes(e)}))}},{key:"_addAriaAndCollapsedClass",value:function(e,t){if(e.length){var n,i=_createForOfIteratorHelper(e);try{for(i.s();!(n=i.n()).done;){var r=n.value;r.classList.toggle("collapsed",!t),r.setAttribute("aria-expanded",t)}}catch(e){i.e(e)}finally{i.f()}}}}],[{key:"Default",get:function(){return $e}},{key:"DefaultType",get:function(){return Ge}},{key:"NAME",get:function(){return"collapse"}},{key:"jQueryInterface",value:function(e){var t={};return"string"==typeof e&&/show|hide/.test(e)&&(t.toggle=!1),this.each((function(){var i=n.getOrCreateInstance(this,t);if("string"==typeof e){if(void 0===i[e])throw new TypeError('No method named "'.concat(e,'"'));i[e]()}}))}}]),n}(U);R.on(document,Ke,Ue,(function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();var t,n=_createForOfIteratorHelper(G.getMultipleElementsFromSelector(this));try{for(n.s();!(t=n.n()).done;){var i=t.value;Je.getOrCreateInstance(i,{toggle:!1}).toggle()}}catch(e){n.e(e)}finally{n.f()}})),k(Je);var Ze="dropdown",et=".".concat("bs.dropdown"),tt=".data-api",nt="ArrowUp",it="ArrowDown",rt="hide".concat(et),ot="hidden".concat(et),at="show".concat(et),st="shown".concat(et),lt="click".concat(et).concat(tt),ct="keydown".concat(et).concat(tt),ut="keyup".concat(et).concat(tt),ft="show",ht='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',dt="".concat(ht,".").concat(ft),_t=".dropdown-menu",pt=b()?"top-end":"top-start",vt=b()?"top-start":"top-end",gt=b()?"bottom-end":"bottom-start",mt=b()?"bottom-start":"bottom-end",yt=b()?"left-start":"right-start",bt=b()?"right-start":"left-start",kt={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},wt={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"},Ct=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;return _classCallCheck(this,n),(r=t.call(this,e,i))._popper=null,r._parent=r._element.parentNode,r._menu=G.next(r._element,_t)[0]||G.prev(r._element,_t)[0]||G.findOne(_t,r._parent),r._inNavbar=r._detectNavbar(),r}return _createClass(n,[{key:"toggle",value:function(){return this._isShown()?this.hide():this.show()}},{key:"show",value:function(){if(!_(this._element)&&!this._isShown()){var e={relatedTarget:this._element};if(!R.trigger(this._element,at,e).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav")){var t,n,i=_createForOfIteratorHelper((t=[]).concat.apply(t,_toConsumableArray(document.body.children)));try{for(i.s();!(n=i.n()).done;){var r=n.value;R.on(r,"mouseover",v)}}catch(e){i.e(e)}finally{i.f()}}this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(ft),this._element.classList.add(ft),R.trigger(this._element,st,e)}}}},{key:"hide",value:function(){if(!_(this._element)&&this._isShown()){var e={relatedTarget:this._element};this._completeHide(e)}}},{key:"dispose",value:function(){this._popper&&this._popper.destroy(),_get(_getPrototypeOf(n.prototype),"dispose",this).call(this)}},{key:"update",value:function(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}},{key:"_completeHide",value:function(e){if(!R.trigger(this._element,rt,e).defaultPrevented){if("ontouchstart"in document.documentElement){var t,n,i=_createForOfIteratorHelper((t=[]).concat.apply(t,_toConsumableArray(document.body.children)));try{for(i.s();!(n=i.n()).done;){var r=n.value;R.off(r,"mouseover",v)}}catch(e){i.e(e)}finally{i.f()}}this._popper&&this._popper.destroy(),this._menu.classList.remove(ft),this._element.classList.remove(ft),this._element.setAttribute("aria-expanded","false"),V(this._menu,"popper"),R.trigger(this._element,ot,e)}}},{key:"_getConfig",value:function(e){if("object"===_typeof((e=_get(_getPrototypeOf(n.prototype),"_getConfig",this).call(this,e)).reference)&&!f(e.reference)&&"function"!=typeof e.reference.getBoundingClientRect)throw new TypeError("".concat(Ze.toUpperCase(),': Option "reference" provided type "object" without a required "getBoundingClientRect" method.'));return e}},{key:"_createPopper",value:function(){if(void 0===i)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");var e=this._element;"parent"===this._config.reference?e=this._parent:f(this._config.reference)?e=h(this._config.reference):"object"===_typeof(this._config.reference)&&(e=this._config.reference);var t=this._getPopperConfig();this._popper=i.createPopper(e,this._menu,t)}},{key:"_isShown",value:function(){return this._menu.classList.contains(ft)}},{key:"_getPlacement",value:function(){var e=this._parent;if(e.classList.contains("dropend"))return yt;if(e.classList.contains("dropstart"))return bt;if(e.classList.contains("dropup-center"))return"top";if(e.classList.contains("dropdown-center"))return"bottom";var t="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return e.classList.contains("dropup")?t?vt:pt:t?mt:gt}},{key:"_detectNavbar",value:function(){return null!==this._element.closest(".navbar")}},{key:"_getOffset",value:function(){var e=this,t=this._config.offset;return"string"==typeof t?t.split(",").map((function(e){return Number.parseInt(e,10)})):"function"==typeof t?function(n){return t(n,e._element)}:t}},{key:"_getPopperConfig",value:function(){var e={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(K(this._menu,"popper","static"),e.modifiers=[{name:"applyStyles",enabled:!1}]),_objectSpread(_objectSpread({},e),w(this._config.popperConfig,[e]))}},{key:"_selectMenuItem",value:function(e){var t=e.key,n=e.target,i=G.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((function(e){return d(e)}));i.length&&A(i,n,t===it,!i.includes(n)).focus()}}],[{key:"Default",get:function(){return kt}},{key:"DefaultType",get:function(){return wt}},{key:"NAME",get:function(){return Ze}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError('No method named "'.concat(e,'"'));t[e]()}}))}},{key:"clearMenus",value:function(e){if(2!==e.button&&("keyup"!==e.type||"Tab"===e.key)){var t,i=_createForOfIteratorHelper(G.find(dt));try{for(i.s();!(t=i.n()).done;){var r=t.value,o=n.getInstance(r);if(o&&!1!==o._config.autoClose){var a=e.composedPath(),s=a.includes(o._menu);if(!(a.includes(o._element)||"inside"===o._config.autoClose&&!s||"outside"===o._config.autoClose&&s||o._menu.contains(e.target)&&("keyup"===e.type&&"Tab"===e.key||/input|select|option|textarea|form/i.test(e.target.tagName)))){var l={relatedTarget:o._element};"click"===e.type&&(l.clickEvent=e),o._completeHide(l)}}}}catch(e){i.e(e)}finally{i.f()}}}},{key:"dataApiKeydownHandler",value:function(e){var t=/input|textarea/i.test(e.target.tagName),i="Escape"===e.key,r=[nt,it].includes(e.key);if((r||i)&&(!t||i)){e.preventDefault();var o=this.matches(ht)?this:G.prev(this,ht)[0]||G.next(this,ht)[0]||G.findOne(ht,e.delegateTarget.parentNode),a=n.getOrCreateInstance(o);if(r)return e.stopPropagation(),a.show(),void a._selectMenuItem(e);a._isShown()&&(e.stopPropagation(),a.hide(),o.focus())}}}]),n}(U);R.on(document,ct,ht,Ct.dataApiKeydownHandler),R.on(document,ct,_t,Ct.dataApiKeydownHandler),R.on(document,lt,Ct.clearMenus),R.on(document,ut,Ct.clearMenus),R.on(document,lt,ht,(function(e){e.preventDefault(),Ct.getOrCreateInstance(this).toggle()})),k(Ct);var At="backdrop",Tt="show",Et="mousedown.bs.".concat(At),Ot={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},St={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"},It=function(e){_inherits(n,e);var t=_createSuper(n);function n(e){var i;return _classCallCheck(this,n),(i=t.call(this))._config=i._getConfig(e),i._isAppended=!1,i._element=null,i}return _createClass(n,[{key:"show",value:function(e){if(this._config.isVisible){this._append();var t=this._getElement();this._config.isAnimated&&g(t),t.classList.add(Tt),this._emulateAnimation((function(){w(e)}))}else w(e)}},{key:"hide",value:function(e){var t=this;this._config.isVisible?(this._getElement().classList.remove(Tt),this._emulateAnimation((function(){t.dispose(),w(e)}))):w(e)}},{key:"dispose",value:function(){this._isAppended&&(R.off(this._element,Et),this._element.remove(),this._isAppended=!1)}},{key:"_getElement",value:function(){if(!this._element){var e=document.createElement("div");e.className=this._config.className,this._config.isAnimated&&e.classList.add("fade"),this._element=e}return this._element}},{key:"_configAfterMerge",value:function(e){return e.rootElement=h(e.rootElement),e}},{key:"_append",value:function(){var e=this;if(!this._isAppended){var t=this._getElement();this._config.rootElement.append(t),R.on(t,Et,(function(){w(e._config.clickCallback)})),this._isAppended=!0}}},{key:"_emulateAnimation",value:function(e){C(e,this._getElement(),this._config.isAnimated)}}],[{key:"Default",get:function(){return Ot}},{key:"DefaultType",get:function(){return St}},{key:"NAME",get:function(){return At}}]),n}(Y),Pt=".".concat("bs.focustrap"),Lt="focusin".concat(Pt),jt="keydown.tab".concat(Pt),Nt="backward",Dt={autofocus:!0,trapElement:null},Ft={autofocus:"boolean",trapElement:"element"},Mt=function(e){_inherits(n,e);var t=_createSuper(n);function n(e){var i;return _classCallCheck(this,n),(i=t.call(this))._config=i._getConfig(e),i._isActive=!1,i._lastTabNavDirection=null,i}return _createClass(n,[{key:"activate",value:function(){var e=this;this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),R.off(document,Pt),R.on(document,Lt,(function(t){return e._handleFocusin(t)})),R.on(document,jt,(function(t){return e._handleKeydown(t)})),this._isActive=!0)}},{key:"deactivate",value:function(){this._isActive&&(this._isActive=!1,R.off(document,Pt))}},{key:"_handleFocusin",value:function(e){var t=this._config.trapElement;if(e.target!==document&&e.target!==t&&!t.contains(e.target)){var n=G.focusableChildren(t);0===n.length?t.focus():this._lastTabNavDirection===Nt?n[n.length-1].focus():n[0].focus()}}},{key:"_handleKeydown",value:function(e){"Tab"===e.key&&(this._lastTabNavDirection=e.shiftKey?Nt:"forward")}}],[{key:"Default",get:function(){return Dt}},{key:"DefaultType",get:function(){return Ft}},{key:"NAME",get:function(){return"focustrap"}}]),n}(Y),xt=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Ht=".sticky-top",zt="padding-right",Rt="margin-right",Bt=function(){function e(){_classCallCheck(this,e),this._element=document.body}return _createClass(e,[{key:"getWidth",value:function(){var e=document.documentElement.clientWidth;return Math.abs(window.innerWidth-e)}},{key:"hide",value:function(){var e=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,zt,(function(t){return t+e})),this._setElementAttributes(xt,zt,(function(t){return t+e})),this._setElementAttributes(Ht,Rt,(function(t){return t-e}))}},{key:"reset",value:function(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,zt),this._resetElementAttributes(xt,zt),this._resetElementAttributes(Ht,Rt)}},{key:"isOverflowing",value:function(){return this.getWidth()>0}},{key:"_disableOverFlow",value:function(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}},{key:"_setElementAttributes",value:function(e,t,n){var i=this,r=this.getWidth();this._applyManipulationCallback(e,(function(e){if(!(e!==i._element&&window.innerWidth>e.clientWidth+r)){i._saveInitialAttribute(e,t);var o=window.getComputedStyle(e).getPropertyValue(t);e.style.setProperty(t,"".concat(n(Number.parseFloat(o)),"px"))}}))}},{key:"_saveInitialAttribute",value:function(e,t){var n=e.style.getPropertyValue(t);n&&K(e,t,n)}},{key:"_resetElementAttributes",value:function(e,t){this._applyManipulationCallback(e,(function(e){var n=X(e,t);null!==n?(V(e,t),e.style.setProperty(t,n)):e.style.removeProperty(t)}))}},{key:"_applyManipulationCallback",value:function(e,t){if(f(e))t(e);else{var n,i=_createForOfIteratorHelper(G.find(e,this._element));try{for(i.s();!(n=i.n()).done;){t(n.value)}}catch(e){i.e(e)}finally{i.f()}}}}]),e}(),Wt=".".concat("bs.modal"),qt="hide".concat(Wt),Kt="hidePrevented".concat(Wt),Vt="hidden".concat(Wt),Qt="show".concat(Wt),Xt="shown".concat(Wt),Yt="resize".concat(Wt),Ut="click.dismiss".concat(Wt),$t="mousedown.dismiss".concat(Wt),Gt="keydown.dismiss".concat(Wt),Jt="click".concat(Wt).concat(".data-api"),Zt="modal-open",en="show",tn="modal-static",nn={backdrop:!0,focus:!0,keyboard:!0},rn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"},on=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;return _classCallCheck(this,n),(r=t.call(this,e,i))._dialog=G.findOne(".modal-dialog",r._element),r._backdrop=r._initializeBackDrop(),r._focustrap=r._initializeFocusTrap(),r._isShown=!1,r._isTransitioning=!1,r._scrollBar=new Bt,r._addEventListeners(),r}return _createClass(n,[{key:"toggle",value:function(e){return this._isShown?this.hide():this.show(e)}},{key:"show",value:function(e){var t=this;this._isShown||this._isTransitioning||(R.trigger(this._element,Qt,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(Zt),this._adjustDialog(),this._backdrop.show((function(){return t._showElement(e)}))))}},{key:"hide",value:function(){var e=this;this._isShown&&!this._isTransitioning&&(R.trigger(this._element,qt).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(en),this._queueCallback((function(){return e._hideModal()}),this._element,this._isAnimated())))}},{key:"dispose",value:function(){R.off(window,Wt),R.off(this._dialog,Wt),this._backdrop.dispose(),this._focustrap.deactivate(),_get(_getPrototypeOf(n.prototype),"dispose",this).call(this)}},{key:"handleUpdate",value:function(){this._adjustDialog()}},{key:"_initializeBackDrop",value:function(){return new It({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}},{key:"_initializeFocusTrap",value:function(){return new Mt({trapElement:this._element})}},{key:"_showElement",value:function(e){var t=this;document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;var n=G.findOne(".modal-body",this._dialog);n&&(n.scrollTop=0),g(this._element),this._element.classList.add(en);this._queueCallback((function(){t._config.focus&&t._focustrap.activate(),t._isTransitioning=!1,R.trigger(t._element,Xt,{relatedTarget:e})}),this._dialog,this._isAnimated())}},{key:"_addEventListeners",value:function(){var e=this;R.on(this._element,Gt,(function(t){"Escape"===t.key&&(e._config.keyboard?e.hide():e._triggerBackdropTransition())})),R.on(window,Yt,(function(){e._isShown&&!e._isTransitioning&&e._adjustDialog()})),R.on(this._element,$t,(function(t){R.one(e._element,Ut,(function(n){e._element===t.target&&e._element===n.target&&("static"!==e._config.backdrop?e._config.backdrop&&e.hide():e._triggerBackdropTransition())}))}))}},{key:"_hideModal",value:function(){var e=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((function(){document.body.classList.remove(Zt),e._resetAdjustments(),e._scrollBar.reset(),R.trigger(e._element,Vt)}))}},{key:"_isAnimated",value:function(){return this._element.classList.contains("fade")}},{key:"_triggerBackdropTransition",value:function(){var e=this;if(!R.trigger(this._element,Kt).defaultPrevented){var t=this._element.scrollHeight>document.documentElement.clientHeight,n=this._element.style.overflowY;"hidden"===n||this._element.classList.contains(tn)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(tn),this._queueCallback((function(){e._element.classList.remove(tn),e._queueCallback((function(){e._element.style.overflowY=n}),e._dialog)}),this._dialog),this._element.focus())}}},{key:"_adjustDialog",value:function(){var e=this._element.scrollHeight>document.documentElement.clientHeight,t=this._scrollBar.getWidth(),n=t>0;if(n&&!e){var i=b()?"paddingLeft":"paddingRight";this._element.style[i]="".concat(t,"px")}if(!n&&e){var r=b()?"paddingRight":"paddingLeft";this._element.style[r]="".concat(t,"px")}}},{key:"_resetAdjustments",value:function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}}],[{key:"Default",get:function(){return nn}},{key:"DefaultType",get:function(){return rn}},{key:"NAME",get:function(){return"modal"}},{key:"jQueryInterface",value:function(e,t){return this.each((function(){var i=n.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===i[e])throw new TypeError('No method named "'.concat(e,'"'));i[e](t)}}))}}]),n}(U);R.on(document,Jt,'[data-bs-toggle="modal"]',(function(e){var t=this,n=G.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&e.preventDefault(),R.one(n,Qt,(function(e){e.defaultPrevented||R.one(n,Vt,(function(){d(t)&&t.focus()}))}));var i=G.findOne(".modal.show");i&&on.getInstance(i).hide(),on.getOrCreateInstance(n).toggle(this)})),J(on),k(on);var an=".".concat("bs.offcanvas"),sn=".data-api",ln="load".concat(an).concat(sn),cn="show",un="showing",fn="hiding",hn=".offcanvas.show",dn="show".concat(an),_n="shown".concat(an),pn="hide".concat(an),vn="hidePrevented".concat(an),gn="hidden".concat(an),mn="resize".concat(an),yn="click".concat(an).concat(sn),bn="keydown.dismiss".concat(an),kn={backdrop:!0,keyboard:!0,scroll:!1},wn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"},Cn=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;return _classCallCheck(this,n),(r=t.call(this,e,i))._isShown=!1,r._backdrop=r._initializeBackDrop(),r._focustrap=r._initializeFocusTrap(),r._addEventListeners(),r}return _createClass(n,[{key:"toggle",value:function(e){return this._isShown?this.hide():this.show(e)}},{key:"show",value:function(e){var t=this;if(!this._isShown&&!R.trigger(this._element,dn,{relatedTarget:e}).defaultPrevented){this._isShown=!0,this._backdrop.show(),this._config.scroll||(new Bt).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(un);this._queueCallback((function(){t._config.scroll&&!t._config.backdrop||t._focustrap.activate(),t._element.classList.add(cn),t._element.classList.remove(un),R.trigger(t._element,_n,{relatedTarget:e})}),this._element,!0)}}},{key:"hide",value:function(){var e=this;if(this._isShown&&!R.trigger(this._element,pn).defaultPrevented){this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(fn),this._backdrop.hide();this._queueCallback((function(){e._element.classList.remove(cn,fn),e._element.removeAttribute("aria-modal"),e._element.removeAttribute("role"),e._config.scroll||(new Bt).reset(),R.trigger(e._element,gn)}),this._element,!0)}}},{key:"dispose",value:function(){this._backdrop.dispose(),this._focustrap.deactivate(),_get(_getPrototypeOf(n.prototype),"dispose",this).call(this)}},{key:"_initializeBackDrop",value:function(){var e=this,t=Boolean(this._config.backdrop);return new It({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?function(){"static"!==e._config.backdrop?e.hide():R.trigger(e._element,vn)}:null})}},{key:"_initializeFocusTrap",value:function(){return new Mt({trapElement:this._element})}},{key:"_addEventListeners",value:function(){var e=this;R.on(this._element,bn,(function(t){"Escape"===t.key&&(e._config.keyboard?e.hide():R.trigger(e._element,vn))}))}}],[{key:"Default",get:function(){return kn}},{key:"DefaultType",get:function(){return wn}},{key:"NAME",get:function(){return"offcanvas"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e](this)}}))}}]),n}(U);R.on(document,yn,'[data-bs-toggle="offcanvas"]',(function(e){var t=this,n=G.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),!_(this)){R.one(n,gn,(function(){d(t)&&t.focus()}));var i=G.findOne(hn);i&&i!==n&&Cn.getInstance(i).hide(),Cn.getOrCreateInstance(n).toggle(this)}})),R.on(window,ln,(function(){var e,t=_createForOfIteratorHelper(G.find(hn));try{for(t.s();!(e=t.n()).done;){var n=e.value;Cn.getOrCreateInstance(n).show()}}catch(e){t.e(e)}finally{t.f()}})),R.on(window,mn,(function(){var e,t=_createForOfIteratorHelper(G.find("[aria-modal][class*=show][class*=offcanvas-]"));try{for(t.s();!(e=t.n()).done;){var n=e.value;"fixed"!==getComputedStyle(n).position&&Cn.getOrCreateInstance(n).hide()}}catch(e){t.e(e)}finally{t.f()}})),J(Cn),k(Cn);var An={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Tn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),En=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,On=function(e,t){var n=e.nodeName.toLowerCase();return t.includes(n)?!Tn.has(n)||Boolean(En.test(e.nodeValue)):t.filter((function(e){return e instanceof RegExp})).some((function(e){return e.test(n)}))};var Sn={allowList:An,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},In={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Pn={entry:"(string|element|function|null)",selector:"(string|element)"},Ln=function(e){_inherits(n,e);var t=_createSuper(n);function n(e){var i;return _classCallCheck(this,n),(i=t.call(this))._config=i._getConfig(e),i}return _createClass(n,[{key:"getContent",value:function(){var e=this;return Object.values(this._config.content).map((function(t){return e._resolvePossibleFunction(t)})).filter(Boolean)}},{key:"hasContent",value:function(){return this.getContent().length>0}},{key:"changeContent",value:function(e){return this._checkContent(e),this._config.content=_objectSpread(_objectSpread({},this._config.content),e),this}},{key:"toHtml",value:function(){var e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(var t=0,n=Object.entries(this._config.content);t
',title:"",trigger:"hover focus"},Bn={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"},Wn=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,r){var o;if(_classCallCheck(this,n),void 0===i)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");return(o=t.call(this,e,r))._isEnabled=!0,o._timeout=0,o._isHovered=null,o._activeTrigger={},o._popper=null,o._templateFactory=null,o._newContent=null,o.tip=null,o._setListeners(),o._config.selector||o._fixTitle(),o}return _createClass(n,[{key:"enable",value:function(){this._isEnabled=!0}},{key:"disable",value:function(){this._isEnabled=!1}},{key:"toggleEnabled",value:function(){this._isEnabled=!this._isEnabled}},{key:"toggle",value:function(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}},{key:"dispose",value:function(){clearTimeout(this._timeout),R.off(this._element.closest(Fn),Mn,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),_get(_getPrototypeOf(n.prototype),"dispose",this).call(this)}},{key:"show",value:function(){var e=this;if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(this._isWithContent()&&this._isEnabled){var t=R.trigger(this._element,this.constructor.eventName("show")),n=(p(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(!t.defaultPrevented&&n){this._disposePopper();var i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));var r=this._config.container;if(this._element.ownerDocument.documentElement.contains(this.tip)||(r.append(i),R.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(Dn),"ontouchstart"in document.documentElement){var o,a,s=_createForOfIteratorHelper((o=[]).concat.apply(o,_toConsumableArray(document.body.children)));try{for(s.s();!(a=s.n()).done;){var l=a.value;R.on(l,"mouseover",v)}}catch(e){s.e(e)}finally{s.f()}}this._queueCallback((function(){R.trigger(e._element,e.constructor.eventName("shown")),!1===e._isHovered&&e._leave(),e._isHovered=!1}),this.tip,this._isAnimated())}}}},{key:"hide",value:function(){var e=this;if(this._isShown()&&!R.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(Dn),"ontouchstart"in document.documentElement){var t,n,i=_createForOfIteratorHelper((t=[]).concat.apply(t,_toConsumableArray(document.body.children)));try{for(i.s();!(n=i.n()).done;){var r=n.value;R.off(r,"mouseover",v)}}catch(e){i.e(e)}finally{i.f()}}this._activeTrigger.click=!1,this._activeTrigger[Hn]=!1,this._activeTrigger[xn]=!1,this._isHovered=null;this._queueCallback((function(){e._isWithActiveTrigger()||(e._isHovered||e._disposePopper(),e._element.removeAttribute("aria-describedby"),R.trigger(e._element,e.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}},{key:"update",value:function(){this._popper&&this._popper.update()}},{key:"_isWithContent",value:function(){return Boolean(this._getTitle())}},{key:"_getTipElement",value:function(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}},{key:"_createTipElement",value:function(e){var t=this._getTemplateFactory(e).toHtml();if(!t)return null;t.classList.remove(Nn,Dn),t.classList.add("bs-".concat(this.constructor.NAME,"-auto"));var n=function(e){do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e}(this.constructor.NAME).toString();return t.setAttribute("id",n),this._isAnimated()&&t.classList.add(Nn),t}},{key:"setContent",value:function(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}},{key:"_getTemplateFactory",value:function(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new Ln(_objectSpread(_objectSpread({},this._config),{},{content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)})),this._templateFactory}},{key:"_getContentForTemplate",value:function(){return _defineProperty({},".tooltip-inner",this._getTitle())}},{key:"_getTitle",value:function(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}},{key:"_initializeOnDelegatedTarget",value:function(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}},{key:"_isAnimated",value:function(){return this._config.animation||this.tip&&this.tip.classList.contains(Nn)}},{key:"_isShown",value:function(){return this.tip&&this.tip.classList.contains(Dn)}},{key:"_createPopper",value:function(e){var t=w(this._config.placement,[this,e,this._element]),n=zn[t.toUpperCase()];return i.createPopper(this._element,e,this._getPopperConfig(n))}},{key:"_getOffset",value:function(){var e=this,t=this._config.offset;return"string"==typeof t?t.split(",").map((function(e){return Number.parseInt(e,10)})):"function"==typeof t?function(n){return t(n,e._element)}:t}},{key:"_resolvePossibleFunction",value:function(e){return w(e,[this._element])}},{key:"_getPopperConfig",value:function(e){var t=this,n={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:".".concat(this.constructor.NAME,"-arrow")}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:function(e){t._getTipElement().setAttribute("data-popper-placement",e.state.placement)}}]};return _objectSpread(_objectSpread({},n),w(this._config.popperConfig,[n]))}},{key:"_setListeners",value:function(){var e,t=this,n=_createForOfIteratorHelper(this._config.trigger.split(" "));try{for(n.s();!(e=n.n()).done;){var i=e.value;if("click"===i)R.on(this._element,this.constructor.eventName("click"),this._config.selector,(function(e){t._initializeOnDelegatedTarget(e).toggle()}));else if("manual"!==i){var r=i===xn?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),o=i===xn?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");R.on(this._element,r,this._config.selector,(function(e){var n=t._initializeOnDelegatedTarget(e);n._activeTrigger["focusin"===e.type?Hn:xn]=!0,n._enter()})),R.on(this._element,o,this._config.selector,(function(e){var n=t._initializeOnDelegatedTarget(e);n._activeTrigger["focusout"===e.type?Hn:xn]=n._element.contains(e.relatedTarget),n._leave()}))}}}catch(e){n.e(e)}finally{n.f()}this._hideModalHandler=function(){t._element&&t.hide()},R.on(this._element.closest(Fn),Mn,this._hideModalHandler)}},{key:"_fixTitle",value:function(){var e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}},{key:"_enter",value:function(){var e=this;this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((function(){e._isHovered&&e.show()}),this._config.delay.show))}},{key:"_leave",value:function(){var e=this;this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((function(){e._isHovered||e.hide()}),this._config.delay.hide))}},{key:"_setTimeout",value:function(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}},{key:"_isWithActiveTrigger",value:function(){return Object.values(this._activeTrigger).includes(!0)}},{key:"_getConfig",value:function(e){for(var t=Q(this._element),n=0,i=Object.keys(t);n

',trigger:"click"}),Kn=_objectSpread(_objectSpread({},Wn.DefaultType),{},{content:"(null|string|element|function)"}),Vn=function(e){_inherits(n,e);var t=_createSuper(n);function n(){return _classCallCheck(this,n),t.apply(this,arguments)}return _createClass(n,[{key:"_isWithContent",value:function(){return this._getTitle()||this._getContent()}},{key:"_getContentForTemplate",value:function(){var e;return _defineProperty(e={},".popover-header",this._getTitle()),_defineProperty(e,".popover-body",this._getContent()),e}},{key:"_getContent",value:function(){return this._resolvePossibleFunction(this._config.content)}}],[{key:"Default",get:function(){return qn}},{key:"DefaultType",get:function(){return Kn}},{key:"NAME",get:function(){return"popover"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError('No method named "'.concat(e,'"'));t[e]()}}))}}]),n}(Wn);k(Vn);var Qn=".".concat("bs.scrollspy"),Xn="activate".concat(Qn),Yn="click".concat(Qn),Un="load".concat(Qn).concat(".data-api"),$n="active",Gn="[href]",Jn=".nav-link",Zn="".concat(Jn,", ").concat(".nav-item"," > ").concat(Jn,", ").concat(".list-group-item"),ei={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},ti={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"},ni=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;return _classCallCheck(this,n),(r=t.call(this,e,i))._targetLinks=new Map,r._observableSections=new Map,r._rootElement="visible"===getComputedStyle(r._element).overflowY?null:r._element,r._activeTarget=null,r._observer=null,r._previousScrollData={visibleEntryTop:0,parentScrollTop:0},r.refresh(),r}return _createClass(n,[{key:"refresh",value:function(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();var e,t=_createForOfIteratorHelper(this._observableSections.values());try{for(t.s();!(e=t.n()).done;){var n=e.value;this._observer.observe(n)}}catch(e){t.e(e)}finally{t.f()}}},{key:"dispose",value:function(){this._observer.disconnect(),_get(_getPrototypeOf(n.prototype),"dispose",this).call(this)}},{key:"_configAfterMerge",value:function(e){return e.target=h(e.target)||document.body,e.rootMargin=e.offset?"".concat(e.offset,"px 0px -30%"):e.rootMargin,"string"==typeof e.threshold&&(e.threshold=e.threshold.split(",").map((function(e){return Number.parseFloat(e)}))),e}},{key:"_maybeEnableSmoothScroll",value:function(){var e=this;this._config.smoothScroll&&(R.off(this._config.target,Yn),R.on(this._config.target,Yn,Gn,(function(t){var n=e._observableSections.get(t.target.hash);if(n){t.preventDefault();var i=e._rootElement||window,r=n.offsetTop-e._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:r,behavior:"smooth"});i.scrollTop=r}})))}},{key:"_getNewObserver",value:function(){var e=this,t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((function(t){return e._observerCallback(t)}),t)}},{key:"_observerCallback",value:function(e){var t=this,n=function(e){return t._targetLinks.get("#".concat(e.target.id))},i=function(e){t._previousScrollData.visibleEntryTop=e.target.offsetTop,t._process(n(e))},r=(this._rootElement||document.documentElement).scrollTop,o=r>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=r;var a,s=_createForOfIteratorHelper(e);try{for(s.s();!(a=s.n()).done;){var l=a.value;if(l.isIntersecting){var c=l.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(o&&c){if(i(l),!r)return}else o||c||i(l)}else this._activeTarget=null,this._clearActiveClass(n(l))}}catch(e){s.e(e)}finally{s.f()}}},{key:"_initializeTargetsAndObservables",value:function(){this._targetLinks=new Map,this._observableSections=new Map;var e,t=_createForOfIteratorHelper(G.find(Gn,this._config.target));try{for(t.s();!(e=t.n()).done;){var n=e.value;if(n.hash&&!_(n)){var i=G.findOne(decodeURI(n.hash),this._element);d(i)&&(this._targetLinks.set(decodeURI(n.hash),n),this._observableSections.set(n.hash,i))}}}catch(e){t.e(e)}finally{t.f()}}},{key:"_process",value:function(e){this._activeTarget!==e&&(this._clearActiveClass(this._config.target),this._activeTarget=e,e.classList.add($n),this._activateParents(e),R.trigger(this._element,Xn,{relatedTarget:e}))}},{key:"_activateParents",value:function(e){if(e.classList.contains("dropdown-item"))G.findOne(".dropdown-toggle",e.closest(".dropdown")).classList.add($n);else{var t,n=_createForOfIteratorHelper(G.parents(e,".nav, .list-group"));try{for(n.s();!(t=n.n()).done;){var i,r=t.value,o=_createForOfIteratorHelper(G.prev(r,Zn));try{for(o.s();!(i=o.n()).done;){i.value.classList.add($n)}}catch(e){o.e(e)}finally{o.f()}}}catch(e){n.e(e)}finally{n.f()}}}},{key:"_clearActiveClass",value:function(e){e.classList.remove($n);var t,n=_createForOfIteratorHelper(G.find("".concat(Gn,".").concat($n),e));try{for(n.s();!(t=n.n()).done;){t.value.classList.remove($n)}}catch(e){n.e(e)}finally{n.f()}}}],[{key:"Default",get:function(){return ei}},{key:"DefaultType",get:function(){return ti}},{key:"NAME",get:function(){return"scrollspy"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e]()}}))}}]),n}(U);R.on(window,Un,(function(){var e,t=_createForOfIteratorHelper(G.find('[data-bs-spy="scroll"]'));try{for(t.s();!(e=t.n()).done;){var n=e.value;ni.getOrCreateInstance(n)}}catch(e){t.e(e)}finally{t.f()}})),k(ni);var ii=".".concat("bs.tab"),ri="hide".concat(ii),oi="hidden".concat(ii),ai="show".concat(ii),si="shown".concat(ii),li="click".concat(ii),ci="keydown".concat(ii),ui="load".concat(ii),fi="ArrowLeft",hi="ArrowRight",di="ArrowUp",_i="ArrowDown",pi="Home",vi="End",gi="active",mi="fade",yi="show",bi=".dropdown-toggle",ki=":not(".concat(bi,")"),wi=".nav-link".concat(ki,", .list-group-item").concat(ki,', [role="tab"]').concat(ki),Ci='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Ai="".concat(wi,", ").concat(Ci),Ti=".".concat(gi,'[data-bs-toggle="tab"], .').concat(gi,'[data-bs-toggle="pill"], .').concat(gi,'[data-bs-toggle="list"]'),Ei=function(e){_inherits(n,e);var t=_createSuper(n);function n(e){var i;return _classCallCheck(this,n),(i=t.call(this,e))._parent=i._element.closest('.list-group, .nav, [role="tablist"]'),i._parent?(i._setInitialAttributes(i._parent,i._getChildren()),R.on(i._element,ci,(function(e){return i._keydown(e)})),i):_possibleConstructorReturn(i)}return _createClass(n,[{key:"show",value:function(){var e=this._element;if(!this._elemIsActive(e)){var t=this._getActiveElem(),n=t?R.trigger(t,ri,{relatedTarget:e}):null;R.trigger(e,ai,{relatedTarget:t}).defaultPrevented||n&&n.defaultPrevented||(this._deactivate(t,e),this._activate(e,t))}}},{key:"_activate",value:function(e,t){var n=this;if(e){e.classList.add(gi),this._activate(G.getElementFromSelector(e));this._queueCallback((function(){"tab"===e.getAttribute("role")?(e.removeAttribute("tabindex"),e.setAttribute("aria-selected",!0),n._toggleDropDown(e,!0),R.trigger(e,si,{relatedTarget:t})):e.classList.add(yi)}),e,e.classList.contains(mi))}}},{key:"_deactivate",value:function(e,t){var n=this;if(e){e.classList.remove(gi),e.blur(),this._deactivate(G.getElementFromSelector(e));this._queueCallback((function(){"tab"===e.getAttribute("role")?(e.setAttribute("aria-selected",!1),e.setAttribute("tabindex","-1"),n._toggleDropDown(e,!1),R.trigger(e,oi,{relatedTarget:t})):e.classList.remove(yi)}),e,e.classList.contains(mi))}}},{key:"_keydown",value:function(e){if([fi,hi,di,_i,pi,vi].includes(e.key)){e.stopPropagation(),e.preventDefault();var t,i=this._getChildren().filter((function(e){return!_(e)}));if([pi,vi].includes(e.key))t=i[e.key===pi?0:i.length-1];else{var r=[hi,_i].includes(e.key);t=A(i,e.target,r,!0)}t&&(t.focus({preventScroll:!0}),n.getOrCreateInstance(t).show())}}},{key:"_getChildren",value:function(){return G.find(Ai,this._parent)}},{key:"_getActiveElem",value:function(){var e=this;return this._getChildren().find((function(t){return e._elemIsActive(t)}))||null}},{key:"_setInitialAttributes",value:function(e,t){this._setAttributeIfNotExists(e,"role","tablist");var n,i=_createForOfIteratorHelper(t);try{for(i.s();!(n=i.n()).done;){var r=n.value;this._setInitialAttributesOnChild(r)}}catch(e){i.e(e)}finally{i.f()}}},{key:"_setInitialAttributesOnChild",value:function(e){e=this._getInnerElement(e);var t=this._elemIsActive(e),n=this._getOuterElement(e);e.setAttribute("aria-selected",t),n!==e&&this._setAttributeIfNotExists(n,"role","presentation"),t||e.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(e,"role","tab"),this._setInitialAttributesOnTargetPanel(e)}},{key:"_setInitialAttributesOnTargetPanel",value:function(e){var t=G.getElementFromSelector(e);t&&(this._setAttributeIfNotExists(t,"role","tabpanel"),e.id&&this._setAttributeIfNotExists(t,"aria-labelledby","".concat(e.id)))}},{key:"_toggleDropDown",value:function(e,t){var n=this._getOuterElement(e);if(n.classList.contains("dropdown")){var i=function(e,i){var r=G.findOne(e,n);r&&r.classList.toggle(i,t)};i(bi,gi),i(".dropdown-menu",yi),n.setAttribute("aria-expanded",t)}}},{key:"_setAttributeIfNotExists",value:function(e,t,n){e.hasAttribute(t)||e.setAttribute(t,n)}},{key:"_elemIsActive",value:function(e){return e.classList.contains(gi)}},{key:"_getInnerElement",value:function(e){return e.matches(Ai)?e:G.findOne(Ai,e)}},{key:"_getOuterElement",value:function(e){return e.closest(".nav-item, .list-group-item")||e}}],[{key:"NAME",get:function(){return"tab"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e]()}}))}}]),n}(U);R.on(document,li,Ci,(function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault(),_(this)||Ei.getOrCreateInstance(this).show()})),R.on(window,ui,(function(){var e,t=_createForOfIteratorHelper(G.find(Ti));try{for(t.s();!(e=t.n()).done;){var n=e.value;Ei.getOrCreateInstance(n)}}catch(e){t.e(e)}finally{t.f()}})),k(Ei);var Oi=".".concat("bs.toast"),Si="mouseover".concat(Oi),Ii="mouseout".concat(Oi),Pi="focusin".concat(Oi),Li="focusout".concat(Oi),ji="hide".concat(Oi),Ni="hidden".concat(Oi),Di="show".concat(Oi),Fi="shown".concat(Oi),Mi="hide",xi="show",Hi="showing",zi={animation:"boolean",autohide:"boolean",delay:"number"},Ri={animation:!0,autohide:!0,delay:5e3},Bi=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;return _classCallCheck(this,n),(r=t.call(this,e,i))._timeout=null,r._hasMouseInteraction=!1,r._hasKeyboardInteraction=!1,r._setListeners(),r}return _createClass(n,[{key:"show",value:function(){var e=this;if(!R.trigger(this._element,Di).defaultPrevented){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");this._element.classList.remove(Mi),g(this._element),this._element.classList.add(xi,Hi),this._queueCallback((function(){e._element.classList.remove(Hi),R.trigger(e._element,Fi),e._maybeScheduleHide()}),this._element,this._config.animation)}}},{key:"hide",value:function(){var e=this;if(this.isShown()&&!R.trigger(this._element,ji).defaultPrevented){this._element.classList.add(Hi),this._queueCallback((function(){e._element.classList.add(Mi),e._element.classList.remove(Hi,xi),R.trigger(e._element,Ni)}),this._element,this._config.animation)}}},{key:"dispose",value:function(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(xi),_get(_getPrototypeOf(n.prototype),"dispose",this).call(this)}},{key:"isShown",value:function(){return this._element.classList.contains(xi)}},{key:"_maybeScheduleHide",value:function(){var e=this;this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((function(){e.hide()}),this._config.delay)))}},{key:"_onInteraction",value:function(e,t){switch(e.type){case"mouseover":case"mouseout":this._hasMouseInteraction=t;break;case"focusin":case"focusout":this._hasKeyboardInteraction=t}if(t)this._clearTimeout();else{var n=e.relatedTarget;this._element===n||this._element.contains(n)||this._maybeScheduleHide()}}},{key:"_setListeners",value:function(){var e=this;R.on(this._element,Si,(function(t){return e._onInteraction(t,!0)})),R.on(this._element,Ii,(function(t){return e._onInteraction(t,!1)})),R.on(this._element,Pi,(function(t){return e._onInteraction(t,!0)})),R.on(this._element,Li,(function(t){return e._onInteraction(t,!1)}))}},{key:"_clearTimeout",value:function(){clearTimeout(this._timeout),this._timeout=null}}],[{key:"Default",get:function(){return Ri}},{key:"DefaultType",get:function(){return zi}},{key:"NAME",get:function(){return"toast"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError('No method named "'.concat(e,'"'));t[e](this)}}))}}]),n}(U);return J(Bi),k(Bi),{Alert:ne,Button:ae,Carousel:He,Collapse:Je,Dropdown:Ct,Modal:on,Offcanvas:Cn,Popover:Vn,ScrollSpy:ni,Tab:Ei,Toast:Bi,Tooltip:Wn}})); + */}!function(e,t){"object"===("undefined"==typeof exports?"undefined":_typeof(exports))&&"undefined"!=typeof module?module.exports=t(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).bootstrap=t(e.Popper)}(this,(function(e){"use strict";var t;function n(e){var t=Object.create(null,_defineProperty({},Symbol.toStringTag,{value:"Module"}));if(e){var n=function(n){if("default"!==n){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})}};for(var i in e)n(i)}return t.default=e,Object.freeze(t)}var i=n(e),r=new Map,o=function(e,t,n){r.has(e)||r.set(e,new Map);var i=r.get(e);i.has(t)||0===i.size?i.set(t,n):console.error("Bootstrap doesn't allow more than one instance per element. Bound instance: ".concat(Array.from(i.keys())[0],"."))},a=function(e,t){return r.has(e)&&r.get(e).get(t)||null},s=function(e,t){if(r.has(e)){var n=r.get(e);n.delete(t),0===n.size&&r.delete(e)}},l="transitionend",c=function(e){return e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(function(e,t){return"#".concat(CSS.escape(t))}))),e},u=function(e){e.dispatchEvent(new Event(l))},f=function(e){return!(!e||"object"!==_typeof(e))&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType)},h=function(e){return f(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(c(e)):null},d=function(e){if(!f(e)||0===e.getClientRects().length)return!1;var t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){var i=e.closest("summary");if(i&&i.parentNode!==n)return!1;if(null===i)return!1}return t},_=function(e){return!e||e.nodeType!==Node.ELEMENT_NODE||(!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")))},p=function e(t){if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){var n=t.getRootNode();return n instanceof ShadowRoot?n:null}return t instanceof ShadowRoot?t:t.parentNode?e(t.parentNode):null},v=function(){},g=function(e){e.offsetHeight},m=function(){return window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null},y=[],b=function(){return"rtl"===document.documentElement.dir},k=function(e){var t;t=function(){var t=m();if(t){var n=e.NAME,i=t.fn[n];t.fn[n]=e.jQueryInterface,t.fn[n].Constructor=e,t.fn[n].noConflict=function(){return t.fn[n]=i,e.jQueryInterface}}},"loading"===document.readyState?(y.length||document.addEventListener("DOMContentLoaded",(function(){for(var e=0,t=y;e1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;return"function"==typeof e?e.apply(void 0,_toConsumableArray(t)):n},C=function(e,t){if(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]){var n=function(e){if(!e)return 0;var t=window.getComputedStyle(e),n=t.transitionDuration,i=t.transitionDelay,r=Number.parseFloat(n),o=Number.parseFloat(i);return r||o?(n=n.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(n)+Number.parseFloat(i))):0}(t)+5,i=!1;t.addEventListener(l,(function n(r){r.target===t&&(i=!0,t.removeEventListener(l,n),w(e))})),setTimeout((function(){i||u(t)}),n)}else w(e)},A=function(e,t,n,i){var r=e.length,o=e.indexOf(t);return-1===o?!n&&i?e[r-1]:e[0]:(o+=n?1:-1,i&&(o=(o+r)%r),e[Math.max(0,Math.min(o,r-1))])},T=/[^.]*(?=\..*)\.|.*/,E=/\..*/,O=/::\d+$/,S={},I=1,P={mouseenter:"mouseover",mouseleave:"mouseout"},L=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function j(e,t){return t&&"".concat(t,"::").concat(I++)||e.uidEvent||I++}function N(e){var t=j(e);return e.uidEvent=t,S[t]=S[t]||{},S[t]}function D(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(e).find((function(e){return e.callable===t&&e.delegationSelector===n}))}function F(e,t,n){var i="string"==typeof t,r=i?n:t||n,o=z(e);return L.has(o)||(o=e),[i,r,o]}function M(e,t,n,i,r){if("string"==typeof t&&e){var o=_slicedToArray(F(t,n,i),3),a=o[0],s=o[1],l=o[2];if(t in P){s=function(e){return function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)}}(s)}var c=N(e),u=c[l]||(c[l]={}),f=D(u,s,a?n:null);if(f)f.oneOff=f.oneOff&&r;else{var h=j(s,t.replace(T,"")),d=a?function(e,t,n){return function i(r){for(var o=e.querySelectorAll(t),a=r.target;a&&a!==this;a=a.parentNode){var s,l=_createForOfIteratorHelper(o);try{for(l.s();!(s=l.n()).done;)if(s.value===a)return B(r,{delegateTarget:a}),i.oneOff&&R.off(e,r.type,t,n),n.apply(a,[r])}catch(e){l.e(e)}finally{l.f()}}}}(e,n,s):function(e,t){return function n(i){return B(i,{delegateTarget:e}),n.oneOff&&R.off(e,i.type,t),t.apply(e,[i])}}(e,s);d.delegationSelector=a?n:null,d.callable=s,d.oneOff=r,d.uidEvent=h,u[h]=d,e.addEventListener(l,d,a)}}}function x(e,t,n,i,r){var o=D(t[n],i,r);o&&(e.removeEventListener(n,o,Boolean(r)),delete t[n][o.uidEvent])}function H(e,t,n,i){for(var r=t[n]||{},o=0,a=Object.entries(r);o1&&void 0!==arguments[1]?arguments[1]:{},n=function(){var t=_slicedToArray(r[i],2),n=t[0],o=t[1];try{e[n]=o}catch(t){Object.defineProperty(e,n,{configurable:!0,get:function(){return o}})}},i=0,r=Object.entries(t);i1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType,i=0,r=Object.entries(n);i2&&void 0!==arguments[2])||arguments[2])}},{key:"_getConfig",value:function(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}}],[{key:"getInstance",value:function(e){return a(h(e),this.DATA_KEY)}},{key:"getOrCreateInstance",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(e)||new this(e,"object"===_typeof(t)?t:null)}},{key:"VERSION",get:function(){return"5.3.3"}},{key:"DATA_KEY",get:function(){return"bs.".concat(this.NAME)}},{key:"EVENT_KEY",get:function(){return".".concat(this.DATA_KEY)}},{key:"eventName",value:function(e){return"".concat(e).concat(this.EVENT_KEY)}}]),n}(Y),$=function(e){var t=e.getAttribute("data-bs-target");if(!t||"#"===t){var n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n="#".concat(n.split("#")[1])),t=n&&"#"!==n?n.trim():null}return t?t.split(",").map((function(e){return c(e)})).join(","):null},G={find:function(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return(t=[]).concat.apply(t,_toConsumableArray(Element.prototype.querySelectorAll.call(n,e)))},findOne:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(t,e)},children:function(e,t){var n;return(n=[]).concat.apply(n,_toConsumableArray(e.children)).filter((function(e){return e.matches(t)}))},parents:function(e,t){for(var n=[],i=e.parentNode.closest(t);i;)n.push(i),i=i.parentNode.closest(t);return n},prev:function(e,t){for(var n=e.previousElementSibling;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next:function(e,t){for(var n=e.nextElementSibling;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren:function(e){var t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((function(e){return"".concat(e,':not([tabindex^="-"])')})).join(",");return this.find(t,e).filter((function(e){return!_(e)&&d(e)}))},getSelectorFromElement:function(e){var t=$(e);return t&&G.findOne(t)?t:null},getElementFromSelector:function(e){var t=$(e);return t?G.findOne(t):null},getMultipleElementsFromSelector:function(e){var t=$(e);return t?G.find(t):[]}},J=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"hide",n="click.dismiss".concat(e.EVENT_KEY),i=e.NAME;R.on(document,n,'[data-bs-dismiss="'.concat(i,'"]'),(function(n){if(["A","AREA"].includes(this.tagName)&&n.preventDefault(),!_(this)){var r=G.getElementFromSelector(this)||this.closest(".".concat(i));e.getOrCreateInstance(r)[t]()}}))},Z=".".concat("bs.alert"),ee="close".concat(Z),te="closed".concat(Z),ne=function(e){_inherits(n,e);var t=_createSuper(n);function n(){return _classCallCheck(this,n),t.apply(this,arguments)}return _createClass(n,[{key:"close",value:function(){var e=this;if(!R.trigger(this._element,ee).defaultPrevented){this._element.classList.remove("show");var t=this._element.classList.contains("fade");this._queueCallback((function(){return e._destroyElement()}),this._element,t)}}},{key:"_destroyElement",value:function(){this._element.remove(),R.trigger(this._element,te),this.dispose()}}],[{key:"NAME",get:function(){return"alert"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e](this)}}))}}]),n}(U);J(ne,"close"),k(ne);var ie=".".concat("bs.button"),re='[data-bs-toggle="button"]',oe="click".concat(ie).concat(".data-api"),ae=function(e){_inherits(n,e);var t=_createSuper(n);function n(){return _classCallCheck(this,n),t.apply(this,arguments)}return _createClass(n,[{key:"toggle",value:function(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}}],[{key:"NAME",get:function(){return"button"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this);"toggle"===e&&t[e]()}))}}]),n}(U);R.on(document,oe,re,(function(e){e.preventDefault();var t=e.target.closest(re);ae.getOrCreateInstance(t).toggle()})),k(ae);var se=".bs.swipe",le="touchstart".concat(se),ce="touchmove".concat(se),ue="touchend".concat(se),fe="pointerdown".concat(se),he="pointerup".concat(se),de={endCallback:null,leftCallback:null,rightCallback:null},_e={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"},pe=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;return _classCallCheck(this,n),(r=t.call(this))._element=e,e&&n.isSupported()?(r._config=r._getConfig(i),r._deltaX=0,r._supportPointerEvents=Boolean(window.PointerEvent),r._initEvents(),r):_possibleConstructorReturn(r)}return _createClass(n,[{key:"dispose",value:function(){R.off(this._element,se)}},{key:"_start",value:function(e){this._supportPointerEvents?this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX):this._deltaX=e.touches[0].clientX}},{key:"_end",value:function(e){this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX-this._deltaX),this._handleSwipe(),w(this._config.endCallback)}},{key:"_move",value:function(e){this._deltaX=e.touches&&e.touches.length>1?0:e.touches[0].clientX-this._deltaX}},{key:"_handleSwipe",value:function(){var e=Math.abs(this._deltaX);if(!(e<=40)){var t=e/this._deltaX;this._deltaX=0,t&&w(t>0?this._config.rightCallback:this._config.leftCallback)}}},{key:"_initEvents",value:function(){var e=this;this._supportPointerEvents?(R.on(this._element,fe,(function(t){return e._start(t)})),R.on(this._element,he,(function(t){return e._end(t)})),this._element.classList.add("pointer-event")):(R.on(this._element,le,(function(t){return e._start(t)})),R.on(this._element,ce,(function(t){return e._move(t)})),R.on(this._element,ue,(function(t){return e._end(t)})))}},{key:"_eventIsPointerPenTouch",value:function(e){return this._supportPointerEvents&&("pen"===e.pointerType||"touch"===e.pointerType)}}],[{key:"Default",get:function(){return de}},{key:"DefaultType",get:function(){return _e}},{key:"NAME",get:function(){return"swipe"}},{key:"isSupported",value:function(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}]),n}(Y),ve=".".concat("bs.carousel"),ge=".data-api",me="next",ye="prev",be="left",ke="right",we="slide".concat(ve),Ce="slid".concat(ve),Ae="keydown".concat(ve),Te="mouseenter".concat(ve),Ee="mouseleave".concat(ve),Oe="dragstart".concat(ve),Se="load".concat(ve).concat(ge),Ie="click".concat(ve).concat(ge),Pe="carousel",Le="active",je=".active",Ne=".carousel-item",De=je+Ne,Fe=(_defineProperty(t={},"ArrowLeft",ke),_defineProperty(t,"ArrowRight",be),t),Me={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},xe={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"},He=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;return _classCallCheck(this,n),(r=t.call(this,e,i))._interval=null,r._activeElement=null,r._isSliding=!1,r.touchTimeout=null,r._swipeHelper=null,r._indicatorsElement=G.findOne(".carousel-indicators",r._element),r._addEventListeners(),r._config.ride===Pe&&r.cycle(),r}return _createClass(n,[{key:"next",value:function(){this._slide(me)}},{key:"nextWhenVisible",value:function(){!document.hidden&&d(this._element)&&this.next()}},{key:"prev",value:function(){this._slide(ye)}},{key:"pause",value:function(){this._isSliding&&u(this._element),this._clearInterval()}},{key:"cycle",value:function(){var e=this;this._clearInterval(),this._updateInterval(),this._interval=setInterval((function(){return e.nextWhenVisible()}),this._config.interval)}},{key:"_maybeEnableCycle",value:function(){var e=this;this._config.ride&&(this._isSliding?R.one(this._element,Ce,(function(){return e.cycle()})):this.cycle())}},{key:"to",value:function(e){var t=this,n=this._getItems();if(!(e>n.length-1||e<0))if(this._isSliding)R.one(this._element,Ce,(function(){return t.to(e)}));else{var i=this._getItemIndex(this._getActive());if(i!==e){var r=e>i?me:ye;this._slide(r,n[e])}}}},{key:"dispose",value:function(){this._swipeHelper&&this._swipeHelper.dispose(),_get(_getPrototypeOf(n.prototype),"dispose",this).call(this)}},{key:"_configAfterMerge",value:function(e){return e.defaultInterval=e.interval,e}},{key:"_addEventListeners",value:function(){var e=this;this._config.keyboard&&R.on(this._element,Ae,(function(t){return e._keydown(t)})),"hover"===this._config.pause&&(R.on(this._element,Te,(function(){return e.pause()})),R.on(this._element,Ee,(function(){return e._maybeEnableCycle()}))),this._config.touch&&pe.isSupported()&&this._addTouchEventListeners()}},{key:"_addTouchEventListeners",value:function(){var e,t=this,n=_createForOfIteratorHelper(G.find(".carousel-item img",this._element));try{for(n.s();!(e=n.n()).done;){var i=e.value;R.on(i,Oe,(function(e){return e.preventDefault()}))}}catch(e){n.e(e)}finally{n.f()}var r={leftCallback:function(){return t._slide(t._directionToOrder(be))},rightCallback:function(){return t._slide(t._directionToOrder(ke))},endCallback:function(){"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(){return t._maybeEnableCycle()}),500+t._config.interval))}};this._swipeHelper=new pe(this._element,r)}},{key:"_keydown",value:function(e){if(!/input|textarea/i.test(e.target.tagName)){var t=Fe[e.key];t&&(e.preventDefault(),this._slide(this._directionToOrder(t)))}}},{key:"_getItemIndex",value:function(e){return this._getItems().indexOf(e)}},{key:"_setActiveIndicatorElement",value:function(e){if(this._indicatorsElement){var t=G.findOne(je,this._indicatorsElement);t.classList.remove(Le),t.removeAttribute("aria-current");var n=G.findOne('[data-bs-slide-to="'.concat(e,'"]'),this._indicatorsElement);n&&(n.classList.add(Le),n.setAttribute("aria-current","true"))}}},{key:"_updateInterval",value:function(){var e=this._activeElement||this._getActive();if(e){var t=Number.parseInt(e.getAttribute("data-bs-interval"),10);this._config.interval=t||this._config.defaultInterval}}},{key:"_slide",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!this._isSliding){var i=this._getActive(),r=e===me,o=n||A(this._getItems(),i,r,this._config.wrap);if(o!==i){var a=this._getItemIndex(o),s=function(n){return R.trigger(t._element,n,{relatedTarget:o,direction:t._orderToDirection(e),from:t._getItemIndex(i),to:a})};if(!s(we).defaultPrevented&&i&&o){var l=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(a),this._activeElement=o;var c=r?"carousel-item-start":"carousel-item-end",u=r?"carousel-item-next":"carousel-item-prev";o.classList.add(u),g(o),i.classList.add(c),o.classList.add(c);this._queueCallback((function(){o.classList.remove(c,u),o.classList.add(Le),i.classList.remove(Le,u,c),t._isSliding=!1,s(Ce)}),i,this._isAnimated()),l&&this.cycle()}}}}},{key:"_isAnimated",value:function(){return this._element.classList.contains("slide")}},{key:"_getActive",value:function(){return G.findOne(De,this._element)}},{key:"_getItems",value:function(){return G.find(Ne,this._element)}},{key:"_clearInterval",value:function(){this._interval&&(clearInterval(this._interval),this._interval=null)}},{key:"_directionToOrder",value:function(e){return b()?e===be?ye:me:e===be?me:ye}},{key:"_orderToDirection",value:function(e){return b()?e===ye?be:ke:e===ye?ke:be}}],[{key:"Default",get:function(){return Me}},{key:"DefaultType",get:function(){return xe}},{key:"NAME",get:function(){return"carousel"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this,e);if("number"!=typeof e){if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e]()}}else t.to(e)}))}}]),n}(U);R.on(document,Ie,"[data-bs-slide], [data-bs-slide-to]",(function(e){var t=G.getElementFromSelector(this);if(t&&t.classList.contains(Pe)){e.preventDefault();var n=He.getOrCreateInstance(t),i=this.getAttribute("data-bs-slide-to");if(i)return n.to(i),void n._maybeEnableCycle();if("next"===X(this,"slide"))return n.next(),void n._maybeEnableCycle();n.prev(),n._maybeEnableCycle()}})),R.on(window,Se,(function(){var e,t=_createForOfIteratorHelper(G.find('[data-bs-ride="carousel"]'));try{for(t.s();!(e=t.n()).done;){var n=e.value;He.getOrCreateInstance(n)}}catch(e){t.e(e)}finally{t.f()}})),k(He);var ze=".".concat("bs.collapse"),Re="show".concat(ze),Be="shown".concat(ze),We="hide".concat(ze),qe="hidden".concat(ze),Ke="click".concat(ze).concat(".data-api"),Ve="show",Qe="collapse",Xe="collapsing",Ye=":scope .".concat(Qe," .").concat(Qe),Ue='[data-bs-toggle="collapse"]',$e={parent:null,toggle:!0},Ge={parent:"(null|element)",toggle:"boolean"},Je=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;_classCallCheck(this,n),(r=t.call(this,e,i))._isTransitioning=!1,r._triggerArray=[];var o,a=_createForOfIteratorHelper(G.find(Ue));try{for(a.s();!(o=a.n()).done;){var s=o.value,l=G.getSelectorFromElement(s),c=G.find(l).filter((function(e){return e===r._element}));null!==l&&c.length&&r._triggerArray.push(s)}}catch(e){a.e(e)}finally{a.f()}return r._initializeChildren(),r._config.parent||r._addAriaAndCollapsedClass(r._triggerArray,r._isShown()),r._config.toggle&&r.toggle(),r}return _createClass(n,[{key:"toggle",value:function(){this._isShown()?this.hide():this.show()}},{key:"show",value:function(){var e=this;if(!this._isTransitioning&&!this._isShown()){var t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((function(t){return t!==e._element})).map((function(e){return n.getOrCreateInstance(e,{toggle:!1})}))),!t.length||!t[0]._isTransitioning)if(!R.trigger(this._element,Re).defaultPrevented){var i,r=_createForOfIteratorHelper(t);try{for(r.s();!(i=r.n()).done;){i.value.hide()}}catch(e){r.e(e)}finally{r.f()}var o=this._getDimension();this._element.classList.remove(Qe),this._element.classList.add(Xe),this._element.style[o]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;var a=o[0].toUpperCase()+o.slice(1),s="scroll".concat(a);this._queueCallback((function(){e._isTransitioning=!1,e._element.classList.remove(Xe),e._element.classList.add(Qe,Ve),e._element.style[o]="",R.trigger(e._element,Be)}),this._element,!0),this._element.style[o]="".concat(this._element[s],"px")}}}},{key:"hide",value:function(){var e=this;if(!this._isTransitioning&&this._isShown()&&!R.trigger(this._element,We).defaultPrevented){var t=this._getDimension();this._element.style[t]="".concat(this._element.getBoundingClientRect()[t],"px"),g(this._element),this._element.classList.add(Xe),this._element.classList.remove(Qe,Ve);var n,i=_createForOfIteratorHelper(this._triggerArray);try{for(i.s();!(n=i.n()).done;){var r=n.value,o=G.getElementFromSelector(r);o&&!this._isShown(o)&&this._addAriaAndCollapsedClass([r],!1)}}catch(e){i.e(e)}finally{i.f()}this._isTransitioning=!0;this._element.style[t]="",this._queueCallback((function(){e._isTransitioning=!1,e._element.classList.remove(Xe),e._element.classList.add(Qe),R.trigger(e._element,qe)}),this._element,!0)}}},{key:"_isShown",value:function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(Ve)}},{key:"_configAfterMerge",value:function(e){return e.toggle=Boolean(e.toggle),e.parent=h(e.parent),e}},{key:"_getDimension",value:function(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}},{key:"_initializeChildren",value:function(){if(this._config.parent){var e,t=_createForOfIteratorHelper(this._getFirstLevelChildren(Ue));try{for(t.s();!(e=t.n()).done;){var n=e.value,i=G.getElementFromSelector(n);i&&this._addAriaAndCollapsedClass([n],this._isShown(i))}}catch(e){t.e(e)}finally{t.f()}}}},{key:"_getFirstLevelChildren",value:function(e){var t=G.find(Ye,this._config.parent);return G.find(e,this._config.parent).filter((function(e){return!t.includes(e)}))}},{key:"_addAriaAndCollapsedClass",value:function(e,t){if(e.length){var n,i=_createForOfIteratorHelper(e);try{for(i.s();!(n=i.n()).done;){var r=n.value;r.classList.toggle("collapsed",!t),r.setAttribute("aria-expanded",t)}}catch(e){i.e(e)}finally{i.f()}}}}],[{key:"Default",get:function(){return $e}},{key:"DefaultType",get:function(){return Ge}},{key:"NAME",get:function(){return"collapse"}},{key:"jQueryInterface",value:function(e){var t={};return"string"==typeof e&&/show|hide/.test(e)&&(t.toggle=!1),this.each((function(){var i=n.getOrCreateInstance(this,t);if("string"==typeof e){if(void 0===i[e])throw new TypeError('No method named "'.concat(e,'"'));i[e]()}}))}}]),n}(U);R.on(document,Ke,Ue,(function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();var t,n=_createForOfIteratorHelper(G.getMultipleElementsFromSelector(this));try{for(n.s();!(t=n.n()).done;){var i=t.value;Je.getOrCreateInstance(i,{toggle:!1}).toggle()}}catch(e){n.e(e)}finally{n.f()}})),k(Je);var Ze="dropdown",et=".".concat("bs.dropdown"),tt=".data-api",nt="ArrowUp",it="ArrowDown",rt="hide".concat(et),ot="hidden".concat(et),at="show".concat(et),st="shown".concat(et),lt="click".concat(et).concat(tt),ct="keydown".concat(et).concat(tt),ut="keyup".concat(et).concat(tt),ft="show",ht='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',dt="".concat(ht,".").concat(ft),_t=".dropdown-menu",pt=b()?"top-end":"top-start",vt=b()?"top-start":"top-end",gt=b()?"bottom-end":"bottom-start",mt=b()?"bottom-start":"bottom-end",yt=b()?"left-start":"right-start",bt=b()?"right-start":"left-start",kt={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},wt={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"},Ct=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;return _classCallCheck(this,n),(r=t.call(this,e,i))._popper=null,r._parent=r._element.parentNode,r._menu=G.next(r._element,_t)[0]||G.prev(r._element,_t)[0]||G.findOne(_t,r._parent),r._inNavbar=r._detectNavbar(),r}return _createClass(n,[{key:"toggle",value:function(){return this._isShown()?this.hide():this.show()}},{key:"show",value:function(){if(!_(this._element)&&!this._isShown()){var e={relatedTarget:this._element};if(!R.trigger(this._element,at,e).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav")){var t,n,i=_createForOfIteratorHelper((t=[]).concat.apply(t,_toConsumableArray(document.body.children)));try{for(i.s();!(n=i.n()).done;){var r=n.value;R.on(r,"mouseover",v)}}catch(e){i.e(e)}finally{i.f()}}this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(ft),this._element.classList.add(ft),R.trigger(this._element,st,e)}}}},{key:"hide",value:function(){if(!_(this._element)&&this._isShown()){var e={relatedTarget:this._element};this._completeHide(e)}}},{key:"dispose",value:function(){this._popper&&this._popper.destroy(),_get(_getPrototypeOf(n.prototype),"dispose",this).call(this)}},{key:"update",value:function(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}},{key:"_completeHide",value:function(e){if(!R.trigger(this._element,rt,e).defaultPrevented){if("ontouchstart"in document.documentElement){var t,n,i=_createForOfIteratorHelper((t=[]).concat.apply(t,_toConsumableArray(document.body.children)));try{for(i.s();!(n=i.n()).done;){var r=n.value;R.off(r,"mouseover",v)}}catch(e){i.e(e)}finally{i.f()}}this._popper&&this._popper.destroy(),this._menu.classList.remove(ft),this._element.classList.remove(ft),this._element.setAttribute("aria-expanded","false"),V(this._menu,"popper"),R.trigger(this._element,ot,e)}}},{key:"_getConfig",value:function(e){if("object"===_typeof((e=_get(_getPrototypeOf(n.prototype),"_getConfig",this).call(this,e)).reference)&&!f(e.reference)&&"function"!=typeof e.reference.getBoundingClientRect)throw new TypeError("".concat(Ze.toUpperCase(),': Option "reference" provided type "object" without a required "getBoundingClientRect" method.'));return e}},{key:"_createPopper",value:function(){if(void 0===i)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");var e=this._element;"parent"===this._config.reference?e=this._parent:f(this._config.reference)?e=h(this._config.reference):"object"===_typeof(this._config.reference)&&(e=this._config.reference);var t=this._getPopperConfig();this._popper=i.createPopper(e,this._menu,t)}},{key:"_isShown",value:function(){return this._menu.classList.contains(ft)}},{key:"_getPlacement",value:function(){var e=this._parent;if(e.classList.contains("dropend"))return yt;if(e.classList.contains("dropstart"))return bt;if(e.classList.contains("dropup-center"))return"top";if(e.classList.contains("dropdown-center"))return"bottom";var t="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return e.classList.contains("dropup")?t?vt:pt:t?mt:gt}},{key:"_detectNavbar",value:function(){return null!==this._element.closest(".navbar")}},{key:"_getOffset",value:function(){var e=this,t=this._config.offset;return"string"==typeof t?t.split(",").map((function(e){return Number.parseInt(e,10)})):"function"==typeof t?function(n){return t(n,e._element)}:t}},{key:"_getPopperConfig",value:function(){var e={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(K(this._menu,"popper","static"),e.modifiers=[{name:"applyStyles",enabled:!1}]),_objectSpread(_objectSpread({},e),w(this._config.popperConfig,[e]))}},{key:"_selectMenuItem",value:function(e){var t=e.key,n=e.target,i=G.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((function(e){return d(e)}));i.length&&A(i,n,t===it,!i.includes(n)).focus()}}],[{key:"Default",get:function(){return kt}},{key:"DefaultType",get:function(){return wt}},{key:"NAME",get:function(){return Ze}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError('No method named "'.concat(e,'"'));t[e]()}}))}},{key:"clearMenus",value:function(e){if(2!==e.button&&("keyup"!==e.type||"Tab"===e.key)){var t,i=_createForOfIteratorHelper(G.find(dt));try{for(i.s();!(t=i.n()).done;){var r=t.value,o=n.getInstance(r);if(o&&!1!==o._config.autoClose){var a=e.composedPath(),s=a.includes(o._menu);if(!(a.includes(o._element)||"inside"===o._config.autoClose&&!s||"outside"===o._config.autoClose&&s||o._menu.contains(e.target)&&("keyup"===e.type&&"Tab"===e.key||/input|select|option|textarea|form/i.test(e.target.tagName)))){var l={relatedTarget:o._element};"click"===e.type&&(l.clickEvent=e),o._completeHide(l)}}}}catch(e){i.e(e)}finally{i.f()}}}},{key:"dataApiKeydownHandler",value:function(e){var t=/input|textarea/i.test(e.target.tagName),i="Escape"===e.key,r=[nt,it].includes(e.key);if((r||i)&&(!t||i)){e.preventDefault();var o=this.matches(ht)?this:G.prev(this,ht)[0]||G.next(this,ht)[0]||G.findOne(ht,e.delegateTarget.parentNode),a=n.getOrCreateInstance(o);if(r)return e.stopPropagation(),a.show(),void a._selectMenuItem(e);a._isShown()&&(e.stopPropagation(),a.hide(),o.focus())}}}]),n}(U);R.on(document,ct,ht,Ct.dataApiKeydownHandler),R.on(document,ct,_t,Ct.dataApiKeydownHandler),R.on(document,lt,Ct.clearMenus),R.on(document,ut,Ct.clearMenus),R.on(document,lt,ht,(function(e){e.preventDefault(),Ct.getOrCreateInstance(this).toggle()})),k(Ct);var At="backdrop",Tt="show",Et="mousedown.bs.".concat(At),Ot={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},St={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"},It=function(e){_inherits(n,e);var t=_createSuper(n);function n(e){var i;return _classCallCheck(this,n),(i=t.call(this))._config=i._getConfig(e),i._isAppended=!1,i._element=null,i}return _createClass(n,[{key:"show",value:function(e){if(this._config.isVisible){this._append();var t=this._getElement();this._config.isAnimated&&g(t),t.classList.add(Tt),this._emulateAnimation((function(){w(e)}))}else w(e)}},{key:"hide",value:function(e){var t=this;this._config.isVisible?(this._getElement().classList.remove(Tt),this._emulateAnimation((function(){t.dispose(),w(e)}))):w(e)}},{key:"dispose",value:function(){this._isAppended&&(R.off(this._element,Et),this._element.remove(),this._isAppended=!1)}},{key:"_getElement",value:function(){if(!this._element){var e=document.createElement("div");e.className=this._config.className,this._config.isAnimated&&e.classList.add("fade"),this._element=e}return this._element}},{key:"_configAfterMerge",value:function(e){return e.rootElement=h(e.rootElement),e}},{key:"_append",value:function(){var e=this;if(!this._isAppended){var t=this._getElement();this._config.rootElement.append(t),R.on(t,Et,(function(){w(e._config.clickCallback)})),this._isAppended=!0}}},{key:"_emulateAnimation",value:function(e){C(e,this._getElement(),this._config.isAnimated)}}],[{key:"Default",get:function(){return Ot}},{key:"DefaultType",get:function(){return St}},{key:"NAME",get:function(){return At}}]),n}(Y),Pt=".".concat("bs.focustrap"),Lt="focusin".concat(Pt),jt="keydown.tab".concat(Pt),Nt="backward",Dt={autofocus:!0,trapElement:null},Ft={autofocus:"boolean",trapElement:"element"},Mt=function(e){_inherits(n,e);var t=_createSuper(n);function n(e){var i;return _classCallCheck(this,n),(i=t.call(this))._config=i._getConfig(e),i._isActive=!1,i._lastTabNavDirection=null,i}return _createClass(n,[{key:"activate",value:function(){var e=this;this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),R.off(document,Pt),R.on(document,Lt,(function(t){return e._handleFocusin(t)})),R.on(document,jt,(function(t){return e._handleKeydown(t)})),this._isActive=!0)}},{key:"deactivate",value:function(){this._isActive&&(this._isActive=!1,R.off(document,Pt))}},{key:"_handleFocusin",value:function(e){var t=this._config.trapElement;if(e.target!==document&&e.target!==t&&!t.contains(e.target)){var n=G.focusableChildren(t);0===n.length?t.focus():this._lastTabNavDirection===Nt?n[n.length-1].focus():n[0].focus()}}},{key:"_handleKeydown",value:function(e){"Tab"===e.key&&(this._lastTabNavDirection=e.shiftKey?Nt:"forward")}}],[{key:"Default",get:function(){return Dt}},{key:"DefaultType",get:function(){return Ft}},{key:"NAME",get:function(){return"focustrap"}}]),n}(Y),xt=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Ht=".sticky-top",zt="padding-right",Rt="margin-right",Bt=function(){function e(){_classCallCheck(this,e),this._element=document.body}return _createClass(e,[{key:"getWidth",value:function(){var e=document.documentElement.clientWidth;return Math.abs(window.innerWidth-e)}},{key:"hide",value:function(){var e=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,zt,(function(t){return t+e})),this._setElementAttributes(xt,zt,(function(t){return t+e})),this._setElementAttributes(Ht,Rt,(function(t){return t-e}))}},{key:"reset",value:function(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,zt),this._resetElementAttributes(xt,zt),this._resetElementAttributes(Ht,Rt)}},{key:"isOverflowing",value:function(){return this.getWidth()>0}},{key:"_disableOverFlow",value:function(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}},{key:"_setElementAttributes",value:function(e,t,n){var i=this,r=this.getWidth();this._applyManipulationCallback(e,(function(e){if(!(e!==i._element&&window.innerWidth>e.clientWidth+r)){i._saveInitialAttribute(e,t);var o=window.getComputedStyle(e).getPropertyValue(t);e.style.setProperty(t,"".concat(n(Number.parseFloat(o)),"px"))}}))}},{key:"_saveInitialAttribute",value:function(e,t){var n=e.style.getPropertyValue(t);n&&K(e,t,n)}},{key:"_resetElementAttributes",value:function(e,t){this._applyManipulationCallback(e,(function(e){var n=X(e,t);null!==n?(V(e,t),e.style.setProperty(t,n)):e.style.removeProperty(t)}))}},{key:"_applyManipulationCallback",value:function(e,t){if(f(e))t(e);else{var n,i=_createForOfIteratorHelper(G.find(e,this._element));try{for(i.s();!(n=i.n()).done;){t(n.value)}}catch(e){i.e(e)}finally{i.f()}}}}]),e}(),Wt=".".concat("bs.modal"),qt="hide".concat(Wt),Kt="hidePrevented".concat(Wt),Vt="hidden".concat(Wt),Qt="show".concat(Wt),Xt="shown".concat(Wt),Yt="resize".concat(Wt),Ut="click.dismiss".concat(Wt),$t="mousedown.dismiss".concat(Wt),Gt="keydown.dismiss".concat(Wt),Jt="click".concat(Wt).concat(".data-api"),Zt="modal-open",en="show",tn="modal-static",nn={backdrop:!0,focus:!0,keyboard:!0},rn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"},on=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;return _classCallCheck(this,n),(r=t.call(this,e,i))._dialog=G.findOne(".modal-dialog",r._element),r._backdrop=r._initializeBackDrop(),r._focustrap=r._initializeFocusTrap(),r._isShown=!1,r._isTransitioning=!1,r._scrollBar=new Bt,r._addEventListeners(),r}return _createClass(n,[{key:"toggle",value:function(e){return this._isShown?this.hide():this.show(e)}},{key:"show",value:function(e){var t=this;this._isShown||this._isTransitioning||(R.trigger(this._element,Qt,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(Zt),this._adjustDialog(),this._backdrop.show((function(){return t._showElement(e)}))))}},{key:"hide",value:function(){var e=this;this._isShown&&!this._isTransitioning&&(R.trigger(this._element,qt).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(en),this._queueCallback((function(){return e._hideModal()}),this._element,this._isAnimated())))}},{key:"dispose",value:function(){R.off(window,Wt),R.off(this._dialog,Wt),this._backdrop.dispose(),this._focustrap.deactivate(),_get(_getPrototypeOf(n.prototype),"dispose",this).call(this)}},{key:"handleUpdate",value:function(){this._adjustDialog()}},{key:"_initializeBackDrop",value:function(){return new It({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}},{key:"_initializeFocusTrap",value:function(){return new Mt({trapElement:this._element})}},{key:"_showElement",value:function(e){var t=this;document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;var n=G.findOne(".modal-body",this._dialog);n&&(n.scrollTop=0),g(this._element),this._element.classList.add(en);this._queueCallback((function(){t._config.focus&&t._focustrap.activate(),t._isTransitioning=!1,R.trigger(t._element,Xt,{relatedTarget:e})}),this._dialog,this._isAnimated())}},{key:"_addEventListeners",value:function(){var e=this;R.on(this._element,Gt,(function(t){"Escape"===t.key&&(e._config.keyboard?e.hide():e._triggerBackdropTransition())})),R.on(window,Yt,(function(){e._isShown&&!e._isTransitioning&&e._adjustDialog()})),R.on(this._element,$t,(function(t){R.one(e._element,Ut,(function(n){e._element===t.target&&e._element===n.target&&("static"!==e._config.backdrop?e._config.backdrop&&e.hide():e._triggerBackdropTransition())}))}))}},{key:"_hideModal",value:function(){var e=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((function(){document.body.classList.remove(Zt),e._resetAdjustments(),e._scrollBar.reset(),R.trigger(e._element,Vt)}))}},{key:"_isAnimated",value:function(){return this._element.classList.contains("fade")}},{key:"_triggerBackdropTransition",value:function(){var e=this;if(!R.trigger(this._element,Kt).defaultPrevented){var t=this._element.scrollHeight>document.documentElement.clientHeight,n=this._element.style.overflowY;"hidden"===n||this._element.classList.contains(tn)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(tn),this._queueCallback((function(){e._element.classList.remove(tn),e._queueCallback((function(){e._element.style.overflowY=n}),e._dialog)}),this._dialog),this._element.focus())}}},{key:"_adjustDialog",value:function(){var e=this._element.scrollHeight>document.documentElement.clientHeight,t=this._scrollBar.getWidth(),n=t>0;if(n&&!e){var i=b()?"paddingLeft":"paddingRight";this._element.style[i]="".concat(t,"px")}if(!n&&e){var r=b()?"paddingRight":"paddingLeft";this._element.style[r]="".concat(t,"px")}}},{key:"_resetAdjustments",value:function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}}],[{key:"Default",get:function(){return nn}},{key:"DefaultType",get:function(){return rn}},{key:"NAME",get:function(){return"modal"}},{key:"jQueryInterface",value:function(e,t){return this.each((function(){var i=n.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===i[e])throw new TypeError('No method named "'.concat(e,'"'));i[e](t)}}))}}]),n}(U);R.on(document,Jt,'[data-bs-toggle="modal"]',(function(e){var t=this,n=G.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&e.preventDefault(),R.one(n,Qt,(function(e){e.defaultPrevented||R.one(n,Vt,(function(){d(t)&&t.focus()}))}));var i=G.findOne(".modal.show");i&&on.getInstance(i).hide(),on.getOrCreateInstance(n).toggle(this)})),J(on),k(on);var an=".".concat("bs.offcanvas"),sn=".data-api",ln="load".concat(an).concat(sn),cn="show",un="showing",fn="hiding",hn=".offcanvas.show",dn="show".concat(an),_n="shown".concat(an),pn="hide".concat(an),vn="hidePrevented".concat(an),gn="hidden".concat(an),mn="resize".concat(an),yn="click".concat(an).concat(sn),bn="keydown.dismiss".concat(an),kn={backdrop:!0,keyboard:!0,scroll:!1},wn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"},Cn=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;return _classCallCheck(this,n),(r=t.call(this,e,i))._isShown=!1,r._backdrop=r._initializeBackDrop(),r._focustrap=r._initializeFocusTrap(),r._addEventListeners(),r}return _createClass(n,[{key:"toggle",value:function(e){return this._isShown?this.hide():this.show(e)}},{key:"show",value:function(e){var t=this;if(!this._isShown&&!R.trigger(this._element,dn,{relatedTarget:e}).defaultPrevented){this._isShown=!0,this._backdrop.show(),this._config.scroll||(new Bt).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(un);this._queueCallback((function(){t._config.scroll&&!t._config.backdrop||t._focustrap.activate(),t._element.classList.add(cn),t._element.classList.remove(un),R.trigger(t._element,_n,{relatedTarget:e})}),this._element,!0)}}},{key:"hide",value:function(){var e=this;if(this._isShown&&!R.trigger(this._element,pn).defaultPrevented){this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(fn),this._backdrop.hide();this._queueCallback((function(){e._element.classList.remove(cn,fn),e._element.removeAttribute("aria-modal"),e._element.removeAttribute("role"),e._config.scroll||(new Bt).reset(),R.trigger(e._element,gn)}),this._element,!0)}}},{key:"dispose",value:function(){this._backdrop.dispose(),this._focustrap.deactivate(),_get(_getPrototypeOf(n.prototype),"dispose",this).call(this)}},{key:"_initializeBackDrop",value:function(){var e=this,t=Boolean(this._config.backdrop);return new It({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?function(){"static"!==e._config.backdrop?e.hide():R.trigger(e._element,vn)}:null})}},{key:"_initializeFocusTrap",value:function(){return new Mt({trapElement:this._element})}},{key:"_addEventListeners",value:function(){var e=this;R.on(this._element,bn,(function(t){"Escape"===t.key&&(e._config.keyboard?e.hide():R.trigger(e._element,vn))}))}}],[{key:"Default",get:function(){return kn}},{key:"DefaultType",get:function(){return wn}},{key:"NAME",get:function(){return"offcanvas"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e](this)}}))}}]),n}(U);R.on(document,yn,'[data-bs-toggle="offcanvas"]',(function(e){var t=this,n=G.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),!_(this)){R.one(n,gn,(function(){d(t)&&t.focus()}));var i=G.findOne(hn);i&&i!==n&&Cn.getInstance(i).hide(),Cn.getOrCreateInstance(n).toggle(this)}})),R.on(window,ln,(function(){var e,t=_createForOfIteratorHelper(G.find(hn));try{for(t.s();!(e=t.n()).done;){var n=e.value;Cn.getOrCreateInstance(n).show()}}catch(e){t.e(e)}finally{t.f()}})),R.on(window,mn,(function(){var e,t=_createForOfIteratorHelper(G.find("[aria-modal][class*=show][class*=offcanvas-]"));try{for(t.s();!(e=t.n()).done;){var n=e.value;"fixed"!==getComputedStyle(n).position&&Cn.getOrCreateInstance(n).hide()}}catch(e){t.e(e)}finally{t.f()}})),J(Cn),k(Cn);var An={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Tn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),En=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,On=function(e,t){var n=e.nodeName.toLowerCase();return t.includes(n)?!Tn.has(n)||Boolean(En.test(e.nodeValue)):t.filter((function(e){return e instanceof RegExp})).some((function(e){return e.test(n)}))};var Sn={allowList:An,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},In={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Pn={entry:"(string|element|function|null)",selector:"(string|element)"},Ln=function(e){_inherits(n,e);var t=_createSuper(n);function n(e){var i;return _classCallCheck(this,n),(i=t.call(this))._config=i._getConfig(e),i}return _createClass(n,[{key:"getContent",value:function(){var e=this;return Object.values(this._config.content).map((function(t){return e._resolvePossibleFunction(t)})).filter(Boolean)}},{key:"hasContent",value:function(){return this.getContent().length>0}},{key:"changeContent",value:function(e){return this._checkContent(e),this._config.content=_objectSpread(_objectSpread({},this._config.content),e),this}},{key:"toHtml",value:function(){var e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(var t=0,n=Object.entries(this._config.content);t
',title:"",trigger:"hover focus"},Bn={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"},Wn=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,r){var o;if(_classCallCheck(this,n),void 0===i)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");return(o=t.call(this,e,r))._isEnabled=!0,o._timeout=0,o._isHovered=null,o._activeTrigger={},o._popper=null,o._templateFactory=null,o._newContent=null,o.tip=null,o._setListeners(),o._config.selector||o._fixTitle(),o}return _createClass(n,[{key:"enable",value:function(){this._isEnabled=!0}},{key:"disable",value:function(){this._isEnabled=!1}},{key:"toggleEnabled",value:function(){this._isEnabled=!this._isEnabled}},{key:"toggle",value:function(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}},{key:"dispose",value:function(){clearTimeout(this._timeout),R.off(this._element.closest(Fn),Mn,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),_get(_getPrototypeOf(n.prototype),"dispose",this).call(this)}},{key:"show",value:function(){var e=this;if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(this._isWithContent()&&this._isEnabled){var t=R.trigger(this._element,this.constructor.eventName("show")),n=(p(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(!t.defaultPrevented&&n){this._disposePopper();var i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));var r=this._config.container;if(this._element.ownerDocument.documentElement.contains(this.tip)||(r.append(i),R.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(Dn),"ontouchstart"in document.documentElement){var o,a,s=_createForOfIteratorHelper((o=[]).concat.apply(o,_toConsumableArray(document.body.children)));try{for(s.s();!(a=s.n()).done;){var l=a.value;R.on(l,"mouseover",v)}}catch(e){s.e(e)}finally{s.f()}}this._queueCallback((function(){R.trigger(e._element,e.constructor.eventName("shown")),!1===e._isHovered&&e._leave(),e._isHovered=!1}),this.tip,this._isAnimated())}}}},{key:"hide",value:function(){var e=this;if(this._isShown()&&!R.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(Dn),"ontouchstart"in document.documentElement){var t,n,i=_createForOfIteratorHelper((t=[]).concat.apply(t,_toConsumableArray(document.body.children)));try{for(i.s();!(n=i.n()).done;){var r=n.value;R.off(r,"mouseover",v)}}catch(e){i.e(e)}finally{i.f()}}this._activeTrigger.click=!1,this._activeTrigger[Hn]=!1,this._activeTrigger[xn]=!1,this._isHovered=null;this._queueCallback((function(){e._isWithActiveTrigger()||(e._isHovered||e._disposePopper(),e._element.removeAttribute("aria-describedby"),R.trigger(e._element,e.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}},{key:"update",value:function(){this._popper&&this._popper.update()}},{key:"_isWithContent",value:function(){return Boolean(this._getTitle())}},{key:"_getTipElement",value:function(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}},{key:"_createTipElement",value:function(e){var t=this._getTemplateFactory(e).toHtml();if(!t)return null;t.classList.remove(Nn,Dn),t.classList.add("bs-".concat(this.constructor.NAME,"-auto"));var n=function(e){do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e}(this.constructor.NAME).toString();return t.setAttribute("id",n),this._isAnimated()&&t.classList.add(Nn),t}},{key:"setContent",value:function(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}},{key:"_getTemplateFactory",value:function(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new Ln(_objectSpread(_objectSpread({},this._config),{},{content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)})),this._templateFactory}},{key:"_getContentForTemplate",value:function(){return _defineProperty({},".tooltip-inner",this._getTitle())}},{key:"_getTitle",value:function(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}},{key:"_initializeOnDelegatedTarget",value:function(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}},{key:"_isAnimated",value:function(){return this._config.animation||this.tip&&this.tip.classList.contains(Nn)}},{key:"_isShown",value:function(){return this.tip&&this.tip.classList.contains(Dn)}},{key:"_createPopper",value:function(e){var t=w(this._config.placement,[this,e,this._element]),n=zn[t.toUpperCase()];return i.createPopper(this._element,e,this._getPopperConfig(n))}},{key:"_getOffset",value:function(){var e=this,t=this._config.offset;return"string"==typeof t?t.split(",").map((function(e){return Number.parseInt(e,10)})):"function"==typeof t?function(n){return t(n,e._element)}:t}},{key:"_resolvePossibleFunction",value:function(e){return w(e,[this._element])}},{key:"_getPopperConfig",value:function(e){var t=this,n={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:".".concat(this.constructor.NAME,"-arrow")}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:function(e){t._getTipElement().setAttribute("data-popper-placement",e.state.placement)}}]};return _objectSpread(_objectSpread({},n),w(this._config.popperConfig,[n]))}},{key:"_setListeners",value:function(){var e,t=this,n=_createForOfIteratorHelper(this._config.trigger.split(" "));try{for(n.s();!(e=n.n()).done;){var i=e.value;if("click"===i)R.on(this._element,this.constructor.eventName("click"),this._config.selector,(function(e){t._initializeOnDelegatedTarget(e).toggle()}));else if("manual"!==i){var r=i===xn?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),o=i===xn?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");R.on(this._element,r,this._config.selector,(function(e){var n=t._initializeOnDelegatedTarget(e);n._activeTrigger["focusin"===e.type?Hn:xn]=!0,n._enter()})),R.on(this._element,o,this._config.selector,(function(e){var n=t._initializeOnDelegatedTarget(e);n._activeTrigger["focusout"===e.type?Hn:xn]=n._element.contains(e.relatedTarget),n._leave()}))}}}catch(e){n.e(e)}finally{n.f()}this._hideModalHandler=function(){t._element&&t.hide()},R.on(this._element.closest(Fn),Mn,this._hideModalHandler)}},{key:"_fixTitle",value:function(){var e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}},{key:"_enter",value:function(){var e=this;this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((function(){e._isHovered&&e.show()}),this._config.delay.show))}},{key:"_leave",value:function(){var e=this;this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((function(){e._isHovered||e.hide()}),this._config.delay.hide))}},{key:"_setTimeout",value:function(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}},{key:"_isWithActiveTrigger",value:function(){return Object.values(this._activeTrigger).includes(!0)}},{key:"_getConfig",value:function(e){for(var t=Q(this._element),n=0,i=Object.keys(t);n

',trigger:"click"}),Kn=_objectSpread(_objectSpread({},Wn.DefaultType),{},{content:"(null|string|element|function)"}),Vn=function(e){_inherits(n,e);var t=_createSuper(n);function n(){return _classCallCheck(this,n),t.apply(this,arguments)}return _createClass(n,[{key:"_isWithContent",value:function(){return this._getTitle()||this._getContent()}},{key:"_getContentForTemplate",value:function(){var e;return _defineProperty(e={},".popover-header",this._getTitle()),_defineProperty(e,".popover-body",this._getContent()),e}},{key:"_getContent",value:function(){return this._resolvePossibleFunction(this._config.content)}}],[{key:"Default",get:function(){return qn}},{key:"DefaultType",get:function(){return Kn}},{key:"NAME",get:function(){return"popover"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError('No method named "'.concat(e,'"'));t[e]()}}))}}]),n}(Wn);k(Vn);var Qn=".".concat("bs.scrollspy"),Xn="activate".concat(Qn),Yn="click".concat(Qn),Un="load".concat(Qn).concat(".data-api"),$n="active",Gn="[href]",Jn=".nav-link",Zn="".concat(Jn,", ").concat(".nav-item"," > ").concat(Jn,", ").concat(".list-group-item"),ei={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},ti={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"},ni=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;return _classCallCheck(this,n),(r=t.call(this,e,i))._targetLinks=new Map,r._observableSections=new Map,r._rootElement="visible"===getComputedStyle(r._element).overflowY?null:r._element,r._activeTarget=null,r._observer=null,r._previousScrollData={visibleEntryTop:0,parentScrollTop:0},r.refresh(),r}return _createClass(n,[{key:"refresh",value:function(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();var e,t=_createForOfIteratorHelper(this._observableSections.values());try{for(t.s();!(e=t.n()).done;){var n=e.value;this._observer.observe(n)}}catch(e){t.e(e)}finally{t.f()}}},{key:"dispose",value:function(){this._observer.disconnect(),_get(_getPrototypeOf(n.prototype),"dispose",this).call(this)}},{key:"_configAfterMerge",value:function(e){return e.target=h(e.target)||document.body,e.rootMargin=e.offset?"".concat(e.offset,"px 0px -30%"):e.rootMargin,"string"==typeof e.threshold&&(e.threshold=e.threshold.split(",").map((function(e){return Number.parseFloat(e)}))),e}},{key:"_maybeEnableSmoothScroll",value:function(){var e=this;this._config.smoothScroll&&(R.off(this._config.target,Yn),R.on(this._config.target,Yn,Gn,(function(t){var n=e._observableSections.get(t.target.hash);if(n){t.preventDefault();var i=e._rootElement||window,r=n.offsetTop-e._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:r,behavior:"smooth"});i.scrollTop=r}})))}},{key:"_getNewObserver",value:function(){var e=this,t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((function(t){return e._observerCallback(t)}),t)}},{key:"_observerCallback",value:function(e){var t=this,n=function(e){return t._targetLinks.get("#".concat(e.target.id))},i=function(e){t._previousScrollData.visibleEntryTop=e.target.offsetTop,t._process(n(e))},r=(this._rootElement||document.documentElement).scrollTop,o=r>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=r;var a,s=_createForOfIteratorHelper(e);try{for(s.s();!(a=s.n()).done;){var l=a.value;if(l.isIntersecting){var c=l.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(o&&c){if(i(l),!r)return}else o||c||i(l)}else this._activeTarget=null,this._clearActiveClass(n(l))}}catch(e){s.e(e)}finally{s.f()}}},{key:"_initializeTargetsAndObservables",value:function(){this._targetLinks=new Map,this._observableSections=new Map;var e,t=_createForOfIteratorHelper(G.find(Gn,this._config.target));try{for(t.s();!(e=t.n()).done;){var n=e.value;if(n.hash&&!_(n)){var i=G.findOne(decodeURI(n.hash),this._element);d(i)&&(this._targetLinks.set(decodeURI(n.hash),n),this._observableSections.set(n.hash,i))}}}catch(e){t.e(e)}finally{t.f()}}},{key:"_process",value:function(e){this._activeTarget!==e&&(this._clearActiveClass(this._config.target),this._activeTarget=e,e.classList.add($n),this._activateParents(e),R.trigger(this._element,Xn,{relatedTarget:e}))}},{key:"_activateParents",value:function(e){if(e.classList.contains("dropdown-item"))G.findOne(".dropdown-toggle",e.closest(".dropdown")).classList.add($n);else{var t,n=_createForOfIteratorHelper(G.parents(e,".nav, .list-group"));try{for(n.s();!(t=n.n()).done;){var i,r=t.value,o=_createForOfIteratorHelper(G.prev(r,Zn));try{for(o.s();!(i=o.n()).done;){i.value.classList.add($n)}}catch(e){o.e(e)}finally{o.f()}}}catch(e){n.e(e)}finally{n.f()}}}},{key:"_clearActiveClass",value:function(e){e.classList.remove($n);var t,n=_createForOfIteratorHelper(G.find("".concat(Gn,".").concat($n),e));try{for(n.s();!(t=n.n()).done;){t.value.classList.remove($n)}}catch(e){n.e(e)}finally{n.f()}}}],[{key:"Default",get:function(){return ei}},{key:"DefaultType",get:function(){return ti}},{key:"NAME",get:function(){return"scrollspy"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e]()}}))}}]),n}(U);R.on(window,Un,(function(){var e,t=_createForOfIteratorHelper(G.find('[data-bs-spy="scroll"]'));try{for(t.s();!(e=t.n()).done;){var n=e.value;ni.getOrCreateInstance(n)}}catch(e){t.e(e)}finally{t.f()}})),k(ni);var ii=".".concat("bs.tab"),ri="hide".concat(ii),oi="hidden".concat(ii),ai="show".concat(ii),si="shown".concat(ii),li="click".concat(ii),ci="keydown".concat(ii),ui="load".concat(ii),fi="ArrowLeft",hi="ArrowRight",di="ArrowUp",_i="ArrowDown",pi="Home",vi="End",gi="active",mi="fade",yi="show",bi=".dropdown-toggle",ki=":not(".concat(bi,")"),wi=".nav-link".concat(ki,", .list-group-item").concat(ki,', [role="tab"]').concat(ki),Ci='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Ai="".concat(wi,", ").concat(Ci),Ti=".".concat(gi,'[data-bs-toggle="tab"], .').concat(gi,'[data-bs-toggle="pill"], .').concat(gi,'[data-bs-toggle="list"]'),Ei=function(e){_inherits(n,e);var t=_createSuper(n);function n(e){var i;return _classCallCheck(this,n),(i=t.call(this,e))._parent=i._element.closest('.list-group, .nav, [role="tablist"]'),i._parent?(i._setInitialAttributes(i._parent,i._getChildren()),R.on(i._element,ci,(function(e){return i._keydown(e)})),i):_possibleConstructorReturn(i)}return _createClass(n,[{key:"show",value:function(){var e=this._element;if(!this._elemIsActive(e)){var t=this._getActiveElem(),n=t?R.trigger(t,ri,{relatedTarget:e}):null;R.trigger(e,ai,{relatedTarget:t}).defaultPrevented||n&&n.defaultPrevented||(this._deactivate(t,e),this._activate(e,t))}}},{key:"_activate",value:function(e,t){var n=this;if(e){e.classList.add(gi),this._activate(G.getElementFromSelector(e));this._queueCallback((function(){"tab"===e.getAttribute("role")?(e.removeAttribute("tabindex"),e.setAttribute("aria-selected",!0),n._toggleDropDown(e,!0),R.trigger(e,si,{relatedTarget:t})):e.classList.add(yi)}),e,e.classList.contains(mi))}}},{key:"_deactivate",value:function(e,t){var n=this;if(e){e.classList.remove(gi),e.blur(),this._deactivate(G.getElementFromSelector(e));this._queueCallback((function(){"tab"===e.getAttribute("role")?(e.setAttribute("aria-selected",!1),e.setAttribute("tabindex","-1"),n._toggleDropDown(e,!1),R.trigger(e,oi,{relatedTarget:t})):e.classList.remove(yi)}),e,e.classList.contains(mi))}}},{key:"_keydown",value:function(e){if([fi,hi,di,_i,pi,vi].includes(e.key)){e.stopPropagation(),e.preventDefault();var t,i=this._getChildren().filter((function(e){return!_(e)}));if([pi,vi].includes(e.key))t=i[e.key===pi?0:i.length-1];else{var r=[hi,_i].includes(e.key);t=A(i,e.target,r,!0)}t&&(t.focus({preventScroll:!0}),n.getOrCreateInstance(t).show())}}},{key:"_getChildren",value:function(){return G.find(Ai,this._parent)}},{key:"_getActiveElem",value:function(){var e=this;return this._getChildren().find((function(t){return e._elemIsActive(t)}))||null}},{key:"_setInitialAttributes",value:function(e,t){this._setAttributeIfNotExists(e,"role","tablist");var n,i=_createForOfIteratorHelper(t);try{for(i.s();!(n=i.n()).done;){var r=n.value;this._setInitialAttributesOnChild(r)}}catch(e){i.e(e)}finally{i.f()}}},{key:"_setInitialAttributesOnChild",value:function(e){e=this._getInnerElement(e);var t=this._elemIsActive(e),n=this._getOuterElement(e);e.setAttribute("aria-selected",t),n!==e&&this._setAttributeIfNotExists(n,"role","presentation"),t||e.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(e,"role","tab"),this._setInitialAttributesOnTargetPanel(e)}},{key:"_setInitialAttributesOnTargetPanel",value:function(e){var t=G.getElementFromSelector(e);t&&(this._setAttributeIfNotExists(t,"role","tabpanel"),e.id&&this._setAttributeIfNotExists(t,"aria-labelledby","".concat(e.id)))}},{key:"_toggleDropDown",value:function(e,t){var n=this._getOuterElement(e);if(n.classList.contains("dropdown")){var i=function(e,i){var r=G.findOne(e,n);r&&r.classList.toggle(i,t)};i(bi,gi),i(".dropdown-menu",yi),n.setAttribute("aria-expanded",t)}}},{key:"_setAttributeIfNotExists",value:function(e,t,n){e.hasAttribute(t)||e.setAttribute(t,n)}},{key:"_elemIsActive",value:function(e){return e.classList.contains(gi)}},{key:"_getInnerElement",value:function(e){return e.matches(Ai)?e:G.findOne(Ai,e)}},{key:"_getOuterElement",value:function(e){return e.closest(".nav-item, .list-group-item")||e}}],[{key:"NAME",get:function(){return"tab"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e]()}}))}}]),n}(U);R.on(document,li,Ci,(function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault(),_(this)||Ei.getOrCreateInstance(this).show()})),R.on(window,ui,(function(){var e,t=_createForOfIteratorHelper(G.find(Ti));try{for(t.s();!(e=t.n()).done;){var n=e.value;Ei.getOrCreateInstance(n)}}catch(e){t.e(e)}finally{t.f()}})),k(Ei);var Oi=".".concat("bs.toast"),Si="mouseover".concat(Oi),Ii="mouseout".concat(Oi),Pi="focusin".concat(Oi),Li="focusout".concat(Oi),ji="hide".concat(Oi),Ni="hidden".concat(Oi),Di="show".concat(Oi),Fi="shown".concat(Oi),Mi="hide",xi="show",Hi="showing",zi={animation:"boolean",autohide:"boolean",delay:"number"},Ri={animation:!0,autohide:!0,delay:5e3},Bi=function(e){_inherits(n,e);var t=_createSuper(n);function n(e,i){var r;return _classCallCheck(this,n),(r=t.call(this,e,i))._timeout=null,r._hasMouseInteraction=!1,r._hasKeyboardInteraction=!1,r._setListeners(),r}return _createClass(n,[{key:"show",value:function(){var e=this;if(!R.trigger(this._element,Di).defaultPrevented){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");this._element.classList.remove(Mi),g(this._element),this._element.classList.add(xi,Hi),this._queueCallback((function(){e._element.classList.remove(Hi),R.trigger(e._element,Fi),e._maybeScheduleHide()}),this._element,this._config.animation)}}},{key:"hide",value:function(){var e=this;if(this.isShown()&&!R.trigger(this._element,ji).defaultPrevented){this._element.classList.add(Hi),this._queueCallback((function(){e._element.classList.add(Mi),e._element.classList.remove(Hi,xi),R.trigger(e._element,Ni)}),this._element,this._config.animation)}}},{key:"dispose",value:function(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(xi),_get(_getPrototypeOf(n.prototype),"dispose",this).call(this)}},{key:"isShown",value:function(){return this._element.classList.contains(xi)}},{key:"_maybeScheduleHide",value:function(){var e=this;this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((function(){e.hide()}),this._config.delay)))}},{key:"_onInteraction",value:function(e,t){switch(e.type){case"mouseover":case"mouseout":this._hasMouseInteraction=t;break;case"focusin":case"focusout":this._hasKeyboardInteraction=t}if(t)this._clearTimeout();else{var n=e.relatedTarget;this._element===n||this._element.contains(n)||this._maybeScheduleHide()}}},{key:"_setListeners",value:function(){var e=this;R.on(this._element,Si,(function(t){return e._onInteraction(t,!0)})),R.on(this._element,Ii,(function(t){return e._onInteraction(t,!1)})),R.on(this._element,Pi,(function(t){return e._onInteraction(t,!0)})),R.on(this._element,Li,(function(t){return e._onInteraction(t,!1)}))}},{key:"_clearTimeout",value:function(){clearTimeout(this._timeout),this._timeout=null}}],[{key:"Default",get:function(){return Ri}},{key:"DefaultType",get:function(){return zi}},{key:"NAME",get:function(){return"toast"}},{key:"jQueryInterface",value:function(e){return this.each((function(){var t=n.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError('No method named "'.concat(e,'"'));t[e](this)}}))}}]),n}(U);return J(Bi),k(Bi),{Alert:ne,Button:ae,Carousel:He,Collapse:Je,Dropdown:Ct,Modal:on,Offcanvas:Cn,Popover:Vn,ScrollSpy:ni,Tab:Ei,Toast:Bi,Tooltip:Wn}})); diff --git a/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/trumbowyg-plugins.js b/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/trumbowyg-plugins.js index c3c67e078c2..5946ca29418 100644 --- a/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/trumbowyg-plugins.js +++ b/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/trumbowyg-plugins.js @@ -3,6 +3,103 @@ ** Any changes made directly to this file will be overwritten next time its asset group is processed by Gulp. */ +/* =========================================================== + * trumbowyg.allowTagsFromPaste.js v1.0.2 + * It cleans tags from pasted text, whilst allowing several specified tags + * http://alex-d.github.com/Trumbowyg + * =========================================================== + * Author : Fathi Anshory (0x00000F5C) + * Twitter : @fscchannl + * Notes: + * - removeformatPasted must be set to FALSE since it was applied prior to pasteHandlers, or else it will be useless + * - It is most advisable to use along with the cleanpaste plugin, or else you'd end up with dirty markup + */ + +(function ($) { + 'use strict'; + + var defaultOptions = { + // When empty, all tags are allowed making this plugin useless + // If you want to remove all tags, use removeformatPasted core option instead + allowedTags: [], + // List of tags which can be allowed + removableTags: ['a', 'abbr', 'address', 'b', 'bdi', 'bdo', 'blockquote', 'br', 'cite', 'code', 'del', 'dfn', 'details', 'em', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hr', 'i', 'ins', 'kbd', 'mark', 'meter', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'small', 'span', 'strong', 'sub', 'summary', 'sup', 'time', 'u', 'var', 'wbr', 'img', 'map', 'area', 'canvas', 'figcaption', 'figure', 'picture', 'audio', 'source', 'track', 'video', 'ul', 'ol', 'li', 'dl', 'dt', 'dd', 'table', 'caption', 'th', 'tr', 'td', 'thead', 'tbody', 'tfoot', 'col', 'colgroup', 'style', 'div', 'p', 'form', 'input', 'textarea', 'button', 'select', 'optgroup', 'option', 'label', 'fieldset', 'legend', 'datalist', 'keygen', 'output', 'iframe', 'link', 'nav', 'header', 'hgroup', 'footer', 'main', 'section', 'article', 'aside', 'dialog', 'script', 'noscript', 'embed', 'object', 'param'] + }; + $.extend(true, $.trumbowyg, { + plugins: { + allowTagsFromPaste: { + init: function init(trumbowyg) { + if (!trumbowyg.o.plugins.allowTagsFromPaste) { + return; + } + + // Force disable remove format pasted + trumbowyg.o.removeformatPasted = false; + var allowedTags = trumbowyg.o.plugins.allowTagsFromPaste.allowedTags || defaultOptions.allowedTags; + var removableTags = trumbowyg.o.plugins.allowTagsFromPaste.removableTags || defaultOptions.removableTags; + if (allowedTags.length === 0) { + return; + } + + // Get list of tags to remove + var tagsToRemove = $(removableTags).not(allowedTags).get(); + trumbowyg.pasteHandlers.push(function () { + setTimeout(function () { + var processNodes = trumbowyg.$ed.html(); + $.each(tagsToRemove, function (iterator, tagName) { + processNodes = processNodes.replace(new RegExp('<\\/?' + tagName + '(\\s[^>]*)?>', 'gi'), ''); + }); + trumbowyg.$ed.html(processNodes); + }, 0); + }); + } + } + } + }); +})(jQuery); +/* =========================================================== + * trumbowyg.allowTagsFromPaste.js v1.0.2 + * It cleans tags from pasted text, whilst allowing several specified tags + * http://alex-d.github.com/Trumbowyg + * =========================================================== + * Author : Fathi Anshory (0x00000F5C) + * Twitter : @fscchannl + * Notes: + * - removeformatPasted must be set to FALSE since it was applied prior to pasteHandlers, or else it will be useless + * - It is most advisable to use along with the cleanpaste plugin, or else you'd end up with dirty markup + */ +!function (e) { + "use strict"; + + var a = { + allowedTags: [], + removableTags: ["a", "abbr", "address", "b", "bdi", "bdo", "blockquote", "br", "cite", "code", "del", "dfn", "details", "em", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "i", "ins", "kbd", "mark", "meter", "pre", "progress", "q", "rp", "rt", "ruby", "s", "samp", "small", "span", "strong", "sub", "summary", "sup", "time", "u", "var", "wbr", "img", "map", "area", "canvas", "figcaption", "figure", "picture", "audio", "source", "track", "video", "ul", "ol", "li", "dl", "dt", "dd", "table", "caption", "th", "tr", "td", "thead", "tbody", "tfoot", "col", "colgroup", "style", "div", "p", "form", "input", "textarea", "button", "select", "optgroup", "option", "label", "fieldset", "legend", "datalist", "keygen", "output", "iframe", "link", "nav", "header", "hgroup", "footer", "main", "section", "article", "aside", "dialog", "script", "noscript", "embed", "object", "param"] + }; + e.extend(!0, e.trumbowyg, { + plugins: { + allowTagsFromPaste: { + init: function init(t) { + if (t.o.plugins.allowTagsFromPaste) { + t.o.removeformatPasted = !1; + var o = t.o.plugins.allowTagsFromPaste.allowedTags || a.allowedTags, + r = t.o.plugins.allowTagsFromPaste.removableTags || a.removableTags; + if (0 !== o.length) { + var s = e(r).not(o).get(); + t.pasteHandlers.push(function () { + setTimeout(function () { + var a = t.$ed.html(); + e.each(s, function (e, t) { + a = a.replace(new RegExp("<\\/?" + t + "(\\s[^>]*)?>", "gi"), ""); + }), t.$ed.html(a); + }, 0); + }); + } + } + } + } + } + }); +}(jQuery); /* =========================================================== * trumbowyg.base64.js v1.0 * Base64 plugin for Trumbowyg @@ -328,103 +425,6 @@ } }); }(jQuery); -/* =========================================================== - * trumbowyg.allowTagsFromPaste.js v1.0.2 - * It cleans tags from pasted text, whilst allowing several specified tags - * http://alex-d.github.com/Trumbowyg - * =========================================================== - * Author : Fathi Anshory (0x00000F5C) - * Twitter : @fscchannl - * Notes: - * - removeformatPasted must be set to FALSE since it was applied prior to pasteHandlers, or else it will be useless - * - It is most advisable to use along with the cleanpaste plugin, or else you'd end up with dirty markup - */ - -(function ($) { - 'use strict'; - - var defaultOptions = { - // When empty, all tags are allowed making this plugin useless - // If you want to remove all tags, use removeformatPasted core option instead - allowedTags: [], - // List of tags which can be allowed - removableTags: ['a', 'abbr', 'address', 'b', 'bdi', 'bdo', 'blockquote', 'br', 'cite', 'code', 'del', 'dfn', 'details', 'em', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hr', 'i', 'ins', 'kbd', 'mark', 'meter', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'small', 'span', 'strong', 'sub', 'summary', 'sup', 'time', 'u', 'var', 'wbr', 'img', 'map', 'area', 'canvas', 'figcaption', 'figure', 'picture', 'audio', 'source', 'track', 'video', 'ul', 'ol', 'li', 'dl', 'dt', 'dd', 'table', 'caption', 'th', 'tr', 'td', 'thead', 'tbody', 'tfoot', 'col', 'colgroup', 'style', 'div', 'p', 'form', 'input', 'textarea', 'button', 'select', 'optgroup', 'option', 'label', 'fieldset', 'legend', 'datalist', 'keygen', 'output', 'iframe', 'link', 'nav', 'header', 'hgroup', 'footer', 'main', 'section', 'article', 'aside', 'dialog', 'script', 'noscript', 'embed', 'object', 'param'] - }; - $.extend(true, $.trumbowyg, { - plugins: { - allowTagsFromPaste: { - init: function init(trumbowyg) { - if (!trumbowyg.o.plugins.allowTagsFromPaste) { - return; - } - - // Force disable remove format pasted - trumbowyg.o.removeformatPasted = false; - var allowedTags = trumbowyg.o.plugins.allowTagsFromPaste.allowedTags || defaultOptions.allowedTags; - var removableTags = trumbowyg.o.plugins.allowTagsFromPaste.removableTags || defaultOptions.removableTags; - if (allowedTags.length === 0) { - return; - } - - // Get list of tags to remove - var tagsToRemove = $(removableTags).not(allowedTags).get(); - trumbowyg.pasteHandlers.push(function () { - setTimeout(function () { - var processNodes = trumbowyg.$ed.html(); - $.each(tagsToRemove, function (iterator, tagName) { - processNodes = processNodes.replace(new RegExp('<\\/?' + tagName + '(\\s[^>]*)?>', 'gi'), ''); - }); - trumbowyg.$ed.html(processNodes); - }, 0); - }); - } - } - } - }); -})(jQuery); -/* =========================================================== - * trumbowyg.allowTagsFromPaste.js v1.0.2 - * It cleans tags from pasted text, whilst allowing several specified tags - * http://alex-d.github.com/Trumbowyg - * =========================================================== - * Author : Fathi Anshory (0x00000F5C) - * Twitter : @fscchannl - * Notes: - * - removeformatPasted must be set to FALSE since it was applied prior to pasteHandlers, or else it will be useless - * - It is most advisable to use along with the cleanpaste plugin, or else you'd end up with dirty markup - */ -!function (e) { - "use strict"; - - var a = { - allowedTags: [], - removableTags: ["a", "abbr", "address", "b", "bdi", "bdo", "blockquote", "br", "cite", "code", "del", "dfn", "details", "em", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "i", "ins", "kbd", "mark", "meter", "pre", "progress", "q", "rp", "rt", "ruby", "s", "samp", "small", "span", "strong", "sub", "summary", "sup", "time", "u", "var", "wbr", "img", "map", "area", "canvas", "figcaption", "figure", "picture", "audio", "source", "track", "video", "ul", "ol", "li", "dl", "dt", "dd", "table", "caption", "th", "tr", "td", "thead", "tbody", "tfoot", "col", "colgroup", "style", "div", "p", "form", "input", "textarea", "button", "select", "optgroup", "option", "label", "fieldset", "legend", "datalist", "keygen", "output", "iframe", "link", "nav", "header", "hgroup", "footer", "main", "section", "article", "aside", "dialog", "script", "noscript", "embed", "object", "param"] - }; - e.extend(!0, e.trumbowyg, { - plugins: { - allowTagsFromPaste: { - init: function init(t) { - if (t.o.plugins.allowTagsFromPaste) { - t.o.removeformatPasted = !1; - var o = t.o.plugins.allowTagsFromPaste.allowedTags || a.allowedTags, - r = t.o.plugins.allowTagsFromPaste.removableTags || a.removableTags; - if (0 !== o.length) { - var s = e(r).not(o).get(); - t.pasteHandlers.push(function () { - setTimeout(function () { - var a = t.$ed.html(); - e.each(s, function (e, t) { - a = a.replace(new RegExp("<\\/?" + t + "(\\s[^>]*)?>", "gi"), ""); - }), t.$ed.html(a); - }, 0); - }); - } - } - } - } - } - }); -}(jQuery); /* =========================================================== * trumbowyg.cleanpaste.js v1.0 * Font Clean paste plugin for Trumbowyg @@ -1105,483 +1105,223 @@ } }); }(jQuery); +/* =========================================================== + * trumbowyg.emoji.js v0.1 + * Emoji picker plugin for Trumbowyg + * http://alex-d.github.com/Trumbowyg + * =========================================================== + * Author : Nicolas Pion + * Twitter : @nicolas_pion + */ + (function ($) { 'use strict'; + var defaultOptions = { + emojiList: ['⁉', '™', 'ℹ', '↔', '↕', '↖', '↗', '↘', '↙', '⌨', '☀', '☁', '☂', '☃', '☄', '☑', '☔', '☕', '☘', '☠', '☢', '☣', '☦', '☸', '☹', '♀', '♂', '♈', '♉', '♐', '♑', '♒', '♓', '♠', '♣', '♥', '♦', '♨', '⚒', '⚓', '⚔', '⚕', '⚖', '⚗', '⚙', '✂', '✅', '✈', '✉', '✒', '✔', '✖', '✡', '✨', '✳', '✴', '❄', '❇', '❓', '❔', '❕', '❗', '❣', '❤', '➕', '➖', '➗', '⤴', '⤵', '〰', '㊗', '㊙', '😀', '😃', '😄', '😁', '😆', '😅', '😂', '🤣', '☺', '😊', '😇', '🙂', '🙃', '😉', '😌', '🥲', '😍', '🥰', '😘', '😗', '😙', '😚', '😋', '😛', '😝', '😜', '🤪', '🤨', '🧐', '🤓', '😎', '🤩', '🥳', '😏', '😒', '😞', '😔', '😟', '😕', '🙁', '😣', '😖', '😫', '😩', '🥺', '😢', '😭', '😤', '😮', '😠', '😡', '🤬', '🤯', '😳', '😶', '🥵', '🥶', '😱', '😨', '😰', '😥', '😓', '🤗', '🤔', '🤭', '🥱', '🤫', '🤥', '😐', '😑', '😬', '🙄', '😯', '😦', '😧', '😲', '😴', '🤤', '😪', '😵', '🤐', '🥴', '🤢', '🤮', '🤧', '😷', '🤒', '🤕', '🤑', '🤠', '🥸', '😈', '👿', '👹', '👺', '🤡', '💩', '👻', '💀', '👽', '👾', '🤖', '🎃', '😺', '😸', '😹', '😻', '😼', '😽', '🙀', '😿', '😾', '🤲', '👐', '🙌', '👏', '🤝', '👍', '👎', '👊', '✊', '🤛', '🤜', '🤞', '✌', '🤟', '🤘', '👌', '🤏', '🤌', '👈', '👉', '👆', '👇', '☝', '✋', '🤚', '🖐', '🖖', '👋', '🤙', '💪', '🦾', '🖕', '✍', '🙏', '🦶', '🦵', '🦿', '💄', '💋', '👄', '🦷', '👅', '👂', '🦻', '👃', '👣', '👁', '👀', '🧠', '🫀', '🫁', '🦴', '🗣', '👤', '👥', '🫂', '👶', '👧', '🧒', '👦', '👩', '🧑', '👨', '👱', '🧔', '👵', '🧓', '👴', '👲', '👳', '🧕', '👮', '👷', '💂', '🕵', '👰', '🤵', '👸', '🤴', '🦸', '🦹', '🥷', '🤶', '🎅', '🧙', '🧝', '🧛', '🧟', '🧞', '🧜', '🧚', '👼', '🤰', '🤱', '🙇', '💁', '🙅', '🙆', '🙋', '🧏', '🤦', '🤷', '🙎', '🙍', '💇', '💆', '🧖', '💅', '🤳', '💃', '🕺', '👯', '🕴', '🚶', '🧎', '🏃', '🧍', '👫', '👭', '👬', '💑', '💏', '👪', '🧶', '🧵', '🧥', '🥼', '🦺', '👚', '👕', '👖', '🩲', '🩳', '👔', '👗', '👙', '🩱', '👘', '🥻', '🥿', '👠', '👡', '👢', '👞', '👟', '🥾', '🩴', '🧦', '🧤', '🧣', '🎩', '🧢', '👒', '🎓', '⛑', '🪖', '👑', '💍', '👝', '👛', '👜', '💼', '🎒', '🧳', '👓', '🕶', '🥽', '🌂', '🦱', '🦰', '🦳', '🦲', '🐶', '🐱', '🐭', '🐹', '🐰', '🦊', '🐻', '🐼', '🐨', '🐯', '🦁', '🐮', '🐷', '🐽', '🐸', '🐵', '🙈', '🙉', '🙊', '🐒', '🐔', '🐧', '🐦', '🐤', '🐣', '🐥', '🦆', '🦤', '🦅', '🦉', '🦇', '🐺', '🐗', '🐴', '🦄', '🐝', '🐛', '🦋', '🐌', '🪱', '🐞', '🐜', '🪰', '🦟', '🪳', '🪲', '🦗', '🕷', '🕸', '🦂', '🐢', '🐍', '🦎', '🦖', '🦕', '🐙', '🦑', '🦐', '🦞', '🦀', '🐡', '🐠', '🐟', '🦭', '🐬', '🐳', '🐋', '🦈', '🐊', '🐅', '🐆', '🦓', '🦍', '🦧', '🐘', '🦣', '🦬', '🦛', '🦏', '🐪', '🐫', '🦒', '🦘', '🐃', '🐂', '🐄', '🐎', '🐖', '🐏', '🐑', '🦙', '🐐', '🦌', '🐕', '🐩', '🦮', '🐈', '🐓', '🦃', '🦚', '🦜', '🦢', '🦩', '🕊', '🐇', '🦝', '🦨', '🦡', '🦫', '🦦', '🦥', '🐁', '🐀', '🐿', '🦔', '🐾', '🐉', '🐲', '🌵', '🎄', '🌲', '🌳', '🌴', '🌱', '🌿', '🍀', '🎍', '🎋', '🍃', '🍂', '🍁', '🪶', '🍄', '🐚', '🪨', '🪵', '🌾', '🪴', '💐', '🌷', '🌹', '🥀', '🌺', '🌸', '🌼', '🌻', '🌞', '🌝', '🌛', '🌜', '🌚', '🌕', '🌖', '🌗', '🌘', '🌑', '🌒', '🌓', '🌔', '🌙', '🌎', '🌍', '🌏', '🪐', '💫', '⭐', '🌟', '⚡', '💥', '🔥', '🌪', '🌈', '🌤', '⛅', '🌥', '🌦', '🌧', '⛈', '🌩', '🌨', '⛄', '🌬', '💨', '💧', '💦', '🌊', '🌫', '🍏', '🍎', '🍐', '🍊', '🍋', '🍌', '🍉', '🍇', '🫐', '🍓', '🍈', '🍒', '🍑', '🥭', '🍍', '🥥', '🥝', '🍅', '🍆', '🥑', '🫒', '🥦', '🥬', '🫑', '🥒', '🌶', '🌽', '🥕', '🧄', '🧅', '🥔', '🍠', '🥐', '🥯', '🍞', '🥖', '🫓', '🥨', '🧀', '🥚', '🍳', '🧈', '🥞', '🧇', '🥓', '🥩', '🍗', '🍖', '🌭', '🍔', '🍟', '🍕', '🥪', '🥙', '🧆', '🌮', '🌯', '🫔', '🥗', '🥘', '🫕', '🥫', '🍝', '🍜', '🍲', '🍛', '🍣', '🍱', '🥟', '🦪', '🍤', '🍙', '🍚', '🍘', '🍥', '🥠', '🥮', '🍢', '🍡', '🍧', '🍨', '🍦', '🥧', '🧁', '🍰', '🎂', '🍮', '🍭', '🍬', '🍫', '🍿', '🍩', '🍪', '🌰', '🥜', '🍯', '🥛', '🍼', '🍵', '🫖', '🧉', '🧋', '🧃', '🥤', '🍶', '🍺', '🍻', '🥂', '🍷', '🥃', '🍸', '🍹', '🍾', '🧊', '🥄', '🍴', '🍽', '🥣', '🥡', '🥢', '🧂', '⚽', '🏀', '🏈', '⚾', '🥎', '🎾', '🏐', '🏉', '🥏', '🪃', '🎱', '🪀', '🏓', '🏸', '🏒', '🏑', '🥍', '🏏', '🥅', '⛳', '🪁', '🏹', '🎣', '🤿', '🥊', '🥋', '🎽', '🛹', '🛼', '🛷', '⛸', '🥌', '🎿', '⛷', '🏂', '🪂', '🏋', '🤼', '🤸', '⛹', '🤺', '🤾', '🏌', '🏇', '🧘', '🏄', '🏊', '🤽', '🚣', '🧗', '🚵', '🚴', '🏆', '🥇', '🥈', '🥉', '🏅', '🎖', '🏵', '🎗', '🎫', '🎟', '🎪', '🤹', '🎭', '🩰', '🎨', '🎬', '🎤', '🎧', '🎼', '🎹', '🥁', '🪘', '🎷', '🎺', '🎸', '🪕', '🎻', '🪗', '🎲', '♟', '🎯', '🎳', '🎮', '🎰', '🧩', '🚗', '🚕', '🚙', '🛻', '🚌', '🚎', '🏎', '🚓', '🚑', '🚒', '🚐', '🚚', '🚛', '🚜', '🦯', '🦽', '🦼', '🛴', '🚲', '🛵', '🏍', '🛺', '🚨', '🚔', '🚍', '🚘', '🚖', '🚡', '🚠', '🚟', '🚃', '🚋', '🚞', '🚝', '🚄', '🚅', '🚈', '🚂', '🚆', '🚇', '🚊', '🚉', '🛫', '🛬', '🛩', '💺', '🛰', '🚀', '🛸', '🚁', '🛶', '⛵', '🚤', '🛥', '🛳', '⛴', '🚢', '⛽', '🚧', '🚦', '🚥', '🚏', '🗺', '🗿', '🗽', '🗼', '🏰', '🏯', '🏟', '🎡', '🎢', '🎠', '⛲', '⛱', '🏖', '🏝', '🏜', '🌋', '⛰', '🏔', '🗻', '🏕', '⛺', '🏠', '🏡', '🏘', '🏚', '🛖', '🏗', '🏭', '🏢', '🏬', '🏣', '🏤', '🏥', '🏦', '🏨', '🏪', '🏫', '🏩', '💒', '🏛', '⛪', '🕌', '🕍', '🛕', '🕋', '⛩', '🛤', '🛣', '🗾', '🎑', '🏞', '🌅', '🌄', '🌠', '🎇', '🎆', '🌇', '🌆', '🏙', '🌃', '🌌', '🌉', '🌁', '⌚', '📱', '📲', '💻', '🖥', '🖨', '🖱', '🖲', '🕹', '🗜', '💽', '💾', '💿', '📀', '📼', '📷', '📸', '📹', '🎥', '📽', '🎞', '📞', '☎', '📟', '📠', '📺', '📻', '🎙', '🎚', '🎛', '🧭', '⏱', '⏲', '⏰', '🕰', '⌛', '⏳', '📡', '🔋', '🔌', '💡', '🔦', '🕯', '🪔', '🧯', '🛢', '💸', '💵', '💴', '💶', '💷', '🪙', '💰', '💳', '💎', '🪜', '🧰', '🪛', '🔧', '🔨', '🛠', '⛏', '🔩', '🧱', '⛓', '🪝', '🪢', '🧲', '🔫', '💣', '🧨', '🪓', '🪚', '🔪', '🗡', '🛡', '🚬', '⚰', '🪦', '⚱', '🏺', '🪄', '🔮', '📿', '🧿', '💈', '🔭', '🔬', '🕳', '🪟', '🩹', '🩺', '💊', '💉', '🩸', '🧬', '🦠', '🧫', '🧪', '🌡', '🪤', '🧹', '🧺', '🪡', '🧻', '🚽', '🪠', '🪣', '🚰', '🚿', '🛁', '🛀', '🪥', '🧼', '🪒', '🧽', '🧴', '🛎', '🔑', '🗝', '🚪', '🪑', '🪞', '🛋', '🛏', '🛌', '🧸', '🖼', '🛍', '🛒', '🎁', '🎈', '🎏', '🎀', '🎊', '🎉', '🪅', '🪆', '🎎', '🏮', '🎐', '🧧', '📩', '📨', '📧', '💌', '📥', '📤', '📦', '🏷', '📪', '📫', '📬', '📭', '📮', '📯', '🪧', '📜', '📃', '📄', '📑', '🧾', '📊', '📈', '📉', '🗒', '🗓', '📆', '📅', '🗑', '📇', '🗃', '🗳', '🗄', '📋', '📁', '📂', '🗂', '🗞', '📰', '📓', '📔', '📒', '📕', '📗', '📘', '📙', '📚', '📖', '🔖', '🧷', '🔗', '📎', '🖇', '📐', '📏', '🧮', '📌', '📍', '🖊', '🖋', '🖌', '🖍', '📝', '✏', '🔍', '🔎', '🔏', '🔐', '🔒', '🔓', '🧡', '💛', '💚', '💙', '💜', '🖤', '🤎', '🤍', '💔', '💕', '💞', '💓', '💗', '💖', '💘', '💝', '💟', '☮', '✝', '☪', '🕉', '🔯', '🕎', '☯', '🛐', '⛎', '♊', '♋', '♌', '♍', '♎', '♏', '🆔', '⚛', '🉑', '📴', '📳', '🈶', '🈚', '🈸', '🈺', '🈷', '🆚', '💮', '🉐', '🈴', '🈵', '🈹', '🈲', '🅰', '🅱', '🆎', '🆑', '🅾', '🆘', '❌', '⭕', '🛑', '⛔', '📛', '🚫', '💯', '💢', '🚷', '🚯', '🚳', '🚱', '🔞', '📵', '🚭', '‼', '🔅', '🔆', '〽', '⚠', '🚸', '🔱', '⚜', '🔰', '♻', '🈯', '💹', '❎', '🌐', '💠', 'Ⓜ', '🌀', '💤', '🏧', '🚾', '♿', '🅿', '🈳', '🈂', '🛂', '🛃', '🛄', '🛅', '🛗', '🚹', '🚺', '🚼', '🚻', '🚮', '🎦', '📶', '🈁', '🔣', '🔤', '🔡', '🔠', '🆖', '🆗', '🆙', '🆒', '🆕', '🆓', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '🔟', '🔢', '#', '*', '⏏', '▶', '⏸', '⏯', '⏹', '⏺', '⏭', '⏮', '⏩', '⏪', '⏫', '⏬', '◀', '🔼', '🔽', '➡', '⬅', '⬆', '⬇', '↪', '↩', '🔀', '🔁', '🔂', '🔄', '🔃', '🎵', '🎶', '♾', '💲', '💱', '©', '®', '➰', '➿', '🔚', '🔙', '🔛', '🔝', '🔜', '🔘', '⚪', '⚫', '🔴', '🔵', '🟤', '🟣', '🟢', '🟡', '🟠', '🔺', '🔻', '🔸', '🔹', '🔶', '🔷', '🔳', '🔲', '▪', '▫', '◾', '◽', '◼', '◻', '⬛', '⬜', '🟧', '🟦', '🟥', '🟫', '🟪', '🟩', '🟨', '🔈', '🔇', '🔉', '🔊', '🔔', '🔕', '📣', '📢', '🗨', '💬', '💭', '🗯', '🃏', '🎴', '🀄', '🕐', '🕑', '🕒', '🕓', '🕔', '🕕', '🕖', '🕗', '🕘', '🕙', '🕚', '🕛', '🕜', '🕝', '🕞', '🕟', '🕠', '🕡', '🕢', '🕣', '🕤', '🕥', '🕦', '🕧', '⚧', '🏳', '🏴', '🏁', '🚩', '🇦', '🇩', '🇧', '🇮', '🇻', '🇰', '🇨', '🇹', '🇭', '🇪', '🇸', '🇬', '🇫', '🇵', '🇯', '🎌', '🇽', '🇱', '🇲', '🇾', '🇳', '🇴', '🇶', '🇷', '🇼', '🇿', '🇺', '🏻', '🏼', '🏽', '🏾', '🏿'] + }; + + // Add all emoji in a dropdown $.extend(true, $.trumbowyg, { langs: { // jshint camelcase:false en: { - fontFamily: 'Font' + emoji: 'Add an emoji' }, az: { - fontFamily: 'Şrift' - }, - by: { - fontFamily: 'Шрыфт' + emoji: 'Emoji yerləşdir' }, ca: { - fontFamily: 'Font' + emoji: 'Afegir una emoticona' }, da: { - fontFamily: 'Skrifttype' + emoji: 'Tilføj et humørikon' }, de: { - fontFamily: 'Schriftart' + emoji: 'Emoticon einfügen' }, es: { - fontFamily: 'Fuente' + emoji: 'Añadir un emoticono' }, et: { - fontFamily: 'Font' + emoji: 'Lisa emotikon' }, fr: { - fontFamily: 'Police' + emoji: 'Ajouter un emoji' }, hu: { - fontFamily: 'Betűtípus' - }, - ko: { - fontFamily: '글꼴' + emoji: 'Emoji beszúrás' }, - nl: { - fontFamily: 'Lettertype' + ja: { + emoji: '絵文字の挿入' }, - pt_br: { - fontFamily: 'Fonte' + ko: { + emoji: '이모지 넣기' }, ru: { - fontFamily: 'Шрифт' + emoji: 'Вставить emoji' }, sl: { - fontFamily: 'Pisava' + emoji: 'Vstavi emotikon' }, tr: { - fontFamily: 'Yazı tipi' + emoji: 'Emoji ekle' }, - zh_tw: { - fontFamily: '字體' + zh_cn: { + emoji: '添加表情' } - } - }); - // jshint camelcase:true - - var defaultOptions = { - fontList: [{ - name: 'Arial', - family: 'Arial, Helvetica, sans-serif' - }, { - name: 'Arial Black', - family: 'Arial Black, Gadget, sans-serif' - }, { - name: 'Comic Sans', - family: 'Comic Sans MS, Textile, cursive, sans-serif' - }, { - name: 'Courier New', - family: 'Courier New, Courier, monospace' - }, { - name: 'Georgia', - family: 'Georgia, serif' - }, { - name: 'Impact', - family: 'Impact, Charcoal, sans-serif' - }, { - name: 'Lucida Console', - family: 'Lucida Console, Monaco, monospace' - }, { - name: 'Lucida Sans', - family: 'Lucida Sans Uncide, Lucida Grande, sans-serif' - }, { - name: 'Palatino', - family: 'Palatino Linotype, Book Antiqua, Palatino, serif' - }, { - name: 'Tahoma', - family: 'Tahoma, Geneva, sans-serif' - }, { - name: 'Times New Roman', - family: 'Times New Roman, Times, serif' - }, { - name: 'Trebuchet', - family: 'Trebuchet MS, Helvetica, sans-serif' - }, { - name: 'Verdana', - family: 'Verdana, Geneva, sans-serif' - }] - }; - - // Add dropdown with web safe fonts - $.extend(true, $.trumbowyg, { + }, + // jshint camelcase:true plugins: { - fontfamily: { + emoji: { init: function init(trumbowyg) { - trumbowyg.o.plugins.fontfamily = $.extend({}, defaultOptions, trumbowyg.o.plugins.fontfamily || {}); - trumbowyg.addBtnDef('fontfamily', { - dropdown: buildDropdown(trumbowyg), - hasIcon: false, - text: trumbowyg.lang.fontFamily - }); + trumbowyg.o.plugins.emoji = trumbowyg.o.plugins.emoji || defaultOptions; + var emojiBtnDef = { + dropdown: buildDropdown(trumbowyg) + }; + trumbowyg.addBtnDef('emoji', emojiBtnDef); } } } }); function buildDropdown(trumbowyg) { var dropdown = []; - $.each(trumbowyg.o.plugins.fontfamily.fontList, function (index, font) { - trumbowyg.addBtnDef('fontfamily_' + index, { - title: '' + font.name + '', - hasIcon: false, - fn: function fn() { - trumbowyg.execCmd('fontName', font.family, true); - } - }); - dropdown.push('fontfamily_' + index); + $.each(trumbowyg.o.plugins.emoji.emojiList, function (i, emoji) { + if ($.isArray(emoji)) { + // Custom emoji behaviour + var emojiCode = emoji[0], + emojiUrl = emoji[1], + emojiHtml = '' + emojiCode + '', + customEmojiBtnName = 'emoji-' + emojiCode.replace(/:/g, ''), + customEmojiBtnDef = { + hasIcon: false, + text: emojiHtml, + fn: function fn() { + trumbowyg.execCmd('insertImage', emojiUrl, false, true); + return true; + } + }; + trumbowyg.addBtnDef(customEmojiBtnName, customEmojiBtnDef); + dropdown.push(customEmojiBtnName); + } else { + // Default behaviour + var btn = emoji.replace(/:/g, ''), + defaultEmojiBtnName = 'emoji-' + btn, + defaultEmojiBtnDef = { + text: emoji, + fn: function fn() { + var encodedEmoji = String.fromCodePoint(emoji.replace('&#', '0')); + trumbowyg.execCmd('insertText', encodedEmoji); + return true; + } + }; + trumbowyg.addBtnDef(defaultEmojiBtnName, defaultEmojiBtnDef); + dropdown.push(defaultEmojiBtnName); + } }); return dropdown; } })(jQuery); -!function (a) { +/* =========================================================== + * trumbowyg.emoji.js v0.1 + * Emoji picker plugin for Trumbowyg + * http://alex-d.github.com/Trumbowyg + * =========================================================== + * Author : Nicolas Pion + * Twitter : @nicolas_pion + */ +!function (x) { "use strict"; - a.extend(!0, a.trumbowyg, { + var F = { + emojiList: ["⁉", "™", "ℹ", "↔", "↕", "↖", "↗", "↘", "↙", "⌨", "☀", "☁", "☂", "☃", "☄", "☑", "☔", "☕", "☘", "☠", "☢", "☣", "☦", "☸", "☹", "♀", "♂", "♈", "♉", "♐", "♑", "♒", "♓", "♠", "♣", "♥", "♦", "♨", "⚒", "⚓", "⚔", "⚕", "⚖", "⚗", "⚙", "✂", "✅", "✈", "✉", "✒", "✔", "✖", "✡", "✨", "✳", "✴", "❄", "❇", "❓", "❔", "❕", "❗", "❣", "❤", "➕", "➖", "➗", "⤴", "⤵", "〰", "㊗", "㊙", "😀", "😃", "😄", "😁", "😆", "😅", "😂", "🤣", "☺", "😊", "😇", "🙂", "🙃", "😉", "😌", "🥲", "😍", "🥰", "😘", "😗", "😙", "😚", "😋", "😛", "😝", "😜", "🤪", "🤨", "🧐", "🤓", "😎", "🤩", "🥳", "😏", "😒", "😞", "😔", "😟", "😕", "🙁", "😣", "😖", "😫", "😩", "🥺", "😢", "😭", "😤", "😮", "😠", "😡", "🤬", "🤯", "😳", "😶", "🥵", "🥶", "😱", "😨", "😰", "😥", "😓", "🤗", "🤔", "🤭", "🥱", "🤫", "🤥", "😐", "😑", "😬", "🙄", "😯", "😦", "😧", "😲", "😴", "🤤", "😪", "😵", "🤐", "🥴", "🤢", "🤮", "🤧", "😷", "🤒", "🤕", "🤑", "🤠", "🥸", "😈", "👿", "👹", "👺", "🤡", "💩", "👻", "💀", "👽", "👾", "🤖", "🎃", "😺", "😸", "😹", "😻", "😼", "😽", "🙀", "😿", "😾", "🤲", "👐", "🙌", "👏", "🤝", "👍", "👎", "👊", "✊", "🤛", "🤜", "🤞", "✌", "🤟", "🤘", "👌", "🤏", "🤌", "👈", "👉", "👆", "👇", "☝", "✋", "🤚", "🖐", "🖖", "👋", "🤙", "💪", "🦾", "🖕", "✍", "🙏", "🦶", "🦵", "🦿", "💄", "💋", "👄", "🦷", "👅", "👂", "🦻", "👃", "👣", "👁", "👀", "🧠", "🫀", "🫁", "🦴", "🗣", "👤", "👥", "🫂", "👶", "👧", "🧒", "👦", "👩", "🧑", "👨", "👱", "🧔", "👵", "🧓", "👴", "👲", "👳", "🧕", "👮", "👷", "💂", "🕵", "👰", "🤵", "👸", "🤴", "🦸", "🦹", "🥷", "🤶", "🎅", "🧙", "🧝", "🧛", "🧟", "🧞", "🧜", "🧚", "👼", "🤰", "🤱", "🙇", "💁", "🙅", "🙆", "🙋", "🧏", "🤦", "🤷", "🙎", "🙍", "💇", "💆", "🧖", "💅", "🤳", "💃", "🕺", "👯", "🕴", "🚶", "🧎", "🏃", "🧍", "👫", "👭", "👬", "💑", "💏", "👪", "🧶", "🧵", "🧥", "🥼", "🦺", "👚", "👕", "👖", "🩲", "🩳", "👔", "👗", "👙", "🩱", "👘", "🥻", "🥿", "👠", "👡", "👢", "👞", "👟", "🥾", "🩴", "🧦", "🧤", "🧣", "🎩", "🧢", "👒", "🎓", "⛑", "🪖", "👑", "💍", "👝", "👛", "👜", "💼", "🎒", "🧳", "👓", "🕶", "🥽", "🌂", "🦱", "🦰", "🦳", "🦲", "🐶", "🐱", "🐭", "🐹", "🐰", "🦊", "🐻", "🐼", "🐨", "🐯", "🦁", "🐮", "🐷", "🐽", "🐸", "🐵", "🙈", "🙉", "🙊", "🐒", "🐔", "🐧", "🐦", "🐤", "🐣", "🐥", "🦆", "🦤", "🦅", "🦉", "🦇", "🐺", "🐗", "🐴", "🦄", "🐝", "🐛", "🦋", "🐌", "🪱", "🐞", "🐜", "🪰", "🦟", "🪳", "🪲", "🦗", "🕷", "🕸", "🦂", "🐢", "🐍", "🦎", "🦖", "🦕", "🐙", "🦑", "🦐", "🦞", "🦀", "🐡", "🐠", "🐟", "🦭", "🐬", "🐳", "🐋", "🦈", "🐊", "🐅", "🐆", "🦓", "🦍", "🦧", "🐘", "🦣", "🦬", "🦛", "🦏", "🐪", "🐫", "🦒", "🦘", "🐃", "🐂", "🐄", "🐎", "🐖", "🐏", "🐑", "🦙", "🐐", "🦌", "🐕", "🐩", "🦮", "🐈", "🐓", "🦃", "🦚", "🦜", "🦢", "🦩", "🕊", "🐇", "🦝", "🦨", "🦡", "🦫", "🦦", "🦥", "🐁", "🐀", "🐿", "🦔", "🐾", "🐉", "🐲", "🌵", "🎄", "🌲", "🌳", "🌴", "🌱", "🌿", "🍀", "🎍", "🎋", "🍃", "🍂", "🍁", "🪶", "🍄", "🐚", "🪨", "🪵", "🌾", "🪴", "💐", "🌷", "🌹", "🥀", "🌺", "🌸", "🌼", "🌻", "🌞", "🌝", "🌛", "🌜", "🌚", "🌕", "🌖", "🌗", "🌘", "🌑", "🌒", "🌓", "🌔", "🌙", "🌎", "🌍", "🌏", "🪐", "💫", "⭐", "🌟", "⚡", "💥", "🔥", "🌪", "🌈", "🌤", "⛅", "🌥", "🌦", "🌧", "⛈", "🌩", "🌨", "⛄", "🌬", "💨", "💧", "💦", "🌊", "🌫", "🍏", "🍎", "🍐", "🍊", "🍋", "🍌", "🍉", "🍇", "🫐", "🍓", "🍈", "🍒", "🍑", "🥭", "🍍", "🥥", "🥝", "🍅", "🍆", "🥑", "🫒", "🥦", "🥬", "🫑", "🥒", "🌶", "🌽", "🥕", "🧄", "🧅", "🥔", "🍠", "🥐", "🥯", "🍞", "🥖", "🫓", "🥨", "🧀", "🥚", "🍳", "🧈", "🥞", "🧇", "🥓", "🥩", "🍗", "🍖", "🌭", "🍔", "🍟", "🍕", "🥪", "🥙", "🧆", "🌮", "🌯", "🫔", "🥗", "🥘", "🫕", "🥫", "🍝", "🍜", "🍲", "🍛", "🍣", "🍱", "🥟", "🦪", "🍤", "🍙", "🍚", "🍘", "🍥", "🥠", "🥮", "🍢", "🍡", "🍧", "🍨", "🍦", "🥧", "🧁", "🍰", "🎂", "🍮", "🍭", "🍬", "🍫", "🍿", "🍩", "🍪", "🌰", "🥜", "🍯", "🥛", "🍼", "🍵", "🫖", "🧉", "🧋", "🧃", "🥤", "🍶", "🍺", "🍻", "🥂", "🍷", "🥃", "🍸", "🍹", "🍾", "🧊", "🥄", "🍴", "🍽", "🥣", "🥡", "🥢", "🧂", "⚽", "🏀", "🏈", "⚾", "🥎", "🎾", "🏐", "🏉", "🥏", "🪃", "🎱", "🪀", "🏓", "🏸", "🏒", "🏑", "🥍", "🏏", "🥅", "⛳", "🪁", "🏹", "🎣", "🤿", "🥊", "🥋", "🎽", "🛹", "🛼", "🛷", "⛸", "🥌", "🎿", "⛷", "🏂", "🪂", "🏋", "🤼", "🤸", "⛹", "🤺", "🤾", "🏌", "🏇", "🧘", "🏄", "🏊", "🤽", "🚣", "🧗", "🚵", "🚴", "🏆", "🥇", "🥈", "🥉", "🏅", "🎖", "🏵", "🎗", "🎫", "🎟", "🎪", "🤹", "🎭", "🩰", "🎨", "🎬", "🎤", "🎧", "🎼", "🎹", "🥁", "🪘", "🎷", "🎺", "🎸", "🪕", "🎻", "🪗", "🎲", "♟", "🎯", "🎳", "🎮", "🎰", "🧩", "🚗", "🚕", "🚙", "🛻", "🚌", "🚎", "🏎", "🚓", "🚑", "🚒", "🚐", "🚚", "🚛", "🚜", "🦯", "🦽", "🦼", "🛴", "🚲", "🛵", "🏍", "🛺", "🚨", "🚔", "🚍", "🚘", "🚖", "🚡", "🚠", "🚟", "🚃", "🚋", "🚞", "🚝", "🚄", "🚅", "🚈", "🚂", "🚆", "🚇", "🚊", "🚉", "🛫", "🛬", "🛩", "💺", "🛰", "🚀", "🛸", "🚁", "🛶", "⛵", "🚤", "🛥", "🛳", "⛴", "🚢", "⛽", "🚧", "🚦", "🚥", "🚏", "🗺", "🗿", "🗽", "🗼", "🏰", "🏯", "🏟", "🎡", "🎢", "🎠", "⛲", "⛱", "🏖", "🏝", "🏜", "🌋", "⛰", "🏔", "🗻", "🏕", "⛺", "🏠", "🏡", "🏘", "🏚", "🛖", "🏗", "🏭", "🏢", "🏬", "🏣", "🏤", "🏥", "🏦", "🏨", "🏪", "🏫", "🏩", "💒", "🏛", "⛪", "🕌", "🕍", "🛕", "🕋", "⛩", "🛤", "🛣", "🗾", "🎑", "🏞", "🌅", "🌄", "🌠", "🎇", "🎆", "🌇", "🌆", "🏙", "🌃", "🌌", "🌉", "🌁", "⌚", "📱", "📲", "💻", "🖥", "🖨", "🖱", "🖲", "🕹", "🗜", "💽", "💾", "💿", "📀", "📼", "📷", "📸", "📹", "🎥", "📽", "🎞", "📞", "☎", "📟", "📠", "📺", "📻", "🎙", "🎚", "🎛", "🧭", "⏱", "⏲", "⏰", "🕰", "⌛", "⏳", "📡", "🔋", "🔌", "💡", "🔦", "🕯", "🪔", "🧯", "🛢", "💸", "💵", "💴", "💶", "💷", "🪙", "💰", "💳", "💎", "🪜", "🧰", "🪛", "🔧", "🔨", "🛠", "⛏", "🔩", "🧱", "⛓", "🪝", "🪢", "🧲", "🔫", "💣", "🧨", "🪓", "🪚", "🔪", "🗡", "🛡", "🚬", "⚰", "🪦", "⚱", "🏺", "🪄", "🔮", "📿", "🧿", "💈", "🔭", "🔬", "🕳", "🪟", "🩹", "🩺", "💊", "💉", "🩸", "🧬", "🦠", "🧫", "🧪", "🌡", "🪤", "🧹", "🧺", "🪡", "🧻", "🚽", "🪠", "🪣", "🚰", "🚿", "🛁", "🛀", "🪥", "🧼", "🪒", "🧽", "🧴", "🛎", "🔑", "🗝", "🚪", "🪑", "🪞", "🛋", "🛏", "🛌", "🧸", "🖼", "🛍", "🛒", "🎁", "🎈", "🎏", "🎀", "🎊", "🎉", "🪅", "🪆", "🎎", "🏮", "🎐", "🧧", "📩", "📨", "📧", "💌", "📥", "📤", "📦", "🏷", "📪", "📫", "📬", "📭", "📮", "📯", "🪧", "📜", "📃", "📄", "📑", "🧾", "📊", "📈", "📉", "🗒", "🗓", "📆", "📅", "🗑", "📇", "🗃", "🗳", "🗄", "📋", "📁", "📂", "🗂", "🗞", "📰", "📓", "📔", "📒", "📕", "📗", "📘", "📙", "📚", "📖", "🔖", "🧷", "🔗", "📎", "🖇", "📐", "📏", "🧮", "📌", "📍", "🖊", "🖋", "🖌", "🖍", "📝", "✏", "🔍", "🔎", "🔏", "🔐", "🔒", "🔓", "🧡", "💛", "💚", "💙", "💜", "🖤", "🤎", "🤍", "💔", "💕", "💞", "💓", "💗", "💖", "💘", "💝", "💟", "☮", "✝", "☪", "🕉", "🔯", "🕎", "☯", "🛐", "⛎", "♊", "♋", "♌", "♍", "♎", "♏", "🆔", "⚛", "🉑", "📴", "📳", "🈶", "🈚", "🈸", "🈺", "🈷", "🆚", "💮", "🉐", "🈴", "🈵", "🈹", "🈲", "🅰", "🅱", "🆎", "🆑", "🅾", "🆘", "❌", "⭕", "🛑", "⛔", "📛", "🚫", "💯", "💢", "🚷", "🚯", "🚳", "🚱", "🔞", "📵", "🚭", "‼", "🔅", "🔆", "〽", "⚠", "🚸", "🔱", "⚜", "🔰", "♻", "🈯", "💹", "❎", "🌐", "💠", "Ⓜ", "🌀", "💤", "🏧", "🚾", "♿", "🅿", "🈳", "🈂", "🛂", "🛃", "🛄", "🛅", "🛗", "🚹", "🚺", "🚼", "🚻", "🚮", "🎦", "📶", "🈁", "🔣", "🔤", "🔡", "🔠", "🆖", "🆗", "🆙", "🆒", "🆕", "🆓", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "🔟", "🔢", "#", "*", "⏏", "▶", "⏸", "⏯", "⏹", "⏺", "⏭", "⏮", "⏩", "⏪", "⏫", "⏬", "◀", "🔼", "🔽", "➡", "⬅", "⬆", "⬇", "↪", "↩", "🔀", "🔁", "🔂", "🔄", "🔃", "🎵", "🎶", "♾", "💲", "💱", "©", "®", "➰", "➿", "🔚", "🔙", "🔛", "🔝", "🔜", "🔘", "⚪", "⚫", "🔴", "🔵", "🟤", "🟣", "🟢", "🟡", "🟠", "🔺", "🔻", "🔸", "🔹", "🔶", "🔷", "🔳", "🔲", "▪", "▫", "◾", "◽", "◼", "◻", "⬛", "⬜", "🟧", "🟦", "🟥", "🟫", "🟪", "🟩", "🟨", "🔈", "🔇", "🔉", "🔊", "🔔", "🔕", "📣", "📢", "🗨", "💬", "💭", "🗯", "🃏", "🎴", "🀄", "🕐", "🕑", "🕒", "🕓", "🕔", "🕕", "🕖", "🕗", "🕘", "🕙", "🕚", "🕛", "🕜", "🕝", "🕞", "🕟", "🕠", "🕡", "🕢", "🕣", "🕤", "🕥", "🕦", "🕧", "⚧", "🏳", "🏴", "🏁", "🚩", "🇦", "🇩", "🇧", "🇮", "🇻", "🇰", "🇨", "🇹", "🇭", "🇪", "🇸", "🇬", "🇫", "🇵", "🇯", "🎌", "🇽", "🇱", "🇲", "🇾", "🇳", "🇴", "🇶", "🇷", "🇼", "🇿", "🇺", "🏻", "🏼", "🏽", "🏾", "🏿"] + }; + function A(F) { + var A = []; + return x.each(F.o.plugins.emoji.emojiList, function (E, B) { + if (x.isArray(B)) { + var C = B[0], + D = B[1], + e = '' + C + '', + i = "emoji-" + C.replace(/:/g, ""), + o = { + hasIcon: !1, + text: e, + fn: function fn() { + return F.execCmd("insertImage", D, !1, !0), !0; + } + }; + F.addBtnDef(i, o), A.push(i); + } else { + var n = "emoji-" + B.replace(/:/g, ""), + m = { + text: B, + fn: function fn() { + var x = String.fromCodePoint(B.replace("&#", "0")); + return F.execCmd("insertText", x), !0; + } + }; + F.addBtnDef(n, m), A.push(n); + } + }), A; + } + x.extend(!0, x.trumbowyg, { langs: { en: { - fontFamily: "Font" + emoji: "Add an emoji" }, az: { - fontFamily: "Şrift" - }, - by: { - fontFamily: "Шрыфт" + emoji: "Emoji yerləşdir" }, ca: { - fontFamily: "Font" + emoji: "Afegir una emoticona" }, da: { - fontFamily: "Skrifttype" + emoji: "Tilføj et humørikon" }, de: { - fontFamily: "Schriftart" + emoji: "Emoticon einfügen" }, es: { - fontFamily: "Fuente" + emoji: "Añadir un emoticono" }, et: { - fontFamily: "Font" + emoji: "Lisa emotikon" }, fr: { - fontFamily: "Police" + emoji: "Ajouter un emoji" }, hu: { - fontFamily: "Betűtípus" - }, - ko: { - fontFamily: "글꼴" + emoji: "Emoji beszúrás" }, - nl: { - fontFamily: "Lettertype" + ja: { + emoji: "絵文字の挿入" }, - pt_br: { - fontFamily: "Fonte" + ko: { + emoji: "이모지 넣기" }, ru: { - fontFamily: "Шрифт" + emoji: "Вставить emoji" }, sl: { - fontFamily: "Pisava" + emoji: "Vstavi emotikon" }, tr: { - fontFamily: "Yazı tipi" + emoji: "Emoji ekle" }, - zh_tw: { - fontFamily: "字體" - } - } - }); - var n = { - fontList: [{ - name: "Arial", - family: "Arial, Helvetica, sans-serif" - }, { - name: "Arial Black", - family: "Arial Black, Gadget, sans-serif" - }, { - name: "Comic Sans", - family: "Comic Sans MS, Textile, cursive, sans-serif" - }, { - name: "Courier New", - family: "Courier New, Courier, monospace" - }, { - name: "Georgia", - family: "Georgia, serif" - }, { - name: "Impact", - family: "Impact, Charcoal, sans-serif" - }, { - name: "Lucida Console", - family: "Lucida Console, Monaco, monospace" - }, { - name: "Lucida Sans", - family: "Lucida Sans Uncide, Lucida Grande, sans-serif" - }, { - name: "Palatino", - family: "Palatino Linotype, Book Antiqua, Palatino, serif" - }, { - name: "Tahoma", - family: "Tahoma, Geneva, sans-serif" - }, { - name: "Times New Roman", - family: "Times New Roman, Times, serif" - }, { - name: "Trebuchet", - family: "Trebuchet MS, Helvetica, sans-serif" - }, { - name: "Verdana", - family: "Verdana, Geneva, sans-serif" - }] - }; - function i(n) { - var i = []; - return a.each(n.o.plugins.fontfamily.fontList, function (a, e) { - n.addBtnDef("fontfamily_" + a, { - title: '' + e.name + "", - hasIcon: !1, - fn: function fn() { - n.execCmd("fontName", e.family, !0); - } - }), i.push("fontfamily_" + a); - }), i; - } - a.extend(!0, a.trumbowyg, { - plugins: { - fontfamily: { - init: function init(e) { - e.o.plugins.fontfamily = a.extend({}, n, e.o.plugins.fontfamily || {}), e.addBtnDef("fontfamily", { - dropdown: i(e), - hasIcon: !1, - text: e.lang.fontFamily - }); - } - } - } - }); -}(jQuery); -/* =========================================================== - * trumbowyg.emoji.js v0.1 - * Emoji picker plugin for Trumbowyg - * http://alex-d.github.com/Trumbowyg - * =========================================================== - * Author : Nicolas Pion - * Twitter : @nicolas_pion - */ - -(function ($) { - 'use strict'; - - var defaultOptions = { - emojiList: ['⁉', '™', 'ℹ', '↔', '↕', '↖', '↗', '↘', '↙', '⌨', '☀', '☁', '☂', '☃', '☄', '☑', '☔', '☕', '☘', '☠', '☢', '☣', '☦', '☸', '☹', '♀', '♂', '♈', '♉', '♐', '♑', '♒', '♓', '♠', '♣', '♥', '♦', '♨', '⚒', '⚓', '⚔', '⚕', '⚖', '⚗', '⚙', '✂', '✅', '✈', '✉', '✒', '✔', '✖', '✡', '✨', '✳', '✴', '❄', '❇', '❓', '❔', '❕', '❗', '❣', '❤', '➕', '➖', '➗', '⤴', '⤵', '〰', '㊗', '㊙', '😀', '😃', '😄', '😁', '😆', '😅', '😂', '🤣', '☺', '😊', '😇', '🙂', '🙃', '😉', '😌', '🥲', '😍', '🥰', '😘', '😗', '😙', '😚', '😋', '😛', '😝', '😜', '🤪', '🤨', '🧐', '🤓', '😎', '🤩', '🥳', '😏', '😒', '😞', '😔', '😟', '😕', '🙁', '😣', '😖', '😫', '😩', '🥺', '😢', '😭', '😤', '😮', '😠', '😡', '🤬', '🤯', '😳', '😶', '🥵', '🥶', '😱', '😨', '😰', '😥', '😓', '🤗', '🤔', '🤭', '🥱', '🤫', '🤥', '😐', '😑', '😬', '🙄', '😯', '😦', '😧', '😲', '😴', '🤤', '😪', '😵', '🤐', '🥴', '🤢', '🤮', '🤧', '😷', '🤒', '🤕', '🤑', '🤠', '🥸', '😈', '👿', '👹', '👺', '🤡', '💩', '👻', '💀', '👽', '👾', '🤖', '🎃', '😺', '😸', '😹', '😻', '😼', '😽', '🙀', '😿', '😾', '🤲', '👐', '🙌', '👏', '🤝', '👍', '👎', '👊', '✊', '🤛', '🤜', '🤞', '✌', '🤟', '🤘', '👌', '🤏', '🤌', '👈', '👉', '👆', '👇', '☝', '✋', '🤚', '🖐', '🖖', '👋', '🤙', '💪', '🦾', '🖕', '✍', '🙏', '🦶', '🦵', '🦿', '💄', '💋', '👄', '🦷', '👅', '👂', '🦻', '👃', '👣', '👁', '👀', '🧠', '🫀', '🫁', '🦴', '🗣', '👤', '👥', '🫂', '👶', '👧', '🧒', '👦', '👩', '🧑', '👨', '👱', '🧔', '👵', '🧓', '👴', '👲', '👳', '🧕', '👮', '👷', '💂', '🕵', '👰', '🤵', '👸', '🤴', '🦸', '🦹', '🥷', '🤶', '🎅', '🧙', '🧝', '🧛', '🧟', '🧞', '🧜', '🧚', '👼', '🤰', '🤱', '🙇', '💁', '🙅', '🙆', '🙋', '🧏', '🤦', '🤷', '🙎', '🙍', '💇', '💆', '🧖', '💅', '🤳', '💃', '🕺', '👯', '🕴', '🚶', '🧎', '🏃', '🧍', '👫', '👭', '👬', '💑', '💏', '👪', '🧶', '🧵', '🧥', '🥼', '🦺', '👚', '👕', '👖', '🩲', '🩳', '👔', '👗', '👙', '🩱', '👘', '🥻', '🥿', '👠', '👡', '👢', '👞', '👟', '🥾', '🩴', '🧦', '🧤', '🧣', '🎩', '🧢', '👒', '🎓', '⛑', '🪖', '👑', '💍', '👝', '👛', '👜', '💼', '🎒', '🧳', '👓', '🕶', '🥽', '🌂', '🦱', '🦰', '🦳', '🦲', '🐶', '🐱', '🐭', '🐹', '🐰', '🦊', '🐻', '🐼', '🐨', '🐯', '🦁', '🐮', '🐷', '🐽', '🐸', '🐵', '🙈', '🙉', '🙊', '🐒', '🐔', '🐧', '🐦', '🐤', '🐣', '🐥', '🦆', '🦤', '🦅', '🦉', '🦇', '🐺', '🐗', '🐴', '🦄', '🐝', '🐛', '🦋', '🐌', '🪱', '🐞', '🐜', '🪰', '🦟', '🪳', '🪲', '🦗', '🕷', '🕸', '🦂', '🐢', '🐍', '🦎', '🦖', '🦕', '🐙', '🦑', '🦐', '🦞', '🦀', '🐡', '🐠', '🐟', '🦭', '🐬', '🐳', '🐋', '🦈', '🐊', '🐅', '🐆', '🦓', '🦍', '🦧', '🐘', '🦣', '🦬', '🦛', '🦏', '🐪', '🐫', '🦒', '🦘', '🐃', '🐂', '🐄', '🐎', '🐖', '🐏', '🐑', '🦙', '🐐', '🦌', '🐕', '🐩', '🦮', '🐈', '🐓', '🦃', '🦚', '🦜', '🦢', '🦩', '🕊', '🐇', '🦝', '🦨', '🦡', '🦫', '🦦', '🦥', '🐁', '🐀', '🐿', '🦔', '🐾', '🐉', '🐲', '🌵', '🎄', '🌲', '🌳', '🌴', '🌱', '🌿', '🍀', '🎍', '🎋', '🍃', '🍂', '🍁', '🪶', '🍄', '🐚', '🪨', '🪵', '🌾', '🪴', '💐', '🌷', '🌹', '🥀', '🌺', '🌸', '🌼', '🌻', '🌞', '🌝', '🌛', '🌜', '🌚', '🌕', '🌖', '🌗', '🌘', '🌑', '🌒', '🌓', '🌔', '🌙', '🌎', '🌍', '🌏', '🪐', '💫', '⭐', '🌟', '⚡', '💥', '🔥', '🌪', '🌈', '🌤', '⛅', '🌥', '🌦', '🌧', '⛈', '🌩', '🌨', '⛄', '🌬', '💨', '💧', '💦', '🌊', '🌫', '🍏', '🍎', '🍐', '🍊', '🍋', '🍌', '🍉', '🍇', '🫐', '🍓', '🍈', '🍒', '🍑', '🥭', '🍍', '🥥', '🥝', '🍅', '🍆', '🥑', '🫒', '🥦', '🥬', '🫑', '🥒', '🌶', '🌽', '🥕', '🧄', '🧅', '🥔', '🍠', '🥐', '🥯', '🍞', '🥖', '🫓', '🥨', '🧀', '🥚', '🍳', '🧈', '🥞', '🧇', '🥓', '🥩', '🍗', '🍖', '🌭', '🍔', '🍟', '🍕', '🥪', '🥙', '🧆', '🌮', '🌯', '🫔', '🥗', '🥘', '🫕', '🥫', '🍝', '🍜', '🍲', '🍛', '🍣', '🍱', '🥟', '🦪', '🍤', '🍙', '🍚', '🍘', '🍥', '🥠', '🥮', '🍢', '🍡', '🍧', '🍨', '🍦', '🥧', '🧁', '🍰', '🎂', '🍮', '🍭', '🍬', '🍫', '🍿', '🍩', '🍪', '🌰', '🥜', '🍯', '🥛', '🍼', '🍵', '🫖', '🧉', '🧋', '🧃', '🥤', '🍶', '🍺', '🍻', '🥂', '🍷', '🥃', '🍸', '🍹', '🍾', '🧊', '🥄', '🍴', '🍽', '🥣', '🥡', '🥢', '🧂', '⚽', '🏀', '🏈', '⚾', '🥎', '🎾', '🏐', '🏉', '🥏', '🪃', '🎱', '🪀', '🏓', '🏸', '🏒', '🏑', '🥍', '🏏', '🥅', '⛳', '🪁', '🏹', '🎣', '🤿', '🥊', '🥋', '🎽', '🛹', '🛼', '🛷', '⛸', '🥌', '🎿', '⛷', '🏂', '🪂', '🏋', '🤼', '🤸', '⛹', '🤺', '🤾', '🏌', '🏇', '🧘', '🏄', '🏊', '🤽', '🚣', '🧗', '🚵', '🚴', '🏆', '🥇', '🥈', '🥉', '🏅', '🎖', '🏵', '🎗', '🎫', '🎟', '🎪', '🤹', '🎭', '🩰', '🎨', '🎬', '🎤', '🎧', '🎼', '🎹', '🥁', '🪘', '🎷', '🎺', '🎸', '🪕', '🎻', '🪗', '🎲', '♟', '🎯', '🎳', '🎮', '🎰', '🧩', '🚗', '🚕', '🚙', '🛻', '🚌', '🚎', '🏎', '🚓', '🚑', '🚒', '🚐', '🚚', '🚛', '🚜', '🦯', '🦽', '🦼', '🛴', '🚲', '🛵', '🏍', '🛺', '🚨', '🚔', '🚍', '🚘', '🚖', '🚡', '🚠', '🚟', '🚃', '🚋', '🚞', '🚝', '🚄', '🚅', '🚈', '🚂', '🚆', '🚇', '🚊', '🚉', '🛫', '🛬', '🛩', '💺', '🛰', '🚀', '🛸', '🚁', '🛶', '⛵', '🚤', '🛥', '🛳', '⛴', '🚢', '⛽', '🚧', '🚦', '🚥', '🚏', '🗺', '🗿', '🗽', '🗼', '🏰', '🏯', '🏟', '🎡', '🎢', '🎠', '⛲', '⛱', '🏖', '🏝', '🏜', '🌋', '⛰', '🏔', '🗻', '🏕', '⛺', '🏠', '🏡', '🏘', '🏚', '🛖', '🏗', '🏭', '🏢', '🏬', '🏣', '🏤', '🏥', '🏦', '🏨', '🏪', '🏫', '🏩', '💒', '🏛', '⛪', '🕌', '🕍', '🛕', '🕋', '⛩', '🛤', '🛣', '🗾', '🎑', '🏞', '🌅', '🌄', '🌠', '🎇', '🎆', '🌇', '🌆', '🏙', '🌃', '🌌', '🌉', '🌁', '⌚', '📱', '📲', '💻', '🖥', '🖨', '🖱', '🖲', '🕹', '🗜', '💽', '💾', '💿', '📀', '📼', '📷', '📸', '📹', '🎥', '📽', '🎞', '📞', '☎', '📟', '📠', '📺', '📻', '🎙', '🎚', '🎛', '🧭', '⏱', '⏲', '⏰', '🕰', '⌛', '⏳', '📡', '🔋', '🔌', '💡', '🔦', '🕯', '🪔', '🧯', '🛢', '💸', '💵', '💴', '💶', '💷', '🪙', '💰', '💳', '💎', '🪜', '🧰', '🪛', '🔧', '🔨', '🛠', '⛏', '🔩', '🧱', '⛓', '🪝', '🪢', '🧲', '🔫', '💣', '🧨', '🪓', '🪚', '🔪', '🗡', '🛡', '🚬', '⚰', '🪦', '⚱', '🏺', '🪄', '🔮', '📿', '🧿', '💈', '🔭', '🔬', '🕳', '🪟', '🩹', '🩺', '💊', '💉', '🩸', '🧬', '🦠', '🧫', '🧪', '🌡', '🪤', '🧹', '🧺', '🪡', '🧻', '🚽', '🪠', '🪣', '🚰', '🚿', '🛁', '🛀', '🪥', '🧼', '🪒', '🧽', '🧴', '🛎', '🔑', '🗝', '🚪', '🪑', '🪞', '🛋', '🛏', '🛌', '🧸', '🖼', '🛍', '🛒', '🎁', '🎈', '🎏', '🎀', '🎊', '🎉', '🪅', '🪆', '🎎', '🏮', '🎐', '🧧', '📩', '📨', '📧', '💌', '📥', '📤', '📦', '🏷', '📪', '📫', '📬', '📭', '📮', '📯', '🪧', '📜', '📃', '📄', '📑', '🧾', '📊', '📈', '📉', '🗒', '🗓', '📆', '📅', '🗑', '📇', '🗃', '🗳', '🗄', '📋', '📁', '📂', '🗂', '🗞', '📰', '📓', '📔', '📒', '📕', '📗', '📘', '📙', '📚', '📖', '🔖', '🧷', '🔗', '📎', '🖇', '📐', '📏', '🧮', '📌', '📍', '🖊', '🖋', '🖌', '🖍', '📝', '✏', '🔍', '🔎', '🔏', '🔐', '🔒', '🔓', '🧡', '💛', '💚', '💙', '💜', '🖤', '🤎', '🤍', '💔', '💕', '💞', '💓', '💗', '💖', '💘', '💝', '💟', '☮', '✝', '☪', '🕉', '🔯', '🕎', '☯', '🛐', '⛎', '♊', '♋', '♌', '♍', '♎', '♏', '🆔', '⚛', '🉑', '📴', '📳', '🈶', '🈚', '🈸', '🈺', '🈷', '🆚', '💮', '🉐', '🈴', '🈵', '🈹', '🈲', '🅰', '🅱', '🆎', '🆑', '🅾', '🆘', '❌', '⭕', '🛑', '⛔', '📛', '🚫', '💯', '💢', '🚷', '🚯', '🚳', '🚱', '🔞', '📵', '🚭', '‼', '🔅', '🔆', '〽', '⚠', '🚸', '🔱', '⚜', '🔰', '♻', '🈯', '💹', '❎', '🌐', '💠', 'Ⓜ', '🌀', '💤', '🏧', '🚾', '♿', '🅿', '🈳', '🈂', '🛂', '🛃', '🛄', '🛅', '🛗', '🚹', '🚺', '🚼', '🚻', '🚮', '🎦', '📶', '🈁', '🔣', '🔤', '🔡', '🔠', '🆖', '🆗', '🆙', '🆒', '🆕', '🆓', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '🔟', '🔢', '#', '*', '⏏', '▶', '⏸', '⏯', '⏹', '⏺', '⏭', '⏮', '⏩', '⏪', '⏫', '⏬', '◀', '🔼', '🔽', '➡', '⬅', '⬆', '⬇', '↪', '↩', '🔀', '🔁', '🔂', '🔄', '🔃', '🎵', '🎶', '♾', '💲', '💱', '©', '®', '➰', '➿', '🔚', '🔙', '🔛', '🔝', '🔜', '🔘', '⚪', '⚫', '🔴', '🔵', '🟤', '🟣', '🟢', '🟡', '🟠', '🔺', '🔻', '🔸', '🔹', '🔶', '🔷', '🔳', '🔲', '▪', '▫', '◾', '◽', '◼', '◻', '⬛', '⬜', '🟧', '🟦', '🟥', '🟫', '🟪', '🟩', '🟨', '🔈', '🔇', '🔉', '🔊', '🔔', '🔕', '📣', '📢', '🗨', '💬', '💭', '🗯', '🃏', '🎴', '🀄', '🕐', '🕑', '🕒', '🕓', '🕔', '🕕', '🕖', '🕗', '🕘', '🕙', '🕚', '🕛', '🕜', '🕝', '🕞', '🕟', '🕠', '🕡', '🕢', '🕣', '🕤', '🕥', '🕦', '🕧', '⚧', '🏳', '🏴', '🏁', '🚩', '🇦', '🇩', '🇧', '🇮', '🇻', '🇰', '🇨', '🇹', '🇭', '🇪', '🇸', '🇬', '🇫', '🇵', '🇯', '🎌', '🇽', '🇱', '🇲', '🇾', '🇳', '🇴', '🇶', '🇷', '🇼', '🇿', '🇺', '🏻', '🏼', '🏽', '🏾', '🏿'] - }; - - // Add all emoji in a dropdown - $.extend(true, $.trumbowyg, { - langs: { - // jshint camelcase:false - en: { - emoji: 'Add an emoji' - }, - az: { - emoji: 'Emoji yerləşdir' - }, - ca: { - emoji: 'Afegir una emoticona' - }, - da: { - emoji: 'Tilføj et humørikon' - }, - de: { - emoji: 'Emoticon einfügen' - }, - es: { - emoji: 'Añadir un emoticono' - }, - et: { - emoji: 'Lisa emotikon' - }, - fr: { - emoji: 'Ajouter un emoji' - }, - hu: { - emoji: 'Emoji beszúrás' - }, - ja: { - emoji: '絵文字の挿入' - }, - ko: { - emoji: '이모지 넣기' - }, - ru: { - emoji: 'Вставить emoji' - }, - sl: { - emoji: 'Vstavi emotikon' - }, - tr: { - emoji: 'Emoji ekle' - }, - zh_cn: { - emoji: '添加表情' - } - }, - // jshint camelcase:true - plugins: { - emoji: { - init: function init(trumbowyg) { - trumbowyg.o.plugins.emoji = trumbowyg.o.plugins.emoji || defaultOptions; - var emojiBtnDef = { - dropdown: buildDropdown(trumbowyg) - }; - trumbowyg.addBtnDef('emoji', emojiBtnDef); - } - } - } - }); - function buildDropdown(trumbowyg) { - var dropdown = []; - $.each(trumbowyg.o.plugins.emoji.emojiList, function (i, emoji) { - if ($.isArray(emoji)) { - // Custom emoji behaviour - var emojiCode = emoji[0], - emojiUrl = emoji[1], - emojiHtml = '' + emojiCode + '', - customEmojiBtnName = 'emoji-' + emojiCode.replace(/:/g, ''), - customEmojiBtnDef = { - hasIcon: false, - text: emojiHtml, - fn: function fn() { - trumbowyg.execCmd('insertImage', emojiUrl, false, true); - return true; - } - }; - trumbowyg.addBtnDef(customEmojiBtnName, customEmojiBtnDef); - dropdown.push(customEmojiBtnName); - } else { - // Default behaviour - var btn = emoji.replace(/:/g, ''), - defaultEmojiBtnName = 'emoji-' + btn, - defaultEmojiBtnDef = { - text: emoji, - fn: function fn() { - var encodedEmoji = String.fromCodePoint(emoji.replace('&#', '0')); - trumbowyg.execCmd('insertText', encodedEmoji); - return true; - } - }; - trumbowyg.addBtnDef(defaultEmojiBtnName, defaultEmojiBtnDef); - dropdown.push(defaultEmojiBtnName); - } - }); - return dropdown; - } -})(jQuery); -/* =========================================================== - * trumbowyg.emoji.js v0.1 - * Emoji picker plugin for Trumbowyg - * http://alex-d.github.com/Trumbowyg - * =========================================================== - * Author : Nicolas Pion - * Twitter : @nicolas_pion - */ -!function (x) { - "use strict"; - - var F = { - emojiList: ["⁉", "™", "ℹ", "↔", "↕", "↖", "↗", "↘", "↙", "⌨", "☀", "☁", "☂", "☃", "☄", "☑", "☔", "☕", "☘", "☠", "☢", "☣", "☦", "☸", "☹", "♀", "♂", "♈", "♉", "♐", "♑", "♒", "♓", "♠", "♣", "♥", "♦", "♨", "⚒", "⚓", "⚔", "⚕", "⚖", "⚗", "⚙", "✂", "✅", "✈", "✉", "✒", "✔", "✖", "✡", "✨", "✳", "✴", "❄", "❇", "❓", "❔", "❕", "❗", "❣", "❤", "➕", "➖", "➗", "⤴", "⤵", "〰", "㊗", "㊙", "😀", "😃", "😄", "😁", "😆", "😅", "😂", "🤣", "☺", "😊", "😇", "🙂", "🙃", "😉", "😌", "🥲", "😍", "🥰", "😘", "😗", "😙", "😚", "😋", "😛", "😝", "😜", "🤪", "🤨", "🧐", "🤓", "😎", "🤩", "🥳", "😏", "😒", "😞", "😔", "😟", "😕", "🙁", "😣", "😖", "😫", "😩", "🥺", "😢", "😭", "😤", "😮", "😠", "😡", "🤬", "🤯", "😳", "😶", "🥵", "🥶", "😱", "😨", "😰", "😥", "😓", "🤗", "🤔", "🤭", "🥱", "🤫", "🤥", "😐", "😑", "😬", "🙄", "😯", "😦", "😧", "😲", "😴", "🤤", "😪", "😵", "🤐", "🥴", "🤢", "🤮", "🤧", "😷", "🤒", "🤕", "🤑", "🤠", "🥸", "😈", "👿", "👹", "👺", "🤡", "💩", "👻", "💀", "👽", "👾", "🤖", "🎃", "😺", "😸", "😹", "😻", "😼", "😽", "🙀", "😿", "😾", "🤲", "👐", "🙌", "👏", "🤝", "👍", "👎", "👊", "✊", "🤛", "🤜", "🤞", "✌", "🤟", "🤘", "👌", "🤏", "🤌", "👈", "👉", "👆", "👇", "☝", "✋", "🤚", "🖐", "🖖", "👋", "🤙", "💪", "🦾", "🖕", "✍", "🙏", "🦶", "🦵", "🦿", "💄", "💋", "👄", "🦷", "👅", "👂", "🦻", "👃", "👣", "👁", "👀", "🧠", "🫀", "🫁", "🦴", "🗣", "👤", "👥", "🫂", "👶", "👧", "🧒", "👦", "👩", "🧑", "👨", "👱", "🧔", "👵", "🧓", "👴", "👲", "👳", "🧕", "👮", "👷", "💂", "🕵", "👰", "🤵", "👸", "🤴", "🦸", "🦹", "🥷", "🤶", "🎅", "🧙", "🧝", "🧛", "🧟", "🧞", "🧜", "🧚", "👼", "🤰", "🤱", "🙇", "💁", "🙅", "🙆", "🙋", "🧏", "🤦", "🤷", "🙎", "🙍", "💇", "💆", "🧖", "💅", "🤳", "💃", "🕺", "👯", "🕴", "🚶", "🧎", "🏃", "🧍", "👫", "👭", "👬", "💑", "💏", "👪", "🧶", "🧵", "🧥", "🥼", "🦺", "👚", "👕", "👖", "🩲", "🩳", "👔", "👗", "👙", "🩱", "👘", "🥻", "🥿", "👠", "👡", "👢", "👞", "👟", "🥾", "🩴", "🧦", "🧤", "🧣", "🎩", "🧢", "👒", "🎓", "⛑", "🪖", "👑", "💍", "👝", "👛", "👜", "💼", "🎒", "🧳", "👓", "🕶", "🥽", "🌂", "🦱", "🦰", "🦳", "🦲", "🐶", "🐱", "🐭", "🐹", "🐰", "🦊", "🐻", "🐼", "🐨", "🐯", "🦁", "🐮", "🐷", "🐽", "🐸", "🐵", "🙈", "🙉", "🙊", "🐒", "🐔", "🐧", "🐦", "🐤", "🐣", "🐥", "🦆", "🦤", "🦅", "🦉", "🦇", "🐺", "🐗", "🐴", "🦄", "🐝", "🐛", "🦋", "🐌", "🪱", "🐞", "🐜", "🪰", "🦟", "🪳", "🪲", "🦗", "🕷", "🕸", "🦂", "🐢", "🐍", "🦎", "🦖", "🦕", "🐙", "🦑", "🦐", "🦞", "🦀", "🐡", "🐠", "🐟", "🦭", "🐬", "🐳", "🐋", "🦈", "🐊", "🐅", "🐆", "🦓", "🦍", "🦧", "🐘", "🦣", "🦬", "🦛", "🦏", "🐪", "🐫", "🦒", "🦘", "🐃", "🐂", "🐄", "🐎", "🐖", "🐏", "🐑", "🦙", "🐐", "🦌", "🐕", "🐩", "🦮", "🐈", "🐓", "🦃", "🦚", "🦜", "🦢", "🦩", "🕊", "🐇", "🦝", "🦨", "🦡", "🦫", "🦦", "🦥", "🐁", "🐀", "🐿", "🦔", "🐾", "🐉", "🐲", "🌵", "🎄", "🌲", "🌳", "🌴", "🌱", "🌿", "🍀", "🎍", "🎋", "🍃", "🍂", "🍁", "🪶", "🍄", "🐚", "🪨", "🪵", "🌾", "🪴", "💐", "🌷", "🌹", "🥀", "🌺", "🌸", "🌼", "🌻", "🌞", "🌝", "🌛", "🌜", "🌚", "🌕", "🌖", "🌗", "🌘", "🌑", "🌒", "🌓", "🌔", "🌙", "🌎", "🌍", "🌏", "🪐", "💫", "⭐", "🌟", "⚡", "💥", "🔥", "🌪", "🌈", "🌤", "⛅", "🌥", "🌦", "🌧", "⛈", "🌩", "🌨", "⛄", "🌬", "💨", "💧", "💦", "🌊", "🌫", "🍏", "🍎", "🍐", "🍊", "🍋", "🍌", "🍉", "🍇", "🫐", "🍓", "🍈", "🍒", "🍑", "🥭", "🍍", "🥥", "🥝", "🍅", "🍆", "🥑", "🫒", "🥦", "🥬", "🫑", "🥒", "🌶", "🌽", "🥕", "🧄", "🧅", "🥔", "🍠", "🥐", "🥯", "🍞", "🥖", "🫓", "🥨", "🧀", "🥚", "🍳", "🧈", "🥞", "🧇", "🥓", "🥩", "🍗", "🍖", "🌭", "🍔", "🍟", "🍕", "🥪", "🥙", "🧆", "🌮", "🌯", "🫔", "🥗", "🥘", "🫕", "🥫", "🍝", "🍜", "🍲", "🍛", "🍣", "🍱", "🥟", "🦪", "🍤", "🍙", "🍚", "🍘", "🍥", "🥠", "🥮", "🍢", "🍡", "🍧", "🍨", "🍦", "🥧", "🧁", "🍰", "🎂", "🍮", "🍭", "🍬", "🍫", "🍿", "🍩", "🍪", "🌰", "🥜", "🍯", "🥛", "🍼", "🍵", "🫖", "🧉", "🧋", "🧃", "🥤", "🍶", "🍺", "🍻", "🥂", "🍷", "🥃", "🍸", "🍹", "🍾", "🧊", "🥄", "🍴", "🍽", "🥣", "🥡", "🥢", "🧂", "⚽", "🏀", "🏈", "⚾", "🥎", "🎾", "🏐", "🏉", "🥏", "🪃", "🎱", "🪀", "🏓", "🏸", "🏒", "🏑", "🥍", "🏏", "🥅", "⛳", "🪁", "🏹", "🎣", "🤿", "🥊", "🥋", "🎽", "🛹", "🛼", "🛷", "⛸", "🥌", "🎿", "⛷", "🏂", "🪂", "🏋", "🤼", "🤸", "⛹", "🤺", "🤾", "🏌", "🏇", "🧘", "🏄", "🏊", "🤽", "🚣", "🧗", "🚵", "🚴", "🏆", "🥇", "🥈", "🥉", "🏅", "🎖", "🏵", "🎗", "🎫", "🎟", "🎪", "🤹", "🎭", "🩰", "🎨", "🎬", "🎤", "🎧", "🎼", "🎹", "🥁", "🪘", "🎷", "🎺", "🎸", "🪕", "🎻", "🪗", "🎲", "♟", "🎯", "🎳", "🎮", "🎰", "🧩", "🚗", "🚕", "🚙", "🛻", "🚌", "🚎", "🏎", "🚓", "🚑", "🚒", "🚐", "🚚", "🚛", "🚜", "🦯", "🦽", "🦼", "🛴", "🚲", "🛵", "🏍", "🛺", "🚨", "🚔", "🚍", "🚘", "🚖", "🚡", "🚠", "🚟", "🚃", "🚋", "🚞", "🚝", "🚄", "🚅", "🚈", "🚂", "🚆", "🚇", "🚊", "🚉", "🛫", "🛬", "🛩", "💺", "🛰", "🚀", "🛸", "🚁", "🛶", "⛵", "🚤", "🛥", "🛳", "⛴", "🚢", "⛽", "🚧", "🚦", "🚥", "🚏", "🗺", "🗿", "🗽", "🗼", "🏰", "🏯", "🏟", "🎡", "🎢", "🎠", "⛲", "⛱", "🏖", "🏝", "🏜", "🌋", "⛰", "🏔", "🗻", "🏕", "⛺", "🏠", "🏡", "🏘", "🏚", "🛖", "🏗", "🏭", "🏢", "🏬", "🏣", "🏤", "🏥", "🏦", "🏨", "🏪", "🏫", "🏩", "💒", "🏛", "⛪", "🕌", "🕍", "🛕", "🕋", "⛩", "🛤", "🛣", "🗾", "🎑", "🏞", "🌅", "🌄", "🌠", "🎇", "🎆", "🌇", "🌆", "🏙", "🌃", "🌌", "🌉", "🌁", "⌚", "📱", "📲", "💻", "🖥", "🖨", "🖱", "🖲", "🕹", "🗜", "💽", "💾", "💿", "📀", "📼", "📷", "📸", "📹", "🎥", "📽", "🎞", "📞", "☎", "📟", "📠", "📺", "📻", "🎙", "🎚", "🎛", "🧭", "⏱", "⏲", "⏰", "🕰", "⌛", "⏳", "📡", "🔋", "🔌", "💡", "🔦", "🕯", "🪔", "🧯", "🛢", "💸", "💵", "💴", "💶", "💷", "🪙", "💰", "💳", "💎", "🪜", "🧰", "🪛", "🔧", "🔨", "🛠", "⛏", "🔩", "🧱", "⛓", "🪝", "🪢", "🧲", "🔫", "💣", "🧨", "🪓", "🪚", "🔪", "🗡", "🛡", "🚬", "⚰", "🪦", "⚱", "🏺", "🪄", "🔮", "📿", "🧿", "💈", "🔭", "🔬", "🕳", "🪟", "🩹", "🩺", "💊", "💉", "🩸", "🧬", "🦠", "🧫", "🧪", "🌡", "🪤", "🧹", "🧺", "🪡", "🧻", "🚽", "🪠", "🪣", "🚰", "🚿", "🛁", "🛀", "🪥", "🧼", "🪒", "🧽", "🧴", "🛎", "🔑", "🗝", "🚪", "🪑", "🪞", "🛋", "🛏", "🛌", "🧸", "🖼", "🛍", "🛒", "🎁", "🎈", "🎏", "🎀", "🎊", "🎉", "🪅", "🪆", "🎎", "🏮", "🎐", "🧧", "📩", "📨", "📧", "💌", "📥", "📤", "📦", "🏷", "📪", "📫", "📬", "📭", "📮", "📯", "🪧", "📜", "📃", "📄", "📑", "🧾", "📊", "📈", "📉", "🗒", "🗓", "📆", "📅", "🗑", "📇", "🗃", "🗳", "🗄", "📋", "📁", "📂", "🗂", "🗞", "📰", "📓", "📔", "📒", "📕", "📗", "📘", "📙", "📚", "📖", "🔖", "🧷", "🔗", "📎", "🖇", "📐", "📏", "🧮", "📌", "📍", "🖊", "🖋", "🖌", "🖍", "📝", "✏", "🔍", "🔎", "🔏", "🔐", "🔒", "🔓", "🧡", "💛", "💚", "💙", "💜", "🖤", "🤎", "🤍", "💔", "💕", "💞", "💓", "💗", "💖", "💘", "💝", "💟", "☮", "✝", "☪", "🕉", "🔯", "🕎", "☯", "🛐", "⛎", "♊", "♋", "♌", "♍", "♎", "♏", "🆔", "⚛", "🉑", "📴", "📳", "🈶", "🈚", "🈸", "🈺", "🈷", "🆚", "💮", "🉐", "🈴", "🈵", "🈹", "🈲", "🅰", "🅱", "🆎", "🆑", "🅾", "🆘", "❌", "⭕", "🛑", "⛔", "📛", "🚫", "💯", "💢", "🚷", "🚯", "🚳", "🚱", "🔞", "📵", "🚭", "‼", "🔅", "🔆", "〽", "⚠", "🚸", "🔱", "⚜", "🔰", "♻", "🈯", "💹", "❎", "🌐", "💠", "Ⓜ", "🌀", "💤", "🏧", "🚾", "♿", "🅿", "🈳", "🈂", "🛂", "🛃", "🛄", "🛅", "🛗", "🚹", "🚺", "🚼", "🚻", "🚮", "🎦", "📶", "🈁", "🔣", "🔤", "🔡", "🔠", "🆖", "🆗", "🆙", "🆒", "🆕", "🆓", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "🔟", "🔢", "#", "*", "⏏", "▶", "⏸", "⏯", "⏹", "⏺", "⏭", "⏮", "⏩", "⏪", "⏫", "⏬", "◀", "🔼", "🔽", "➡", "⬅", "⬆", "⬇", "↪", "↩", "🔀", "🔁", "🔂", "🔄", "🔃", "🎵", "🎶", "♾", "💲", "💱", "©", "®", "➰", "➿", "🔚", "🔙", "🔛", "🔝", "🔜", "🔘", "⚪", "⚫", "🔴", "🔵", "🟤", "🟣", "🟢", "🟡", "🟠", "🔺", "🔻", "🔸", "🔹", "🔶", "🔷", "🔳", "🔲", "▪", "▫", "◾", "◽", "◼", "◻", "⬛", "⬜", "🟧", "🟦", "🟥", "🟫", "🟪", "🟩", "🟨", "🔈", "🔇", "🔉", "🔊", "🔔", "🔕", "📣", "📢", "🗨", "💬", "💭", "🗯", "🃏", "🎴", "🀄", "🕐", "🕑", "🕒", "🕓", "🕔", "🕕", "🕖", "🕗", "🕘", "🕙", "🕚", "🕛", "🕜", "🕝", "🕞", "🕟", "🕠", "🕡", "🕢", "🕣", "🕤", "🕥", "🕦", "🕧", "⚧", "🏳", "🏴", "🏁", "🚩", "🇦", "🇩", "🇧", "🇮", "🇻", "🇰", "🇨", "🇹", "🇭", "🇪", "🇸", "🇬", "🇫", "🇵", "🇯", "🎌", "🇽", "🇱", "🇲", "🇾", "🇳", "🇴", "🇶", "🇷", "🇼", "🇿", "🇺", "🏻", "🏼", "🏽", "🏾", "🏿"] - }; - function A(F) { - var A = []; - return x.each(F.o.plugins.emoji.emojiList, function (E, B) { - if (x.isArray(B)) { - var C = B[0], - D = B[1], - e = '' + C + '', - i = "emoji-" + C.replace(/:/g, ""), - o = { - hasIcon: !1, - text: e, - fn: function fn() { - return F.execCmd("insertImage", D, !1, !0), !0; - } - }; - F.addBtnDef(i, o), A.push(i); - } else { - var n = "emoji-" + B.replace(/:/g, ""), - m = { - text: B, - fn: function fn() { - var x = String.fromCodePoint(B.replace("&#", "0")); - return F.execCmd("insertText", x), !0; - } - }; - F.addBtnDef(n, m), A.push(n); - } - }), A; - } - x.extend(!0, x.trumbowyg, { - langs: { - en: { - emoji: "Add an emoji" - }, - az: { - emoji: "Emoji yerləşdir" - }, - ca: { - emoji: "Afegir una emoticona" - }, - da: { - emoji: "Tilføj et humørikon" - }, - de: { - emoji: "Emoticon einfügen" - }, - es: { - emoji: "Añadir un emoticono" - }, - et: { - emoji: "Lisa emotikon" - }, - fr: { - emoji: "Ajouter un emoji" - }, - hu: { - emoji: "Emoji beszúrás" - }, - ja: { - emoji: "絵文字の挿入" - }, - ko: { - emoji: "이모지 넣기" - }, - ru: { - emoji: "Вставить emoji" - }, - sl: { - emoji: "Vstavi emotikon" - }, - tr: { - emoji: "Emoji ekle" - }, - zh_cn: { - emoji: "添加表情" - } - }, - plugins: { - emoji: { - init: function init(x) { - x.o.plugins.emoji = x.o.plugins.emoji || F; - var E = { - dropdown: A(x) - }; - x.addBtnDef("emoji", E); - } + zh_cn: { + emoji: "添加表情" + } + }, + plugins: { + emoji: { + init: function init(x) { + x.o.plugins.emoji = x.o.plugins.emoji || F; + var E = { + dropdown: A(x) + }; + x.addBtnDef("emoji", E); + } } } }); @@ -2316,25 +2056,285 @@ langs: { // jshint camelcase:false en: { - giphy: 'Insert GIF' + fontFamily: 'Font' }, az: { - giphy: 'GIF yerləşdir' + fontFamily: 'Şrift' }, by: { - giphy: 'Уставіць GIF' + fontFamily: 'Шрыфт' + }, + ca: { + fontFamily: 'Font' + }, + da: { + fontFamily: 'Skrifttype' + }, + de: { + fontFamily: 'Schriftart' + }, + es: { + fontFamily: 'Fuente' }, et: { - giphy: 'Sisesta GIF' + fontFamily: 'Font' }, fr: { - giphy: 'Insérer un GIF' + fontFamily: 'Police' }, hu: { - giphy: 'GIF beszúrás' + fontFamily: 'Betűtípus' }, - ru: { - giphy: 'Вставить GIF' + ko: { + fontFamily: '글꼴' + }, + nl: { + fontFamily: 'Lettertype' + }, + pt_br: { + fontFamily: 'Fonte' + }, + ru: { + fontFamily: 'Шрифт' + }, + sl: { + fontFamily: 'Pisava' + }, + tr: { + fontFamily: 'Yazı tipi' + }, + zh_tw: { + fontFamily: '字體' + } + } + }); + // jshint camelcase:true + + var defaultOptions = { + fontList: [{ + name: 'Arial', + family: 'Arial, Helvetica, sans-serif' + }, { + name: 'Arial Black', + family: 'Arial Black, Gadget, sans-serif' + }, { + name: 'Comic Sans', + family: 'Comic Sans MS, Textile, cursive, sans-serif' + }, { + name: 'Courier New', + family: 'Courier New, Courier, monospace' + }, { + name: 'Georgia', + family: 'Georgia, serif' + }, { + name: 'Impact', + family: 'Impact, Charcoal, sans-serif' + }, { + name: 'Lucida Console', + family: 'Lucida Console, Monaco, monospace' + }, { + name: 'Lucida Sans', + family: 'Lucida Sans Uncide, Lucida Grande, sans-serif' + }, { + name: 'Palatino', + family: 'Palatino Linotype, Book Antiqua, Palatino, serif' + }, { + name: 'Tahoma', + family: 'Tahoma, Geneva, sans-serif' + }, { + name: 'Times New Roman', + family: 'Times New Roman, Times, serif' + }, { + name: 'Trebuchet', + family: 'Trebuchet MS, Helvetica, sans-serif' + }, { + name: 'Verdana', + family: 'Verdana, Geneva, sans-serif' + }] + }; + + // Add dropdown with web safe fonts + $.extend(true, $.trumbowyg, { + plugins: { + fontfamily: { + init: function init(trumbowyg) { + trumbowyg.o.plugins.fontfamily = $.extend({}, defaultOptions, trumbowyg.o.plugins.fontfamily || {}); + trumbowyg.addBtnDef('fontfamily', { + dropdown: buildDropdown(trumbowyg), + hasIcon: false, + text: trumbowyg.lang.fontFamily + }); + } + } + } + }); + function buildDropdown(trumbowyg) { + var dropdown = []; + $.each(trumbowyg.o.plugins.fontfamily.fontList, function (index, font) { + trumbowyg.addBtnDef('fontfamily_' + index, { + title: '' + font.name + '', + hasIcon: false, + fn: function fn() { + trumbowyg.execCmd('fontName', font.family, true); + } + }); + dropdown.push('fontfamily_' + index); + }); + return dropdown; + } +})(jQuery); +!function (a) { + "use strict"; + + a.extend(!0, a.trumbowyg, { + langs: { + en: { + fontFamily: "Font" + }, + az: { + fontFamily: "Şrift" + }, + by: { + fontFamily: "Шрыфт" + }, + ca: { + fontFamily: "Font" + }, + da: { + fontFamily: "Skrifttype" + }, + de: { + fontFamily: "Schriftart" + }, + es: { + fontFamily: "Fuente" + }, + et: { + fontFamily: "Font" + }, + fr: { + fontFamily: "Police" + }, + hu: { + fontFamily: "Betűtípus" + }, + ko: { + fontFamily: "글꼴" + }, + nl: { + fontFamily: "Lettertype" + }, + pt_br: { + fontFamily: "Fonte" + }, + ru: { + fontFamily: "Шрифт" + }, + sl: { + fontFamily: "Pisava" + }, + tr: { + fontFamily: "Yazı tipi" + }, + zh_tw: { + fontFamily: "字體" + } + } + }); + var n = { + fontList: [{ + name: "Arial", + family: "Arial, Helvetica, sans-serif" + }, { + name: "Arial Black", + family: "Arial Black, Gadget, sans-serif" + }, { + name: "Comic Sans", + family: "Comic Sans MS, Textile, cursive, sans-serif" + }, { + name: "Courier New", + family: "Courier New, Courier, monospace" + }, { + name: "Georgia", + family: "Georgia, serif" + }, { + name: "Impact", + family: "Impact, Charcoal, sans-serif" + }, { + name: "Lucida Console", + family: "Lucida Console, Monaco, monospace" + }, { + name: "Lucida Sans", + family: "Lucida Sans Uncide, Lucida Grande, sans-serif" + }, { + name: "Palatino", + family: "Palatino Linotype, Book Antiqua, Palatino, serif" + }, { + name: "Tahoma", + family: "Tahoma, Geneva, sans-serif" + }, { + name: "Times New Roman", + family: "Times New Roman, Times, serif" + }, { + name: "Trebuchet", + family: "Trebuchet MS, Helvetica, sans-serif" + }, { + name: "Verdana", + family: "Verdana, Geneva, sans-serif" + }] + }; + function i(n) { + var i = []; + return a.each(n.o.plugins.fontfamily.fontList, function (a, e) { + n.addBtnDef("fontfamily_" + a, { + title: '' + e.name + "", + hasIcon: !1, + fn: function fn() { + n.execCmd("fontName", e.family, !0); + } + }), i.push("fontfamily_" + a); + }), i; + } + a.extend(!0, a.trumbowyg, { + plugins: { + fontfamily: { + init: function init(e) { + e.o.plugins.fontfamily = a.extend({}, n, e.o.plugins.fontfamily || {}), e.addBtnDef("fontfamily", { + dropdown: i(e), + hasIcon: !1, + text: e.lang.fontFamily + }); + } + } + } + }); +}(jQuery); +(function ($) { + 'use strict'; + + $.extend(true, $.trumbowyg, { + langs: { + // jshint camelcase:false + en: { + giphy: 'Insert GIF' + }, + az: { + giphy: 'GIF yerləşdir' + }, + by: { + giphy: 'Уставіць GIF' + }, + et: { + giphy: 'Sisesta GIF' + }, + fr: { + giphy: 'Insérer un GIF' + }, + hu: { + giphy: 'GIF beszúrás' + }, + ru: { + giphy: 'Вставить GIF' }, sl: { giphy: 'Vstavi GIF' @@ -3064,221 +3064,6 @@ } }); }(jQuery); -/*/* =========================================================== - * trumbowyg.insertaudio.js v1.0 - * InsertAudio plugin for Trumbowyg - * http://alex-d.github.com/Trumbowyg - * =========================================================== - * Author : Adam Hess (AdamHess) - */ - -(function ($) { - 'use strict'; - - var insertAudioOptions = { - src: { - label: 'URL', - required: true - }, - autoplay: { - label: 'AutoPlay', - required: false, - type: 'checkbox' - }, - muted: { - label: 'Muted', - required: false, - type: 'checkbox' - }, - preload: { - label: 'preload options', - required: false - } - }; - $.extend(true, $.trumbowyg, { - langs: { - // jshint camelcase:false - en: { - insertAudio: 'Insert Audio' - }, - az: { - insertAudio: 'Səs yerləşdir' - }, - by: { - insertAudio: 'Уставіць аўдыё' - }, - ca: { - insertAudio: 'Inserir Audio' - }, - da: { - insertAudio: 'Indsæt lyd' - }, - es: { - insertAudio: 'Insertar Audio' - }, - et: { - insertAudio: 'Lisa helifail' - }, - fr: { - insertAudio: 'Insérer un son' - }, - hu: { - insertAudio: 'Audio beszúrás' - }, - ja: { - insertAudio: '音声の挿入' - }, - ko: { - insertAudio: '소리 넣기' - }, - pt_br: { - insertAudio: 'Inserir áudio' - }, - ru: { - insertAudio: 'Вставить аудио' - }, - sl: { - insertAudio: 'Vstavi zvočno datoteko' - }, - tr: { - insertAudio: 'Ses Ekle' - } - // jshint camelcase:true - }, - - plugins: { - insertAudio: { - init: function init(trumbowyg) { - var btnDef = { - fn: function fn() { - var insertAudioCallback = function insertAudioCallback(v) { - // controls should always be show otherwise the audio will - // be invisible defeating the point of a wysiwyg - var html = '