diff options
27 files changed, 492 insertions, 3579 deletions
@@ -6,3 +6,4 @@ report.xml *.cid *.iid *.out +.netlify @@ -200,10 +200,10 @@ gen-changelog: docker run -it -v $(shell pwd):/app --workdir /app -e CHANGELOG_GITHUB_TOKEN hairyhenderson/github_changelog_generator \ github_changelog_generator --no-filter-by-milestone --exclude-labels duplicate,question,invalid,wontfix,admin -docs/themes/hugo-material-docs: - git clone https://github.com/digitalcraftsman/hugo-material-docs.git $@ +docs/themes/hugo-theme-relearn: + git clone --depth=1 https://github.com/McShelby/hugo-theme-relearn.git $@ -gen-docs: docs/themes/hugo-material-docs +gen-docs: docs/themes/hugo-theme-relearn cd docs/; hugo docs/content/functions/%.md: docs-src/content/functions/%.yml docs-src/content/functions/func_doc.md.tmpl diff --git a/docs-src/content/functions/func_doc.md.tmpl b/docs-src/content/functions/func_doc.md.tmpl index 36adc712..9c87dd9f 100644 --- a/docs-src/content/functions/func_doc.md.tmpl +++ b/docs-src/content/functions/func_doc.md.tmpl @@ -3,11 +3,11 @@ {{- define "usage" }}### Usage {{- $arguments := index . "arguments" | default coll.Slice }} {{ if has . "rawUsage" }}{{ .rawUsage | strings.TrimSpace }}{{ else }} -```go +``` {{ .name }}{{ range $a := $arguments }} {{template "argName" $a }}{{end}} ``` {{- if (index . "pipeline" | default false) }} -```go +``` {{ $last := (sub (len $arguments) 1) -}} {{ (index $arguments $last).name }} | {{ .name }}{{ range $i, $a := $arguments }}{{if not (eq $i $last)}} {{template "argName" $a }}{{end}}{{end}} ``` diff --git a/docs-src/content/functions/sockaddr.yml b/docs-src/content/functions/sockaddr.yml index f50af477..5992910c 100644 --- a/docs-src/content/functions/sockaddr.yml +++ b/docs-src/content/functions/sockaddr.yml @@ -15,10 +15,15 @@ preamble: | To demonstrate how this can be used, here's an example that lists all of the IPv4 addresses available on the system: - ```console - $ gomplate -i '{{ range (sockaddr.GetAllInterfaces | sockaddr.Include "type" "ipv4") -}} + _in.tmpl:_ + ``` + {{ range (sockaddr.GetAllInterfaces | sockaddr.Include "type" "ipv4") -}} {{ . | sockaddr.Attr "address" }} - {{end}}' + {{end}} + ``` + + ```console + $ gomplate -f in.tmpl 127.0.0.1 10.0.0.8 132.79.79.79 diff --git a/docs/archetypes/default.md b/docs/archetypes/default.md new file mode 100644 index 00000000..00e77bd7 --- /dev/null +++ b/docs/archetypes/default.md @@ -0,0 +1,6 @@ +--- +title: "{{ replace .Name "-" " " | title }}" +date: {{ .Date }} +draft: true +--- + diff --git a/docs/config.toml b/docs/config.toml index 80ab8349..71e691bf 100644 --- a/docs/config.toml +++ b/docs/config.toml @@ -1,36 +1,51 @@ baseURL = "/" languageCode = "en-us" title = "gomplate documentation" -theme = "hugo-material-docs" +theme = "hugo-theme-relearn" googleAnalytics = "UA-82637990-3" [params] + alwaysopen = false + editURL = "https://github.com/hairyhenderson/gomplate/edit/main/docs/content/" author = "hairyhenderson" description = "gomplate documentation" - copyright = "Released under the MIT license" - provider = "GitHub" - repo_url = "https://github.com/hairyhenderson/gomplate" - logo = "images/gomplate-icon.svg" - favicon = "favicon.ico" - custom_css = [ - "stylesheets/search.css", - "stylesheets/custom-palettes.css", - ] - custom_js = [ - "https://code.jquery.com/jquery-3.3.1.min.js", - "https://cdnjs.cloudflare.com/ajax/libs/fuse.js/3.4.4/fuse.min.js", - "https://cdnjs.cloudflare.com/ajax/libs/mark.js/8.11.1/jquery.mark.min.js", - "js/search.js", - "js/faro.js" - ] + showVisitedLinks = false + disableSearch = false + disableSearchHiddenPages = false + disableSeoHiddenPages = false + disableTagHiddenPages = false + disableAssetsBusting = false + disableGeneratorVersion = false + disableInlineCopyToClipBoard = true + disableShortcutsTitle = false + disableLandingPageButton = false + disableLanguageSwitchingButton = false + disableBreadcrumb = false + disableToc = false + disableMathJax = true + disableMermaid = true + disableSwagger = true + disableNextPrev = false + ordersectionsby = "weight" + themeVariantAuto = ["gomplate-light", "gomplate-dark"] + themeVariant = ["auto", "gomplate-light", "gomplate-dark"] + titleSeparator = "-" + collapsibleMenu = true + additionalContentLanguage = [ "en" ] + disableExplicitIndexURLs = true + externalLinkTarget = "_blank" -[params.palette] - primary = "spalding-gray" - accent = "spalding-blue" - -[social] - twitter = "hairyhenderson" - github = "hairyhenderson" +[markup] + [markup.highlight] + guessSyntax = false + noClasses = false [outputs] - home = ["HTML", "RSS", "JSON"] + home = [ "HTML", "RSS", "SEARCH", "SEARCHPAGE"] + +[privacy] + [privacy.googleAnalytics] + disable = false + anonymizeIP = true + respectDoNotTrack = true + useSessionStorage = false diff --git a/docs/content/functions/_index.md b/docs/content/functions/_index.md new file mode 100644 index 00000000..28593190 --- /dev/null +++ b/docs/content/functions/_index.md @@ -0,0 +1,72 @@ +--- +title: Functions +--- + +Almost all of gomplate's utility is provided as _functions._ These are key +words that perform some action. + +For example, the [`base64.Encode`][] function will encode some input string as +a base-64 string: + +``` +The word is {{ base64.Encode "swordfish" }} +``` +renders as: +``` +The word is c3dvcmRmaXNo +``` + +## Built-ins + +Go's [`text/template`][] language provides a number of built-in functions, +operators, and actions that can be used in templates. + +### Built-in functions + +Here is a list of the built-in functions, but see [the documentation](https://golang.org/pkg/text/template/#hdr-Functions) +for full details: + +- `and`, `or`, `not`: Returns boolean AND/OR/NOT of the argument(s). +- `call`: Returns the result of calling a function argument. +- `html`, `js`, `urlquery`: Safely escapes input for inclusion in HTML, JavaScript, and URL query strings. +- `index`: Returns the referenced element of an array/slice, string, or map. See also [Arrays](#arrays) and [Maps](#maps). +- `len`: Returns the length of the argument. +- `print`, `printf`, `println`: Aliases for Go's [`fmt.Print`](https://golang.org/pkg/fmt/#Print), +[`fmt.Printf`](https://golang.org/pkg/fmt/#Printf), and [`fmt.Println`](https://golang.org/pkg/fmt/#Println) +functions. See the [format documentation](https://golang.org/pkg/fmt/#hdr-Printing) +for details on `printf`'s format syntax. + +### Operators + +And the following comparison operators are also supported: + +- `eq`: Equal (`==`) +- `ne`: Not-equal (`!=`) +- `lt`: Less than (`<`) +- `le`: Less than or equal to (`<=`) +- `gt`: Greater than (`>`) +- `ge`: Greater than or equal to (`>=`) + +### Actions + +There are also a few _actions_, which are used for control flow and other purposes. See [the documentation](https://golang.org/pkg/text/template/#hdr-Actions) for details on these: + +- `if`/`else`/`else if`: Conditional control flow. +- `with`/`else`: Conditional execution with assignment. +- `range`: Looping control flow. See discussion in the [Arrays](#arrays) and [Maps](#maps) sections. + - `break`: The innermost `range` loop is ended early, stopping the current iteration and bypassing all remaining iterations. + - `continue`: The current iteration of the innermost `range` loop is stopped, and the loop starts the next iteration. +- `template`: Include the output of a named template. See the [Nested templates](#nested-templates) section for more details, and the [`tmpl`](../functions/tmpl) namespace for more flexible versions of `template`. +- `define`: Define a named nested template. See the [Nested templates](#nested-templates) section for more details. +- `block`: Shorthand for `define` followed immediately by `template`. + +## gomplate functions + +gomplate provides over 200 functions not found in the standard library. These +are grouped into namespaces, and documented on the following pages: + +{{% children depth="3" description="false" %}} + +[`text/template`]: https://golang.org/pkg/text/template/ +[`base64.Encode`]: ../functions/base64#base64-encode +[data sources]: ../datasources/ diff --git a/docs/content/installing.md b/docs/content/installing.md index 144a3805..9b740ef1 100644 --- a/docs/content/installing.md +++ b/docs/content/installing.md @@ -27,7 +27,7 @@ On macOS, you can also install gomplate using [MacPorts](https://www.macports.or $ sudo port install gomplate ``` -## [](https://chocolatey.org/packages/gomplate) Windows with Chocolatey +## Windows with Chocolatey The simplest method for installing gomplate on Windows is to use [`choco`](https://community.chocolatey.org/packages/gomplate): @@ -59,12 +59,11 @@ Of course, there are some drawbacks - any files to be used for [datasources][] must be mounted and any environment variables to be used must be passed through: ```console -$ echo 'My voice is my {{.Env.THING}}. {{(datasource "vault").value}}' \ - | docker run -i -e THING=passport -v /home/me/.vault-token:/root/.vault-token hairyhenderson/gomplate -d vault=vault:///secret/sneakers -f - +$ echo 'My voice is my {{.Env.THING}}. {{(datasource "vault").value}}' | docker run -i -e THING=passport -v /home/me/.vault-token:/root/.vault-token hairyhenderson/gomplate -d vault=vault:///secret/sneakers -f - My voice is my passport. Verify me. ``` -It can be pretty awkward to always type `docker run hairyhenderson/gomplate:stable`, +It can be awkward to always type `docker run hairyhenderson/gomplate:stable`, so this can be made simpler with a shell alias: ```console @@ -145,6 +144,7 @@ $ sh <(curl https://tea.xyz) +gomplate.ca sh $ gomplate --version ... ``` + [releases]: https://github.com/hairyhenderson/gomplate/releases [multi-stage builds]: https://docs.docker.com/develop/develop-images/multistage-build/ [hairyhenderson/gomplate]: https://hub.docker.com/r/hairyhenderson/gomplate/tags/ diff --git a/docs/content/search.md b/docs/content/search.md deleted file mode 100644 index a8bf9610..00000000 --- a/docs/content/search.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: "Search Results" -sitemap: - priority : 0.1 ---- - -## Results for _"<span id="search-string"></span>"_ - -<p> -<em>Showing <span id="search-results-length"></span> results...</em> -</p> - -<div> -<div id="search-results"> -</div> -</div> - -<!-- this template is sucked in by search.js and appended to the search-results div above. So editing here will adjust style --> -<script id="search-result-template" type="text/x-js-template"> - -<h3><a href="${link}">${title}</a></h3> -<cite><a href="${ link }">${link}</a></cite> -<div id="summary-${key}"> - <div class="search-result"> - ${snippet}… - </div> -${ isset tags }<p>Tags: ${tags}</p>${ end } -${ isset categories }<p>Categories: ${categories}</p>${ end } - -</div> -</script> diff --git a/docs/content/syntax.md b/docs/content/syntax.md index 5f2cd36c..f6593a39 100644 --- a/docs/content/syntax.md +++ b/docs/content/syntax.md @@ -244,54 +244,7 @@ Or if you need keys as well: Almost all of gomplate's utility is provided as _functions._ These are key words (like `print` in the previous examples) that perform some action. -For example, the [`base64.Encode`][] function will encode some input string as -a base-64 string: - -``` -The word is {{ base64.Encode "swordfish" }} -``` -renders as: -``` -The word is c3dvcmRmaXNo -``` - -Go's [`text/template`][] language provides a number of built-in functions, -operators, and actions that can be used in templates. - -Here is a list of the built-in functions, but see [the documentation](https://golang.org/pkg/text/template/#hdr-Functions) -for full details: - -- `and`, `or`, `not`: Returns boolean AND/OR/NOT of the argument(s). -- `call`: Returns the result of calling a function argument. -- `html`, `js`, `urlquery`: Safely escapes input for inclusion in HTML, JavaScript, and URL query strings. -- `index`: Returns the referenced element of an array/slice, string, or map. See also [Arrays](#arrays) and [Maps](#maps). -- `len`: Returns the length of the argument. -- `print`, `printf`, `println`: Aliases for Go's [`fmt.Print`](https://golang.org/pkg/fmt/#Print), -[`fmt.Printf`](https://golang.org/pkg/fmt/#Printf), and [`fmt.Println`](https://golang.org/pkg/fmt/#Println) -functions. See the [format documentation](https://golang.org/pkg/fmt/#hdr-Printing) -for details on `printf`'s format syntax. - -And the following comparison operators are also supported: - -- `eq`: Equal (`==`) -- `ne`: Not-equal (`!=`) -- `lt`: Less than (`<`) -- `le`: Less than or equal to (`<=`) -- `gt`: Greater than (`>`) -- `ge`: Greater than or equal to (`>=`) - -There are also a few _actions_, which are used for control flow and other purposes. See [the documentation](https://golang.org/pkg/text/template/#hdr-Actions) for details on these: - -- `if`/`else`/`else if`: Conditional control flow. -- `with`/`else`: Conditional execution with assignment. -- `range`: Looping control flow. See discussion in the [Arrays](#arrays) and [Maps](#maps) sections. - - `break`: The innermost `range` loop is ended early, stopping the current iteration and bypassing all remaining iterations. - - `continue`: The current iteration of the innermost `range` loop is stopped, and the loop starts the next iteration. -- `template`: Include the output of a named template. See the [Nested templates](#nested-templates) section for more details, and the [`tmpl`](../functions/tmpl) namespace for more flexible versions of `template`. -- `define`: Define a named nested template. See the [Nested templates](#nested-templates) section for more details. -- `block`: Shorthand for `define` followed immediately by `template`. - -See also gomplate's functions, defined to the left. +See the [functions documentation](/functions/) for more information. ## The Context diff --git a/docs/layouts/_default/index.json b/docs/layouts/_default/index.json deleted file mode 100644 index c93f8057..00000000 --- a/docs/layouts/_default/index.json +++ /dev/null @@ -1,5 +0,0 @@ -{{- $.Scratch.Add "index" slice -}} -{{- range .Site.RegularPages -}} - {{- $.Scratch.Add "index" (dict "title" .Title "tags" .Params.tags "categories" .Params.categories "contents" .Plain "permalink" .Permalink) -}} -{{- end -}} -{{- $.Scratch.Get "index" | jsonify -}} diff --git a/docs/static/js/faro.js b/docs/layouts/partials/custom-footer.html index 662961a0..27f17922 100644 --- a/docs/static/js/faro.js +++ b/docs/layouts/partials/custom-footer.html @@ -1,8 +1,8 @@ +{{ template "_internal/google_analytics.html" . }} +<script> (function () { var webSdkScript = document.createElement("script"); - webSdkScript.src = "https://unpkg.com/@grafana/faro-web-sdk@^1.0.0/dist/bundle/faro-web-sdk.iife.js"; - webSdkScript.onload = () => { window.GrafanaFaroWebSdk.initializeFaro({ url: "https://faro-collector-prod-us-central-0.grafana.net/collect/d8b5652f5dd57fb1cfec9a1c32970fe0", @@ -33,3 +33,4 @@ // Append the Web-SDK script script tag to the HTML page document.head.appendChild(webSdkScript); })(); +</script> diff --git a/docs/layouts/partials/footer.html b/docs/layouts/partials/footer.html deleted file mode 100644 index 70f391dc..00000000 --- a/docs/layouts/partials/footer.html +++ /dev/null @@ -1,74 +0,0 @@ -{{ if .IsPage }} -{{ if .NextPage | or .PrevPage }} -<nav class="pagination" aria-label="Footer"> - <div class="previous"> - {{ if .NextPage }} - <a href="{{ .NextPage.Permalink }}" title="{{ .NextPage.Title }}"> - <span class="direction"> - Previous - </span> - <div class="page"> - <div class="button button-previous" role="button" aria-label="Previous"> - <i class="icon icon-back"></i> - </div> - <div class="stretch"> - <div class="title"> - {{ .NextPage.Title }} - </div> - </div> - </div> - </a> - {{ end }} - </div> - - <div class="next"> - {{ if .PrevPage }} - <a href="{{ .PrevPage.Permalink }}" title="{{ .PrevPage.Title }}"> - <span class="direction"> - Next - </span> - <div class="page"> - <div class="stretch"> - <div class="title"> - {{ .PrevPage.Title }} - </div> - </div> - <div class="button button-next" role="button" aria-label="Next"> - <i class="icon icon-forward"></i> - </div> - </div> - </a> - {{ end }} - </div> -</nav> -{{ end }} -{{ end }} - -{{ if .IsHome }} -{{ if gt (len .Site.Pages) 2 }} -<nav class="pagination" aria-label="Footer"> - <div class="previous"> - </div> - - {{ $title := (index (.Site.Pages.ByDate) 1).Title }} - {{ $permalink := (index (.Site.Pages.ByDate) 1).Permalink }} - <div class="next"> - <a href="{{ $permalink }}" title="{{ $title }}"> - <span class="direction"> - Next - </span> - <div class="page"> - <div class="stretch"> - <div class="title"> - {{ $title }} - </div> - </div> - <div class="button button-next" role="button" aria-label="Next"> - <i class="icon icon-forward"></i> - </div> - </div> - </a> - </div> -</nav> -{{ end }} -{{ end }} diff --git a/docs/layouts/partials/footer_js.html b/docs/layouts/partials/footer_js.html deleted file mode 100644 index 14a9acd7..00000000 --- a/docs/layouts/partials/footer_js.html +++ /dev/null @@ -1,91 +0,0 @@ - <script> - {{ with .Scratch.Get "repo_id" }} - var base_url = '{{ (printf "%s" $.Site.BaseURL) | safeJS }}'; - var repo_id = '{{ . | safeJS }}'; - {{ else }} - var base_url = ''; - var repo_id = ''; - {{ end }} - </script> - - <script src="{{ "js/application.js" | absURL }}"></script> - {{ range .Site.Params.custom_js }} - <script src="{{ . | absURL }}"></script> - {{ end }} - - <script> - {{ "/* Add headers to scrollspy */" | safeJS }} - var headers = document.getElementsByTagName("h2"); - var scrollspy = document.getElementById('scrollspy'); - - if(scrollspy) { - if(headers.length > 0) { - for(var i = 0; i < headers.length; i++) { - var li = document.createElement("li"); - li.setAttribute("class", "anchor"); - - var a = document.createElement("a"); - a.setAttribute("href", "#" + headers[i].id); - a.setAttribute("title", headers[i].innerHTML); - a.innerHTML = headers[i].innerHTML; - - li.appendChild(a) - scrollspy.appendChild(li); - } - } else { - scrollspy.parentElement.removeChild(scrollspy) - } - - - {{ "/* Add permanent link next to the headers */" | safeJS }} - var headers = document.querySelectorAll("h1, h2, h3, h4, h5, h6"); - - for(var i = 0; i < headers.length; i++) { - var a = document.createElement("a"); - a.setAttribute("class", "headerlink"); - a.setAttribute("href", "#" + headers[i].id); - a.setAttribute("title", "Permanent link") - a.innerHTML = {{ or .Site.Params.permalink "ΒΆ" }}; - headers[i].appendChild(a); - } - } - </script> - - {{ with .Site.GoogleAnalytics }} - <script> - (function(i,s,o,g,r,a,m){ - i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q|| - []).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), - m=s.getElementsByTagName(o)[0];a.async=1;a.src=g; - m.parentNode.insertBefore(a,m) - })(window, document, - 'script', '//www.google-analytics.com/analytics.js', 'ga'); - /* General initialization */ - ga('create', '{{ . }}', 'auto'); - ga('set', 'anonymizeIp', true); - ga('send', 'pageview'); - /* Track outbound links */ - var buttons = document.querySelectorAll('a'); - Array.prototype.map.call(buttons, function(item) { - if (item.host != document.location.host) { - item.addEventListener('click', function() { - var action = item.getAttribute('data-action') || 'follow'; - ga('send', 'event', 'outbound', action, item.href); - }); - } - }); - /* Register handler to log search on blur */ - var query = document.querySelector('.query'); - query.addEventListener('blur', function() { - if (this.value) { - var path = document.location.pathname; - ga('send', 'pageview', path + '?q=' + this.value); - } - }); - </script> - {{ end }} - - <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.8.0/highlight.min.js"></script> - <script>hljs.initHighlightingOnLoad();</script> - </body> -</html> diff --git a/docs/layouts/partials/header.html b/docs/layouts/partials/header.html deleted file mode 100644 index 52e80239..00000000 --- a/docs/layouts/partials/header.html +++ /dev/null @@ -1,48 +0,0 @@ -<nav aria-label="Header"> - <div class="bar default"> - <div class="button button-menu" role="button" aria-label="Menu"> - <label class="toggle-button icon icon-menu" for="toggle-drawer"> - <span></span> - </label> - </div> - <div class="stretch"> - <div class="title"> - {{ .Title }} - </div> - </div> - - {{ with .Site.Social.twitter }} - <div class="button button-twitter" role="button" aria-label="Twitter"> - <a href="https://twitter.com/{{ . }}" title="@{{ . }} on Twitter" target="_blank" class="toggle-button icon icon-twitter"></a> - </div> - {{ end }} - - {{ with .Site.Social.github }} - <div class="button button-github" role="button" aria-label="GitHub"> - <a href="https://github.com/{{ . }}" title="@{{ . }} on GitHub" target="_blank" class="toggle-button icon icon-github"></a> - </div> - {{ end }} - - <div class="button button-search" role="button" aria-label="Search"> - <label class="toggle-button icon icon-search" title="Search" for="toggle-search"></label> - </div> - </div> - <div class="bar search"> - <div class="button button-close" role="button" aria-label="Close"> - <label class="toggle-button icon icon-back" for="toggle-search"></label> - </div> - <div class="stretch"> - <div class="field"> - <form action="{{ "search" | absURL }}"> - <input class="query" type="text" - placeholder="Search..." autocapitalize="off" - autocorrect="off" autocomplete="off" spellcheck - id="search-query" name="s"/> - </form> - </div> - </div> - <div class="button button-reset" role="button" aria-label="Search"> - <button class="toggle-button icon icon-close" id="reset-search"></button> - </div> - </div> -</nav> diff --git a/docs/layouts/partials/logo.html b/docs/layouts/partials/logo.html new file mode 100644 index 00000000..8ff1ac29 --- /dev/null +++ b/docs/layouts/partials/logo.html @@ -0,0 +1,34 @@ +<a id="logo" href="{{ partial "relLangPrettyUglyURL.hugo" (dict "to" .Site.Home) }}"> + +<svg xmlns="http://www.w3.org/2000/svg" version="1.1" + width="240px" height="64px" + viewBox="0 0 512 128"> + <defs> + <style> + @font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 300; + src: url("data:application/font-woff2;charset=utf-8;base64,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"); + } + text { + font-size: 100px; + } + .logo { + font-family:'Source Sans Pro',sans-serif; + font-weight: 300; + text-anchor: start; + fill: rgba(60, 64, 93, 0.75); + } + .icon { + font-family:'Source Sans Pro',sans-serif; + font-weight: 300; + text-anchor: end; + fill: rgba(0, 0, 0, 0.5); + } + </style> + </defs> + <text x="0px" y="92px" class="logo">gomplate</text> + <text x="456px" y="92px" class="icon">}}</text> +</svg> +</a> diff --git a/docs/layouts/partials/menu-footer.html b/docs/layouts/partials/menu-footer.html new file mode 100644 index 00000000..afd1fdeb --- /dev/null +++ b/docs/layouts/partials/menu-footer.html @@ -0,0 +1,20 @@ +<style> + #footer { + font-size: .75rem; + height: 6.25rem; + margin-left: auto; + margin-right: auto; + padding: 1rem 1rem; + text-align: center; + min-width: 14.375rem; + max-width: 18.75rem; + } + #footer p { + margin: 0; + } +</style> + +<a class="github-button" href="https://github.com/hairyhenderson/gomplate/releases/latest" data-icon="octicon-cloud-download" aria-label="Latest release">Latest</a> +<a class="github-button" href="https://github.com/hairyhenderson/gomplate" data-icon="octicon-star" data-show-count="true" aria-label="Star hairyhenderson/gomplate on GitHub">Star</a> + +<script async src="{{"js/buttons.js" | relURL}}{{ if not .Site.Params.disableAssetsBusting }}?{{ now.Unix }}{{ end }}"></script> diff --git a/docs/static/css/chroma-gomplate-dark.css b/docs/static/css/chroma-gomplate-dark.css new file mode 100644 index 00000000..24168d48 --- /dev/null +++ b/docs/static/css/chroma-gomplate-dark.css @@ -0,0 +1,86 @@ +/* Background */ .bg { color: #c9d1d9; background-color: #0d1117; } +/* PreWrapper */ .chroma { color: #c9d1d9; background-color: #0d1117; } +/* Other */ .chroma .x { } +/* Error */ .chroma .err { color: #f85149 } +/* CodeLine */ .chroma .cl { } +/* LineLink */ .chroma .lnlinks { outline: none; text-decoration: none; color: inherit } +/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; } +/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; } +/* LineHighlight */ .chroma .hl { background-color: #ffffcc } +/* LineNumbersTable */ .chroma .lnt { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #64686c } +/* LineNumbers */ .chroma .ln { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #6e7681 } +/* Line */ .chroma .line { display: flex; } +/* Keyword */ .chroma .k { color: #ff7b72 } +/* KeywordConstant */ .chroma .kc { color: #79c0ff } +/* KeywordDeclaration */ .chroma .kd { color: #ff7b72 } +/* KeywordNamespace */ .chroma .kn { color: #ff7b72 } +/* KeywordPseudo */ .chroma .kp { color: #79c0ff } +/* KeywordReserved */ .chroma .kr { color: #ff7b72 } +/* KeywordType */ .chroma .kt { color: #ff7b72 } +/* Name */ .chroma .n { } +/* NameAttribute */ .chroma .na { } +/* NameBuiltin */ .chroma .nb { } +/* NameBuiltinPseudo */ .chroma .bp { } +/* NameClass */ .chroma .nc { color: #f0883e; font-weight: bold } +/* NameConstant */ .chroma .no { color: #79c0ff; font-weight: bold } +/* NameDecorator */ .chroma .nd { color: #d2a8ff; font-weight: bold } +/* NameEntity */ .chroma .ni { color: #ffa657 } +/* NameException */ .chroma .ne { color: #f0883e; font-weight: bold } +/* NameFunction */ .chroma .nf { color: #d2a8ff; font-weight: bold } +/* NameFunctionMagic */ .chroma .fm { } +/* NameLabel */ .chroma .nl { color: #79c0ff; font-weight: bold } +/* NameNamespace */ .chroma .nn { color: #ff7b72 } +/* NameOther */ .chroma .nx { } +/* NameProperty */ .chroma .py { color: #79c0ff } +/* NameTag */ .chroma .nt { color: #7ee787 } +/* NameVariable */ .chroma .nv { color: #79c0ff } +/* NameVariableClass */ .chroma .vc { } +/* NameVariableGlobal */ .chroma .vg { } +/* NameVariableInstance */ .chroma .vi { } +/* NameVariableMagic */ .chroma .vm { } +/* Literal */ .chroma .l { color: #a5d6ff } +/* LiteralDate */ .chroma .ld { color: #79c0ff } +/* LiteralString */ .chroma .s { color: #a5d6ff } +/* LiteralStringAffix */ .chroma .sa { color: #79c0ff } +/* LiteralStringBacktick */ .chroma .sb { color: #a5d6ff } +/* LiteralStringChar */ .chroma .sc { color: #a5d6ff } +/* LiteralStringDelimiter */ .chroma .dl { color: #79c0ff } +/* LiteralStringDoc */ .chroma .sd { color: #a5d6ff } +/* LiteralStringDouble */ .chroma .s2 { color: #a5d6ff } +/* LiteralStringEscape */ .chroma .se { color: #79c0ff } +/* LiteralStringHeredoc */ .chroma .sh { color: #79c0ff } +/* LiteralStringInterpol */ .chroma .si { color: #a5d6ff } +/* LiteralStringOther */ .chroma .sx { color: #a5d6ff } +/* LiteralStringRegex */ .chroma .sr { color: #79c0ff } +/* LiteralStringSingle */ .chroma .s1 { color: #a5d6ff } +/* LiteralStringSymbol */ .chroma .ss { color: #a5d6ff } +/* LiteralNumber */ .chroma .m { color: #a5d6ff } +/* LiteralNumberBin */ .chroma .mb { color: #a5d6ff } +/* LiteralNumberFloat */ .chroma .mf { color: #a5d6ff } +/* LiteralNumberHex */ .chroma .mh { color: #a5d6ff } +/* LiteralNumberInteger */ .chroma .mi { color: #a5d6ff } +/* LiteralNumberIntegerLong */ .chroma .il { color: #a5d6ff } +/* LiteralNumberOct */ .chroma .mo { color: #a5d6ff } +/* Operator */ .chroma .o { color: #ff7b72; font-weight: bold } +/* OperatorWord */ .chroma .ow { color: #ff7b72; font-weight: bold } +/* Punctuation */ .chroma .p { } +/* Comment */ .chroma .c { color: #8b949e; font-style: italic } +/* CommentHashbang */ .chroma .ch { color: #8b949e; font-style: italic } +/* CommentMultiline */ .chroma .cm { color: #8b949e; font-style: italic } +/* CommentSingle */ .chroma .c1 { color: #8b949e; font-style: italic } +/* CommentSpecial */ .chroma .cs { color: #8b949e; font-weight: bold; font-style: italic } +/* CommentPreproc */ .chroma .cp { color: #8b949e; font-weight: bold; font-style: italic } +/* CommentPreprocFile */ .chroma .cpf { color: #8b949e; font-weight: bold; font-style: italic } +/* Generic */ .chroma .g { } +/* GenericDeleted */ .chroma .gd { color: #ffa198; background-color: #490202 } +/* GenericEmph */ .chroma .ge { font-style: italic } +/* GenericError */ .chroma .gr { color: #ffa198 } +/* GenericHeading */ .chroma .gh { color: #79c0ff; font-weight: bold } +/* GenericInserted */ .chroma .gi { color: #56d364; background-color: #0f5323 } +/* GenericOutput */ .chroma .go { color: #8b949e } +/* GenericPrompt */ .chroma .gp { color: #8b949e } +/* GenericStrong */ .chroma .gs { font-weight: bold } +/* GenericSubheading */ .chroma .gu { color: #79c0ff } +/* GenericTraceback */ .chroma .gt { color: #ff7b72 } +/* GenericUnderline */ .chroma .gl { text-decoration: underline } +/* TextWhitespace */ .chroma .w { color: #6e7681 } diff --git a/docs/static/css/chroma-gomplate-light.css b/docs/static/css/chroma-gomplate-light.css new file mode 100644 index 00000000..9018df90 --- /dev/null +++ b/docs/static/css/chroma-gomplate-light.css @@ -0,0 +1,86 @@ +/* Background */ .bg { background-color: #ffffff; } +/* PreWrapper */ .chroma { background-color: #ffffff; } +/* Other */ .chroma .x { } +/* Error */ .chroma .err { color: #a61717; background-color: #e3d2d2 } +/* CodeLine */ .chroma .cl { } +/* LineLink */ .chroma .lnlinks { outline: none; text-decoration: none; color: inherit } +/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; } +/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; } +/* LineHighlight */ .chroma .hl { background-color: #ffffcc } +/* LineNumbersTable */ .chroma .lnt { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f } +/* LineNumbers */ .chroma .ln { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f } +/* Line */ .chroma .line { display: flex; } +/* Keyword */ .chroma .k { color: #000000; font-weight: bold } +/* KeywordConstant */ .chroma .kc { color: #000000; font-weight: bold } +/* KeywordDeclaration */ .chroma .kd { color: #000000; font-weight: bold } +/* KeywordNamespace */ .chroma .kn { color: #000000; font-weight: bold } +/* KeywordPseudo */ .chroma .kp { color: #000000; font-weight: bold } +/* KeywordReserved */ .chroma .kr { color: #000000; font-weight: bold } +/* KeywordType */ .chroma .kt { color: #445588; font-weight: bold } +/* Name */ .chroma .n { } +/* NameAttribute */ .chroma .na { color: #008080 } +/* NameBuiltin */ .chroma .nb { color: #0086b3 } +/* NameBuiltinPseudo */ .chroma .bp { color: #999999 } +/* NameClass */ .chroma .nc { color: #445588; font-weight: bold } +/* NameConstant */ .chroma .no { color: #008080 } +/* NameDecorator */ .chroma .nd { color: #3c5d5d; font-weight: bold } +/* NameEntity */ .chroma .ni { color: #800080 } +/* NameException */ .chroma .ne { color: #990000; font-weight: bold } +/* NameFunction */ .chroma .nf { color: #990000; font-weight: bold } +/* NameFunctionMagic */ .chroma .fm { } +/* NameLabel */ .chroma .nl { color: #990000; font-weight: bold } +/* NameNamespace */ .chroma .nn { color: #555555 } +/* NameOther */ .chroma .nx { } +/* NameProperty */ .chroma .py { } +/* NameTag */ .chroma .nt { color: #000080 } +/* NameVariable */ .chroma .nv { color: #008080 } +/* NameVariableClass */ .chroma .vc { color: #008080 } +/* NameVariableGlobal */ .chroma .vg { color: #008080 } +/* NameVariableInstance */ .chroma .vi { color: #008080 } +/* NameVariableMagic */ .chroma .vm { } +/* Literal */ .chroma .l { } +/* LiteralDate */ .chroma .ld { } +/* LiteralString */ .chroma .s { color: #dd1144 } +/* LiteralStringAffix */ .chroma .sa { color: #dd1144 } +/* LiteralStringBacktick */ .chroma .sb { color: #dd1144 } +/* LiteralStringChar */ .chroma .sc { color: #dd1144 } +/* LiteralStringDelimiter */ .chroma .dl { color: #dd1144 } +/* LiteralStringDoc */ .chroma .sd { color: #dd1144 } +/* LiteralStringDouble */ .chroma .s2 { color: #dd1144 } +/* LiteralStringEscape */ .chroma .se { color: #dd1144 } +/* LiteralStringHeredoc */ .chroma .sh { color: #dd1144 } +/* LiteralStringInterpol */ .chroma .si { color: #dd1144 } +/* LiteralStringOther */ .chroma .sx { color: #dd1144 } +/* LiteralStringRegex */ .chroma .sr { color: #009926 } +/* LiteralStringSingle */ .chroma .s1 { color: #dd1144 } +/* LiteralStringSymbol */ .chroma .ss { color: #990073 } +/* LiteralNumber */ .chroma .m { color: #009999 } +/* LiteralNumberBin */ .chroma .mb { color: #009999 } +/* LiteralNumberFloat */ .chroma .mf { color: #009999 } +/* LiteralNumberHex */ .chroma .mh { color: #009999 } +/* LiteralNumberInteger */ .chroma .mi { color: #009999 } +/* LiteralNumberIntegerLong */ .chroma .il { color: #009999 } +/* LiteralNumberOct */ .chroma .mo { color: #009999 } +/* Operator */ .chroma .o { color: #000000; font-weight: bold } +/* OperatorWord */ .chroma .ow { color: #000000; font-weight: bold } +/* Punctuation */ .chroma .p { } +/* Comment */ .chroma .c { color: #999988; font-style: italic } +/* CommentHashbang */ .chroma .ch { color: #999988; font-style: italic } +/* CommentMultiline */ .chroma .cm { color: #999988; font-style: italic } +/* CommentSingle */ .chroma .c1 { color: #999988; font-style: italic } +/* CommentSpecial */ .chroma .cs { color: #999999; font-weight: bold; font-style: italic } +/* CommentPreproc */ .chroma .cp { color: #999999; font-weight: bold; font-style: italic } +/* CommentPreprocFile */ .chroma .cpf { color: #999999; font-weight: bold; font-style: italic } +/* Generic */ .chroma .g { } +/* GenericDeleted */ .chroma .gd { color: #000000; background-color: #ffdddd } +/* GenericEmph */ .chroma .ge { color: #000000; font-style: italic } +/* GenericError */ .chroma .gr { color: #aa0000 } +/* GenericHeading */ .chroma .gh { color: #999999 } +/* GenericInserted */ .chroma .gi { color: #000000; background-color: #ddffdd } +/* GenericOutput */ .chroma .go { color: #888888 } +/* GenericPrompt */ .chroma .gp { color: #555555 } +/* GenericStrong */ .chroma .gs { font-weight: bold } +/* GenericSubheading */ .chroma .gu { color: #aaaaaa } +/* GenericTraceback */ .chroma .gt { color: #aa0000 } +/* GenericUnderline */ .chroma .gl { text-decoration: underline } +/* TextWhitespace */ .chroma .w { color: #bbbbbb } diff --git a/docs/static/css/theme-gomplate-dark.css b/docs/static/css/theme-gomplate-dark.css new file mode 100644 index 00000000..8864a2a1 --- /dev/null +++ b/docs/static/css/theme-gomplate-dark.css @@ -0,0 +1,59 @@ +@import "chroma-gomplate-dark.css"; + +/* my-custom-variant */ +:root { + --PRIMARY-color: rgb( 145, 132, 121); /* brand primary color */ + --SECONDARY-color: rgb( 120, 133, 145 ); /* brand secondary color */ + --ACCENT-color: #bb8550; /* brand accent color, used for search highlights */ + + --MAIN-LINK-HOVER-color: #93b0ff; /* hoverd link color of content */ + --MAIN-BG-color: #202020; /* background color of content */ + --MAIN-TEXT-color: #e0e0e0; /* text color of content and h1 titles */ + --MAIN-TITLES-TEXT-color: #ffffff; /* text color of h2-h6 titles and transparent box titles */ + + --CODE-BLOCK-color: #f8f8f8; /* fallback text color of block code; should be adjusted to your selected chroma style */ + --CODE-BLOCK-BG-color: rgb(43, 43, 43, 0.25); /* fallback background color of block code; should be adjusted to your selected chroma style */ + --CODE-INLINE-color: rgb( 145, 132, 121 ); /* text color of inline code */ + --CODE-INLINE-BG-color: rgba(45, 45, 45, 0.25); /* background color of inline code */ + --CODE-INLINE-BORDER-color: rgba( 0, 0, 0, 0 ); /* border color of inline code */ + + --BROWSER-theme: dark; /* name of the theme for browser scrollbars of the main section */ + --MERMAID-theme: dark; /* name of the default Mermaid theme for this variant, can be overridden in config.toml */ + --SWAGGER-theme: dark; /* name of the default Swagger theme for this variant, can be overridden in config.toml */ + + --MENU-HOME-LINK-color: rgba(0,0,0,0.5); /* home button color if configured */ + --MENU-HOME-LINK-HOVER-color: rgba(0,0,0,0.25); /* hoverd home button color if configured */ + + --MENU-SEARCH-color: rgba(224, 224, 224, 1.0); /* text and icon color of search box */ + --MENU-SEARCH-BG-color: rgba(50, 50, 50, 0.8); /* background color of search box */ + --MENU-SEARCH-BORDER-color: rgba(255,255,255,0.25); /* border color of search box */ + + --MENU-SECTIONS-BG-color: #2b2b2b; /* background of the menu; this is NOT just a color value but can be a complete CSS background definition including gradients, etc. */ + --MENU-SECTIONS-ACTIVE-BG-color: #323232; /* background color of the active menu section */ + --MENU-SECTIONS-LINK-color: #bababa; /* link color of menu topics */ + --MENU-SECTIONS-LINK-HOVER-color: #ffffff; /* hoverd link color of menu topics */ + --MENU-SECTION-ACTIVE-CATEGORY-color: rgb( 145, 132, 121 ); /* text color of the displayed menu topic */ + --MENU-SECTION-HR-color: #606060; /* separator color of menu footer */ + + --BOX-CAPTION-color: rgba( 240, 240, 240, 1 ); /* text color of colored box titles */ + --BOX-BG-color: rgba( 20, 20, 20, 1 ); /* background color of colored boxes */ + --BOX-TEXT-color: #e0e0e0; /* text color of colored box content */ + --BOX-BLUE-color: rgb( 120, 133, 145 ); /* background color of blue boxes */ + --BOX-ORANGE-color: #bb8550; /* background color of orange boxes */ +} + +/* I use inline code in some titles, but I don't want it to be rendered like + it is elsewhere */ +h2 code { + font-size: unset; + font-weight: unset; + color: unset; + background-color: unset; +} + +nav code { + font-size: unset; + font-weight: unset; + color: unset; + background-color: unset; +} diff --git a/docs/static/css/theme-gomplate-light.css b/docs/static/css/theme-gomplate-light.css new file mode 100644 index 00000000..fb15e2b1 --- /dev/null +++ b/docs/static/css/theme-gomplate-light.css @@ -0,0 +1,61 @@ +@import "chroma-gomplate-light.css"; + +:root { + --PRIMARY-color: rgb( 145, 132, 121 ); /* brand primary color */ + --SECONDARY-color: rgb( 120, 133, 145 ); /* brand secondary color */ + --ACCENT-color: #bb8550; /* brand accent color, used for search highlights */ + + --MAIN-LINK-HOVER-color: #202891; /* hoverd link color of content */ + --MAIN-BG-color: #ffffff; /* background color of content */ + --MAIN-TEXT-color: #101010; /* text color of content and h1 titles */ + --MAIN-TITLES-TEXT-color: #4a4a4a; /* text color of h2-h6 titles and transparent box titles */ + + --CODE-BLOCK-color: #000000; /* fallback text color of block code; should be adjusted to your selected chroma style */ + --CODE-BLOCK-BG-color: #f8f8f8; /* fallback background color of block code; should be adjusted to your selected chroma style */ + --CODE-BLOCK-BORDER-color: #d8d8d8; /* border color of block code */ + + --CODE-INLINE-color: #5e5e5e; /* text color of inline code */ + --CODE-INLINE-BG-color: #fffae9; /* background color of inline code */ + --CODE-INLINE-BORDER-color: rgb( 0, 0, 0, 0 ); /* border color of inline code */ + + --BROWSER-theme: light; /* name of the theme for browser scrollbars of the main section */ + --MERMAID-theme: default; /* name of the default Mermaid theme for this variant, can be overridden in config.toml */ + --SWAGGER-theme: light; /* name of the default Swagger theme for this variant, can be overridden in config.toml */ + + --MENU-HOME-LINK-color: #404040; /* home button color if configured */ + --MENU-HOME-LINK-HOVER-color: #000000; /* hoverd home button color if configured */ + + --MENU-SEARCH-color: #404040; /* text and icon color of search box */ + --MENU-SEARCH-BG-color: rgba(255,255,255, 0.2); /* background color of search box */ + --MENU-SEARCH-BORDER-color: transparent; /* border color of search box */ + + --MENU-SECTIONS-BG-color: #f4f4f4; /* background of the menu; this is NOT just a color value but can be a complete CSS background definition including gradients, etc. */ + --MENU-SECTIONS-ACTIVE-BG-color: rgba( 255, 255, 255, .2 ); /* background color of the active menu section */ + --MENU-SECTIONS-LINK-color: #323232; /* link color of menu topics */ + --MENU-SECTIONS-LINK-HOVER-color: #rgba( 255, 255, 255, .2 ); /* hoverd link color of menu topics */ + --MENU-SECTION-ACTIVE-CATEGORY-color: #323232; /* text color of the displayed menu topic */ + --MENU-SECTION-HR-color: #606060; /* separator color of menu footer */ + + --BOX-CAPTION-color: rgba( 255, 255, 255, 1 ); /* text color of colored box titles */ + --BOX-BG-color: rgba( 255, 255, 255, .833 ); /* background color of colored boxes */ + --BOX-TEXT-color: rgba( 16, 16, 16, 1 ); /* text color of colored box content */ + --BOX-BLUE-color: rgb( 120, 133, 145 ); /* background color of blue boxes */ + --BOX-ORANGE-color: #bb8550; /* background color of orange boxes */ +} + +/* I use inline code in some titles, but I don't want it to be rendered like + it is elsewhere */ + h2 code { + font-size: unset; + font-weight: unset; + color: unset; + background-color: unset; + } + + nav code { + font-size: unset; + font-weight: unset; + color: unset; + background-color: unset; + } +
\ No newline at end of file diff --git a/docs/static/js/application.js b/docs/static/js/application.js deleted file mode 100644 index 6245bb4f..00000000 --- a/docs/static/js/application.js +++ /dev/null @@ -1,1577 +0,0 @@ -function pegasus(t, e) { - return ( - (e = new XMLHttpRequest()), - e.open("GET", t), - (t = []), - (e.onreadystatechange = e.then = function (n, o, i, r) { - if ( - (n && n.call && (t = [, n, o]), - 4 == e.readyState && (i = t[0 | (e.status / 200)])) - ) { - try { - r = JSON.parse(e.responseText); - } catch (s) { - r = null; - } - i(r, e); - } - }), - e.send(), - e - ); -} -if ( - ("document" in self && - ("classList" in document.createElement("_") - ? !(function () { - "use strict"; - var t = document.createElement("_"); - if ((t.classList.add("c1", "c2"), !t.classList.contains("c2"))) { - var e = function (t) { - var e = DOMTokenList.prototype[t]; - DOMTokenList.prototype[t] = function (t) { - var n, - o = arguments.length; - for (n = 0; o > n; n++) (t = arguments[n]), e.call(this, t); - }; - }; - e("add"), e("remove"); - } - if ((t.classList.toggle("c3", !1), t.classList.contains("c3"))) { - var n = DOMTokenList.prototype.toggle; - DOMTokenList.prototype.toggle = function (t, e) { - return 1 in arguments && !this.contains(t) == !e - ? e - : n.call(this, t); - }; - } - t = null; - })() - : !(function (t) { - "use strict"; - if ("Element" in t) { - var e = "classList", - n = "prototype", - o = t.Element[n], - i = Object, - r = - String[n].trim || - function () { - return this.replace(/^\s+|\s+$/g, ""); - }, - s = - Array[n].indexOf || - function (t) { - for (var e = 0, n = this.length; n > e; e++) - if (e in this && this[e] === t) return e; - return -1; - }, - a = function (t, e) { - (this.name = t), - (this.code = DOMException[t]), - (this.message = e); - }, - c = function (t, e) { - if ("" === e) - throw new a( - "SYNTAX_ERR", - "An invalid or illegal string was specified" - ); - if (/\s/.test(e)) - throw new a( - "INVALID_CHARACTER_ERR", - "String contains an invalid character" - ); - return s.call(t, e); - }, - l = function (t) { - for ( - var e = r.call(t.getAttribute("class") || ""), - n = e ? e.split(/\s+/) : [], - o = 0, - i = n.length; - i > o; - o++ - ) - this.push(n[o]); - this._updateClassName = function () { - t.setAttribute("class", this.toString()); - }; - }, - u = (l[n] = []), - d = function () { - return new l(this); - }; - if ( - ((a[n] = Error[n]), - (u.item = function (t) { - return this[t] || null; - }), - (u.contains = function (t) { - return (t += ""), -1 !== c(this, t); - }), - (u.add = function () { - var t, - e = arguments, - n = 0, - o = e.length, - i = !1; - do - (t = e[n] + ""), - -1 === c(this, t) && (this.push(t), (i = !0)); - while (++n < o); - i && this._updateClassName(); - }), - (u.remove = function () { - var t, - e, - n = arguments, - o = 0, - i = n.length, - r = !1; - do - for (t = n[o] + "", e = c(this, t); -1 !== e;) - this.splice(e, 1), (r = !0), (e = c(this, t)); - while (++o < i); - r && this._updateClassName(); - }), - (u.toggle = function (t, e) { - t += ""; - var n = this.contains(t), - o = n ? e !== !0 && "remove" : e !== !1 && "add"; - return o && this[o](t), e === !0 || e === !1 ? e : !n; - }), - (u.toString = function () { - return this.join(" "); - }), - i.defineProperty) - ) { - var h = { get: d, enumerable: !0, configurable: !0 }; - try { - i.defineProperty(o, e, h); - } catch (f) { - -2146823252 === f.number && - ((h.enumerable = !1), i.defineProperty(o, e, h)); - } - } else i[n].__defineGetter__ && o.__defineGetter__(e, d); - } - })(self)), - (function () { - "use strict"; - function t(e, o) { - function i(t, e) { - return function () { - return t.apply(e, arguments); - }; - } - var r; - if ( - ((o = o || {}), - (this.trackingClick = !1), - (this.trackingClickStart = 0), - (this.targetElement = null), - (this.touchStartX = 0), - (this.touchStartY = 0), - (this.lastTouchIdentifier = 0), - (this.touchBoundary = o.touchBoundary || 10), - (this.layer = e), - (this.tapDelay = o.tapDelay || 200), - (this.tapTimeout = o.tapTimeout || 700), - !t.notNeeded(e)) - ) { - for ( - var s = [ - "onMouse", - "onClick", - "onTouchStart", - "onTouchMove", - "onTouchEnd", - "onTouchCancel" - ], - a = this, - c = 0, - l = s.length; - l > c; - c++ - ) - a[s[c]] = i(a[s[c]], a); - n && - (e.addEventListener("mouseover", this.onMouse, !0), - e.addEventListener("mousedown", this.onMouse, !0), - e.addEventListener("mouseup", this.onMouse, !0)), - e.addEventListener("click", this.onClick, !0), - e.addEventListener("touchstart", this.onTouchStart, !1), - e.addEventListener("touchmove", this.onTouchMove, !1), - e.addEventListener("touchend", this.onTouchEnd, !1), - e.addEventListener("touchcancel", this.onTouchCancel, !1), - Event.prototype.stopImmediatePropagation || - ((e.removeEventListener = function (t, n, o) { - var i = Node.prototype.removeEventListener; - "click" === t - ? i.call(e, t, n.hijacked || n, o) - : i.call(e, t, n, o); - }), - (e.addEventListener = function (t, n, o) { - var i = Node.prototype.addEventListener; - "click" === t - ? i.call( - e, - t, - n.hijacked || - (n.hijacked = function (t) { - t.propagationStopped || n(t); - }), - o - ) - : i.call(e, t, n, o); - })), - "function" == typeof e.onclick && - ((r = e.onclick), - e.addEventListener( - "click", - function (t) { - r(t); - }, - !1 - ), - (e.onclick = null)); - } - } - var e = navigator.userAgent.indexOf("Windows Phone") >= 0, - n = navigator.userAgent.indexOf("Android") > 0 && !e, - o = /iP(ad|hone|od)/.test(navigator.userAgent) && !e, - i = o && /OS 4_\d(_\d)?/.test(navigator.userAgent), - r = o && /OS [6-7]_\d/.test(navigator.userAgent), - s = navigator.userAgent.indexOf("BB10") > 0; - (t.prototype.needsClick = function (t) { - switch (t.nodeName.toLowerCase()) { - case "button": - case "select": - case "textarea": - if (t.disabled) return !0; - break; - case "input": - if ((o && "file" === t.type) || t.disabled) return !0; - break; - case "label": - case "iframe": - case "video": - return !0; - } - return /\bneedsclick\b/.test(t.className); - }), - (t.prototype.needsFocus = function (t) { - switch (t.nodeName.toLowerCase()) { - case "textarea": - return !0; - case "select": - return !n; - case "input": - switch (t.type) { - case "button": - case "checkbox": - case "file": - case "image": - case "radio": - case "submit": - return !1; - } - return !t.disabled && !t.readOnly; - default: - return /\bneedsfocus\b/.test(t.className); - } - }), - (t.prototype.sendClick = function (t, e) { - var n, o; - document.activeElement && - document.activeElement !== t && - document.activeElement.blur(), - (o = e.changedTouches[0]), - (n = document.createEvent("MouseEvents")), - n.initMouseEvent( - this.determineEventType(t), - !0, - !0, - window, - 1, - o.screenX, - o.screenY, - o.clientX, - o.clientY, - !1, - !1, - !1, - !1, - 0, - null - ), - (n.forwardedTouchEvent = !0), - t.dispatchEvent(n); - }), - (t.prototype.determineEventType = function (t) { - return n && "select" === t.tagName.toLowerCase() - ? "mousedown" - : "click"; - }), - (t.prototype.focus = function (t) { - var e; - o && - t.setSelectionRange && - 0 !== t.type.indexOf("date") && - "time" !== t.type && - "month" !== t.type - ? ((e = t.value.length), t.setSelectionRange(e, e)) - : t.focus(); - }), - (t.prototype.updateScrollParent = function (t) { - var e, n; - if (((e = t.fastClickScrollParent), !e || !e.contains(t))) { - n = t; - do { - if (n.scrollHeight > n.offsetHeight) { - (e = n), (t.fastClickScrollParent = n); - break; - } - n = n.parentElement; - } while (n); - } - e && (e.fastClickLastScrollTop = e.scrollTop); - }), - (t.prototype.getTargetElementFromEventTarget = function (t) { - return t.nodeType === Node.TEXT_NODE ? t.parentNode : t; - }), - (t.prototype.onTouchStart = function (t) { - var e, n, r; - if (t.targetTouches.length > 1) return !0; - if ( - ((e = this.getTargetElementFromEventTarget(t.target)), - (n = t.targetTouches[0]), - o) - ) { - if (((r = window.getSelection()), r.rangeCount && !r.isCollapsed)) - return !0; - if (!i) { - if (n.identifier && n.identifier === this.lastTouchIdentifier) - return t.preventDefault(), !1; - (this.lastTouchIdentifier = n.identifier), - this.updateScrollParent(e); - } - } - return ( - (this.trackingClick = !0), - (this.trackingClickStart = t.timeStamp), - (this.targetElement = e), - (this.touchStartX = n.pageX), - (this.touchStartY = n.pageY), - t.timeStamp - this.lastClickTime < this.tapDelay && - t.preventDefault(), - !0 - ); - }), - (t.prototype.touchHasMoved = function (t) { - var e = t.changedTouches[0], - n = this.touchBoundary; - return Math.abs(e.pageX - this.touchStartX) > n || - Math.abs(e.pageY - this.touchStartY) > n - ? !0 - : !1; - }), - (t.prototype.onTouchMove = function (t) { - return this.trackingClick - ? ((this.targetElement !== - this.getTargetElementFromEventTarget(t.target) || - this.touchHasMoved(t)) && - ((this.trackingClick = !1), (this.targetElement = null)), - !0) - : !0; - }), - (t.prototype.findControl = function (t) { - return void 0 !== t.control - ? t.control - : t.htmlFor - ? document.getElementById(t.htmlFor) - : t.querySelector( - "button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea" - ); - }), - (t.prototype.onTouchEnd = function (t) { - var e, - s, - a, - c, - l, - u = this.targetElement; - if (!this.trackingClick) return !0; - if (t.timeStamp - this.lastClickTime < this.tapDelay) - return (this.cancelNextClick = !0), !0; - if (t.timeStamp - this.trackingClickStart > this.tapTimeout) return !0; - if ( - ((this.cancelNextClick = !1), - (this.lastClickTime = t.timeStamp), - (s = this.trackingClickStart), - (this.trackingClick = !1), - (this.trackingClickStart = 0), - r && - ((l = t.changedTouches[0]), - (u = - document.elementFromPoint( - l.pageX - window.pageXOffset, - l.pageY - window.pageYOffset - ) || u), - (u.fastClickScrollParent = this.targetElement.fastClickScrollParent)), - (a = u.tagName.toLowerCase()), - "label" === a) - ) { - if ((e = this.findControl(u))) { - if ((this.focus(u), n)) return !1; - u = e; - } - } else if (this.needsFocus(u)) - return t.timeStamp - s > 100 || - (o && window.top !== window && "input" === a) - ? ((this.targetElement = null), !1) - : (this.focus(u), - this.sendClick(u, t), - (o && "select" === a) || - ((this.targetElement = null), t.preventDefault()), - !1); - return o && - !i && - ((c = u.fastClickScrollParent), - c && c.fastClickLastScrollTop !== c.scrollTop) - ? !0 - : (this.needsClick(u) || (t.preventDefault(), this.sendClick(u, t)), - !1); - }), - (t.prototype.onTouchCancel = function () { - (this.trackingClick = !1), (this.targetElement = null); - }), - (t.prototype.onMouse = function (t) { - return this.targetElement - ? t.forwardedTouchEvent - ? !0 - : t.cancelable && - (!this.needsClick(this.targetElement) || this.cancelNextClick) - ? (t.stopImmediatePropagation - ? t.stopImmediatePropagation() - : (t.propagationStopped = !0), - t.stopPropagation(), - t.preventDefault(), - !1) - : !0 - : !0; - }), - (t.prototype.onClick = function (t) { - var e; - return this.trackingClick - ? ((this.targetElement = null), (this.trackingClick = !1), !0) - : "submit" === t.target.type && 0 === t.detail - ? !0 - : ((e = this.onMouse(t)), e || (this.targetElement = null), e); - }), - (t.prototype.destroy = function () { - var t = this.layer; - n && - (t.removeEventListener("mouseover", this.onMouse, !0), - t.removeEventListener("mousedown", this.onMouse, !0), - t.removeEventListener("mouseup", this.onMouse, !0)), - t.removeEventListener("click", this.onClick, !0), - t.removeEventListener("touchstart", this.onTouchStart, !1), - t.removeEventListener("touchmove", this.onTouchMove, !1), - t.removeEventListener("touchend", this.onTouchEnd, !1), - t.removeEventListener("touchcancel", this.onTouchCancel, !1); - }), - (t.notNeeded = function (t) { - var e, o, i, r; - if ("undefined" == typeof window.ontouchstart) return !0; - if ((o = +(/Chrome\/([0-9]+)/.exec(navigator.userAgent) || [, 0])[1])) { - if (!n) return !0; - if ((e = document.querySelector("meta[name=viewport]"))) { - if (-1 !== e.content.indexOf("user-scalable=no")) return !0; - if ( - o > 31 && - document.documentElement.scrollWidth <= window.outerWidth - ) - return !0; - } - } - if ( - s && - ((i = navigator.userAgent.match(/Version\/([0-9]*)\.([0-9]*)/)), - i[1] >= 10 && - i[2] >= 3 && - (e = document.querySelector("meta[name=viewport]"))) - ) { - if (-1 !== e.content.indexOf("user-scalable=no")) return !0; - if (document.documentElement.scrollWidth <= window.outerWidth) - return !0; - } - return "none" === t.style.msTouchAction || - "manipulation" === t.style.touchAction - ? !0 - : ((r = +(/Firefox\/([0-9]+)/.exec(navigator.userAgent) || [, 0])[1]), - r >= 27 && - ((e = document.querySelector("meta[name=viewport]")), - e && - (-1 !== e.content.indexOf("user-scalable=no") || - document.documentElement.scrollWidth <= window.outerWidth)) - ? !0 - : "none" === t.style.touchAction || - "manipulation" === t.style.touchAction - ? !0 - : !1); - }), - (t.attach = function (e, n) { - return new t(e, n); - }), - "function" == typeof define && "object" == typeof define.amd && define.amd - ? define(function () { - return t; - }) - : "undefined" != typeof module && module.exports - ? ((module.exports = t.attach), (module.exports.FastClick = t)) - : (window.FastClick = t); - })(), - (function () { - var t = function (e) { - var n = new t.Index(); - return ( - n.pipeline.add(t.trimmer, t.stopWordFilter, t.stemmer), - e && e.call(n, n), - n - ); - }; - (t.version = "0.6.0"), - (t.utils = {}), - (t.utils.warn = (function (t) { - return function (e) { - t.console && console.warn && console.warn(e); - }; - })(this)), - (t.utils.asString = function (t) { - return void 0 === t || null === t ? "" : t.toString(); - }), - (t.EventEmitter = function () { - this.events = {}; - }), - (t.EventEmitter.prototype.addListener = function () { - var t = Array.prototype.slice.call(arguments), - e = t.pop(), - n = t; - if ("function" != typeof e) - throw new TypeError("last argument must be a function"); - n.forEach(function (t) { - this.hasHandler(t) || (this.events[t] = []), this.events[t].push(e); - }, this); - }), - (t.EventEmitter.prototype.removeListener = function (t, e) { - if (this.hasHandler(t)) { - var n = this.events[t].indexOf(e); - this.events[t].splice(n, 1), - this.events[t].length || delete this.events[t]; - } - }), - (t.EventEmitter.prototype.emit = function (t) { - if (this.hasHandler(t)) { - var e = Array.prototype.slice.call(arguments, 1); - this.events[t].forEach(function (t) { - t.apply(void 0, e); - }); - } - }), - (t.EventEmitter.prototype.hasHandler = function (t) { - return t in this.events; - }), - (t.tokenizer = function (e) { - return arguments.length && null != e && void 0 != e - ? Array.isArray(e) - ? e.map(function (e) { - return t.utils.asString(e).toLowerCase(); - }) - : e - .toString() - .trim() - .toLowerCase() - .split(t.tokenizer.seperator) - : []; - }), - (t.tokenizer.seperator = /[\s\-]+/), - (t.Pipeline = function () { - this._stack = []; - }), - (t.Pipeline.registeredFunctions = {}), - (t.Pipeline.registerFunction = function (e, n) { - n in this.registeredFunctions && - t.utils.warn("Overwriting existing registered function: " + n), - (e.label = n), - (t.Pipeline.registeredFunctions[e.label] = e); - }), - (t.Pipeline.warnIfFunctionNotRegistered = function (e) { - var n = e.label && e.label in this.registeredFunctions; - n || - t.utils.warn( - "Function is not registered with pipeline. This may cause problems when serialising the index.\n", - e - ); - }), - (t.Pipeline.load = function (e) { - var n = new t.Pipeline(); - return ( - e.forEach(function (e) { - var o = t.Pipeline.registeredFunctions[e]; - if (!o) throw new Error("Cannot load un-registered function: " + e); - n.add(o); - }), - n - ); - }), - (t.Pipeline.prototype.add = function () { - var e = Array.prototype.slice.call(arguments); - e.forEach(function (e) { - t.Pipeline.warnIfFunctionNotRegistered(e), this._stack.push(e); - }, this); - }), - (t.Pipeline.prototype.after = function (e, n) { - t.Pipeline.warnIfFunctionNotRegistered(n); - var o = this._stack.indexOf(e); - if (-1 == o) throw new Error("Cannot find existingFn"); - (o += 1), this._stack.splice(o, 0, n); - }), - (t.Pipeline.prototype.before = function (e, n) { - t.Pipeline.warnIfFunctionNotRegistered(n); - var o = this._stack.indexOf(e); - if (-1 == o) throw new Error("Cannot find existingFn"); - this._stack.splice(o, 0, n); - }), - (t.Pipeline.prototype.remove = function (t) { - var e = this._stack.indexOf(t); - -1 != e && this._stack.splice(e, 1); - }), - (t.Pipeline.prototype.run = function (t) { - for ( - var e = [], n = t.length, o = this._stack.length, i = 0; - n > i; - i++ - ) { - for ( - var r = t[i], s = 0; - o > s && ((r = this._stack[s](r, i, t)), void 0 !== r && "" !== r); - s++ - ); - void 0 !== r && "" !== r && e.push(r); - } - return e; - }), - (t.Pipeline.prototype.reset = function () { - this._stack = []; - }), - (t.Pipeline.prototype.toJSON = function () { - return this._stack.map(function (e) { - return t.Pipeline.warnIfFunctionNotRegistered(e), e.label; - }); - }), - (t.Vector = function () { - (this._magnitude = null), (this.list = void 0), (this.length = 0); - }), - (t.Vector.Node = function (t, e, n) { - (this.idx = t), (this.val = e), (this.next = n); - }), - (t.Vector.prototype.insert = function (e, n) { - this._magnitude = void 0; - var o = this.list; - if (!o) return (this.list = new t.Vector.Node(e, n, o)), this.length++; - if (e < o.idx) - return (this.list = new t.Vector.Node(e, n, o)), this.length++; - for (var i = o, r = o.next; void 0 != r;) { - if (e < r.idx) - return (i.next = new t.Vector.Node(e, n, r)), this.length++; - (i = r), (r = r.next); - } - return (i.next = new t.Vector.Node(e, n, r)), this.length++; - }), - (t.Vector.prototype.magnitude = function () { - if (this._magnitude) return this._magnitude; - for (var t, e = this.list, n = 0; e;) - (t = e.val), (n += t * t), (e = e.next); - return (this._magnitude = Math.sqrt(n)); - }), - (t.Vector.prototype.dot = function (t) { - for (var e = this.list, n = t.list, o = 0; e && n;) - e.idx < n.idx - ? (e = e.next) - : e.idx > n.idx - ? (n = n.next) - : ((o += e.val * n.val), (e = e.next), (n = n.next)); - return o; - }), - (t.Vector.prototype.similarity = function (t) { - return this.dot(t) / (this.magnitude() * t.magnitude()); - }), - (t.SortedSet = function () { - (this.length = 0), (this.elements = []); - }), - (t.SortedSet.load = function (t) { - var e = new this(); - return (e.elements = t), (e.length = t.length), e; - }), - (t.SortedSet.prototype.add = function () { - var t, e; - for (t = 0; t < arguments.length; t++) - (e = arguments[t]), - ~this.indexOf(e) || this.elements.splice(this.locationFor(e), 0, e); - this.length = this.elements.length; - }), - (t.SortedSet.prototype.toArray = function () { - return this.elements.slice(); - }), - (t.SortedSet.prototype.map = function (t, e) { - return this.elements.map(t, e); - }), - (t.SortedSet.prototype.forEach = function (t, e) { - return this.elements.forEach(t, e); - }), - (t.SortedSet.prototype.indexOf = function (t) { - for ( - var e = 0, - n = this.elements.length, - o = n - e, - i = e + Math.floor(o / 2), - r = this.elements[i]; - o > 1; - - ) { - if (r === t) return i; - t > r && (e = i), - r > t && (n = i), - (o = n - e), - (i = e + Math.floor(o / 2)), - (r = this.elements[i]); - } - return r === t ? i : -1; - }), - (t.SortedSet.prototype.locationFor = function (t) { - for ( - var e = 0, - n = this.elements.length, - o = n - e, - i = e + Math.floor(o / 2), - r = this.elements[i]; - o > 1; - - ) - t > r && (e = i), - r > t && (n = i), - (o = n - e), - (i = e + Math.floor(o / 2)), - (r = this.elements[i]); - return r > t ? i : t > r ? i + 1 : void 0; - }), - (t.SortedSet.prototype.intersect = function (e) { - for ( - var n = new t.SortedSet(), - o = 0, - i = 0, - r = this.length, - s = e.length, - a = this.elements, - c = e.elements; - ; - - ) { - if (o > r - 1 || i > s - 1) break; - a[o] !== c[i] - ? a[o] < c[i] - ? o++ - : a[o] > c[i] && i++ - : (n.add(a[o]), o++ , i++); - } - return n; - }), - (t.SortedSet.prototype.clone = function () { - var e = new t.SortedSet(); - return (e.elements = this.toArray()), (e.length = e.elements.length), e; - }), - (t.SortedSet.prototype.union = function (t) { - var e, n, o; - return ( - this.length >= t.length - ? ((e = this), (n = t)) - : ((e = t), (n = this)), - (o = e.clone()), - o.add.apply(o, n.toArray()), - o - ); - }), - (t.SortedSet.prototype.toJSON = function () { - return this.toArray(); - }), - (t.Index = function () { - (this._fields = []), - (this._ref = "id"), - (this.pipeline = new t.Pipeline()), - (this.documentStore = new t.Store()), - (this.tokenStore = new t.TokenStore()), - (this.corpusTokens = new t.SortedSet()), - (this.eventEmitter = new t.EventEmitter()), - (this._idfCache = {}), - this.on( - "add", - "remove", - "update", - function () { - this._idfCache = {}; - }.bind(this) - ); - }), - (t.Index.prototype.on = function () { - var t = Array.prototype.slice.call(arguments); - return this.eventEmitter.addListener.apply(this.eventEmitter, t); - }), - (t.Index.prototype.off = function (t, e) { - return this.eventEmitter.removeListener(t, e); - }), - (t.Index.load = function (e) { - e.version !== t.version && - t.utils.warn( - "version mismatch: current " + t.version + " importing " + e.version - ); - var n = new this(); - return ( - (n._fields = e.fields), - (n._ref = e.ref), - (n.documentStore = t.Store.load(e.documentStore)), - (n.tokenStore = t.TokenStore.load(e.tokenStore)), - (n.corpusTokens = t.SortedSet.load(e.corpusTokens)), - (n.pipeline = t.Pipeline.load(e.pipeline)), - n - ); - }), - (t.Index.prototype.field = function (t, e) { - var e = e || {}, - n = { name: t, boost: e.boost || 1 }; - return this._fields.push(n), this; - }), - (t.Index.prototype.ref = function (t) { - return (this._ref = t), this; - }), - (t.Index.prototype.add = function (e, n) { - var o = {}, - i = new t.SortedSet(), - r = e[this._ref], - n = void 0 === n ? !0 : n; - this._fields.forEach(function (n) { - var r = this.pipeline.run(t.tokenizer(e[n.name])); - (o[n.name] = r), t.SortedSet.prototype.add.apply(i, r); - }, this), - this.documentStore.set(r, i), - t.SortedSet.prototype.add.apply(this.corpusTokens, i.toArray()); - for (var s = 0; s < i.length; s++) { - var a = i.elements[s], - c = this._fields.reduce(function (t, e) { - var n = o[e.name].length; - if (!n) return t; - var i = o[e.name].filter(function (t) { - return t === a; - }).length; - return t + (i / n) * e.boost; - }, 0); - this.tokenStore.add(a, { ref: r, tf: c }); - } - n && this.eventEmitter.emit("add", e, this); - }), - (t.Index.prototype.remove = function (t, e) { - var n = t[this._ref], - e = void 0 === e ? !0 : e; - if (this.documentStore.has(n)) { - var o = this.documentStore.get(n); - this.documentStore.remove(n), - o.forEach(function (t) { - this.tokenStore.remove(t, n); - }, this), - e && this.eventEmitter.emit("remove", t, this); - } - }), - (t.Index.prototype.update = function (t, e) { - var e = void 0 === e ? !0 : e; - this.remove(t, !1), - this.add(t, !1), - e && this.eventEmitter.emit("update", t, this); - }), - (t.Index.prototype.idf = function (t) { - var e = "@" + t; - if (Object.prototype.hasOwnProperty.call(this._idfCache, e)) - return this._idfCache[e]; - var n = this.tokenStore.count(t), - o = 1; - return ( - n > 0 && (o = 1 + Math.log(this.documentStore.length / n)), - (this._idfCache[e] = o) - ); - }), - (t.Index.prototype.search = function (e) { - var n = this.pipeline.run(t.tokenizer(e)), - o = new t.Vector(), - i = [], - r = this._fields.reduce(function (t, e) { - return t + e.boost; - }, 0), - s = n.some(function (t) { - return this.tokenStore.has(t); - }, this); - if (!s) return []; - n.forEach(function (e, n, s) { - var a = (1 / s.length) * this._fields.length * r, - c = this, - l = this.tokenStore.expand(e).reduce(function (n, i) { - var r = c.corpusTokens.indexOf(i), - s = c.idf(i), - l = 1, - u = new t.SortedSet(); - if (i !== e) { - var d = Math.max(3, i.length - e.length); - l = 1 / Math.log(d); - } - r > -1 && o.insert(r, a * s * l); - for ( - var h = c.tokenStore.get(i), - f = Object.keys(h), - p = f.length, - m = 0; - p > m; - m++ - ) - u.add(h[f[m]].ref); - return n.union(u); - }, new t.SortedSet()); - i.push(l); - }, this); - var a = i.reduce(function (t, e) { - return t.intersect(e); - }); - return a - .map(function (t) { - return { ref: t, score: o.similarity(this.documentVector(t)) }; - }, this) - .sort(function (t, e) { - return e.score - t.score; - }); - }), - (t.Index.prototype.documentVector = function (e) { - for ( - var n = this.documentStore.get(e), - o = n.length, - i = new t.Vector(), - r = 0; - o > r; - r++ - ) { - var s = n.elements[r], - a = this.tokenStore.get(s)[e].tf, - c = this.idf(s); - i.insert(this.corpusTokens.indexOf(s), a * c); - } - return i; - }), - (t.Index.prototype.toJSON = function () { - return { - version: t.version, - fields: this._fields, - ref: this._ref, - documentStore: this.documentStore.toJSON(), - tokenStore: this.tokenStore.toJSON(), - corpusTokens: this.corpusTokens.toJSON(), - pipeline: this.pipeline.toJSON() - }; - }), - (t.Index.prototype.use = function (t) { - var e = Array.prototype.slice.call(arguments, 1); - e.unshift(this), t.apply(this, e); - }), - (t.Store = function () { - (this.store = {}), (this.length = 0); - }), - (t.Store.load = function (e) { - var n = new this(); - return ( - (n.length = e.length), - (n.store = Object.keys(e.store).reduce(function (n, o) { - return (n[o] = t.SortedSet.load(e.store[o])), n; - }, {})), - n - ); - }), - (t.Store.prototype.set = function (t, e) { - this.has(t) || this.length++ , (this.store[t] = e); - }), - (t.Store.prototype.get = function (t) { - return this.store[t]; - }), - (t.Store.prototype.has = function (t) { - return t in this.store; - }), - (t.Store.prototype.remove = function (t) { - this.has(t) && (delete this.store[t], this.length--); - }), - (t.Store.prototype.toJSON = function () { - return { store: this.store, length: this.length }; - }), - (t.stemmer = (function () { - var t = { - ational: "ate", - tional: "tion", - enci: "ence", - anci: "ance", - izer: "ize", - bli: "ble", - alli: "al", - entli: "ent", - eli: "e", - ousli: "ous", - ization: "ize", - ation: "ate", - ator: "ate", - alism: "al", - iveness: "ive", - fulness: "ful", - ousness: "ous", - aliti: "al", - iviti: "ive", - biliti: "ble", - logi: "log" - }, - e = { - icate: "ic", - ative: "", - alize: "al", - iciti: "ic", - ical: "ic", - ful: "", - ness: "" - }, - n = "[^aeiou]", - o = "[aeiouy]", - i = n + "[^aeiouy]*", - r = o + "[aeiou]*", - s = "^(" + i + ")?" + r + i, - a = "^(" + i + ")?" + r + i + "(" + r + ")?$", - c = "^(" + i + ")?" + r + i + r + i, - l = "^(" + i + ")?" + o, - u = new RegExp(s), - d = new RegExp(c), - h = new RegExp(a), - f = new RegExp(l), - p = /^(.+?)(ss|i)es$/, - m = /^(.+?)([^s])s$/, - v = /^(.+?)eed$/, - g = /^(.+?)(ed|ing)$/, - y = /.$/, - w = /(at|bl|iz)$/, - S = new RegExp("([^aeiouylsz])\\1$"), - k = new RegExp("^" + i + o + "[^aeiouwxy]$"), - E = /^(.+?[^aeiou])y$/, - x = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/, - b = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/, - T = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/, - C = /^(.+?)(s|t)(ion)$/, - L = /^(.+?)e$/, - _ = /ll$/, - A = new RegExp("^" + i + o + "[^aeiouwxy]$"), - O = function (n) { - var o, i, r, s, a, c, l; - if (n.length < 3) return n; - if ( - ((r = n.substr(0, 1)), - "y" == r && (n = r.toUpperCase() + n.substr(1)), - (s = p), - (a = m), - s.test(n) - ? (n = n.replace(s, "$1$2")) - : a.test(n) && (n = n.replace(a, "$1$2")), - (s = v), - (a = g), - s.test(n)) - ) { - var O = s.exec(n); - (s = u), s.test(O[1]) && ((s = y), (n = n.replace(s, ""))); - } else if (a.test(n)) { - var O = a.exec(n); - (o = O[1]), - (a = f), - a.test(o) && - ((n = o), - (a = w), - (c = S), - (l = k), - a.test(n) - ? (n += "e") - : c.test(n) - ? ((s = y), (n = n.replace(s, ""))) - : l.test(n) && (n += "e")); - } - if (((s = E), s.test(n))) { - var O = s.exec(n); - (o = O[1]), (n = o + "i"); - } - if (((s = x), s.test(n))) { - var O = s.exec(n); - (o = O[1]), (i = O[2]), (s = u), s.test(o) && (n = o + t[i]); - } - if (((s = b), s.test(n))) { - var O = s.exec(n); - (o = O[1]), (i = O[2]), (s = u), s.test(o) && (n = o + e[i]); - } - if (((s = T), (a = C), s.test(n))) { - var O = s.exec(n); - (o = O[1]), (s = d), s.test(o) && (n = o); - } else if (a.test(n)) { - var O = a.exec(n); - (o = O[1] + O[2]), (a = d), a.test(o) && (n = o); - } - if (((s = L), s.test(n))) { - var O = s.exec(n); - (o = O[1]), - (s = d), - (a = h), - (c = A), - (s.test(o) || (a.test(o) && !c.test(o))) && (n = o); - } - return ( - (s = _), - (a = d), - s.test(n) && a.test(n) && ((s = y), (n = n.replace(s, ""))), - "y" == r && (n = r.toLowerCase() + n.substr(1)), - n - ); - }; - return O; - })()), - t.Pipeline.registerFunction(t.stemmer, "stemmer"), - (t.generateStopWordFilter = function (t) { - var e = t.reduce(function (t, e) { - return (t[e] = e), t; - }, {}); - return function (t) { - return t && e[t] !== t ? t : void 0; - }; - }), - (t.stopWordFilter = t.generateStopWordFilter([ - "a", - "able", - "about", - "across", - "after", - "all", - "almost", - "also", - "am", - "among", - "an", - "and", - "any", - "are", - "as", - "at", - "be", - "because", - "been", - "but", - "by", - "can", - "cannot", - "could", - "dear", - "did", - "do", - "does", - "either", - "else", - "ever", - "every", - "for", - "from", - "get", - "got", - "had", - "has", - "have", - "he", - "her", - "hers", - "him", - "his", - "how", - "however", - "i", - "if", - "in", - "into", - "is", - "it", - "its", - "just", - "least", - "let", - "like", - "likely", - "may", - "me", - "might", - "most", - "must", - "my", - "neither", - "no", - "nor", - "not", - "of", - "off", - "often", - "on", - "only", - "or", - "other", - "our", - "own", - "rather", - "said", - "say", - "says", - "she", - "should", - "since", - "so", - "some", - "than", - "that", - "the", - "their", - "them", - "then", - "there", - "these", - "they", - "this", - "tis", - "to", - "too", - "twas", - "us", - "wants", - "was", - "we", - "were", - "what", - "when", - "where", - "which", - "while", - "who", - "whom", - "why", - "will", - "with", - "would", - "yet", - "you", - "your" - ])), - t.Pipeline.registerFunction(t.stopWordFilter, "stopWordFilter"), - (t.trimmer = function (t) { - return t.replace(/^\W+/, "").replace(/\W+$/, ""); - }), - t.Pipeline.registerFunction(t.trimmer, "trimmer"), - (t.TokenStore = function () { - (this.root = { docs: {} }), (this.length = 0); - }), - (t.TokenStore.load = function (t) { - var e = new this(); - return (e.root = t.root), (e.length = t.length), e; - }), - (t.TokenStore.prototype.add = function (t, e, n) { - var n = n || this.root, - o = t.charAt(0), - i = t.slice(1); - return ( - o in n || (n[o] = { docs: {} }), - 0 === i.length - ? ((n[o].docs[e.ref] = e), void (this.length += 1)) - : this.add(i, e, n[o]) - ); - }), - (t.TokenStore.prototype.has = function (t) { - if (!t) return !1; - for (var e = this.root, n = 0; n < t.length; n++) { - if (!e[t.charAt(n)]) return !1; - e = e[t.charAt(n)]; - } - return !0; - }), - (t.TokenStore.prototype.getNode = function (t) { - if (!t) return {}; - for (var e = this.root, n = 0; n < t.length; n++) { - if (!e[t.charAt(n)]) return {}; - e = e[t.charAt(n)]; - } - return e; - }), - (t.TokenStore.prototype.get = function (t, e) { - return this.getNode(t, e).docs || {}; - }), - (t.TokenStore.prototype.count = function (t, e) { - return Object.keys(this.get(t, e)).length; - }), - (t.TokenStore.prototype.remove = function (t, e) { - if (t) { - for (var n = this.root, o = 0; o < t.length; o++) { - if (!(t.charAt(o) in n)) return; - n = n[t.charAt(o)]; - } - delete n.docs[e]; - } - }), - (t.TokenStore.prototype.expand = function (t, e) { - var n = this.getNode(t), - o = n.docs || {}, - e = e || []; - return ( - Object.keys(o).length && e.push(t), - Object.keys(n).forEach(function (n) { - "docs" !== n && e.concat(this.expand(t + n, e)); - }, this), - e - ); - }), - (t.TokenStore.prototype.toJSON = function () { - return { root: this.root, length: this.length }; - }), - (function (t, e) { - "function" == typeof define && define.amd - ? define(e) - : "object" == typeof exports - ? (module.exports = e()) - : (t.lunr = e()); - })(this, function () { - return t; - }); - })(), - (String.prototype.truncate = function (t) { - if (this.length > t) { - for (; " " != this[t] && --t > 0;); - return this.substring(0, t) + "…"; - } - return this; - }), - (HTMLElement.prototype.wrap = function (t) { - t.length || (t = [t]); - for (var e = t.length - 1; e >= 0; e--) { - var n = e > 0 ? this.cloneNode(!0) : this, - o = t[e], - i = o.parentNode, - r = o.nextSibling; - n.appendChild(o), r ? i.insertBefore(n, r) : i.appendChild(n); - } - }), - document.addEventListener("DOMContentLoaded", function () { - "use strict"; - Modernizr.addTest("ios", function () { - return !!navigator.userAgent.match(/(iPad|iPhone|iPod)/g); - }), - Modernizr.addTest("standalone", function () { - return !!navigator.standalone; - }), - FastClick.attach(document.body); - var t = document.getElementById("toggle-search"), - e = (document.getElementById("reset-search"), - document.querySelector(".drawer")), - n = document.querySelectorAll(".anchor"), - o = document.querySelector(".search .field"), - i = document.querySelector(".query"), - r = document.querySelector(".results .meta"); - Array.prototype.forEach.call(n, function (t) { - t.querySelector("a").addEventListener("click", function () { - (document.getElementById("toggle-drawer").checked = !1), - document.body.classList.remove("toggle-drawer"); - }); - }); - var s = window.pageYOffset, - a = function () { - var t = window.pageYOffset + window.innerHeight, - n = Math.max(0, window.innerHeight - e.offsetHeight); - t > document.body.clientHeight - (96 - n) - ? "absolute" != e.style.position && - ((e.style.position = "absolute"), - (e.style.top = null), - (e.style.bottom = 0)) - : e.offsetHeight < window.innerHeight - ? "fixed" != e.style.position && - ((e.style.position = "fixed"), - (e.style.top = 0), - (e.style.bottom = null)) - : "fixed" != e.style.position - ? t > e.offsetTop + e.offsetHeight - ? ((e.style.position = "fixed"), - (e.style.top = null), - (e.style.bottom = "-96px")) - : window.pageYOffset < e.offsetTop && - ((e.style.position = "fixed"), - (e.style.top = 0), - (e.style.bottom = null)) - : window.pageYOffset > s - ? e.style.top && - ((e.style.position = "absolute"), - (e.style.top = Math.max(0, s) + "px"), - (e.style.bottom = null)) - : e.style.bottom && - ((e.style.position = "absolute"), - (e.style.top = t - e.offsetHeight + "px"), - (e.style.bottom = null)), - (s = Math.max(0, window.pageYOffset)); - }, - c = function () { - var t = document.querySelector(".main"); - window.removeEventListener("scroll", a), - matchMedia("only screen and (max-width: 959px)").matches - ? ((e.style.position = null), - (e.style.top = null), - (e.style.bottom = null)) - : e.offsetHeight + 96 < t.offsetHeight && - (window.addEventListener("scroll", a), a()); - }; - Modernizr.ios || (window.addEventListener("resize", c), c()); - var u = 0; - t.addEventListener("click", function (t) { - var e = document.body.classList, - n = !matchMedia("only screen and (min-width: 960px)").matches; - e.contains("locked") - ? (e.remove("locked"), - n && - setTimeout(function () { - window.scrollTo(0, u); - }, 100)) - : ((u = window.scrollY), - n && - setTimeout(function () { - window.scrollTo(0, 0); - }, 400), - setTimeout( - function () { - this.checked && - (n && e.add("locked"), - setTimeout(function () { - i.focus(); - }, 200)); - }.bind(this), - 450 - )); - }), - o.addEventListener("touchstart", function () { - i.focus(); - }), - window.addEventListener("keyup", function (e) { - var n = e.keyCode || e.which; - 27 == n && - (i.blur(), - document.body.classList.remove("toggle-search"), - document.body.classList.remove("locked"), - (t.checked = !1)); - }); - var d = document.getElementById("reset-search"); - d.addEventListener("click", function () { - for (var t = document.querySelector(".results .list"); t.firstChild;) - t.removeChild(t.firstChild); - var e = document.querySelector(".bar.search"); - e.classList.remove("non-empty"), - (r.innerHTML = ""), - (i.value = ""), - i.focus(); - }); - var h = document.querySelectorAll("h2"); - h = Array.prototype.map.call(h, function (t) { - return t.offsetTop; - }); - var f = null; - document.addEventListener("scroll", function () { - for ( - var t = window.scrollY + window.innerHeight / 3, - e = h.length - 1, - o = 0; - e > o; - o++ - ) - t < h[o + 1] && (e = o); - e != f && - ((f = e), - Array.prototype.forEach.call(n, function (t, e) { - var n = t.querySelector("a"); - (e != f || n.classList.add("current")) && - n.classList.remove("current"); - })); - }); - var p = document.querySelectorAll(".n + .p"); - Array.prototype.forEach.call(p, function (t) { - var e = t.innerText || t.textContent; - e && "(" == e[0] && t.previousSibling.classList.add("f"); - }); - var m = document.querySelectorAll("table"); - if ( - (Array.prototype.forEach.call(m, function (t) { - var e = document.createElement("div"); - e.classList.add("data"), e.wrap(t); - }), - Modernizr.ios) - ) { - var v = document.querySelectorAll(".scrollable, .standalone .article"); - Array.prototype.forEach.call(v, function (t) { - t.addEventListener("touchstart", function () { - var t = this.scrollTop; - 0 == t - ? (this.scrollTop = 1) - : t + this.offsetHeight == this.scrollHeight && - (this.scrollTop = t - 1); - }); - }); - } - var g = document.querySelectorAll(".project, .overlay, .header"); - Array.prototype.forEach.call(g, function (t) { - t.addEventListener("touchmove", function (t) { - t.preventDefault(); - }); - }); - var y = document.querySelectorAll(".toggle"); - Array.prototype.forEach.call(y, function (t) { - t.addEventListener("click", function () { - document.body.classList.toggle(this.id); - }); - }), - repo_id && - pegasus("https://api.github.com/repos/" + repo_id).then( - function (t, e) { - var n = t.stargazers_count; - n > 1e4 - ? (n = (n / 1e3).toFixed(0) + "k") - : n > 1e3 && (n = (n / 1e3).toFixed(1) + "k"); - var o = document.querySelector(".repo-stars .count"); - o.innerHTML = n; - }, - function (t, e) { - console.error(t, e.status); - } - ); - }), - "standalone" in window.navigator && window.navigator.standalone) -) { - var node, - remotes = !1; - document.addEventListener( - "click", - function (t) { - for (node = t.target; "A" !== node.nodeName && "HTML" !== node.nodeName;) - node = node.parentNode; - "href" in node && - -1 !== node.href.indexOf("http") && - (-1 !== node.href.indexOf(document.location.host) || remotes) && - (t.preventDefault(), (document.location.href = node.href)); - }, - !1 - ); -} diff --git a/docs/static/js/buttons.js b/docs/static/js/buttons.js new file mode 100644 index 00000000..e6d0703d --- /dev/null +++ b/docs/static/js/buttons.js @@ -0,0 +1,6 @@ +/*! + * github-buttons v2.21.1 + * (c) 2021 γͺγ€γ + * @license BSD-2-Clause + */ +!function(){"use strict";var e=window.document,o=e.location,t=window.Math,r=window.HTMLElement,a=window.XMLHttpRequest,n="github-button",i="https://buttons.github.io/buttons.html",c="github.com",l=a&&"prototype"in a&&"withCredentials"in a.prototype,d=l&&r&&"attachShadow"in r.prototype&&!("prototype"in r.prototype.attachShadow),s=function(e,o){for(var t=0,r=e.length;t<r;t++)o(e[t])},u=function(e){return function(o,t,r){var a=e.createElement(o);if(null!=t)for(var n in t){var i=t[n];null!=i&&(null!=a[n]?a[n]=i:a.setAttribute(n,i))}return null!=r&&s(r,(function(o){a.appendChild("string"==typeof o?e.createTextNode(o):o)})),a}},h=u(e),g=function(e){var o;return function(){o||(o=1,e.apply(this,arguments))}},f=function(e,o){return{}.hasOwnProperty.call(e,o)},b=function(e){return(""+e).toLowerCase()},p=function(e,o,t,r){null==o&&(o="&"),null==t&&(t="="),null==r&&(r=window.decodeURIComponent);var a={};return s(e.split(o),(function(e){if(""!==e){var o=e.split(t);a[r(o[0])]=null!=o[1]?r(o.slice(1).join(t)):void 0}})),a},m=function(e,o,t){e.addEventListener?e.addEventListener(o,t,!1):e.attachEvent("on"+o,t)},v=function(e,o,t){e.removeEventListener?e.removeEventListener(o,t,!1):e.detachEvent("on"+o,t)},w=function(e,o,t){var r=function(){return v(e,o,r),t.apply(this,arguments)};m(e,o,r)},k=function(e,o,t){if(null!=e.readyState){var r="readystatechange",a=function(){if(o.test(e.readyState))return v(e,r,a),t.apply(this,arguments)};m(e,r,a)}},x={light:".btn{color:#24292f;background-color:#ebf0f4;border-color:#ccd1d5;border-color:rgba(27,31,36,.15);background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%23f6f8fa'/%3e%3cstop offset='90%25' stop-color='%23ebf0f4'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e\");background-image:-moz-linear-gradient(top, #f6f8fa, #ebf0f4 90%);background-image:linear-gradient(180deg, #f6f8fa, #ebf0f4 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr='#FFF6F8FA', endColorstr='#FFEAEFF3')}:root .btn{filter:none}.btn:focus,.btn:hover{background-color:#e9ebef;background-position:0 -0.5em;border-color:#caccd1;border-color:rgba(27,31,36,.15);background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%23f3f4f6'/%3e%3cstop offset='90%25' stop-color='%23e9ebef'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e\");background-image:-moz-linear-gradient(top, #f3f4f6, #e9ebef 90%);background-image:linear-gradient(180deg, #f3f4f6, #e9ebef 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr='#FFF3F4F6', endColorstr='#FFE8EAEE')}:root .btn:focus,:root .btn:hover{filter:none}.btn:active{background-color:#e5e9ed;border-color:#c7cbcf;border-color:rgba(27,31,36,.15);box-shadow:inset 0 .15em .3em rgba(27,31,36,.15);background-image:none;filter:none}.social-count{color:#24292f;background-color:#fff;border-color:#ddddde;border-color:rgba(27,31,36,.15)}.social-count:focus,.social-count:hover{color:#0969da}.octicon-heart{color:#bf3989}",light_high_contrast:".btn{color:#0e1116;background-color:#e7ecf0;border-color:#2f3237;border-color:rgba(1,4,9,.8);background-image:none;filter:none}.btn:focus,.btn:hover{background-color:#c4cdd5;background-position:0 -0.5em;border-color:#282c32;border-color:rgba(1,4,9,.8);background-image:none;filter:none}.btn:active{background-color:#d8dde1;border-color:#2c2f34;border-color:rgba(1,4,9,.8);box-shadow:inset 0 .15em .3em rgba(1,4,9,.15)}.social-count{color:#0e1116;background-color:#fff;border-color:#34363a;border-color:rgba(1,4,9,.8)}.social-count:focus,.social-count:hover{color:#0349b4}.octicon-heart{color:#971368}",dark:".btn{color:#c9d1d9;background-color:#1a1e23;border-color:#2f3439;border-color:rgba(240,246,252,.1);background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%2321262d'/%3e%3cstop offset='90%25' stop-color='%231a1e23'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e\");background-image:-moz-linear-gradient(top, #21262d, #1a1e23 90%);background-image:linear-gradient(180deg, #21262d, #1a1e23 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr='#FF21262D', endColorstr='#FF191D22')}:root .btn{filter:none}.btn:focus,.btn:hover{background-color:#292e33;background-position:0 -0.5em;border-color:#8b949e;background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%2330363d'/%3e%3cstop offset='90%25' stop-color='%23292e33'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e\");background-image:-moz-linear-gradient(top, #30363d, #292e33 90%);background-image:linear-gradient(180deg, #30363d, #292e33 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr='#FF30363D', endColorstr='#FF282D32')}:root .btn:focus,:root .btn:hover{filter:none}.btn:active{background-color:#161719;border-color:#8b949e;box-shadow:inset 0 .15em .3em rgba(1,4,9,.15);background-image:none;filter:none}.social-count{color:#c9d1d9;background-color:#0d1117;border-color:#24282e;border-color:rgba(240,246,252,.1)}.social-count:focus,.social-count:hover{color:#58a6ff}.octicon-heart{color:#db61a2}",dark_dimmed:".btn{color:#adbac7;background-color:#30363d;border-color:#40464e;border-color:rgba(205,217,229,.1);background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%23373e47'/%3e%3cstop offset='90%25' stop-color='%2330363d'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e\");background-image:-moz-linear-gradient(top, #373e47, #30363d 90%);background-image:linear-gradient(180deg, #373e47, #30363d 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr='#FF373E47', endColorstr='#FF2F353C')}:root .btn{filter:none}.btn:focus,.btn:hover{background-color:#3c444d;background-position:0 -0.5em;border-color:#768390;background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%23444c56'/%3e%3cstop offset='90%25' stop-color='%233c444d'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e\");background-image:-moz-linear-gradient(top, #444c56, #3c444d 90%);background-image:linear-gradient(180deg, #444c56, #3c444d 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr='#FF444C56', endColorstr='#FF3B434C')}:root .btn:focus,:root .btn:hover{filter:none}.btn:active{background-color:#2e3031;border-color:#768390;box-shadow:inset 0 .15em .3em rgba(28,33,40,.15);background-image:none;filter:none}.social-count{color:#adbac7;background-color:#22272e;border-color:#333940;border-color:rgba(205,217,229,.1)}.social-count:focus,.social-count:hover{color:#539bf5}.octicon-heart{color:#c96198}",dark_high_contrast:".btn{color:#f0f3f6;background-color:#272b33;border-color:#7a828e;background-image:none;filter:none}.btn:focus,.btn:hover{background-color:#4a515b;background-position:0 -0.5em;border-color:#bdc4cc;background-image:none;filter:none}.btn:active{background-color:#1d1d1f;border-color:#bdc4cc;box-shadow:inset 0 .15em .3em rgba(1,4,9,.15)}.social-count{color:#f0f3f6;background-color:#0a0c10;border-color:#7a828e}.social-count:focus,.social-count:hover{color:#71b7ff}.octicon-heart{color:#ef6eb1}"},z=function(e,o){return"@media(prefers-color-scheme:"+e+"){"+x[f(x,o)?o:e]+"}"},y={"comment-discussion":{heights:{16:{width:16,path:'<path fill-rule="evenodd" d="M1.5 2.75a.25.25 0 01.25-.25h8.5a.25.25 0 01.25.25v5.5a.25.25 0 01-.25.25h-3.5a.75.75 0 00-.53.22L3.5 11.44V9.25a.75.75 0 00-.75-.75h-1a.25.25 0 01-.25-.25v-5.5zM1.75 1A1.75 1.75 0 000 2.75v5.5C0 9.216.784 10 1.75 10H2v1.543a1.457 1.457 0 002.487 1.03L7.061 10h3.189A1.75 1.75 0 0012 8.25v-5.5A1.75 1.75 0 0010.25 1h-8.5zM14.5 4.75a.25.25 0 00-.25-.25h-.5a.75.75 0 110-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0114.25 12H14v1.543a1.457 1.457 0 01-2.487 1.03L9.22 12.28a.75.75 0 111.06-1.06l2.22 2.22v-2.19a.75.75 0 01.75-.75h1a.25.25 0 00.25-.25v-5.5z"></path>'}}},download:{heights:{16:{width:16,path:'<path fill-rule="evenodd" d="M7.47 10.78a.75.75 0 001.06 0l3.75-3.75a.75.75 0 00-1.06-1.06L8.75 8.44V1.75a.75.75 0 00-1.5 0v6.69L4.78 5.97a.75.75 0 00-1.06 1.06l3.75 3.75zM3.75 13a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5z"></path>'}}},eye:{heights:{16:{width:16,path:'<path fill-rule="evenodd" d="M1.679 7.932c.412-.621 1.242-1.75 2.366-2.717C5.175 4.242 6.527 3.5 8 3.5c1.473 0 2.824.742 3.955 1.715 1.124.967 1.954 2.096 2.366 2.717a.119.119 0 010 .136c-.412.621-1.242 1.75-2.366 2.717C10.825 11.758 9.473 12.5 8 12.5c-1.473 0-2.824-.742-3.955-1.715C2.92 9.818 2.09 8.69 1.679 8.068a.119.119 0 010-.136zM8 2c-1.981 0-3.67.992-4.933 2.078C1.797 5.169.88 6.423.43 7.1a1.619 1.619 0 000 1.798c.45.678 1.367 1.932 2.637 3.024C4.329 13.008 6.019 14 8 14c1.981 0 3.67-.992 4.933-2.078 1.27-1.091 2.187-2.345 2.637-3.023a1.619 1.619 0 000-1.798c-.45-.678-1.367-1.932-2.637-3.023C11.671 2.992 9.981 2 8 2zm0 8a2 2 0 100-4 2 2 0 000 4z"></path>'}}},heart:{heights:{16:{width:16,path:'<path fill-rule="evenodd" d="M4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.565 20.565 0 008 13.393a20.561 20.561 0 003.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.75.75 0 01-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5zM8 14.25l-.345.666-.002-.001-.006-.003-.018-.01a7.643 7.643 0 01-.31-.17 22.075 22.075 0 01-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.08 22.08 0 01-3.744 2.584l-.018.01-.006.003h-.002L8 14.25zm0 0l.345.666a.752.752 0 01-.69 0L8 14.25z"></path>'}}},"issue-opened":{heights:{16:{width:16,path:'<path d="M8 9.5a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path><path fill-rule="evenodd" d="M8 0a8 8 0 100 16A8 8 0 008 0zM1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0z"></path>'}}},"mark-github":{heights:{16:{width:16,path:'<path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path>'}}},package:{heights:{16:{width:16,path:'<path fill-rule="evenodd" d="M8.878.392a1.75 1.75 0 00-1.756 0l-5.25 3.045A1.75 1.75 0 001 4.951v6.098c0 .624.332 1.2.872 1.514l5.25 3.045a1.75 1.75 0 001.756 0l5.25-3.045c.54-.313.872-.89.872-1.514V4.951c0-.624-.332-1.2-.872-1.514L8.878.392zM7.875 1.69a.25.25 0 01.25 0l4.63 2.685L8 7.133 3.245 4.375l4.63-2.685zM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432L2.5 5.677zm6.25 8.271l4.625-2.683a.25.25 0 00.125-.216V5.677L8.75 8.432v5.516z"></path>'}}},play:{heights:{16:{width:16,path:'<path fill-rule="evenodd" d="M1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0zM8 0a8 8 0 100 16A8 8 0 008 0zM6.379 5.227A.25.25 0 006 5.442v5.117a.25.25 0 00.379.214l4.264-2.559a.25.25 0 000-.428L6.379 5.227z"></path>'}}},"repo-forked":{heights:{16:{width:16,path:'<path fill-rule="evenodd" d="M5 3.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm0 2.122a2.25 2.25 0 10-1.5 0v.878A2.25 2.25 0 005.75 8.5h1.5v2.128a2.251 2.251 0 101.5 0V8.5h1.5a2.25 2.25 0 002.25-2.25v-.878a2.25 2.25 0 10-1.5 0v.878a.75.75 0 01-.75.75h-4.5A.75.75 0 015 6.25v-.878zm3.75 7.378a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm3-8.75a.75.75 0 100-1.5.75.75 0 000 1.5z"></path>'}}},"repo-template":{heights:{16:{width:16,path:'<path fill-rule="evenodd" d="M6 .75A.75.75 0 016.75 0h2.5a.75.75 0 010 1.5h-2.5A.75.75 0 016 .75zm5 0a.75.75 0 01.75-.75h1.5a.75.75 0 01.75.75v1.5a.75.75 0 01-1.5 0V1.5h-.75A.75.75 0 0111 .75zM4.992.662a.75.75 0 01-.636.848c-.436.063-.783.41-.846.846a.75.75 0 01-1.485-.212A2.501 2.501 0 014.144.025a.75.75 0 01.848.637zM2.75 4a.75.75 0 01.75.75v1.5a.75.75 0 01-1.5 0v-1.5A.75.75 0 012.75 4zm10.5 0a.75.75 0 01.75.75v1.5a.75.75 0 01-1.5 0v-1.5a.75.75 0 01.75-.75zM2.75 8a.75.75 0 01.75.75v.268A1.72 1.72 0 013.75 9h.5a.75.75 0 010 1.5h-.5a.25.25 0 00-.25.25v.75c0 .28.114.532.3.714a.75.75 0 01-1.05 1.072A2.495 2.495 0 012 11.5V8.75A.75.75 0 012.75 8zm10.5 0a.75.75 0 01.75.75v4.5a.75.75 0 01-.75.75h-2.5a.75.75 0 010-1.5h1.75v-2h-.75a.75.75 0 010-1.5h.75v-.25a.75.75 0 01.75-.75zM6 9.75A.75.75 0 016.75 9h2.5a.75.75 0 010 1.5h-2.5A.75.75 0 016 9.75zm-1 2.5v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>'}}},star:{heights:{16:{width:16,path:'<path fill-rule="evenodd" d="M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25zm0 2.445L6.615 5.5a.75.75 0 01-.564.41l-3.097.45 2.24 2.184a.75.75 0 01.216.664l-.528 3.084 2.769-1.456a.75.75 0 01.698 0l2.77 1.456-.53-3.084a.75.75 0 01.216-.664l2.24-2.183-3.096-.45a.75.75 0 01-.564-.41L8 2.694v.001z"></path>'}}}},C=function(e,o){e=b(e).replace(/^octicon-/,""),f(y,e)||(e="mark-github");var t=o>=24&&24 in y[e].heights?24:16,r=y[e].heights[t];return'<svg viewBox="0 0 '+r.width+" "+t+'" width="'+o*r.width/t+'" height="'+o+'" class="octicon octicon-'+e+'" aria-hidden="true">'+r.path+"</svg>"},M={},A=function(e,o){var t=M[e]||(M[e]=[]);if(!(t.push(o)>1)){var r=g((function(){for(delete M[e];o=t.shift();)o.apply(null,arguments)}));if(l){var n=new a;m(n,"abort",r),m(n,"error",r),m(n,"load",(function(){var e;try{e=JSON.parse(this.responseText)}catch(e){return void r(e)}r(200!==this.status,e)})),n.open("GET",e),n.send()}else{var i=this||window;i._=function(e){i._=null,r(200!==e.meta.status,e.data)};var c=u(i.document)("script",{async:!0,src:e+(-1!==e.indexOf("?")?"&":"?")+"callback=_"}),d=function(){i._&&i._({meta:{}})};m(c,"load",d),m(c,"error",d),k(c,/de|m/,d),i.document.getElementsByTagName("head")[0].appendChild(c)}}},F=function(e,o,t){var r=u(e.ownerDocument),a=e.appendChild(r("style",{type:"text/css"})),n="body{margin:0}a{text-decoration:none;outline:0}.widget{display:inline-block;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;font-size:0;line-height:0;white-space:nowrap}.btn,.social-count{position:relative;display:inline-block;display:inline-flex;height:14px;padding:2px 5px;font-size:11px;font-weight:600;line-height:14px;vertical-align:bottom;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-repeat:repeat-x;background-position:-1px -1px;background-size:110% 110%;border:1px solid}.btn{border-radius:.25em}.btn:not(:last-child){border-radius:.25em 0 0 .25em}.social-count{border-left:0;border-radius:0 .25em .25em 0}.widget-lg .btn,.widget-lg .social-count{height:16px;padding:5px 10px;font-size:12px;line-height:16px}.octicon{display:inline-block;vertical-align:text-top;fill:currentColor;overflow:visible}"+function(e){if(null==e)return x.light;if(f(x,e))return x[e];var o=p(e,";",":",(function(e){return e.replace(/^[ \t\n\f\r]+|[ \t\n\f\r]+$/g,"")}));return x[f(x,o["no-preference"])?o["no-preference"]:"light"]+z("light",o.light)+z("dark",o.dark)}(o["data-color-scheme"]);a.styleSheet?a.styleSheet.cssText=n:a.appendChild(e.ownerDocument.createTextNode(n));var i="large"===b(o["data-size"]),l=r("a",{className:"btn",href:o.href,rel:"noopener",target:"_blank",title:o.title||void 0,"aria-label":o["aria-label"]||void 0,innerHTML:C(o["data-icon"],i?16:14)+" "},[r("span",{},[o["data-text"]||""])]),d=e.appendChild(r("div",{className:"widget"+(i?" widget-lg":"")},[l])),s=l.hostname.replace(/\.$/,"");if(("."+s).substring(s.length-c.length)!=="."+c)return l.removeAttribute("href"),void t(d);var h=(" /"+l.pathname).split(/\/+/);if(((s===c||s==="gist."+c)&&"archive"===h[3]||s===c&&"releases"===h[3]&&("download"===h[4]||"latest"===h[4]&&"download"===h[5])||s==="codeload."+c)&&(l.target="_top"),"true"===b(o["data-show-count"])&&s===c&&"marketplace"!==h[1]&&"sponsors"!==h[1]&&"orgs"!==h[1]&&"users"!==h[1]&&"-"!==h[1]){var g,m;if(!h[2]&&h[1])m="followers",g="?tab=followers";else if(!h[3]&&h[2])m="stargazers_count",g="/stargazers";else if(h[4]||"subscription"!==h[3])if(h[4]||"fork"!==h[3]){if("issues"!==h[3])return void t(d);m="open_issues_count",g="/issues"}else m="forks_count",g="/network/members";else m="subscribers_count",g="/watchers";var v=h[2]?"/repos/"+h[1]+"/"+h[2]:"/users/"+h[1];A.call(this,"https://api.github.com"+v,(function(e,o){if(!e){var a=o[m];d.appendChild(r("a",{className:"social-count",href:o.html_url+g,rel:"noopener",target:"_blank","aria-label":a+" "+m.replace(/_count$/,"").replace("_"," ").slice(0,a<2?-1:void 0)+" on GitHub"},[(""+a).replace(/\B(?=(\d{3})+(?!\d))/g,",")]))}t(d)}))}else t(d)},L=window.devicePixelRatio||1,_=function(e){return(L>1?t.ceil(t.round(e*L)/L*2)/2:t.ceil(e))||0},E=function(e,o){e.style.width=o[0]+"px",e.style.height=o[1]+"px"},G=function(o,r){if(null!=o&&null!=r)if(o.getAttribute&&(o=function(e){var o={href:e.href,title:e.title,"aria-label":e.getAttribute("aria-label")};return s(["icon","color-scheme","text","size","show-count"],(function(t){var r="data-"+t;o[r]=e.getAttribute(r)})),null==o["data-text"]&&(o["data-text"]=e.textContent||e.innerText),o}(o)),d){var a=h("span");F(a.attachShadow({mode:"closed"}),o,(function(){r(a)}))}else{var n=h("iframe",{src:"javascript:0",title:o.title||void 0,allowtransparency:!0,scrolling:"no",frameBorder:0});E(n,[0,0]),n.style.border="none";var c=function(){var a,l=n.contentWindow;try{a=l.document.body}catch(o){return void e.body.appendChild(n.parentNode.removeChild(n))}v(n,"load",c),F.call(l,a,o,(function(e){var a=function(e){var o=e.offsetWidth,r=e.offsetHeight;if(e.getBoundingClientRect){var a=e.getBoundingClientRect();o=t.max(o,_(a.width)),r=t.max(r,_(a.height))}return[o,r]}(e);n.parentNode.removeChild(n),w(n,"load",(function(){E(n,a)})),n.src=i+"#"+(n.name=function(e,o,t,r){null==o&&(o="&"),null==t&&(t="="),null==r&&(r=window.encodeURIComponent);var a=[];for(var n in e){var i=e[n];null!=i&&a.push(r(n)+t+r(i))}return a.join(o)}(o)),r(n)}))};m(n,"load",c),e.body.appendChild(n)}};o.protocol+"//"+o.host+o.pathname===i?F(e.body,p(window.name||o.hash.replace(/^#/,"")),(function(){})):function(o){if("complete"===e.readyState||"loading"!==e.readyState&&!e.documentElement.doScroll)setTimeout(o);else if(e.addEventListener){var t=g(o);w(e,"DOMContentLoaded",t),w(window,"load",t)}else k(e,/m/,o)}((function(){var o,t=e.querySelectorAll?e.querySelectorAll("a."+n):(o=[],s(e.getElementsByTagName("a"),(function(e){-1!==(" "+e.className+" ").replace(/[ \t\n\f\r]+/g," ").indexOf(" github-button ")&&o.push(e)})),o);s(t,(function(e){G(e,(function(o){e.parentNode.replaceChild(o,e)}))}))}))}(); diff --git a/docs/static/js/search.js b/docs/static/js/search.js deleted file mode 100644 index 4f1bbdd9..00000000 --- a/docs/static/js/search.js +++ /dev/null @@ -1,132 +0,0 @@ -var summaryInclude = 100 - -var fuseOptions = { - shouldSort: true, - includeMatches: true, - threshold: 0.0, - tokenize: true, - location: 0, - distance: 100, - maxPatternLength: 32, - minMatchCharLength: 2, - keys: [ - { name: "title", weight: 0.8 }, - { name: "tags", weight: 0.3 }, - { name: "categories", weight: 0.3 }, - { name: "contents", weight: 0.7 } - ] -} - -var searchQuery = param("s") -if (searchQuery) { - $("#search-query").val(searchQuery) - executeSearch(searchQuery) -} else { - $("#search-string").replaceWith(searchQuery) - $("#search-results-length").replaceWith(0) -} - -function executeSearch(searchQuery) { - $.getJSON("/index.json", function(data) { - var pages = data - var fuse = new Fuse(pages, fuseOptions) - var result = fuse.search(searchQuery) - console.log({ matches: result }) - $("#search-string").replaceWith(searchQuery) - $("#search-results-length").replaceWith(result.length) - if (result.length > 0) { - populateResults(result) - } else { - $("#search-results").append("<p>No matches found</p>") - } - }) -} - -function populateResults(result) { - $.each(result, function(key, value) { - var contents = value.item.contents - var snippet = "" - var snippetHighlights = [] - var tags = [] - if (fuseOptions.tokenize) { - snippetHighlights.push(searchQuery) - } else { - $.each(value.matches, function(matchKey, mvalue) { - if (mvalue.key == "tags" || mvalue.key == "categories") { - snippetHighlights.push(mvalue.value) - } else if (mvalue.key == "contents") { - let startIdx = mvalue.indices[0][0] - let endIdx = mvalue.indices[0][1] - let start = 0 - if (startIdx - summaryInclude > 0) { - start = startIdx - summaryInclude - } - let end = contents.length - if (endIdx + summaryInclude < contents.length) { - endIdx + summaryInclude - } - snippet += contents.substring(start, end) - snippetHighlights.push( - mvalue.value.substring( - startIdx, - endIdx - startIdx + 1 - ) - ) - } - }) - } - - if (snippet.length < 1) { - snippet += contents.substring(0, summaryInclude * 2) - } - //pull template from hugo template definition - var templateDefinition = $("#search-result-template").html() - //replace values - var output = render(templateDefinition, { - key: key, - title: value.item.title, - link: value.item.permalink, - tags: value.item.tags, - categories: value.item.categories, - snippet: snippet - }) - $("#search-results").append(output) - - $.each(snippetHighlights, function(snipkey, snipvalue) { - $("#summary-" + key).mark(snipvalue) - }) - }) -} - -function param(name) { - return decodeURIComponent( - (location.search.split(name + "=")[1] || "").split("&")[0] - ).replace(/\+/g, " ") -} - -function render(templateString, data) { - var conditionalMatches, conditionalPattern, copy - conditionalPattern = /\$\{\s*isset ([a-zA-Z]*) \s*\}(.*)\$\{\s*end\s*}/g - //since loop below depends on re.lastInxdex, we use a copy to capture any manipulations whilst inside the loop - copy = templateString - while ( - (conditionalMatches = conditionalPattern.exec(templateString)) !== null - ) { - if (data[conditionalMatches[1]]) { - //valid key, remove conditionals, leave contents. - copy = copy.replace(conditionalMatches[0], conditionalMatches[2]) - } else { - //not valid, remove entire section - copy = copy.replace(conditionalMatches[0], "") - } - } - templateString = copy - //now any conditionals removed we can do simple substitution - var key, find, re - for (key in data) { - find = "\\$\\{\\s*" + key + "\\s*\\}" - re = new RegExp(find, "g") - templateString = templateString.replace(re, data[key]) - } - return templateString -} diff --git a/docs/static/stylesheets/application.css b/docs/static/stylesheets/application.css deleted file mode 100644 index 96ed4805..00000000 --- a/docs/static/stylesheets/application.css +++ /dev/null @@ -1,1386 +0,0 @@ -html { - box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; -} -*, -:after, -:before { - box-sizing: inherit; - -moz-box-sizing: inherit; - -webkit-box-sizing: inherit; -} -html { - font-size: 62.5%; - -webkit-text-size-adjust: none; - -ms-text-size-adjust: none; - text-size-adjust: none; -} - -a, abbr, acronym, address, applet, article, aside, audio, b, big, blockquote, body, canvas, caption, center, cite, code, dd, del, details, dfn, div, dl, -dt, em, embed, fieldset, figcaption, figure, footer, form, h1, h2, h3, h4, h5, h6, header, hgroup, html, i, iframe, img, ins, kbd, label, legend, li, main, mark, menu, nav, object, ol, output, p, -pre, q, ruby, s, samp, section, small, span, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, time, tr, tt, u, ul, var, video { - margin: 0; - padding: 0; - border: 0; -} - -main { - display: block; -} -ul { - list-style: none; -} -table { - border-collapse: collapse; - border-spacing: 0; -} -td { - text-align: left; - font-weight: 400; - vertical-align: middle; -} -button { - outline: 0; - padding: 0; - background: transparent; - border: none; - font-size: inherit; -} -input { - -webkit-appearance: none; - -moz-appearance: none; - -ms-appearance: none; - -o-appearance: none; - appearance: none; - outline: none; - border: none; -} -a { - text-decoration: none; - color: inherit; -} -a, -button, -input, -label { - -webkit-tap-highlight-color: rgba(255, 255, 255, 0); - -webkit-tap-highlight-color: transparent; -} -h1, -h2, -h3, -h4, -h5, -h6 { - font-weight: inherit; -} -pre { - background: rgba(0, 0, 0, 0.05); -} -pre, -pre code { - color: rgba(0, 0, 0, 0.87); -} -.c, -.c1, -.cm, -.o { - color: rgba(0, 0, 0, 0.54); -} -.k, -.kn { - color: #a71d5d; -} -.kd, -.kt { - color: #0086b3; -} -.n.f, -.nf { - color: #795da3; -} -.nx { - color: #0086b3; -} -.s, -.s1 { - color: #183691; -} -.bp, -.mi { - color: #9575cd; -} -.icon { - font-family: Icon; - speak: none; - font-style: normal; - font-weight: 400; - font-variant: normal; - text-transform: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.icon-search:before { - content: "\e600"; -} -.icon-back:before { - content: "\e601"; -} -.icon-link:before { - content: "\e602"; -} -.icon-close:before { - content: "\e603"; -} -.icon-menu:before { - content: "\e604"; -} -.icon-forward:before { - content: "\e605"; -} -.icon-twitter:before { - content: "\e606"; -} -.icon-github:before { - content: "\e607"; -} -.icon-download:before { - content: "\e608"; -} -.icon-star:before { - content: "\e609"; -} -.icon-warning:before { - content: "\e610"; -} -.icon-note:before { - content: "\e611"; -} -a { - -webkit-transition: color 0.25s; - transition: color 0.25s; -} -.overlay { - -webkit-transition: opacity 0.25s, width 0s 0.25s, height 0s 0.25s; - transition: opacity 0.25s, width 0s 0.25s, height 0s 0.25s; -} -#toggle-drawer:checked ~ .overlay, -.toggle-drawer .overlay { - -webkit-transition: opacity 0.25s, width 0s, height 0s; - transition: opacity 0.25s, width 0s, height 0s; -} -.js .header { - -webkit-transition: background 0.6s, color 0.6s; - transition: background 0.6s, color 0.6s; -} -.js .header:before { - -webkit-transition: background 0.6s; - transition: background 0.6s; -} -.button .icon { - -webkit-transition: background 0.25s; - transition: background 0.25s; -} -body { - color: rgba(0, 0, 0, 0.87); -} -@supports (-webkit-appearance: none) { - body { - background: #e84e40; - } -} -.ios body { - background: #fff; -} -hr { - border: 0; - border-top: 1px solid rgba(0, 0, 0, 0.12); -} -.toggle-button { - cursor: pointer; - color: inherit; -} -.backdrop, -.backdrop-paper:after { - background: #fff; -} -.overlay { - background: rgba(0, 0, 0, 0.54); - opacity: 0; -} -#toggle-drawer:checked ~ .overlay, -.toggle-drawer .overlay { - opacity: 1; -} -.header { - box-shadow: 0 1.5px 3px rgba(0, 0, 0, 0.24), 0 3px 8px rgba(0, 0, 0, 0.05); - background: #e84e40; - color: #fff; -} -.ios.standalone .header:before { - background: rgba(0, 0, 0, 0.12); -} -.bar .path { - color: hsla(0, 0%, 100%, 0.7); -} -.button .icon { - border-radius: 100%; -} -.button .icon:active { - background: hsla(0, 0%, 100%, 0.12); -} -html { - height: 100%; -} -body { - position: relative; - min-height: 100%; -} -hr { - display: block; - height: 1px; - padding: 0; - margin: 0; -} -.locked { - height: 100%; - overflow: hidden; -} -.scrollable { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - overflow: auto; - -webkit-overflow-scrolling: touch; -} -.scrollable .wrapper { - height: 100%; -} -.ios .scrollable .wrapper { - margin-bottom: 2px; -} -.toggle { - display: none; -} -.toggle-button { - display: block; -} -.backdrop { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: -1; -} -.backdrop-paper { - max-width: 1200px; - height: 100%; - margin-left: auto; - margin-right: auto; -} -.backdrop-paper:after { - content: " "; - display: block; - height: 100%; - margin-left: 262px; -} -.overlay { - width: 0; - height: 0; - z-index: 3; -} -.header, -.overlay { - position: fixed; - top: 0; -} -.header { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - left: 0; - z-index: 2; - height: 56px; - padding: 4px; - overflow: hidden; -} -.ios.standalone .header { - position: absolute; -} -.bar { - display: table; - max-width: 1184px; - margin-left: auto; - margin-right: auto; -} -.bar a { - display: block; -} -.no-js .bar .button-search { - display: none; -} -.bar .path .icon:before { - vertical-align: -1.5px; -} -.button { - display: table-cell; - vertical-align: top; - width: 1%; -} -.button button { - margin: 0; - padding: 0; -} -.button button:active:before { - position: relative; - top: 0; - left: 0; -} -.button .icon { - display: inline-block; - font-size: 24px; - padding: 8px; - margin: 4px; -} -.stretch { - display: table; - table-layout: fixed; - width: 100%; -} -.header .stretch { - padding: 0 20px; -} -.stretch .title { - display: table-cell; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} -.header .stretch .title { - font-size: 18px; - padding: 13px 0; -} -.main { - max-width: 1200px; - margin-left: auto; - margin-right: auto; -} -body, -input { - font-weight: 400; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.no-fontface body, -.no-fontface input, -body, -input { - font-family: Helvetica Neue, Helvetica, Arial, sans-serif; -} -.no-fontface code, -.no-fontface kbd, -.no-fontface pre, -code, -kbd, -pre { - font-family: Courier New, Courier, monospace; -} -#toggle-drawer:checked ~ .main .drawer, -.toggle-drawer .drawer { - -webkit-transform: translateZ(0); - transform: translateZ(0); -} -.no-csstransforms3d #toggle-drawer:checked ~ .main .drawer, -.no-csstransforms3d .toggle-drawer .drawer { - display: block; -} -.project { - -webkit-transition: none; - transition: none; -} -.project .logo img { - -webkit-transition: box-shadow 0.4s; - transition: box-shadow 0.4s; -} -.repo a { - -webkit-transition: box-shadow 0.4s, opacity 0.4s; - transition: box-shadow 0.4s, opacity 0.4s; -} -.drawer .toc a.current, -.drawer .toc a:focus, -.drawer .toc a:hover { - color: #e84e40; -} -.drawer .anchor a { - border-left: 2px solid #e84e40; -} -.drawer .section { - color: rgba(0, 0, 0, 0.54); -} -.ios.standalone .project:before { - background: rgba(0, 0, 0, 0.12); -} -.project .logo img { - background: #fff; - border-radius: 100%; -} -.project:focus .logo img, -.project:hover .logo img { - box-shadow: 0 4px 7px rgba(0, 0, 0, 0.23), 0 8px 25px rgba(0, 0, 0, 0.05); -} -.repo a { - background: #00bfa5; - color: #fff; - border-radius: 3px; -} -.repo a:focus, -.repo a:hover { - box-shadow: 0 4px 7px rgba(0, 0, 0, 0.23), 0 8px 25px rgba(0, 0, 0, 0.05); - opacity: 0.8; -} -.repo a .count { - background: rgba(0, 0, 0, 0.26); - color: #fff; - border-radius: 0 3px 3px 0; -} -.repo a .count:before { - border-width: 15px 5px 15px 0; - border-color: transparent rgba(0, 0, 0, 0.26); - border-style: solid; -} -.drawer { - width: 262px; - font-size: 13px; - line-height: 1em; -} -.ios .drawer { - overflow: scroll; - -webkit-overflow-scrolling: touch; -} -.drawer .toc li a { - display: block; - padding: 14.5px 24px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} -.drawer .toc li.anchor a { - margin-left: 12px; - padding: 10px 24px 10px 12px; -} -.drawer .toc li ul { - margin-left: 12px; -} -.drawer .current + ul { - margin-bottom: 9px; -} -.drawer .section { - display: block; - padding: 14.5px 24px; -} -.drawer .scrollable { - top: 104px; - z-index: -1; -} -.drawer .scrollable .wrapper { - height: auto; - min-height: 100%; -} -.drawer .scrollable .wrapper hr { - margin: 12px 0; - margin-right: auto; -} -.drawer .scrollable .wrapper .toc { - margin: 12px 0; -} -.project { - display: block; -} -.project .banner { - display: table; - width: 100%; - height: 104px; - padding: 20px; -} -.project .logo { - display: table-cell; - width: 64px; - padding-right: 12px; -} -.project .logo img { - display: block; - width: 64px; - height: 64px; -} -.project .name { - display: table-cell; - padding-left: 4px; - font-size: 14px; - line-height: 1.25em; - vertical-align: middle; -} -.project .logo + .name { - font-size: 12px; -} -.repo { - margin: 24px 0; - text-align: center; -} -.repo li { - display: inline-block; - padding-right: 12px; - white-space: nowrap; -} -.repo li:last-child { - padding-right: 0; -} -.repo a { - display: inline-block; - padding: 0 10px 0 6px; - font-size: 12px; - line-height: 30px; - height: 30px; -} -.repo a .icon { - font-size: 18px; - vertical-align: -3px; -} -.repo a .count { - display: inline-block; - position: relative; - padding: 0 8px 0 4px; - margin: 0 -10px 0 8px; - font-size: 12px; -} -.repo a .count:before { - content: " "; - display: block; - position: absolute; - top: 0; - left: -5px; -} -.no-js .repo a .count { - display: none; -} -.drawer .toc li a { - font-weight: 700; -} -.drawer .toc li.anchor a { - font-weight: 400; -} -.drawer .section, -.repo a { - font-weight: 700; -} -.repo a { - text-transform: uppercase; -} -.repo a .count { - text-transform: none; - font-weight: 700; -} -pre span { - -webkit-transition: color 0.25s; - transition: color 0.25s; -} -.copyright a { - -webkit-transition: color 0.25s; - transition: color 0.25s; -} -.ios.standalone .article { - background: -webkit-linear-gradient(top, #fff 50%, #e84e40 0); - background: linear-gradient(180deg, #fff 50%, #e84e40 0); -} -.ios.standalone .article .wrapper { - background: -webkit-linear-gradient(top, #fff 50%, #fff 0); - background: linear-gradient(180deg, #fff 50%, #fff 0); -} -.article a, -.article h1, -.article h2 { - color: #e84e40; -} -.article code { - background: #eee; -} -.article kbd { - color: #555; - background-color: #fcfcfc; - border: 1px solid #ccc; - border-bottom-color: #bbb; - border-radius: 3px; - box-shadow: inset 0 -1px 0 #bbb; -} -.article h1 { - border-bottom: 1px solid rgba(0, 0, 0, 0.12); -} -.article a { - border-bottom: 1px dotted; -} -.article a:focus, -.article a:hover { - color: #00bfa5; -} -.article .headerlink { - color: rgba(0, 0, 0, 0.26); - border: none; -} -.article table { - box-shadow: 0 1.5px 3px rgba(0, 0, 0, 0.24), 0 3px 8px rgba(0, 0, 0, 0.05); - border-radius: 3px; -} -.article table th { - background: #ee7a70; - color: #fff; -} -.article table td { - border-top: 1px solid rgba(0, 0, 0, 0.05); -} -.article blockquote { - border-left: 2px solid rgba(0, 0, 0, 0.54); - color: rgba(0, 0, 0, 0.54); -} -.footer { - background: #e84e40; - color: #fff; -} -.footer a { - border: none; -} -.copyright { - color: rgba(0, 0, 0, 0.54); -} -.pagination a .button, -.pagination a .title { - color: #fff; -} -.pagination .direction { - color: hsla(0, 0%, 100%, 0.7); -} -.admonition { - background: #29b6f6; - color: #fff; -} -.admonition pre { - background: hsla(0, 0%, 100%, 0.3); -} -.admonition.warning { - background: #e84e40; -} -.admonition a, -.admonition a:hover { - color: #fff; -} -.article { - font-size: 14px; - line-height: 1.7em; -} -.article:after { - content: " "; - display: block; - clear: both; -} -.article .wrapper { - padding: 116px 16px 92px; -} -.ios.standalone .article { - position: absolute; - top: 56px; - right: 0; - bottom: 0; - left: 0; - overflow: auto; - -webkit-overflow-scrolling: touch; -} -.ios.standalone .article .wrapper { - position: relative; - min-height: 100%; - padding-top: 60px; - margin-bottom: 2px; -} -.article h1 { - font-size: 24px; - line-height: 1.333334em; - padding: 20px 0 42px; -} -.article h2 { - font-size: 20px; - line-height: 1.4em; - padding-top: 92px; - margin-top: -56px; -} -.ios.standalone .article h2 { - padding-top: 36px; - margin: 0; -} -.article h3, -.article h4 { - font-size: 14px; - padding-top: 76px; - margin-top: -56px; -} -.ios.standalone .article h3, -.ios.standalone .article h4 { - padding-top: 20px; - margin-top: 0; -} -.article .headerlink { - float: right; - margin-left: 20px; - font-size: 14px; -} -h1 .article .headerlink { - display: none; -} -.article ol, -.article p, -.article ul { - margin-top: 1.5em; -} -.article li, -.article li ol, -.article li ul { - margin-top: 0.75em; -} -.article li { - margin-left: 18px; -} -.article li p { - display: inline; -} -.article ul > li:before { - content: "\e602"; - display: block; - float: left; - font-family: Icon; - font-size: 16px; - width: 1.2em; - margin-left: -1.2em; - vertical-align: -0.1em; -} -.article p > code { - white-space: nowrap; - padding: 2px 4px; -} -.article kbd { - display: inline-block; - padding: 3px 5px; - line-height: 10px; -} -.article hr { - margin-top: 1.5em; -} -.article img { - max-width: 100%; -} -.article pre { - padding: 16px; - margin: 1.5em -16px 0; - line-height: 1.5em; - overflow: auto; - -webkit-overflow-scrolling: touch; -} -.article table { - margin: 3em 0 1.5em; - font-size: 13px; - overflow: hidden; -} -.no-js .article table { - display: inline-block; - max-width: 100%; - overflow: auto; - -webkit-overflow-scrolling: touch; -} -.article table th { - min-width: 100px; - font-size: 12px; - text-align: left; -} -.article table td, -.article table th { - padding: 12px 16px; - vertical-align: top; -} -.article blockquote { - padding-left: 16px; -} -.article .data { - margin: 1.5em -16px; - padding: 1.5em 0; - overflow: auto; - -webkit-overflow-scrolling: touch; - text-align: center; -} -.article .data table { - display: inline-block; - margin: 0 16px; - text-align: left; -} -.footer { - position: absolute; - bottom: 0; - left: 0; - right: 0; - padding: 0 4px; -} -.copyright { - margin: 1.5em 0; -} -.pagination { - max-width: 1184px; - height: 92px; - padding: 4px 0; - margin-left: auto; - margin-right: auto; - overflow: hidden; -} -.pagination a { - display: block; - height: 100%; -} -.pagination .next, -.pagination .previous { - position: relative; - float: left; - height: 100%; -} -.pagination .previous { - width: 25%; -} -.pagination .previous .direction, -.pagination .previous .stretch { - display: none; -} -.pagination .next { - width: 75%; - text-align: right; -} -.pagination .page { - display: table; - position: absolute; - bottom: 4px; -} -.pagination .direction { - display: block; - position: absolute; - bottom: 40px; - width: 100%; - font-size: 15px; - line-height: 20px; - padding: 0 52px; -} -.pagination .stretch { - padding: 0 4px; -} -.pagination .stretch .title { - font-size: 18px; - padding: 11px 0 13px; -} -.admonition { - margin: 20px -16px 0; - padding: 20px 16px; -} -.admonition > :first-child { - margin-top: 0; -} -.admonition .admonition-title { - font-size: 20px; -} -.admonition .admonition-title:before { - content: "\e611"; - display: block; - float: left; - font-family: Icon; - font-size: 24px; - vertical-align: -0.1em; - margin-right: 5px; -} -.admonition.warning .admonition-title:before { - content: "\e610"; -} -.article h3 { - font-weight: 700; -} -.article h4 { - font-weight: 400; - font-style: italic; -} -.article h2 a, -.article h3 a, -.article h4 a, -.article h5 a, -.article h6 a { - font-weight: 400; - font-style: normal; -} -.bar { - -webkit-transform: translateZ(0); - transform: translateZ(0); - -webkit-transition: opacity 0.2s cubic-bezier(0.75, 0, 0.25, 1), - -webkit-transform 0.4s cubic-bezier(0.75, 0, 0.25, 1); - transition: opacity 0.2s cubic-bezier(0.75, 0, 0.25, 1), - -webkit-transform 0.4s cubic-bezier(0.75, 0, 0.25, 1); - transition: opacity 0.2s cubic-bezier(0.75, 0, 0.25, 1), - transform 0.4s cubic-bezier(0.75, 0, 0.25, 1); - transition: opacity 0.2s cubic-bezier(0.75, 0, 0.25, 1), - transform 0.4s cubic-bezier(0.75, 0, 0.25, 1), - -webkit-transform 0.4s cubic-bezier(0.75, 0, 0.25, 1); -} -#toggle-search:checked ~ .header .bar, -.toggle-search .bar { - -webkit-transform: translate3d(0, -56px, 0); - transform: translate3d(0, -56px, 0); -} -.bar.search .button-reset { - -webkit-transform: scale(0.5); - transform: scale(0.5); - -webkit-transition: opacity 0.4s cubic-bezier(0.1, 0.7, 0.1, 1), - -webkit-transform 0.4s cubic-bezier(0.1, 0.7, 0.1, 1); - transition: opacity 0.4s cubic-bezier(0.1, 0.7, 0.1, 1), - -webkit-transform 0.4s cubic-bezier(0.1, 0.7, 0.1, 1); - transition: opacity 0.4s cubic-bezier(0.1, 0.7, 0.1, 1), - transform 0.4s cubic-bezier(0.1, 0.7, 0.1, 1); - transition: opacity 0.4s cubic-bezier(0.1, 0.7, 0.1, 1), - transform 0.4s cubic-bezier(0.1, 0.7, 0.1, 1), - -webkit-transform 0.4s cubic-bezier(0.1, 0.7, 0.1, 1); - opacity: 0; -} -.bar.search.non-empty .button-reset { - -webkit-transform: scale(1); - transform: scale(1); - opacity: 1; -} -.results { - -webkit-transition: opacity 0.3s 0.1s, width 0s 0.4s, height 0s 0.4s; - transition: opacity 0.3s 0.1s, width 0s 0.4s, height 0s 0.4s; -} -#toggle-search:checked ~ .main .results, -.toggle-search .results { - -webkit-transition: opacity 0.4s, width 0s, height 0s; - transition: opacity 0.4s, width 0s, height 0s; -} -.results .list a { - -webkit-transition: background 0.25s; - transition: background 0.25s; -} -.no-csstransforms3d .bar.default { - display: table; -} -.no-csstransforms3d .bar.search { - display: none; - margin-top: 0; -} -.no-csstransforms3d #toggle-search:checked ~ .header .bar.default, -.no-csstransforms3d .toggle-search .bar.default { - display: none; -} -.no-csstransforms3d #toggle-search:checked ~ .header .bar.search, -.no-csstransforms3d .toggle-search .bar.search { - display: table; -} -.bar.search { - opacity: 0; -} -.bar.search .query { - background: transparent; - color: rgba(0, 0, 0, 0.87); -} -.bar.search .query::-webkit-input-placeholder { - color: rgba(0, 0, 0, 0.26); -} -.bar.search .query:-moz-placeholder, -.bar.search .query::-moz-placeholder { - color: rgba(0, 0, 0, 0.26); -} -.bar.search .query:-ms-input-placeholder { - color: rgba(0, 0, 0, 0.26); -} -.bar.search .button .icon:active { - background: rgba(0, 0, 0, 0.12); -} -.results { - box-shadow: 0 4px 7px rgba(0, 0, 0, 0.23), 0 8px 25px rgba(0, 0, 0, 0.05); - background: #fff; - color: rgba(0, 0, 0, 0.87); - opacity: 0; -} -#toggle-search:checked ~ .main .results, -.toggle-search .results { - opacity: 1; -} -.results .meta { - background: #e84e40; - color: #fff; -} -.results .list a { - border-bottom: 1px solid rgba(0, 0, 0, 0.12); -} -.results .list a:last-child { - border-bottom: none; -} -.results .list a:active { - background: rgba(0, 0, 0, 0.12); -} -.result span { - color: rgba(0, 0, 0, 0.54); -} -#toggle-search:checked ~ .header, -.toggle-search .header { - background: #fff; - color: rgba(0, 0, 0, 0.54); -} -#toggle-search:checked ~ .header:before, -.toggle-search .header:before { - background: rgba(0, 0, 0, 0.54); -} -#toggle-search:checked ~ .header .bar.default, -.toggle-search .header .bar.default { - opacity: 0; -} -#toggle-search:checked ~ .header .bar.search, -.toggle-search .header .bar.search { - opacity: 1; -} -.bar.search { - margin-top: 8px; -} -.bar.search .query { - font-size: 18px; - padding: 13px 0; - margin: 0; - width: 100%; - height: 48px; -} -.bar.search .query::-ms-clear { - display: none; -} -.results { - position: fixed; - top: 0; - left: 0; - width: 0; - height: 100%; - z-index: 1; - overflow-y: scroll; - -webkit-overflow-scrolling: touch; -} -.results .scrollable { - top: 56px; -} -#toggle-search:checked ~ .main .results, -.toggle-search .results { - width: 100%; - overflow-y: visible; -} -.results .meta { - font-weight: 700; -} -.results .meta strong { - display: block; - font-size: 11px; - max-width: 1200px; - margin-left: auto; - margin-right: auto; - padding: 16px; -} -.results .list a { - display: block; -} -.result { - max-width: 1200px; - margin-left: auto; - margin-right: auto; - padding: 12px 16px 16px; -} -.result h1 { - line-height: 24px; -} -.result h1, -.result span { - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} -.result span { - font-size: 12px; -} -.no-csstransforms3d .results { - display: none; -} -.no-csstransforms3d #toggle-search:checked ~ .main .results, -.no-csstransforms3d .toggle-search .results { - display: block; - overflow: auto; -} -.meta { - text-transform: uppercase; - font-weight: 700; -} -@media only screen and (min-width: 960px) { - .backdrop { - background: #f2f2f2; - } - .backdrop-paper:after { - box-shadow: 0 1.5px 3px rgba(0, 0, 0, 0.24), 0 3px 8px rgba(0, 0, 0, 0.05); - } - .button-menu { - display: none; - } - .drawer { - float: left; - height: auto; - margin-bottom: 96px; - padding-top: 80px; - } - .drawer, - .drawer .scrollable { - position: static; - } - .article { - margin-left: 262px; - } - .footer { - z-index: 4; - } - .copyright { - margin-bottom: 64px; - } - .results { - height: auto; - top: 64px; - } - .results .scrollable { - position: static; - max-height: 413px; - } -} -@media only screen and (max-width: 959px) { - #toggle-drawer:checked ~ .overlay, - .toggle-drawer .overlay { - width: 100%; - height: 100%; - } - .drawer { - -webkit-transform: translate3d(-262px, 0, 0); - transform: translate3d(-262px, 0, 0); - -webkit-transition: -webkit-transform 0.25s cubic-bezier(0.4, 0, 0.2, 1); - transition: -webkit-transform 0.25s cubic-bezier(0.4, 0, 0.2, 1); - transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1); - transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1), - -webkit-transform 0.25s cubic-bezier(0.4, 0, 0.2, 1); - } - .no-csstransforms3d .drawer { - display: none; - } - .drawer { - background: #fff; - } - .project { - box-shadow: 0 1.5px 3px rgba(0, 0, 0, 0.24), 0 3px 8px rgba(0, 0, 0, 0.05); - background: #e84e40; - color: #fff; - } - .drawer { - position: fixed; - z-index: 4; - } - #toggle-search:checked ~ .main .results, - .drawer, - .toggle-search .results { - height: 100%; - } -} -@media only screen and (min-width: 720px) { - .header { - height: 64px; - padding: 8px; - } - .header .stretch { - padding: 0 16px; - } - .header .stretch .title { - font-size: 20px; - padding: 12px 0; - } - .project .name { - margin: 26px 0 0 5px; - } - .article .wrapper { - padding: 128px 24px 96px; - } - .article .data { - margin: 1.5em -24px; - } - .article .data table { - margin: 0 24px; - } - .article h2 { - padding-top: 100px; - margin-top: -64px; - } - .ios.standalone .article h2 { - padding-top: 28px; - margin-top: 8px; - } - .article h3, - .article h4 { - padding-top: 84px; - margin-top: -64px; - } - .ios.standalone .article h3, - .ios.standalone .article h4 { - padding-top: 20px; - margin-top: 0; - } - .article pre { - padding: 1.5em 24px; - margin: 1.5em -24px 0; - } - .footer { - padding: 0 8px; - } - .pagination { - height: 96px; - padding: 8px 0; - } - .pagination .direction { - padding: 0 56px; - bottom: 40px; - } - .pagination .stretch { - padding: 0 8px; - } - .admonition { - margin: 20px -24px 0; - padding: 20px 24px; - } - .bar.search .query { - font-size: 20px; - padding: 12px 0; - } - .results .scrollable { - top: 64px; - } - .results .meta strong { - padding: 16px 24px; - } - .result { - padding: 16px 24px 20px; - } -} -@media only screen and (min-width: 1200px) { - .header { - width: 100%; - } - .drawer .scrollable .wrapper hr { - width: 48px; - } -} -@media only screen and (orientation: portrait) { - .ios.standalone .header { - height: 76px; - padding-top: 24px; - } - .ios.standalone .header:before { - content: " "; - position: absolute; - top: 0; - left: 0; - z-index: 3; - width: 100%; - height: 20px; - } - .ios.standalone .drawer .scrollable { - top: 124px; - } - .ios.standalone .project { - padding-top: 20px; - } - .ios.standalone .project:before { - content: " "; - position: absolute; - top: 0; - left: 0; - z-index: 3; - width: 100%; - height: 20px; - } - .ios.standalone .article { - position: absolute; - top: 76px; - right: 0; - bottom: 0; - left: 0; - } - .ios.standalone .results .scrollable { - top: 76px; - } -} -@media only screen and (orientation: portrait) and (min-width: 720px) { - .ios.standalone .header { - height: 84px; - padding-top: 28px; - } - .ios.standalone .results .scrollable { - top: 84px; - } -} -@media only screen and (max-width: 719px) { - .bar .path { - display: none; - } -} -@media only screen and (max-width: 479px) { - .button-github, - .button-twitter { - display: none; - } -} -@media only screen and (min-width: 720px) and (max-width: 959px) { - .header .stretch { - padding: 0 24px; - } -} -@media only screen and (min-width: 480px) { - .pagination .next, - .pagination .previous { - width: 50%; - } - .pagination .previous .direction { - display: block; - } - .pagination .previous .stretch { - display: table; - } -} -@media print { - .drawer, - .footer, - .header, - .headerlink { - display: none; - } - .article .wrapper { - padding-top: 0; - } - .article pre, - .article pre * { - color: rgba(0, 0, 0, 0.87) !important; - } - .article pre { - border: 1px solid rgba(0, 0, 0, 0.12); - } - .article table { - border-radius: none; - box-shadow: none; - } - .article table th { - color: #e84e40; - } -} diff --git a/docs/static/stylesheets/custom-palettes.css b/docs/static/stylesheets/custom-palettes.css deleted file mode 100644 index ad7e2a2f..00000000 --- a/docs/static/stylesheets/custom-palettes.css +++ /dev/null @@ -1,126 +0,0 @@ -@import url('https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,300,400'); - -@supports (-webkit-appearance:none) { - .palette-primary-spalding-gray { - background: rgb(145, 132, 121) - } -} - -.palette-primary-spalding-gray .footer, -.palette-primary-spalding-gray .header { - background: rgb(145, 132, 121) -} - -.palette-primary-spalding-gray .drawer .toc a.current, -.palette-primary-spalding-gray .drawer .toc a:focus, -.palette-primary-spalding-gray .drawer .toc a:hover { - color: rgb(145, 132, 121) -} - -.palette-primary-spalding-gray .drawer .anchor a { - border-left: 2px solid rgb(145, 132, 121); -} - -.ios.standalone .palette-primary-spalding-gray .article { - background: -webkit-linear-gradient(top, #fff 50%, rgb(145, 132, 121) 0); - background: linear-gradient(180deg, #fff 50%, rgb(145, 132, 121) 0); -} - -.palette-primary-spalding-gray .article a, -.palette-primary-spalding-gray .article code, -.palette-primary-spalding-gray .article h1, -.palette-primary-spalding-gray .article h2 { - color: rgb(145, 132, 121) -} - -.palette-primary-spalding-gray .article .headerlink { - color: rgba(0, 0, 0, .26) -} - -.palette-primary-spalding-gray .article table th { - background: #6d6259; -} - -.palette-primary-spalding-gray .results .meta { - background: rgb(145, 132, 121) -} - -.palette-accent-spalding-gray .article a:focus, -.palette-accent-spalding-gray .article a:hover { - color: #bb8550; -} - -.palette-accent-spalding-gray .repo a { - background: #bb8550; -} - -@media only screen and (max-width:959px) { - .palette-primary-spalding-gray .project { - background: rgb(145, 132, 121) - } -} - -@supports (-webkit-appearance:none) { - .palette-primary-spalding-blue { - background: rgb(120, 133, 145); - } -} - -.palette-primary-spalding-blue .footer, -.palette-primary-spalding-blue .header { - background: rgb(120, 133, 145); -} - -.palette-primary-spalding-blue .drawer .toc a.current, -.palette-primary-spalding-blue .drawer .toc a:focus, -.palette-primary-spalding-blue .drawer .toc a:hover { - color: rgb(120, 133, 145); -} - -.palette-primary-spalding-blue .drawer .anchor a { - border-left: 2px solid rgb(120, 133, 145); -} - -.ios.standalone .palette-primary-spalding-blue .article { - background: -webkit-linear-gradient(top, #fff 50%, rgb(120, 133, 145) 0); - background: linear-gradient(180deg, #fff 50%, rgb(120, 133, 145) 0); -} - -.palette-primary-spalding-blue .article a, -.palette-primary-spalding-blue .article code, -.palette-primary-spalding-blue .article h1, -.palette-primary-spalding-blue .article h2 { - color: rgb(120, 133, 145); -} - -.palette-primary-spalding-blue .article .headerlink { - color: rgba(0, 0, 0, .26) -} - -.palette-primary-spalding-blue .article table th { - background: #596d63; -} - -.palette-primary-spalding-blue .results .meta { - background: rgb(120, 133, 145); -} - -.palette-accent-spalding-blue .article a:focus, -.palette-accent-spalding-blue .article a:hover { - color: #787991; -} - -.palette-accent-spalding-blue .repo a { - background: #596d63; -} - -@media only screen and (max-width:959px) { - .palette-primary-spalding-blue .project { - background: rgb(120, 133, 145); - } -} - -header .title { - font-family: 'Source Sans Pro', 'Roboto', Helvetica, Arial, sans-serif; - font-weight: 300; -} diff --git a/docs/static/stylesheets/search.css b/docs/static/stylesheets/search.css deleted file mode 100644 index ad9ef77c..00000000 --- a/docs/static/stylesheets/search.css +++ /dev/null @@ -1,22 +0,0 @@ -#search-results cite a { - text-decoration: none; - border-bottom: 0px solid; - color: rgb(120, 133, 145); - font-style: normal; - font-size: 85%; -} - -#search-results h3 a { - text-decoration: none; - border-bottom: 0px solid; -} - -#search-results .search-result { - /* background-color: rgba(120, 133, 145, 0.1); */ - color: rgb(72, 66, 60); -} - -mark{ - background: rgb(255, 207, 155); - color: black; -} |
