1
0
mirror of https://github.com/oliverbooth/X10D synced 2024-11-10 04:55:42 +00:00

Merge branch 'main' into develop

This commit is contained in:
Oliver Booth 2022-05-16 10:12:36 +01:00
commit 838a7cf72a
No known key found for this signature in database
GPG Key ID: 32A00B35503AF634
38 changed files with 2264 additions and 90 deletions

133
.github/CODE_OF_CONDUCT.md vendored Normal file
View File

@ -0,0 +1,133 @@
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the overall
community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or advances of
any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email address,
without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
yiliansource@gmail.com or me@olivr.me.
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series of
actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within the
community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.1, available at
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
[https://www.contributor-covenant.org/translations][translations].
[homepage]: https://www.contributor-covenant.org
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
[Mozilla CoC]: https://github.com/mozilla/diversity
[FAQ]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations

63
.github/ISSUE_TEMPLATE/bug-report.yml vendored Normal file
View File

@ -0,0 +1,63 @@
name: Bug Report
description: File a bug report
title: "[Bug]: "
labels: ["bug"]
assignees:
- oliverbooth
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report!
- type: textarea
id: expected-behavior
attributes:
label: Expected Behavior
description: What did you expect to happen?
validations:
required: true
- type: textarea
id: actual-behavior
attributes:
label: Actual Behavior
description: What actually happened?
validations:
required: true
- type: textarea
id: snippet
attributes:
label: MCVE
description: Provide a [minimal, reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) of the code that causes the behaviour. This will be automatically formatted into code, so no need for backticks.
render: csharp
validations:
required: false
- type: dropdown
id: version
attributes:
label: Version
description: What version of the package are you running?
options:
- 3.1.0
- 3.0.0
- 2.6.0
- 2.5.0
- 2.4.0
- 2.3.0
- 2.2.0
- 2.1.0
validations:
required: true
- type: textarea
id: logs
attributes:
label: Relevant log output
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
render: shell
- type: checkboxes
id: terms
attributes:
label: Code of Conduct
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/oliverbooth/X10D/blob/main/.github/CODE_OF_CONDUCT.md)
options:
- label: I agree to follow this project's Code of Conduct
required: true

View File

@ -1,24 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: bug
assignees: oliverbooth
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Additional context**
Add any other context about the problem here.

View File

@ -1,45 +0,0 @@
---
name: Extension method request
about: Make a request for an extension method you believe should be implemented
title: ''
labels: enhancement
assignees: oliverbooth
---
**Type**
Provide the fully-qualified type name of the extension method you wish to have here. Example:
```cs
System.String
```
**Extension method signature**
Provide the full method signature here, without parameter names, but do not include the leading `this T x` parameter. Example:
```cs
string Random(int, System.Random)
```
**Parameters**
Document each of the parameters here, with their name and description - i.e. this would be equivalent to the entry in the XMLDoc. Use a table layout like in the following example:
| Parameter | Type | Description |
|- |- |- |
|length|`int`|The length of the string to generate.|
|random|`System.Random`|The instance of `System.Random` to use for the operation|
**Description**
Briefly but concisely document the method's purpose here. i.e. This would be the `<summary>` entry in the XMLDoc.
**Benefits**
Give a reason as to why this method should be added. Does it add a need not satisified by any other X10D method? Does .NET not offer similar operations? Why should this method exist?
**Drawbacks**
Give a reason as to why this method should *not* be added. Is it an expensive operation? Does it defy .NET guidelines? If you cannot think of any, leave this blank.
**(Optional) Implementation example**
If you prefer, you can give an example of how this method might be implemented using a C# codeblock.
Do not include the method signature here - just the body.
```cs
{
// code
}
```

View File

@ -0,0 +1,84 @@
name: Extension Method Request
description: Make a request for an extension method you believe should be implemented
title: "[Request]: "
labels: ["enhancement"]
assignees:
- oliverbooth
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to suggest an extension method!
- type: input
id: fqn
attributes:
label: Type to extend
description: Provide the fully qualified type name of the extension method you're suggesting.
placeholder: "Example: System.Drawing.Color"
validations:
required: true
- type: textarea
id: signature
attributes:
label: Signature
description: Provide the method signature here. __**DO NOT**__ include `public static` or the leading `this` parameter - these are inherent to extension methods. __**DO**__ include the return type and parameter names. This will be automatically formatted into code, so no need for backticks.
placeholder: "Example: Color WithR(int r)"
render: csharp
validations:
required: true
- type: textarea
id: summary
attributes:
label: Summary
description: Briefly but concisely document the method's purpose. i.e. This would be the `<summary>` entry in the XMLDoc.
placeholder: "Example: Returns a new Color whose A, B and G components are the same as the specified color, and whose R component is a new value."
render: md
validations:
required: true
- type: textarea
id: parameters
attributes:
label: Parameters
description: "If this method accepts parameters, document each of the parameters here, with their name and description - i.e. this would be equivalent to the `<param>` entry in the XMLDoc. __**DO NOT**__ include the leading `this` parameter. Use a table layout like in the provided example."
value:
|
| Parameter | Type | Description |
| - | - | - |
| r | `float` | The new value for the R component. |
validations:
required: false
- type: textarea
id: benefits
attributes:
label: Benefits
description: Give a reason as to why this method should be added. Does it add a need not satisfied by any other X10D method? Does .NET not offer similar functionality?
placeholder: "Example: 'with' expressions are not supported for Color, as the setters of R G and B are get-only."
validations:
required: true
- type: textarea
id: drawbacks
attributes:
label: Drawbacks
description: Give a reason as to why this method should *not* be added. Is it an expensive operation? Does it defy .NET guidelines? If you cannot think of any drawbacks, you may leave this blank.
validations:
required: false
- type: textarea
id: implementation-example
attributes:
label: Implementation Example
description: If you prefer, you can give an example of how this method might be implemented. __**DO NOT**__ include the signature here, only the body. This will be automatically formatted into code, so no need for backticks.
placeholder:
|
Example: return Color.FromArgb(value.A, r, value.G, value.B);
render: csharp
validations:
required: false
- type: checkboxes
id: terms
attributes:
label: Code of Conduct
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/oliverbooth/X10D/blob/main/.github/CODE_OF_CONDUCT.md)
options:
- label: I agree to follow this project's Code of Conduct
required: true

View File

