update vor token
This commit is contained in:
1 parent
bbace0411f
commit
4c4d27bf48
2069 files changed
+493200
-150
No files matched your search
@@ -0,0 +1,27 @@
|
||||
using System.Web;
|
||||
using System.Web.Optimization;
|
||||
|
||||
namespace OnDocWeb
|
||||
{
|
||||
public class BundleConfig
|
||||
{
|
||||
// Weitere Informationen zur Bündelung finden Sie unter https://go.microsoft.com/fwlink/?LinkId=301862.
|
||||
public static void RegisterBundles(BundleCollection bundles)
|
||||
{
|
||||
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
|
||||
"~/Scripts/jquery-{version}.js"));
|
||||
|
||||
// Verwenden Sie die Entwicklungsversion von Modernizr zum Entwickeln und Erweitern Ihrer Kenntnisse. Wenn Sie dann
|
||||
// bereit ist für die Produktion, verwenden Sie das Buildtool unter https://modernizr.com, um nur die benötigten Tests auszuwählen.
|
||||
bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
|
||||
"~/Scripts/modernizr-*"));
|
||||
|
||||
bundles.Add(new Bundle("~/bundles/bootstrap").Include(
|
||||
"~/Scripts/bootstrap.js"));
|
||||
|
||||
bundles.Add(new StyleBundle("~/Content/css").Include(
|
||||
"~/Content/bootstrap.css",
|
||||
"~/Content/site.css"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
using System.Web;
|
||||
using System.Web.Mvc;
|
||||
|
||||
namespace OnDocWeb
|
||||
{
|
||||
public class FilterConfig
|
||||
{
|
||||
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
|
||||
{
|
||||
filters.Add(new HandleErrorAttribute());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Routing;
|
||||
|
||||
namespace OnDocWeb
|
||||
{
|
||||
public class RouteConfig
|
||||
{
|
||||
public static void RegisterRoutes(RouteCollection routes)
|
||||
{
|
||||
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
|
||||
|
||||
routes.MapRoute(
|
||||
name: "Default",
|
||||
url: "{controller}/{action}/{id}",
|
||||
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web.Http;
|
||||
|
||||
namespace OnDocWeb
|
||||
{
|
||||
public static class WebApiConfig
|
||||
{
|
||||
public static void Register(HttpConfiguration config)
|
||||
{
|
||||
// Web-API-Konfiguration und -Dienste
|
||||
|
||||
// Web-API-Routen
|
||||
config.MapHttpAttributeRoutes();
|
||||
|
||||
config.Routes.MapHttpRoute(
|
||||
name: "DefaultApi",
|
||||
routeTemplate: "api/{controller}/{id}",
|
||||
defaults: new { id = RouteParameter.Optional }
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
using System;
|
||||
using System.Text;
|
||||
using System.Web;
|
||||
using System.Web.Http.Description;
|
||||
|
||||
namespace OnDocWeb.Areas.HelpPage
|
||||
{
|
||||
public static class ApiDescriptionExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Generates an URI-friendly ID for the <see cref="ApiDescription"/>. E.g. "Get-Values-id_name" instead of "GetValues/{id}?name={name}"
|
||||
/// </summary>
|
||||
/// <param name="description">The <see cref="ApiDescription"/>.</param>
|
||||
/// <returns>The ID as a string.</returns>
|
||||
public static string GetFriendlyId(this ApiDescription description)
|
||||
{
|
||||
string path = description.RelativePath;
|
||||
string[] urlParts = path.Split('?');
|
||||
string localPath = urlParts[0];
|
||||
string queryKeyString = null;
|
||||
if (urlParts.Length > 1)
|
||||
{
|
||||
string query = urlParts[1];
|
||||
string[] queryKeys = HttpUtility.ParseQueryString(query).AllKeys;
|
||||
queryKeyString = String.Join("_", queryKeys);
|
||||
}
|
||||
|
||||
StringBuilder friendlyPath = new StringBuilder();
|
||||
friendlyPath.AppendFormat("{0}-{1}",
|
||||
description.HttpMethod.Method,
|
||||
localPath.Replace("/", "-").Replace("{", String.Empty).Replace("}", String.Empty));
|
||||
if (queryKeyString != null)
|
||||
{
|
||||
friendlyPath.AppendFormat("_{0}", queryKeyString.Replace('.', '-'));
|
||||
}
|
||||
return friendlyPath.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
// Uncomment the following to provide samples for PageResult<T>. Must also add the Microsoft.AspNet.WebApi.OData
|
||||
// package to your project.
|
||||
////#define Handle_PageResultOfT
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
using System.Net.Http.Headers;
|
||||
using System.Reflection;
|
||||
using System.Web;
|
||||
using System.Web.Http;
|
||||
#if Handle_PageResultOfT
|
||||
using System.Web.Http.OData;
|
||||
#endif
|
||||
|
||||
namespace OnDocWeb.Areas.HelpPage
|
||||
{
|
||||
/// <summary>
|
||||
/// Use this class to customize the Help Page.
|
||||
/// For example you can set a custom <see cref="System.Web.Http.Description.IDocumentationProvider"/> to supply the documentation
|
||||
/// or you can provide the samples for the requests/responses.
|
||||
/// </summary>
|
||||
public static class HelpPageConfig
|
||||
{
|
||||
[SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters",
|
||||
MessageId = "OnDocWeb.Areas.HelpPage.TextSample.#ctor(System.String)",
|
||||
Justification = "End users may choose to merge this string with existing localized resources.")]
|
||||
[SuppressMessage("Microsoft.Naming", "CA2204:Literals should be spelled correctly",
|
||||
MessageId = "bsonspec",
|
||||
Justification = "Part of a URI.")]
|
||||
public static void Register(HttpConfiguration config)
|
||||
{
|
||||
//// Uncomment the following to use the documentation from XML documentation file.
|
||||
//config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/XmlDocument.xml")));
|
||||
|
||||
//// Uncomment the following to use "sample string" as the sample for all actions that have string as the body parameter or return type.
|
||||
//// Also, the string arrays will be used for IEnumerable<string>. The sample objects will be serialized into different media type
|
||||
//// formats by the available formatters.
|
||||
//config.SetSampleObjects(new Dictionary<Type, object>
|
||||
//{
|
||||
// {typeof(string), "sample string"},
|
||||
// {typeof(IEnumerable<string>), new string[]{"sample 1", "sample 2"}}
|
||||
//});
|
||||
|
||||
// Extend the following to provide factories for types not handled automatically (those lacking parameterless
|
||||
// constructors) or for which you prefer to use non-default property values. Line below provides a fallback
|
||||
// since automatic handling will fail and GeneratePageResult handles only a single type.
|
||||
#if Handle_PageResultOfT
|
||||
config.GetHelpPageSampleGenerator().SampleObjectFactories.Add(GeneratePageResult);
|
||||
#endif
|
||||
|
||||
// Extend the following to use a preset object directly as the sample for all actions that support a media
|
||||
// type, regardless of the body parameter or return type. The lines below avoid display of binary content.
|
||||
// The BsonMediaTypeFormatter (if available) is not used to serialize the TextSample object.
|
||||
config.SetSampleForMediaType(
|
||||
new TextSample("Binary JSON content. See http://bsonspec.org for details."),
|
||||
new MediaTypeHeaderValue("application/bson"));
|
||||
|
||||
//// Uncomment the following to use "[0]=foo&[1]=bar" directly as the sample for all actions that support form URL encoded format
|
||||
//// and have IEnumerable<string> as the body parameter or return type.
|
||||
//config.SetSampleForType("[0]=foo&[1]=bar", new MediaTypeHeaderValue("application/x-www-form-urlencoded"), typeof(IEnumerable<string>));
|
||||
|
||||
//// Uncomment the following to use "1234" directly as the request sample for media type "text/plain" on the controller named "Values"
|
||||
//// and action named "Put".
|
||||
//config.SetSampleRequest("1234", new MediaTypeHeaderValue("text/plain"), "Values", "Put");
|
||||
|
||||
//// Uncomment the following to use the image on "../images/aspNetHome.png" directly as the response sample for media type "image/png"
|
||||
//// on the controller named "Values" and action named "Get" with parameter "id".
|
||||
//config.SetSampleResponse(new ImageSample("../images/aspNetHome.png"), new MediaTypeHeaderValue("image/png"), "Values", "Get", "id");
|
||||
|
||||
//// Uncomment the following to correct the sample request when the action expects an HttpRequestMessage with ObjectContent<string>.
|
||||
//// The sample will be generated as if the controller named "Values" and action named "Get" were having string as the body parameter.
|
||||
//config.SetActualRequestType(typeof(string), "Values", "Get");
|
||||
|
||||
//// Uncomment the following to correct the sample response when the action returns an HttpResponseMessage with ObjectContent<string>.
|
||||
//// The sample will be generated as if the controller named "Values" and action named "Post" were returning a string.
|
||||
//config.SetActualResponseType(typeof(string), "Values", "Post");
|
||||
}
|
||||
|
||||
#if Handle_PageResultOfT
|
||||
private static object GeneratePageResult(HelpPageSampleGenerator sampleGenerator, Type type)
|
||||
{
|
||||
if (type.IsGenericType)
|
||||
{
|
||||
Type openGenericType = type.GetGenericTypeDefinition();
|
||||
if (openGenericType == typeof(PageResult<>))
|
||||
{
|
||||
// Get the T in PageResult<T>
|
||||
Type[] typeParameters = type.GetGenericArguments();
|
||||
Debug.Assert(typeParameters.Length == 1);
|
||||
|
||||
// Create an enumeration to pass as the first parameter to the PageResult<T> constuctor
|
||||
Type itemsType = typeof(List<>).MakeGenericType(typeParameters);
|
||||
object items = sampleGenerator.GetSampleObject(itemsType);
|
||||
|
||||
// Fill in the other information needed to invoke the PageResult<T> constuctor
|
||||
Type[] parameterTypes = new Type[] { itemsType, typeof(Uri), typeof(long?), };
|
||||
object[] parameters = new object[] { items, null, (long)ObjectGenerator.DefaultCollectionSize, };
|
||||
|
||||
// Call PageResult(IEnumerable<T> items, Uri nextPageLink, long? count) constructor
|
||||
ConstructorInfo constructor = type.GetConstructor(parameterTypes);
|
||||
return constructor.Invoke(parameters);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
using System;
|
||||
using System.Web.Http;
|
||||
using System.Web.Mvc;
|
||||
using OnDocWeb.Areas.HelpPage.ModelDescriptions;
|
||||
using OnDocWeb.Areas.HelpPage.Models;
|
||||
|
||||
namespace OnDocWeb.Areas.HelpPage.Controllers
|
||||
{
|
||||
/// <summary>
|
||||
/// The controller that will handle requests for the help page.
|
||||
/// </summary>
|
||||
public class HelpController : Controller
|
||||
{
|
||||
private const string ErrorViewName = "Error";
|
||||
|
||||
public HelpController()
|
||||
: this(GlobalConfiguration.Configuration)
|
||||
{
|
||||
}
|
||||
|
||||
public HelpController(HttpConfiguration config)
|
||||
{
|
||||
Configuration = config;
|
||||
}
|
||||
|
||||
public HttpConfiguration Configuration { get; private set; }
|
||||
|
||||
public ActionResult Index()
|
||||
{
|
||||
ViewBag.DocumentationProvider = Configuration.Services.GetDocumentationProvider();
|
||||
return View(Configuration.Services.GetApiExplorer().ApiDescriptions);
|
||||
}
|
||||
|
||||
public ActionResult Api(string apiId)
|
||||
{
|
||||
if (!String.IsNullOrEmpty(apiId))
|
||||
{
|
||||
HelpPageApiModel apiModel = Configuration.GetHelpPageApiModel(apiId);
|
||||
if (apiModel != null)
|
||||
{
|
||||
return View(apiModel);
|
||||
}
|
||||
}
|
||||
|
||||
return View(ErrorViewName);
|
||||
}
|
||||
|
||||
public ActionResult ResourceModel(string modelName)
|
||||
{
|
||||
if (!String.IsNullOrEmpty(modelName))
|
||||
{
|
||||
ModelDescriptionGenerator modelDescriptionGenerator = Configuration.GetModelDescriptionGenerator();
|
||||
ModelDescription modelDescription;
|
||||
if (modelDescriptionGenerator.GeneratedModels.TryGetValue(modelName, out modelDescription))
|
||||
{
|
||||
return View(modelDescription);
|
||||
}
|
||||
}
|
||||
|
||||
return View(ErrorViewName);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,134 @@
|
||||
.help-page h1,
|
||||
.help-page .h1,
|
||||
.help-page h2,
|
||||
.help-page .h2,
|
||||
.help-page h3,
|
||||
.help-page .h3,
|
||||
#body.help-page,
|
||||
.help-page-table th,
|
||||
.help-page-table pre,
|
||||
.help-page-table p {
|
||||
font-family: "Segoe UI Light", Frutiger, "Frutiger Linotype", "Dejavu Sans", "Helvetica Neue", Arial, sans-serif;
|
||||
}
|
||||
|
||||
.help-page pre.wrapped {
|
||||
white-space: -moz-pre-wrap;
|
||||
white-space: -pre-wrap;
|
||||
white-space: -o-pre-wrap;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
.help-page .warning-message-container {
|
||||
margin-top: 20px;
|
||||
padding: 0 10px;
|
||||
color: #525252;
|
||||
background: #EFDCA9;
|
||||
border: 1px solid #CCCCCC;
|
||||
}
|
||||
|
||||
.help-page-table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
text-align: left;
|
||||
margin: 0px 0px 20px 0px;
|
||||
border-top: 1px solid #D4D4D4;
|
||||
}
|
||||
|
||||
.help-page-table th {
|
||||
text-align: left;
|
||||
font-weight: bold;
|
||||
border-bottom: 1px solid #D4D4D4;
|
||||
padding: 5px 6px 5px 6px;
|
||||
}
|
||||
|
||||
.help-page-table td {
|
||||
border-bottom: 1px solid #D4D4D4;
|
||||
padding: 10px 8px 10px 8px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.help-page-table pre,
|
||||
.help-page-table p {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
font-family: inherit;
|
||||
font-size: 100%;
|
||||
}
|
||||
|
||||
.help-page-table tbody tr:hover td {
|
||||
background-color: #F3F3F3;
|
||||
}
|
||||
|
||||
.help-page a:hover {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.help-page .sample-header {
|
||||
border: 2px solid #D4D4D4;
|
||||
background: #00497E;
|
||||
color: #FFFFFF;
|
||||
padding: 8px 15px;
|
||||
border-bottom: none;
|
||||
display: inline-block;
|
||||
margin: 10px 0px 0px 0px;
|
||||
}
|
||||
|
||||
.help-page .sample-content {
|
||||
display: block;
|
||||
border-width: 0;
|
||||
padding: 15px 20px;
|
||||
background: #FFFFFF;
|
||||
border: 2px solid #D4D4D4;
|
||||
margin: 0px 0px 10px 0px;
|
||||
}
|
||||
|
||||
.help-page .api-name {
|
||||
width: 40%;
|
||||
}
|
||||
|
||||
.help-page .api-documentation {
|
||||
width: 60%;
|
||||
}
|
||||
|
||||
.help-page .parameter-name {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
.help-page .parameter-documentation {
|
||||
width: 40%;
|
||||
}
|
||||
|
||||
.help-page .parameter-type {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
.help-page .parameter-annotations {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
.help-page h1,
|
||||
.help-page .h1 {
|
||||
font-size: 36px;
|
||||
line-height: normal;
|
||||
}
|
||||
|
||||
.help-page h2,
|
||||
.help-page .h2 {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
.help-page h3,
|
||||
.help-page .h3 {
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
#body.help-page {
|
||||
font-size: 14px;
|
||||
line-height: 143%;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.help-page a {
|
||||
color: #0000EE;
|
||||
text-decoration: none;
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
using System.Web.Http;
|
||||
using System.Web.Mvc;
|
||||
|
||||
namespace OnDocWeb.Areas.HelpPage
|
||||
{
|
||||
public class HelpPageAreaRegistration : AreaRegistration
|
||||
{
|
||||
public override string AreaName
|
||||
{
|
||||
get
|
||||
{
|
||||
return "HelpPage";
|
||||
}
|
||||
}
|
||||
|
||||
public override void RegisterArea(AreaRegistrationContext context)
|
||||
{
|
||||
context.MapRoute(
|
||||
"HelpPage_Default",
|
||||
"Help/{action}/{apiId}",
|
||||
new { controller = "Help", action = "Index", apiId = UrlParameter.Optional });
|
||||
|
||||
HelpPageConfig.Register(GlobalConfiguration.Configuration);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,467 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Net.Http.Headers;
|
||||
using System.Web.Http;
|
||||
using System.Web.Http.Controllers;
|
||||
using System.Web.Http.Description;
|
||||
using OnDocWeb.Areas.HelpPage.ModelDescriptions;
|
||||
using OnDocWeb.Areas.HelpPage.Models;
|
||||
|
||||
namespace OnDocWeb.Areas.HelpPage
|
||||
{
|
||||
public static class HelpPageConfigurationExtensions
|
||||
{
|
||||
private const string ApiModelPrefix = "MS_HelpPageApiModel_";
|
||||
|
||||
/// <summary>
|
||||
/// Sets the documentation provider for help page.
|
||||
/// </summary>
|
||||
/// <param name="config">The <see cref="HttpConfiguration"/>.</param>
|
||||
/// <param name="documentationProvider">The documentation provider.</param>
|
||||
public static void SetDocumentationProvider(this HttpConfiguration config, IDocumentationProvider documentationProvider)
|
||||
{
|
||||
config.Services.Replace(typeof(IDocumentationProvider), documentationProvider);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets the objects that will be used by the formatters to produce sample requests/responses.
|
||||
/// </summary>
|
||||
/// <param name="config">The <see cref="HttpConfiguration"/>.</param>
|
||||
/// <param name="sampleObjects">The sample objects.</param>
|
||||
public static void SetSampleObjects(this HttpConfiguration config, IDictionary<Type, object> sampleObjects)
|
||||
{
|
||||
config.GetHelpPageSampleGenerator().SampleObjects = sampleObjects;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets the sample request directly for the specified media type and action.
|
||||
/// </summary>
|
||||
/// <param name="config">The <see cref="HttpConfiguration"/>.</param>
|
||||
/// <param name="sample">The sample request.</param>
|
||||
/// <param name="mediaType">The media type.</param>
|
||||
/// <param name="controllerName">Name of the controller.</param>
|
||||
/// <param name="actionName">Name of the action.</param>
|
||||
public static void SetSampleRequest(this HttpConfiguration config, object sample, MediaTypeHeaderValue mediaType, string controllerName, string actionName)
|
||||
{
|
||||
config.GetHelpPageSampleGenerator().ActionSamples.Add(new HelpPageSampleKey(mediaType, SampleDirection.Request, controllerName, actionName, new[] { "*" }), sample);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets the sample request directly for the specified media type and action with parameters.
|
||||
/// </summary>
|
||||
/// <param name="config">The <see cref="HttpConfiguration"/>.</param>
|
||||
/// <param name="sample">The sample request.</param>
|
||||
/// <param name="mediaType">The media type.</param>
|
||||
/// <param name="controllerName">Name of the controller.</param>
|
||||
/// <param name="actionName">Name of the action.</param>
|
||||
/// <param name="parameterNames">The parameter names.</param>
|
||||
public static void SetSampleRequest(this HttpConfiguration config, object sample, MediaTypeHeaderValue mediaType, string controllerName, string actionName, params string[] parameterNames)
|
||||
{
|
||||
config.GetHelpPageSampleGenerator().ActionSamples.Add(new HelpPageSampleKey(mediaType, SampleDirection.Request, controllerName, actionName, parameterNames), sample);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets the sample request directly for the specified media type of the action.
|
||||
/// </summary>
|
||||
/// <param name="config">The <see cref="HttpConfiguration"/>.</param>
|
||||
/// <param name="sample">The sample response.</param>
|
||||
/// <param name="mediaType">The media type.</param>
|
||||
/// <param name="controllerName">Name of the controller.</param>
|
||||
/// <param name="actionName">Name of the action.</param>
|
||||
public static void SetSampleResponse(this HttpConfiguration config, object sample, MediaTypeHeaderValue mediaType, string controllerName, string actionName)
|
||||
{
|
||||
config.GetHelpPageSampleGenerator().ActionSamples.Add(new HelpPageSampleKey(mediaType, SampleDirection.Response, controllerName, actionName, new[] { "*" }), sample);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets the sample response directly for the specified media type of the action with specific parameters.
|
||||
/// </summary>
|
||||
/// <param name="config">The <see cref="HttpConfiguration"/>.</param>
|
||||
/// <param name="sample">The sample response.</param>
|
||||
/// <param name="mediaType">The media type.</param>
|
||||
/// <param name="controllerName">Name of the controller.</param>
|
||||
/// <param name="actionName">Name of the action.</param>
|
||||
/// <param name="parameterNames">The parameter names.</param>
|
||||
public static void SetSampleResponse(this HttpConfiguration config, object sample, MediaTypeHeaderValue mediaType, string controllerName, string actionName, params string[] parameterNames)
|
||||
{
|
||||
config.GetHelpPageSampleGenerator().ActionSamples.Add(new HelpPageSampleKey(mediaType, SampleDirection.Response, controllerName, actionName, parameterNames), sample);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets the sample directly for all actions with the specified media type.
|
||||
/// </summary>
|
||||
/// <param name="config">The <see cref="HttpConfiguration"/>.</param>
|
||||
/// <param name="sample">The sample.</param>
|
||||
/// <param name="mediaType">The media type.</param>
|
||||
public static void SetSampleForMediaType(this HttpConfiguration config, object sample, MediaTypeHeaderValue mediaType)
|
||||
{
|
||||
config.GetHelpPageSampleGenerator().ActionSamples.Add(new HelpPageSampleKey(mediaType), sample);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets the sample directly for all actions with the specified type and media type.
|
||||
/// </summary>
|
||||
/// <param name="config">The <see cref="HttpConfiguration"/>.</param>
|
||||
/// <param name="sample">The sample.</param>
|
||||
/// <param name="mediaType">The media type.</param>
|
||||
/// <param name="type">The parameter type or return type of an action.</param>
|
||||
public static void SetSampleForType(this HttpConfiguration config, object sample, MediaTypeHeaderValue mediaType, Type type)
|
||||
{
|
||||
config.GetHelpPageSampleGenerator().ActionSamples.Add(new HelpPageSampleKey(mediaType, type), sample);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Specifies the actual type of <see cref="System.Net.Http.ObjectContent{T}"/> passed to the <see cref="System.Net.Http.HttpRequestMessage"/> in an action.
|
||||
/// The help page will use this information to produce more accurate request samples.
|
||||
/// </summary>
|
||||
/// <param name="config">The <see cref="HttpConfiguration"/>.</param>
|
||||
/// <param name="type">The type.</param>
|
||||
/// <param name="controllerName">Name of the controller.</param>
|
||||
/// <param name="actionName">Name of the action.</param>
|
||||
public static void SetActualRequestType(this HttpConfiguration config, Type type, string controllerName, string actionName)
|
||||
{
|
||||
config.GetHelpPageSampleGenerator().ActualHttpMessageTypes.Add(new HelpPageSampleKey(SampleDirection.Request, controllerName, actionName, new[] { "*" }), type);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Specifies the actual type of <see cref="System.Net.Http.ObjectContent{T}"/> passed to the <see cref="System.Net.Http.HttpRequestMessage"/> in an action.
|
||||
/// The help page will use this information to produce more accurate request samples.
|
||||
/// </summary>
|
||||
/// <param name="config">The <see cref="HttpConfiguration"/>.</param>
|
||||
/// <param name="type">The type.</param>
|
||||
/// <param name="controllerName">Name of the controller.</param>
|
||||
/// <param name="actionName">Name of the action.</param>
|
||||
/// <param name="parameterNames">The parameter names.</param>
|
||||
public static void SetActualRequestType(this HttpConfiguration config, Type type, string controllerName, string actionName, params string[] parameterNames)
|
||||
{
|
||||
config.GetHelpPageSampleGenerator().ActualHttpMessageTypes.Add(new HelpPageSampleKey(SampleDirection.Request, controllerName, actionName, parameterNames), type);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Specifies the actual type of <see cref="System.Net.Http.ObjectContent{T}"/> returned as part of the <see cref="System.Net.Http.HttpRequestMessage"/> in an action.
|
||||
/// The help page will use this information to produce more accurate response samples.
|
||||
/// </summary>
|
||||
/// <param name="config">The <see cref="HttpConfiguration"/>.</param>
|
||||
/// <param name="type">The type.</param>
|
||||
/// <param name="controllerName">Name of the controller.</param>
|
||||
/// <param name="actionName">Name of the action.</param>
|
||||
public static void SetActualResponseType(this HttpConfiguration config, Type type, string controllerName, string actionName)
|
||||
{
|
||||
config.GetHelpPageSampleGenerator().ActualHttpMessageTypes.Add(new HelpPageSampleKey(SampleDirection.Response, controllerName, actionName, new[] { "*" }), type);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Specifies the actual type of <see cref="System.Net.Http.ObjectContent{T}"/> returned as part of the <see cref="System.Net.Http.HttpRequestMessage"/> in an action.
|
||||
/// The help page will use this information to produce more accurate response samples.
|
||||
/// </summary>
|
||||
/// <param name="config">The <see cref="HttpConfiguration"/>.</param>
|
||||
/// <param name="type">The type.</param>
|
||||
/// <param name="controllerName">Name of the controller.</param>
|
||||
/// <param name="actionName">Name of the action.</param>
|
||||
/// <param name="parameterNames">The parameter names.</param>
|
||||
public static void SetActualResponseType(this HttpConfiguration config, Type type, string controllerName, string actionName, params string[] parameterNames)
|
||||
{
|
||||
config.GetHelpPageSampleGenerator().ActualHttpMessageTypes.Add(new HelpPageSampleKey(SampleDirection.Response, controllerName, actionName, parameterNames), type);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the help page sample generator.
|
||||
/// </summary>
|
||||
/// <param name="config">The <see cref="HttpConfiguration"/>.</param>
|
||||
/// <returns>The help page sample generator.</returns>
|
||||
public static HelpPageSampleGenerator GetHelpPageSampleGenerator(this HttpConfiguration config)
|
||||
{
|
||||
return (HelpPageSampleGenerator)config.Properties.GetOrAdd(
|
||||
typeof(HelpPageSampleGenerator),
|
||||
k => new HelpPageSampleGenerator());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets the help page sample generator.
|
||||
/// </summary>
|
||||
/// <param name="config">The <see cref="HttpConfiguration"/>.</param>
|
||||
/// <param name="sampleGenerator">The help page sample generator.</param>
|
||||
public static void SetHelpPageSampleGenerator(this HttpConfiguration config, HelpPageSampleGenerator sampleGenerator)
|
||||
{
|
||||
config.Properties.AddOrUpdate(
|
||||
typeof(HelpPageSampleGenerator),
|
||||
k => sampleGenerator,
|
||||
(k, o) => sampleGenerator);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the model description generator.
|
||||
/// </summary>
|
||||
/// <param name="config">The configuration.</param>
|
||||
/// <returns>The <see cref="ModelDescriptionGenerator"/></returns>
|
||||
public static ModelDescriptionGenerator GetModelDescriptionGenerator(this HttpConfiguration config)
|
||||
{
|
||||
return (ModelDescriptionGenerator)config.Properties.GetOrAdd(
|
||||
typeof(ModelDescriptionGenerator),
|
||||
k => InitializeModelDescriptionGenerator(config));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the model that represents an API displayed on the help page. The model is initialized on the first call and cached for subsequent calls.
|
||||
/// </summary>
|
||||
/// <param name="config">The <see cref="HttpConfiguration"/>.</param>
|
||||
/// <param name="apiDescriptionId">The <see cref="ApiDescription"/> ID.</param>
|
||||
/// <returns>
|
||||
/// An <see cref="HelpPageApiModel"/>
|
||||
/// </returns>
|
||||
public static HelpPageApiModel GetHelpPageApiModel(this HttpConfiguration config, string apiDescriptionId)
|
||||
{
|
||||
object model;
|
||||
string modelId = ApiModelPrefix + apiDescriptionId;
|
||||
if (!config.Properties.TryGetValue(modelId, out model))
|
||||
{
|
||||
Collection<ApiDescription> apiDescriptions = config.Services.GetApiExplorer().ApiDescriptions;
|
||||
ApiDescription apiDescription = apiDescriptions.FirstOrDefault(api => String.Equals(api.GetFriendlyId(), apiDescriptionId, StringComparison.OrdinalIgnoreCase));
|
||||
if (apiDescription != null)
|
||||
{
|
||||
model = GenerateApiModel(apiDescription, config);
|
||||
config.Properties.TryAdd(modelId, model);
|
||||
}
|
||||
}
|
||||
|
||||
return (HelpPageApiModel)model;
|
||||
}
|
||||
|
||||
private static HelpPageApiModel GenerateApiModel(ApiDescription apiDescription, HttpConfiguration config)
|
||||
{
|
||||
HelpPageApiModel apiModel = new HelpPageApiModel()
|
||||
{
|
||||
ApiDescription = apiDescription,
|
||||
};
|
||||
|
||||
ModelDescriptionGenerator modelGenerator = config.GetModelDescriptionGenerator();
|
||||
HelpPageSampleGenerator sampleGenerator = config.GetHelpPageSampleGenerator();
|
||||
GenerateUriParameters(apiModel, modelGenerator);
|
||||
GenerateRequestModelDescription(apiModel, modelGenerator, sampleGenerator);
|
||||
GenerateResourceDescription(apiModel, modelGenerator);
|
||||
GenerateSamples(apiModel, sampleGenerator);
|
||||
|
||||
return apiModel;
|
||||
}
|
||||
|
||||
private static void GenerateUriParameters(HelpPageApiModel apiModel, ModelDescriptionGenerator modelGenerator)
|
||||
{
|
||||
ApiDescription apiDescription = apiModel.ApiDescription;
|
||||
foreach (ApiParameterDescription apiParameter in apiDescription.ParameterDescriptions)
|
||||
{
|
||||
if (apiParameter.Source == ApiParameterSource.FromUri)
|
||||
{
|
||||
HttpParameterDescriptor parameterDescriptor = apiParameter.ParameterDescriptor;
|
||||
Type parameterType = null;
|
||||
ModelDescription typeDescription = null;
|
||||
ComplexTypeModelDescription complexTypeDescription = null;
|
||||
if (parameterDescriptor != null)
|
||||
{
|
||||
parameterType = parameterDescriptor.ParameterType;
|
||||
typeDescription = modelGenerator.GetOrCreateModelDescription(parameterType);
|
||||
complexTypeDescription = typeDescription as ComplexTypeModelDescription;
|
||||
}
|
||||
|
||||
// Example:
|
||||
// [TypeConverter(typeof(PointConverter))]
|
||||
// public class Point
|
||||
// {
|
||||
// public Point(int x, int y)
|
||||
// {
|
||||
// X = x;
|
||||
// Y = y;
|
||||
// }
|
||||
// public int X { get; set; }
|
||||
// public int Y { get; set; }
|
||||
// }
|
||||
// Class Point is bindable with a TypeConverter, so Point will be added to UriParameters collection.
|
||||
//
|
||||
// public class Point
|
||||
// {
|
||||
// public int X { get; set; }
|
||||
// public int Y { get; set; }
|
||||
// }
|
||||
// Regular complex class Point will have properties X and Y added to UriParameters collection.
|
||||
if (complexTypeDescription != null
|
||||
&& !IsBindableWithTypeConverter(parameterType))
|
||||
{
|
||||
foreach (ParameterDescription uriParameter in complexTypeDescription.Properties)
|
||||
{
|
||||
apiModel.UriParameters.Add(uriParameter);
|
||||
}
|
||||
}
|
||||
else if (parameterDescriptor != null)
|
||||
{
|
||||
ParameterDescription uriParameter =
|
||||
AddParameterDescription(apiModel, apiParameter, typeDescription);
|
||||
|
||||
if (!parameterDescriptor.IsOptional)
|
||||
{
|
||||
uriParameter.Annotations.Add(new ParameterAnnotation() { Documentation = "Required" });
|
||||
}
|
||||
|
||||
object defaultValue = parameterDescriptor.DefaultValue;
|
||||
if (defaultValue != null)
|
||||
{
|
||||
uriParameter.Annotations.Add(new ParameterAnnotation() { Documentation = "Default value is " + Convert.ToString(defaultValue, CultureInfo.InvariantCulture) });
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Assert(parameterDescriptor == null);
|
||||
|
||||
// If parameterDescriptor is null, this is an undeclared route parameter which only occurs
|
||||
// when source is FromUri. Ignored in request model and among resource parameters but listed
|
||||
// as a simple string here.
|
||||
ModelDescription modelDescription = modelGenerator.GetOrCreateModelDescription(typeof(string));
|
||||
AddParameterDescription(apiModel, apiParameter, modelDescription);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static bool IsBindableWithTypeConverter(Type parameterType)
|
||||
{
|
||||
if (parameterType == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return TypeDescriptor.GetConverter(parameterType).CanConvertFrom(typeof(string));
|
||||
}
|
||||
|
||||
private static ParameterDescription AddParameterDescription(HelpPageApiModel apiModel,
|
||||
ApiParameterDescription apiParameter, ModelDescription typeDescription)
|
||||
{
|
||||
ParameterDescription parameterDescription = new ParameterDescription
|
||||
{
|
||||
Name = apiParameter.Name,
|
||||
Documentation = apiParameter.Documentation,
|
||||
TypeDescription = typeDescription,
|
||||
};
|
||||
|
||||
apiModel.UriParameters.Add(parameterDescription);
|
||||
return parameterDescription;
|
||||
}
|
||||
|
||||
private static void GenerateRequestModelDescription(HelpPageApiModel apiModel, ModelDescriptionGenerator modelGenerator, HelpPageSampleGenerator sampleGenerator)
|
||||
{
|
||||
ApiDescription apiDescription = apiModel.ApiDescription;
|
||||
foreach (ApiParameterDescription apiParameter in apiDescription.ParameterDescriptions)
|
||||
{
|
||||
if (apiParameter.Source == ApiParameterSource.FromBody)
|
||||
{
|
||||
Type parameterType = apiParameter.ParameterDescriptor.ParameterType;
|
||||
apiModel.RequestModelDescription = modelGenerator.GetOrCreateModelDescription(parameterType);
|
||||
apiModel.RequestDocumentation = apiParameter.Documentation;
|
||||
}
|
||||
else if (apiParameter.ParameterDescriptor != null &&
|
||||
apiParameter.ParameterDescriptor.ParameterType == typeof(HttpRequestMessage))
|
||||
{
|
||||
Type parameterType = sampleGenerator.ResolveHttpRequestMessageType(apiDescription);
|
||||
|
||||
if (parameterType != null)
|
||||
{
|
||||
apiModel.RequestModelDescription = modelGenerator.GetOrCreateModelDescription(parameterType);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void GenerateResourceDescription(HelpPageApiModel apiModel, ModelDescriptionGenerator modelGenerator)
|
||||
{
|
||||
ResponseDescription response = apiModel.ApiDescription.ResponseDescription;
|
||||
Type responseType = response.ResponseType ?? response.DeclaredType;
|
||||
if (responseType != null && responseType != typeof(void))
|
||||
{
|
||||
apiModel.ResourceDescription = modelGenerator.GetOrCreateModelDescription(responseType);
|
||||
}
|
||||
}
|
||||
|
||||
[SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "The exception is recorded as ErrorMessages.")]
|
||||
private static void GenerateSamples(HelpPageApiModel apiModel, HelpPageSampleGenerator sampleGenerator)
|
||||
{
|
||||
try
|
||||
{
|
||||
foreach (var item in sampleGenerator.GetSampleRequests(apiModel.ApiDescription))
|
||||
{
|
||||
apiModel.SampleRequests.Add(item.Key, item.Value);
|
||||
LogInvalidSampleAsError(apiModel, item.Value);
|
||||
}
|
||||
|
||||
foreach (var item in sampleGenerator.GetSampleResponses(apiModel.ApiDescription))
|
||||
{
|
||||
apiModel.SampleResponses.Add(item.Key, item.Value);
|
||||
LogInvalidSampleAsError(apiModel, item.Value);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
apiModel.ErrorMessages.Add(String.Format(CultureInfo.CurrentCulture,
|
||||
"An exception has occurred while generating the sample. Exception message: {0}",
|
||||
HelpPageSampleGenerator.UnwrapException(e).Message));
|
||||
}
|
||||
}
|
||||
|
||||
private static bool TryGetResourceParameter(ApiDescription apiDescription, HttpConfiguration config, out ApiParameterDescription parameterDescription, out Type resourceType)
|
||||
{
|
||||
parameterDescription = apiDescription.ParameterDescriptions.FirstOrDefault(
|
||||
p => p.Source == ApiParameterSource.FromBody ||
|
||||
(p.ParameterDescriptor != null && p.ParameterDescriptor.ParameterType == typeof(HttpRequestMessage)));
|
||||
|
||||
if (parameterDescription == null)
|
||||
{
|
||||
resourceType = null;
|
||||
return false;
|
||||
}
|
||||
|
||||
resourceType = parameterDescription.ParameterDescriptor.ParameterType;
|
||||
|
||||
if (resourceType == typeof(HttpRequestMessage))
|
||||
{
|
||||
HelpPageSampleGenerator sampleGenerator = config.GetHelpPageSampleGenerator();
|
||||
resourceType = sampleGenerator.ResolveHttpRequestMessageType(apiDescription);
|
||||
}
|
||||
|
||||
if (resourceType == null)
|
||||
{
|
||||
parameterDescription = null;
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private static ModelDescriptionGenerator InitializeModelDescriptionGenerator(HttpConfiguration config)
|
||||
{
|
||||
ModelDescriptionGenerator modelGenerator = new ModelDescriptionGenerator(config);
|
||||
Collection<ApiDescription> apis = config.Services.GetApiExplorer().ApiDescriptions;
|
||||
foreach (ApiDescription api in apis)
|
||||
{
|
||||
ApiParameterDescription parameterDescription;
|
||||
Type parameterType;
|
||||
if (TryGetResourceParameter(api, config, out parameterDescription, out parameterType))
|
||||
{
|
||||
modelGenerator.GetOrCreateModelDescription(parameterType);
|
||||
}
|
||||
}
|
||||
return modelGenerator;
|
||||
}
|
||||
|
||||
private static void LogInvalidSampleAsError(HelpPageApiModel apiModel, object sample)
|
||||
{
|
||||
InvalidSample invalidSample = sample as InvalidSample;
|
||||
if (invalidSample != null)
|
||||
{
|
||||
apiModel.ErrorMessages.Add(invalidSample.ErrorMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
namespace OnDocWeb.Areas.HelpPage.ModelDescriptions
|
||||
{
|
||||
public class CollectionModelDescription : ModelDescription
|
||||
{
|
||||
public ModelDescription ElementDescription { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
using System.Collections.ObjectModel;
|
||||
|
||||
namespace OnDocWeb.Areas.HelpPage.ModelDescriptions
|
||||
{
|
||||
public class ComplexTypeModelDescription : ModelDescription
|
||||
{
|
||||
public ComplexTypeModelDescription()
|
||||
{
|
||||
Properties = new Collection<ParameterDescription>();
|
||||
}
|
||||
|
||||
public Collection<ParameterDescription> Properties { get; private set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
namespace OnDocWeb.Areas.HelpPage.ModelDescriptions
|
||||
{
|
||||
public class DictionaryModelDescription : KeyValuePairModelDescription
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
|
||||
namespace OnDocWeb.Areas.HelpPage.ModelDescriptions
|
||||
{
|
||||
public class EnumTypeModelDescription : ModelDescription
|
||||
{
|
||||
public EnumTypeModelDescription()
|
||||
{
|
||||
Values = new Collection<EnumValueDescription>();
|
||||
}
|
||||
|
||||
public Collection<EnumValueDescription> Values { get; private set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
namespace OnDocWeb.Areas.HelpPage.ModelDescriptions
|
||||
{
|
||||
public class EnumValueDescription
|
||||
{
|
||||
public string Documentation { get; set; }
|
||||
|
||||
public string Name { get; set; }
|
||||
|
||||
public string Value { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Reflection;
|
||||
|
||||
namespace OnDocWeb.Areas.HelpPage.ModelDescriptions
|
||||
{
|
||||
public interface IModelDocumentationProvider
|
||||
{
|
||||
string GetDocumentation(MemberInfo member);
|
||||
|
||||
string GetDocumentation(Type type);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace OnDocWeb.Areas.HelpPage.ModelDescriptions
|
||||
{
|
||||
public class KeyValuePairModelDescription : ModelDescription
|
||||
{
|
||||
public ModelDescription KeyModelDescription { get; set; }
|
||||
|
||||
public ModelDescription ValueModelDescription { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
using System;
|
||||
|
||||
namespace OnDocWeb.Areas.HelpPage.ModelDescriptions
|
||||
{
|
||||
/// <summary>
|
||||
/// Describes a type model.
|
||||
/// </summary>
|
||||
public abstract class ModelDescription
|
||||
{
|
||||
public string Documentation { get; set; }
|
||||
|
||||
public Type ModelType { get; set; }
|
||||
|
||||
public string Name { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,451 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Globalization;
|
||||
using System.Reflection;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Web.Http;
|
||||
using System.Web.Http.Description;
|
||||
using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace OnDocWeb.Areas.HelpPage.ModelDescriptions
|
||||
{
|
||||
/// <summary>
|
||||
/// Generates model descriptions for given types.
|
||||
/// </summary>
|
||||
public class ModelDescriptionGenerator
|
||||
{
|
||||
// Modify this to support more data annotation attributes.
|
||||
private readonly IDictionary<Type, Func<object, string>> AnnotationTextGenerator = new Dictionary<Type, Func<object, string>>
|
||||
{
|
||||
{ typeof(RequiredAttribute), a => "Required" },
|
||||
{ typeof(RangeAttribute), a =>
|
||||
{
|
||||
RangeAttribute range = (RangeAttribute)a;
|
||||
return String.Format(CultureInfo.CurrentCulture, "Range: inclusive between {0} and {1}", range.Minimum, range.Maximum);
|
||||
}
|
||||
},
|
||||
{ typeof(MaxLengthAttribute), a =>
|
||||
{
|
||||
MaxLengthAttribute maxLength = (MaxLengthAttribute)a;
|
||||
return String.Format(CultureInfo.CurrentCulture, "Max length: {0}", maxLength.Length);
|
||||
}
|
||||
},
|
||||
{ typeof(MinLengthAttribute), a =>
|
||||
{
|
||||
MinLengthAttribute minLength = (MinLengthAttribute)a;
|
||||
return String.Format(CultureInfo.CurrentCulture, "Min length: {0}", minLength.Length);
|
||||
}
|
||||
},
|
||||
{ typeof(StringLengthAttribute), a =>
|
||||
{
|
||||
StringLengthAttribute strLength = (StringLengthAttribute)a;
|
||||
return String.Format(CultureInfo.CurrentCulture, "String length: inclusive between {0} and {1}", strLength.MinimumLength, strLength.MaximumLength);
|
||||
}
|
||||
},
|
||||
{ typeof(DataTypeAttribute), a =>
|
||||
{
|
||||
DataTypeAttribute dataType = (DataTypeAttribute)a;
|
||||
return String.Format(CultureInfo.CurrentCulture, "Data type: {0}", dataType.CustomDataType ?? dataType.DataType.ToString());
|
||||
}
|
||||
},
|
||||
{ typeof(RegularExpressionAttribute), a =>
|
||||
{
|
||||
RegularExpressionAttribute regularExpression = (RegularExpressionAttribute)a;
|
||||
return String.Format(CultureInfo.CurrentCulture, "Matching regular expression pattern: {0}", regularExpression.Pattern);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
// Modify this to add more default documentations.
|
||||
private readonly IDictionary<Type, string> DefaultTypeDocumentation = new Dictionary<Type, string>
|
||||
{
|
||||
{ typeof(Int16), "integer" },
|
||||
{ typeof(Int32), "integer" },
|
||||
{ typeof(Int64), "integer" },
|
||||
{ typeof(UInt16), "unsigned integer" },
|
||||
{ typeof(UInt32), "unsigned integer" },
|
||||
{ typeof(UInt64), "unsigned integer" },
|
||||
{ typeof(Byte), "byte" },
|
||||
{ typeof(Char), "character" },
|
||||
{ typeof(SByte), "signed byte" },
|
||||
{ typeof(Uri), "URI" },
|
||||
{ typeof(Single), "decimal number" },
|
||||
{ typeof(Double), "decimal number" },
|
||||
{ typeof(Decimal), "decimal number" },
|
||||
{ typeof(String), "string" },
|
||||
{ typeof(Guid), "globally unique identifier" },
|
||||
{ typeof(TimeSpan), "time interval" },
|
||||
{ typeof(DateTime), "date" },
|
||||
{ typeof(DateTimeOffset), "date" },
|
||||
{ typeof(Boolean), "boolean" },
|
||||
};
|
||||
|
||||
private Lazy<IModelDocumentationProvider> _documentationProvider;
|
||||
|
||||
public ModelDescriptionGenerator(HttpConfiguration config)
|
||||
{
|
||||
if (config == null)
|
||||
{
|
||||
throw new ArgumentNullException("config");
|
||||
}
|
||||
|
||||
_documentationProvider = new Lazy<IModelDocumentationProvider>(() => config.Services.GetDocumentationProvider() as IModelDocumentationProvider);
|
||||
GeneratedModels = new Dictionary<string, ModelDescription>(StringComparer.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
public Dictionary<string, ModelDescription> GeneratedModels { get; private set; }
|
||||
|
||||
private IModelDocumentationProvider DocumentationProvider
|
||||
{
|
||||
get
|
||||
{
|
||||
return _documentationProvider.Value;
|
||||
}
|
||||
}
|
||||
|
||||
public ModelDescription GetOrCreateModelDescription(Type modelType)
|
||||
{
|
||||
if (modelType == null)
|
||||
{
|
||||
throw new ArgumentNullException("modelType");
|
||||
}
|
||||
|
||||
Type underlyingType = Nullable.GetUnderlyingType(modelType);
|
||||
if (underlyingType != null)
|
||||
{
|
||||
modelType = underlyingType;
|
||||
}
|
||||
|
||||
ModelDescription modelDescription;
|
||||
string modelName = ModelNameHelper.GetModelName(modelType);
|
||||
if (GeneratedModels.TryGetValue(modelName, out modelDescription))
|
||||
{
|
||||
if (modelType != modelDescription.ModelType)
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
String.Format(
|
||||
CultureInfo.CurrentCulture,
|
||||
"A model description could not be created. Duplicate model name '{0}' was found for types '{1}' and '{2}'. " +
|
||||
"Use the [ModelName] attribute to change the model name for at least one of the types so that it has a unique name.",
|
||||
modelName,
|
||||
modelDescription.ModelType.FullName,
|
||||
modelType.FullName));
|
||||
}
|
||||
|
||||
return modelDescription;
|
||||
}
|
||||
|
||||
if (DefaultTypeDocumentation.ContainsKey(modelType))
|
||||
{
|
||||
return GenerateSimpleTypeModelDescription(modelType);
|
||||
}
|
||||
|
||||
if (modelType.IsEnum)
|
||||
{
|
||||
return GenerateEnumTypeModelDescription(modelType);
|
||||
}
|
||||
|
||||
if (modelType.IsGenericType)
|
||||
{
|
||||
Type[] genericArguments = modelType.GetGenericArguments();
|
||||
|
||||
if (genericArguments.Length == 1)
|
||||
{
|
||||
Type enumerableType = typeof(IEnumerable<>).MakeGenericType(genericArguments);
|
||||
if (enumerableType.IsAssignableFrom(modelType))
|
||||
{
|
||||
return GenerateCollectionModelDescription(modelType, genericArguments[0]);
|
||||
}
|
||||
}
|
||||
if (genericArguments.Length == 2)
|
||||
{
|
||||
Type dictionaryType = typeof(IDictionary<,>).MakeGenericType(genericArguments);
|
||||
if (dictionaryType.IsAssignableFrom(modelType))
|
||||
{
|
||||
return GenerateDictionaryModelDescription(modelType, genericArguments[0], genericArguments[1]);
|
||||
}
|
||||
|
||||
Type keyValuePairType = typeof(KeyValuePair<,>).MakeGenericType(genericArguments);
|
||||
if (keyValuePairType.IsAssignableFrom(modelType))
|
||||
{
|
||||
return GenerateKeyValuePairModelDescription(modelType, genericArguments[0], genericArguments[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (modelType.IsArray)
|
||||
{
|
||||
Type elementType = modelType.GetElementType();
|
||||
return GenerateCollectionModelDescription(modelType, elementType);
|
||||
}
|
||||
|
||||
if (modelType == typeof(NameValueCollection))
|
||||
{
|
||||
return GenerateDictionaryModelDescription(modelType, typeof(string), typeof(string));
|
||||
}
|
||||
|
||||
if (typeof(IDictionary).IsAssignableFrom(modelType))
|
||||
{
|
||||
return GenerateDictionaryModelDescription(modelType, typeof(object), typeof(object));
|
||||
}
|
||||
|
||||
if (typeof(IEnumerable).IsAssignableFrom(modelType))
|
||||
{
|
||||
return GenerateCollectionModelDescription(modelType, typeof(object));
|
||||
}
|
||||
|
||||
return GenerateComplexTypeModelDescription(modelType);
|
||||
}
|
||||
|
||||
// Change this to provide different name for the member.
|
||||
private static string GetMemberName(MemberInfo member, bool hasDataContractAttribute)
|
||||
{
|
||||
JsonPropertyAttribute jsonProperty = member.GetCustomAttribute<JsonPropertyAttribute>();
|
||||
if (jsonProperty != null && !String.IsNullOrEmpty(jsonProperty.PropertyName))
|
||||
{
|
||||
return jsonProperty.PropertyName;
|
||||
}
|
||||
|
||||
if (hasDataContractAttribute)
|
||||
{
|
||||
DataMemberAttribute dataMember = member.GetCustomAttribute<DataMemberAttribute>();
|
||||
if (dataMember != null && !String.IsNullOrEmpty(dataMember.Name))
|
||||
{
|
||||
return dataMember.Name;
|
||||
}
|
||||
}
|
||||
|
||||
return member.Name;
|
||||
}
|
||||
|
||||
private static bool ShouldDisplayMember(MemberInfo member, bool hasDataContractAttribute)
|
||||
{
|
||||
JsonIgnoreAttribute jsonIgnore = member.GetCustomAttribute<JsonIgnoreAttribute>();
|
||||
XmlIgnoreAttribute xmlIgnore = member.GetCustomAttribute<XmlIgnoreAttribute>();
|
||||
IgnoreDataMemberAttribute ignoreDataMember = member.GetCustomAttribute<IgnoreDataMemberAttribute>();
|
||||
NonSerializedAttribute nonSerialized = member.GetCustomAttribute<NonSerializedAttribute>();
|
||||
ApiExplorerSettingsAttribute apiExplorerSetting = member.GetCustomAttribute<ApiExplorerSettingsAttribute>();
|
||||
|
||||
bool hasMemberAttribute = member.DeclaringType.IsEnum ?
|
||||
member.GetCustomAttribute<EnumMemberAttribute>() != null :
|
||||
member.GetCustomAttribute<DataMemberAttribute>() != null;
|
||||
|
||||
// Display member only if all the followings are true:
|
||||
// no JsonIgnoreAttribute
|
||||
// no XmlIgnoreAttribute
|
||||
// no IgnoreDataMemberAttribute
|
||||
// no NonSerializedAttribute
|
||||
// no ApiExplorerSettingsAttribute with IgnoreApi set to true
|
||||
// no DataContractAttribute without DataMemberAttribute or EnumMemberAttribute
|
||||
return jsonIgnore == null &&
|
||||
xmlIgnore == null &&
|
||||
ignoreDataMember == null &&
|
||||
nonSerialized == null &&
|
||||
(apiExplorerSetting == null || !apiExplorerSetting.IgnoreApi) &&
|
||||
(!hasDataContractAttribute || hasMemberAttribute);
|
||||
}
|
||||
|
||||
private string CreateDefaultDocumentation(Type type)
|
||||
{
|
||||
string documentation;
|
||||
if (DefaultTypeDocumentation.TryGetValue(type, out documentation))
|
||||
{
|
||||
return documentation;
|
||||
}
|
||||
if (DocumentationProvider != null)
|
||||
{
|
||||
documentation = DocumentationProvider.GetDocumentation(type);
|
||||
}
|
||||
|
||||
return documentation;
|
||||
}
|
||||
|
||||
private void GenerateAnnotations(MemberInfo property, ParameterDescription propertyModel)
|
||||
{
|
||||
List<ParameterAnnotation> annotations = new List<ParameterAnnotation>();
|
||||
|
||||
IEnumerable<Attribute> attributes = property.GetCustomAttributes();
|
||||
foreach (Attribute attribute in attributes)
|
||||
{
|
||||
Func<object, string> textGenerator;
|
||||
if (AnnotationTextGenerator.TryGetValue(attribute.GetType(), out textGenerator))
|
||||
{
|
||||
annotations.Add(
|
||||
new ParameterAnnotation
|
||||
{
|
||||
AnnotationAttribute = attribute,
|
||||
Documentation = textGenerator(attribute)
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Rearrange the annotations
|
||||
annotations.Sort((x, y) =>
|
||||
{
|
||||
// Special-case RequiredAttribute so that it shows up on top
|
||||
if (x.AnnotationAttribute is RequiredAttribute)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
if (y.AnnotationAttribute is RequiredAttribute)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Sort the rest based on alphabetic order of the documentation
|
||||
return String.Compare(x.Documentation, y.Documentation, StringComparison.OrdinalIgnoreCase);
|
||||
});
|
||||
|
||||
foreach (ParameterAnnotation annotation in annotations)
|
||||
{
|
||||
propertyModel.Annotations.Add(annotation);
|
||||
}
|
||||
}
|
||||
|
||||
private CollectionModelDescription GenerateCollectionModelDescription(Type modelType, Type elementType)
|
||||
{
|
||||
ModelDescription collectionModelDescription = GetOrCreateModelDescription(elementType);
|
||||
if (collectionModelDescription != null)
|
||||
{
|
||||
return new CollectionModelDescription
|
||||
{
|
||||
Name = ModelNameHelper.GetModelName(modelType),
|
||||
ModelType = modelType,
|
||||
ElementDescription = collectionModelDescription
|
||||
};
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private ModelDescription GenerateComplexTypeModelDescription(Type modelType)
|
||||
{
|
||||
ComplexTypeModelDescription complexModelDescription = new ComplexTypeModelDescription
|
||||
{
|
||||
Name = ModelNameHelper.GetModelName(modelType),
|
||||
ModelType = modelType,
|
||||
Documentation = CreateDefaultDocumentation(modelType)
|
||||
};
|
||||
|
||||
GeneratedModels.Add(complexModelDescription.Name, complexModelDescription);
|
||||
bool hasDataContractAttribute = modelType.GetCustomAttribute<DataContractAttribute>() != null;
|
||||
PropertyInfo[] properties = modelType.GetProperties(BindingFlags.Public | BindingFlags.Instance);
|
||||
foreach (PropertyInfo property in properties)
|
||||
{
|
||||
if (ShouldDisplayMember(property, hasDataContractAttribute))
|
||||
{
|
||||
ParameterDescription propertyModel = new ParameterDescription
|
||||
{
|
||||
Name = GetMemberName(property, hasDataContractAttribute)
|
||||
};
|
||||
|
||||
if (DocumentationProvider != null)
|
||||
{
|
||||
propertyModel.Documentation = DocumentationProvider.GetDocumentation(property);
|
||||
}
|
||||
|
||||
GenerateAnnotations(property, propertyModel);
|
||||
complexModelDescription.Properties.Add(propertyModel);
|
||||
propertyModel.TypeDescription = GetOrCreateModelDescription(property.PropertyType);
|
||||
}
|
||||
}
|
||||
|
||||
FieldInfo[] fields = modelType.GetFields(BindingFlags.Public | BindingFlags.Instance);
|
||||
foreach (FieldInfo field in fields)
|
||||
{
|
||||
if (ShouldDisplayMember(field, hasDataContractAttribute))
|
||||
{
|
||||
ParameterDescription propertyModel = new ParameterDescription
|
||||
{
|
||||
Name = GetMemberName(field, hasDataContractAttribute)
|
||||
};
|
||||
|
||||
if (DocumentationProvider != null)
|
||||
{
|
||||
propertyModel.Documentation = DocumentationProvider.GetDocumentation(field);
|
||||
}
|
||||
|
||||
complexModelDescription.Properties.Add(propertyModel);
|
||||
propertyModel.TypeDescription = GetOrCreateModelDescription(field.FieldType);
|
||||
}
|
||||
}
|
||||
|
||||
return complexModelDescription;
|
||||
}
|
||||
|
||||
private DictionaryModelDescription GenerateDictionaryModelDescription(Type modelType, Type keyType, Type valueType)
|
||||
{
|
||||
ModelDescription keyModelDescription = GetOrCreateModelDescription(keyType);
|
||||
ModelDescription valueModelDescription = GetOrCreateModelDescription(valueType);
|
||||
|
||||
return new DictionaryModelDescription
|
||||
{
|
||||
Name = ModelNameHelper.GetModelName(modelType),
|
||||
ModelType = modelType,
|
||||
KeyModelDescription = keyModelDescription,
|
||||
ValueModelDescription = valueModelDescription
|
||||
};
|
||||
}
|
||||
|
||||
private EnumTypeModelDescription GenerateEnumTypeModelDescription(Type modelType)
|
||||
{
|
||||
EnumTypeModelDescription enumDescription = new EnumTypeModelDescription
|
||||
{
|
||||
Name = ModelNameHelper.GetModelName(modelType),
|
||||
ModelType = modelType,
|
||||
Documentation = CreateDefaultDocumentation(modelType)
|
||||
};
|
||||
bool hasDataContractAttribute = modelType.GetCustomAttribute<DataContractAttribute>() != null;
|
||||
foreach (FieldInfo field in modelType.GetFields(BindingFlags.Public | BindingFlags.Static))
|
||||
{
|
||||
if (ShouldDisplayMember(field, hasDataContractAttribute))
|
||||
{
|
||||
EnumValueDescription enumValue = new EnumValueDescription
|
||||
{
|
||||
Name = field.Name,
|
||||
Value = field.GetRawConstantValue().ToString()
|
||||
};
|
||||
if (DocumentationProvider != null)
|
||||
{
|
||||
enumValue.Documentation = DocumentationProvider.GetDocumentation(field);
|
||||
}
|
||||
enumDescription.Values.Add(enumValue);
|
||||
}
|
||||
}
|
||||
GeneratedModels.Add(enumDescription.Name, enumDescription);
|
||||
|
||||
return enumDescription;
|
||||
}
|
||||
|
||||
private KeyValuePairModelDescription GenerateKeyValuePairModelDescription(Type modelType, Type keyType, Type valueType)
|
||||
{
|
||||
ModelDescription keyModelDescription = GetOrCreateModelDescription(keyType);
|
||||
ModelDescription valueModelDescription = GetOrCreateModelDescription(valueType);
|
||||
|
||||
return new KeyValuePairModelDescription
|
||||
{
|
||||
Name = ModelNameHelper.GetModelName(modelType),
|
||||
ModelType = modelType,
|
||||
KeyModelDescription = keyModelDescription,
|
||||
ValueModelDescription = valueModelDescription
|
||||
};
|
||||
}
|
||||
|
||||
private ModelDescription GenerateSimpleTypeModelDescription(Type modelType)
|
||||
{
|
||||
SimpleTypeModelDescription simpleModelDescription = new SimpleTypeModelDescription
|
||||
{
|
||||
Name = ModelNameHelper.GetModelName(modelType),
|
||||
ModelType = modelType,
|
||||
Documentation = CreateDefaultDocumentation(modelType)
|
||||
};
|
||||
GeneratedModels.Add(simpleModelDescription.Name, simpleModelDescription);
|
||||
|
||||
return simpleModelDescription;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
using System;
|
||||
|
||||
namespace OnDocWeb.Areas.HelpPage.ModelDescriptions
|
||||
{
|
||||
/// <summary>
|
||||
/// Use this attribute to change the name of the <see cref="ModelDescription"/> generated for a type.
|
||||
/// </summary>
|
||||
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum, AllowMultiple = false, Inherited = false)]
|
||||
public sealed class ModelNameAttribute : Attribute
|
||||
{
|
||||
public ModelNameAttribute(string name)
|
||||
{
|
||||
Name = name;
|
||||
}
|
||||
|
||||
public string Name { get; private set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
|
||||
namespace OnDocWeb.Areas.HelpPage.ModelDescriptions
|
||||
{
|
||||
internal static class ModelNameHelper
|
||||
{
|
||||
// Modify this to provide custom model name mapping.
|
||||
public static string GetModelName(Type type)
|
||||
{
|
||||
ModelNameAttribute modelNameAttribute = type.GetCustomAttribute<ModelNameAttribute>();
|
||||
if (modelNameAttribute != null && !String.IsNullOrEmpty(modelNameAttribute.Name))
|
||||
{
|
||||
return modelNameAttribute.Name;
|
||||
}
|
||||
|
||||
string modelName = type.Name;
|
||||
if (type.IsGenericType)
|
||||
{
|
||||
// Format the generic type name to something like: GenericOfAgurment1AndArgument2
|
||||
Type genericType = type.GetGenericTypeDefinition();
|
||||
Type[] genericArguments = type.GetGenericArguments();
|
||||
string genericTypeName = genericType.Name;
|
||||
|
||||
// Trim the generic parameter counts from the name
|
||||
genericTypeName = genericTypeName.Substring(0, genericTypeName.IndexOf('`'));
|
||||
string[] argumentTypeNames = genericArguments.Select(t => GetModelName(t)).ToArray();
|
||||
modelName = String.Format(CultureInfo.InvariantCulture, "{0}Of{1}", genericTypeName, String.Join("And", argumentTypeNames));
|
||||
}
|
||||
|
||||
return modelName;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
using System;
|
||||
|
||||
namespace OnDocWeb.Areas.HelpPage.ModelDescriptions
|
||||
{
|
||||
public class ParameterAnnotation
|
||||
{
|
||||
public Attribute AnnotationAttribute { get; set; }
|
||||
|
||||
public string Documentation { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
|
||||
namespace OnDocWeb.Areas.HelpPage.ModelDescriptions
|
||||
{
|
||||
public class ParameterDescription
|
||||
{
|
||||
public ParameterDescription()
|
||||
{
|
||||
Annotations = new Collection<ParameterAnnotation>();
|
||||
}
|
||||
|
||||
public Collection<ParameterAnnotation> Annotations { get; private set; }
|
||||
|
||||
public string Documentation { get; set; }
|
||||
|
||||
public string Name { get; set; }
|
||||
|
||||
public ModelDescription TypeDescription { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
namespace OnDocWeb.Areas.HelpPage.ModelDescriptions
|
||||
{
|
||||
public class SimpleTypeModelDescription : ModelDescription
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,108 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Net.Http.Headers;
|
||||
using System.Web.Http.Description;
|
||||
using OnDocWeb.Areas.HelpPage.ModelDescriptions;
|
||||
|
||||
namespace OnDocWeb.Areas.HelpPage.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// The model that represents an API displayed on the help page.
|
||||
/// </summary>
|
||||
public class HelpPageApiModel
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="HelpPageApiModel"/> class.
|
||||
/// </summary>
|
||||
public HelpPageApiModel()
|
||||
{
|
||||
UriParameters = new Collection<ParameterDescription>();
|
||||
SampleRequests = new Dictionary<MediaTypeHeaderValue, object>();
|
||||
SampleResponses = new Dictionary<MediaTypeHeaderValue, object>();
|
||||
ErrorMessages = new Collection<string>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the <see cref="ApiDescription"/> that describes the API.
|
||||
/// </summary>
|
||||
public ApiDescription ApiDescription { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the <see cref="ParameterDescription"/> collection that describes the URI parameters for the API.
|
||||
/// </summary>
|
||||
public Collection<ParameterDescription> UriParameters { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the documentation for the request.
|
||||
/// </summary>
|
||||
public string RequestDocumentation { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the <see cref="ModelDescription"/> that describes the request body.
|
||||
/// </summary>
|
||||
public ModelDescription RequestModelDescription { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the request body parameter descriptions.
|
||||
/// </summary>
|
||||
public IList<ParameterDescription> RequestBodyParameters
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetParameterDescriptions(RequestModelDescription);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the <see cref="ModelDescription"/> that describes the resource.
|
||||
/// </summary>
|
||||
public ModelDescription ResourceDescription { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the resource property descriptions.
|
||||
/// </summary>
|
||||
public IList<ParameterDescription> ResourceProperties
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetParameterDescriptions(ResourceDescription);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the sample requests associated with the API.
|
||||
/// </summary>
|
||||
public IDictionary<MediaTypeHeaderValue, object> SampleRequests { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the sample responses associated with the API.
|
||||
/// </summary>
|
||||
public IDictionary<MediaTypeHeaderValue, object> SampleResponses { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the error messages associated with this model.
|
||||
/// </summary>
|
||||
public Collection<string> ErrorMessages { get; private set; }
|
||||
|
||||
private static IList<ParameterDescription> GetParameterDescriptions(ModelDescription modelDescription)
|
||||
{
|
||||
ComplexTypeModelDescription complexTypeModelDescription = modelDescription as ComplexTypeModelDescription;
|
||||
if (complexTypeModelDescription != null)
|
||||
{
|
||||
return complexTypeModelDescription.Properties;
|
||||
}
|
||||
|
||||
CollectionModelDescription collectionModelDescription = modelDescription as CollectionModelDescription;
|
||||
if (collectionModelDescription != null)
|
||||
{
|
||||
complexTypeModelDescription = collectionModelDescription.ElementDescription as ComplexTypeModelDescription;
|
||||
if (complexTypeModelDescription != null)
|
||||
{
|
||||
return complexTypeModelDescription.Properties;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,444 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Net.Http.Formatting;
|
||||
using System.Net.Http.Headers;
|
||||
using System.Web.Http.Description;
|
||||
using System.Xml.Linq;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace OnDocWeb.Areas.HelpPage
|
||||
{
|
||||
/// <summary>
|
||||
/// This class will generate the samples for the help page.
|
||||
/// </summary>
|
||||
public class HelpPageSampleGenerator
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="HelpPageSampleGenerator"/> class.
|
||||
/// </summary>
|
||||
public HelpPageSampleGenerator()
|
||||
{
|
||||
ActualHttpMessageTypes = new Dictionary<HelpPageSampleKey, Type>();
|
||||
ActionSamples = new Dictionary<HelpPageSampleKey, object>();
|
||||
SampleObjects = new Dictionary<Type, object>();
|
||||
SampleObjectFactories = new List<Func<HelpPageSampleGenerator, Type, object>>
|
||||
{
|
||||
DefaultSampleObjectFactory,
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets CLR types that are used as the content of <see cref="HttpRequestMessage"/> or <see cref="HttpResponseMessage"/>.
|
||||
/// </summary>
|
||||
public IDictionary<HelpPageSampleKey, Type> ActualHttpMessageTypes { get; internal set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the objects that are used directly as samples for certain actions.
|
||||
/// </summary>
|
||||
public IDictionary<HelpPageSampleKey, object> ActionSamples { get; internal set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the objects that are serialized as samples by the supported formatters.
|
||||
/// </summary>
|
||||
public IDictionary<Type, object> SampleObjects { get; internal set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets factories for the objects that the supported formatters will serialize as samples. Processed in order,
|
||||
/// stopping when the factory successfully returns a non-<see langref="null"/> object.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Collection includes just <see cref="ObjectGenerator.GenerateObject(Type)"/> initially. Use
|
||||
/// <code>SampleObjectFactories.Insert(0, func)</code> to provide an override and
|
||||
/// <code>SampleObjectFactories.Add(func)</code> to provide a fallback.</remarks>
|
||||
[SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures",
|
||||
Justification = "This is an appropriate nesting of generic types")]
|
||||
public IList<Func<HelpPageSampleGenerator, Type, object>> SampleObjectFactories { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the request body samples for a given <see cref="ApiDescription"/>.
|
||||
/// </summary>
|
||||
/// <param name="api">The <see cref="ApiDescription"/>.</param>
|
||||
/// <returns>The samples keyed by media type.</returns>
|
||||
public IDictionary<MediaTypeHeaderValue, object> GetSampleRequests(ApiDescription api)
|
||||
{
|
||||
return GetSample(api, SampleDirection.Request);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the response body samples for a given <see cref="ApiDescription"/>.
|
||||
/// </summary>
|
||||
/// <param name="api">The <see cref="ApiDescription"/>.</param>
|
||||
/// <returns>The samples keyed by media type.</returns>
|
||||
public IDictionary<MediaTypeHeaderValue, object> GetSampleResponses(ApiDescription api)
|
||||
{
|
||||
return GetSample(api, SampleDirection.Response);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the request or response body samples.
|
||||
/// </summary>
|
||||
/// <param name="api">The <see cref="ApiDescription"/>.</param>
|
||||
/// <param name="sampleDirection">The value indicating whether the sample is for a request or for a response.</param>
|
||||
/// <returns>The samples keyed by media type.</returns>
|
||||
public virtual IDictionary<MediaTypeHeaderValue, object> GetSample(ApiDescription api, SampleDirection sampleDirection)
|
||||
{
|
||||
if (api == null)
|
||||
{
|
||||
throw new ArgumentNullException("api");
|
||||
}
|
||||
string controllerName = api.ActionDescriptor.ControllerDescriptor.ControllerName;
|
||||
string actionName = api.ActionDescriptor.ActionName;
|
||||
IEnumerable<string> parameterNames = api.ParameterDescriptions.Select(p => p.Name);
|
||||
Collection<MediaTypeFormatter> formatters;
|
||||
Type type = ResolveType(api, controllerName, actionName, parameterNames, sampleDirection, out formatters);
|
||||
var samples = new Dictionary<MediaTypeHeaderValue, object>();
|
||||
|
||||
// Use the samples provided directly for actions
|
||||
var actionSamples = GetAllActionSamples(controllerName, actionName, parameterNames, sampleDirection);
|
||||
foreach (var actionSample in actionSamples)
|
||||
{
|
||||
samples.Add(actionSample.Key.MediaType, WrapSampleIfString(actionSample.Value));
|
||||
}
|
||||
|
||||
// Do the sample generation based on formatters only if an action doesn't return an HttpResponseMessage.
|
||||
// Here we cannot rely on formatters because we don't know what's in the HttpResponseMessage, it might not even use formatters.
|
||||
if (type != null && !typeof(HttpResponseMessage).IsAssignableFrom(type))
|
||||
{
|
||||
object sampleObject = GetSampleObject(type);
|
||||
foreach (var formatter in formatters)
|
||||
{
|
||||
foreach (MediaTypeHeaderValue mediaType in formatter.SupportedMediaTypes)
|
||||
{
|
||||
if (!samples.ContainsKey(mediaType))
|
||||
{
|
||||
object sample = GetActionSample(controllerName, actionName, parameterNames, type, formatter, mediaType, sampleDirection);
|
||||
|
||||
// If no sample found, try generate sample using formatter and sample object
|
||||
if (sample == null && sampleObject != null)
|
||||
{
|
||||
sample = WriteSampleObjectUsingFormatter(formatter, sampleObject, type, mediaType);
|
||||
}
|
||||
|
||||
samples.Add(mediaType, WrapSampleIfString(sample));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return samples;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Search for samples that are provided directly through <see cref="ActionSamples"/>.
|
||||
/// </summary>
|
||||
/// <param name="controllerName">Name of the controller.</param>
|
||||
/// <param name="actionName">Name of the action.</param>
|
||||
/// <param name="parameterNames">The parameter names.</param>
|
||||
/// <param name="type">The CLR type.</param>
|
||||
/// <param name="formatter">The formatter.</param>
|
||||
/// <param name="mediaType">The media type.</param>
|
||||
/// <param name="sampleDirection">The value indicating whether the sample is for a request or for a response.</param>
|
||||
/// <returns>The sample that matches the parameters.</returns>
|
||||
public virtual object GetActionSample(string controllerName, string actionName, IEnumerable<string> parameterNames, Type type, MediaTypeFormatter formatter, MediaTypeHeaderValue mediaType, SampleDirection sampleDirection)
|
||||
{
|
||||
object sample;
|
||||
|
||||
// First, try to get the sample provided for the specified mediaType, sampleDirection, controllerName, actionName and parameterNames.
|
||||
// If not found, try to get the sample provided for the specified mediaType, sampleDirection, controllerName and actionName regardless of the parameterNames.
|
||||
// If still not found, try to get the sample provided for the specified mediaType and type.
|
||||
// Finally, try to get the sample provided for the specified mediaType.
|
||||
if (ActionSamples.TryGetValue(new HelpPageSampleKey(mediaType, sampleDirection, controllerName, actionName, parameterNames), out sample) ||
|
||||
ActionSamples.TryGetValue(new HelpPageSampleKey(mediaType, sampleDirection, controllerName, actionName, new[] { "*" }), out sample) ||
|
||||
ActionSamples.TryGetValue(new HelpPageSampleKey(mediaType, type), out sample) ||
|
||||
ActionSamples.TryGetValue(new HelpPageSampleKey(mediaType), out sample))
|
||||
{
|
||||
return sample;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the sample object that will be serialized by the formatters.
|
||||
/// First, it will look at the <see cref="SampleObjects"/>. If no sample object is found, it will try to create
|
||||
/// one using <see cref="DefaultSampleObjectFactory"/> (which wraps an <see cref="ObjectGenerator"/>) and other
|
||||
/// factories in <see cref="SampleObjectFactories"/>.
|
||||
/// </summary>
|
||||
/// <param name="type">The type.</param>
|
||||
/// <returns>The sample object.</returns>
|
||||
[SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes",
|
||||
Justification = "Even if all items in SampleObjectFactories throw, problem will be visible as missing sample.")]
|
||||
public virtual object GetSampleObject(Type type)
|
||||
{
|
||||
object sampleObject;
|
||||
|
||||
if (!SampleObjects.TryGetValue(type, out sampleObject))
|
||||
{
|
||||
// No specific object available, try our factories.
|
||||
foreach (Func<HelpPageSampleGenerator, Type, object> factory in SampleObjectFactories)
|
||||
{
|
||||
if (factory == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
sampleObject = factory(this, type);
|
||||
if (sampleObject != null)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Ignore any problems encountered in the factory; go on to the next one (if any).
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return sampleObject;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Resolves the actual type of <see cref="System.Net.Http.ObjectContent{T}"/> passed to the <see cref="System.Net.Http.HttpRequestMessage"/> in an action.
|
||||
/// </summary>
|
||||
/// <param name="api">The <see cref="ApiDescription"/>.</param>
|
||||
/// <returns>The type.</returns>
|
||||
public virtual Type ResolveHttpRequestMessageType(ApiDescription api)
|
||||
{
|
||||
string controllerName = api.ActionDescriptor.ControllerDescriptor.ControllerName;
|
||||
string actionName = api.ActionDescriptor.ActionName;
|
||||
IEnumerable<string> parameterNames = api.ParameterDescriptions.Select(p => p.Name);
|
||||
Collection<MediaTypeFormatter> formatters;
|
||||
return ResolveType(api, controllerName, actionName, parameterNames, SampleDirection.Request, out formatters);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Resolves the type of the action parameter or return value when <see cref="HttpRequestMessage"/> or <see cref="HttpResponseMessage"/> is used.
|
||||
/// </summary>
|
||||
/// <param name="api">The <see cref="ApiDescription"/>.</param>
|
||||
/// <param name="controllerName">Name of the controller.</param>
|
||||
/// <param name="actionName">Name of the action.</param>
|
||||
/// <param name="parameterNames">The parameter names.</param>
|
||||
/// <param name="sampleDirection">The value indicating whether the sample is for a request or a response.</param>
|
||||
/// <param name="formatters">The formatters.</param>
|
||||
[SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters", Justification = "This is only used in advanced scenarios.")]
|
||||
public virtual Type ResolveType(ApiDescription api, string controllerName, string actionName, IEnumerable<string> parameterNames, SampleDirection sampleDirection, out Collection<MediaTypeFormatter> formatters)
|
||||
{
|
||||
if (!Enum.IsDefined(typeof(SampleDirection), sampleDirection))
|
||||
{
|
||||
throw new InvalidEnumArgumentException("sampleDirection", (int)sampleDirection, typeof(SampleDirection));
|
||||
}
|
||||
if (api == null)
|
||||
{
|
||||
throw new ArgumentNullException("api");
|
||||
}
|
||||
Type type;
|
||||
if (ActualHttpMessageTypes.TryGetValue(new HelpPageSampleKey(sampleDirection, controllerName, actionName, parameterNames), out type) ||
|
||||
ActualHttpMessageTypes.TryGetValue(new HelpPageSampleKey(sampleDirection, controllerName, actionName, new[] { "*" }), out type))
|
||||
{
|
||||
// Re-compute the supported formatters based on type
|
||||
Collection<MediaTypeFormatter> newFormatters = new Collection<MediaTypeFormatter>();
|
||||
foreach (var formatter in api.ActionDescriptor.Configuration.Formatters)
|
||||
{
|
||||
if (IsFormatSupported(sampleDirection, formatter, type))
|
||||
{
|
||||
newFormatters.Add(formatter);
|
||||
}
|
||||
}
|
||||
formatters = newFormatters;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (sampleDirection)
|
||||
{
|
||||
case SampleDirection.Request:
|
||||
ApiParameterDescription requestBodyParameter = api.ParameterDescriptions.FirstOrDefault(p => p.Source == ApiParameterSource.FromBody);
|
||||
type = requestBodyParameter == null ? null : requestBodyParameter.ParameterDescriptor.ParameterType;
|
||||
formatters = api.SupportedRequestBodyFormatters;
|
||||
break;
|
||||
case SampleDirection.Response:
|
||||
default:
|
||||
type = api.ResponseDescription.ResponseType ?? api.ResponseDescription.DeclaredType;
|
||||
formatters = api.SupportedResponseFormatters;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return type;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Writes the sample object using formatter.
|
||||
/// </summary>
|
||||
/// <param name="formatter">The formatter.</param>
|
||||
/// <param name="value">The value.</param>
|
||||
/// <param name="type">The type.</param>
|
||||
/// <param name="mediaType">Type of the media.</param>
|
||||
/// <returns></returns>
|
||||
[SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "The exception is recorded as InvalidSample.")]
|
||||
public virtual object WriteSampleObjectUsingFormatter(MediaTypeFormatter formatter, object value, Type type, MediaTypeHeaderValue mediaType)
|
||||
{
|
||||
if (formatter == null)
|
||||
{
|
||||
throw new ArgumentNullException("formatter");
|
||||
}
|
||||
if (mediaType == null)
|
||||
{
|
||||
throw new ArgumentNullException("mediaType");
|
||||
}
|
||||
|
||||
object sample = String.Empty;
|
||||
MemoryStream ms = null;
|
||||
HttpContent content = null;
|
||||
try
|
||||
{
|
||||
if (formatter.CanWriteType(type))
|
||||
{
|
||||
ms = new MemoryStream();
|
||||
content = new ObjectContent(type, value, formatter, mediaType);
|
||||
formatter.WriteToStreamAsync(type, value, ms, content, null).Wait();
|
||||
ms.Position = 0;
|
||||
StreamReader reader = new StreamReader(ms);
|
||||
string serializedSampleString = reader.ReadToEnd();
|
||||
if (mediaType.MediaType.ToUpperInvariant().Contains("XML"))
|
||||
{
|
||||
serializedSampleString = TryFormatXml(serializedSampleString);
|
||||
}
|
||||
else if (mediaType.MediaType.ToUpperInvariant().Contains("JSON"))
|
||||
{
|
||||
serializedSampleString = TryFormatJson(serializedSampleString);
|
||||
}
|
||||
|
||||
sample = new TextSample(serializedSampleString);
|
||||
}
|
||||
else
|
||||
{
|
||||
sample = new InvalidSample(String.Format(
|
||||
CultureInfo.CurrentCulture,
|
||||
"Failed to generate the sample for media type '{0}'. Cannot use formatter '{1}' to write type '{2}'.",
|
||||
mediaType,
|
||||
formatter.GetType().Name,
|
||||
type.Name));
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
sample = new InvalidSample(String.Format(
|
||||
CultureInfo.CurrentCulture,
|
||||
"An exception has occurred while using the formatter '{0}' to generate sample for media type '{1}'. Exception message: {2}",
|
||||
formatter.GetType().Name,
|
||||
mediaType.MediaType,
|
||||
UnwrapException(e).Message));
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (ms != null)
|
||||
{
|
||||
ms.Dispose();
|
||||
}
|
||||
if (content != null)
|
||||
{
|
||||
content.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
return sample;
|
||||
}
|
||||
|
||||
internal static Exception UnwrapException(Exception exception)
|
||||
{
|
||||
AggregateException aggregateException = exception as AggregateException;
|
||||
if (aggregateException != null)
|
||||
{
|
||||
return aggregateException.Flatten().InnerException;
|
||||
}
|
||||
return exception;
|
||||
}
|
||||
|
||||
// Default factory for sample objects
|
||||
private static object DefaultSampleObjectFactory(HelpPageSampleGenerator sampleGenerator, Type type)
|
||||
{
|
||||
// Try to create a default sample object
|
||||
ObjectGenerator objectGenerator = new ObjectGenerator();
|
||||
return objectGenerator.GenerateObject(type);
|
||||
}
|
||||
|
||||
[SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "Handling the failure by returning the original string.")]
|
||||
private static string TryFormatJson(string str)
|
||||
{
|
||||
try
|
||||
{
|
||||
object parsedJson = JsonConvert.DeserializeObject(str);
|
||||
return JsonConvert.SerializeObject(parsedJson, Formatting.Indented);
|
||||
}
|
||||
catch
|
||||
{
|
||||
// can't parse JSON, return the original string
|
||||
return str;
|
||||
}
|
||||
}
|
||||
|
||||
[SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "Handling the failure by returning the original string.")]
|
||||
private static string TryFormatXml(string str)
|
||||
{
|
||||
try
|
||||
{
|
||||
XDocument xml = XDocument.Parse(str);
|
||||
return xml.ToString();
|
||||
}
|
||||
catch
|
||||
{
|
||||
// can't parse XML, return the original string
|
||||
return str;
|
||||
}
|
||||
}
|
||||
|
||||
private static bool IsFormatSupported(SampleDirection sampleDirection, MediaTypeFormatter formatter, Type type)
|
||||
{
|
||||
switch (sampleDirection)
|
||||
{
|
||||
case SampleDirection.Request:
|
||||
return formatter.CanReadType(type);
|
||||
case SampleDirection.Response:
|
||||
return formatter.CanWriteType(type);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private IEnumerable<KeyValuePair<HelpPageSampleKey, object>> GetAllActionSamples(string controllerName, string actionName, IEnumerable<string> parameterNames, SampleDirection sampleDirection)
|
||||
{
|
||||
HashSet<string> parameterNamesSet = new HashSet<string>(parameterNames, StringComparer.OrdinalIgnoreCase);
|
||||
foreach (var sample in ActionSamples)
|
||||
{
|
||||
HelpPageSampleKey sampleKey = sample.Key;
|
||||
if (String.Equals(controllerName, sampleKey.ControllerName, StringComparison.OrdinalIgnoreCase) &&
|
||||
String.Equals(actionName, sampleKey.ActionName, StringComparison.OrdinalIgnoreCase) &&
|
||||
(sampleKey.ParameterNames.SetEquals(new[] { "*" }) || parameterNamesSet.SetEquals(sampleKey.ParameterNames)) &&
|
||||
sampleDirection == sampleKey.SampleDirection)
|
||||
{
|
||||
yield return sample;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static object WrapSampleIfString(object sample)
|
||||
{
|
||||
string stringSample = sample as string;
|
||||
if (stringSample != null)
|
||||
{
|
||||
return new TextSample(stringSample);
|
||||
}
|
||||
|
||||
return sample;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,172 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Net.Http.Headers;
|
||||
|
||||
namespace OnDocWeb.Areas.HelpPage
|
||||
{
|
||||
/// <summary>
|
||||
/// This is used to identify the place where the sample should be applied.
|
||||
/// </summary>
|
||||
public class HelpPageSampleKey
|
||||
{
|
||||
/// <summary>
|
||||
/// Creates a new <see cref="HelpPageSampleKey"/> based on media type.
|
||||
/// </summary>
|
||||
/// <param name="mediaType">The media type.</param>
|
||||
public HelpPageSampleKey(MediaTypeHeaderValue mediaType)
|
||||
{
|
||||
if (mediaType == null)
|
||||
{
|
||||
throw new ArgumentNullException("mediaType");
|
||||
}
|
||||
|
||||
ActionName = String.Empty;
|
||||
ControllerName = String.Empty;
|
||||
MediaType = mediaType;
|
||||
ParameterNames = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new <see cref="HelpPageSampleKey"/> based on media type and CLR type.
|
||||
/// </summary>
|
||||
/// <param name="mediaType">The media type.</param>
|
||||
/// <param name="type">The CLR type.</param>
|
||||
public HelpPageSampleKey(MediaTypeHeaderValue mediaType, Type type)
|
||||
: this(mediaType)
|
||||
{
|
||||
if (type == null)
|
||||
{
|
||||
throw new ArgumentNullException("type");
|
||||
}
|
||||
|
||||
ParameterType = type;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new <see cref="HelpPageSampleKey"/> based on <see cref="SampleDirection"/>, controller name, action name and parameter names.
|
||||
/// </summary>
|
||||
/// <param name="sampleDirection">The <see cref="SampleDirection"/>.</param>
|
||||
/// <param name="controllerName">Name of the controller.</param>
|
||||
/// <param name="actionName">Name of the action.</param>
|
||||
/// <param name="parameterNames">The parameter names.</param>
|
||||
public HelpPageSampleKey(SampleDirection sampleDirection, string controllerName, string actionName, IEnumerable<string> parameterNames)
|
||||
{
|
||||
if (!Enum.IsDefined(typeof(SampleDirection), sampleDirection))
|
||||
{
|
||||
throw new InvalidEnumArgumentException("sampleDirection", (int)sampleDirection, typeof(SampleDirection));
|
||||
}
|
||||
if (controllerName == null)
|
||||
{
|
||||
throw new ArgumentNullException("controllerName");
|
||||
}
|
||||
if (actionName == null)
|
||||
{
|
||||
throw new ArgumentNullException("actionName");
|
||||
}
|
||||
if (parameterNames == null)
|
||||
{
|
||||
throw new ArgumentNullException("parameterNames");
|
||||
}
|
||||
|
||||
ControllerName = controllerName;
|
||||
ActionName = actionName;
|
||||
ParameterNames = new HashSet<string>(parameterNames, StringComparer.OrdinalIgnoreCase);
|
||||
SampleDirection = sampleDirection;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new <see cref="HelpPageSampleKey"/> based on media type, <see cref="SampleDirection"/>, controller name, action name and parameter names.
|
||||
/// </summary>
|
||||
/// <param name="mediaType">The media type.</param>
|
||||
/// <param name="sampleDirection">The <see cref="SampleDirection"/>.</param>
|
||||
/// <param name="controllerName">Name of the controller.</param>
|
||||
/// <param name="actionName">Name of the action.</param>
|
||||
/// <param name="parameterNames">The parameter names.</param>
|
||||
public HelpPageSampleKey(MediaTypeHeaderValue mediaType, SampleDirection sampleDirection, string controllerName, string actionName, IEnumerable<string> parameterNames)
|
||||
: this(sampleDirection, controllerName, actionName, parameterNames)
|
||||
{
|
||||
if (mediaType == null)
|
||||
{
|
||||
throw new ArgumentNullException("mediaType");
|
||||
}
|
||||
|
||||
MediaType = mediaType;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the name of the controller.
|
||||
/// </summary>
|
||||
/// <value>
|
||||
/// The name of the controller.
|
||||
/// </value>
|
||||
public string ControllerName { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the name of the action.
|
||||
/// </summary>
|
||||
/// <value>
|
||||
/// The name of the action.
|
||||
/// </value>
|
||||
public string ActionName { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the media type.
|
||||
/// </summary>
|
||||
/// <value>
|
||||
/// The media type.
|
||||
/// </value>
|
||||
public MediaTypeHeaderValue MediaType { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the parameter names.
|
||||
/// </summary>
|
||||
public HashSet<string> ParameterNames { get; private set; }
|
||||
|
||||
public Type ParameterType { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the <see cref="SampleDirection"/>.
|
||||
/// </summary>
|
||||
public SampleDirection? SampleDirection { get; private set; }
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
HelpPageSampleKey otherKey = obj as HelpPageSampleKey;
|
||||
if (otherKey == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return String.Equals(ControllerName, otherKey.ControllerName, StringComparison.OrdinalIgnoreCase) &&
|
||||
String.Equals(ActionName, otherKey.ActionName, StringComparison.OrdinalIgnoreCase) &&
|
||||
(MediaType == otherKey.MediaType || (MediaType != null && MediaType.Equals(otherKey.MediaType))) &&
|
||||
ParameterType == otherKey.ParameterType &&
|
||||
SampleDirection == otherKey.SampleDirection &&
|
||||
ParameterNames.SetEquals(otherKey.ParameterNames);
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
int hashCode = ControllerName.ToUpperInvariant().GetHashCode() ^ ActionName.ToUpperInvariant().GetHashCode();
|
||||
if (MediaType != null)
|
||||
{
|
||||
hashCode ^= MediaType.GetHashCode();
|
||||
}
|
||||
if (SampleDirection != null)
|
||||
{
|
||||
hashCode ^= SampleDirection.GetHashCode();
|
||||
}
|
||||
if (ParameterType != null)
|
||||
{
|
||||
hashCode ^= ParameterType.GetHashCode();
|
||||
}
|
||||
foreach (string parameterName in ParameterNames)
|
||||
{
|
||||
hashCode ^= parameterName.ToUpperInvariant().GetHashCode();
|
||||
}
|
||||
|
||||
return hashCode;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
using System;
|
||||
|
||||
namespace OnDocWeb.Areas.HelpPage
|
||||
{
|
||||
/// <summary>
|
||||
/// This represents an image sample on the help page. There's a display template named ImageSample associated with this class.
|
||||
/// </summary>
|
||||
public class ImageSample
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="ImageSample"/> class.
|
||||
/// </summary>
|
||||
/// <param name="src">The URL of an image.</param>
|
||||
public ImageSample(string src)
|
||||
{
|
||||
if (src == null)
|
||||
{
|
||||
throw new ArgumentNullException("src");
|
||||
}
|
||||
Src = src;
|
||||
}
|
||||
|
||||
public string Src { get; private set; }
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
ImageSample other = obj as ImageSample;
|
||||
return other != null && Src == other.Src;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return Src.GetHashCode();
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return Src;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
using System;
|
||||
|
||||
namespace OnDocWeb.Areas.HelpPage
|
||||
{
|
||||
/// <summary>
|
||||
/// This represents an invalid sample on the help page. There's a display template named InvalidSample associated with this class.
|
||||
/// </summary>
|
||||
public class InvalidSample
|
||||
{
|
||||
public InvalidSample(string errorMessage)
|
||||
{
|
||||
if (errorMessage == null)
|
||||
{
|
||||
throw new ArgumentNullException("errorMessage");
|
||||
}
|
||||
ErrorMessage = errorMessage;
|
||||
}
|
||||
|
||||
public string ErrorMessage { get; private set; }
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
InvalidSample other = obj as InvalidSample;
|
||||
return other != null && ErrorMessage == other.ErrorMessage;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return ErrorMessage.GetHashCode();
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return ErrorMessage;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,456 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
|
||||
namespace OnDocWeb.Areas.HelpPage
|
||||
{
|
||||
/// <summary>
|
||||
/// This class will create an object of a given type and populate it with sample data.
|
||||
/// </summary>
|
||||
public class ObjectGenerator
|
||||
{
|
||||
internal const int DefaultCollectionSize = 2;
|
||||
private readonly SimpleTypeObjectGenerator SimpleObjectGenerator = new SimpleTypeObjectGenerator();
|
||||
|
||||
/// <summary>
|
||||
/// Generates an object for a given type. The type needs to be public, have a public default constructor and settable public properties/fields. Currently it supports the following types:
|
||||
/// Simple types: <see cref="int"/>, <see cref="string"/>, <see cref="Enum"/>, <see cref="DateTime"/>, <see cref="Uri"/>, etc.
|
||||
/// Complex types: POCO types.
|
||||
/// Nullables: <see cref="Nullable{T}"/>.
|
||||
/// Arrays: arrays of simple types or complex types.
|
||||
/// Key value pairs: <see cref="KeyValuePair{TKey,TValue}"/>
|
||||
/// Tuples: <see cref="Tuple{T1}"/>, <see cref="Tuple{T1,T2}"/>, etc
|
||||
/// Dictionaries: <see cref="IDictionary{TKey,TValue}"/> or anything deriving from <see cref="IDictionary{TKey,TValue}"/>.
|
||||
/// Collections: <see cref="IList{T}"/>, <see cref="IEnumerable{T}"/>, <see cref="ICollection{T}"/>, <see cref="IList"/>, <see cref="IEnumerable"/>, <see cref="ICollection"/> or anything deriving from <see cref="ICollection{T}"/> or <see cref="IList"/>.
|
||||
/// Queryables: <see cref="IQueryable"/>, <see cref="IQueryable{T}"/>.
|
||||
/// </summary>
|
||||
/// <param name="type">The type.</param>
|
||||
/// <returns>An object of the given type.</returns>
|
||||
public object GenerateObject(Type type)
|
||||
{
|
||||
return GenerateObject(type, new Dictionary<Type, object>());
|
||||
}
|
||||
|
||||
[SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "Here we just want to return null if anything goes wrong.")]
|
||||
private object GenerateObject(Type type, Dictionary<Type, object> createdObjectReferences)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (SimpleTypeObjectGenerator.CanGenerateObject(type))
|
||||
{
|
||||
return SimpleObjectGenerator.GenerateObject(type);
|
||||
}
|
||||
|
||||
if (type.IsArray)
|
||||
{
|
||||
return GenerateArray(type, DefaultCollectionSize, createdObjectReferences);
|
||||
}
|
||||
|
||||
if (type.IsGenericType)
|
||||
{
|
||||
return GenerateGenericType(type, DefaultCollectionSize, createdObjectReferences);
|
||||
}
|
||||
|
||||
if (type == typeof(IDictionary))
|
||||
{
|
||||
return GenerateDictionary(typeof(Hashtable), DefaultCollectionSize, createdObjectReferences);
|
||||
}
|
||||
|
||||
if (typeof(IDictionary).IsAssignableFrom(type))
|
||||
{
|
||||
return GenerateDictionary(type, DefaultCollectionSize, createdObjectReferences);
|
||||
}
|
||||
|
||||
if (type == typeof(IList) ||
|
||||
type == typeof(IEnumerable) ||
|
||||
type == typeof(ICollection))
|
||||
{
|
||||
return GenerateCollection(typeof(ArrayList), DefaultCollectionSize, createdObjectReferences);
|
||||
}
|
||||
|
||||
if (typeof(IList).IsAssignableFrom(type))
|
||||
{
|
||||
return GenerateCollection(type, DefaultCollectionSize, createdObjectReferences);
|
||||
}
|
||||
|
||||
if (type == typeof(IQueryable))
|
||||
{
|
||||
return GenerateQueryable(type, DefaultCollectionSize, createdObjectReferences);
|
||||
}
|
||||
|
||||
if (type.IsEnum)
|
||||
{
|
||||
return GenerateEnum(type);
|
||||
}
|
||||
|
||||
if (type.IsPublic || type.IsNestedPublic)
|
||||
{
|
||||
return GenerateComplexObject(type, createdObjectReferences);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Returns null if anything fails
|
||||
return null;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private static object GenerateGenericType(Type type, int collectionSize, Dictionary<Type, object> createdObjectReferences)
|
||||
{
|
||||
Type genericTypeDefinition = type.GetGenericTypeDefinition();
|
||||
if (genericTypeDefinition == typeof(Nullable<>))
|
||||
{
|
||||
return GenerateNullable(type, createdObjectReferences);
|
||||
}
|
||||
|
||||
if (genericTypeDefinition == typeof(KeyValuePair<,>))
|
||||
{
|
||||
return GenerateKeyValuePair(type, createdObjectReferences);
|
||||
}
|
||||
|
||||
if (IsTuple(genericTypeDefinition))
|
||||
{
|
||||
return GenerateTuple(type, createdObjectReferences);
|
||||
}
|
||||
|
||||
Type[] genericArguments = type.GetGenericArguments();
|
||||
if (genericArguments.Length == 1)
|
||||
{
|
||||
if (genericTypeDefinition == typeof(IList<>) ||
|
||||
genericTypeDefinition == typeof(IEnumerable<>) ||
|
||||
genericTypeDefinition == typeof(ICollection<>))
|
||||
{
|
||||
Type collectionType = typeof(List<>).MakeGenericType(genericArguments);
|
||||
return GenerateCollection(collectionType, collectionSize, createdObjectReferences);
|
||||
}
|
||||
|
||||
if (genericTypeDefinition == typeof(IQueryable<>))
|
||||
{
|
||||
return GenerateQueryable(type, collectionSize, createdObjectReferences);
|
||||
}
|
||||
|
||||
Type closedCollectionType = typeof(ICollection<>).MakeGenericType(genericArguments[0]);
|
||||
if (closedCollectionType.IsAssignableFrom(type))
|
||||
{
|
||||
return GenerateCollection(type, collectionSize, createdObjectReferences);
|
||||
}
|
||||
}
|
||||
|
||||
if (genericArguments.Length == 2)
|
||||
{
|
||||
if (genericTypeDefinition == typeof(IDictionary<,>))
|
||||
{
|
||||
Type dictionaryType = typeof(Dictionary<,>).MakeGenericType(genericArguments);
|
||||
return GenerateDictionary(dictionaryType, collectionSize, createdObjectReferences);
|
||||
}
|
||||
|
||||
Type closedDictionaryType = typeof(IDictionary<,>).MakeGenericType(genericArguments[0], genericArguments[1]);
|
||||
if (closedDictionaryType.IsAssignableFrom(type))
|
||||
{
|
||||
return GenerateDictionary(type, collectionSize, createdObjectReferences);
|
||||
}
|
||||
}
|
||||
|
||||
if (type.IsPublic || type.IsNestedPublic)
|
||||
{
|
||||
return GenerateComplexObject(type, createdObjectReferences);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private static object GenerateTuple(Type type, Dictionary<Type, object> createdObjectReferences)
|
||||
{
|
||||
Type[] genericArgs = type.GetGenericArguments();
|
||||
object[] parameterValues = new object[genericArgs.Length];
|
||||
bool failedToCreateTuple = true;
|
||||
ObjectGenerator objectGenerator = new ObjectGenerator();
|
||||
for (int i = 0; i < genericArgs.Length; i++)
|
||||
{
|
||||
parameterValues[i] = objectGenerator.GenerateObject(genericArgs[i], createdObjectReferences);
|
||||
failedToCreateTuple &= parameterValues[i] == null;
|
||||
}
|
||||
if (failedToCreateTuple)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
object result = Activator.CreateInstance(type, parameterValues);
|
||||
return result;
|
||||
}
|
||||
|
||||
private static bool IsTuple(Type genericTypeDefinition)
|
||||
{
|
||||
return genericTypeDefinition == typeof(Tuple<>) ||
|
||||
genericTypeDefinition == typeof(Tuple<,>) ||
|
||||
genericTypeDefinition == typeof(Tuple<,,>) ||
|
||||
genericTypeDefinition == typeof(Tuple<,,,>) ||
|
||||
genericTypeDefinition == typeof(Tuple<,,,,>) ||
|
||||
genericTypeDefinition == typeof(Tuple<,,,,,>) ||
|
||||
genericTypeDefinition == typeof(Tuple<,,,,,,>) ||
|
||||
genericTypeDefinition == typeof(Tuple<,,,,,,,>);
|
||||
}
|
||||
|
||||
private static object GenerateKeyValuePair(Type keyValuePairType, Dictionary<Type, object> createdObjectReferences)
|
||||
{
|
||||
Type[] genericArgs = keyValuePairType.GetGenericArguments();
|
||||
Type typeK = genericArgs[0];
|
||||
Type typeV = genericArgs[1];
|
||||
ObjectGenerator objectGenerator = new ObjectGenerator();
|
||||
object keyObject = objectGenerator.GenerateObject(typeK, createdObjectReferences);
|
||||
object valueObject = objectGenerator.GenerateObject(typeV, createdObjectReferences);
|
||||
if (keyObject == null && valueObject == null)
|
||||
{
|
||||
// Failed to create key and values
|
||||
return null;
|
||||
}
|
||||
object result = Activator.CreateInstance(keyValuePairType, keyObject, valueObject);
|
||||
return result;
|
||||
}
|
||||
|
||||
private static object GenerateArray(Type arrayType, int size, Dictionary<Type, object> createdObjectReferences)
|
||||
{
|
||||
Type type = arrayType.GetElementType();
|
||||
Array result = Array.CreateInstance(type, size);
|
||||
bool areAllElementsNull = true;
|
||||
ObjectGenerator objectGenerator = new ObjectGenerator();
|
||||
for (int i = 0; i < size; i++)
|
||||
{
|
||||
object element = objectGenerator.GenerateObject(type, createdObjectReferences);
|
||||
result.SetValue(element, i);
|
||||
areAllElementsNull &= element == null;
|
||||
}
|
||||
|
||||
if (areAllElementsNull)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private static object GenerateDictionary(Type dictionaryType, int size, Dictionary<Type, object> createdObjectReferences)
|
||||
{
|
||||
Type typeK = typeof(object);
|
||||
Type typeV = typeof(object);
|
||||
if (dictionaryType.IsGenericType)
|
||||
{
|
||||
Type[] genericArgs = dictionaryType.GetGenericArguments();
|
||||
typeK = genericArgs[0];
|
||||
typeV = genericArgs[1];
|
||||
}
|
||||
|
||||
object result = Activator.CreateInstance(dictionaryType);
|
||||
MethodInfo addMethod = dictionaryType.GetMethod("Add") ?? dictionaryType.GetMethod("TryAdd");
|
||||
MethodInfo containsMethod = dictionaryType.GetMethod("Contains") ?? dictionaryType.GetMethod("ContainsKey");
|
||||
ObjectGenerator objectGenerator = new ObjectGenerator();
|
||||
for (int i = 0; i < size; i++)
|
||||
{
|
||||
object newKey = objectGenerator.GenerateObject(typeK, createdObjectReferences);
|
||||
if (newKey == null)
|
||||
{
|
||||
// Cannot generate a valid key
|
||||
return null;
|
||||
}
|
||||
|
||||
bool containsKey = (bool)containsMethod.Invoke(result, new object[] { newKey });
|
||||
if (!containsKey)
|
||||
{
|
||||
object newValue = objectGenerator.GenerateObject(typeV, createdObjectReferences);
|
||||
addMethod.Invoke(result, new object[] { newKey, newValue });
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private static object GenerateEnum(Type enumType)
|
||||
{
|
||||
Array possibleValues = Enum.GetValues(enumType);
|
||||
if (possibleValues.Length > 0)
|
||||
{
|
||||
return possibleValues.GetValue(0);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static object GenerateQueryable(Type queryableType, int size, Dictionary<Type, object> createdObjectReferences)
|
||||
{
|
||||
bool isGeneric = queryableType.IsGenericType;
|
||||
object list;
|
||||
if (isGeneric)
|
||||
{
|
||||
Type listType = typeof(List<>).MakeGenericType(queryableType.GetGenericArguments());
|
||||
list = GenerateCollection(listType, size, createdObjectReferences);
|
||||
}
|
||||
else
|
||||
{
|
||||
list = GenerateArray(typeof(object[]), size, createdObjectReferences);
|
||||
}
|
||||
if (list == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
if (isGeneric)
|
||||
{
|
||||
Type argumentType = typeof(IEnumerable<>).MakeGenericType(queryableType.GetGenericArguments());
|
||||
MethodInfo asQueryableMethod = typeof(Queryable).GetMethod("AsQueryable", new[] { argumentType });
|
||||
return asQueryableMethod.Invoke(null, new[] { list });
|
||||
}
|
||||
|
||||
return Queryable.AsQueryable((IEnumerable)list);
|
||||
}
|
||||
|
||||
private static object GenerateCollection(Type collectionType, int size, Dictionary<Type, object> createdObjectReferences)
|
||||
{
|
||||
Type type = collectionType.IsGenericType ?
|
||||
collectionType.GetGenericArguments()[0] :
|
||||
typeof(object);
|
||||
object result = Activator.CreateInstance(collectionType);
|
||||
MethodInfo addMethod = collectionType.GetMethod("Add");
|
||||
bool areAllElementsNull = true;
|
||||
ObjectGenerator objectGenerator = new ObjectGenerator();
|
||||
for (int i = 0; i < size; i++)
|
||||
{
|
||||
object element = objectGenerator.GenerateObject(type, createdObjectReferences);
|
||||
addMethod.Invoke(result, new object[] { element });
|
||||
areAllElementsNull &= element == null;
|
||||
}
|
||||
|
||||
if (areAllElementsNull)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private static object GenerateNullable(Type nullableType, Dictionary<Type, object> createdObjectReferences)
|
||||
{
|
||||
Type type = nullableType.GetGenericArguments()[0];
|
||||
ObjectGenerator objectGenerator = new ObjectGenerator();
|
||||
return objectGenerator.GenerateObject(type, createdObjectReferences);
|
||||
}
|
||||
|
||||
private static object GenerateComplexObject(Type type, Dictionary<Type, object> createdObjectReferences)
|
||||
{
|
||||
object result = null;
|
||||
|
||||
if (createdObjectReferences.TryGetValue(type, out result))
|
||||
{
|
||||
// The object has been created already, just return it. This will handle the circular reference case.
|
||||
return result;
|
||||
}
|
||||
|
||||
if (type.IsValueType)
|
||||
{
|
||||
result = Activator.CreateInstance(type);
|
||||
}
|
||||
else
|
||||
{
|
||||
ConstructorInfo defaultCtor = type.GetConstructor(Type.EmptyTypes);
|
||||
if (defaultCtor == null)
|
||||
{
|
||||
// Cannot instantiate the type because it doesn't have a default constructor
|
||||
return null;
|
||||
}
|
||||
|
||||
result = defaultCtor.Invoke(new object[0]);
|
||||
}
|
||||
createdObjectReferences.Add(type, result);
|
||||
SetPublicProperties(type, result, createdObjectReferences);
|
||||
SetPublicFields(type, result, createdObjectReferences);
|
||||
return result;
|
||||
}
|
||||
|
||||
private static void SetPublicProperties(Type type, object obj, Dictionary<Type, object> createdObjectReferences)
|
||||
{
|
||||
PropertyInfo[] properties = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
|
||||
ObjectGenerator objectGenerator = new ObjectGenerator();
|
||||
foreach (PropertyInfo property in properties)
|
||||
{
|
||||
if (property.CanWrite)
|
||||
{
|
||||
object propertyValue = objectGenerator.GenerateObject(property.PropertyType, createdObjectReferences);
|
||||
property.SetValue(obj, propertyValue, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void SetPublicFields(Type type, object obj, Dictionary<Type, object> createdObjectReferences)
|
||||
{
|
||||
FieldInfo[] fields = type.GetFields(BindingFlags.Public | BindingFlags.Instance);
|
||||
ObjectGenerator objectGenerator = new ObjectGenerator();
|
||||
foreach (FieldInfo field in fields)
|
||||
{
|
||||
object fieldValue = objectGenerator.GenerateObject(field.FieldType, createdObjectReferences);
|
||||
field.SetValue(obj, fieldValue);
|
||||
}
|
||||
}
|
||||
|
||||
private class SimpleTypeObjectGenerator
|
||||
{
|
||||
private long _index = 0;
|
||||
private static readonly Dictionary<Type, Func<long, object>> DefaultGenerators = InitializeGenerators();
|
||||
|
||||
[SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity", Justification = "These are simple type factories and cannot be split up.")]
|
||||
private static Dictionary<Type, Func<long, object>> InitializeGenerators()
|
||||
{
|
||||
return new Dictionary<Type, Func<long, object>>
|
||||
{
|
||||
{ typeof(Boolean), index => true },
|
||||
{ typeof(Byte), index => (Byte)64 },
|
||||
{ typeof(Char), index => (Char)65 },
|
||||
{ typeof(DateTime), index => DateTime.Now },
|
||||
{ typeof(DateTimeOffset), index => new DateTimeOffset(DateTime.Now) },
|
||||
{ typeof(DBNull), index => DBNull.Value },
|
||||
{ typeof(Decimal), index => (Decimal)index },
|
||||
{ typeof(Double), index => (Double)(index + 0.1) },
|
||||
{ typeof(Guid), index => Guid.NewGuid() },
|
||||
{ typeof(Int16), index => (Int16)(index % Int16.MaxValue) },
|
||||
{ typeof(Int32), index => (Int32)(index % Int32.MaxValue) },
|
||||
{ typeof(Int64), index => (Int64)index },
|
||||
{ typeof(Object), index => new object() },
|
||||
{ typeof(SByte), index => (SByte)64 },
|
||||
{ typeof(Single), index => (Single)(index + 0.1) },
|
||||
{
|
||||
typeof(String), index =>
|
||||
{
|
||||
return String.Format(CultureInfo.CurrentCulture, "sample string {0}", index);
|
||||
}
|
||||
},
|
||||
{
|
||||
typeof(TimeSpan), index =>
|
||||
{
|
||||
return TimeSpan.FromTicks(1234567);
|
||||
}
|
||||
},
|
||||
{ typeof(UInt16), index => (UInt16)(index % UInt16.MaxValue) },
|
||||
{ typeof(UInt32), index => (UInt32)(index % UInt32.MaxValue) },
|
||||
{ typeof(UInt64), index => (UInt64)index },
|
||||
{
|
||||
typeof(Uri), index =>
|
||||
{
|
||||
return new Uri(String.Format(CultureInfo.CurrentCulture, "http://webapihelppage{0}.com", index));
|
||||
}
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
public static bool CanGenerateObject(Type type)
|
||||
{
|
||||
return DefaultGenerators.ContainsKey(type);
|
||||
}
|
||||
|
||||
public object GenerateObject(Type type)
|
||||
{
|
||||
return DefaultGenerators[type](++_index);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
namespace OnDocWeb.Areas.HelpPage
|
||||
{
|
||||
/// <summary>
|
||||
/// Indicates whether the sample is used for request or response
|
||||
/// </summary>
|
||||
public enum SampleDirection
|
||||
{
|
||||
Request = 0,
|
||||
Response
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
using System;
|
||||
|
||||
namespace OnDocWeb.Areas.HelpPage
|
||||
{
|
||||
/// <summary>
|
||||
/// This represents a preformatted text sample on the help page. There's a display template named TextSample associated with this class.
|
||||
/// </summary>
|
||||
public class TextSample
|
||||
{
|
||||
public TextSample(string text)
|
||||
{
|
||||
if (text == null)
|
||||
{
|
||||
throw new ArgumentNullException("text");
|
||||
}
|
||||
Text = text;
|
||||
}
|
||||
|
||||
public string Text { get; private set; }
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
TextSample other = obj as TextSample;
|
||||
return other != null && Text == other.Text;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return Text.GetHashCode();
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return Text;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
@using System.Web.Http
|
||||
@using OnDocWeb.Areas.HelpPage.Models
|
||||
@model HelpPageApiModel
|
||||
|
||||
@{
|
||||
var description = Model.ApiDescription;
|
||||
ViewBag.Title = description.HttpMethod.Method + " " + description.RelativePath;
|
||||
}
|
||||
|
||||
<link type="text/css" href="~/Areas/HelpPage/HelpPage.css" rel="stylesheet" />
|
||||
<div id="body" class="help-page">
|
||||
<section class="featured">
|
||||
<div class="content-wrapper">
|
||||
<p>
|
||||
@Html.ActionLink("Help Page Home", "Index")
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
<section class="content-wrapper main-content clear-fix">
|
||||
@Html.DisplayForModel()
|
||||
</section>
|
||||
</div>
|
||||
@@ -0,0 +1,41 @@
|
||||
@using System.Web.Http
|
||||
@using System.Web.Http.Controllers
|
||||
@using System.Web.Http.Description
|
||||
@using OnDocWeb.Areas.HelpPage
|
||||
@using OnDocWeb.Areas.HelpPage.Models
|
||||
@model IGrouping<HttpControllerDescriptor, ApiDescription>
|
||||
|
||||
@{
|
||||
var controllerDocumentation = ViewBag.DocumentationProvider != null ?
|
||||
ViewBag.DocumentationProvider.GetDocumentation(Model.Key) :
|
||||
null;
|
||||
}
|
||||
|
||||
<h2 id="@Model.Key.ControllerName">@Model.Key.ControllerName</h2>
|
||||
@if (!String.IsNullOrEmpty(controllerDocumentation))
|
||||
{
|
||||
<p>@controllerDocumentation</p>
|
||||
}
|
||||
<table class="help-page-table">
|
||||
<thead>
|
||||
<tr><th>API</th><th>Description</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var api in Model)
|
||||
{
|
||||
<tr>
|
||||
<td class="api-name"><a href="@Url.Action("Api", "Help", new { apiId = api.GetFriendlyId() })">@api.HttpMethod.Method @api.RelativePath</a></td>
|
||||
<td class="api-documentation">
|
||||
@if (api.Documentation != null)
|
||||
{
|
||||
<p>@api.Documentation</p>
|
||||
}
|
||||
else
|
||||
{
|
||||
<p>No documentation available.</p>
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -0,0 +1,6 @@
|
||||
@using OnDocWeb.Areas.HelpPage.ModelDescriptions
|
||||
@model CollectionModelDescription
|
||||
@if (Model.ElementDescription is ComplexTypeModelDescription)
|
||||
{
|
||||
@Html.DisplayFor(m => m.ElementDescription)
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
@using OnDocWeb.Areas.HelpPage.ModelDescriptions
|
||||
@model ComplexTypeModelDescription
|
||||
@Html.DisplayFor(m => m.Properties, "Parameters")
|
||||
@@ -0,0 +1,4 @@
|
||||
@using OnDocWeb.Areas.HelpPage.ModelDescriptions
|
||||
@model DictionaryModelDescription
|
||||
Dictionary of @Html.DisplayFor(m => Model.KeyModelDescription.ModelType, "ModelDescriptionLink", new { modelDescription = Model.KeyModelDescription }) [key]
|
||||
and @Html.DisplayFor(m => Model.ValueModelDescription.ModelType, "ModelDescriptionLink", new { modelDescription = Model.ValueModelDescription }) [value]
|
||||
@@ -0,0 +1,24 @@
|
||||
@using OnDocWeb.Areas.HelpPage.ModelDescriptions
|
||||
@model EnumTypeModelDescription
|
||||
|
||||
<p>Possible enumeration values:</p>
|
||||
|
||||
<table class="help-page-table">
|
||||
<thead>
|
||||
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (EnumValueDescription value in Model.Values)
|
||||
{
|
||||
<tr>
|
||||
<td class="enum-name"><b>@value.Name</b></td>
|
||||
<td class="enum-value">
|
||||
<p>@value.Value</p>
|
||||
</td>
|
||||
<td class="enum-description">
|
||||
<p>@value.Documentation</p>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -0,0 +1,67 @@
|
||||
@using System.Web.Http
|
||||
@using System.Web.Http.Description
|
||||
@using OnDocWeb.Areas.HelpPage.Models
|
||||
@using OnDocWeb.Areas.HelpPage.ModelDescriptions
|
||||
@model HelpPageApiModel
|
||||
|
||||
@{
|
||||
ApiDescription description = Model.ApiDescription;
|
||||
}
|
||||
<h1>@description.HttpMethod.Method @description.RelativePath</h1>
|
||||
<div>
|
||||
<p>@description.Documentation</p>
|
||||
|
||||
<h2>Request Information</h2>
|
||||
|
||||
<h3>URI Parameters</h3>
|
||||
@Html.DisplayFor(m => m.UriParameters, "Parameters")
|
||||
|
||||
<h3>Body Parameters</h3>
|
||||
|
||||
<p>@Model.RequestDocumentation</p>
|
||||
|
||||
@if (Model.RequestModelDescription != null)
|
||||
{
|
||||
@Html.DisplayFor(m => m.RequestModelDescription.ModelType, "ModelDescriptionLink", new { modelDescription = Model.RequestModelDescription })
|
||||
if (Model.RequestBodyParameters != null)
|
||||
{
|
||||
@Html.DisplayFor(m => m.RequestBodyParameters, "Parameters")
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
<p>None.</p>
|
||||
}
|
||||
|
||||
@if (Model.SampleRequests.Count > 0)
|
||||
{
|
||||
<h3>Request Formats</h3>
|
||||
@Html.DisplayFor(m => m.SampleRequests, "Samples")
|
||||
}
|
||||
|
||||
<h2>Response Information</h2>
|
||||
|
||||
<h3>Resource Description</h3>
|
||||
|
||||
<p>@description.ResponseDescription.Documentation</p>
|
||||
|
||||
@if (Model.ResourceDescription != null)
|
||||
{
|
||||
@Html.DisplayFor(m => m.ResourceDescription.ModelType, "ModelDescriptionLink", new { modelDescription = Model.ResourceDescription })
|
||||
if (Model.ResourceProperties != null)
|
||||
{
|
||||
@Html.DisplayFor(m => m.ResourceProperties, "Parameters")
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
<p>None.</p>
|
||||
}
|
||||
|
||||
@if (Model.SampleResponses.Count > 0)
|
||||
{
|
||||
<h3>Response Formats</h3>
|
||||
@Html.DisplayFor(m => m.SampleResponses, "Samples")
|
||||
}
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,4 @@
|
||||
@using OnDocWeb.Areas.HelpPage
|
||||
@model ImageSample
|
||||
|
||||
<img src="@Model.Src" />
|
||||
@@ -0,0 +1,13 @@
|
||||
@using OnDocWeb.Areas.HelpPage
|
||||
@model InvalidSample
|
||||
|
||||
@if (HttpContext.Current.IsDebuggingEnabled)
|
||||
{
|
||||
<div class="warning-message-container">
|
||||
<p>@Model.ErrorMessage</p>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<p>Sample not available.</p>
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
@using OnDocWeb.Areas.HelpPage.ModelDescriptions
|
||||
@model KeyValuePairModelDescription
|
||||
Pair of @Html.DisplayFor(m => Model.KeyModelDescription.ModelType, "ModelDescriptionLink", new { modelDescription = Model.KeyModelDescription }) [key]
|
||||
and @Html.DisplayFor(m => Model.ValueModelDescription.ModelType, "ModelDescriptionLink", new { modelDescription = Model.ValueModelDescription }) [value]
|
||||
@@ -0,0 +1,26 @@
|
||||
@using OnDocWeb.Areas.HelpPage.ModelDescriptions
|
||||
@model Type
|
||||
@{
|
||||
ModelDescription modelDescription = ViewBag.modelDescription;
|
||||
if (modelDescription is ComplexTypeModelDescription || modelDescription is EnumTypeModelDescription)
|
||||
{
|
||||
if (Model == typeof(Object))
|
||||
{
|
||||
@:Object
|
||||
}
|
||||
else
|
||||
{
|
||||
@Html.ActionLink(modelDescription.Name, "ResourceModel", "Help", new { modelName = modelDescription.Name }, null)
|
||||
}
|
||||
}
|
||||
else if (modelDescription is CollectionModelDescription)
|
||||
{
|
||||
var collectionDescription = modelDescription as CollectionModelDescription;
|
||||
var elementDescription = collectionDescription.ElementDescription;
|
||||
@:Collection of @Html.DisplayFor(m => elementDescription.ModelType, "ModelDescriptionLink", new { modelDescription = elementDescription })
|
||||
}
|
||||
else
|
||||
{
|
||||
@Html.DisplayFor(m => modelDescription)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
@using System.Collections.Generic
|
||||
@using System.Collections.ObjectModel
|
||||
@using System.Web.Http.Description
|
||||
@using System.Threading
|
||||
@using OnDocWeb.Areas.HelpPage.ModelDescriptions
|
||||
@model IList<ParameterDescription>
|
||||
|
||||
@if (Model.Count > 0)
|
||||
{
|
||||
<table class="help-page-table">
|
||||
<thead>
|
||||
<tr><th>Name</th><th>Description</th><th>Type</th><th>Additional information</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (ParameterDescription parameter in Model)
|
||||
{
|
||||
ModelDescription modelDescription = parameter.TypeDescription;
|
||||
<tr>
|
||||
<td class="parameter-name">@parameter.Name</td>
|
||||
<td class="parameter-documentation">
|
||||
<p>@parameter.Documentation</p>
|
||||
</td>
|
||||
<td class="parameter-type">
|
||||
@Html.DisplayFor(m => modelDescription.ModelType, "ModelDescriptionLink", new { modelDescription = modelDescription })
|
||||
</td>
|
||||
<td class="parameter-annotations">
|
||||
@if (parameter.Annotations.Count > 0)
|
||||
{
|
||||
foreach (var annotation in parameter.Annotations)
|
||||
{
|
||||
<p>@annotation.Documentation</p>
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
<p>None.</p>
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
}
|
||||
else
|
||||
{
|
||||
<p>None.</p>
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
@using System.Net.Http.Headers
|
||||
@model Dictionary<MediaTypeHeaderValue, object>
|
||||
|
||||
@{
|
||||
// Group the samples into a single tab if they are the same.
|
||||
Dictionary<string, object> samples = Model.GroupBy(pair => pair.Value).ToDictionary(
|
||||
pair => String.Join(", ", pair.Select(m => m.Key.ToString()).ToArray()),
|
||||
pair => pair.Key);
|
||||
var mediaTypes = samples.Keys;
|
||||
}
|
||||
<div>
|
||||
@foreach (var mediaType in mediaTypes)
|
||||
{
|
||||
<h4 class="sample-header">@mediaType</h4>
|
||||
<div class="sample-content">
|
||||
<span><b>Sample:</b></span>
|
||||
@{
|
||||
var sample = samples[mediaType];
|
||||
if (sample == null)
|
||||
{
|
||||
<p>Sample not available.</p>
|
||||
}
|
||||
else
|
||||
{
|
||||
@Html.DisplayFor(s => sample);
|
||||
}
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
@@ -0,0 +1,3 @@
|
||||
@using OnDocWeb.Areas.HelpPage.ModelDescriptions
|
||||
@model SimpleTypeModelDescription
|
||||
@Model.Documentation
|
||||
@@ -0,0 +1,6 @@
|
||||
@using OnDocWeb.Areas.HelpPage
|
||||
@model TextSample
|
||||
|
||||
<pre class="wrapped">
|
||||
@Model.Text
|
||||
</pre>
|
||||
@@ -0,0 +1,38 @@
|
||||
@using System.Web.Http
|
||||
@using System.Web.Http.Controllers
|
||||
@using System.Web.Http.Description
|
||||
@using System.Collections.ObjectModel
|
||||
@using OnDocWeb.Areas.HelpPage.Models
|
||||
@model Collection<ApiDescription>
|
||||
|
||||
@{
|
||||
ViewBag.Title = "ASP.NET Web API Help Page";
|
||||
|
||||
// Group APIs by controller
|
||||
ILookup<HttpControllerDescriptor, ApiDescription> apiGroups = Model.ToLookup(api => api.ActionDescriptor.ControllerDescriptor);
|
||||
}
|
||||
|
||||
<link type="text/css" href="~/Areas/HelpPage/HelpPage.css" rel="stylesheet" />
|
||||
<header class="help-page">
|
||||
<div class="content-wrapper">
|
||||
<div class="float-left">
|
||||
<h1>@ViewBag.Title</h1>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<div id="body" class="help-page">
|
||||
<section class="featured">
|
||||
<div class="content-wrapper">
|
||||
<h2>Introduction</h2>
|
||||
<p>
|
||||
Provide a general description of your APIs here.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
<section class="content-wrapper main-content clear-fix">
|
||||
@foreach (var group in apiGroups)
|
||||
{
|
||||
@Html.DisplayFor(m => group, "ApiGroup")
|
||||
}
|
||||
</section>
|
||||
</div>
|
||||
@@ -0,0 +1,19 @@
|
||||
@using System.Web.Http
|
||||
@using OnDocWeb.Areas.HelpPage.ModelDescriptions
|
||||
@model ModelDescription
|
||||
|
||||
<link type="text/css" href="~/Areas/HelpPage/HelpPage.css" rel="stylesheet" />
|
||||
<div id="body" class="help-page">
|
||||
<section class="featured">
|
||||
<div class="content-wrapper">
|
||||
<p>
|
||||
@Html.ActionLink("Help Page Home", "Index")
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
<h1>@Model.Name</h1>
|
||||
<p>@Model.Documentation</p>
|
||||
<section class="content-wrapper main-content clear-fix">
|
||||
@Html.DisplayFor(m => Model)
|
||||
</section>
|
||||
</div>
|
||||
@@ -0,0 +1,12 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>@ViewBag.Title</title>
|
||||
@RenderSection("scripts", required: false)
|
||||
</head>
|
||||
<body>
|
||||
@RenderBody()
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,41 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<configuration>
|
||||
<configSections>
|
||||
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
|
||||
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
|
||||
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
|
||||
</sectionGroup>
|
||||
</configSections>
|
||||
|
||||
<system.web.webPages.razor>
|
||||
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.9.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
||||
<pages pageBaseType="System.Web.Mvc.WebViewPage">
|
||||
<namespaces>
|
||||
<add namespace="System.Web.Mvc" />
|
||||
<add namespace="System.Web.Mvc.Ajax" />
|
||||
<add namespace="System.Web.Mvc.Html" />
|
||||
<add namespace="System.Web.Routing" />
|
||||
</namespaces>
|
||||
</pages>
|
||||
</system.web.webPages.razor>
|
||||
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
|
||||
<system.web>
|
||||
<compilation debug="true">
|
||||
<assemblies>
|
||||
<add assembly="System.Net.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
</assemblies>
|
||||
</compilation>
|
||||
</system.web>
|
||||
|
||||
<system.webServer>
|
||||
<handlers>
|
||||
<remove name="BlockViewHandler"/>
|
||||
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
|
||||
</handlers>
|
||||
</system.webServer>
|
||||
</configuration>
|
||||
@@ -0,0 +1,4 @@
|
||||
@{
|
||||
// Change the Layout path below to blend the look and feel of the help page with your existing web pages
|
||||
Layout = "~/Views/Shared/_Layout.cshtml";
|
||||
}
|
||||
@@ -0,0 +1,161 @@
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Web.Http.Controllers;
|
||||
using System.Web.Http.Description;
|
||||
using System.Xml.XPath;
|
||||
using OnDocWeb.Areas.HelpPage.ModelDescriptions;
|
||||
|
||||
namespace OnDocWeb.Areas.HelpPage
|
||||
{
|
||||
/// <summary>
|
||||
/// A custom <see cref="IDocumentationProvider"/> that reads the API documentation from an XML documentation file.
|
||||
/// </summary>
|
||||
public class XmlDocumentationProvider : IDocumentationProvider, IModelDocumentationProvider
|
||||
{
|
||||
private XPathNavigator _documentNavigator;
|
||||
private const string TypeExpression = "/doc/members/member[@name='T:{0}']";
|
||||
private const string MethodExpression = "/doc/members/member[@name='M:{0}']";
|
||||
private const string PropertyExpression = "/doc/members/member[@name='P:{0}']";
|
||||
private const string FieldExpression = "/doc/members/member[@name='F:{0}']";
|
||||
private const string ParameterExpression = "param[@name='{0}']";
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="XmlDocumentationProvider"/> class.
|
||||
/// </summary>
|
||||
/// <param name="documentPath">The physical path to XML document.</param>
|
||||
public XmlDocumentationProvider(string documentPath)
|
||||
{
|
||||
if (documentPath == null)
|
||||
{
|
||||
throw new ArgumentNullException("documentPath");
|
||||
}
|
||||
XPathDocument xpath = new XPathDocument(documentPath);
|
||||
_documentNavigator = xpath.CreateNavigator();
|
||||
}
|
||||
|
||||
public string GetDocumentation(HttpControllerDescriptor controllerDescriptor)
|
||||
{
|
||||
XPathNavigator typeNode = GetTypeNode(controllerDescriptor.ControllerType);
|
||||
return GetTagValue(typeNode, "summary");
|
||||
}
|
||||
|
||||
public virtual string GetDocumentation(HttpActionDescriptor actionDescriptor)
|
||||
{
|
||||
XPathNavigator methodNode = GetMethodNode(actionDescriptor);
|
||||
return GetTagValue(methodNode, "summary");
|
||||
}
|
||||
|
||||
public virtual string GetDocumentation(HttpParameterDescriptor parameterDescriptor)
|
||||
{
|
||||
ReflectedHttpParameterDescriptor reflectedParameterDescriptor = parameterDescriptor as ReflectedHttpParameterDescriptor;
|
||||
if (reflectedParameterDescriptor != null)
|
||||
{
|
||||
XPathNavigator methodNode = GetMethodNode(reflectedParameterDescriptor.ActionDescriptor);
|
||||
if (methodNode != null)
|
||||
{
|
||||
string parameterName = reflectedParameterDescriptor.ParameterInfo.Name;
|
||||
XPathNavigator parameterNode = methodNode.SelectSingleNode(String.Format(CultureInfo.InvariantCulture, ParameterExpression, parameterName));
|
||||
if (parameterNode != null)
|
||||
{
|
||||
return parameterNode.Value.Trim();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public string GetResponseDocumentation(HttpActionDescriptor actionDescriptor)
|
||||
{
|
||||
XPathNavigator methodNode = GetMethodNode(actionDescriptor);
|
||||
return GetTagValue(methodNode, "returns");
|
||||
}
|
||||
|
||||
public string GetDocumentation(MemberInfo member)
|
||||
{
|
||||
string memberName = String.Format(CultureInfo.InvariantCulture, "{0}.{1}", GetTypeName(member.DeclaringType), member.Name);
|
||||
string expression = member.MemberType == MemberTypes.Field ? FieldExpression : PropertyExpression;
|
||||
string selectExpression = String.Format(CultureInfo.InvariantCulture, expression, memberName);
|
||||
XPathNavigator propertyNode = _documentNavigator.SelectSingleNode(selectExpression);
|
||||
return GetTagValue(propertyNode, "summary");
|
||||
}
|
||||
|
||||
public string GetDocumentation(Type type)
|
||||
{
|
||||
XPathNavigator typeNode = GetTypeNode(type);
|
||||
return GetTagValue(typeNode, "summary");
|
||||
}
|
||||
|
||||
private XPathNavigator GetMethodNode(HttpActionDescriptor actionDescriptor)
|
||||
{
|
||||
ReflectedHttpActionDescriptor reflectedActionDescriptor = actionDescriptor as ReflectedHttpActionDescriptor;
|
||||
if (reflectedActionDescriptor != null)
|
||||
{
|
||||
string selectExpression = String.Format(CultureInfo.InvariantCulture, MethodExpression, GetMemberName(reflectedActionDescriptor.MethodInfo));
|
||||
return _documentNavigator.SelectSingleNode(selectExpression);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private static string GetMemberName(MethodInfo method)
|
||||
{
|
||||
string name = String.Format(CultureInfo.InvariantCulture, "{0}.{1}", GetTypeName(method.DeclaringType), method.Name);
|
||||
ParameterInfo[] parameters = method.GetParameters();
|
||||
if (parameters.Length != 0)
|
||||
{
|
||||
string[] parameterTypeNames = parameters.Select(param => GetTypeName(param.ParameterType)).ToArray();
|
||||
name += String.Format(CultureInfo.InvariantCulture, "({0})", String.Join(",", parameterTypeNames));
|
||||
}
|
||||
|
||||
return name;
|
||||
}
|
||||
|
||||
private static string GetTagValue(XPathNavigator parentNode, string tagName)
|
||||
{
|
||||
if (parentNode != null)
|
||||
{
|
||||
XPathNavigator node = parentNode.SelectSingleNode(tagName);
|
||||
if (node != null)
|
||||
{
|
||||
return node.Value.Trim();
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private XPathNavigator GetTypeNode(Type type)
|
||||
{
|
||||
string controllerTypeName = GetTypeName(type);
|
||||
string selectExpression = String.Format(CultureInfo.InvariantCulture, TypeExpression, controllerTypeName);
|
||||
return _documentNavigator.SelectSingleNode(selectExpression);
|
||||
}
|
||||
|
||||
private static string GetTypeName(Type type)
|
||||
{
|
||||
string name = type.FullName;
|
||||
if (type.IsGenericType)
|
||||
{
|
||||
// Format the generic type name to something like: Generic{System.Int32,System.String}
|
||||
Type genericType = type.GetGenericTypeDefinition();
|
||||
Type[] genericArguments = type.GetGenericArguments();
|
||||
string genericTypeName = genericType.FullName;
|
||||
|
||||
// Trim the generic parameter counts from the name
|
||||
genericTypeName = genericTypeName.Substring(0, genericTypeName.IndexOf('`'));
|
||||
string[] argumentTypeNames = genericArguments.Select(t => GetTypeName(t)).ToArray();
|
||||
name = String.Format(CultureInfo.InvariantCulture, "{0}{{{1}}}", genericTypeName, String.Join(",", argumentTypeNames));
|
||||
}
|
||||
if (type.IsNested)
|
||||
{
|
||||
// Changing the nested type name from OuterType+InnerType to OuterType.InnerType to match the XML documentation syntax.
|
||||
name = name.Replace("+", ".");
|
||||
}
|
||||
|
||||
return name;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
/* Set padding to keep content from hitting the edges */
|
||||
.body-content {
|
||||
margin-top: 15px;
|
||||
padding-left: 15px;
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
/* Set width on the form input elements since they're 100% wide by default */
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
max-width: 280px;
|
||||
}
|
||||
Vendored
+4124
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","../../scss/vendor/_rfs.scss","bootstrap-grid.css","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_variables.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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 truncated
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
/*!
|
||||
* Bootstrap Grid v5.2.3 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2022 The Bootstrap Authors
|
||||
* Copyright 2011-2022 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:33,37,41;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-link-color:#0d6efd;--bs-link-hover-color:#0a58ca;--bs-code-color:#d63384;--bs-highlight-bg:#fff3cd}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.colLine truncated
|
||||
/*# sourceMappingURL=bootstrap-grid.min.css.map */
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","../../scss/vendor/_rfs.scss","../../scss/_containers.scss","dist/css/bootstrap-grid.css","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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 truncated
|
||||
+4123
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","../../scss/vendor/_rfs.scss","bootstrap-grid.css","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_variables.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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 truncated
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
/*!
|
||||
* Bootstrap Grid v5.2.3 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2022 The Bootstrap Authors
|
||||
* Copyright 2011-2022 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:33,37,41;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-link-color:#0d6efd;--bs-link-hover-color:#0a58ca;--bs-code-color:#d63384;--bs-highlight-bg:#fff3cd}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-left:calc(var(--bs-gutter-x) * .5);padding-right:calc(var(--bs-gutter-x) * .5);margin-left:auto;margin-right:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-left:calc(-.5 * var(--bs-gutter-x));margin-right:calc(-.5 * var(--bs-gutter-x))}.row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-left:calc(var(--bs-gutter-x) * .5);padding-right:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-right:8.33333333%}.offset-2{margin-right:16.66666667%}.offset-3{margin-right:25%}.offset-4{margin-right:33.33333333%}.offset-5{margin-right:41.66666667%}.offset-6{margin-right:50%}.offset-7{margin-right:58.33333333%}.offset-8{margin-right:66.66666667%}.offset-9{margin-right:75%}.offset-10{margin-right:83.33333333%}.offset-11{margin-right:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.333Line truncated
|
||||
/*# sourceMappingURL=bootstrap-grid.rtl.min.css.map */
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","../../scss/vendor/_rfs.scss","../../scss/_containers.scss","dist/css/bootstrap-grid.rtl.css","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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 truncated
|
||||
+488
@@ -0,0 +1,488 @@
|
||||
/*!
|
||||
* Bootstrap Reboot v5.2.3 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2022 The Bootstrap Authors
|
||||
* Copyright 2011-2022 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
:root {
|
||||
--bs-blue: #0d6efd;
|
||||
--bs-indigo: #6610f2;
|
||||
--bs-purple: #6f42c1;
|
||||
--bs-pink: #d63384;
|
||||
--bs-red: #dc3545;
|
||||
--bs-orange: #fd7e14;
|
||||
--bs-yellow: #ffc107;
|
||||
--bs-green: #198754;
|
||||
--bs-teal: #20c997;
|
||||
--bs-cyan: #0dcaf0;
|
||||
--bs-black: #000;
|
||||
--bs-white: #fff;
|
||||
--bs-gray: #6c757d;
|
||||
--bs-gray-dark: #343a40;
|
||||
--bs-gray-100: #f8f9fa;
|
||||
--bs-gray-200: #e9ecef;
|
||||
--bs-gray-300: #dee2e6;
|
||||
--bs-gray-400: #ced4da;
|
||||
--bs-gray-500: #adb5bd;
|
||||
--bs-gray-600: #6c757d;
|
||||
--bs-gray-700: #495057;
|
||||
--bs-gray-800: #343a40;
|
||||
--bs-gray-900: #212529;
|
||||
--bs-primary: #0d6efd;
|
||||
--bs-secondary: #6c757d;
|
||||
--bs-success: #198754;
|
||||
--bs-info: #0dcaf0;
|
||||
--bs-warning: #ffc107;
|
||||
--bs-danger: #dc3545;
|
||||
--bs-light: #f8f9fa;
|
||||
--bs-dark: #212529;
|
||||
--bs-primary-rgb: 13, 110, 253;
|
||||
--bs-secondary-rgb: 108, 117, 125;
|
||||
--bs-success-rgb: 25, 135, 84;
|
||||
--bs-info-rgb: 13, 202, 240;
|
||||
--bs-warning-rgb: 255, 193, 7;
|
||||
--bs-danger-rgb: 220, 53, 69;
|
||||
--bs-light-rgb: 248, 249, 250;
|
||||
--bs-dark-rgb: 33, 37, 41;
|
||||
--bs-white-rgb: 255, 255, 255;
|
||||
--bs-black-rgb: 0, 0, 0;
|
||||
--bs-body-color-rgb: 33, 37, 41;
|
||||
--bs-body-bg-rgb: 255, 255, 255;
|
||||
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
|
||||
--bs-body-font-family: var(--bs-font-sans-serif);
|
||||
--bs-body-font-size: 1rem;
|
||||
--bs-body-font-weight: 400;
|
||||
--bs-body-line-height: 1.5;
|
||||
--bs-body-color: #212529;
|
||||
--bs-body-bg: #fff;
|
||||
--bs-border-width: 1px;
|
||||
--bs-border-style: solid;
|
||||
--bs-border-color: #dee2e6;
|
||||
--bs-border-color-translucent: rgba(0, 0, 0, 0.175);
|
||||
--bs-border-radius: 0.375rem;
|
||||
--bs-border-radius-sm: 0.25rem;
|
||||
--bs-border-radius-lg: 0.5rem;
|
||||
--bs-border-radius-xl: 1rem;
|
||||
--bs-border-radius-2xl: 2rem;
|
||||
--bs-border-radius-pill: 50rem;
|
||||
--bs-link-color: #0d6efd;
|
||||
--bs-link-hover-color: #0a58ca;
|
||||
--bs-code-color: #d63384;
|
||||
--bs-highlight-bg: #fff3cd;
|
||||
}
|
||||
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: no-preference) {
|
||||
:root {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: var(--bs-body-font-family);
|
||||
font-size: var(--bs-body-font-size);
|
||||
font-weight: var(--bs-body-font-weight);
|
||||
line-height: var(--bs-body-line-height);
|
||||
color: var(--bs-body-color);
|
||||
text-align: var(--bs-body-text-align);
|
||||
background-color: var(--bs-body-bg);
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
hr {
|
||||
margin: 1rem 0;
|
||||
color: inherit;
|
||||
border: 0;
|
||||
border-top: 1px solid;
|
||||
opacity: 0.25;
|
||||
}
|
||||
|
||||
h6, h5, h4, h3, h2, h1 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
font-weight: 500;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: calc(1.375rem + 1.5vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h1 {
|
||||
font-size: 2.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: calc(1.325rem + 0.9vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h2 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: calc(1.3rem + 0.6vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h3 {
|
||||
font-size: 1.75rem;
|
||||
}
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: calc(1.275rem + 0.3vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h4 {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
abbr[title] {
|
||||
-webkit-text-decoration: underline dotted;
|
||||
text-decoration: underline dotted;
|
||||
cursor: help;
|
||||
-webkit-text-decoration-skip-ink: none;
|
||||
text-decoration-skip-ink: none;
|
||||
}
|
||||
|
||||
address {
|
||||
margin-bottom: 1rem;
|
||||
font-style: normal;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul {
|
||||
padding-left: 2rem;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul,
|
||||
dl {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
ol ol,
|
||||
ul ul,
|
||||
ol ul,
|
||||
ul ol {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
dt {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-bottom: 0.5rem;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
small {
|
||||
font-size: 0.875em;
|
||||
}
|
||||
|
||||
mark {
|
||||
padding: 0.1875em;
|
||||
background-color: var(--bs-highlight-bg);
|
||||
}
|
||||
|
||||
sub,
|
||||
sup {
|
||||
position: relative;
|
||||
font-size: 0.75em;
|
||||
line-height: 0;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--bs-link-color);
|
||||
text-decoration: underline;
|
||||
}
|
||||
a:hover {
|
||||
color: var(--bs-link-hover-color);
|
||||
}
|
||||
|
||||
a:not([href]):not([class]), a:not([href]):not([class]):hover {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
pre,
|
||||
code,
|
||||
kbd,
|
||||
samp {
|
||||
font-family: var(--bs-font-monospace);
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
pre {
|
||||
display: block;
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
overflow: auto;
|
||||
font-size: 0.875em;
|
||||
}
|
||||
pre code {
|
||||
font-size: inherit;
|
||||
color: inherit;
|
||||
word-break: normal;
|
||||
}
|
||||
|
||||
code {
|
||||
font-size: 0.875em;
|
||||
color: var(--bs-code-color);
|
||||
word-wrap: break-word;
|
||||
}
|
||||
a > code {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
kbd {
|
||||
padding: 0.1875rem 0.375rem;
|
||||
font-size: 0.875em;
|
||||
color: var(--bs-body-bg);
|
||||
background-color: var(--bs-body-color);
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
kbd kbd {
|
||||
padding: 0;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
figure {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
img,
|
||||
svg {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
table {
|
||||
caption-side: bottom;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
caption {
|
||||
padding-top: 0.5rem;
|
||||
padding-bottom: 0.5rem;
|
||||
color: #6c757d;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
th {
|
||||
text-align: inherit;
|
||||
text-align: -webkit-match-parent;
|
||||
}
|
||||
|
||||
thead,
|
||||
tbody,
|
||||
tfoot,
|
||||
tr,
|
||||
td,
|
||||
th {
|
||||
border-color: inherit;
|
||||
border-style: solid;
|
||||
border-width: 0;
|
||||
}
|
||||
|
||||
label {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
button {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
button:focus:not(:focus-visible) {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
input,
|
||||
button,
|
||||
select,
|
||||
optgroup,
|
||||
textarea {
|
||||
margin: 0;
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
button,
|
||||
select {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
[role=button] {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
select {
|
||||
word-wrap: normal;
|
||||
}
|
||||
select:disabled {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
button,
|
||||
[type=button],
|
||||
[type=reset],
|
||||
[type=submit] {
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
button:not(:disabled),
|
||||
[type=button]:not(:disabled),
|
||||
[type=reset]:not(:disabled),
|
||||
[type=submit]:not(:disabled) {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
textarea {
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
min-width: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
legend {
|
||||
float: left;
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
font-size: calc(1.275rem + 0.3vw);
|
||||
line-height: inherit;
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
legend {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
}
|
||||
legend + * {
|
||||
clear: left;
|
||||
}
|
||||
|
||||
::-webkit-datetime-edit-fields-wrapper,
|
||||
::-webkit-datetime-edit-text,
|
||||
::-webkit-datetime-edit-minute,
|
||||
::-webkit-datetime-edit-hour-field,
|
||||
::-webkit-datetime-edit-day-field,
|
||||
::-webkit-datetime-edit-month-field,
|
||||
::-webkit-datetime-edit-year-field {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
::-webkit-inner-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
[type=search] {
|
||||
outline-offset: -2px;
|
||||
-webkit-appearance: textfield;
|
||||
}
|
||||
|
||||
/* rtl:raw:
|
||||
[type="tel"],
|
||||
[type="url"],
|
||||
[type="email"],
|
||||
[type="number"] {
|
||||
direction: ltr;
|
||||
}
|
||||
*/
|
||||
::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
::-webkit-color-swatch-wrapper {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
font: inherit;
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
::file-selector-button {
|
||||
font: inherit;
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
output {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
iframe {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
summary {
|
||||
display: list-item;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
progress {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
[hidden] {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/*# sourceMappingURL=bootstrap-reboot.css.map */
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","../../scss/vendor/_rfs.scss","bootstrap-reboot.css","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_border-radius.scss"],"names":[],"mappings":"AACE;;;;;EAAA;ACDF;EAQI,kBAAA;EAAA,oBAAA;EAAA,oBAAA;EAAA,kBAAA;EAAA,iBAAA;EAAA,oBAAA;EAAA,oBAAA;EAAA,mBAAA;EAAA,kBAAA;EAAA,kBAAA;EAAA,gBAAA;EAAA,gBAAA;EAAA,kBAAA;EAAA,uBAAA;EAIA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAIA,qBAAA;EAAA,uBAAA;EAAA,qBAAA;EAAA,kBAAA;EAAA,qBAAA;EAAA,oBAAA;EAAA,mBAAA;EAAA,kBAAA;EAIA,8BAAA;EAAA,iCAAA;EAAA,6BAAA;EAAA,2BAAA;EAAA,6BAAA;EAAA,4BAAA;EAAA,6BAAA;EAAA,yBAAA;EAGF,6BAAA;EACA,uBAAA;EACA,+BAAA;EACA,+BAAA;EAMA,qNAAA;EACA,yGAAA;EACA,yFAAA;EAOA,gDAAA;EC4PI,yBALI;EDrPR,0BAAA;EACA,0BAAA;EACA,wBAAA;EAIA,kBAAA;EAIA,sBAAA;EACA,wBAAA;EACA,0BAAA;EACA,mDAAA;EAEA,4BAAA;EACA,8BAAA;EACA,6BAAA;EACA,2BAAA;EACA,4BAAA;EACA,8BAAA;EAGA,wBAAA;EACA,8BAAA;EAEA,wBAAA;EAEA,0BAAA;AEEF;;AC1DA;;;EAGE,sBAAA;AD6DF;;AC9CI;EANJ;IAOM,uBAAA;EDkDJ;AACF;;ACrCA;EACE,SAAA;EACA,uCAAA;EFmPI,mCALI;EE5OR,uCAAA;EACA,uCAAA;EACA,2BAAA;EACA,qCAAA;EACA,mCAAA;EACA,8BAAA;EACA,6CAAA;ADwCF;;AC/BA;EACE,cAAA;EACA,cCijB4B;EDhjB5B,SAAA;EACA,qBAAA;EACA,aCujB4B;AFrhB9B;;ACxBA;EACE,aAAA;EACA,qBCwf4B;EDrf5B,gBCwf4B;EDvf5B,gBCwf4B;AF/d9B;;ACrBA;EF6MQ,iCAAA;ACpLR;ADkBI;EE3CJ;IFoNQ,iBAAA;ECvLN;AACF;;ACzBA;EFwMQ,iCAAA;AC3KR;ADSI;EEtCJ;IF+MQ,eAAA;EC9KN;AACF;;AC7BA;EFmMQ,+BAAA;AClKR;ADAI;EEjCJ;IF0MQ,kBAAA;ECrKN;AACF;;ACjCA;EF8LQ,iCAAA;ACzJR;ADTI;EE5BJ;IFqMQ,iBAAA;EC5JN;AACF;;ACrCA;EFqLM,kBALI;ACvIV;;ACpCA;EFgLM,eALI;ACnIV;;AC7BA;EACE,aAAA;EACA,mBCmS0B;AFnQ5B;;ACtBA;EACE,yCAAA;EAAA,iCAAA;EACA,YAAA;EACA,sCAAA;EAAA,8BAAA;ADyBF;;ACnBA;EACE,mBAAA;EACA,kBAAA;EACA,oBAAA;ADsBF;;AChBA;;EAEE,kBAAA;ADmBF;;AChBA;;;EAGE,aAAA;EACA,mBAAA;ADmBF;;AChBA;;;;EAIE,gBAAA;ADmBF;;AChBA;EACE,gBC6X4B;AF1W9B;;ACdA;EACE,qBAAA;EACA,cAAA;ADiBF;;ACXA;EACE,gBAAA;ADcF;;ACNA;;EAEE,mBCsW4B;AF7V9B;;ACDA;EFmFM,kBALI;ACzEV;;ACEA;EACE,iBC+a4B;ED9a5B,wCAAA;ADCF;;ACQA;;EAEE,kBAAA;EF+DI,iBALI;EExDR,cAAA;EACA,wBAAA;ADLF;;ACQA;EAAM,eAAA;ADJN;;ACKA;EAAM,WAAA;ADDN;;ACMA;EACE,2BAAA;EACA,0BCqKwC;AFxK1C;ACKE;EACE,iCAAA;ADHJ;;ACcE;EAEE,cAAA;EACA,qBAAA;ADZJ;;ACmBA;;;;EAIE,qCCkR4B;EH7PxB,cALI;AC/BV;;ACuBA;EACE,cAAA;EACA,aAAA;EACA,mBAAA;EACA,cAAA;EFSI,kBALI;ACvBV;ACwBE;EFII,kBALI;EEGN,cAAA;EACA,kBAAA;ADtBJ;;AC0BA;EFHM,kBALI;EEUR,2BAAA;EACA,qBAAA;ADvBF;AC0BE;EACE,cAAA;ADxBJ;;AC4BA;EACE,2BAAA;EFfI,kBALI;EEsBR,wBCuyCkC;EDtyClC,sCCuyCkC;EC3kDhC,sBAAA;AH4QJ;AC2BE;EACE,UAAA;EFtBE,cALI;ACGV;;ACmCA;EACE,gBAAA;ADhCF;;ACsCA;;EAEE,sBAAA;ADnCF;;AC2CA;EACE,oBAAA;EACA,yBAAA;ADxCF;;AC2CA;EACE,mBCsT4B;EDrT5B,sBCqT4B;EDpT5B,cCjVS;EDkVT,gBAAA;ADxCF;;AC+CA;EAEE,mBAAA;EACA,gCAAA;AD7CF;;ACgDA;;;;;;EAME,qBAAA;EACA,mBAAA;EACA,eAAA;AD7CF;;ACqDA;EACE,qBAAA;ADlDF;;ACwDA;EAEE,gBAAA;ADtDF;;AC8DA;EACE,UAAA;AD3DF;;ACgEA;;;;;EAKE,SAAA;EACA,oBAAA;EFrHI,kBALI;EE4HR,oBAAA;AD7DF;;ACiEA;;EAEE,oBAAA;AD9DF;;ACmEA;EACE,eAAA;ADhEF;;ACmEA;EAGE,iBAAA;ADlEF;ACqEE;EACE,UAAA;ADnEJ;;AC0EA;EACE,wBAAA;ADvEF;;AC+EA;;;;EAIE,0BAAA;AD5EF;AC+EI;;;;EACE,eAAA;AD1EN;;ACiFA;EACE,UAAA;EACA,kBAAA;AD9EF;;ACmFA;EACE,gBAAA;ADhFF;;AC0FA;EACE,YAAA;EACA,UAAA;EACA,SAAA;EACA,SAAA;ADvFF;;AC+FA;EACE,WAAA;EACA,WAAA;EACA,UAAA;EACA,qBC8I4B;EHxVtB,iCAAA;EE6MN,oBAAA;AD7FF;ADlRI;EEwWJ;IF/LQ,iBAAA;EC6GN;AACF;AC0FE;EACE,WAAA;ADxFJ;;AC+FA;;;;;;;EAOE,UAAA;AD5FF;;AC+FA;EACE,YAAA;AD5FF;;ACqGA;EACE,oBAAA;EACA,6BAAA;ADlGF;;AC0GA;;;;;;;CAAA;AAWA;EACE,wBAAA;AD1GF;;AC+GA;EACE,UAAA;AD5GF;;ACmHA;EACE,aAAA;EACA,0BAAA;ADhHF;;AC8GA;EACE,aAAA;EACA,0BAAA;ADhHF;;ACqHA;EACE,qBAAA;ADlHF;;ACuHA;EACE,SAAA;ADpHF;;AC2HA;EACE,kBAAA;EACA,eAAA;ADxHF;;ACgIA;EACE,wBAAA;AD7HF;;ACqIA;EACE,wBAAA;ADlIF","file":"bootstrap-reboot.css","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.2.3 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Copyright 2011-2022 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n\n",":root {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($fLine truncated
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
/*!
|
||||
* Bootstrap Reboot v5.2.3 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2022 The Bootstrap Authors
|
||||
* Copyright 2011-2022 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:33,37,41;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-link-color:#0d6efd;--bs-link-hover-color:#0a58ca;--bs-code-color:#d63384;--bs-highlight-bg:#fff3cd}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;opacity:.25}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:var(--bs-link-color);text-decoration:underline}a:hover{color:var(--bs-link-hover-color)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[typLine truncated
|
||||
/*# sourceMappingURL=bootstrap-reboot.min.css.map */
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","../../scss/vendor/_rfs.scss","../../scss/_reboot.scss","dist/css/bootstrap-reboot.css","../../scss/mixins/_border-radius.scss"],"names":[],"mappings":"AACE;;;;;ACDF,MAQI,UAAA,QAAA,YAAA,QAAA,YAAA,QAAA,UAAA,QAAA,SAAA,QAAA,YAAA,QAAA,YAAA,QAAA,WAAA,QAAA,UAAA,QAAA,UAAA,QAAA,WAAA,KAAA,WAAA,KAAA,UAAA,QAAA,eAAA,QAIA,cAAA,QAAA,cAAA,QAAA,cAAA,QAAA,cAAA,QAAA,cAAA,QAAA,cAAA,QAAA,cAAA,QAAA,cAAA,QAAA,cAAA,QAIA,aAAA,QAAA,eAAA,QAAA,aAAA,QAAA,UAAA,QAAA,aAAA,QAAA,YAAA,QAAA,WAAA,QAAA,UAAA,QAIA,iBAAA,EAAA,CAAA,GAAA,CAAA,IAAA,mBAAA,GAAA,CAAA,GAAA,CAAA,IAAA,iBAAA,EAAA,CAAA,GAAA,CAAA,GAAA,cAAA,EAAA,CAAA,GAAA,CAAA,IAAA,iBAAA,GAAA,CAAA,GAAA,CAAA,EAAA,gBAAA,GAAA,CAAA,EAAA,CAAA,GAAA,eAAA,GAAA,CAAA,GAAA,CAAA,IAAA,cAAA,EAAA,CAAA,EAAA,CAAA,GAGF,eAAA,GAAA,CAAA,GAAA,CAAA,IACA,eAAA,CAAA,CAAA,CAAA,CAAA,EACA,oBAAA,EAAA,CAAA,EAAA,CAAA,GACA,iBAAA,GAAA,CAAA,GAAA,CAAA,IAMA,qBAAA,SAAA,CAAA,aAAA,CAAA,UAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,WAAA,CAAA,iBAAA,CAAA,KAAA,CAAA,UAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,iBAAA,CAAA,mBACA,oBAAA,cAAA,CAAA,KAAA,CAAA,MAAA,CAAA,QAAA,CAAA,iBAAA,CAAA,aAAA,CAAA,UACA,cAAA,2EAOA,sBAAA,0BC4PI,oBAAA,KD1PJ,sBAAA,IACA,sBAAA,IACA,gBAAA,QAIA,aAAA,KAIA,kBAAA,IACA,kBAAA,MACA,kBAAA,QACA,8BAAA,qBAEA,mBAAA,SACA,sBAAA,QACA,sBAAA,OACA,sBAAA,KACA,uBAAA,KACA,wBAAA,MAGA,gBAAA,QACA,sBAAA,QAEA,gBAAA,QAEA,kBAAA,QExDF,EC8DA,QADA,SD1DE,WAAA,WAeE,8CANJ,MAOM,gBAAA,QAcN,KACE,OAAA,EACA,YAAA,2BDmPI,UAAA,yBCjPJ,YAAA,2BACA,YAAA,2BACA,MAAA,qBACA,WAAA,0BACA,iBAAA,kBACA,yBAAA,KACA,4BAAA,YASF,GACE,OAAA,KAAA,EACA,MAAA,QACA,OAAA,EACA,WAAA,IAAA,MACA,QAAA,IAUF,GAAA,GAAA,GAAA,GAAA,GAAA,GACE,WAAA,EACA,cAAA,MAGA,YAAA,IACA,YAAA,IAIF,GD6MQ,UAAA,uBAlKJ,0BC3CJ,GDoNQ,UAAA,QC/MR,GDwMQ,UAAA,sBAlKJ,0BCtCJ,GD+MQ,UAAA,MC1MR,GDmMQ,UAAA,oBAlKJ,0BCjCJ,GD0MQ,UAAA,SCrMR,GD8LQ,UAAA,sBAlKJ,0BC5BJ,GDqMQ,UAAA,QChMR,GDqLM,UAAA,QChLN,GDgLM,UAAA,KCrKN,EACE,WAAA,EACA,cAAA,KAUF,YACE,wBAAA,UAAA,OAAA,gBAAA,UAAA,OACA,OAAA,KACA,iCAAA,KAAA,yBAAA,KAMF,QACE,cAAA,KACA,WAAA,OACA,YAAA,QAMF,GCqBA,GDnBE,aAAA,KCyBF,GDtBA,GCqBA,GDlBE,WAAA,EACA,cAAA,KAGF,MCsBA,MACA,MAFA,MDjBE,cAAA,EAGF,GACE,YAAA,IAKF,GACE,cAAA,MACA,YAAA,EAMF,WACE,OAAA,EAAA,EAAA,KAQF,ECWA,ODTE,YAAA,OAQF,MDmFM,UAAA,OC5EN,KACE,QAAA,QACA,iBAAA,uBASF,ICHA,IDKE,SAAA,SD+DI,UAAA,MC7DJ,YAAA,EACA,eAAA,SAGF,IAAM,OAAA,OACN,IAAM,IAAA,MAKN,EACE,MAAA,qBACA,gBAAA,UAEA,QACE,MAAA,2BAWF,2BAAA,iCAEE,MAAA,QACA,gBAAA,KCPJ,KACA,IDaA,ICZA,KDgBE,YAAA,yBDqBI,UAAA,ICbN,IACE,QAAA,MACA,WAAA,EACA,cAAA,KACA,SAAA,KDSI,UAAA,OCJJ,SDII,UAAA,QCFF,MAAA,QACA,WAAA,OAIJ,KDHM,UAAA,OCKJ,MAAA,qBACA,UAAA,WAGA,OACE,MAAA,QAIJ,IACE,QAAA,SAAA,QDfI,UAAA,OCiBJ,MAAA,kBACA,iBAAA,qBEpSE,cAAA,OFuSF,QACE,QAAA,EDtBE,UAAA,ICiCN,OACE,OAAA,EAAA,EAAA,KAMF,ICjCA,IDmCE,eAAA,OAQF,MACE,aAAA,OACA,gBAAA,SAGF,QACE,YAAA,MACA,eAAA,MACA,MAAA,QACA,WAAA,KAOF,GAEE,WAAA,QACA,WAAA,qBCxCF,MAGA,GAFA,MAGA,GDuCA,MCzCA,GD+CE,aAAA,QACA,aAAA,MACA,aAAA,EAQF,MACE,QAAA,aAMF,OAEE,cAAA,EAQF,iCACE,QAAA,ECtDF,OD2DA,MCzDA,SADA,OAEA,SD6DE,OAAA,EACA,YAAA,QDrHI,UAAA,QCuHJ,YAAA,QAIF,OC5DA,OD8DE,eAAA,KAKF,cACE,OAAA,QAGF,OAGE,UAAA,OAGA,gBACE,QAAA,EAOJ,0IACE,QAAA,eClEF,cACA,aACA,cDwEA,OAIE,mBAAA,OCxEF,6BACA,4BACA,6BDyEI,sBACE,OAAA,QAON,mBACE,QAAA,EACA,aAAA,KAKF,SACE,OAAA,SAUF,SACE,UAAA,EACA,QAAA,EACA,OAAA,EACA,OAAA,EAQF,OACE,MAAA,KACA,MAAA,KACA,QAAA,EACA,cAAA,MD1MM,UAAA,sBC6MN,YAAA,QD/WE,0BCwWJ,OD/LQ,UAAA,QCwMN,SACE,MAAA,KChFJ,kCDuFA,uCCxFA,mCADA,+BAGA,oCAJA,6BAKA,mCD4FE,QAAA,EAGF,4BACE,OAAA,KASF,cACE,eAAA,KACA,mBAAA,UAmBF,4BACE,mBAAA,KAKF,+BACE,QAAA,EAOF,6BACE,KAAA,QACA,mBAAA,OAFF,uBACE,KAAA,QACA,mBAAA,OAKF,OACE,QAAA,aAKF,OACE,OAAA,EAOF,QACE,QAAA,UACA,OAAA,QAQF,SACE,eAAA,SAQF,SACE,QAAA","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.2.3 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Copyright 2011-2022 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n\n",":root {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$prefix}gradient: #{$gradient};\n\n // Root and body\n // scss-docs-start rLine truncated
|
||||
+485
@@ -0,0 +1,485 @@
|
||||
/*!
|
||||
* Bootstrap Reboot v5.2.3 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2022 The Bootstrap Authors
|
||||
* Copyright 2011-2022 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
:root {
|
||||
--bs-blue: #0d6efd;
|
||||
--bs-indigo: #6610f2;
|
||||
--bs-purple: #6f42c1;
|
||||
--bs-pink: #d63384;
|
||||
--bs-red: #dc3545;
|
||||
--bs-orange: #fd7e14;
|
||||
--bs-yellow: #ffc107;
|
||||
--bs-green: #198754;
|
||||
--bs-teal: #20c997;
|
||||
--bs-cyan: #0dcaf0;
|
||||
--bs-black: #000;
|
||||
--bs-white: #fff;
|
||||
--bs-gray: #6c757d;
|
||||
--bs-gray-dark: #343a40;
|
||||
--bs-gray-100: #f8f9fa;
|
||||
--bs-gray-200: #e9ecef;
|
||||
--bs-gray-300: #dee2e6;
|
||||
--bs-gray-400: #ced4da;
|
||||
--bs-gray-500: #adb5bd;
|
||||
--bs-gray-600: #6c757d;
|
||||
--bs-gray-700: #495057;
|
||||
--bs-gray-800: #343a40;
|
||||
--bs-gray-900: #212529;
|
||||
--bs-primary: #0d6efd;
|
||||
--bs-secondary: #6c757d;
|
||||
--bs-success: #198754;
|
||||
--bs-info: #0dcaf0;
|
||||
--bs-warning: #ffc107;
|
||||
--bs-danger: #dc3545;
|
||||
--bs-light: #f8f9fa;
|
||||
--bs-dark: #212529;
|
||||
--bs-primary-rgb: 13, 110, 253;
|
||||
--bs-secondary-rgb: 108, 117, 125;
|
||||
--bs-success-rgb: 25, 135, 84;
|
||||
--bs-info-rgb: 13, 202, 240;
|
||||
--bs-warning-rgb: 255, 193, 7;
|
||||
--bs-danger-rgb: 220, 53, 69;
|
||||
--bs-light-rgb: 248, 249, 250;
|
||||
--bs-dark-rgb: 33, 37, 41;
|
||||
--bs-white-rgb: 255, 255, 255;
|
||||
--bs-black-rgb: 0, 0, 0;
|
||||
--bs-body-color-rgb: 33, 37, 41;
|
||||
--bs-body-bg-rgb: 255, 255, 255;
|
||||
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
|
||||
--bs-body-font-family: var(--bs-font-sans-serif);
|
||||
--bs-body-font-size: 1rem;
|
||||
--bs-body-font-weight: 400;
|
||||
--bs-body-line-height: 1.5;
|
||||
--bs-body-color: #212529;
|
||||
--bs-body-bg: #fff;
|
||||
--bs-border-width: 1px;
|
||||
--bs-border-style: solid;
|
||||
--bs-border-color: #dee2e6;
|
||||
--bs-border-color-translucent: rgba(0, 0, 0, 0.175);
|
||||
--bs-border-radius: 0.375rem;
|
||||
--bs-border-radius-sm: 0.25rem;
|
||||
--bs-border-radius-lg: 0.5rem;
|
||||
--bs-border-radius-xl: 1rem;
|
||||
--bs-border-radius-2xl: 2rem;
|
||||
--bs-border-radius-pill: 50rem;
|
||||
--bs-link-color: #0d6efd;
|
||||
--bs-link-hover-color: #0a58ca;
|
||||
--bs-code-color: #d63384;
|
||||
--bs-highlight-bg: #fff3cd;
|
||||
}
|
||||
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: no-preference) {
|
||||
:root {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: var(--bs-body-font-family);
|
||||
font-size: var(--bs-body-font-size);
|
||||
font-weight: var(--bs-body-font-weight);
|
||||
line-height: var(--bs-body-line-height);
|
||||
color: var(--bs-body-color);
|
||||
text-align: var(--bs-body-text-align);
|
||||
background-color: var(--bs-body-bg);
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
hr {
|
||||
margin: 1rem 0;
|
||||
color: inherit;
|
||||
border: 0;
|
||||
border-top: 1px solid;
|
||||
opacity: 0.25;
|
||||
}
|
||||
|
||||
h6, h5, h4, h3, h2, h1 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
font-weight: 500;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: calc(1.375rem + 1.5vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h1 {
|
||||
font-size: 2.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: calc(1.325rem + 0.9vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h2 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: calc(1.3rem + 0.6vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h3 {
|
||||
font-size: 1.75rem;
|
||||
}
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: calc(1.275rem + 0.3vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h4 {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
abbr[title] {
|
||||
-webkit-text-decoration: underline dotted;
|
||||
text-decoration: underline dotted;
|
||||
cursor: help;
|
||||
-webkit-text-decoration-skip-ink: none;
|
||||
text-decoration-skip-ink: none;
|
||||
}
|
||||
|
||||
address {
|
||||
margin-bottom: 1rem;
|
||||
font-style: normal;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul {
|
||||
padding-right: 2rem;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul,
|
||||
dl {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
ol ol,
|
||||
ul ul,
|
||||
ol ul,
|
||||
ul ol {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
dt {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-bottom: 0.5rem;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
small {
|
||||
font-size: 0.875em;
|
||||
}
|
||||
|
||||
mark {
|
||||
padding: 0.1875em;
|
||||
background-color: var(--bs-highlight-bg);
|
||||
}
|
||||
|
||||
sub,
|
||||
sup {
|
||||
position: relative;
|
||||
font-size: 0.75em;
|
||||
line-height: 0;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--bs-link-color);
|
||||
text-decoration: underline;
|
||||
}
|
||||
a:hover {
|
||||
color: var(--bs-link-hover-color);
|
||||
}
|
||||
|
||||
a:not([href]):not([class]), a:not([href]):not([class]):hover {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
pre,
|
||||
code,
|
||||
kbd,
|
||||
samp {
|
||||
font-family: var(--bs-font-monospace);
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
pre {
|
||||
display: block;
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
overflow: auto;
|
||||
font-size: 0.875em;
|
||||
}
|
||||
pre code {
|
||||
font-size: inherit;
|
||||
color: inherit;
|
||||
word-break: normal;
|
||||
}
|
||||
|
||||
code {
|
||||
font-size: 0.875em;
|
||||
color: var(--bs-code-color);
|
||||
word-wrap: break-word;
|
||||
}
|
||||
a > code {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
kbd {
|
||||
padding: 0.1875rem 0.375rem;
|
||||
font-size: 0.875em;
|
||||
color: var(--bs-body-bg);
|
||||
background-color: var(--bs-body-color);
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
kbd kbd {
|
||||
padding: 0;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
figure {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
img,
|
||||
svg {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
table {
|
||||
caption-side: bottom;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
caption {
|
||||
padding-top: 0.5rem;
|
||||
padding-bottom: 0.5rem;
|
||||
color: #6c757d;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
th {
|
||||
text-align: inherit;
|
||||
text-align: -webkit-match-parent;
|
||||
}
|
||||
|
||||
thead,
|
||||
tbody,
|
||||
tfoot,
|
||||
tr,
|
||||
td,
|
||||
th {
|
||||
border-color: inherit;
|
||||
border-style: solid;
|
||||
border-width: 0;
|
||||
}
|
||||
|
||||
label {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
button {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
button:focus:not(:focus-visible) {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
input,
|
||||
button,
|
||||
select,
|
||||
optgroup,
|
||||
textarea {
|
||||
margin: 0;
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
button,
|
||||
select {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
[role=button] {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
select {
|
||||
word-wrap: normal;
|
||||
}
|
||||
select:disabled {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
button,
|
||||
[type=button],
|
||||
[type=reset],
|
||||
[type=submit] {
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
button:not(:disabled),
|
||||
[type=button]:not(:disabled),
|
||||
[type=reset]:not(:disabled),
|
||||
[type=submit]:not(:disabled) {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
textarea {
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
min-width: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
legend {
|
||||
float: right;
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
font-size: calc(1.275rem + 0.3vw);
|
||||
line-height: inherit;
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
legend {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
}
|
||||
legend + * {
|
||||
clear: right;
|
||||
}
|
||||
|
||||
::-webkit-datetime-edit-fields-wrapper,
|
||||
::-webkit-datetime-edit-text,
|
||||
::-webkit-datetime-edit-minute,
|
||||
::-webkit-datetime-edit-hour-field,
|
||||
::-webkit-datetime-edit-day-field,
|
||||
::-webkit-datetime-edit-month-field,
|
||||
::-webkit-datetime-edit-year-field {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
::-webkit-inner-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
[type=search] {
|
||||
outline-offset: -2px;
|
||||
-webkit-appearance: textfield;
|
||||
}
|
||||
|
||||
[type="tel"],
|
||||
[type="url"],
|
||||
[type="email"],
|
||||
[type="number"] {
|
||||
direction: ltr;
|
||||
}
|
||||
::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
::-webkit-color-swatch-wrapper {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
font: inherit;
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
::file-selector-button {
|
||||
font: inherit;
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
output {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
iframe {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
summary {
|
||||
display: list-item;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
progress {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
[hidden] {
|
||||
display: none !important;
|
||||
}
|
||||
/*# sourceMappingURL=bootstrap-reboot.rtl.css.map */
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","../../scss/vendor/_rfs.scss","bootstrap-reboot.css","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_border-radius.scss"],"names":[],"mappings":"AACE;;;;;EAAA;ACDF;EAQI,kBAAA;EAAA,oBAAA;EAAA,oBAAA;EAAA,kBAAA;EAAA,iBAAA;EAAA,oBAAA;EAAA,oBAAA;EAAA,mBAAA;EAAA,kBAAA;EAAA,kBAAA;EAAA,gBAAA;EAAA,gBAAA;EAAA,kBAAA;EAAA,uBAAA;EAIA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAIA,qBAAA;EAAA,uBAAA;EAAA,qBAAA;EAAA,kBAAA;EAAA,qBAAA;EAAA,oBAAA;EAAA,mBAAA;EAAA,kBAAA;EAIA,8BAAA;EAAA,iCAAA;EAAA,6BAAA;EAAA,2BAAA;EAAA,6BAAA;EAAA,4BAAA;EAAA,6BAAA;EAAA,yBAAA;EAGF,6BAAA;EACA,uBAAA;EACA,+BAAA;EACA,+BAAA;EAMA,qNAAA;EACA,yGAAA;EACA,yFAAA;EAOA,gDAAA;EC4PI,yBALI;EDrPR,0BAAA;EACA,0BAAA;EACA,wBAAA;EAIA,kBAAA;EAIA,sBAAA;EACA,wBAAA;EACA,0BAAA;EACA,mDAAA;EAEA,4BAAA;EACA,8BAAA;EACA,6BAAA;EACA,2BAAA;EACA,4BAAA;EACA,8BAAA;EAGA,wBAAA;EACA,8BAAA;EAEA,wBAAA;EAEA,0BAAA;AEEF;;AC1DA;;;EAGE,sBAAA;AD6DF;;AC9CI;EANJ;IAOM,uBAAA;EDkDJ;AACF;;ACrCA;EACE,SAAA;EACA,uCAAA;EFmPI,mCALI;EE5OR,uCAAA;EACA,uCAAA;EACA,2BAAA;EACA,qCAAA;EACA,mCAAA;EACA,8BAAA;EACA,6CAAA;ADwCF;;AC/BA;EACE,cAAA;EACA,cCijB4B;EDhjB5B,SAAA;EACA,qBAAA;EACA,aCujB4B;AFrhB9B;;ACxBA;EACE,aAAA;EACA,qBCwf4B;EDrf5B,gBCwf4B;EDvf5B,gBCwf4B;AF/d9B;;ACrBA;EF6MQ,iCAAA;ACpLR;ADkBI;EE3CJ;IFoNQ,iBAAA;ECvLN;AACF;;ACzBA;EFwMQ,iCAAA;AC3KR;ADSI;EEtCJ;IF+MQ,eAAA;EC9KN;AACF;;AC7BA;EFmMQ,+BAAA;AClKR;ADAI;EEjCJ;IF0MQ,kBAAA;ECrKN;AACF;;ACjCA;EF8LQ,iCAAA;ACzJR;ADTI;EE5BJ;IFqMQ,iBAAA;EC5JN;AACF;;ACrCA;EFqLM,kBALI;ACvIV;;ACpCA;EFgLM,eALI;ACnIV;;AC7BA;EACE,aAAA;EACA,mBCmS0B;AFnQ5B;;ACtBA;EACE,yCAAA;EAAA,iCAAA;EACA,YAAA;EACA,sCAAA;EAAA,8BAAA;ADyBF;;ACnBA;EACE,mBAAA;EACA,kBAAA;EACA,oBAAA;ADsBF;;AChBA;;EAEE,mBAAA;ADmBF;;AChBA;;;EAGE,aAAA;EACA,mBAAA;ADmBF;;AChBA;;;;EAIE,gBAAA;ADmBF;;AChBA;EACE,gBC6X4B;AF1W9B;;ACdA;EACE,qBAAA;EACA,eAAA;ADiBF;;ACXA;EACE,gBAAA;ADcF;;ACNA;;EAEE,mBCsW4B;AF7V9B;;ACDA;EFmFM,kBALI;ACzEV;;ACEA;EACE,iBC+a4B;ED9a5B,wCAAA;ADCF;;ACQA;;EAEE,kBAAA;EF+DI,iBALI;EExDR,cAAA;EACA,wBAAA;ADLF;;ACQA;EAAM,eAAA;ADJN;;ACKA;EAAM,WAAA;ADDN;;ACMA;EACE,2BAAA;EACA,0BCqKwC;AFxK1C;ACKE;EACE,iCAAA;ADHJ;;ACcE;EAEE,cAAA;EACA,qBAAA;ADZJ;;ACmBA;;;;EAIE,qCCkR4B;EH7PxB,cALI;AC/BV;;ACuBA;EACE,cAAA;EACA,aAAA;EACA,mBAAA;EACA,cAAA;EFSI,kBALI;ACvBV;ACwBE;EFII,kBALI;EEGN,cAAA;EACA,kBAAA;ADtBJ;;AC0BA;EFHM,kBALI;EEUR,2BAAA;EACA,qBAAA;ADvBF;AC0BE;EACE,cAAA;ADxBJ;;AC4BA;EACE,2BAAA;EFfI,kBALI;EEsBR,wBCuyCkC;EDtyClC,sCCuyCkC;EC3kDhC,sBAAA;AH4QJ;AC2BE;EACE,UAAA;EFtBE,cALI;ACGV;;ACmCA;EACE,gBAAA;ADhCF;;ACsCA;;EAEE,sBAAA;ADnCF;;AC2CA;EACE,oBAAA;EACA,yBAAA;ADxCF;;AC2CA;EACE,mBCsT4B;EDrT5B,sBCqT4B;EDpT5B,cCjVS;EDkVT,iBAAA;ADxCF;;AC+CA;EAEE,mBAAA;EACA,gCAAA;AD7CF;;ACgDA;;;;;;EAME,qBAAA;EACA,mBAAA;EACA,eAAA;AD7CF;;ACqDA;EACE,qBAAA;ADlDF;;ACwDA;EAEE,gBAAA;ADtDF;;AC8DA;EACE,UAAA;AD3DF;;ACgEA;;;;;EAKE,SAAA;EACA,oBAAA;EFrHI,kBALI;EE4HR,oBAAA;AD7DF;;ACiEA;;EAEE,oBAAA;AD9DF;;ACmEA;EACE,eAAA;ADhEF;;ACmEA;EAGE,iBAAA;ADlEF;ACqEE;EACE,UAAA;ADnEJ;;AC0EA;EACE,wBAAA;ADvEF;;AC+EA;;;;EAIE,0BAAA;AD5EF;AC+EI;;;;EACE,eAAA;AD1EN;;ACiFA;EACE,UAAA;EACA,kBAAA;AD9EF;;ACmFA;EACE,gBAAA;ADhFF;;AC0FA;EACE,YAAA;EACA,UAAA;EACA,SAAA;EACA,SAAA;ADvFF;;AC+FA;EACE,YAAA;EACA,WAAA;EACA,UAAA;EACA,qBC8I4B;EHxVtB,iCAAA;EE6MN,oBAAA;AD7FF;ADlRI;EEwWJ;IF/LQ,iBAAA;EC6GN;AACF;AC0FE;EACE,YAAA;ADxFJ;;AC+FA;;;;;;;EAOE,UAAA;AD5FF;;AC+FA;EACE,YAAA;AD5FF;;ACqGA;EACE,oBAAA;EACA,6BAAA;ADlGF;;AAnbA;;;;EHAE,cAAA;ACDF;AGyiBA;EACE,wBAAA;AD1GF;;AC+GA;EACE,UAAA;AD5GF;;ACmHA;EACE,aAAA;EACA,0BAAA;ADhHF;;AC8GA;EACE,aAAA;EACA,0BAAA;ADhHF;;ACqHA;EACE,qBAAA;ADlHF;;ACuHA;EACE,SAAA;ADpHF;;AC2HA;EACE,kBAAA;EACA,eAAA;ADxHF;;ACgIA;EACE,wBAAA;AD7HF;;ACqIA;EACE,wBAAA;ADlIF","file":"bootstrap-reboot.rtl.css","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.2.3 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Copyright 2011-2022 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n\n",":root {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace:Line truncated
|
||||
@@ -0,0 +1,7 @@
|
||||
/*!
|
||||
* Bootstrap Reboot v5.2.3 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2022 The Bootstrap Authors
|
||||
* Copyright 2011-2022 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:33,37,41;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-link-color:#0d6efd;--bs-link-hover-color:#0a58ca;--bs-code-color:#d63384;--bs-highlight-bg:#fff3cd}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;opacity:.25}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-right:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-right:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:var(--bs-link-color);text-decoration:underline}a:hover{color:var(--bs-link-hover-color)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:right}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[Line truncated
|
||||
/*# sourceMappingURL=bootstrap-reboot.rtl.min.css.map */
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","../../scss/vendor/_rfs.scss","../../scss/_reboot.scss","dist/css/bootstrap-reboot.rtl.css","../../scss/mixins/_border-radius.scss","bootstrap-reboot.css"],"names":[],"mappings":"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","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.2.3 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Copyright 2011-2022 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n\n",":root {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$prefix}gradienLine truncated
|
||||
+4266
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","../../scss/vendor/_rfs.scss","bootstrap-utilities.css","../../scss/mixins/_clearfix.scss","../../scss/helpers/_color-bg.scss","../../scss/helpers/_colored-links.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/_variables.scss","../../scss/mixins/_breakpoints.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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 truncated
|
||||
@@ -0,0 +1,7 @@
|
||||
/*!
|
||||
* Bootstrap Utilities v5.2.3 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2022 The Bootstrap Authors
|
||||
* Copyright 2011-2022 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:33,37,41;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-link-color:#0d6efd;--bs-link-hover-color:#0a58ca;--bs-code-color:#d63384;--bs-highlight-bg:#fff3cd}.clearfix::after{display:block;clear:both;content:""}.text-bg-primary{color:#fff!important;background-color:RGBA(13,110,253,var(--bs-bg-opacity,1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(108,117,125,var(--bs-bg-opacity,1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(25,135,84,var(--bs-bg-opacity,1))!important}.text-bg-info{color:#000!important;background-color:RGBA(13,202,240,var(--bs-bg-opacity,1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(255,193,7,var(--bs-bg-opacity,1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(220,53,69,var(--bs-bg-opacity,1))!important}.text-bg-light{color:#000!important;background-color:RGBA(248,249,250,var(--bs-bg-opacity,1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(33,37,41,var(--bs-bg-opacity,1))!important}.link-primary{color:#0d6efd!important}.link-primary:focus,.link-primary:hover{color:#0a58ca!important}.link-secondary{color:#6c757d!important}.link-secondary:focus,.link-secondary:hover{color:#565e64!important}.link-success{color:#198754!important}.link-success:focus,.link-success:hover{color:#146c43!important}.link-info{color:#0dcaf0!important}.link-info:focus,.link-info:hover{color:#3dd5f3!important}.link-warning{color:#ffc107!important}.link-warning:focus,.link-warning:hover{color:#ffcd39!important}.link-danger{color:#dc3545!important}.link-danger:focus,.link-danger:hover{color:#b02a37!important}.link-light{color:#f8f9fa!important}.link-light:focus,.link-light:hover{color:#f9fafb!important}.link-dark{color:#212529!important}.link-dark:focus,.link-dark:hover{color:#1a1e21!important}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:102Line truncated
|
||||
/*# sourceMappingURL=bootstrap-utilities.min.css.map */
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","../../scss/vendor/_rfs.scss","../../scss/mixins/_clearfix.scss","../../scss/helpers/_color-bg.scss","../../scss/helpers/_colored-links.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/mixins/_breakpoints.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_visually-hidden.scss","dist/css/bootstrap-utilities.css","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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 truncated
|
||||
+4257
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","../../scss/vendor/_rfs.scss","bootstrap-utilities.css","../../scss/mixins/_clearfix.scss","../../scss/helpers/_color-bg.scss","../../scss/helpers/_colored-links.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/_variables.scss","../../scss/mixins/_breakpoints.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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 truncated
|
||||
@@ -0,0 +1,7 @@
|
||||
/*!
|
||||
* Bootstrap Utilities v5.2.3 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2022 The Bootstrap Authors
|
||||
* Copyright 2011-2022 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:33,37,41;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-link-color:#0d6efd;--bs-link-hover-color:#0a58ca;--bs-code-color:#d63384;--bs-highlight-bg:#fff3cd}.clearfix::after{display:block;clear:both;content:""}.text-bg-primary{color:#fff!important;background-color:RGBA(13,110,253,var(--bs-bg-opacity,1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(108,117,125,var(--bs-bg-opacity,1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(25,135,84,var(--bs-bg-opacity,1))!important}.text-bg-info{color:#000!important;background-color:RGBA(13,202,240,var(--bs-bg-opacity,1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(255,193,7,var(--bs-bg-opacity,1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(220,53,69,var(--bs-bg-opacity,1))!important}.text-bg-light{color:#000!important;background-color:RGBA(248,249,250,var(--bs-bg-opacity,1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(33,37,41,var(--bs-bg-opacity,1))!important}.link-primary{color:#0d6efd!important}.link-primary:focus,.link-primary:hover{color:#0a58ca!important}.link-secondary{color:#6c757d!important}.link-secondary:focus,.link-secondary:hover{color:#565e64!important}.link-success{color:#198754!important}.link-success:focus,.link-success:hover{color:#146c43!important}.link-info{color:#0dcaf0!important}.link-info:focus,.link-info:hover{color:#3dd5f3!important}.link-warning{color:#ffc107!important}.link-warning:focus,.link-warning:hover{color:#ffcd39!important}.link-danger{color:#dc3545!important}.link-danger:focus,.link-danger:hover{color:#b02a37!important}.link-light{color:#f8f9fa!important}.link-light:focus,.link-light:hover{color:#f9fafb!important}.link-dark{color:#212529!important}.link-dark:focus,.link-dark:hover{color:#1a1e21!important}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;right:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{position:fixed;top:0;left:0;right:0;z-index:1030}.fixed-bottom{position:fixed;left:0;bottom:0;right:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:10Line truncated
|
||||
/*# sourceMappingURL=bootstrap-utilities.rtl.min.css.map */
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","../../scss/vendor/_rfs.scss","../../scss/mixins/_clearfix.scss","../../scss/helpers/_color-bg.scss","../../scss/helpers/_colored-links.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/mixins/_breakpoints.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_visually-hidden.scss","dist/css/bootstrap-utilities.rtl.css","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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 truncated
|
||||
Vendored
+10878
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["bootstrap.css","../../scss/mixins/_banner.scss","../../scss/_root.scss","../../scss/vendor/_rfs.scss","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_border-radius.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/_tables.scss","../../scss/mixins/_table-variants.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_form-select.scss","../../scss/forms/_form-check.scss","../../scss/forms/_form-range.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/_button-group.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_accordion.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_toasts.scss","../../scss/_modal.scss","../../scss/mixins/_backdrop.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_clearfix.scss","../../scss/_spinners.scss","../../scss/_offcanvas.scss","../../scss/_placeholders.scss","../../scss/helpers/_color-bg.scss","../../scss/helpers/_colored-links.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"AAAA,gBAAgB;ACCd;;;;;EAAA;ACDF;EAQI,kBAAA;EAAA,oBAAA;EAAA,oBAAA;EAAA,kBAAA;EAAA,iBAAA;EAAA,oBAAA;EAAA,oBAAA;EAAA,mBAAA;EAAA,kBAAA;EAAA,kBAAA;EAAA,gBAAA;EAAA,gBAAA;EAAA,kBAAA;EAAA,uBAAA;EAIA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAIA,qBAAA;EAAA,uBAAA;EAAA,qBAAA;EAAA,kBAAA;EAAA,qBAAA;EAAA,oBAAA;EAAA,mBAAA;EAAA,kBAAA;EAIA,8BAAA;EAAA,iCAAA;EAAA,6BAAA;EAAA,2BAAA;EAAA,6BAAA;EAAA,4BAAA;EAAA,6BAAA;EAAA,yBAAA;EAGF,6BAAA;EACA,uBAAA;EACA,+BAAA;EACA,+BAAA;EAMA,qNAAA;EACA,yGAAA;EACA,yFAAA;EAOA,gDAAA;EC4PI,yBALI;EDrPR,0BAAA;EACA,0BAAA;EACA,wBAAA;EAIA,kBAAA;EAIA,sBAAA;EACA,wBAAA;EACA,0BAAA;EACA,mDAAA;EAEA,4BAAA;EACA,8BAAA;EACA,6BAAA;EACA,2BAAA;EACA,4BAAA;EACA,8BAAA;EAGA,wBAAA;EACA,8BAAA;EAEA,wBAAA;EAEA,0BAAA;AFGF;;AI3DA;;;EAGE,sBAAA;AJ8DF;;AI/CI;EANJ;IAOM,uBAAA;EJmDJ;AACF;;AItCA;EACE,SAAA;EACA,uCAAA;EDmPI,mCALI;EC5OR,uCAAA;EACA,uCAAA;EACA,2BAAA;EACA,qCAAA;EACA,mCAAA;EACA,8BAAA;EACA,6CAAA;AJyCF;;AIhCA;EACE,cAAA;EACA,cCijB4B;EDhjB5B,SAAA;EACA,qBAAA;EACA,aCujB4B;ALphB9B;;AIzBA;EACE,aAAA;EACA,qBCwf4B;EDrf5B,gBCwf4B;EDvf5B,gBCwf4B;AL9d9B;;AItBA;ED6MQ,iCAAA;AHnLR;AGiBI;EC3CJ;IDoNQ,iBAAA;EHtLN;AACF;;AI1BA;EDwMQ,iCAAA;AH1KR;AGQI;ECtCJ;ID+MQ,eAAA;EH7KN;AACF;;AI9BA;EDmMQ,+BAAA;AHjKR;AGDI;ECjCJ;ID0MQ,kBAAA;EHpKN;AACF;;AIlCA;ED8LQ,iCAAA;AHxJR;AGVI;EC5BJ;IDqMQ,iBAAA;EH3JN;AACF;;AItCA;EDqLM,kBALI;AHtIV;;AIrCA;EDgLM,eALI;AHlIV;;AI9BA;EACE,aAAA;EACA,mBCmS0B;ALlQ5B;;AIvBA;EACE,yCAAA;EAAA,iCAAA;EACA,YAAA;EACA,sCAAA;EAAA,8BAAA;AJ0BF;;AIpBA;EACE,mBAAA;EACA,kBAAA;EACA,oBAAA;AJuBF;;AIjBA;;EAEE,kBAAA;AJoBF;;AIjBA;;;EAGE,aAAA;EACA,mBAAA;AJoBF;;AIjBA;;;;EAIE,gBAAA;AJoBF;;AIjBA;EACE,gBC6X4B;ALzW9B;;AIfA;EACE,qBAAA;EACA,cAAA;AJkBF;;AIZA;EACE,gBAAA;AJeF;;AIPA;;EAEE,mBCsW4B;AL5V9B;;AIFA;EDmFM,kBALI;AHxEV;;AICA;EACE,iBC+a4B;ED9a5B,wCAAA;AJEF;;AIOA;;EAEE,kBAAA;ED+DI,iBALI;ECxDR,cAAA;EACA,wBAAA;AJJF;;AIOA;EAAM,eAAA;AJHN;;AIIA;EAAM,WAAA;AJAN;;AIKA;EACE,2BAAA;EACA,0BCqKwC;ALvK1C;AIIE;EACE,iCAAA;AJFJ;;AIaE;EAEE,cAAA;EACA,qBAAA;AJXJ;;AIkBA;;;;EAIE,qCCkR4B;EF7PxB,cALI;AH9BV;;AIsBA;EACE,cAAA;EACA,aAAA;EACA,mBAAA;EACA,cAAA;EDSI,kBALI;AHtBV;AIuBE;EDII,kBALI;ECGN,cAAA;EACA,kBAAA;AJrBJ;;AIyBA;EDHM,kBALI;ECUR,2BAAA;EACA,qBAAA;AJtBF;AIyBE;EACE,cAAA;AJvBJ;;AI2BA;EACE,2BAAA;EDfI,kBALI;ECsBR,wBCuyCkC;EDtyClC,sCCuyCkC;EC3kDhC,sBAAA;AN6QJ;AI0BE;EACE,UAAA;EDtBE,cALI;AHIV;;AIkCA;EACE,gBAAA;AJ/BF;;AIqCA;;EAEE,sBAAA;AJlCF;;AI0CA;EACE,oBAAA;EACA,yBAAA;AJvCF;;AI0CA;EACE,mBCsT4B;EDrT5B,sBCqT4B;EDpT5B,cCjVS;EDkVT,gBAAA;AJvCF;;AI8CA;EAEE,mBAAA;EACA,gCAAA;AJ5CF;;AI+CA;;;;;;EAME,qBAAA;EACA,mBAAA;EACA,eAAA;AJ5CF;;AIoDA;EACE,qBAAA;AJjDF;;AIuDA;EAEE,gBAAA;AJrDF;;AI6DA;EACE,UAAA;AJ1DF;;AI+Line truncated
|
||||
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
@charset "UTF-8";/*!
|
||||
* Bootstrap v5.2.3 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2022 The Bootstrap Authors
|
||||
* Copyright 2011-2022 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:33,37,41;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-link-color:#0d6efd;--bs-link-hover-color:#0a58ca;--bs-code-color:#d63384;--bs-highlight-bg:#fff3cd}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:var(--bs-link-color);text-decoration:underline}a:hover{color:var(--bs-link-hover-color)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):noLine truncated
|
||||
/*# sourceMappingURL=bootstrap.min.css.map */
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","../../scss/vendor/_rfs.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","../../scss/mixins/_border-radius.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/_tables.scss","../../scss/mixins/_table-variants.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_form-select.scss","../../scss/forms/_form-check.scss","../../scss/forms/_form-range.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/_button-group.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_accordion.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_toasts.scss","../../scss/_modal.scss","../../scss/mixins/_backdrop.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_clearfix.scss","../../scss/_spinners.scss","../../scss/_offcanvas.scss","../../scss/_placeholders.scss","../../scss/helpers/_color-bg.scss","../../scss/helpers/_colored-links.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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 truncated
|
||||
Vendored
+10842
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["bootstrap.css","../../scss/mixins/_banner.scss","../../scss/_root.scss","../../scss/vendor/_rfs.scss","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_border-radius.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/_tables.scss","../../scss/mixins/_table-variants.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_form-select.scss","../../scss/forms/_form-check.scss","../../scss/forms/_form-range.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/_button-group.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_accordion.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_toasts.scss","../../scss/_modal.scss","../../scss/mixins/_backdrop.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_clearfix.scss","../../scss/_spinners.scss","../../scss/_offcanvas.scss","../../scss/_placeholders.scss","../../scss/helpers/_color-bg.scss","../../scss/helpers/_colored-links.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"AAAA,gBAAgB;ACCd;;;;;EAAA;ACDF;EAQI,kBAAA;EAAA,oBAAA;EAAA,oBAAA;EAAA,kBAAA;EAAA,iBAAA;EAAA,oBAAA;EAAA,oBAAA;EAAA,mBAAA;EAAA,kBAAA;EAAA,kBAAA;EAAA,gBAAA;EAAA,gBAAA;EAAA,kBAAA;EAAA,uBAAA;EAIA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAIA,qBAAA;EAAA,uBAAA;EAAA,qBAAA;EAAA,kBAAA;EAAA,qBAAA;EAAA,oBAAA;EAAA,mBAAA;EAAA,kBAAA;EAIA,8BAAA;EAAA,iCAAA;EAAA,6BAAA;EAAA,2BAAA;EAAA,6BAAA;EAAA,4BAAA;EAAA,6BAAA;EAAA,yBAAA;EAGF,6BAAA;EACA,uBAAA;EACA,+BAAA;EACA,+BAAA;EAMA,qNAAA;EACA,yGAAA;EACA,yFAAA;EAOA,gDAAA;EC4PI,yBALI;EDrPR,0BAAA;EACA,0BAAA;EACA,wBAAA;EAIA,kBAAA;EAIA,sBAAA;EACA,wBAAA;EACA,0BAAA;EACA,mDAAA;EAEA,4BAAA;EACA,8BAAA;EACA,6BAAA;EACA,2BAAA;EACA,4BAAA;EACA,8BAAA;EAGA,wBAAA;EACA,8BAAA;EAEA,wBAAA;EAEA,0BAAA;AFGF;;AI3DA;;;EAGE,sBAAA;AJ8DF;;AI/CI;EANJ;IAOM,uBAAA;EJmDJ;AACF;;AItCA;EACE,SAAA;EACA,uCAAA;EDmPI,mCALI;EC5OR,uCAAA;EACA,uCAAA;EACA,2BAAA;EACA,qCAAA;EACA,mCAAA;EACA,8BAAA;EACA,6CAAA;AJyCF;;AIhCA;EACE,cAAA;EACA,cCijB4B;EDhjB5B,SAAA;EACA,qBAAA;EACA,aCujB4B;ALphB9B;;AIzBA;EACE,aAAA;EACA,qBCwf4B;EDrf5B,gBCwf4B;EDvf5B,gBCwf4B;AL9d9B;;AItBA;ED6MQ,iCAAA;AHnLR;AGiBI;EC3CJ;IDoNQ,iBAAA;EHtLN;AACF;;AI1BA;EDwMQ,iCAAA;AH1KR;AGQI;ECtCJ;ID+MQ,eAAA;EH7KN;AACF;;AI9BA;EDmMQ,+BAAA;AHjKR;AGDI;ECjCJ;ID0MQ,kBAAA;EHpKN;AACF;;AIlCA;ED8LQ,iCAAA;AHxJR;AGVI;EC5BJ;IDqMQ,iBAAA;EH3JN;AACF;;AItCA;EDqLM,kBALI;AHtIV;;AIrCA;EDgLM,eALI;AHlIV;;AI9BA;EACE,aAAA;EACA,mBCmS0B;ALlQ5B;;AIvBA;EACE,yCAAA;EAAA,iCAAA;EACA,YAAA;EACA,sCAAA;EAAA,8BAAA;AJ0BF;;AIpBA;EACE,mBAAA;EACA,kBAAA;EACA,oBAAA;AJuBF;;AIjBA;;EAEE,mBAAA;AJoBF;;AIjBA;;;EAGE,aAAA;EACA,mBAAA;AJoBF;;AIjBA;;;;EAIE,gBAAA;AJoBF;;AIjBA;EACE,gBC6X4B;ALzW9B;;AIfA;EACE,qBAAA;EACA,eAAA;AJkBF;;AIZA;EACE,gBAAA;AJeF;;AIPA;;EAEE,mBCsW4B;AL5V9B;;AIFA;EDmFM,kBALI;AHxEV;;AICA;EACE,iBC+a4B;ED9a5B,wCAAA;AJEF;;AIOA;;EAEE,kBAAA;ED+DI,iBALI;ECxDR,cAAA;EACA,wBAAA;AJJF;;AIOA;EAAM,eAAA;AJHN;;AIIA;EAAM,WAAA;AJAN;;AIKA;EACE,2BAAA;EACA,0BCqKwC;ALvK1C;AIIE;EACE,iCAAA;AJFJ;;AIaE;EAEE,cAAA;EACA,qBAAA;AJXJ;;AIkBA;;;;EAIE,qCCkR4B;EF7PxB,cALI;AH9BV;;AIsBA;EACE,cAAA;EACA,aAAA;EACA,mBAAA;EACA,cAAA;EDSI,kBALI;AHtBV;AIuBE;EDII,kBALI;ECGN,cAAA;EACA,kBAAA;AJrBJ;;AIyBA;EDHM,kBALI;ECUR,2BAAA;EACA,qBAAA;AJtBF;AIyBE;EACE,cAAA;AJvBJ;;AI2BA;EACE,2BAAA;EDfI,kBALI;ECsBR,wBCuyCkC;EDtyClC,sCCuyCkC;EC3kDhC,sBAAA;AN6QJ;AI0BE;EACE,UAAA;EDtBE,cALI;AHIV;;AIkCA;EACE,gBAAA;AJ/BF;;AIqCA;;EAEE,sBAAA;AJlCF;;AI0CA;EACE,oBAAA;EACA,yBAAA;AJvCF;;AI0CA;EACE,mBCsT4B;EDrT5B,sBCqT4B;EDpT5B,cCjVS;EDkVT,iBAAA;AJvCF;;AI8CA;EAEE,mBAAA;EACA,gCAAA;AJ5CF;;AI+CA;;;;;;EAME,qBAAA;EACA,mBAAA;EACA,eAAA;AJ5CF;;AIoDA;EACE,qBAAA;AJjDF;;AIuDA;EAEE,gBAAA;AJrDF;;AI6DA;EACE,UAAA;AJ1DF;;AI+Line truncated
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
@charset "UTF-8";/*!
|
||||
* Bootstrap v5.2.3 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2022 The Bootstrap Authors
|
||||
* Copyright 2011-2022 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:33,37,41;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-link-color:#0d6efd;--bs-link-hover-color:#0a58ca;--bs-code-color:#d63384;--bs-highlight-bg:#fff3cd}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-right:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-right:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:var(--bs-link-color);text-decoration:underline}a:hover{color:var(--bs-link-hover-color)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:right}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week])Line truncated
|
||||
/*# sourceMappingURL=bootstrap.rtl.min.css.map */
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","../../scss/vendor/_rfs.scss","../../scss/_reboot.scss","dist/css/bootstrap.rtl.css","../../scss/mixins/_border-radius.scss","bootstrap.css","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/_tables.scss","../../scss/mixins/_table-variants.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_form-select.scss","../../scss/forms/_form-check.scss","../../scss/forms/_form-range.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/_button-group.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_accordion.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_toasts.scss","../../scss/_modal.scss","../../scss/mixins/_backdrop.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_clearfix.scss","../../scss/_spinners.scss","../../scss/_offcanvas.scss","../../scss/_placeholders.scss","../../scss/helpers/_color-bg.scss","../../scss/helpers/_colored-links.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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 truncated
|
||||
@@ -0,0 +1,18 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.Mvc;
|
||||
|
||||
namespace OnDocWeb.Controllers
|
||||
{
|
||||
public class HomeController : Controller
|
||||
{
|
||||
public ActionResult Index()
|
||||
{
|
||||
ViewBag.Title = "Home Page";
|
||||
|
||||
return View();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Web.Http;
|
||||
|
||||
namespace OnDocWeb.Controllers
|
||||
{
|
||||
public class ValuesController : ApiController
|
||||
{
|
||||
// GET api/values
|
||||
public IEnumerable<string> Get()
|
||||
{
|
||||
return new string[] { "value1", "value2" };
|
||||
}
|
||||
|
||||
// GET api/values/5
|
||||
public string Get(int id)
|
||||
{
|
||||
return "value";
|
||||
}
|
||||
|
||||
// POST api/values
|
||||
public void Post([FromBody] string value)
|
||||
{
|
||||
}
|
||||
|
||||
// PUT api/values/5
|
||||
public void Put(int id, [FromBody] string value)
|
||||
{
|
||||
}
|
||||
|
||||
// DELETE api/values/5
|
||||
public void Delete(int id)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<%@ Application Codebehind="Global.asax.cs" Inherits="OnDocWeb.WebApiApplication" Language="C#" %>
|
||||
@@ -0,0 +1,23 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.Http;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Optimization;
|
||||
using System.Web.Routing;
|
||||
|
||||
namespace OnDocWeb
|
||||
{
|
||||
public class WebApiApplication : System.Web.HttpApplication
|
||||
{
|
||||
protected void Application_Start()
|
||||
{
|
||||
AreaRegistration.RegisterAllAreas();
|
||||
GlobalConfiguration.Configure(WebApiConfig.Register);
|
||||
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
|
||||
RouteConfig.RegisterRoutes(RouteTable.Routes);
|
||||
BundleConfig.RegisterBundles(BundleTable.Bundles);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,346 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>
|
||||
</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{EA7C978E-5E01-4377-912D-58F0DD9EDB4D}</ProjectGuid>
|
||||
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>OnDocWeb</RootNamespace>
|
||||
<AssemblyName>OnDocWeb</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.8.1</TargetFrameworkVersion>
|
||||
<MvcBuildViews>false</MvcBuildViews>
|
||||
<UseIISExpress>true</UseIISExpress>
|
||||
<Use64BitIISExpress />
|
||||
<IISExpressSSLPort>44310</IISExpressSSLPort>
|
||||
<IISExpressAnonymousAuthentication />
|
||||
<IISExpressWindowsAuthentication />
|
||||
<IISExpressUseClassicPipelineMode />
|
||||
<UseGlobalApplicationHostFile />
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Web.Entity" />
|
||||
<Reference Include="System.Web.ApplicationServices" />
|
||||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Web.Abstractions" />
|
||||
<Reference Include="System.Web.Routing" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="Microsoft.Web.Infrastructure, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<Private>True</Private>
|
||||
<HintPath>..\packages\Microsoft.Web.Infrastructure.2.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json">
|
||||
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Net.Http">
|
||||
</Reference>
|
||||
<Reference Include="System.Net.Http.Formatting, Version=5.2.9.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.AspNet.WebApi.Client.5.2.9\lib\net45\System.Net.Http.Formatting.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Net.Http.WebRequest">
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<Private>True</Private>
|
||||
<HintPath>..\packages\Microsoft.AspNet.WebPages.3.2.9\lib\net45\System.Web.Helpers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Http, Version=5.2.9.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.2.9\lib\net45\System.Web.Http.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Http.WebHost, Version=5.2.9.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.AspNet.WebApi.WebHost.5.2.9\lib\net45\System.Web.Http.WebHost.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Mvc, Version=5.2.9.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<Private>True</Private>
|
||||
<HintPath>..\packages\Microsoft.AspNet.Mvc.5.2.9\lib\net45\System.Web.Mvc.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Optimization">
|
||||
<HintPath>..\packages\Microsoft.AspNet.Web.Optimization.1.1.3\lib\net40\System.Web.Optimization.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<Private>True</Private>
|
||||
<HintPath>..\packages\Microsoft.AspNet.Razor.3.2.9\lib\net45\System.Web.Razor.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<Private>True</Private>
|
||||
<HintPath>..\packages\Microsoft.AspNet.WebPages.3.2.9\lib\net45\System.Web.WebPages.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.WebPages.Deployment, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<Private>True</Private>
|
||||
<HintPath>..\packages\Microsoft.AspNet.WebPages.3.2.9\lib\net45\System.Web.WebPages.Deployment.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<Private>True</Private>
|
||||
<HintPath>..\packages\Microsoft.AspNet.WebPages.3.2.9\lib\net45\System.Web.WebPages.Razor.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="WebGrease">
|
||||
<Private>True</Private>
|
||||
<HintPath>..\packages\WebGrease.1.6.0\lib\WebGrease.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Antlr3.Runtime">
|
||||
<Private>True</Private>
|
||||
<HintPath>..\packages\Antlr.3.5.0.2\lib\Antlr3.Runtime.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform">
|
||||
<HintPath>..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="App_Start\BundleConfig.cs" />
|
||||
<Compile Include="App_Start\FilterConfig.cs" />
|
||||
<Compile Include="App_Start\RouteConfig.cs" />
|
||||
<Compile Include="App_Start\WebApiConfig.cs" />
|
||||
<Compile Include="Areas\HelpPage\ApiDescriptionExtensions.cs" />
|
||||
<Compile Include="Areas\HelpPage\App_Start\HelpPageConfig.cs" />
|
||||
<Compile Include="Areas\HelpPage\Controllers\HelpController.cs" />
|
||||
<Compile Include="Areas\HelpPage\HelpPageAreaRegistration.cs" />
|
||||
<Compile Include="Areas\HelpPage\HelpPageConfigurationExtensions.cs" />
|
||||
<Compile Include="Areas\HelpPage\ModelDescriptions\CollectionModelDescription.cs" />
|
||||
<Compile Include="Areas\HelpPage\ModelDescriptions\ComplexTypeModelDescription.cs" />
|
||||
<Compile Include="Areas\HelpPage\ModelDescriptions\DictionaryModelDescription.cs" />
|
||||
<Compile Include="Areas\HelpPage\ModelDescriptions\EnumTypeModelDescription.cs" />
|
||||
<Compile Include="Areas\HelpPage\ModelDescriptions\EnumValueDescription.cs" />
|
||||
<Compile Include="Areas\HelpPage\ModelDescriptions\IModelDocumentationProvider.cs" />
|
||||
<Compile Include="Areas\HelpPage\ModelDescriptions\KeyValuePairModelDescription.cs" />
|
||||
<Compile Include="Areas\HelpPage\ModelDescriptions\ModelDescription.cs" />
|
||||
<Compile Include="Areas\HelpPage\ModelDescriptions\ModelDescriptionGenerator.cs" />
|
||||
<Compile Include="Areas\HelpPage\ModelDescriptions\ModelNameAttribute.cs" />
|
||||
<Compile Include="Areas\HelpPage\ModelDescriptions\ModelNameHelper.cs" />
|
||||
<Compile Include="Areas\HelpPage\ModelDescriptions\ParameterAnnotation.cs" />
|
||||
<Compile Include="Areas\HelpPage\ModelDescriptions\ParameterDescription.cs" />
|
||||
<Compile Include="Areas\HelpPage\ModelDescriptions\SimpleTypeModelDescription.cs" />
|
||||
<Compile Include="Areas\HelpPage\Models\HelpPageApiModel.cs" />
|
||||
<Compile Include="Areas\HelpPage\SampleGeneration\HelpPageSampleGenerator.cs" />
|
||||
<Compile Include="Areas\HelpPage\SampleGeneration\HelpPageSampleKey.cs" />
|
||||
<Compile Include="Areas\HelpPage\SampleGeneration\ImageSample.cs" />
|
||||
<Compile Include="Areas\HelpPage\SampleGeneration\InvalidSample.cs" />
|
||||
<Compile Include="Areas\HelpPage\SampleGeneration\ObjectGenerator.cs" />
|
||||
<Compile Include="Areas\HelpPage\SampleGeneration\SampleDirection.cs" />
|
||||
<Compile Include="Areas\HelpPage\SampleGeneration\TextSample.cs" />
|
||||
<Compile Include="Areas\HelpPage\XmlDocumentationProvider.cs" />
|
||||
<Compile Include="Controllers\HomeController.cs" />
|
||||
<Compile Include="Controllers\ValuesController.cs" />
|
||||
<Compile Include="Global.asax.cs">
|
||||
<DependentUpon>Global.asax</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Areas\HelpPage\HelpPage.css" />
|
||||
<Content Include="Content\bootstrap-grid.css" />
|
||||
<Content Include="Content\bootstrap-grid.min.css" />
|
||||
<Content Include="Content\bootstrap-grid.rtl.css" />
|
||||
<Content Include="Content\bootstrap-grid.rtl.min.css" />
|
||||
<Content Include="Content\bootstrap-reboot.css" />
|
||||
<Content Include="Content\bootstrap-reboot.min.css" />
|
||||
<Content Include="Content\bootstrap-reboot.rtl.css" />
|
||||
<Content Include="Content\bootstrap-reboot.rtl.min.css" />
|
||||
<Content Include="Content\bootstrap-utilities.css" />
|
||||
<Content Include="Content\bootstrap-utilities.min.css" />
|
||||
<Content Include="Content\bootstrap-utilities.rtl.css" />
|
||||
<Content Include="Content\bootstrap-utilities.rtl.min.css" />
|
||||
<Content Include="Content\bootstrap.css" />
|
||||
<Content Include="Content\bootstrap.min.css" />
|
||||
<Content Include="Content\bootstrap.rtl.css" />
|
||||
<Content Include="Content\bootstrap.rtl.min.css" />
|
||||
<Content Include="favicon.ico" />
|
||||
<Content Include="Global.asax" />
|
||||
<Content Include="Scripts\bootstrap.bundle.js" />
|
||||
<Content Include="Scripts\bootstrap.bundle.min.js" />
|
||||
<Content Include="Scripts\bootstrap.esm.js" />
|
||||
<Content Include="Scripts\bootstrap.esm.min.js" />
|
||||
<Content Include="Scripts\bootstrap.js" />
|
||||
<Content Include="Scripts\bootstrap.min.js" />
|
||||
<Content Include="Areas\HelpPage\Views\Web.config" />
|
||||
<Content Include="Areas\HelpPage\Views\Shared\_Layout.cshtml" />
|
||||
<Content Include="Areas\HelpPage\Views\Help\ResourceModel.cshtml" />
|
||||
<Content Include="Areas\HelpPage\Views\Help\Index.cshtml" />
|
||||
<Content Include="Areas\HelpPage\Views\Help\DisplayTemplates\TextSample.cshtml" />
|
||||
<Content Include="Areas\HelpPage\Views\Help\DisplayTemplates\SimpleTypeModelDescription.cshtml" />
|
||||
<Content Include="Areas\HelpPage\Views\Help\DisplayTemplates\Samples.cshtml" />
|
||||
<Content Include="Areas\HelpPage\Views\Help\DisplayTemplates\Parameters.cshtml" />
|
||||
<Content Include="Areas\HelpPage\Views\Help\DisplayTemplates\ModelDescriptionLink.cshtml" />
|
||||
<Content Include="Areas\HelpPage\Views\Help\DisplayTemplates\KeyValuePairModelDescription.cshtml" />
|
||||
<Content Include="Areas\HelpPage\Views\Help\DisplayTemplates\InvalidSample.cshtml" />
|
||||
<Content Include="Areas\HelpPage\Views\Help\DisplayTemplates\ImageSample.cshtml" />
|
||||
<Content Include="Areas\HelpPage\Views\Help\DisplayTemplates\HelpPageApiModel.cshtml" />
|
||||
<Content Include="Areas\HelpPage\Views\Help\DisplayTemplates\EnumTypeModelDescription.cshtml" />
|
||||
<Content Include="Areas\HelpPage\Views\Help\DisplayTemplates\DictionaryModelDescription.cshtml" />
|
||||
<Content Include="Areas\HelpPage\Views\Help\DisplayTemplates\ComplexTypeModelDescription.cshtml" />
|
||||
<Content Include="Areas\HelpPage\Views\Help\DisplayTemplates\CollectionModelDescription.cshtml" />
|
||||
<Content Include="Areas\HelpPage\Views\Help\DisplayTemplates\ApiGroup.cshtml" />
|
||||
<Content Include="Areas\HelpPage\Views\Help\Api.cshtml" />
|
||||
<None Include="Scripts\jquery-3.7.0.intellisense.js" />
|
||||
<Content Include="Scripts\jquery-3.7.0.js" />
|
||||
<Content Include="Scripts\jquery-3.7.0.min.js" />
|
||||
<Content Include="Scripts\jquery-3.7.0.slim.js" />
|
||||
<Content Include="Scripts\jquery-3.7.0.slim.min.js" />
|
||||
<Content Include="Scripts\modernizr-2.8.3.js" />
|
||||
<Content Include="Web.config" />
|
||||
<Content Include="Web.Debug.config">
|
||||
<DependentUpon>Web.config</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Web.Release.config">
|
||||
<DependentUpon>Web.config</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Areas\HelpPage\Views\_ViewStart.cshtml" />
|
||||
<Content Include="Content\Site.css" />
|
||||
<Content Include="Views\Web.config" />
|
||||
<Content Include="Views\_ViewStart.cshtml" />
|
||||
<Content Include="Views\Home\Index.cshtml" />
|
||||
<Content Include="Views\Shared\Error.cshtml" />
|
||||
<Content Include="Views\Shared\_Layout.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="App_Data\" />
|
||||
<Folder Include="Models\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Scripts\bootstrap.min.js.map" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Scripts\bootstrap.js.map" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Scripts\bootstrap.esm.min.js.map" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Scripts\bootstrap.esm.js.map" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Scripts\bootstrap.bundle.min.js.map" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Scripts\bootstrap.bundle.js.map" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Content\bootstrap.rtl.min.css.map" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Content\bootstrap.rtl.css.map" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Content\bootstrap.min.css.map" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Content\bootstrap.css.map" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Content\bootstrap-utilities.rtl.min.css.map" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Content\bootstrap-utilities.rtl.css.map" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Content\bootstrap-utilities.min.css.map" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Content\bootstrap-utilities.css.map" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Content\bootstrap-reboot.rtl.min.css.map" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Content\bootstrap-reboot.rtl.css.map" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Content\bootstrap-reboot.min.css.map" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Content\bootstrap-reboot.css.map" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Content\bootstrap-grid.rtl.min.css.map" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Content\bootstrap-grid.rtl.css.map" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Content\bootstrap-grid.min.css.map" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Content\bootstrap-grid.css.map" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="packages.config" />
|
||||
<Content Include="Scripts\jquery-3.7.0.slim.min.map" />
|
||||
<Content Include="Scripts\jquery-3.7.0.min.map" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup>
|
||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
|
||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
|
||||
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
|
||||
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
|
||||
</Target>
|
||||
<ProjectExtensions>
|
||||
<VisualStudio>
|
||||
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
|
||||
<WebProjectProperties>
|
||||
<UseIIS>True</UseIIS>
|
||||
<AutoAssignPort>True</AutoAssignPort>
|
||||
<DevelopmentServerPort>60299</DevelopmentServerPort>
|
||||
<DevelopmentServerVPath>/</DevelopmentServerVPath>
|
||||
<IISUrl>https://localhost:44310/</IISUrl>
|
||||
<NTLMAuthentication>False</NTLMAuthentication>
|
||||
<UseCustomServer>False</UseCustomServer>
|
||||
<CustomServerUrl>
|
||||
</CustomServerUrl>
|
||||
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
|
||||
</WebProjectProperties>
|
||||
</FlavorProperties>
|
||||
</VisualStudio>
|
||||
</ProjectExtensions>
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}".</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
|
||||
</Target>
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target> -->
|
||||
</Project>
|
||||
@@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<UseIISExpress>true</UseIISExpress>
|
||||
<Use64BitIISExpress />
|
||||
<IISExpressSSLPort>44310</IISExpressSSLPort>
|
||||
<IISExpressAnonymousAuthentication />
|
||||
<IISExpressWindowsAuthentication />
|
||||
<IISExpressUseClassicPipelineMode />
|
||||
<UseGlobalApplicationHostFile />
|
||||
<LastActiveSolutionConfig>Debug|Any CPU</LastActiveSolutionConfig>
|
||||
</PropertyGroup>
|
||||
<ProjectExtensions>
|
||||
<VisualStudio>
|
||||
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
|
||||
<WebProjectProperties>
|
||||
<StartPageUrl>
|
||||
</StartPageUrl>
|
||||
<StartAction>CurrentPage</StartAction>
|
||||
<AspNetDebugging>True</AspNetDebugging>
|
||||
<SilverlightDebugging>False</SilverlightDebugging>
|
||||
<NativeDebugging>False</NativeDebugging>
|
||||
<SQLDebugging>False</SQLDebugging>
|
||||
<ExternalProgram>
|
||||
</ExternalProgram>
|
||||
<StartExternalURL>
|
||||
</StartExternalURL>
|
||||
<StartCmdLineArguments>
|
||||
</StartCmdLineArguments>
|
||||
<StartWorkingDirectory>
|
||||
</StartWorkingDirectory>
|
||||
<EnableENC>True</EnableENC>
|
||||
<AlwaysStartWebServerOnDebug>False</AlwaysStartWebServerOnDebug>
|
||||
</WebProjectProperties>
|
||||
</FlavorProperties>
|
||||
</VisualStudio>
|
||||
</ProjectExtensions>
|
||||
</Project>
|
||||
@@ -0,0 +1,35 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// Allgemeine Informationen zu einer Assembly werden durch Folgendes gesteuert:
|
||||
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die
|
||||
// Assemblyinformationen zu ändern.
|
||||
[assembly: AssemblyTitle("OnDocWeb")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("HP Inc.")]
|
||||
[assembly: AssemblyProduct("OnDocWeb")]
|
||||
[assembly: AssemblyCopyright("Copyright © HP Inc. 2024")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Durch Festlegen von "ComVisible" auf "false" werden die Typen in dieser Assembly unsichtbar
|
||||
// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly aus
|
||||
// COM aus zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// Die folgende GUID bestimmt die ID der typelib, wenn dieses Projekt für COM verfügbar gemacht wird.
|
||||
[assembly: Guid("f4f6b4cd-86b4-4fcd-ab62-92bd7c41f03d")]
|
||||
|
||||
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
|
||||
//
|
||||
// Hauptversion
|
||||
// Nebenversion
|
||||
// Buildnummer
|
||||
// Revision
|
||||
//
|
||||
// Sie können alle Werte angeben oder die standardmäßigen Revisions- und Buildnummern
|
||||
// übernehmen, indem Sie "*" wie folgt verwenden:
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
Vendored
+7075
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"bootstrap.bundle.js","sources":["../../js/src/util/index.js","../../js/src/dom/event-handler.js","../../js/src/dom/data.js","../../js/src/dom/manipulator.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/selector-engine.js","../../js/src/util/swipe.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/@popperjs/core/lib/enums.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../node_modules/@popperjs/core/lib/utils/math.js","../../node_modules/@popperjs/core/lib/utils/userAgent.js","../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../node_modules/@popperjs/core/lib/utils/within.js","../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../node_modules/@popperjs/core/lib/utils/debounce.js","../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../node_modules/@popperjs/core/lib/createPopper.js","../../node_modules/@popperjs/core/lib/popper-lite.js","../../node_modules/@popperjs/core/lib/popper.js","../../js/src/dropdown.js","../../js/src/util/scrollbar.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/modal.js","../../js/src/offcanvas.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/index.umd.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${oLine truncated
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
/*!
|
||||
* Bootstrap v5.2.3 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t="transitionend",e=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return e},i=t=>{const i=e(t);return i&&document.querySelector(i)?i:null},n=t=>{const i=e(t);return i?document.querySelector(i):null},s=e=>{e.dispatchEvent(new Event(t))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(t):null,a=t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),c=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,f=[],p=()=>"rtl"===document.documentElement.dir,g=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of f)t()})),f.push(e)):e()},m=t=>{"function"==typeof t&&t()},_=(e,i,n=!0)=>{if(!n)return void m(e);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(i)+5;let r=!1;const a=({target:n})=>{n===i&&(r=!0,i.removeEventListener(t,a),m(e))};i.addEventListener(t,a),setTimeout((()=>{r||s(i)}),o)},b=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,A={};let E=1;const T={mouseenter:"mouseover",mouseleave:"mouseout"},C=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 O(t,e){return e&&`${e}::${E++}`||t.uidEvent||E++}function x(t){const e=O(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function k(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function L(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=N(t);return C.has(o)||(o=t),[n,s,o]}function D(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=L(e,i,n);if(e in T){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=x(t),c=l[a]||(l[a]={}),h=k(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=O(r,e.replace(v,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return j(s,{delegateTarget:r}),n.oneOff&&P.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return j(n,{delegateTarget:t}),i.oneOff&&P.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function S(t,e,i,n,s){const o=k(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function I(t,e,i,n){const s=e[i]||{};for(const o of Object.keys(s))if(o.includes(n)){const n=s[o];S(t,e,i,n.callable,n.delegationSelector)}}function N(t){return t=t.replace(y,""),T[t]||t}const P={on(t,e,i,n){D(t,e,i,n,!1)},one(t,e,i,n){D(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=L(e,i,n),a=r!==e,l=x(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))I(t,l,i,e.slice(1));for(const i of Object.keys(c)){const n=i.replace(w,"");if(!a||e.includes(n)){const
Line truncated
|
||||
//# sourceMappingURL=bootstrap.bundle.min.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"names":["TRANSITION_END","getSelector","element","selector","getAttribute","hrefAttribute","includes","startsWith","split","trim","getSelectorFromElement","document","querySelector","getElementFromSelector","triggerTransitionEnd","dispatchEvent","Event","isElement","object","jquery","nodeType","getElement","length","isVisible","getClientRects","elementIsVisible","getComputedStyle","getPropertyValue","closedDetails","closest","summary","parentNode","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","getjQuery","window","jQuery","body","DOMContentLoadedCallbacks","isRTL","dir","defineJQueryPlugin","plugin","callback","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","readyState","addEventListener","push","execute","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","getTransitionDurationFromElement","called","handler","target","removeEventListener","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","Math","max","min","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","findHandler","events","callable","delegationSelector","Object","values","find","event","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","has","addHandler","oneOff","wrapFunction","relatedTarget","delegateTarget","call","this","handlers","previousFunction","replace","domElements","querySelectorAll","domElement","hydrateObj","EventHandler","off","type","apply","bootstrapDelegationHandler","bootstrapHandler","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","keys","on","one","inNamespace","isNamespace","elementEvent","slice","keyHandlers","trigger","args","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","evt","cancelable","preventDefault","obj","meta","key","value","entries","_unused","defineProperty","configurable","get","elementMap","Map","Data","set","instance","instanceMap","size","console","error","Array","from","remove","delete","normalizeData","toString","JSON","parse","decodeURIComponent","normalizeDataKey","chr","toLowerCase","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","Config","Default","DefaultType","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","prototype","match","RegExp","test","TypeError","toUpperCase","BaseComponent","super","_element","_config","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","static","getInstance","VERSION","enableDismissTrigger","component","method","clickEvent","tagName","getOrCreateInstance","Alert","close","_destroyElement","each","data","undefined","SELECTOR_DATA_TOGGLE","Button","toggle","button","SelectorEngine","concat","Element","findOne","children","child","matches","parents","ancestor","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","map","join","el","endCallback","leftCallback","rightCallback","Swipe","isSupported","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","abs","direction","add","pointerType","navigator","maxTouchPoints","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLID","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE","KEY_TO_DIRECTION","ArrowLeft","ArrowRight","interval","keyboard","pause","ride","touch","wrap","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","cycle","_slide","nextWhenVisible","hidden","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","to","items","_getItems","activeIndex","_getItemIndex","_getActive","order","defaultInterval","_keydown","_addTouchEventListeners","img","swipeConfig","_directionToOrder","clearTimeout","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","parseInt","isNext","nextElement","nextElementIndex","triggerEvent","eventName","_orderToDirection","isCycling","directionalClassName","orderClassName","_isAnimated","SELECTOR_ACTIVE","clearInterval","carousel","slideIndex","carousels","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLLine truncated
|
||||
Vendored
+5202
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"bootstrap.esm.js","sources":["../../js/src/util/index.js","../../js/src/dom/event-handler.js","../../js/src/dom/data.js","../../js/src/dom/manipulator.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/selector-engine.js","../../js/src/util/swipe.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/util/scrollbar.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/modal.js","../../js/src/offcanvas.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`\n }\n\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n }\n\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false\n }\n\n if (typeof object.jquery !== 'undefined') {\n object = object[0]\n }\n\n return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object\n }\n\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(object)\n }\n\n return null\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])')\n\n if (!closedDetails) {\n return elementIsVisible\n }\n\n if (closedDetails !== element) {\n const summary = element.closest('summary')\n if (summary && summary.parentNode !== closedDetails) {\n return faLine truncated
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
/*!
|
||||
* Bootstrap v5.2.3 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
import*as Popper from"@popperjs/core";const MAX_UID=1e6,MILLISECONDS_MULTIPLIER=1e3,TRANSITION_END="transitionend",toType=e=>null==e?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),getUID=e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e},getSelector=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),t=n&&"#"!==n?n.trim():null}return t},getSelectorFromElement=e=>{const t=getSelector(e);return t&&document.querySelector(t)?t:null},getElementFromSelector=e=>{const t=getSelector(e);return t?document.querySelector(t):null},getTransitionDurationFromElement=e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const i=Number.parseFloat(t),s=Number.parseFloat(n);return i||s?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0},triggerTransitionEnd=e=>{e.dispatchEvent(new Event(TRANSITION_END))},isElement=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),getElement=e=>isElement(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(e):null,isVisible=e=>{if(!isElement(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const t=e.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return t},isDisabled=e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")),findShadowRoot=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?findShadowRoot(e.parentNode):null},noop=()=>{},reflow=e=>{e.offsetHeight},getjQuery=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,DOMContentLoadedCallbacks=[],onDOMContentLoaded=e=>{"loading"===document.readyState?(DOMContentLoadedCallbacks.length||document.addEventListener("DOMContentLoaded",(()=>{for(const e of DOMContentLoadedCallbacks)e()})),DOMContentLoadedCallbacks.push(e)):e()},isRTL=()=>"rtl"===document.documentElement.dir,defineJQueryPlugin=e=>{var t;t=()=>{const t=getjQuery();if(t){const n=e.NAME,i=t.fn[n];t.fn[n]=e.jQueryInterface,t.fn[n].Constructor=e,t.fn[n].noConflict=()=>(t.fn[n]=i,e.jQueryInterface)}},"loading"===document.readyState?(DOMContentLoadedCallbacks.length||document.addEventListener("DOMContentLoaded",(()=>{for(const e of DOMContentLoadedCallbacks)e()})),DOMContentLoadedCallbacks.push(t)):t()},execute=e=>{"function"==typeof e&&e()},executeAfterTransition=(e,t,n=!0)=>{if(!n)return void execute(e);const i=getTransitionDurationFromElement(t)+5;let s=!1;const o=({target:n})=>{n===t&&(s=!0,t.removeEventListener(TRANSITION_END,o),execute(e))};t.addEventListener(TRANSITION_END,o),setTimeout((()=>{s||triggerTransitionEnd(t)}),i)},getNextActiveElement=(e,t,n,i)=>{const s=e.length;let o=e.indexOf(t);return-1===o?!n&&i?e[s-1]:e[0]:(o+=n?1:-1,i&&(o=(o+s)%s),e[Math.max(0,Math.min(o,s-1))])},namespaceRegex=/[^.]*(?=\..*)\.|.*/,stripNameRegex=/\..*/,stripUidRegex=/::\d+$/,eventRegistry={};let uidEvent=1;const customEvents={mouseenter:"mouseover",mouseleave:"mouseout"},nativeEvents=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 makeEventUid(e,t){return t&&`${t}::${uidEvent++}`||e.uidEvent||uidEvent++}function getElementEvents(e){const t=makeEventUid(e);return e.uidEvent=t,eventRegistry[t]=eventRegistry[t]||{},eventRegistry[t]}function bootstrapHandler(e,t){return function n(i){return hydrateObj(i,{delegateTarget:e}),n.oneOff&&EventHandler.off(e,i.type,t),t.apply(e,[i])}}function bootstrapDelegationHandler(e,t,n){return function i(s){const o=e.querySelectorAll(t);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return hydrateObj(s,{delegateTarget:r}),i.oneOff&&EventHandler.off(e,s.type,t,n),n.apply(r,[s])}}function findHandler(e,t,n=null){return Object.values(e).find((e=>e.callable===t&&e.delegationSelector===n))}function normalizeParameters(e,t,n){const i="string"==typeof t,s=i?n:t||n;let o=getTypeEvent(e);return nativeEvents.has(o)||(o=e),[i,s,o]}function addHandler(e,t,n,i,s){if("strinLine truncated
|
||||
//# sourceMappingURL=bootstrap.esm.min.js.map
|
||||
Loaded 100 of 2069 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user