@ -3,23 +3,20 @@ name: DocFX
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
docfx:
runs-on: ubuntu-latest
name: Publish Documentation
steps:
- uses: actions/checkout@v2
- name: Setup .NET Core
uses: actions/setup-dotnet@v1
- uses: actions/checkout@v1
- uses: nikeee/docfx-action@v1.0.0
name: Build Documentation
with:
dotnet-version: 3.1.101
- name: Install DocFX
run: |
curl -L https://github.com/dotnet/docfx/releases/latest/download/docfx.zip -o docfx.zip
unzip -d .docfx docfx.zip
- name: Build documentation
run: dotnet run .docfx/docfx.exe --project X10D.sln
args: docfx_project/docfx.json
- uses: maxheld83/ghpages@master
name: Publish Documentation on GitHub Pages
env:
BUILD_DIR: docfx_project/_site
GH_PAT: ${{ secrets.GH_PAT }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@ -3,7 +3,6 @@ name: Publish Nightly
on:
push:
branches:
- main
- develop
jobs:

View File

@ -25,8 +25,8 @@ jobs:
- name: Restore dependencies
run: dotnet restore
- name: Publish
run: dotnet publish -c Release -r linux-x64 --self-contained true
- name: Build
run: dotnet build -c Release
- name: Build NuGet package
run: |

View File

@ -25,8 +25,8 @@ jobs:
- name: Restore dependencies
run: dotnet restore
- name: Publish
run: dotnet publish -c Release -r linux-x64 --self-contained true
- name: Build
run: dotnet build -c Release
- name: Build NuGet package
run: |

View File

@ -17,7 +17,7 @@ X10D (pronounced *extend*), is a .NET package that provides extension methods fo
## Installation
### NuGet installation
```ps
Install-Package X10D -Version 3.0.0
Install-Package X10D -Version 3.1.0
```
### Manual installation

9
docfx_project/.gitignore vendored Normal file
View File

@ -0,0 +1,9 @@
###############
# folder #
###############
/**/DROP/
/**/TEMP/
/**/packages/
/**/bin/
/**/obj/
_site

5
docfx_project/api/.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
###############
# temp file #
###############
*.yml
.manifest

View File

@ -0,0 +1,2 @@
# PLACEHOLDER
TODO: Add .NET projects to the *src* folder and run `docfx` to generate **REAL** *API Documentation*!

View File

@ -0,0 +1 @@
# Add your introductions here!

View File

@ -0,0 +1,2 @@
- name: Introduction
href: intro.md

66
docfx_project/docfx.json Normal file
View File

@ -0,0 +1,66 @@
{
"metadata": [
{
"src": [
{
"src": "../",
"files": [
"X10D/**/**.csproj",
"X10D.Unity/**/**.csproj"
]
}
],
"dest": "api",
"disableGitFeatures": false,
"disableDefaultFilter": false
}
],
"build": {
"content": [
{
"files": [
"api/**.yml",
"api/index.md"
]
},
{
"files": [
"articles/**.md",
"articles/**/toc.yml",
"toc.yml",
"*.md"
]
}
],
"resource": [
{
"files": [
"images/**"
]
}
],
"overwrite": [
{
"files": [
"apidoc/**.md"
],
"exclude": [
"obj/**",
"_site/**"
]
}
],
"dest": "_site",
"globalMetadataFiles": [],
"fileMetadataFiles": [],
"template": [
"default", "templates/singulinkfx"
],
"postProcessors": [],
"markdownEngineName": "markdig",
"noLangKeyword": false,
"keepFileLink": false,
"cleanupCacheHistory": false,
"disableGitFeatures": false
}
}

4
docfx_project/index.md Normal file
View File

@ -0,0 +1,4 @@
# This is the **HOMEPAGE**.
Refer to [Markdown](http://daringfireball.net/projects/markdown/) for how to write markdown files.
## Quick Start Notes:
1. Add images to the *images* folder if the file is referencing an image.

View File

@ -0,0 +1,62 @@
{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
{{!include(/^styles/.*/)}}
{{!include(/^fonts/.*/)}}
{{!include(favicon.ico)}}
{{!include(logo.svg)}}
{{!include(search-stopwords.json)}}
<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
{{>partials/head}}
<body>
<div class="top-navbar">
<a class="burger-icon" onclick="toggleMenu()">
<svg name="Hamburger"
style="vertical-align: middle;"
width="34" height="34" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M20 6H4V9H20V6ZM4 10.999H20V13.999H4V10.999ZM4 15.999H20V18.999H4V15.999Z"></path></svg>
</a>
{{>partials/logo}}
</div>
<div class="body-content">
<div id="blackout" class="blackout" onclick="toggleMenu()"></div>
<nav id="sidebar" role="navigation">
<div class="sidebar">
{{>partials/navbar}}
<div class="sidebar-item-separator"></div>
{{^_disableToc}}
{{>partials/toc}}
{{/_disableToc}}
</div>
{{>partials/footer}}
</nav>
<main class="main-panel">
{{#_enableSearch}}
{{>partials/searchResults}}
{{/_enableSearch}}
<div role="main" class="hide-when-search" >
{{^_disableBreadcrumb}}
{{>partials/breadcrumb}}
{{/_disableBreadcrumb}}
<article class="content wrap" id="_content" data-uid="{{uid}}">
{{!body}}
</article>
</div>
{{#_copyrightFooter}}
<div class="copyright-footer">
<span>{{_copyrightFooter}}</span>
</div>
{{/_copyrightFooter}}
</main>
</div>
{{>partials/scripts}}
</body>
</html>

View File

@ -0,0 +1,4 @@
<div class="footer">
{{{_appFooter}}}
{{^_appFooter}}<strong><a href='https://dotnet.github.io/docfx/'>DocFX</a> + <a href='https://www.singulink.com'>Singulink</a> = ♥</strong>{{/_appFooter}}
</div>

View File

@ -0,0 +1,24 @@
{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>{{#title}}{{title}}{{/title}}{{^title}}{{>partials/title}}{{/title}} {{#_appTitle}}| {{_appTitle}} {{/_appTitle}}</title>
<meta name="viewport" content="width=device-width">
<meta name="title" content="{{#title}}{{title}}{{/title}}{{^title}}{{>partials/title}}{{/title}} {{#_appTitle}}| {{_appTitle}} {{/_appTitle}}">
<meta name="generator" content="docfx {{_docfxVersion}}">
{{#_description}}<meta name="description" content="{{_description}}">{{/_description}}
<link rel="shortcut icon" href="{{_rel}}{{{_appFaviconPath}}}{{^_appFaviconPath}}favicon.ico{{/_appFaviconPath}}">
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.1/styles/night-owl.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.7.2/font/bootstrap-icons.css" integrity="sha384-EvBWSlnoFgZlXJvpzS+MAUEjvN7+gcCwH+qh7GRFOGgZO0PuwOFro7qPOJnLfe7l" crossorigin="anonymous">
<link rel="stylesheet" href="{{_rel}}styles/config.css">
<link rel="stylesheet" href="{{_rel}}styles/discord.css">
<link rel="stylesheet" href="{{_rel}}styles/singulink.css">
<link rel="stylesheet" href="{{_rel}}styles/main.css">
<meta property="docfx:navrel" content="{{_navRel}}">
<meta property="docfx:tocrel" content="{{_tocRel}}">
{{#_noindex}}<meta name="searchOption" content="noindex">{{/_noindex}}
{{#_enableSearch}}<meta property="docfx:rel" content="{{_rel}}">{{/_enableSearch}}
{{#_enableNewTab}}<meta property="docfx:newtab" content="true">{{/_enableNewTab}}
</head>

View File

@ -0,0 +1,31 @@
{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
<ul class="nav level{{level}}">
{{#items}}
{{^dropdown}}
<li>
{{^leaf}}
<span class="expand-stub"></span>
{{/leaf}}
{{#topicHref}}
<a href="{{topicHref}}" class="sidebar-item" name="{{tocHref}}" title="{{name}}">{{name}}</a>
{{/topicHref}}
{{^topicHref}}
<a>{{{name}}}</a>
{{/topicHref}}
{{^leaf}}
{{>partials/li}}
{{/leaf}}
</li>
{{/dropdown}}
{{#dropdown}}
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">{{name}} <span class="caret"></span></a>
<ul class="dropdown-menu level{{level}}">
{{>partials/dd-li}}
</ul>
</li>
{{/dropdown}}
{{/items}}
</ul>

View File

@ -0,0 +1,6 @@
{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
<a class="brand" href="{{_rel}}index.html">
<img src="{{_rel}}{{{_appLogoPath}}}{{^_appLogoPath}}logo.svg{{/_appLogoPath}}" alt="{{_appName}}" class="logomark">
<span class="brand-title">{{_appName}}</span>
</a>

View File

@ -0,0 +1,13 @@
{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
<h1 id="{{id}}" data-uid="{{uid}}" class="text-break">{{>partials/title}}</h1>
<div class="markdown level0 summary">{{{summary}}}</div>
<div class="markdown level0 conceptual">{{{conceptual}}}</div>
<div class="markdown level0 remarks">{{{remarks}}}</div>
{{#children}}
<h3 id="{{id}}">{{>partials/namespaceSubtitle}}</h3>
{{#children}}
<h5><xref uid="{{uid}}" altProperty="fullName" displayProperty="name"/></h5>
<section>{{{summary}}}</section>
{{/children}}
{{/children}}

View File

@ -0,0 +1,19 @@
{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
<div>
<div class="mobile-hide">
{{>partials/logo}}
</div>
{{#_enableSearch}}
<div class="sidesearch">
<form id="search" role="search" class="search">
<i class="bi bi-search search-icon"></i>
<input type="text" id="search-query" placeholder="{{__global.search}}" autocomplete="off">
</form>
</div>
{{/_enableSearch}}
<div id="navbar">
</div>
</div>

View File

@ -0,0 +1,12 @@
{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.1/highlight.min.js"></script>
<script type="text/javascript" src="{{_rel}}styles/jquery.twbsPagination.js"></script>
<script type="text/javascript" src="{{_rel}}styles/url.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/anchor-js/anchor.min.js"></script>
<script type="text/javascript" src="{{_rel}}styles/docfx.js"></script>
<script type="text/javascript" src="{{_rel}}styles/singulink.js"></script>
<script type="text/javascript" src="{{_rel}}styles/main.js"></script>

View File

@ -0,0 +1,9 @@
{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
<div id="search-results" style="display: none;">
<h1 class="search-list">{{__global.searchResults}} <span></span></h1>
<div class="sr-items">
<p><i class="bi bi-hourglass-split index-loading"></i></p>
</div>
<ul id="pagination" data-first={{__global.pageFirst}} data-prev={{__global.pagePrev}} data-next={{__global.pageNext}} data-last={{__global.pageLast}}></ul>
</div>

View File

@ -0,0 +1,5 @@
{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
<div id="sidetoggle">
<div id="sidetoc"></div>
</div>

View File

@ -0,0 +1,114 @@
/* Theme Configuration Options */
:root
{
/* General */
--base-font-size: 16px;
--smalldevice-base-font-size: 14px; /* Base font size for devices < 1024px */
--main-bg-color: #1f1f23;
--footer-bg-color: rgba(0,0,0,.4);
--separator-color: #42474f;
--table-strip-bg-color: #151515;
--table-header-bg-color: black;
--table-header-color: hsla(0,0%,100%,.8);
--table-header-border-color: #040405;
/* Text */
--appname-color: white;
--h1-color: white;
--h2-color: #f2f2f2;
--h3-color: #e3e3e3;
--h4-color: #ffffff;
--h5-color: #e0e0e0;
--text-color: #e1e1e1;
--link-color: #00b0f4;
--link-hover-color: #2ec4ff;
/* Mobile Topbar */
--topbar-bg-color: #18191c;
/* Button */
--button-color: #747f8d;
/* Sidebar */
--sidebar-width: 400px;
--sidebar-bg-color: #292B30;
--search-color: #bdbdbd;
--search-bg-color: #1b1e21;
--search-searchicon-color: #e3e3e3;
--search-border-color: black;
--sidebar-item-color: white;
--sidebar-active-item-color: #00b0f4;
--sidebar-level1-item-bg-color: #222429;
--sidebar-level1-item-hover-bg-color: #1D1F22;
--toc-filter-color: #bdbdbd;
--toc-filter-bg-color: #1b1e21;
--toc-filter-filtericon-color: #e3e3e3;
--toc-filter-clearicon-color: #e68585;
--toc-filter-border-color: black;
/* Scrollbars */
--scrollbar-bg-color: transparent;
--scrollbar-thumb-bg-color: rgba(0,0,0,.4);
--scrollbar-thumb-border-color: transparent;
/* Alerts and Blocks */
--alert-info-border-color: rgba(114,137,218,.5);
--alert-info-bg-color: rgba(114,137,218,.1);
--alert-warning-border-color: rgba(250,166,26,.5);
--alert-warning-bg-color: rgba(250,166,26,.1);
--alert-danger-border-color: rgba(240,71,71,.5);
--alert-danger-bg-color: rgba(240,71,71,.1);
--alert-tip-border-color: rgba(255,255,255,.5);
--alert-tip-bg-color: rgba(255,255,255,.1);
--blockquote-border-color: rgba(255,255,255,.5);
--blockquote-bg-color: rgba(255,255,255,.1);
--breadcrumb-bg-color: #2f3136;
/* Inline Code */
--ref-bg-color: black;
--ref-color: #89d4f1;
/* Code Blocks */
--code-bg-color: #151515;
--code-color: #d6deeb;
--code-keyword-color: #569cd6;
--code-comment-color: #57a64a;
--code-macro-color: #beb7ff;
--code-string-color: #d69d85;
--code-string-escape-color: #ffd68f;
--code-field-color: #c8c8c8;
--code-function-color: #dcdcaa;
--code-control-color: #d8a0df;
--code-class-color: #4ec9b0;
--code-number-color: #b5cea8;
--code-params-color: #9a9a9a;
--code-breakpoint-color: #8c2f2f;
}
/* Code Block Overrides */
pre, legend {
--scrollbar-thumb-bg-color: #333;
}

View File

@ -0,0 +1,681 @@
/* Discord Style */
::-webkit-scrollbar {
width: 10px;
}
::-webkit-scrollbar-track {
background: var(--scrollbar-bg-color);
}
::-webkit-scrollbar-thumb {
background: var(--scrollbar-thumb-bg-color);
border-color: var(--scrollbar-thumb-border-color);
border-radius: 5px;
}
::marker {
unicode-bidi: isolate;
font-variant-numeric: tabular-nums;
text-transform: none;
text-indent: 0px !important;
text-align: start !important;
text-align-last: start !important;
}
*, :after, :before
{
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
html, body
{
padding: 0;
margin: 0;
font: 15px/150% 'Roboto', sans-serif;
overflow: hidden;
color: var(--text-color);
background-color: var(--main-bg-color);
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
img {
max-width: 100%;
}
ul > li, ol > li {
display: list-item;
}
h1,h2,h3,h4,h5
{
color: var(--link-active-color);
position: relative;
}
h1, h2
{
margin-block-start: 2em;
}
h3
{
margin-block-start: 1em;
font-weight: 300;
font-size: 1.5em;
color: var(--h3-color);
margin-block-start: 3em;
}
h4
{
opacity: 1;
color: var(--h4-color);
font-size: large;
border-bottom: 2px solid var(--separator-color);
margin: 20px 0 0 0;
}
h5 {
margin-block-end: .8em;
margin-block-start: 1em;
font-size: .85em;
font-weight: 500;
color: var(--h5-color);
}
h6 {
font-size: .75em;
margin: 0;
}
p
{
font-weight: 400;
}
ul
{
position: relative;
}
ul, ol
{
padding-inline-start: 3em;
}
ul.level1
{
list-style-type: none;
padding-inline-start: 0;
}
ul.level2, ul.level3
{
padding-inline-start: 1em;
list-style-type: none;
font-size: .9em;
}
a
{
color: var(--link-color);
text-decoration: none;
transition: color .25s;
}
a:focus, a:hover
{
color: var(--link-hover-color);
text-decoration: underline;
}
a.anchorjs-link:hover {
text-decoration: none;
}
a.active, a:active
{
color: var(--link-active-color);
}
.body-content
{
display: flex;
flex-direction: row;
height: 100%;
overflow-x: hidden;
overflow-y: hidden;
}
.page-title
{
margin-block-start: 0;
}
nav
{
width: 300px;
transition: left .5s ease-out;
position: fixed;
left: -350px;
top: 40px;
bottom: 0;
background-color: var(--sidebar-bg-color);
overflow-y: auto;
display: flex;
flex-direction: column;
z-index: 1000;
}
h1:first-child
{
margin-block-start: 1.1em;
margin-top: 1.1em;
}
.sidebar
{
padding: 32px 17px 32px 32px;
flex: 1;
}
.sidebar-item
{
font-size: 1em;
font-weight: 400;
display: block;
padding: 4px 16px;
color: var(--sidebar-item-color);
}
.sidebar-item.large, #navbar .sidebar-item
{
padding: 8px 16px;
}
a.sidebar-item:hover, a.sidebar-item:focus
{
color: var(--link-active-color);
text-decoration: none;
}
a.sidebar-item.active
{
color: var(--link-active-color);
}
ul.level1 > li > a.sidebar-item
{
background-color: transparent;
border-radius: 4px;
}
#toc ul.level1 > li > a.sidebar-item.active
{
background-color: var(--link-active-bg-color);
}
.sidebar-item-separator
{
height: 2px;
width: 100%;
background-color: var(--separator-color);
margin: 2em 0;
opacity: .8;
}
span.sidebar-item
{
font-weight: 700;
text-transform: uppercase;
font-size: .8em;
color: var(--text-color);
margin-block-start: 1.25em;
}
.main-panel
{
background-color: var(--main-bg-color);
flex: 1;
overflow-y: auto;
padding: 20px 40px;
}
.top-navbar
{
display: flex;
flex-direction: row;
align-items: center;
padding: 0 40px;
height: 40px;
background-color: var(--topbar-bg-color);
}
.burger-icon
{
margin-right: 1em;
color: var(--button-color);
}
.burger-icon:hover, .burger-icon:focus
{
color: var(--link-active-color);
}
.burger-icon.active, .burger-icon:active
{
color: var(--link-active-color);
}
.brand
{
display: flex;
align-items: center;
justify-content: start;
}
.logomark
{
height: 28px;
}
.brand-title
{
padding: 0 .5em;
font-size: .9em;
color: var(--link-active-color);
}
.footer
{
background-color: var(--footer-bg-color);
padding: 20px;
margin: 0 20px 20px 20px;
border-radius: 8px;
color: var(--link-active-color);
}
.footer > h4
{
margin-block-start: 0;
}
.blackout
{
display: block;
visibility: hidden;
position: absolute;
z-index: 100;
top: 40px;
bottom: 0;
left: 0;
right: 0;
background-color: var(--footer-bg-color);
}
@keyframes showThat {
0% { opacity: 0; visibility: hidden; }
1% { opacity: 0; visibility: visible; }
100% { opacity: 1; visibility: visible;}
}
@keyframes hideThat {
0% { opacity: 1; visibility: visible; }
99% { opacity: 0; visibility: visible; }
100% { opacity: 0; visibility: hidden;}
}
.showThat
{
animation: showThat .5s forwards;
}
.hideThat
{
animation: hideThat .5s forwards;
}
@media (min-width: 1024px)
{
nav
{
position: relative;
left: 0!important;
top: 0;
bottom: 0;
}
.top-navbar
{
display: none;
}
.blackout
{
display: none;
}
}
/* Table */
.table-responsive
{
overflow-x: auto;
margin-bottom: 64px;
}
table
{
background-color: var(--code-bg-color);
border-collapse: collapse;
width: 100%;
table-layout: auto;
}
table.table-striped tbody tr:nth-child(2n)
{
background-color: var(--table-strip-bg-color);
}
table thead
{
background: var(--table-header-bg-color);
}
table th
{
color: var(--table-header-color);
text-transform: uppercase;
font-size: 12px;
line-height: 15px;
border-bottom: 1px solid var(--table-header-border-color);
padding: 8px;
}
.table-condensed th {
text-align: left;
}
table td
{
padding: 8px;
font-weight: 300;
}
table td > p
{
margin: 0;
}
/* Alerts */
.alert {
border-radius: 4px;
padding: 8px;
margin: 25px 0;
}
.alert > h5
{
display: none;
margin: 0;
}
.alert > p
{
margin: 0;
font-weight: 300;
font-size: 13px;
}
.alert.alert-info
{
border: 2px solid var(--alert-info-border-color);
background: var(--alert-info-bg-color);
}
.alert.alert-warning
{
border: 2px solid var(--alert-warning-border-color);
background: var(--alert-warning-bg-color);
}
.alert.alert-danger
{
border: 2px solid var(--alert-danger-border-color);
background: var(--alert-danger-bg-color);
}
.TIP.alert.alert-info
{
border: 2px solid var(--alert-tip-border-color);
background: var(--alert-tip-bg-color);
}
blockquote {
margin: 8px 0;
border-left: 4px solid var(--blockquote-border-color);
padding: 8px;
background: var(--blockquote-bg-color);
border-radius: 4px;
}
blockquote > p {
margin: 0;
font-style: italic;
font-size: 13px;
}
/* Breadcrumb */
#breadcrumb
{
padding: 8px 16px;
background: var(--breadcrumb-bg-color);
border-radius: 4px;
margin-bottom: 30px;
}
#breadcrumb:empty
{
display: none;
}
ul.breadcrumb
{
display: flex;
flex-direction: row;
margin: 0;
}
ul.breadcrumb > li {
margin-right: 6px;
}
ul.breadcrumb > li::before
{
content: "/";
margin-right: 5px;
}
ul.breadcrumb > li:first-child::before
{
content: "";
margin: 0;
}
/* Code */
legend, pre
{
display: block;
background-color: var(--code-bg-color);
padding: 16px;
border-radius: 4px;
}
code
{
background-color: var(--code-bg-color);
padding: 2px 4px;
border-radius: 4px;
}
.hljs
{
background: transparent;
}
/* DocFX related */
.small {
font-size: .9em;
}
.pull-right
{
float: right;
}
.hide
{
display: none;
}
@media (max-width: 1023.98px)
{
.mobile-hide
{
display: none;
}
}
li
{
display: block;
position: relative;
}
.expand-stub
{
cursor: pointer;
position: absolute;
width: 20px;
height: 20px;
left: -10px;
}
ul.level1 > li > .expand-stub
{
display: none;
}
.toc .nav > li > .expand-stub::before, .toc .nav > li.active > .expand-stub::before
{
content: " ";
position: absolute;
transform: rotate(-90deg);
width: 10px;
height: 10px;
top: 5px;
left: 5px;
background-repeat: no-repeat;
background: url(down-arrow.svg);
}
.toc .nav > li.active > .expand-stub::before, .toc .nav > li.in > .expand-stub::before, .toc .nav > li.in.active > .expand-stub::before, .toc .nav > li.filtered > .expand-stub::before
{
transform: none;
}
li > ul
{
display: none;
}
li.in > ul
{
display: block;
}
ul.level2 > li > a.sidebar-item,
ul.level3 > li > a.sidebar-item
{
font-weight: 500;
font-size: .95em;
padding: 0;
margin: 2px 16px;
}
ul.level2 > li > a.sidebar-item
{
color: var(--sidebar-item-2nd-color);
}
ul.level3 > li > a.sidebar-item
{
color: var(--sidebar-item-3rd-color);
}
ul.level2 > li > a.sidebar-item:hover,
ul.level2 > li > a.sidebar-item:focus,
ul.level3 > li > a.sidebar-item:hover,
ul.level3 > li > a.sidebar-item:focus
{
color: var(--link-active-color);
text-decoration: underline;
}
ul.level2 > li > a.sidebar-item.active,
ul.level3 > li > a.sidebar-item.active
{
color: var(--link-active-color);
}
.inheritance .level0:before,
.inheritance .level1:before,
.inheritance .level2:before,
.inheritance .level3:before,
.inheritance .level4:before,
.inheritance .level5:before {
content: '↳';
margin-right: 5px;
}
.inheritance .level0 {
margin-left: 0em;
}
.inheritance .level1 {
margin-left: 1em;
}
.inheritance .level2 {
margin-left: 2em;
}
.inheritance .level3 {
margin-left: 3em;
}
.inheritance .level4 {
margin-left: 4em;
}
.inheritance .level5 {
margin-left: 5em;
}

View File

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 491.996 491.996" style="enable-background:new 0 0 491.996 491.996;" xml:space="preserve">
<g>
<g color="white">
<path d="M484.132,124.986l-16.116-16.228c-5.072-5.068-11.82-7.86-19.032-7.86c-7.208,0-13.964,2.792-19.036,7.86l-183.84,183.848
L62.056,108.554c-5.064-5.068-11.82-7.856-19.028-7.856s-13.968,2.788-19.036,7.856l-16.12,16.128
c-10.496,10.488-10.496,27.572,0,38.06l219.136,219.924c5.064,5.064,11.812,8.632,19.084,8.632h0.084
c7.212,0,13.96-3.572,19.024-8.632l218.932-219.328c5.072-5.064,7.856-12.016,7.864-19.224
C491.996,136.902,489.204,130.046,484.132,124.986z" fill="currentcolor"/>
</g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1,317 @@
/*!
* jQuery pagination plugin v1.4.1
* http://esimakin.github.io/twbs-pagination/
*
* Copyright 2014-2016, Eugene Simakin
* Released under Apache 2.0 license
* http://apache.org/licenses/LICENSE-2.0.html
*/
(function ($, window, document, undefined) {
'use strict';
var old = $.fn.twbsPagination;
// PROTOTYPE AND CONSTRUCTOR
var TwbsPagination = function (element, options) {
this.$element = $(element);
this.options = $.extend({}, $.fn.twbsPagination.defaults, options);
if (this.options.startPage < 1 || this.options.startPage > this.options.totalPages) {
throw new Error('Start page option is incorrect');
}
this.options.totalPages = parseInt(this.options.totalPages);
if (isNaN(this.options.totalPages)) {
throw new Error('Total pages option is not correct!');
}
this.options.visiblePages = parseInt(this.options.visiblePages);
if (isNaN(this.options.visiblePages)) {
throw new Error('Visible pages option is not correct!');
}
if (this.options.onPageClick instanceof Function) {
this.$element.first().on('page', this.options.onPageClick);
}
// hide if only one page exists
if (this.options.hideOnlyOnePage && this.options.totalPages == 1) {
this.$element.trigger('page', 1);
return this;
}
if (this.options.totalPages < this.options.visiblePages) {
this.options.visiblePages = this.options.totalPages;
}
if (this.options.href) {
this.options.startPage = this.getPageFromQueryString();
if (!this.options.startPage) {
this.options.startPage = 1;
}
}
var tagName = (typeof this.$element.prop === 'function') ?
this.$element.prop('tagName') : this.$element.attr('tagName');
if (tagName === 'UL') {
this.$listContainer = this.$element;
} else {
this.$listContainer = $('<ul></ul>');
}
this.$listContainer.addClass(this.options.paginationClass);
if (tagName !== 'UL') {
this.$element.append(this.$listContainer);
}
if (this.options.initiateStartPageClick) {
this.show(this.options.startPage);
} else {
this.render(this.getPages(this.options.startPage));
this.setupEvents();
}
return this;
};
TwbsPagination.prototype = {
constructor: TwbsPagination,
destroy: function () {
this.$element.empty();
this.$element.removeData('twbs-pagination');
this.$element.off('page');
return this;
},
show: function (page) {
if (page < 1 || page > this.options.totalPages) {
throw new Error('Page is incorrect.');
}
this.currentPage = page;
this.render(this.getPages(page));
this.setupEvents();
this.$element.trigger('page', page);
return this;
},
buildListItems: function (pages) {
var listItems = [];
if (this.options.first) {
listItems.push(this.buildItem('first', 1));
}
if (this.options.prev) {
var prev = pages.currentPage > 1 ? pages.currentPage - 1 : this.options.loop ? this.options.totalPages : 1;
listItems.push(this.buildItem('prev', prev));
}
for (var i = 0; i < pages.numeric.length; i++) {
listItems.push(this.buildItem('page', pages.numeric[i]));
}
if (this.options.next) {
var next = pages.currentPage < this.options.totalPages ? pages.currentPage + 1 : this.options.loop ? 1 : this.options.totalPages;
listItems.push(this.buildItem('next', next));
}
if (this.options.last) {
listItems.push(this.buildItem('last', this.options.totalPages));
}
return listItems;
},
buildItem: function (type, page) {
var $itemContainer = $('<li></li>'),
$itemContent = $('<a></a>'),
itemText = this.options[type] ? this.makeText(this.options[type], page) : page;
$itemContainer.addClass(this.options[type + 'Class']);
$itemContainer.data('page', page);
$itemContainer.data('page-type', type);
$itemContainer.append($itemContent.attr('href', this.makeHref(page)).addClass(this.options.anchorClass).html(itemText));
return $itemContainer;
},
getPages: function (currentPage) {
var pages = [];
var half = Math.floor(this.options.visiblePages / 2);
var start = currentPage - half + 1 - this.options.visiblePages % 2;
var end = currentPage + half;
// handle boundary case
if (start <= 0) {
start = 1;
end = this.options.visiblePages;
}
if (end > this.options.totalPages) {
start = this.options.totalPages - this.options.visiblePages + 1;
end = this.options.totalPages;
}
var itPage = start;
while (itPage <= end) {
pages.push(itPage);
itPage++;
}
return {"currentPage": currentPage, "numeric": pages};
},
render: function (pages) {
var _this = this;
this.$listContainer.children().remove();
var items = this.buildListItems(pages);
jQuery.each(items, function(key, item){
_this.$listContainer.append(item);
});
this.$listContainer.children().each(function () {
var $this = $(this),
pageType = $this.data('page-type');
switch (pageType) {
case 'page':
if ($this.data('page') === pages.currentPage) {
$this.addClass(_this.options.activeClass);
}
break;
case 'first':
$this.toggleClass(_this.options.disabledClass, pages.currentPage === 1);
break;
case 'last':
$this.toggleClass(_this.options.disabledClass, pages.currentPage === _this.options.totalPages);
break;
case 'prev':
$this.toggleClass(_this.options.disabledClass, !_this.options.loop && pages.currentPage === 1);
break;
case 'next':
$this.toggleClass(_this.options.disabledClass,
!_this.options.loop && pages.currentPage === _this.options.totalPages);
break;
default:
break;
}
});
},
setupEvents: function () {
var _this = this;
this.$listContainer.off('click').on('click', 'li', function (evt) {
var $this = $(this);
if ($this.hasClass(_this.options.disabledClass) || $this.hasClass(_this.options.activeClass)) {
return false;
}
// Prevent click event if href is not set.
!_this.options.href && evt.preventDefault();
_this.show(parseInt($this.data('page')));
});
},
makeHref: function (page) {
return this.options.href ? this.generateQueryString(page) : "#";
},
makeText: function (text, page) {
return text.replace(this.options.pageVariable, page)
.replace(this.options.totalPagesVariable, this.options.totalPages)
},
getPageFromQueryString: function (searchStr) {
var search = this.getSearchString(searchStr),
regex = new RegExp(this.options.pageVariable + '(=([^&#]*)|&|#|$)'),
page = regex.exec(search);
if (!page || !page[2]) {
return null;
}
page = decodeURIComponent(page[2]);
page = parseInt(page);
if (isNaN(page)) {
return null;
}
return page;
},
generateQueryString: function (pageNumber, searchStr) {
var search = this.getSearchString(searchStr),
regex = new RegExp(this.options.pageVariable + '=*[^&#]*');
if (!search) return '';
return '?' + search.replace(regex, this.options.pageVariable + '=' + pageNumber);
},
getSearchString: function (searchStr) {
var search = searchStr || window.location.search;
if (search === '') {
return null;
}
if (search.indexOf('?') === 0) search = search.substr(1);
return search;
}
};
// PLUGIN DEFINITION
$.fn.twbsPagination = function (option) {
var args = Array.prototype.slice.call(arguments, 1);
var methodReturn;
var $this = $(this);
var data = $this.data('twbs-pagination');
var options = typeof option === 'object' ? option : {};
if (!data) $this.data('twbs-pagination', (data = new TwbsPagination(this, options) ));
if (typeof option === 'string') methodReturn = data[ option ].apply(data, args);
return ( methodReturn === undefined ) ? $this : methodReturn;
};
$.fn.twbsPagination.defaults = {
totalPages: 1,
startPage: 1,
visiblePages: 5,
initiateStartPageClick: true,
hideOnlyOnePage: false,
href: false,
pageVariable: '{{page}}',
totalPagesVariable: '{{total_pages}}',
page: null,
first: 'First',
prev: 'Previous',
next: 'Next',
last: 'Last',
loop: false,
onPageClick: null,
paginationClass: 'pagination',
nextClass: 'page-item next',
prevClass: 'page-item prev',
lastClass: 'page-item last',
firstClass: 'page-item first',
pageClass: 'page-item',
activeClass: 'active',
disabledClass: 'disabled',
anchorClass: 'page-link'
};
$.fn.twbsPagination.Constructor = TwbsPagination;
$.fn.twbsPagination.noConflict = function () {
$.fn.twbsPagination = old;
return this;
};
$.fn.twbsPagination.version = "1.4.1";
})(window.jQuery, window, document);

View File

@ -0,0 +1,471 @@
body {
font-size: var(--base-font-size);
}
@media (max-width: 1024px) {
body {
font-size: var(--smalldevice-base-font-size);
}
}
/* Headings */
h1, h2, h3, h4, h5 {
line-height: initial;
}
h1, h1:first-child {
font-size: 2.25em;
letter-spacing: 0.5px;
color: var(--h1-color);
margin-block-start: 1em;
margin-block-end: -0.05em;
}
.article h1 {
margin-block-end: -0.2em;
}
h2 {
font-size: 2.1em;
color: var(--h2-color);
}
.article h2 {
margin-block-start: 1.3em;
padding-bottom: 6px;
border-bottom: 1px solid var(--separator-color);
}
h3 {
font-size: 1.95em;
font-weight: 500;
margin-block-start: 1.7em;
}
.article h3 {
font-size: 1.85em;
font-weight: 500;
margin-block-start: 1.2em;
margin-block-end: 0.9em;
}
h4 {
font-size: 1.8em;
font-weight: 400;
margin-block-start: 2em;
padding-bottom: 10px;
}
.article h4 {
font-size: 1.5em;
font-weight: 300;
margin-block-start: 1em;
margin-block-end: 1em;
padding-bottom: 0;
border-bottom: none;
}
h5 {
font-size: 1.1em;
}
.article h5 {
font-size: 1.13em;
font-weight: 400;
text-decoration: underline;
margin-block-start: 1.5em;
margin-block-end: 1.0em;
}
a.brand:hover
{
text-decoration: none;
}
a.brand .brand-title {
font-size: 1.4em;
font-weight: 500;
letter-spacing: 0.5px;
color: var(--appname-color);
margin-top: 1px;
padding: 0 0 0 0.4em;
}
@media (min-width: 1024px) {
a.brand .brand-title {
font-size: 1.55em;
}
}
a.brand .logomark {
height: 35px;
}
/* Top bar */
.top-navbar {
height: 60px;
padding: 0 0 0 10px;
}
.burger-icon {
margin-right: 10px;
}
/* Side Bar */
.sidebar {
padding: 25px 17px 32px 17px;
}
.blackout {
top: 60px;
}
@media (max-width: 1023.98px) {
.navbar-nav {
margin-top: 0;
}
}
nav {
width: 94%;
max-width: var(--sidebar-width);
left: calc(var(--sidebar-width) * -1);
}
@media (max-width: 1023.98px) {
nav {
top: 60px;
}
}
nav ul {
list-style-type: none;
}
nav .nav a, nav .nav a:hover {
text-decoration: none;
cursor: pointer;
display: block;
}
nav a.sidebar-item {
padding: 4px 0 4px 10px;
cursor: pointer;
}
nav a:focus, nav a.sidebar-item:hover, nav a.sidebar-item:focus {
text-decoration: underline;
}
nav a, nav a:hover, nav a:focus {
color: var(--sidebar-item-color) !important;
}
nav a.active, nav a.active:hover, nav a.active:focus {
color: var(--sidebar-active-item-color) !important;
}
.sidebar-item-separator {
margin: 20px 0;
}
#toc ul li a {
padding: 0 0 0 10px;
}
.search {
background: var(--search-bg-color);
border: 1px solid var(--search-border-color);
border-radius: 5px;
position: relative;
margin-block-start: 25px;
}
@media (max-width: 1023.98px) {
.search {
margin-block-start: 0;
margin-block-end: 15px;
}
}
.search > input {
font-size: 0.95em;
color: var(--search-color);
border: 0;
background: none;
padding: 11px 30px 10px 37px;
width: 100%;
}
.search > input:focus {
outline: 0;
}
.search > .search-icon {
font-size: 1.2em;
color: var(--search-searchicon-color);
position: absolute;
top: 9px;
left: 9px;
}
.toc-filter {
background: var(--toc-filter-bg-color);
border: 1px solid var(--toc-filter-border-color);
border-radius: 5px;
position: relative;
}
.toc-filter > input {
font-size: 0.95em;
color: var(--toc-filter-color);
border: 0;
background: none;
padding: 11px 30px 10px 37px;
width: 100%;
}
.toc-filter > input:focus {
outline: 0;
}
.toc-filter > .filter-icon {
font-size: 1.2em;
color: var(--toc-filter-filtericon-color);
position: absolute;
top: 9px;
left: 9px;
}
.toc-filter > .clear-icon {
color: var(--toc-filter-clearicon-color);
position: absolute;
top: 9px;
right: 9px;
cursor: pointer;
}
.toc .nav > li > .expand-stub::before, .toc .nav > li.active > .expand-stub::before
{
width: 8px;
height: 8px;
top: 6px;
left: 6px;
}
#toc ul.level2
{
margin-bottom: 20px;
}
#toc ul.level1 > li > a {
font-weight: 500;
margin-bottom: 10px;
padding: 5px 10px;
}
#toc ul.level1 > li > a, #toc ul.level1 > li > a.active {
background-color: var(--sidebar-level1-item-bg-color) !important;
border-radius: 2px;
}
#toc ul.level1 > li > a:hover, #toc ul.level1 > li > a.active:hover,
#toc ul.level1 > li > a:focus, #toc ul.level1 > li > a.active:focus {
background-color: var(--sidebar-level1-item-hover-bg-color) !important;
text-decoration: none;
}
ul.level2 {
padding-inline-start: 0.7em;
}
ul.level2 .expand-stub {
top: 1px;
}
ul.level2 > li > a, ul.level2 > li > a.sidebar-item {
font-weight: 400;
color: var(--sidebar-item-color);
margin: 4px 0 4px;
}
ul.level3 {
padding-inline-start: 1em;
}
ul.level3 > li > a, ul.level3 > li > a.sidebar-item {
font-size: 1.05em;
color: var(--sidebar-item-color);
margin: 4px 0;
}
ul.level4 {
padding-inline-start: 0;
margin-bottom: 12px;
}
ul.level4 > li > a, ul.level4 > li > a.sidebar-item {
font-size: 1.05em;
color: var(--sidebar-item-color);
margin: 5px 0 5px 10px;
}
/* Breadcrumbs */
.subnav.navbar {
margin: 0 -15px;
}
#breadcrumb {
overflow: scroll;
margin-bottom: 0;
}
#breadcrumb::-webkit-scrollbar {
display: none;
}
#breadcrumb a {
white-space: nowrap;
}
#breadcrumb wbr {
display: none;
}
/* Search Results */
#search-results h1 {
margin-block-start: 0.5em;
}
#search-results .item-title {
font-size: 1.3em;
margin-top: 1.5em;
}
#search-results .item-href {
font-size: 0.85em;
}
#search-results .item-brief {
margin-top: 0.7em;
}
#search-results ul.pagination {
text-align: center;
padding: 10px 0 0 0;
margin-block-start: 40px;
border-top: 1px solid var(--separator-color);
}
#search-results ul.pagination > li {
display: inline-block;
margin: 0 10px;
}
#search-results ul.pagination > li.disabled a, #search-results ul.pagination > li.disabled a:hover {
color: var(--text-color);
cursor: txt;
text-decoration: none;
}
/* Content */
.main-panel {
margin-bottom: 60px;
padding: 20px;
}
@media (min-width: 1024px) {
.main-panel {
margin-bottom: 0;
padding: 20px 40px;
}
}
.pull-right {
margin-top: 70px;
/* Fix unclickable links */
position: relative;
z-index: 1;
}
.divider {
margin-left: 4px;
}
article ul li, article ol li {
margin-bottom: 10px;
}
legend, pre {
padding: 6px;
}
.hljs {
color: var(--code-color);
}
.hljs::-webkit-scrollbar {
height: 6px;
}
.hljs-keyword, .hljs-title, .hljs-built_in {
font-style: normal;
}
p .xref, code {
background-color: var(--ref-bg-color);
color: var(--ref-color);
padding: 2px 3px;
font-family: monospace;
font-size: 0.95em;
border-radius: 6px;
}
span.parametername {
font-family: monospace;
}
.table {
width: auto;
}
.table-responsive {
margin-bottom: 0;
}
table th {
font-size: 14px;
padding: 9px 10px;
}
table td p {
font-weight: 300;
}
table td {
padding: 6px 10px;
}
.footer {
text-align: center;
color: var(--text-color);
padding: 10px;
}
.footer a:hover, .footer a:focus {
text-decoration: underline;
}
.copyright-footer {
font-size: 0.85em;
font-weight: bold;
text-align: center;
margin-block-start: 30px;
}

View File

@ -0,0 +1,38 @@
// Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.
function toggleMenu() {
var sidebar = document.getElementById("sidebar");
var blackout = document.getElementById("blackout");
if (sidebar.style.left === "0px")
{
sidebar.style.left = "-" + sidebar.offsetWidth + "px";
blackout.classList.remove("showThat");
blackout.classList.add("hideThat");
}
else
{
sidebar.style.left = "0px";
blackout.classList.remove("hideThat");
blackout.classList.add("showThat");
}
}
$(function() {
$('table').each(function(a, tbl) {
var currentTableRows = $(tbl).find('tbody tr').length;
$(tbl).find('th').each(function(i) {
var remove = 0;
var currentTable = $(this).parents('table');
var tds = currentTable.find('tr td:nth-child(' + (i + 1) + ')');
tds.each(function(j) { if ($(this).text().trim() === '') remove++; });
if (remove == currentTableRows) {
$(this).hide();
tds.hide();
}
});
});
});

View File

@ -0,0 +1 @@
/*! url - v1.8.6 - 2013-11-22 */window.url=function(){function a(a){return!isNaN(parseFloat(a))&&isFinite(a)}return function(b,c){var d=c||window.location.toString();if(!b)return d;b=b.toString(),"//"===d.substring(0,2)?d="http:"+d:1===d.split("://").length&&(d="http://"+d),c=d.split("/");var e={auth:""},f=c[2].split("@");1===f.length?f=f[0].split(":"):(e.auth=f[0],f=f[1].split(":")),e.protocol=c[0],e.hostname=f[0],e.port=f[1]||("https"===e.protocol.split(":")[0].toLowerCase()?"443":"80"),e.pathname=(c.length>3?"/":"")+c.slice(3,c.length).join("/").split("?")[0].split("#")[0];var g=e.pathname;"/"===g.charAt(g.length-1)&&(g=g.substring(0,g.length-1));var h=e.hostname,i=h.split("."),j=g.split("/");if("hostname"===b)return h;if("domain"===b)return/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/.test(h)?h:i.slice(-2).join(".");if("sub"===b)return i.slice(0,i.length-2).join(".");if("port"===b)return e.port;if("protocol"===b)return e.protocol.split(":")[0];if("auth"===b)return e.auth;if("user"===b)return e.auth.split(":")[0];if("pass"===b)return e.auth.split(":")[1]||"";if("path"===b)return e.pathname;if("."===b.charAt(0)){if(b=b.substring(1),a(b))return b=parseInt(b,10),i[0>b?i.length+b:b-1]||""}else{if(a(b))return b=parseInt(b,10),j[0>b?j.length+b:b]||"";if("file"===b)return j.slice(-1)[0];if("filename"===b)return j.slice(-1)[0].split(".")[0];if("fileext"===b)return j.slice(-1)[0].split(".")[1]||"";if("?"===b.charAt(0)||"#"===b.charAt(0)){var k=d,l=null;if("?"===b.charAt(0)?k=(k.split("?")[1]||"").split("#")[0]:"#"===b.charAt(0)&&(k=k.split("#")[1]||""),!b.charAt(1))return k;b=b.substring(1),k=k.split("&");for(var m=0,n=k.length;n>m;m++)if(l=k[m].split("="),l[0]===b)return l[1]||"";return null}}return""}}(),"undefined"!=typeof jQuery&&jQuery.extend({url:function(a,b){return window.url(a,b)}});

View File

@ -0,0 +1,22 @@
{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
<div id="sidetoggle">
<div>
{{^_disableSideFilter}}
<div class="sidefilter">
<form class="toc-filter">
<i class="bi bi-funnel-fill filter-icon"></i>
<i id="toc_filter_clear" class="bi bi-x-lg clear-icon"></i>
<input type="text" id="toc_filter_input" placeholder="{{__global.tocFilter}}" autocomplete="off" onkeypress="if(event.keyCode==13) {return false;}">
</form>
</div>
{{/_disableSideFilter}}
<div class="sidetoc">
<div class="toc" id="toc">
{{^leaf}}
{{>partials/li}}
{{/leaf}}
</div>
</div>
</div>
</div>

5
docfx_project/toc.yml Normal file
View File

@ -0,0 +1,5 @@
- name: Articles
href: articles/
- name: Api Documentation
href: api/
homepage: api/index.md