diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index 6dcba90b233..7c9599a1374 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -1,77 +1,119 @@ name: Bug Report -description: Report a bug +description: Something is not working? Report a bug in Material for MkDocs. + body: - - type: checkboxes - attributes: - label: Contribution guidelines - description: Please read the contribution guidelines before proceeding. - options: - - label: I've read the [contribution guidelines](https://github.com/squidfunk/mkdocs-material/blob/master/CONTRIBUTING.md) and wholeheartedly agree - required: true - - type: checkboxes + - type: textarea + id: context attributes: - label: I've found a bug and checked that ... - description: Make sure that your request fulfills all of the following requirements. If one requirement cannot be satisfied, explain in detail why. - options: - - label: ... the problem doesn't occur with the `mkdocs` or `readthedocs` themes - required: true - - label: ... the problem persists when all overrides are removed, i.e. `custom_dir`, `extra_javascript` and `extra_css` - - label: ... the documentation does not mention anything about my problem - - label: ... there are no open or closed issues that are related to my problem + label: Context + description: >- + This field is optional. You may provide additional context for the bug + you want to report, helping us to understand what you are working on and + what you are trying to achieve. If the context is not relevant, you can + leave this field empty. [More](https://squidfunk.github.io/mkdocs-material/bug-report/#context) + validations: + required: false + - type: textarea + id: bug-description attributes: - label: Description - description: Please provide a brief description of the bug in 1-2 sentences. + label: Bug description + description: >- + Please give a detailed description of the bug. Explain where Material + for MkDocs does not behave as you would expect it to. Be as specific as + possible. If you have found a workaround or a fix for the problem, + please let us maintainers (and all other users) know. [More](https://squidfunk.github.io/mkdocs-material/bug-report/#bug-description) validations: required: true + - type: textarea + id: related-links attributes: - label: Expected behaviour - description: Please describe precisely what you'd expect to happen. + label: Related links + description: >- + Please list all links to the sections of + [our documentation](https://squidfunk.github.io/mkdocs-material) that + are relevant to the bug, in order to show that you have consulted and + thoroughly read it. Additionally, list links to possibly related issues + or discussions you encountered when searching our issue tracker. + [More](https://squidfunk.github.io/mkdocs-material/bug-report/#related-links) + value: |- + - [Bug reporting](https://squidfunk.github.io/mkdocs-material/bug-report/) + - validations: required: true + - type: textarea + id: reproduction attributes: - label: Actual behaviour - description: Please describe precisely what is actually happening. + label: Reproduction + description: >- + Please create a __minimal reproduction__ for the bug. First, read our + [reproduction guide](https://squidfunk.github.io/mkdocs-material/bug-report/reproduction/) + that explains the necessary steps, then use the [built-in info plugin](https://squidfunk.github.io/mkdocs-material/bug-report/reproduction/#creating-a-zip-file) (mandatory) to create a self-contained + .zip file with the reproduction. Without a reproduction, it can be + challenging to fix the bug. [More](https://squidfunk.github.io/mkdocs-material/bug-report/#reproduction) + placeholder: |- + Drag and drop .zip file with reproduction here. validations: required: true + - type: textarea + id: steps-to-reproduce attributes: label: Steps to reproduce - description: Please describe the steps to reproduce the bug. + description: >- + Please provide a detailed list of instructions, guiding us maintainers + through the required steps, helping us to recreate the problem using the + minimal reproduction you provided. Be as specific as possible and as + verbose as necessary – try not to leave anything out. [More](https://squidfunk.github.io/mkdocs-material/bug-report/reproduction/#steps-to-reproduce) placeholder: |- 1. ... 2. ... 3. ... validations: required: true - - type: textarea - attributes: - label: Package versions - description: Please provide all package versions, i.e. run the commands in backticks on a shell. - value: |- - - Python: `python --version` - - MkDocs: `mkdocs --version` - - Material: `pip show mkdocs-material | grep -E ^Version` - validations: - required: true - - type: textarea + + - type: dropdown + id: browser attributes: - label: Configuration - description: Please provide a minimal (!) `mkdocs.yml` to reproduce the bug. - placeholder: |- - site_name: My Docs - site_url: https://example.com/docs - render: yaml - validations: - required: true - - type: textarea + label: Browser + description: >- + If the bug only happens in __specific browsers__, please select them + from the dropdown below. If your browser is not listed or the version + is relevant, you may select _Other_ and provide more details in the + field above. [More](https://squidfunk.github.io/mkdocs-material/bug-report/reproduction/#browser) + multiple: true + options: + - Chrome + - Safari + - Edge + - Firefox + - Opera + - Other + + - type: checkboxes + id: checklist attributes: - label: System information - description: Please provide your operating system and browser type and version. - value: |- - - Operating system: ... - - Browser: ... - validations: - required: true + label: Before submitting + description: >- + Please ensure your bug report fulfills all of the following requirements. + If you are not sure what a specific requirement means, follow the link + to learn about it and understand why it is necessary before ticking the + box. This will save the maintainers and you valuable time. + options: + - label: >- + I have read and followed the [bug reporting guidelines](https://squidfunk.github.io/mkdocs-material/bug-report/). + required: true + - label: >- + I have attached links to [the documentation](https://squidfunk.github.io/mkdocs-material), + and possibly related [issues](https://github.com/squidfunk/mkdocs-material/issues) + or [discussions](https://github.com/squidfunk/mkdocs-material/discussions). + required: true + - label: >- + I assure that I have [removed all customizations](https://squidfunk.github.io/mkdocs-material/bug-report/#remove-customizations) + before submitting this bug report. + required: true + - label: >- + I have attached a [minimal reproduction](https://squidfunk.github.io/mkdocs-material/bug-report/reproduction/). + required: true diff --git a/.github/ISSUE_TEMPLATE/translate.yml b/.github/ISSUE_TEMPLATE/translate.yml index 89ca9587632..c897fc9ecf8 100644 --- a/.github/ISSUE_TEMPLATE/translate.yml +++ b/.github/ISSUE_TEMPLATE/translate.yml @@ -24,13 +24,15 @@ body: {% macro t(key) %}{{ { "language": "en", "direction": "ltr", + "action.edit": "Edit this page", + "action.skip": "Skip to content", + "action.view": "View source of this page", "announce.dismiss": "Don't show this again", "clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "consent.accept": "Accept", "consent.manage": "Manage settings", "consent.reject": "Reject", - "edit.link": "Edit this page", "footer": "Footer", "footer.next": "Next", "footer.previous": "Previous", @@ -52,10 +54,9 @@ body: "search.result.term.missing": "Missing", "select.language": "Select language", "select.version": "Select version", - "skip.link": "Skip to content", + "source": "Go to repository", "source.file.date.created": "Created", "source.file.date.updated": "Last update", - "source.link": "Go to repository", "tabs": "Tabs", "toc": "Table of contents", "top": "Back to top" diff --git a/.gitignore b/.gitignore index 663d24398a3..153118cc10b 100644 --- a/.gitignore +++ b/.gitignore @@ -45,6 +45,10 @@ .eslintcache __pycache__ +# Examples +example +example.zip + # ----------------------------------------------------------------------------- # General # ----------------------------------------------------------------------------- diff --git a/.stylelintrc b/.stylelintrc index 2fea87127e1..395ee8ba587 100644 --- a/.stylelintrc +++ b/.stylelintrc @@ -103,6 +103,7 @@ "dppx", "deg", "em", + "fr", "mm", "ms", "px", diff --git a/.vscode/launch.json b/.vscode/launch.json index 90f16e1f98c..7a34ada8de1 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -10,7 +10,7 @@ "--incognito" ], "url": "http://localhost:8000/mkdocs-material/", - "webRoot": ".", + "webRoot": "${workspaceFolder}", "smartStep": true } ] diff --git a/CHANGELOG b/CHANGELOG index 763331419b2..ca2ecfd0477 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,46 @@ +mkdocs-material-9.0.0 (2023-01-02) + + Additions and improvements + + * Added support for rich search previews + * Added support for tokenizer lookahead + * Added support for better search highlighting + * Added support for excluding content from search + * Added support for configurable search pipeline + * Added support for offline search via offline plugin + * Added support for multiple instances of built-in tags plugin + * Added support for removing copy-to-clipboard button + * Added support for removing footer navigation + * Added support for button to view the source of a page + * Improved readability of query string for search sharing + * Improved stability of search plugin when using --dirtyreload + * Improved search result group button, now sticky and stable + * Updated Norwegian translations + * Updated MkDocs to 1.4.2 + + Removals + + * Removed deprecated alternative admonition qualifiers + * Removed :is() selectors (in output) for easier overriding + * Removed .title suffix on translations + * Removed legacy method for providing page title in feedback URL + * Removed support for indexing only titles in search + * Removed support for custom search transforms + * Removed support for custom search workers + * Removed temporary snow feature (easter egg) + + Fixes + + * Fixed Norwegian and Korean language code + * Fixed detection of composition events in search interface + * Fixed search plugin not using title set via front matter + * Fixed search highlighting of tags + * Fixed search sharing URL using post transformed string + * Fixed theme-color meta tag getting out-of-sync with palette toggle + * Fixed prev/next page keyboard navigation when footer is not present + * Fixed overflowing navigation tabs not being scrollable + * Fixed inclusion of code block line numbers from search + mkdocs-material-8.5.11+insiders-4.27.0 (2022-12-20) * Added built-in typeset plugin to preserve formatting in sidebars diff --git a/docs/.meta.yml b/docs/.meta.yml deleted file mode 100644 index 63b57c1f04a..00000000000 --- a/docs/.meta.yml +++ /dev/null @@ -1 +0,0 @@ -ᴴₒᴴₒᴴₒ: true diff --git a/docs/blog/posts/blog-support-just-landed.md b/docs/blog/posts/blog-support-just-landed.md index 641d4a4fda8..6b65a704858 100644 --- a/docs/blog/posts/blog-support-just-landed.md +++ b/docs/blog/posts/blog-support-just-landed.md @@ -64,7 +64,7 @@ mkdocs new . This will create the following structure: -``` +``` { .sh .no-copy } . ├─ docs/ │ └─ index.md @@ -118,7 +118,7 @@ first post. All blog posts are written with the [exact same Markdown flavor] as already included with Material for MkDocs. First, create a folder called `posts` with a file called `hello-world.md`: -``` sh +``` { .sh .no-copy } . ├─ docs/ │ ├─ posts/ diff --git a/docs/bug-report/index.md b/docs/bug-report/index.md new file mode 100644 index 00000000000..3bf2b6f3a9f --- /dev/null +++ b/docs/bug-report/index.md @@ -0,0 +1,315 @@ +# Bug reporting + +Material for MkDocs is an actively maintained project that we constantly strive +to improve. With a project of this size and complexity, bugs may occur. If you +think you have discovered a bug, you can help us by submitting an issue in our +public [issue tracker], following this guide. + + [issue tracker]: https://github.com/squidfunk/mkdocs-material/issues + +## Before creating an issue + +With more than 20.000 users, issues are created every other day. The maintainers +of this project are trying very hard to keep the number of open issues down by +fixing bugs as fast as possible. By following this guide, you will know exactly +what information we need to help you quickly. + +__But first, please try the following things before creating an issue.__ + +### Upgrade to latest version + +Chances are, that the bug you discovered was already fixed in a subsequent +version. Thus, before reporting an issue, ensure that you're running the +[latest version] of Material for MkDocs. Please consult our [upgrade guide] to +learn how to upgrade to the latest version. + +!!! warning "Bug fixes are not backported" + + Please understand that only bugs that occur in the latest version of + Material for MkDocs will be addressed. Also, in order to reduce duplicate + efforts, fixes cannot be backported to earlier versions. + +### Remove customizations + +If you're using [customizations] like [additional CSS], [JavaScript], or +[theme extension], please remove them from `mkdocs.yml` before reporting a bug. +We can't offer official support for bugs that might hide in your overrides, so +make sure to omit the following settings from `mkdocs.yml`: + + - [`theme.custom_dir`][theme.custom_dir] + - [`theme.hooks`][theme.hooks] + - [`extra_css`][extra_css] + - [`extra_javascript`][extra_javascript] + +If, after removing those settings, the bug is gone, the bug is likely caused by +your customizations. A good idea is to add them back gradually to narrow down +the root cause of the problem. If you did a major version upgrade, make sure you +adjusted all partials you have overridden. + +!!! warning "Customizations mentioned in our documentation" + + A handful of the features Material for MkDocs offers can only be implemented + with customizations. If you find a bug in any of the customizations [that + our documentation explicitly mentions], you are of course encouraged to + report it. + +__Don't be shy to ask on our [discussion board] for help if you run into +problems.__ + + [latest version]: ../changelog/index.md + [upgrade guide]: ../upgrade.md + [Customizations]: ../customization.md + [additional CSS]: ../customization.md#additional-css + [JavaScript]: ../customization.md#additional-javascript + [theme extension]: ../customization.md#extending-the-theme + [theme.custom_dir]: https://www.mkdocs.org/user-guide/configuration/#custom_dir + [theme.hooks]: https://www.mkdocs.org/user-guide/configuration/#hooks + [extra_css]: https://www.mkdocs.org/user-guide/configuration/#extra_css + [extra_javascript]: https://www.mkdocs.org/user-guide/configuration/#extra_javascript + [discussion board]: https://github.com/squidfunk/mkdocs-material/issues + [StackOverflow]: https://stackoverflow.com + [that our documentation explicitly mentions]: ?q="extends+base" + +### Search for solutions + +At this stage, we know that the problem persists in the latest version and is +not caused by any of your customizations. However, it's possible that the issue +might be the result of a small typo or a syntactical error in a configuration +file, e.g. `mkdocs.yml`. + +Now, before you go through the trouble of creating a bug report, that we +maintainers close right away with a link to the relevant documentation section +or another already reported or closed issue or discussion, you can save time for +us and yourself by doing some research: + +1. [Search our documentation] and look for the relevant sections that might + possibly be related to your problem. If found, make sure that you configured + everything correctly.[^1] + + [^1]: + When adding lines to `mkdocs.yml`, make sure you are preserving the + indentation as mentioned in the documentation, since YAML is a + whitespace-sensitive language. Many reported issues turn out to be + configuration errors. + +2. [Search our issue tracker][issue tracker], as another user might already + have reported the same problem, and there might even be a known workaround + or fix for it. Thus, no need to create a new issue. + +3. [Search our discussion board][discussion board] to learn if other users + are struggeling with similar problems, and work together with our + great community towards a solution. Many problems are solved here. + +__Keep track of all search terms and relevant links, you'll need +them in the bug report.__[^2] + + [^2]: + We might be using terminology in our documentation different from yours, + but mean the same. When you include the search terms and related links + in your bug report, you help us to adjust and improve the documentation. + +--- + +At this point, when you still haven't found a solution to your problem, we +encourage you to create an issue, because it's now very likely that you +stumbled over something we don't know yet. Read the next section to learn +how to create a complete and helpful bug report. + + [Search our documentation]: ?q= + +## Issue template + +We have created a new issue template to make the bug reporting process as simple +as possible and more efficient for the community and for us. It is the result of +our experience answering and fixing more than 1,600 issues (and counting), and +consists of the following parts: + +- [Title] +- [Context] optional +- [Bug description] +- [Related links] +- [Reproduction] +- [Steps to reproduce] +- [Browser] optional +- [Checklist] + + [Title]: #title + [Context]: #context + [Bug description]: #bug-description + [Related links]: #related-links + [Reproduction]: #reproduction + [Steps to reproduce]: #steps-to-reproduce + [Browser]: #browser + [Checklist]: #checklist + +### Title + +A good title is short and descriptive. It should be a one-sentence executive +summary of the issue, so the impact and severity of the bug you want to report +can be inferred from the title. + +| | Example | +| -------- | -------- | +| :material-check:{ style="color: #4DB6AC" } __Clear__ | Built-in `typeset` plugin changes precedence of nav title over `h1` +| :material-close:{ style="color: #EF5350" } __Wordy__ | The built-in `typeset` plugin changes the precedence of the nav title over the document headline +| :material-close:{ style="color: #EF5350" } __Unclear__ | Title does not work +| :material-close:{ style="color: #EF5350" } __Generic__ | Please help + +### Context optional { #context } + +Before describing the bug, you can provide additional context that can be +helpful to understand what you were trying to achieve. Explain the circumstances +in which you're using Material for MkDocs, and what you _think_ might be +relevant. Don't write about the bug here. + +> __Why this might be helpful__: some errors only manifest in specific settings, +> environments or edge cases, for example when your documentation contains +> thousands of documents. + +### Bug description + +Now, to the bug you want to report. Provide a clear, focused, specific and +concise summary of the bug you encountered. Explain why you think this is a bug +that should be reported to Material for MkDocs, and not to one of its +dependencies.[^3] Adhere to the following principles: + + [^3]: + Sometimes, users report bugs on our [issue tracker] that are caused by one + of our upstream dependencies, including [MkDocs], [Python Markdown], + [Python Markdown Extensions] or third-party plugins. A good rule of thumb is + to change the [`theme.name`][theme.name] to `mkdocs` or `readthedocs`, and + check if the problem persists. If it does, the problem is likely not + related to Material for MkDocs and should be reported upstream. When in + doubt, use our [discussion board] to ask for help. + +- __Explain the what, not the how__ – don't explain + [how to reproduce the bug][Steps to reproduce] here, we're getting there. + Focus on articulating the problem and its impact as clearly as possible. + +- __Keep it short and concise__ – if the bug can be precisely explained in one + or two sentences, perfect. Don't inflate it – maintainers and future users + will be grateful, having to read less. + +- __One bug at a time__ – if you encountered several unrelated bugs, please + create separate issues for them. Don't report them in the same issue, as + this makes attribution difficult. + +--- + +:material-run-fast: __Stretch goal__ – if you found a workaround or a way to fix +the bug, you can help other users to temporarily mitigate the problem before +we maintainers can fix the bug in our code base. + +> __Why we need this__: in order for us to understand the issue at hand, we +> need a clear description of the problem and its impact, which is essential +> for triage and prioritization. + + [MkDocs]: https://www.mkdocs.org + [Python Markdown]: https://python-markdown.github.io/extensions/ + [Python Markdown Extensions]: https://facelessuser.github.io/pymdown-extensions/ + [theme.name]: https://www.mkdocs.org/user-guide/configuration/#theme + +### Related links + +Of course, prior to reporting a bug, you have read our documentation and +[could not find a working solution][search for solutions]. Please share links +to all sections of our documentation that might be relevant to the bug, as it +helps us gradually improve it. + +Additionally, since you have searched our [issue tracker] and [discussion board] +before reporting an issue, and have possibly found several issues or +discussions, include those as well. Every link to an issue or discussion creates +a backlink, guiding us maintainers and other users in the future. + +--- + +:material-run-fast: __Stretch goal__ – if you also include the search terms you +used when [searching for a solution][search for solutions] to your problem, you +make it easier for us maintainers to improve the documentation. + +> __Why we need this__: related links help us better understand what you were +> trying to achieve and whether sections of our documentation need to be +> adjusted, extended or overhauled. + + [search for solutions]: #search-for-solutions + +### Reproduction + +A minimal reproduction is at the heart of every well-written bug report, as +it allows us maintainers to quickly recreate the necessary conditions to inspect +the bug and quickly find its root cause. It's proven fact that issues with +concise and small reproductions can be fixed much faster. + +[:material-bug: Create reproduction][Create reproduction]{ .md-button .md-button--primary } + +--- + +After you created the reproduction, you should have a .zip file, ideally not +larger than 1 MB. Just drag and drop the .zip file into this field, which will +automatically upload it to GitHub. + +> __Why we need this__: if an issue contains no minimal reproduction, or just +> a link to a repositority with thousands of files, the maintainers would need +> to invest a lot of time into trying to recreate the right conditions to even +> inspect the bug, let alone fix it. + +!!! warning "Don't share links to repositories" + + While we know that it is good practice among developers to include a link + to a repository with the bug report, we currently don't support those in our + process. The reason is that the reproduction that is automatically + produced by the [built-in info plugin] contains all of the necessary + environment information that is often forgotten to be included. + + Additionally, there are many non-technical users of Material for MkDocs that + have trouble creating repositories. + + [Create reproduction]: reproduction.md + [built-in info plugin]: reproduction.md#creating-a-zip-file + +### Steps to reproduce + +At this point, you provided us with enough information to understand the bug, +and you gave us a reproduction that we can run and inspect. However, when we +run your reproduction, it might not be immediately apparent how we can see +the bug in action. + +Next, please list the specific steps we should follow when running your +reproduction to observe the bug. Keep the steps short and concise and make sure +to not leave anything out. Use simple language as you would explain it to a five +year old and focus on continuity. + +> __Why we need this__: we must know how to navigate your reproduction in order +> to observe the bug, as some bugs only occur at certain viewports or in +> specific conditions. + +### Browser optional { #browser } + +If you're reporting a bug that only happens in one or more _specific_ browsers, +we need to know which browsers are affected. This field is optional, as it is +only relevant when the bug you are reporting does not involve a crash when +[previewing] or [building] your site. + +> __Why we need this__: some bugs only occur in specific browsers or versions. +> Since now, almost all browser are evergreen, we usually don't need to know the +> version in which it occurs, but we might ask for it later. When in doubt, add +> the browser version as the first step in the field above. + + [previewing]: http://localhost:8000/mkdocs-material/creating-your-site/#previewing-as-you-write + [building]: http://localhost:8000/mkdocs-material/creating-your-site/#building-your-site + +### Checklist + +Thanks for following the guide, and creating a high quality and complete bug +report – you are almost done. This section ensures that you have read this guide +and have worked to your best knowledge to provide us with everything we need to +know to help you. + +__We'll take it from here.__ + +## Incomplete issues + +Please understand, that we reserve us the right to close incomplete issues which +do not contain minimal reproductions, or do not adhere to the quality standards +and requirements mentioned in this document. Issues can be reopened, when the +missing information has been provided. diff --git a/docs/bug-report/reproduction.md b/docs/bug-report/reproduction.md new file mode 100644 index 00000000000..f6ef17466aa --- /dev/null +++ b/docs/bug-report/reproduction.md @@ -0,0 +1,109 @@ +# Creating a reproduction + +A reproduction is a simplified version of a bug that demonstrates the specific +scenario in which the bug occurred. It includes all necessary minimal settings +and instructions, and should be as simple as possible while still demonstrating +the issue. + +## Guide + +### Environment optional { #environment } + +We recommend using a [virtual environment], which is an isolated Python runtime. +If you are in a virtual environment, any packages that you install or upgrade +will be local to the environment. If you run into problems, you can +just delete and recreate the environment. It's trivial to set up. + +- Create a new virtual environment with: + + ``` + python3 -m venv venv + ``` + +- Activate the environment with: + + ``` sh + . venv/bin/activate # (1)! + ``` + + 1. Your terminal should now print `(venv)` before the prompt, which is + how you know that you are inside an environment. + +- Exit the environment with: + + ``` + deactivate + ``` + + [virtual environment]: https://realpython.com/what-is-pip/#using-pip-in-a-python-virtual-environment + +### Minimal reproduction + +By following the instructions below, you will set up a skeleton project in order +to create a minimal reproduction. As mentioned above, we recommend using a +[virtual environment], so create a new folder in your working directory, and +inside it, a new virtual environment. Next: + +1. As mentioned in our [bug reporting guide], ensure that you're running the + latest version of Material for MkDocs which might already include a fix for + the bug: + + ``` + pip install --upgrade --force-reinstall mkdocs-material + ``` + +2. Bootstrap a new documentation project by using the `mkdocs` executable, + which you use as a basis for the reproduction. It's essential to create a + new, empty project for this: + + ``` + mkdocs new . + ``` + + Start, by adding the [minimal configuration] in `mkdocs.yml`: + + ``` yaml + theme: + name: material + ``` + +3. Now, only add the necessary settings to `mkdocs.yml`, to keep the + reproduction minimal. If you are creating a reproduction for a rendering + bug, create only the necessary amount of Markdown documents. __Repeat this + step until the bug you want to report can be observed.__ + +4. As a last step before packing everything into a .zip file, double check all + settings and documents if they are essential to the reproduction, which + means that the bug does not occur when they are omitted. Remove all + non-essential lines and files. + + [bug reporting guide]: index.md#upgrade-to-latest-version + [minimal configuration]: ../../creating-your-site/#minimal-configuration + +### Creating a .zip file + +Material for MkDocs 9.0.0 includes a new plugin that is solely intended for creating +reproductions for bug reports. When the built-in info plugin is enabled, MkDocs +will add all relevant files to a .zip, print a summary to the terminal and +exit. Add the following lines to `mkdocs.yml`: + +``` yaml +plugins: + - info +``` + +Now, when running `mkdocs build`, a file called `example.zip` is automatically +created, containing the minimal reproduction you can now attach to your bug +report. + +``` +INFO - Started archive creation for bug report +INFO - Archive successfully created: + + example/.dependencies.json 859.0 B + example/.versions.log 83.0 B + example/docs/index.md 282.0 B + example/mkdocs.yml 56.0 B + + example.zip 1.8 kB +``` diff --git a/docs/changelog/index.md b/docs/changelog/index.md index 529fcdb405a..42bb5e01e96 100644 --- a/docs/changelog/index.md +++ b/docs/changelog/index.md @@ -2,64 +2,109 @@ ## Material for MkDocs -### 8.5.11 _ November 30, 2022 { id="8.5.11" } +### 9.0.0 January 2, 2023 { id="9.0.0" } + +__Additions and improvements__ + +- Added support for rich search previews +- Added support for tokenizer lookahead +- Added support for better search highlighting +- Added support for excluding content from search +- Added support for configurable search pipeline +- Added support for offline search via offline plugin +- Added support for multiple instances of built-in tags plugin +- Added support for removing copy-to-clipboard button +- Added support for removing footer navigation +- Added support for button to view the source of a page +- Improved readability of query string for search sharing +- Improved stability of search plugin when using `--dirtyreload` +- Improved search result group button, now sticky and stable +- Updated Norwegian translations +- Updated MkDocs to 1.4.2 + +__Removals__ + +- Removed deprecated alternative admonition qualifiers +- Removed `:is()` selectors (in output) for easier overriding +- Removed `.title` suffix on translations +- Removed legacy method for providing page title in feedback URL +- Removed support for indexing only titles in search +- Removed support for custom search transforms +- Removed support for custom search workers +- Removed temporary snow feature (easter egg) + +__Fixes__ + +- Fixed Norwegian and Korean language code +- Fixed detection of composition events in search interface +- Fixed search plugin not using title set via front matter +- Fixed search highlighting of tags +- Fixed search sharing URL using post transformed string +- Fixed theme-color meta tag getting out-of-sync with palette toggle +- Fixed prev/next page keyboard navigation when footer is not present +- Fixed overflowing navigation tabs not being scrollable +- Fixed inclusion of code block line numbers from search + +--- + +### 8.5.11 November 30, 2022 { id="8.5.11" } - Let it snow, see https://twitter.com/squidfunk/status/1597939243090788352 -### 8.5.10 _ November 11, 2022 { id="8.5.10" } +### 8.5.10 November 11, 2022 { id="8.5.10" } - Adjusted CSS to better allow for custom primary and accent colors - Fixed #4620: Primary color is not applied (8.5.9 regression) -### 8.5.9 _ November 8, 2022 { id="8.5.9" } +### 8.5.9 November 8, 2022 { id="8.5.9" } - Fixed #4600: Illegible link colors for black and white primary colors - Fixed #4594: Need to set schema to change link color -### 8.5.8 _ November 3, 2022 { id="8.5.8" } +### 8.5.8 November 3, 2022 { id="8.5.8" } - Added support for always showing settings in cookie consent - Fixed #4571: Buttons invisible if primary color is `white` or `black` - Fixed #4517: Illegible note in sequence diagram when using `slate` scheme -### 8.5.7 _ October 22, 2022 { id="8.5.7" } +### 8.5.7 October 22, 2022 { id="8.5.7" } - Deprecated additional admonition qualifiers to reduce size of CSS - Fixed #4511: Search boost does not apply to sections -### 8.5.6 _ October 2, 2022 { id="8.5.6" } +### 8.5.6 October 2, 2022 { id="8.5.6" } - Modernized appearance of admonitions (with fallback, see docs) - Improved appearance of inline code blocks in admonition titles -### 8.5.5 _ October 1, 2022 { id="8.5.5" } +### 8.5.5 October 1, 2022 { id="8.5.5" } - Updated MkDocs to 1.4 - Fixed compatibility issues with MkDocs 1.4 - Fixed #4430: build error when enabling consent without repository URL -### 8.5.4 _ September 30, 2022 { id="8.5.4" } +### 8.5.4 September 30, 2022 { id="8.5.4" } - Fixed expand icons shift on sidebar overflow (using `scrollbar-gutter`) - Fixed #4429: Text in sequence diagrams overflows in Firefox -### 8.5.3 _ September 20, 2022 { id="8.5.3" } +### 8.5.3 September 20, 2022 { id="8.5.3" } - Fixed build error when enabling cookie consent without analytics - Fixed #4381: Code blocks render ligatures for some fonts -### 8.5.2 _ September 18, 2022 { id="8.5.2" } +### 8.5.2 September 18, 2022 { id="8.5.2" } - Updated Mermaid.js to version 9.1.7 - Fixed overly large headlines in search results (8.5.0 regression) - Fixed #4358: Navigation sections appear as clickable (8.5.0 regression) - Fixed #4356: GitHub repository statistics fetched before cookie consent -### 8.5.1 _ September 15, 2022 { id="8.5.1" } +### 8.5.1 September 15, 2022 { id="8.5.1" } - Fixed #4366: Removed dependencies with native extensions -### 8.5.0 _ September 13, 2022 { id="8.5.0" } +### 8.5.0 September 13, 2022 { id="8.5.0" } - Added support for social cards - Added support for code annotation anchor links (deep linking) @@ -68,11 +113,11 @@ - Added support for anchor following table of contents (= auto scroll) - Added support for tag icons -### 8.4.4 _ September 12, 2022 { id="8.4.4" } +### 8.4.4 September 12, 2022 { id="8.4.4" } - Moved comments integration to separate partial (`comments.html`) -### 8.4.3 _ September 7, 2022 { id="8.4.3" } +### 8.4.3 September 7, 2022 { id="8.4.3" } - Added Simple Icons to bundled icons (+2,300 icons) - Added support for changing edit icon @@ -80,59 +125,59 @@ - Fixed #4291: Version switching doesn't stay on page when anchors are used - Fixed #4327: Links in data tables do not receive link styling -### 8.4.2 _ August 27, 2022 { id="8.4.2" } +### 8.4.2 August 27, 2022 { id="8.4.2" } - Updated Slovenian translations - Fixed #4277: Feedback widget hidden after navigation with instant loading - Fixed numeric tags in front matter breaking search functionality -### 8.4.1 _ August 21, 2022 { id="8.4.1" } +### 8.4.1 August 21, 2022 { id="8.4.1" } - Updated Croatian and Hebrew translations -### 8.4.0 _ August 13, 2022 { id="8.4.0" } +### 8.4.0 August 13, 2022 { id="8.4.0" } - Added support for cookie consent - Added support for feedback widget (Was this page helpful?) - Added support for dismissable announcement bar - Added Armenian, Lithuanian, Tagalog, and Urdu translations -### 8.3.9 _ July 4, 2022 { id="8.3.9" } +### 8.3.9 July 4, 2022 { id="8.3.9" } - Updated Taiwanese translations for search - Allow ids for content tabs with special characters (for mkdocstrings) - Fixed #4083: home not clickable when using versioning (8.3.5 regression) -### 8.3.8 _ June 24, 2022 { id="8.3.8" } +### 8.3.8 June 24, 2022 { id="8.3.8" } - Fixed #4053: Limit width of videos to content area - Fixed empty tags in front matter breaking search -### 8.3.7 _ June 22, 2022 { id="8.3.7" } +### 8.3.7 June 22, 2022 { id="8.3.7" } - Fixed search being stuck initializing when using tags (8.3.4 regression) -### 8.3.6 _ June 16, 2022 { id="8.3.6" } +### 8.3.6 June 16, 2022 { id="8.3.6" } - Fixed #4028: Links not clickable when using versioning (8.3.5 regression) -### 8.3.5 _ June 14, 2022 { id="8.3.5" } +### 8.3.5 June 14, 2022 { id="8.3.5" } - Fixed #4012: Stay on page not working for alias of active version -### 8.3.4 _ June 11, 2022 { id="8.3.4" } +### 8.3.4 June 11, 2022 { id="8.3.4" } - Fixed #4004: Tags with multiple words not searchable -### 8.3.3 _ June 7, 2022 { id="8.3.3" } +### 8.3.3 June 7, 2022 { id="8.3.3" } - Fixed #4000: Mermaid diagrams too dark in dark mode (8.3.0 regression) -### 8.3.2 _ June 5, 2022 { id="8.3.2" } +### 8.3.2 June 5, 2022 { id="8.3.2" } - Fixed #3987: Custom admonition icons don't work when defining color palette -### 8.3.1 _ June 4, 2022 { id="8.3.1" } +### 8.3.1 June 4, 2022 { id="8.3.1" } - Bump required Jinja version to 3.0.2 - Removed unnecessary conditions in templates @@ -140,7 +185,7 @@ - Fixed #3977: Content tabs snapping oddly in Firefox - Fixed #3983: Missing condition in footer partial (8.3.0 regression) -### 8.3.0 _ June 2, 2022 { id="8.3.0" } +### 8.3.0 June 2, 2022 { id="8.3.0" } - Added support for custom admonition icons - Added support for linking of content tabs @@ -149,38 +194,38 @@ - Added previous/next indicators to content tabs - Improved typeset link colors in light and dark modes -### 8.2.16 _ May 28, 2022 { id="8.2.16" } +### 8.2.16 May 28, 2022 { id="8.2.16" } - Fixed #3957: Only animate code annotations when visible (save CPU cycles) -### 8.2.15 _ May 14, 2022 { id="8.2.15" } +### 8.2.15 May 14, 2022 { id="8.2.15" } - Added Uzbek translations - Fixed spacing for code block results in content tabs -### 8.2.14 _ May 8, 2022 { id="8.2.14" } +### 8.2.14 May 8, 2022 { id="8.2.14" } - Fixed missing top right rounded border on admonition - Fixed #3886: `4xx` status codes not handled when using instant loading -### 8.2.13 _ May 2, 2022 { id="8.2.13" } +### 8.2.13 May 2, 2022 { id="8.2.13" } - Fixed #3865: Tags index links to tagged pages 404 on Windows - Fixed #3866: Bump required Python version from 3.6+ to 3.7+ -### 8.2.12 _ April 30, 2022 { id="8.2.12" } +### 8.2.12 April 30, 2022 { id="8.2.12" } - Added support for GitHub-style hash fragments for dark/light images - Improved rendering of nested code blocks in content tabs and annotations - Fixed #3862: Upgraded to latest Pygments and Python Markdown Extensions -### 8.2.11 _ April 25, 2022 { id="8.2.11" } +### 8.2.11 April 25, 2022 { id="8.2.11" } - Temporarily pinned Pygments to `<2.12` - Temporarily pinned Python Markdown Extensions to `<9.4` - Improved rendering of code annotation markers -### 8.2.10 _ April 24, 2022 { id="8.2.10" } +### 8.2.10 April 24, 2022 { id="8.2.10" } - Added Macedonian translations - Updated Mermaid.js to version 9.0.1 @@ -188,7 +233,7 @@ - Fixed color of arrows in class and state diagrams for dark mode - Fixed #3836: Inline admonitions overlayed by code block titles -### 8.2.9 _ April 8, 2022 { id="8.2.9" } +### 8.2.9 April 8, 2022 { id="8.2.9" } - Mitigate flicker on color palette switch by disabling all transitions - Fixed search suggestions not triggered when following deep link @@ -196,7 +241,7 @@ - Fixed #3782: Admonition titles have extra pixels on wide screens in Firefox - Fixed #3802: Always render table of contents container (except when hidden) -### 8.2.8 _ March 27, 2022 { id="8.2.8" } +### 8.2.8 March 27, 2022 { id="8.2.8" } - Bumped MkDocs version to 1.3.0 to mitigate breaking changes in Jinja - Reverted Jinja version range limitation (added in 8.2.7) @@ -205,48 +250,48 @@ - Added check in tags plugin whether tags overview page exists - Fixed #3744: Content tab indicator on wrong position when using back button -### 8.2.7 _ March 24, 2022 { id="8.2.7" } +### 8.2.7 March 24, 2022 { id="8.2.7" } - Temporarily limit Jinja version range to < 3.1 due to breaking changes -### 8.2.6 _ March 23, 2022 { id="8.2.6" } +### 8.2.6 March 23, 2022 { id="8.2.6" } - Fixed #3695: Deprecation warning for unescaped backslashes in templates - Fixed #3696: Annotations not mounted in some Terraform code blocks - Fixed #3698: Annotations not mounted in long code blocks (8.2.5 regression) -### 8.2.5 _ March 6, 2022 { id="8.2.5" } +### 8.2.5 March 6, 2022 { id="8.2.5" } - Fixed #3596: Mermaid not working when headline with name 'Mermaid' present - Fixed #3643: Reduce time to render pages with thousands of code blocks - Fixed #3665: Missing styles for Mermaid.js flowcharts cluster labels -### 8.2.4 _ March 2, 2022 { id="8.2.4" } +### 8.2.4 March 2, 2022 { id="8.2.4" } - Fixed malformed Google Fonts URL when a font setting was omitted - Fixed #3648: Fixed specificity issue with admonitions in lists - Fixed #3653: Invalid outdated version banner URL when using instant loading -### 8.2.3 _ February 27, 2022 { id="8.2.3" } +### 8.2.3 February 27, 2022 { id="8.2.3" } - Fixed #3578: Active element in table of contents off-by-one on large screens -### 8.2.2 _ February 26, 2022 { id="8.2.2" } +### 8.2.2 February 26, 2022 { id="8.2.2" } - Added automatic removal of query parameter when search is closed - Fixed #3599: Anchors always overriden when using navigation tracking -### 8.2.1 _ February 17, 2022 { id="8.2.1" } +### 8.2.1 February 17, 2022 { id="8.2.1" } - Fixed module `material.plugins` not being found (8.2.0 regression) -### 8.2.0 _ February 17, 2022 { id="8.2.0" } +### 8.2.0 February 17, 2022 { id="8.2.0" } - Added native support for Mermaid.js diagrams - Added native support for tags (with search integration) - Added support for staying on page when switching versions -### 8.1.11 _ February 10, 2022 { id="8.1.11" } +### 8.1.11 February 10, 2022 { id="8.1.11" } - Added Portuguese (Brasilian) translations - Updated FontAwesome to v6 – [check which icons were renamed here] @@ -254,60 +299,60 @@ [check which icons were renamed here]: https://fontawesome.com/docs/web/setup/upgrade/whats-changed#icons-renamed-in-version-6 -### 8.1.10 _ February 6, 2022 { id="8.1.10" } +### 8.1.10 February 6, 2022 { id="8.1.10" } - Fixed cutoff of very wide logos in the sidebar on mobile -### 8.1.9 _ January 30, 2022 { id="8.1.9" } +### 8.1.9 January 30, 2022 { id="8.1.9" } - [Added support for `mkdocs.yml` validation and auto-complete][validation] - Fixed errors in Latvian translations [validation]: ../creating-your-site.md#minimal-configuration -### 8.1.8 _ January 23, 2022 { id="8.1.8" } +### 8.1.8 January 23, 2022 { id="8.1.8" } - Added Latvian translations - Updated Giscus example integration with dynamic theme change support - Fixed #3479: Back-to-top button not hidden when using sticky navigation tabs - Fixed #3491: Logo in header and drawer doesn't honor aspect ratio -### 8.1.7 _ January 16, 2022 { id="8.1.7" } +### 8.1.7 January 16, 2022 { id="8.1.7" } - Improved back-to-top button behavior - now not shown on anchor jump -### 8.1.6 _ January 11, 2022 { id="8.1.6" } +### 8.1.6 January 11, 2022 { id="8.1.6" } - Fixed spacing of blockquotes (8.1.5 regression) - Fixed edge cases for rounded corners on code blocks (8.1.5 regression) - Fixed issues with code annotation line heights -### 8.1.5 _ January 9, 2022 { id="8.1.5" } +### 8.1.5 January 9, 2022 { id="8.1.5" } - Improved browser support: Chrome 49+, Safari 10+, Firefox 53+, Edge 79+ - Improved rendering of inline code blocks in headlines - Added Bahasa Malaysian translations - Fixed #3354: MathJax formulas show vertical scrollbar -### 8.1.4 _ January 2, 2022 { id="8.1.4" } +### 8.1.4 January 2, 2022 { id="8.1.4" } - Added indicator to navigation expander icon - Improved support for reduced motion preference - Fixed jitter of active content tab indicator -### 8.1.3 _ December 19, 2021 { id="8.1.3" } +### 8.1.3 December 19, 2021 { id="8.1.3" } - Added animation to active content tab indicator - Fixed #3360: Highlighted lines add blank lines in copied text - Fixed usage of subsequent index files when using section index pages -### 8.1.2 _ December 15, 2021 { id="8.1.2" } +### 8.1.2 December 15, 2021 { id="8.1.2" } - Switched CSS sources to logical properties - Added transformation of logical properties to `ltr`/`rtl` equivalents - Fixed spacing for admonitions inside lists (8.1.1 regression) -### 8.1.1 _ December 13, 2021 { id="8.1.1" } +### 8.1.1 December 13, 2021 { id="8.1.1" } - Added support for `#only-light` and `#only-dark` image hash fragments - Fixed copy-to-clipboard adding blank lines when using line anchors @@ -320,7 +365,7 @@ - Fixed #3343: Filtered stopwords appear as missing search terms - Fixed #3346: Site unusable due to usage of `:not()` (Firefox 78 ESR) -### 8.1.0 _ December 10, 2021 { id="8.1.0" } +### 8.1.0 December 10, 2021 { id="8.1.0" } - Added basic support for code block line anchors - Switched code annotation markers to `+` signs to improve usability @@ -330,12 +375,12 @@ - Improved and simplified code annotation positioning - Fixed syntax error in Russian translations -### 8.0.5 _ December 6, 2021 { id="8.0.5" } +### 8.0.5 December 6, 2021 { id="8.0.5" } - Fixed #3302: Footer refactoring induced ellipsis in some browsers - Fixed #3313: Details always rendered closed on load (8.0.4 regression) -### 8.0.4 _ December 4, 2021 { id="8.0.4" } +### 8.0.4 December 4, 2021 { id="8.0.4" } - Improved support for deeply nested code annotations - Improved code annotation and copy-to-clipboard interop @@ -345,24 +390,24 @@ - Fixed several positioning issues for code annotations - Fixed JavaScript source map roots -### 8.0.3 _ December 2, 2021 { id="8.0.3" } +### 8.0.3 December 2, 2021 { id="8.0.3" } - Removed deprecated `google_analytics` setting (was forgotten in 8.0.0) - Fixed syntax error in Swedish and Polish translations - Fixed #3283: Invalid back-to-top button position with sticky navigation tabs - Fixed #3285: Default details marker showing due to Safari bug -### 8.0.2 _ November 30, 2021 { id="8.0.2" } +### 8.0.2 November 30, 2021 { id="8.0.2" } - Fixed #3275: Code annotations always disappear on click -### 8.0.1 _ November 28, 2021 { id="8.0.1" } +### 8.0.1 November 28, 2021 { id="8.0.1" } - Improved rendering of code annotation markers - Fixed #3265: Wrong margin on nested admonitions - Fixed wrong `box-sizing` for code annotations in details -### 8.0.0 _ November 28, 2021 { id="8.0.0" } +### 8.0.0 November 28, 2021 { id="8.0.0" } - Added support for code annotations - Added support for anchor tracking @@ -384,16 +429,18 @@ - Improved keyboard navigation for footnotes - Fixed #3214: Search highlighting breaks site when empty -### 7.3.6 _ October 30, 2021 { id="7.3.6" } +--- + +### 7.3.6 October 30, 2021 { id="7.3.6" } - Added support for adding titles to code blocks -### 7.3.5 _ October 27, 2021 { id="7.3.5" } +### 7.3.5 October 27, 2021 { id="7.3.5" } - Added support for setting table of contents title via `mkdocs.yml` - Fixed back-to-top button position for right-to-left languages -### 7.3.4 _ October 17, 2021 { id="7.3.4" } +### 7.3.4 October 17, 2021 { id="7.3.4" } - Bumped MkDocs version to 1.2.3 to mitigate [CVE-2021-40978] - Fixed spacing issues when using integrate table of contents with tabs @@ -402,7 +449,7 @@ [CVE-2021-40978]: https://nvd.nist.gov/vuln/detail/CVE-2021-40978 -### 7.3.3 _ October 11, 2021 { id="7.3.3" } +### 7.3.3 October 11, 2021 { id="7.3.3" } - Rewrite of entire documentation - Adjusted height of new content tabs to match single line code blocks @@ -412,7 +459,7 @@ - Fixed new content tabs stealing keyboard access when active - Fixed some spacings issues for right-to-left languages -### 7.3.2 _ October 6, 2021 { id="7.3.2" } +### 7.3.2 October 6, 2021 { id="7.3.2" } - Deprecated prebuilding of search index - Improved graceful handling of broken search for `file://` @@ -421,7 +468,7 @@ - Fixed margin issues when using navigation tabs (7.3.1 regression) - Fixed search placeholder sometimes being shown too early -### 7.3.1 _ October 2, 2021 { id="7.3.1" } +### 7.3.1 October 2, 2021 { id="7.3.1" } - Added new experimental content tabs implementation - Fixed #3069: GitHub stats broken for users/orgs (7.1.0 regression) @@ -431,17 +478,17 @@ - Fixed some spacing issues for right-to-left languages - Fixed syntax error in Serbian translations -### 7.3.0 _ September 23, 2021 { id="7.3.0" } +### 7.3.0 September 23, 2021 { id="7.3.0" } - Added support for sticky navigation tabs - Added support for section index pages - Added support for removing generator notice -### 7.2.8 _ September 20, 2021 { id="7.2.8" } +### 7.2.8 September 20, 2021 { id="7.2.8" } - Fixed #3039: Search modal overlays menu on mobile (7.2.7 regression) -### 7.2.7 _ September 19, 2021 { id="7.2.7" } +### 7.2.7 September 19, 2021 { id="7.2.7" } - Updated Serbian and Serbo-Croatian translations - Improved appearance of outline on details @@ -450,115 +497,115 @@ - Fixed back-to-top button being focusable when invisible - Fixed broken admonition icons (removed in upstream) -### 7.2.6 _ September 1, 2021 { id="7.2.6" } +### 7.2.6 September 1, 2021 { id="7.2.6" } - Fixed rendering of `blockquote` elements (7.0.0 regression) - Fixed #2973: Custom search worker setting ignored -### 7.2.5 _ August 25, 2021 { id="7.2.5" } +### 7.2.5 August 25, 2021 { id="7.2.5" } - Updated Portuguese translations - Fixed execution of RxJS teardown logic (7.2.3 regression) - Fixed #2970: Search results show escaped characters (7.2.2 regression) -### 7.2.4 _ August 11, 2021 { id="7.2.4" } +### 7.2.4 August 11, 2021 { id="7.2.4" } - Fixed #2926: Version selector not working (7.2.3 regression) - Fixed #2929: Missing CSS class for banner (consistency with Insiders) -### 7.2.3 _ August 9, 2021 { id="7.2.3" } +### 7.2.3 August 9, 2021 { id="7.2.3" } - Slight facelift of data tables, now closer to Material Design - Fixed instant loading not respecting clicks on search results - Fixed #2881: Invalid anchor offsets when using instant loading -### 7.2.2 _ July 31, 2021 { id="7.2.2" } +### 7.2.2 July 31, 2021 { id="7.2.2" } - Updated Korean translations - Fixed #2879: Search highlighting does not properly escape HTML -### 7.2.1 _ July 25, 2021 { id="7.2.1" } +### 7.2.1 July 25, 2021 { id="7.2.1" } - Fixed #2862: Back-to-top button overlays active search bar -### 7.2.0 _ July 21, 2021 { id="7.2.0" } +### 7.2.0 July 21, 2021 { id="7.2.0" } - Added support for search suggestions to save keystrokes - Added support for search highlighting - Added support for search sharing (i.e. deep linking) -### 7.1.11 _ July 18, 2021 { id="7.1.11" } +### 7.1.11 July 18, 2021 { id="7.1.11" } - Updated Spanish and Galician translations -### 7.1.10 _ July 10, 2021 { id="7.1.10" } +### 7.1.10 July 10, 2021 { id="7.1.10" } - Refactored appearance of back-to-top button - Fixed graceful handling of search when browsing locally -### 7.1.9 _ June 25, 2021 { id="7.1.9" } +### 7.1.9 June 25, 2021 { id="7.1.9" } - Improved search language support for Thai and Hindi - Fixed #2761: License comments lined up at end of file -### 7.1.8 _ June 12, 2021 { id="7.1.8" } +### 7.1.8 June 12, 2021 { id="7.1.8" } - Refactored analytics integration (because of MkDocs 1.2) - Added support for Google Analytics 4 (`gtag.js`) - Fixed missing escape for `aria-label` in footer links -### 7.1.7 _ June 6, 2021 { id="7.1.7" } +### 7.1.7 June 6, 2021 { id="7.1.7" } - Improved screen reader support -### 7.1.6 _ May 30, 2021 { id="7.1.6" } +### 7.1.6 May 30, 2021 { id="7.1.6" } - Deprecated `seealso` admonition qualifier - Added Mongolian and updated Chinese translations - Fixed #2429: Version selector not touch-friendly on Android devices - Fixed #2703: Printed 'Initializing search' albeit ready on mobile -### 7.1.5 _ May 19, 2021 { id="7.1.5" } +### 7.1.5 May 19, 2021 { id="7.1.5" } - Fixed #2655: Details breaking page margins on print -### 7.1.4 _ May 6, 2021 { id="7.1.4" } +### 7.1.4 May 6, 2021 { id="7.1.4" } - Added support for git-revision-date-localized plugin creation date - Improved footnote styles on `:target` and `:focus` -### 7.1.3 _ April 24, 2021 { id="7.1.3" } +### 7.1.3 April 24, 2021 { id="7.1.3" } - Fixed #2586: Empty table of contents shown (7.1.2 regression) -### 7.1.2 _ April 18, 2021 { id="7.1.2" } +### 7.1.2 April 18, 2021 { id="7.1.2" } - Fixed #2554: List markers sometimes overlap floated elements - Fixed #2563: Adding a class to a `h1` breaks the table of contents - Fixed #2566: Back-to-top button clickable when invisible -### 7.1.1 _ April 10, 2021 { id="7.1.1" } +### 7.1.1 April 10, 2021 { id="7.1.1" } - Fixed #2501: Nested definition lists compound bottom margin - Fixed #2508: Switch `extracopyright` block to template variable - Fixed #2533: Search (and other parts) not working in Safari <14 - Fixed #2538: Visual quirk when opening language selector -### 7.1.0 _ March 29, 2021 { id="7.1.0" } +### 7.1.0 March 29, 2021 { id="7.1.0" } - Added support for back-to-top button - Added support for color palette toggle - Added latest release to repository info (GitHub) - Slight facelift of repository info (lighter fonts, spacing and icons) -### 7.0.7 _ March 28, 2021 { id="7.0.7" } +### 7.0.7 March 28, 2021 { id="7.0.7" } - Updated Hungarian translations - Fixed #2466: Docker image not based on latest Python and Alpine - Fixed #2488: Inconsistent header shadow behavior - Fixed #2492: Inline code blocks in admonition titles missing background -### 7.0.6 _ March 14, 2021 { id="7.0.6" } +### 7.0.6 March 14, 2021 { id="7.0.6" } - Added trailing slash to version selector URL - Added support for out-of-order anchors in table of contents @@ -569,7 +616,7 @@ - Fixed version selector to always use version title - Fixed logo link when using versioning with instant loading -### 7.0.5 _ March 7, 2021 { id="7.0.5" } +### 7.0.5 March 7, 2021 { id="7.0.5" } - Added `extracopyright` block to allow for custom copyright info - Fixed evaluation of third-party scripts when using instant loading @@ -578,29 +625,29 @@ - Fixed regression with header title not being updated correctly - Fixed expanded sections not opening on first click (7.0.4 regression) -### 7.0.4 _ March 4, 2021 { id="7.0.4" } +### 7.0.4 March 4, 2021 { id="7.0.4" } - Added Icelandic translations - Fixed #2386: Section close requires two clicks (navigation expansion) - Fixed console error when search is disabled (7.0.0 regression) - Fixed localsearch integration (7.0.0 regression) -### 7.0.3 _ February 26, 2021 { id="7.0.3" } +### 7.0.3 February 26, 2021 { id="7.0.3" } - Fixed JavaScript errors in older browsers (target ES2020 -> ES2015) -### 7.0.2 _ February 25, 2021 { id="7.0.2" } +### 7.0.2 February 25, 2021 { id="7.0.2" } - Fixed #2343: Invalid source map URLs for JS and CSS files - Fixed #2347: Version selector missing when using versioning -### 7.0.1 _ February 24, 2021 { id="7.0.1" } +### 7.0.1 February 24, 2021 { id="7.0.1" } - Fixed #2334: Google Analytics triggers page view twice (7.0.0 regression) - Fixed #2336: Details bleed into inline admonitions - Fixed #2337: Images don't align correctly (7.0.0 regression) -### 7.0.0 _ February 22, 2021 { id="7.0.0" } +### 7.0.0 February 22, 2021 { id="7.0.0" } - Added support for deploying multiple versions - Added support for integrating a language selector @@ -609,45 +656,45 @@ - Removed Webpack in favor of reactive build strategy (-480 dependencies) - Fixed keyboard navigation for code blocks after content tabs switch -### 6.2.8 _ February 4, 2021 { id="6.2.8" } +### 6.2.8 February 4, 2021 { id="6.2.8" } - Updated Japanese and Polish translations - Fixed #2261: Print dialog auto-closing when using instant loading -### 6.2.7 _ January 31, 2021 { id="6.2.7" } +### 6.2.7 January 31, 2021 { id="6.2.7" } - Fixed #2251: Updated Docker image to latest Alpine Linux -### 6.2.6 _ January 26, 2021 { id="6.2.6" } +### 6.2.6 January 26, 2021 { id="6.2.6" } - Added Bulgarian translations - Fixed #2233: Search not shown when using header autohiding -### 6.2.5 _ January 17, 2021 { id="6.2.5" } +### 6.2.5 January 17, 2021 { id="6.2.5" } - Fixed syntax error in Swedish translations - Optimized navigation partials to improve build speed for huge docs -### 6.2.4 _ January 9, 2021 { id="6.2.4" } +### 6.2.4 January 9, 2021 { id="6.2.4" } - Fixed #2156: Missing syntax highlighting for binary numbers - Fixed #2186: Disqus showing on 404 page -### 6.2.3 _ December 27, 2020 { id="6.2.3" } +### 6.2.3 December 27, 2020 { id="6.2.3" } - Added back hidden overflow on root container - Fixed #2142: MathJax formulas sometimes have vertical scrollbars -### 6.2.2 _ December 22, 2020 { id="6.2.2" } +### 6.2.2 December 22, 2020 { id="6.2.2" } - Removed Markdown version range limit (6.2.0 regression) -### 6.2.1 _ December 22, 2020 { id="6.2.1" } +### 6.2.1 December 22, 2020 { id="6.2.1" } - Fixed all import and asset paths in templates (6.2.0 regression) - Downgraded webpack-asset-manifest-plugin - broke all asset paths -### 6.2.0 _ December 22, 2020 { id="6.2.0" } +### 6.2.0 December 22, 2020 { id="6.2.0" } - Added support for navigation sections - Added support for navigation expansion @@ -661,52 +708,52 @@ - Improved appearance for horizontal rulers - Improved Spanish and Swedish translations -### 6.1.7 _ December 6, 2020 { id="6.1.7" } +### 6.1.7 December 6, 2020 { id="6.1.7" } - Fixed #2081: Fixed stats for private GitHub repositories - Fixed alignment for admonition icon alignment for right-to-left languages -### 6.1.6 _ November 22, 2020 { id="6.1.6" } +### 6.1.6 November 22, 2020 { id="6.1.6" } - Fixed #2048: Math formulas show scrollbars (Windows) -### 6.1.5 _ November 15, 2020 { id="6.1.5" } +### 6.1.5 November 15, 2020 { id="6.1.5" } - Fixed search reset button not showing/hiding correctly -### 6.1.4 _ November 7, 2020 { id="6.1.4" } +### 6.1.4 November 7, 2020 { id="6.1.4" } - Fixed sidebar jitter when scrolling footer into view -### 6.1.3 _ November 5, 2020 { id="6.1.3" } +### 6.1.3 November 5, 2020 { id="6.1.3" } - Added support for keywords `meta` tag - Fixed #2027: Line numbers don't scale with smaller font size - Fixed link colors for black and white on `slate` color scheme - Removed focus outline on scrolling code blocks for pointer devices -### 6.1.2 _ October 31, 2020 { id="6.1.2" } +### 6.1.2 October 31, 2020 { id="6.1.2" } - Fixed sizing of icons in admonitions, task lists, etc. (6.1.1 regression) -### 6.1.1 _ October 31, 2020 { id="6.1.1" } +### 6.1.1 October 31, 2020 { id="6.1.1" } - Fixed #2019: Page title not correctly updated when using instant loading -### 6.1.0 _ October 17, 2020 { id="6.1.0" } +### 6.1.0 October 17, 2020 { id="6.1.0" } - Fixed #1973: Added support for printing in dark mode - Fixed #1974: Added support for printing content tabs - Fixed #1995: Improved customizability of details extension -### 6.0.2 _ October 4, 2020 { id="6.0.2" } +### 6.0.2 October 4, 2020 { id="6.0.2" } - Added Georgian translations - Added escaping for link `title` attributes where necessary - Fixed #1956: Pages with whitespace in names have invalid links in search - Removed unnecessary (duplicated) link `title` attributes -### 6.0.1 _ September 26, 2020 { id="6.0.1" } +### 6.0.1 September 26, 2020 { id="6.0.1" } - Fixed stemmer support for `file://` protocol through `iframe-worker` - Fixed details marker showing for search result in Firefox @@ -715,7 +762,7 @@ - Reduced size of JavaScript by 30% (`176kb` → `124kb`) - Removed `mkdocs` and `readthedocs` themes from Docker image -### 6.0.0 _ September 25, 2020 { id="6.0.0" } +### 6.0.0 September 25, 2020 { id="6.0.0" } - Improved search result look and feel - Improved search result stability while typing @@ -727,34 +774,36 @@ - Removed hero partial in favor of custom implementation - Removed deprecated front matter features -### 5.5.14 _ September 23, 2020 { id="5.5.14" } +--- + +### 5.5.14 September 23, 2020 { id="5.5.14" } - Improved spacing around image captions - Fixed #1939: Long tables cause header overlap in print view -### 5.5.13 _ September 19, 2020 { id="5.5.13" } +### 5.5.13 September 19, 2020 { id="5.5.13" } - Improved abbreviations on touch devices -### 5.5.12 _ August 31, 2020 { id="5.5.12" } +### 5.5.12 August 31, 2020 { id="5.5.12" } - Fixed #1638: occasional `404` for images when using instant loading -### 5.5.11 _ August 28, 2020 { id="5.5.11" } +### 5.5.11 August 28, 2020 { id="5.5.11" } - Fixed Disqus integration, as the minifier killed the config -### 5.5.10 _ August 28, 2020 { id="5.5.10" } +### 5.5.10 August 28, 2020 { id="5.5.10" } - Improved rendering by moving Disqus integration after page load - Fixed #1887: Moved navigation icons to CSS to reduce size of HTML -### 5.5.9 _ August 26, 2020 { id="5.5.9" } +### 5.5.9 August 26, 2020 { id="5.5.9" } - Added Esperanto translations - Fixed #1884: External links not included in navigation tabs -### 5.5.8 _ August 23, 2020 { id="5.5.8" } +### 5.5.8 August 23, 2020 { id="5.5.8" } - Removed focus outline on `details` and content tabs for pointer devices - Improved accessibility of content tabs (now navigable via arrow keys) @@ -762,29 +811,29 @@ - Fixed some memleaks in observable subscriptions - Fixed color definitions for `theme-color` meta tag -### 5.5.7 _ August 16, 2020 { id="5.5.7" } +### 5.5.7 August 16, 2020 { id="5.5.7" } - Improved contrast ratio to 4.5:1 for syntax highlighting - Improved contrast ratio to 4.5:1 for table of contents -### 5.5.6 _ August 12, 2020 { id="5.5.6" } +### 5.5.6 August 12, 2020 { id="5.5.6" } - Switched base template for `404.html` to `main.html` - Fixed #1864: GitHub organisation stats not loading -### 5.5.5 _ August 11, 2020 { id="5.5.5" } +### 5.5.5 August 11, 2020 { id="5.5.5" } - Fixed missing vendor and worker distribution files -### 5.5.4 _ August 11, 2020 { id="5.5.4" } +### 5.5.4 August 11, 2020 { id="5.5.4" } - Added support for sortable data tables -### 5.5.3 _ August 4, 2020 { id="5.5.3" } +### 5.5.3 August 4, 2020 { id="5.5.3" } - Fixed search for languages other than English (5.5.1 regression) -### 5.5.2 _ August 3, 2020 { id="5.5.2" } +### 5.5.2 August 3, 2020 { id="5.5.2" } - Improved highlight colors and spacing for `ins`, `del` and `mark` - Changed some keyboard symbols for better equivalents @@ -793,14 +842,14 @@ - Fixed too small content tab labels (5.5.1 regression) - Fixed icon repeating for custom admonition icons -### 5.5.1 _ August 1, 2020 { id="5.5.1" } +### 5.5.1 August 1, 2020 { id="5.5.1" } - Improved typesetting by basing `font-size` and spacings on `em` - Improved print view by slightly scaling down `font-size` - Changed custom site title (metadata) to be suffixed with site name - Fixed top- and bottom spacing of paragraphs inside table cells -### 5.5.0 _ July 24, 2020 { id="5.5.0" } +### 5.5.0 July 24, 2020 { id="5.5.0" } - Rewrite of entire documentation - Rewrite of syntax highlighting to be customizable with CSS variables @@ -813,70 +862,70 @@ - Fixed top margin for tabbed content when using a JavaScript highlighter - Deprecated metadata-based redirects, source links and heroes -### 5.4.0 _ June 29, 2020 { id="5.4.0" } +### 5.4.0 June 29, 2020 { id="5.4.0" } - Added support to wrap searches in quotes to switch from `OR` to `AND` - Fixed highlighting of numbers in search results -### 5.3.3 _ June 24, 2020 { id="5.3.3" } +### 5.3.3 June 24, 2020 { id="5.3.3" } - Added Bengali translations - Fixed #1773: Search for numbers does not return any result (regression) -### 5.3.2 _ June 21, 2020 { id="5.3.2" } +### 5.3.2 June 21, 2020 { id="5.3.2" } - Improved search typeahead experience with non-Latin characters - Fixed #1753: Japanese search doesn't work anymore -### 5.3.1 _ June 20, 2020 { id="5.3.1" } +### 5.3.1 June 20, 2020 { id="5.3.1" } - Fixed #1761: Duplication of search worker when subscribing to observable -### 5.3.0 _ June 15, 2020 { id="5.3.0" } +### 5.3.0 June 15, 2020 { id="5.3.0" } - Added support for color schemes based on user preference - Fixed #1755: Tokenizer separator setting ignored -### 5.2.3 _ June 6, 2020 { id="5.2.3" } +### 5.2.3 June 6, 2020 { id="5.2.3" } - Improved search typeahead behavior for some languages (`de`, `fr`, ...) - Improved styles for scrollbars on Firefox - Fixed #1741: Removed `preconnect` hint for Google Analytics -### 5.2.2 _ May 26, 2020 { id="5.2.2" } +### 5.2.2 May 26, 2020 { id="5.2.2" } - Fixed #1728: Legacy Edge doesn't support `deg` values in `hsla` colors -### 5.2.1 _ May 22, 2020 { id="5.2.1" } +### 5.2.1 May 22, 2020 { id="5.2.1" } - Fixed color of links in table headers, e.g. footnotes - Fixed color scheme not being applied without primary or accent color - Fixed hover delay for links inside code blocks -### 5.2.0 _ May 18, 2020 { id="5.2.0" } +### 5.2.0 May 18, 2020 { id="5.2.0" } - Added color schemes implementation + dark mode - Fixed #1583: Missing option for separate link colors -### 5.1.7 _ May 16, 2020 { id="5.1.7" } +### 5.1.7 May 16, 2020 { id="5.1.7" } - Added keyboard focus support for overflowing code blocks - Fixed #1696: Infinite loop in some cases when using instant loading -### 5.1.6 _ May 9, 2020 { id="5.1.6" } +### 5.1.6 May 9, 2020 { id="5.1.6" } - Added Burmese translations - Added general anchor offset solution using `scroll-margin-top` - Fixed #1653: Instant loading shouldn't intercept links to `*.html` files -### 5.1.5 _ May 3, 2020 { id="5.1.5" } +### 5.1.5 May 3, 2020 { id="5.1.5" } - Added `name` attribute for social links to set link `title` - Fixed #1623: Allow arbitrary links in social links - Fixed #1664: Height of `iframe` is not adjustable - Fixed #1667: Sidebars are scrolled to bottom on load (bug in Chrome 81+) -### 5.1.4 _ April 30, 2020 { id="5.1.4" } +### 5.1.4 April 30, 2020 { id="5.1.4" } - Switched to [@mdi/svg] Material Design icon package - Fixed #1655: Navigation may disappear after switching viewports @@ -886,11 +935,11 @@ [@mdi/svg]: https://github.com/Templarian/MaterialDesign-SVG -### 5.1.3 _ April 26, 2020 { id="5.1.3" } +### 5.1.3 April 26, 2020 { id="5.1.3" } - Fixed overflowing content area after switch to flexbox -### 5.1.2 _ April 26, 2020 { id="5.1.2" } +### 5.1.2 April 26, 2020 { id="5.1.2" } - Added status information to search observable - Added status information to search modal @@ -900,31 +949,31 @@ - Fixed re-submission of query after search is initialized - Fixed jitter of sidebars on all browsers by switching to `sticky` -### 5.1.1 _ April 17, 2020 { id="5.1.1" } +### 5.1.1 April 17, 2020 { id="5.1.1" } - Added new FontAwesome icons - Fixed #1609: Instant loading doesn't honor `target=_blank` - Fixed GitHub stars count rounding errors - Fixed GitLab stars count retrieval -### 5.1.0 _ April 12, 2020 { id="5.1.0" } +### 5.1.0 April 12, 2020 { id="5.1.0" } - Added support for icons from Markdown through [mkdocs-material-extensions] [mkdocs-material-extensions]: https://github.com/facelessuser/mkdocs-material-extensions -### 5.0.2 _ April 10, 2020 { id="5.0.2" } +### 5.0.2 April 10, 2020 { id="5.0.2" } - Added CSS source maps to distribution files - Fixed errors in Chinese (Traditional) translations - Fixed creation of stale directory on installation from git - Improved overflow scrolling behavior on iOS (reduced bundle size by `4kb`) -### 5.0.1 _ April 7, 2020 { id="5.0.1" } +### 5.0.1 April 7, 2020 { id="5.0.1" } - Fixed syntax error in Spanish translation -### 5.0.0 _ April 7, 2020 { id="5.0.0" } +### 5.0.0 April 7, 2020 { id="5.0.0" } - Reactive architecture – try `app.dialog$.next("Hi!")` in the console - Instant loading – make Material behave like a Single Page Application @@ -941,17 +990,17 @@ - Reduced HTML and CSS footprint due to deprecation of Internet Explorer support - Slight facelifting of some UI elements (admonitions, tables, ...) -### 4.6.3 _ February 14, 2020 { id="4.6.3" } +### 4.6.3 February 14, 2020 { id="4.6.3" } - Removed optional third-party plugins from `requirements.txt` - Updated Docker image to contain all supported third-party plugins -### 4.6.2 _ February 8, 2020 { id="4.6.2" } +### 4.6.2 February 8, 2020 { id="4.6.2" } - Added Romanian translations - Fixed #1451: Inconsistent spacing for fenced code blocks -### 4.6.1 _ February 8, 2020 { id="4.6.1" } +### 4.6.1 February 8, 2020 { id="4.6.1" } - Fixed #1324: Metadata author only rendering first character - Fixed #1393: Set `tabindex` to `0` for skip to content link @@ -959,90 +1008,90 @@ - Fixed errors in Japanese translations - Improved Google Lighthouse score -### 4.6.0 _ December 11, 2019 { id="4.6.0" } +### 4.6.0 December 11, 2019 { id="4.6.0" } - Added support for [git-revision-date-localized-plugin] - Fixed invalid character in Google Fonts URL [git-revision-date-localized-plugin]: https://github.com/timvink/mkdocs-git-revision-date-localized-plugin -### 4.5.1 _ December 2, 2019 { id="4.5.1" } +### 4.5.1 December 2, 2019 { id="4.5.1" } - Added Thai translations - Fixed missing assets in GitHub release `.zip` and `.tar.gz` -### 4.5.0 _ November 16, 2019 { id="4.5.0" } +### 4.5.0 November 16, 2019 { id="4.5.0" } - Fixed #1330: Upgraded EmojiOne to Tweomji due to licensing issues - Fixed #1339: Temporarily pinned PyMdown and Markdown due to - Fixed errors in Greek translations - Improved GitHub statistics retrieval -### 4.4.3 _ October 3, 2019 { id="4.4.3" } +### 4.4.3 October 3, 2019 { id="4.4.3" } - Added Estonian translations - Fixed removal of copyright banners in minified JavaScript - Removed unnecessary title attributes from links in table of contents -### 4.4.2 _ August 27, 2019 { id="4.4.2" } +### 4.4.2 August 27, 2019 { id="4.4.2" } - Added Afrikaans translations - Fixed broken page title when `h1` contained HTML tags - Improved accessibility for IE users - Removed unnecessary `title` attributes from links in navigation -### 4.4.1 _ August 22, 2019 { id="4.4.1" } +### 4.4.1 August 22, 2019 { id="4.4.1" } - Added support for `black` as a primary color - Fixed broken footer bar when `h1` contained HTML tags -### 4.4.0 _ June 15, 2019 { id="4.4.0" } +### 4.4.0 June 15, 2019 { id="4.4.0" } - Added Slovenian translations - Reverted template minification in favor of `mkdocs-minify-plugin` - Fixed #1114: Tabs don't reappear when default `font-size` is smaller than `16` -### 4.3.1 _ May 23, 2019 { id="4.3.1" } +### 4.3.1 May 23, 2019 { id="4.3.1" } - Fixed spelling error in Danish translations -### 4.3.0 _ May 17, 2019 { id="4.3.0" } +### 4.3.0 May 17, 2019 { id="4.3.0" } - Added support for changing header through metadata title property - Added `font-display: swap` to Google Font loading logic - Removed whitespace from templates, saving `4kb` (`.7kb` gzipped) per request - Fixed alignment of repository icons on tablet and desktop -### 4.2.0 _ April 28, 2019 { id="4.2.0" } +### 4.2.0 April 28, 2019 { id="4.2.0" } - Added Norwegian (Nynorsk) translations - Fixed loss of focus in non-form input elements due to search hotkeys - Fixed #1067: Search hotkeys not working for mobile/tablet screensize - Fixed #1068: Search not correctly aligned for tablet screensize -### 4.1.2 _ April 16, 2019 { id="4.1.2" } +### 4.1.2 April 16, 2019 { id="4.1.2" } - Fixed #1072: HTML tags appearing in navigation link titles -### 4.1.1 _ March 28, 2019 { id="4.1.1" } +### 4.1.1 March 28, 2019 { id="4.1.1" } - Fixed minor CSS errors detected during validation -### 4.1.0 _ March 22, 2019 { id="4.1.0" } +### 4.1.0 March 22, 2019 { id="4.1.0" } - Fixed #1023: Search for Asian languages broken after Lunr.js update - Fixed #1026: contenteditable elements loose focus on hotkeys -### 4.0.2 _ March 1, 2019 { id="4.0.2" } +### 4.0.2 March 1, 2019 { id="4.0.2" } - Fixed #1012: HTML character entities appear in search result titles -### 4.0.1 _ February 13, 2019 { id="4.0.1" } +### 4.0.1 February 13, 2019 { id="4.0.1" } - Fixed #762, #816: Glitch in sidebar when collapsing items - Fixed #869: Automatically expand details before printing -### 4.0.0 _ February 13, 2019 { id="4.0.0" } +### 4.0.0 February 13, 2019 { id="4.0.0" } - Added background on hover for table rows - Removed Google Tag Manager and reverted to Google Analytics @@ -1050,81 +1099,85 @@ - Fixed #911: Chrome breaks layout if system language is Chinese (**BREAKING**) - Fixed #976: Removed FastClick -### 3.3.0 _ January 29, 2019 { id="3.3.0" } +--- + +### 3.3.0 January 29, 2019 { id="3.3.0" } - Moved Google Analytics integration into `head` using Google Tag Manager - Fixed #972: Unicode slugifier breaks table of contents blur on scroll - Fixed #974: Additional links in table of contents break blur on scroll -### 3.2.0 _ December 28, 2018 { id="3.2.0" } +### 3.2.0 December 28, 2018 { id="3.2.0" } - Added support for redirects using metadata refresh - Fixed #921: Load Google Analytics snippet asynchronously -### 3.1.0 _ November 17, 2018 { id="3.1.0" } +### 3.1.0 November 17, 2018 { id="3.1.0" } - Added support for Progressive Web App Manifest - Fixed #915: Search bug in Safari (upgraded Lunr.js) -### 3.0.6 _ October 26, 2018 { id="3.0.6" } +### 3.0.6 October 26, 2018 { id="3.0.6" } - Added Taiwanese translations - Fixed #906: JavaScript code blocks evaluated in search results -### 3.0.5 _ October 23, 2018 { id="3.0.5" } +### 3.0.5 October 23, 2018 { id="3.0.5" } - Added Croatian and Indonesian translations - Fixed #899: Skip-to-content link invalid from 2nd level on - Fixed #902: Missing URL filter in footer for FontAwesome link -### 3.0.4 _ September 3, 2018 { id="3.0.4" } +### 3.0.4 September 3, 2018 { id="3.0.4" } - Updated Dutch translations - Fixed #856: Removed preconnect meta tag if Google Fonts are disabled -### 3.0.3 _ August 7, 2018 { id="3.0.3" } +### 3.0.3 August 7, 2018 { id="3.0.3" } - Fixed #841: Additional path levels for extra CSS and JS -### 3.0.2 _ August 6, 2018 { id="3.0.2" } +### 3.0.2 August 6, 2018 { id="3.0.2" } - Fixed #839: Lunr.js stemmer imports incorrect -### 3.0.1 _ August 5, 2018 { id="3.0.1" } +### 3.0.1 August 5, 2018 { id="3.0.1" } - Fixed #838: Search result links incorrect -### 3.0.0 _ August 5, 2018 { id="3.0.0" } +### 3.0.0 August 5, 2018 { id="3.0.0" } - Upgraded MkDocs to 1.0 (**BREAKING**) - Upgraded Python in official Docker image to 3.6 - Added Serbian and Serbo-Croatian translations -### 2.9.4 _ July 29, 2018 { id="2.9.4" } +--- + +### 2.9.4 July 29, 2018 { id="2.9.4" } - Fixed build error after MkDocs upgrade -### 2.9.3 _ July 29, 2018 { id="2.9.3" } +### 2.9.3 July 29, 2018 { id="2.9.3" } - Added link to home for logo in drawer - Fixed dependency problems between MkDocs and Tornado -### 2.9.2 _ June 29, 2018 { id="2.9.2" } +### 2.9.2 June 29, 2018 { id="2.9.2" } - Added Hindi and Czech translations -### 2.9.1 _ June 18, 2018 { id="2.9.1" } +### 2.9.1 June 18, 2018 { id="2.9.1" } - Added support for different spellings for theme color - Fixed #799: Added support for webfont minification in production - Fixed #800: Added `.highlighttable` as an alias for `.codehilitetable` -### 2.9.0 _ June 13, 2018 { id="2.9.0" } +### 2.9.0 June 13, 2018 { id="2.9.0" } - Added support for theme color on Android - Fixed #796: Rendering of nested tabbed code blocks -### 2.8.0 _ June 10, 2018 { id="2.8.0" } +### 2.8.0 June 10, 2018 { id="2.8.0" } - Added support for grouping code blocks with tabs - Added Material and FontAwesome icon fonts to distribution files (GDPR) @@ -1132,35 +1185,35 @@ - Added Slovak translations - Fixed #790: Prefixed `id` attributes with `__` to avoid name clashes -### 2.7.3 _ April 26, 2018 { id="2.7.3" } +### 2.7.3 April 26, 2018 { id="2.7.3" } - Added Finnish translations -### 2.7.2 _ April 9, 2018 { id="2.7.2" } +### 2.7.2 April 9, 2018 { id="2.7.2" } - Fixed rendering issue for `details` on Edge -### 2.7.1 _ March 21, 2018 { id="2.7.1" } +### 2.7.1 March 21, 2018 { id="2.7.1" } - Added Galician translations - Fixed #730: Scroll chasing error on home page if Disqus is enabled - Fixed #736: Reset drawer and search upon back button invocation -### 2.7.0 _ March 6, 2018 { id="2.7.0" } +### 2.7.0 March 6, 2018 { id="2.7.0" } - Added ability to set absolute URL for logo - Added Hebrew translations -### 2.6.6 _ February 22, 2018 { id="2.6.6" } +### 2.6.6 February 22, 2018 { id="2.6.6" } - Added preconnect for Google Fonts for faster loading - Fixed #710: With tabs sidebar disappears if JavaScript is not available -### 2.6.5 _ February 22, 2018 { id="2.6.5" } +### 2.6.5 February 22, 2018 { id="2.6.5" } - Reverted `--dev-addr` flag removal from `Dockerfile` -### 2.6.4 _ February 21, 2018 { id="2.6.4" } +### 2.6.4 February 21, 2018 { id="2.6.4" } - Added Catalan translations - Fixed incorrect margins for buttons in Firefox and Safari @@ -1168,24 +1221,24 @@ - Reverted GitHub stars rounding method - Removed `--dev-addr` flag from `Dockerfile` for Windows compatibility -### 2.6.3 _ February 18, 2018 { id="2.6.3" } +### 2.6.3 February 18, 2018 { id="2.6.3" } - Added Vietnamese translations -### 2.6.2 _ February 12, 2018 { id="2.6.2" } +### 2.6.2 February 12, 2018 { id="2.6.2" } - Added Arabic translations - Fixed incorrect rounding of amount of GitHub stars - Fixed double-layered borders for tables -### 2.6.1 _ February 11, 2018 { id="2.6.1" } +### 2.6.1 February 11, 2018 { id="2.6.1" } - Added ability to override Disqus integration using metadata - Fixed #690: Duplicate slashes in source file URLs - Fixed #696: Active page highlight not working with default palette - Adjusted German translations -### 2.6.0 _ February 2, 2018 { id="2.6.0" } +### 2.6.0 February 2, 2018 { id="2.6.0" } - Moved default search configuration to default translation (English) - Added support to automatically set text direction from translation @@ -1195,35 +1248,35 @@ - Fixed support for Polish search - Fixed disappearing GitHub, GitLab and Bitbucket repository icons -### 2.5.5 _ January 31, 2018 { id="2.5.5" } +### 2.5.5 January 31, 2018 { id="2.5.5" } - Added Hungarian translations -### 2.5.4 _ January 29, 2018 { id="2.5.4" } +### 2.5.4 January 29, 2018 { id="2.5.4" } - Fixed #683: `gh-deploy` fails inside Docker -### 2.5.3 _ January 25, 2018 { id="2.5.3" } +### 2.5.3 January 25, 2018 { id="2.5.3" } - Added Ukrainian translations -### 2.5.2 _ January 22, 2018 { id="2.5.2" } +### 2.5.2 January 22, 2018 { id="2.5.2" } - Added default search language mappings for all localizations - Fixed #673: Error loading non-existent search language - Fixed #675: Uncaught reference error when search plugin disabled -### 2.5.1 _ January 20, 2018 { id="2.5.1" } +### 2.5.1 January 20, 2018 { id="2.5.1" } - Fixed permalink for main headline - Improved missing translation handling with English as a fallback - Improved accessibility with skip-to-content link -### 2.5.0 _ January 13, 2018 { id="2.5.0" } +### 2.5.0 January 13, 2018 { id="2.5.0" } - Added support for right-to-left languages -### 2.4.0 _ January 11, 2018 { id="2.4.0" } +### 2.4.0 January 11, 2018 { id="2.4.0" } - Added focus state for clipboard buttons - Fixed #400: Search bar steals tab focus @@ -1236,55 +1289,55 @@ - Removed `outline` resets for links - Improved general tabbing behavior on desktop -### 2.3.0 _ January 9, 2018 { id="2.3.0" } +### 2.3.0 January 9, 2018 { id="2.3.0" } - Added `example` (synonym: `snippet`) style for admonitions - Added synonym `abstract` for `summary` style for admonitions -### 2.2.6 _ December 27, 2017 { id="2.2.6" } +### 2.2.6 December 27, 2017 { id="2.2.6" } - Added Turkish translations - Fixed unclickable area below header in case JavaScript is not available -### 2.2.5 _ December 18, 2017 { id="2.2.5" } +### 2.2.5 December 18, 2017 { id="2.2.5" } - Fixed #639: Broken default favicon -### 2.2.4 _ December 18, 2017 { id="2.2.4" } +### 2.2.4 December 18, 2017 { id="2.2.4" } - Fixed #638: Build breaks with Jinja < 2.9 -### 2.2.3 _ December 13, 2017 { id="2.2.3" } +### 2.2.3 December 13, 2017 { id="2.2.3" } - Fixed #630: Admonition sets padding on any last child - Adjusted Chinese (Traditional) translations -### 2.2.2 _ December 8, 2017 { id="2.2.2" } +### 2.2.2 December 8, 2017 { id="2.2.2" } - Added Dutch translations - Adjusted targeted link and footnote offsets - Simplified admonition styles and fixed padding bug -### 2.2.1 _ December 2, 2017 { id="2.2.1" } +### 2.2.1 December 2, 2017 { id="2.2.1" } - Fixed #616: Minor styling error with title-only admonitions - Removed border for table of contents and improved spacing -### 2.2.0 _ November 22, 2017 { id="2.2.0" } +### 2.2.0 November 22, 2017 { id="2.2.0" } - Added support for hero teaser - Added Portuguese translations - Fixed #586: Footnote backref target offset regression - Fixed #605: Search stemmers not correctly loaded -### 2.1.1 _ November 21, 2017 { id="2.1.1" } +### 2.1.1 November 21, 2017 { id="2.1.1" } - Replaced deprecated `babel-preset-es2015` with `babel-preset-env` - Refactored Gulp build pipeline with Webpack - Removed right border on sidebars - Fixed broken color transition on header -### 2.1.0 _ November 19, 2017 { id="2.1.0" } +### 2.1.0 November 19, 2017 { id="2.1.0" } - Added support for `white` as a primary color - Added support for sliding site name and title @@ -1294,17 +1347,17 @@ - Improved CSS customizability by leveraging inheritance - Removed scroll shadows via `background-attachment` -### 2.0.4 _ November 5, 2017 { id="2.0.4" } +### 2.0.4 November 5, 2017 { id="2.0.4" } - Fixed `details` not opening with footnote reference -### 2.0.3 _ November 5, 2017 { id="2.0.3" } +### 2.0.3 November 5, 2017 { id="2.0.3" } - Added Japanese translations - Fixed #540: Jumping to anchor inside `details` doesn't open it - Fixed active link colors in footer -### 2.0.2 _ November 1, 2017 { id="2.0.2" } +### 2.0.2 November 1, 2017 { id="2.0.2" } - Added Russian translations - Fixed #542: Horizontal scrollbar between `1220px` and `1234px` @@ -1312,62 +1365,64 @@ - Fixed #558: Flash of unstyled content - Fixed favicon regression caused by deprecation upstream -### 2.0.1 _ October 31, 2017 { id="2.0.1" } +### 2.0.1 October 31, 2017 { id="2.0.1" } - Fixed error when initializing search - Fixed styles for link to edit the current page - Fixed styles on nested admonition in details -### 2.0.0 _ October 31, 2017 { id="2.0.0" } +### 2.0.0 October 31, 2017 { id="2.0.0" } - Upgraded MkDocs to 0.17.1 (__BREAKING__) - Added support for easier configuration of search tokenizer - Added support to disable search - Added Korean translations -### 1.12.2 _ October 26, 2017 { id="1.12.2" } +--- + +### 1.12.2 October 26, 2017 { id="1.12.2" } - Added Italian, Norwegian, French and Chinese translations -### 1.12.1 _ October 22, 2017 { id="1.12.1" } +### 1.12.1 October 22, 2017 { id="1.12.1" } - Added Polish, Swedish and Spanish translations - Improved downward compatibility with custom partials - Temporarily pinned MkDocs version within Docker image to 0.16.3 - Fixed #519: Missing theme configuration file -### 1.12.0 _ October 20, 2017 { id="1.12.0" } +### 1.12.0 October 20, 2017 { id="1.12.0" } - Added support for setting language(s) via `mkdocs.yml` - Added support for default localization - Added German and Danish translations - Fixed #374: Search bar misalignment on big screens -### 1.11.0 _ October 19, 2017 { id="1.11.0" } +### 1.11.0 October 19, 2017 { id="1.11.0" } - Added localization to clipboard - Refactored localization logic -### 1.10.4 _ October 18, 2017 { id="1.10.4" } +### 1.10.4 October 18, 2017 { id="1.10.4" } - Improved print styles of code blocks - Improved search UX (don't close on enter if no selection) - Fixed #495: Vertical scrollbar on short pages -### 1.10.3 _ October 11, 2017 { id="1.10.3" } +### 1.10.3 October 11, 2017 { id="1.10.3" } - Fixed #484: Vertical scrollbar on some MathJax formulas - Fixed #483: Footnote backref target offset regression -### 1.10.2 _ October 6, 2017 { id="1.10.2" } +### 1.10.2 October 6, 2017 { id="1.10.2" } - Fixed #468: Sidebar shows scrollbar if content is shorter (in Safari) -### 1.10.1 _ September 14, 2017 { id="1.10.1" } +### 1.10.1 September 14, 2017 { id="1.10.1" } - Fixed #455: Bold code blocks rendered with normal font weight -### 1.10.0 _ September 1, 2017 { id="1.10.0" } +### 1.10.0 September 1, 2017 { id="1.10.0" } - Added support to make logo default icon configurable - Fixed uninitialized overflow scrolling on main pane for iOS @@ -1375,7 +1430,7 @@ - Fixed incorrect color transition for nested panes in mobile navigation - Improved checkbox styles for Tasklist from PyMdown Extension package -### 1.9.0 _ August 29, 2017 { id="1.9.0" } +### 1.9.0 August 29, 2017 { id="1.9.0" } - Added `info` (synonym: `todo`) style for admonitions - Added `question` (synonym: `help`, `faq`) style for admonitions @@ -1385,58 +1440,58 @@ - Replaced ligatures with Unicode code points to avoid broken layout - Upgraded PyMdown Extensions package dependency to >= 3.4 -### 1.8.1 _ August 7, 2017 { id="1.8.1" } +### 1.8.1 August 7, 2017 { id="1.8.1" } - Fixed #421: Missing pagination for GitHub API -### 1.8.0 _ August 2, 2017 { id="1.8.0" } +### 1.8.0 August 2, 2017 { id="1.8.0" } - Added support for lazy-loading of search results for better performance - Added support for customization of search tokenizer/separator - Fixed #424: Search doesn't handle capital letters anymore - Fixed #419: Search doesn't work on whole words -### 1.7.5 _ July 25, 2017 { id="1.7.5" } +### 1.7.5 July 25, 2017 { id="1.7.5" } - Fixed #398: Forms broken due to search shortcuts - Improved search overall user experience - Improved search matching and highlighting - Improved search accessibility -### 1.7.4 _ June 21, 2017 { id="1.7.4" } +### 1.7.4 June 21, 2017 { id="1.7.4" } - Fixed functional link colors in table of contents for active palette - Fixed #368: Compatibility issues with IE11 -### 1.7.3 _ June 7, 2017 { id="1.7.3" } +### 1.7.3 June 7, 2017 { id="1.7.3" } - Fixed error when setting language to Japanese for site search -### 1.7.2 _ June 6, 2017 { id="1.7.2" } +### 1.7.2 June 6, 2017 { id="1.7.2" } - Fixed offset of search box when `repo_url` is not set - Fixed non-disappearing tooltip -### 1.7.1 _ June 1, 2017 { id="1.7.1" } +### 1.7.1 June 1, 2017 { id="1.7.1" } - Fixed wrong `z-index` order of header, overlay and drawer - Fixed wrong offset of targeted footnote back references -### 1.7.0 _ June 1, 2017 { id="1.7.0" } +### 1.7.0 June 1, 2017 { id="1.7.0" } - Added "copy to clipboard" buttons to code blocks - Added support for multilingual site search - Fixed search term highlighting for non-latin languages -### 1.6.4 _ May 24, 2017 { id="1.6.4" } +### 1.6.4 May 24, 2017 { id="1.6.4" } - Fixed #337: JavaScript error for GitHub organization URLs -### 1.6.3 _ May 16, 2017 { id="1.6.3" } +### 1.6.3 May 16, 2017 { id="1.6.3" } - Fixed #329: Broken source stats for private or unknown GitHub repos -### 1.6.2 _ May 15, 2017 { id="1.6.2" } +### 1.6.2 May 15, 2017 { id="1.6.2" } - Fixed #316: Fatal error for git clone on Windows - Fixed #320: Chrome 58 creates double underline for `abbr` tags @@ -1444,12 +1499,12 @@ - Fixed miscalculated sidebar height due to missing margin collapse - Changed deprecated MathJax CDN to Cloudflare -### 1.6.1 _ April 23, 2017 { id="1.6.1" } +### 1.6.1 April 23, 2017 { id="1.6.1" } - Fixed following of active/focused element if search input is focused - Fixed layer order of search component elements -### 1.6.0 _ April 22, 2017 { id="1.6.0" } +### 1.6.0 April 22, 2017 { id="1.6.0" } - Added build test for Docker image on Travis - Added search overlay for better user experience (focus) @@ -1458,17 +1513,17 @@ - Fixed missing top spacing for first targeted element in content - Fixed too small footnote divider when using larger font sizes -### 1.5.5 _ April 20, 2017 { id="1.5.5" } +### 1.5.5 April 20, 2017 { id="1.5.5" } - Fixed #282: Browser search (Meta+F) is hijacked -### 1.5.4 _ April 8, 2017 { id="1.5.4" } +### 1.5.4 April 8, 2017 { id="1.5.4" } - Fixed broken highlighting for two or more search terms - Fixed missing search results when only a `h1` is present - Fixed unresponsive overlay on Android -### 1.5.3 _ April 7, 2017 { id="1.5.3" } +### 1.5.3 April 7, 2017 { id="1.5.3" } - Fixed deprecated calls for template variables - Fixed wrong palette color for focused search result @@ -1476,17 +1531,17 @@ - Fixed missing top spacing on 404 page - Fixed missing right spacing on overflow of source container -### 1.5.2 _ April 5, 2017 { id="1.5.2" } +### 1.5.2 April 5, 2017 { id="1.5.2" } - Added requirements as explicit dependencies in `setup.py` - Fixed non-synchronized transitions in search form -### 1.5.1 _ March 30, 2017 { id="1.5.1" } +### 1.5.1 March 30, 2017 { id="1.5.1" } - Fixed rendering and offset of targeted footnotes - Fixed #238: Link on logo is not set to `site_url` -### 1.5.0 _ March 24, 2017 { id="1.5.0" } +### 1.5.0 March 24, 2017 { id="1.5.0" } - Added support for localization of search placeholder - Added keyboard events for quick access of search @@ -1499,11 +1554,11 @@ - Fixed #231: Escape key doesn't exit search - Removed old-style figures from font feature settings -### 1.4.1 _ March 16, 2017 { id="1.4.1" } +### 1.4.1 March 16, 2017 { id="1.4.1" } - Fixed invalid destructuring attempt on NodeList (in Safari, Edge, IE) -### 1.4.0 _ March 16, 2017 { id="1.4.0" } +### 1.4.0 March 16, 2017 { id="1.4.0" } - Added support for grouping searched sections by documents - Added support for highlighting of search terms @@ -1511,7 +1566,7 @@ - Fixed #216: table of contents icon doesn't show if `h1` is not present - Reworked style and layout of search results for better usability -### 1.3.0 _ March 11, 2017 { id="1.3.0" } +### 1.3.0 March 11, 2017 { id="1.3.0" } - Added support for page-specific title and description using metadata - Added support for linking source files to documentation @@ -1525,7 +1580,7 @@ - Reduced repaints to a minimum for non-tabs configuration - Reduced contrast of edit button (slightly) -### 1.2.0 _ March 3, 2017 { id="1.2.0" } +### 1.2.0 March 3, 2017 { id="1.2.0" } - Added `quote` (synonym: `cite`) style for admonitions - Added help message to build pipeline @@ -1533,11 +1588,11 @@ - Fixed #197: Link missing in tabs navigation on deeply nested items - Removed unnecessary dev dependencies -### 1.1.1 _ February 26, 2017 { id="1.1.1" } +### 1.1.1 February 26, 2017 { id="1.1.1" } - Fixed incorrectly displayed nested lists when using tabs -### 1.1.0 _ February 26, 2017 { id="1.1.0" } +### 1.1.0 February 26, 2017 { id="1.1.0" } - Added tabs navigation feature (optional) - Added Disqus integration (optional) @@ -1552,36 +1607,36 @@ - Refactored and automated Docker build and PyPI release - Refactored build scripts -### 1.0.5 _ February 18, 2017 { id="1.0.5" } +### 1.0.5 February 18, 2017 { id="1.0.5" } - Fixed #153: Sidebar flows out of constrained area in Chrome 56 - Fixed #159: Footer jitter due to JavaScript if content is short -### 1.0.4 _ February 16, 2017 { id="1.0.4" } +### 1.0.4 February 16, 2017 { id="1.0.4" } - Fixed #142: Documentation build errors if `h1` is defined as raw HTML - Fixed #164: PyPI release does not build and install - Fixed offsets of targeted headlines - Increased sidebar font size by `0.12rem` -### 1.0.3 _ January 22, 2017 { id="1.0.3" } +### 1.0.3 January 22, 2017 { id="1.0.3" } - Fixed #117: Table of contents items don't blur on fast scrolling - Refactored sidebar positioning logic - Further reduction of repaints -### 1.0.2 _ January 15, 2017 { id="1.0.2" } +### 1.0.2 January 15, 2017 { id="1.0.2" } - Fixed #108: Horizontal scrollbar in content area -### 1.0.1 _ January 14, 2017 { id="1.0.1" } +### 1.0.1 January 14, 2017 { id="1.0.1" } - Fixed massive repaints happening when scrolling - Fixed footer back reference positions in case of overflow - Fixed header logo from showing when the menu icon is rendered - Changed scrollbar behavior to only show when content overflows -### 1.0.0 _ January 13, 2017 { id="1.0.0" } +### 1.0.0 January 13, 2017 { id="1.0.0" } - Introduced Webpack for more sophisticated JavaScript bundling - Introduced ESLint and Stylelint for code style checks @@ -1610,27 +1665,29 @@ - Fixed live reload chain in watch mode when saving a template - Fixed variable references to work with MkDocs 0.16 -### 0.2.4 _ June 26, 2016 { id="0.2.4" } +--- + +### 0.2.4 June 26, 2016 { id="0.2.4" } - Fixed improperly set default favicon - Fixed #33: Protocol relative URL for webfonts doesn't work with `file://` - Fixed #34: IE11 on Windows 7 doesn't honor `max-width` on `main` tag - Fixed #35: Add styling for blockquotes -### 0.2.3 _ May 16, 2016 { id="0.2.3" } +### 0.2.3 May 16, 2016 { id="0.2.3" } - Fixed #25: Highlight inline fenced blocks - Fixed #26: Better highlighting for keystrokes - Fixed #30: Suboptimal syntax highlighting for PHP -### 0.2.2 _ March 20, 2016 { id="0.2.2" } +### 0.2.2 March 20, 2016 { id="0.2.2" } - Fixed #15: Document Pygments dependency for CodeHilite - Fixed #16: Favicon could not be set through `mkdocs.yml` - Fixed #17: Put version into own container for styling - Fixed #20: Fix rounded borders for tables -### 0.2.1 _ March 12, 2016 { id="0.2.1" } +### 0.2.1 March 12, 2016 { id="0.2.1" } - Fixed #10: Invisible header after closing search bar with ESC key - Fixed #13: Table cells don't wrap @@ -1638,21 +1695,21 @@ - Corrected wrong path for static asset monitoring in Gulpfile.js - Set up tracking of site search for Google Analytics -### 0.2.0 _ February 24, 2016 { id="0.2.0" } +### 0.2.0 February 24, 2016 { id="0.2.0" } - Fixed #6: Include multiple color palettes via `mkdocs.yml` - Fixed #7: Better colors for links inside admonition notes and warnings - Fixed #9: Text for prev/next footer navigation should be customizable - Refactored templates (replaced `if`/`else` with modifiers where possible) -### 0.1.3 _ February 21, 2016 { id="0.1.3" } +### 0.1.3 February 21, 2016 { id="0.1.3" } - Fixed #3: Ordered lists within an unordered list have `::before` content - Fixed #4: Click on Logo/Title without Github-Repository: `"None"` - Fixed #5: Page without headlines renders empty list in table of contents - Moved Modernizr to top to ensure basic usability in IE8 -### 0.1.2 _ February 16, 2016 { id="0.1.2" } +### 0.1.2 February 16, 2016 { id="0.1.2" } - Fixed styles for deep navigational hierarchies - Fixed webfont delivery problem when hosted in subdirectories @@ -1662,7 +1719,7 @@ - Set download link to latest version if available - Set up tracking of outgoing links and actions for Google Analytics -### 0.1.1 _ February 11, 2016 { id="0.1.1" } +### 0.1.1 February 11, 2016 { id="0.1.1" } - Fixed #1: GitHub stars don't work if the repo_url ends with a `/` - Updated NPM and Bower dependencies to most recent versions @@ -1670,6 +1727,6 @@ - Made MkDocs building/serving in build process optional - Set up continuous integration with Travis -### 0.1.0 _ February 9, 2016 { id="0.1.0" } +### 0.1.0 February 9, 2016 { id="0.1.0" } - Initial release diff --git a/docs/creating-your-site.md b/docs/creating-your-site.md index 4fc90ff28d2..8474ec54373 100644 --- a/docs/creating-your-site.md +++ b/docs/creating-your-site.md @@ -24,7 +24,7 @@ Alternatively, if you're running Material for MkDocs from within Docker, use: This will create the following structure: -``` +``` { .sh .no-copy } . ├─ docs/ │ └─ index.md diff --git a/docs/customization.md b/docs/customization.md index e7e4baa05b5..720889dfa19 100644 --- a/docs/customization.md +++ b/docs/customization.md @@ -19,7 +19,7 @@ If you want to tweak some colors or change the spacing of certain elements, you can do this in a separate style sheet. The easiest way is by creating a new style sheet file in the `docs` directory: -``` sh +``` { .sh .no-copy } . ├─ docs/ │ └─ stylesheets/ @@ -39,7 +39,7 @@ extra_css: If you want to integrate another syntax highlighter or add some custom logic to your theme, create a new JavaScript file in the `docs` directory: -``` sh +``` { .sh .no-copy } . ├─ docs/ │ └─ javascripts/ @@ -87,7 +87,7 @@ of the original theme, as any file in the `overrides` directory will replace the file with the same name which is part of the original theme. Besides, further assets may also be put in the `overrides` directory: -``` sh +``` { .sh .no-copy } . ├─ .icons/ # Bundled icon sets ├─ assets/ @@ -113,7 +113,6 @@ assets may also be put in the `overrides` directory: │ ├─ nav.html # Main navigation │ ├─ nav-item.html # Main navigation item │ ├─ pagination.html # Pagination (used for blog) -│ ├─ palette.html # Color palette │ ├─ post.html # Blog post excerpt │ ├─ search.html # Search interface │ ├─ social.html # Social links @@ -143,7 +142,7 @@ and location in the `overrides` directory. For example, to replace the original `footer.html` partial, create a new `footer.html` partial in the `overrides` directory: -``` sh +``` { .sh .no-copy } . ├─ overrides/ │ └─ partials/ @@ -161,7 +160,7 @@ template blocks, which are defined inside the templates and wrap specific features. In order to set up block overrides, create a `main.html` file inside the `overrides` directory: -``` sh +``` { .sh .no-copy } . ├─ overrides/ │ └─ main.html diff --git a/docs/getting-started.md b/docs/getting-started.md index 12215786a56..bb8a41f5e50 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -23,10 +23,10 @@ Material for MkDocs with: pip install mkdocs-material ``` -=== "8.x" +=== "9.x" ``` sh - pip install mkdocs-material=="8.*" # (1)! + pip install mkdocs-material=="9.*" # (1)! ``` 1. Material for MkDocs uses [semantic versioning][^1], which is why it's a @@ -85,10 +85,10 @@ and pull the image with: docker pull squidfunk/mkdocs-material ``` -=== "8.x" +=== "9.x" ``` - docker pull squidfunk/mkdocs-material:8 + docker pull squidfunk/mkdocs-material:9 ``` The `mkdocs` executable is provided as an entry point and `serve` is the diff --git a/docs/index.md b/docs/index.md index 5bafad5d257..cb9f98f4fca 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,7 +1,6 @@ --- template: home.html title: Material for MkDocs -ᴴₒᴴₒᴴₒ: false --- Welcome to Material for MkDocs. diff --git a/docs/insiders/changelog.md b/docs/insiders/changelog.md index 4a3e62dc500..a6df0388a5c 100644 --- a/docs/insiders/changelog.md +++ b/docs/insiders/changelog.md @@ -2,29 +2,29 @@ ## Material for MkDocs Insiders -### 4.27.0 _ December 20, 2022 { id="4.27.0" } +### 4.27.0 December 20, 2022 { id="4.27.0" } - Added built-in typeset plugin to preserve formatting in sidebars - Added URL and table of contents support for blog categories -### 4.26.6 _ November 28, 2022 { id="4.26.6" } +### 4.26.6 November 28, 2022 { id="4.26.6" } - Fixed #4683: Tags plugin crashes when a tag is empty -### 4.26.5 _ November 27, 2022 { id="4.26.5" } +### 4.26.5 November 27, 2022 { id="4.26.5" } - Fixed #4632: Post excerpt title link doesn't point to top of the page -### 4.26.4 _ November 27, 2022 { id="4.26.4" } +### 4.26.4 November 27, 2022 { id="4.26.4" } - Fixed redundant file extension when using privacy plugin -### 4.26.3 _ November 15, 2022 { id="4.26.3" } +### 4.26.3 November 15, 2022 { id="4.26.3" } - Fixed #4637: Attachments w/o titles in related links error in blog plugin - Fixed #4631: Remote favicons not downloaded and inlined by privacy plugin -### 4.26.2 _ November 3, 2022 { id="4.26.2" } +### 4.26.2 November 3, 2022 { id="4.26.2" } - Updated MkDocs to 1.4.2 - Added support for tag compare functions when sorting on index pages @@ -36,59 +36,59 @@ - Fixed #4542: Blog plugin doesn't allow for multiple instances - Fixed #4532: Blog plugin doesn't allow for mixed use of date and datetime -### 4.26.1 _ October 22, 2022 { id="4.26.1" } +### 4.26.1 October 22, 2022 { id="4.26.1" } - Improved reporting of configuration errors in tags plugin - Fixed #4515: Privacy plugin fails when site URL is not defined - Fixed #4514: Privacy plugin doesn't fetch Google fonts (4.26.0 regression) -### 4.26.0 _ October 18, 2022 { id="4.26.0" } +### 4.26.0 October 18, 2022 { id="4.26.0" } - Refactored privacy plugin to prepare for new features - Added support for `rel=noopener` links in privacy plugin - Resolve encoding issues with blog and privacy plugin -### 4.25.5 _ October 16, 2022 { id="4.25.5" } +### 4.25.5 October 16, 2022 { id="4.25.5" } - Updated MkDocs to 1.4.1 - Added namespace prefix to built-in plugins - Updated `content` and `header` partial -### 4.25.4 _ October 9, 2022 { id="4.25.4" } +### 4.25.4 October 9, 2022 { id="4.25.4" } - Fixed other path issues for standalone blogs (4.24.2 regression) -### 4.25.3 _ October 9, 2022 { id="4.25.3" } +### 4.25.3 October 9, 2022 { id="4.25.3" } - Fixed #4457: Posts not collected for standalone blog (4.24.2 regression) -### 4.25.2 _ October 4, 2022 { id="4.25.2" } +### 4.25.2 October 4, 2022 { id="4.25.2" } - Fixed #4452: Blog and tags plugin crash when specifying slugify function -### 4.25.1 _ October 3, 2022 { id="4.25.1" } +### 4.25.1 October 3, 2022 { id="4.25.1" } - Updated `mkdocs-rss-plugin` in `Dockerfile` to fix MkDocs compat errors -### 4.25.0 _ October 2, 2022 { id="4.25.0" } +### 4.25.0 October 2, 2022 { id="4.25.0" } - Added support for navigation subtitles - Added support for defining an allow list for built-in tags plugin - Added support for custom slugify functions for built-in tags plugin - Improved stability of search plugin when using `--dirtyreload` -### 4.24.2 _ October 1, 2022 { id="4.24.2" } +### 4.24.2 October 1, 2022 { id="4.24.2" } - Updated MkDocs to 1.4 - Fixed compatibility issues with MkDocs 1.4 - Fixed incorrectly generated paths in privacy plugin - Fixed blog index page not showing navigation when using meta plugin -### 4.24.1 _ September 30, 2022 { id="4.24.1" } +### 4.24.1 September 30, 2022 { id="4.24.1" } - Fixed #4430: build error when enabling consent without repository URL -### 4.24.0 _ September 27, 2022 { id="4.24.0" } +### 4.24.0 September 27, 2022 { id="4.24.0" } - Added support for custom content on index pages (blog) - Added support for keeping content on paginated index pages (blog) @@ -98,265 +98,265 @@ - Fixed #4396: Front matter of index pages not inherited by pagination (blog) - Improved performance by building post excerpts once (blog) -### 4.23.6 _ September 22, 2022 { id="4.23.6" } +### 4.23.6 September 22, 2022 { id="4.23.6" } - Fixed #4389: Blog posts in first week of year in wrong archive - Fixed (= switched) footer previous and next links for blog posts -### 4.23.5 _ September 18, 2022 { id="4.23.5" } +### 4.23.5 September 18, 2022 { id="4.23.5" } - Fixed #4367: Improved blog plugin date handling for MultiMarkdown syntax - Fixed #4374: Fixed invalid URLs of related links to other blog posts -### 4.23.4 _ September 14, 2022 { id="4.23.4" } +### 4.23.4 September 14, 2022 { id="4.23.4" } - Fixed #4365: Recursion error in blog plugin due to `deepcopy` - Fixed path errors for blog plugin on Windows - Fixed publishing workflow in forked repositories -### 4.23.3 _ September 13, 2022 { id="4.23.3" } +### 4.23.3 September 13, 2022 { id="4.23.3" } - Fixed previous and next page links for drafts of blog posts -### 4.23.2 _ September 13, 2022 { id="4.23.2" } +### 4.23.2 September 13, 2022 { id="4.23.2" } - Fixed #4348: Blog plugin crashes on custom `nav` title - Fixed blog plugin crashing when category contained only drafts - Fixed rendering of content from blog index file -### 4.23.1 _ September 12, 2022 { id="4.23.1" } +### 4.23.1 September 12, 2022 { id="4.23.1" } - Fixed #4345: Blog plugin errors with default settings -### 4.23.0 _ September 12, 2022 { id="4.23.0" } +### 4.23.0 September 12, 2022 { id="4.23.0" } - Added blogging support via built-in blog plugin -### 4.22.1 _ September 7, 2022 { id="4.22.1" } +### 4.22.1 September 7, 2022 { id="4.22.1" } - Fixed #4217: Tooltips in data tables render in wrong position -### 4.22.0 _ August 21, 2022 { id="4.22.0" } +### 4.22.0 August 21, 2022 { id="4.22.0" } - Added support for navigation status -### 4.21.1 _ August 13, 2022 { id="4.21.1" } +### 4.21.1 August 13, 2022 { id="4.21.1" } - Fixed #4176: Broken image when avatar is served by Gravatar - Fixed #4212: Deferred search initialization for file:// locations -### 4.21.0 _ July 17, 2022 { id="4.21.0" } +### 4.21.0 July 17, 2022 { id="4.21.0" } - Added meta plugin: set front matter for all pages in a folder - Fixed #4114: Tags plugin fails if only `tags_extra_files` is set -### 4.20.1 _ July 11, 2022 { id="4.20.1" } +### 4.20.1 July 11, 2022 { id="4.20.1" } - Fixed #4105: Tags plugin fails if `tags_file` is not set (4.20.0 regression) -### 4.20.0 _ July 7, 2022 { id="4.20.0" } +### 4.20.0 July 7, 2022 { id="4.20.0" } - Added support for additional tags indexes - Fixed #4100: Tag icons not shown in tags index -### 4.19.2 _ July 4, 2022 { id="4.19.2" } +### 4.19.2 July 4, 2022 { id="4.19.2" } - Fixed #4051: Privacy plugin fails if symlinking isn't allowed on Windows -### 4.19.1 _ June 25, 2022 { id="4.19.1" } +### 4.19.1 June 25, 2022 { id="4.19.1" } - Added `mkdocs-git-committers-plugin` to Dockerfile - Added `mkdocs-git-revision-date-localized-plugin` to Dockerfile -### 4.19.0 _ June 24, 2022 { id="4.19.0" } +### 4.19.0 June 24, 2022 { id="4.19.0" } - Added support for document contributors - Updated French translations for cookie consent -### 4.18.2 _ June 16, 2022 { id="4.18.2" } +### 4.18.2 June 16, 2022 { id="4.18.2" } - Fixed #4026: Fixed tooltips not mounted for nested navigation links -### 4.18.1 _ June 14, 2022 { id="4.18.1" } +### 4.18.1 June 14, 2022 { id="4.18.1" } - Fixed #3990: Chinese search highlighting not working on non-boundaries -### 4.18.0 _ June 11, 2022 { id="4.18.0" } +### 4.18.0 June 11, 2022 { id="4.18.0" } - Added support for automatic dark/light mode - Fixed #4009: Privacy plugin uses invalid paths for file cache on Windows -### 4.17.2 _ June 5, 2022 { id="4.17.2" } +### 4.17.2 June 5, 2022 { id="4.17.2" } - Added support for custom jieba dictionaries (Chinese search) -### 4.17.1 _ June 5, 2022 { id="4.17.1" } +### 4.17.1 June 5, 2022 { id="4.17.1" } - Added support for cookie consent reject button - Added support for cookie consent custom button ordering - Fixed #3988: Content tab not focused after alternating anchor links -### 4.17.0 _ June 4, 2022 { id="4.17.0" } +### 4.17.0 June 4, 2022 { id="4.17.0" } - Added support for content tabs anchor links (deep linking) - Fixed #3975: Detect composition events in search interface (Chinese) - Fixed #3980: Search plugin doesn't use title set via front matter -### 4.16.2 _ May 29, 2022 { id="4.16.2" } +### 4.16.2 May 29, 2022 { id="4.16.2" } - Fixed #3961: Nested sections triggered build error for navigation tabs -### 4.16.1 _ May 28, 2022 { id="4.16.1" } +### 4.16.1 May 28, 2022 { id="4.16.1" } - Switched feedback widget rating titles to tooltips - Improved contrast of link colors for light/dark color schemes - Fixed #3950: Sticky navigation tabs rendering broken (4.15.2 regression) - Fixed #3958: Links invisible when using `white` primary color -### 4.16.0 _ May 25, 2022 { id="4.16.0" } +### 4.16.0 May 25, 2022 { id="4.16.0" } - Added support for navigation pruning - Fixed search results for non-segmented characters (4.15.2 regression) -### 4.15.2 _ May 22, 2022 { id="4.15.2" } +### 4.15.2 May 22, 2022 { id="4.15.2" } - Removed workaround for `abbr` on touch devices (superseded by tooltips) - Fixed #3915: Improved Chinese search query segmentation - Fixed #3938: Fixed tooltips position for navigation titles with ellipsis -### 4.15.1 _ May 14, 2022 { id="4.15.1" } +### 4.15.1 May 14, 2022 { id="4.15.1" } - Improved performance of element focus obervables - Fixed #3531: Added prev/next buttons to content tabs - Fixed tooltip positioning when host element is hidden -### 4.15.0 _ May 8, 2022 { id="4.15.0" } +### 4.15.0 May 8, 2022 { id="4.15.0" } - Added support for improved tooltips - Fixed #3785: Show tooltip on hover for overflowing navigation link -### 4.14.0 _ May 5, 2022 { id="4.14.0" } +### 4.14.0 May 5, 2022 { id="4.14.0" } - Added Chinese language support to built-in search plugin - Fixed all-numeric page titles raising error in social plugin -### 4.13.2 _ April 30, 2022 { id="4.13.2" } +### 4.13.2 April 30, 2022 { id="4.13.2" } - Improved caching of downloaded resources in privacy plugin - Fixed #3851: External images not downloaded by privacy plugin -### 4.13.1 _ April 25, 2022 { id="4.13.1" } +### 4.13.1 April 25, 2022 { id="4.13.1" } - Fixed #3839: Tags plugin breaks without icons (4.13.0 regression) -### 4.13.0 _ April 24, 2022 { id="4.13.0" } +### 4.13.0 April 24, 2022 { id="4.13.0" } - Added support for tag icons -### 4.12.0 _ March 27, 2022 { id="4.12.0" } +### 4.12.0 March 27, 2022 { id="4.12.0" } - Added support for card grids and grid layouts - Fixed #3685: Annotations sometimes broken when using instant loading - Fixed #3742: Automatically add Mermaid.js when building for offline usage -### 4.11.0 _ March 6, 2022 { id="4.11.0" } +### 4.11.0 March 6, 2022 { id="4.11.0" } - Added support for excluding external assets from privacy plugin -### 4.10.1 _ March 2, 2022 { id="4.10.1" } +### 4.10.1 March 2, 2022 { id="4.10.1" } - Added missing build dependencies to Dockerfile - Fixed encoding issues in privacy plugin, now forcing UTF-8 encoding - Fixed #3624: Scroll to active navigation item unreliable in Firefox - Fixed #3642: Privacy plugin errors when font setting was omitted -### 4.10.0 _ February 27, 2022 { id="4.10.0" } +### 4.10.0 February 27, 2022 { id="4.10.0" } - Added support for offline plugin (supersedes offline search support) - Improved built-in privacy plugin to download nested JavaScript assets - Refactored configuration of built-in privacy plugin -### 4.9.1 _ February 21, 2022 { id="4.9.1" } +### 4.9.1 February 21, 2022 { id="4.9.1" } - Fixed #3610: missing `lxml` dependency for privacy plugin - Fixed error when charset is missing in `content-type` header -### 4.9.0 _ February 20, 2022 { id="4.9.0" } +### 4.9.0 February 20, 2022 { id="4.9.0" } - Added privacy plugin: automatic downloading of external assets -### 4.8.3 _ February 13, 2022 { id="4.8.3" } +### 4.8.3 February 13, 2022 { id="4.8.3" } - Fixed #3560: Mermaid diagrams don't render for `file://` locations -### 4.8.2 _ February 10, 2022 { id="4.8.2" } +### 4.8.2 February 10, 2022 { id="4.8.2" } - Fixed #3559: Mermaid diagrams don't render inside closed `details` -### 4.8.1 _ February 6, 2022 { id="4.8.1" } +### 4.8.1 February 6, 2022 { id="4.8.1" } - Fixed jump back to top on mobile when using anchor following -### 4.8.0 _ February 6, 2022 { id="4.8.0" } +### 4.8.0 February 6, 2022 { id="4.8.0" } - Added support for anchor following table of contents (= auto scroll) -### 4.7.2 _ February 2, 2022 { id="4.7.2" } +### 4.7.2 February 2, 2022 { id="4.7.2" } - Fixed #3526: Transparent sidebar title due to Safari bug - Fixed #3528: Firefox sometimes clips text in flow chart diagrams -### 4.7.1 _ January 30, 2022 { id="4.7.1" } +### 4.7.1 January 30, 2022 { id="4.7.1" } - Fixed #3506: Tags index not respecting title set via front matter -### 4.7.0 _ January 25, 2022 { id="4.7.0" } +### 4.7.0 January 25, 2022 { id="4.7.0" } - Added native support for offline search -### 4.6.1 _ January 16, 2022 { id="4.6.1" } +### 4.6.1 January 16, 2022 { id="4.6.1" } - Fixed #3459: Section index pages picking up wrong title -### 4.6.0 _ January 11, 2022 { id="4.6.0" } +### 4.6.0 January 11, 2022 { id="4.6.0" } - Added support for annotations (outside of code blocks) -### 4.5.2 _ January 8, 2022 { id="4.5.2" } +### 4.5.2 January 8, 2022 { id="4.5.2" } - Fixed #3440: Content tab indicator not moving when using linking - Fixed #3445: Content tab switch flickers/jitters when using linking -### 4.5.1 _ January 2, 2022 { id="4.5.1" } +### 4.5.1 January 2, 2022 { id="4.5.1" } - Added support for setting initial state of cookie consent - Fixed #3396: Disappearing link in navigation due to Safari bug -### 4.5.0 _ December 16, 2021 { id="4.5.0" } +### 4.5.0 December 16, 2021 { id="4.5.0" } - Added support for navigation icons -### 4.4.0 _ December 10, 2021 { id="4.4.0" } +### 4.4.0 December 10, 2021 { id="4.4.0" } - Added support for code annotation anchor links (deep linking) - Added new code annotation syntax modifier to strip comment - Updated German translations for cookie consent -### 4.3.0 _ December 5, 2021 { id="4.3.0" } +### 4.3.0 December 5, 2021 { id="4.3.0" } - Added support for custom fonts in social cards - Fixed #3300: Announcement bar reappearing when using instant loading -### 4.2.0 _ December 2, 2021 { id="4.2.0" } +### 4.2.0 December 2, 2021 { id="4.2.0" } - Added support for dismissable announcement bar - Added support for named placeholders in feedback widget -### 4.1.0 _ November 30, 2021 { id="4.1.0" } +### 4.1.0 November 30, 2021 { id="4.1.0" } - Added support for passing page title to feedback forms -### 4.0.0 _ November 28, 2021 { id="4.0.0" } +### 4.0.0 November 28, 2021 { id="4.0.0" } - Removed deprecated content tabs legacy implementation - Removed deprecated `seealso` admonition type @@ -374,7 +374,7 @@ - Improved keyboard navigation for footnotes - Fixed #3214: Search highlighting breaks site when empty -### 3.2.3 _ November 20, 2021 { id="3.2.3" } +### 3.2.3 November 20, 2021 { id="3.2.3" } - Updated Swedish and French translations - Removed support for `.mermaid-experimental` class (now `.mermaid`) @@ -382,56 +382,56 @@ - Fixed #3216: Cookie consent not dismissed when invoked via anchor - Fixed #3232: Mermaid.js sometimes runs twice (race condition) -### 3.2.2 _ November 6, 2021 { id="3.2.2" } +### 3.2.2 November 6, 2021 { id="3.2.2" } - Fixed always last feedback rating being sent - Fixed #3145: Code annotations eat whole comment lines - Fixed #3170: Feedback widget doesn't send data to GA4 -### 3.2.1 _ November 4, 2021 { id="3.2.1" } +### 3.2.1 November 4, 2021 { id="3.2.1" } - Added support for custom Mermaid.js version via additional JavaScript - Fixed some configuration edge cases for tags plugin (3.1.5 regression) - Fixed feedback widget title not being centered in Firefox - Fixed #3179: Safari doesn't send request for feedback widget -### 3.2.0 _ October 31, 2021 { id="3.2.0" } +### 3.2.0 October 31, 2021 { id="3.2.0" } - Added support for feedback widget (Was this page helpful?) -### 3.1.5 _ October 28, 2021 { id="3.1.5" } +### 3.1.5 October 28, 2021 { id="3.1.5" } - Fixed #3144: Rogue link when using tags with auto-populated navigation - Fixed #3147: Code block line numbers appear in search results - Fixed #3158: Social cards do not strip HTML tags from title -### 3.1.4 _ October 17, 2021 { id="3.1.4" } +### 3.1.4 October 17, 2021 { id="3.1.4" } - Fixed #2974: Text cropped with other fonts than `Roboto` in social plugin - Fixed #3099: Encoding problems with non-latin character in social plugin - Fixed #3112: Japanese segmenter not executed as part of new tokenizer - Fixed tags (front matter) appearing in search with disabled tags plugin -### 3.1.3 _ October 12, 2021 { id="3.1.3" } +### 3.1.3 October 12, 2021 { id="3.1.3" } - Added warnings to search plugin for unsupported options and syntax - Fixed #3503: Search sometimes returns entire page - Fixed #3089: Single-line code annotations disappear when printing -### 3.1.2 _ October 6, 2021 { id="3.1.2" } +### 3.1.2 October 6, 2021 { id="3.1.2" } - Fixed incorrect path separators for social cards on Windows -### 3.1.1 _ September 26, 2021 { id="3.1.1" } +### 3.1.1 September 26, 2021 { id="3.1.1" } - Fixed ordering bug in search exclusion logic -### 3.1.0 _ September 26, 2021 { id="3.1.0" } +### 3.1.0 September 26, 2021 { id="3.1.0" } - Added support for excluding pages, sections, and elements from search - Fixed #2803: Code block annotations not visible when printing -### 3.0.1 _ September 19, 2021 { id="3.0.1" } +### 3.0.1 September 19, 2021 { id="3.0.1" } - Added support for using literal `h1-6` tags for search plugin - Fixed search plugin breaking on void elements without slashes @@ -439,7 +439,7 @@ - Fixed search plugin handling of multiple `h1` headlines - Fixed search plugin handling of missing `h1` headlines -### 3.0.0 _ September 13, 2021 { id="3.0.0" } +### 3.0.0 September 13, 2021 { id="3.0.0" } - Rewrite of MkDocs' search plugin - Added support for rich search previews @@ -447,41 +447,41 @@ - Improved search indexing performance (twice as fast) - Improved search highlighting -### 2.13.3 _ September 1, 2021 { id="2.13.3" } +### 2.13.3 September 1, 2021 { id="2.13.3" } - Added support for disabling social card generation -### 2.13.2 _ August 25, 2021 { id="2.13.2" } +### 2.13.2 August 25, 2021 { id="2.13.2" } - Fixed #2965: Social plugin error when primary color is not defined -### 2.13.1 _ August 21, 2021 { id="2.13.1" } +### 2.13.1 August 21, 2021 { id="2.13.1" } - Fixed #2948: Social cards are not cached - Fixed #2953: Mermaid.js diagrams can't be centered anymore -### 2.13.0 _ August 7, 2021 { id="2.13.0" } +### 2.13.0 August 7, 2021 { id="2.13.0" } - Added support for custom colors in social cards -### 2.12.2 _ August 4, 2021 { id="2.12.2" } +### 2.12.2 August 4, 2021 { id="2.12.2" } - Fixed #2891: Division by zero error in social plugin -### 2.12.1 _ July 26, 2021 { id="2.12.1" } +### 2.12.1 July 26, 2021 { id="2.12.1" } - Fixed error in social plugin when `site_description` was not set - Fixed error in social plugin for non-ASCII characters -### 2.12.0 _ July 25, 2021 { id="2.12.0" } +### 2.12.0 July 25, 2021 { id="2.12.0" } - Added support for social cards -### 2.11.1 _ July 20, 2021 { id="2.11.1" } +### 2.11.1 July 20, 2021 { id="2.11.1" } - Fixed order of tags index, now sorted alphabetically -### 2.11.0 _ July 18, 2021 { id="2.11.0" } +### 2.11.0 July 18, 2021 { id="2.11.0" } - Improved Mermaid.js intergration, now stable - Added support for sequence diagrams @@ -489,193 +489,193 @@ - Added support for cookie consent configuration - Added feature flag to always enable annotations -### 2.10.0 _ July 10, 2021 { id="2.10.0" } +### 2.10.0 July 10, 2021 { id="2.10.0" } - Added support for cookie consent - Fixed #2807: Back-to-top button not hidden when using sticky tabs -### 2.9.2 _ May 30, 2021 { id="2.9.2" } +### 2.9.2 May 30, 2021 { id="2.9.2" } - Moved tags to partial for easier customization - Added support for hiding tags on any page -### 2.9.1 _ May 24, 2021 { id="2.9.1" } +### 2.9.1 May 24, 2021 { id="2.9.1" } - Added missing guard for linking of content tabs -### 2.9.0 _ May 23, 2021 { id="2.9.0" } +### 2.9.0 May 23, 2021 { id="2.9.0" } - Added support for linking of content tabs -### 2.8.0 _ May 12, 2021 { id="2.8.0" } +### 2.8.0 May 12, 2021 { id="2.8.0" } - Added support for boosting pages in search -### 2.7.2 _ May 8, 2021 { id="2.7.2" } +### 2.7.2 May 8, 2021 { id="2.7.2" } - Fixed #2638: Warnings shown when using `tags` plugin without directory URLs -### 2.7.1 _ May 3, 2021 { id="2.7.1" } +### 2.7.1 May 3, 2021 { id="2.7.1" } - Fixed `git-revision-date-localized` plugin integration (2.7.0 regression) -### 2.7.0 _ May 1, 2021 { id="2.7.0" } +### 2.7.0 May 1, 2021 { id="2.7.0" } - Added support for tags (with search integration) -### 2.6.0 _ April 11, 2021 { id="2.6.0" } +### 2.6.0 April 11, 2021 { id="2.6.0" } - Stay on page when switching versions -### 2.5.0 _ March 28, 2021 { id="2.5.0" } +### 2.5.0 March 28, 2021 { id="2.5.0" } - Added support for version warning -### 2.4.0 _ March 20, 2021 { id="2.4.0" } +### 2.4.0 March 20, 2021 { id="2.4.0" } - Added support for custom admonition icons - Fixed #2444: Code block annotations with extra comments have wrong index -### 2.3.1 _ March 14, 2021 { id="2.3.1" } +### 2.3.1 March 14, 2021 { id="2.3.1" } - Fixed anchor offset for permalinks when using sticky navigation tabs -### 2.3.0 _ March 13, 2021 { id="2.3.0" } +### 2.3.0 March 13, 2021 { id="2.3.0" } - Added support for back-to-top button -### 2.2.1 _ March 4, 2021 { id="2.2.1" } +### 2.2.1 March 4, 2021 { id="2.2.1" } - Fixed #2382: Repository stats failing when no release tag is present -### 2.2.0 _ February 28, 2021 { id="2.2.0" } +### 2.2.0 February 28, 2021 { id="2.2.0" } - Added support for code block annotations -### 2.1.0 _ February 26, 2021 { id="2.1.0" } +### 2.1.0 February 26, 2021 { id="2.1.0" } - Added support for anchor tracking -### 2.0.0 _ February 24, 2021 { id="2.0.0" } +### 2.0.0 February 24, 2021 { id="2.0.0" } - Migrated Insiders to the new architecture - Swapped color palette toggle configuration -### 1.17.0 _ January 31, 2021 { id="1.17.0" } +### 1.17.0 January 31, 2021 { id="1.17.0" } - Added support for section index pages -### 1.16.1 _ January 26, 2021 { id="1.16.1" } +### 1.16.1 January 26, 2021 { id="1.16.1" } - Fixed #2249: Instant loading + sticky tabs result in invalid links - Fixed #2248: Search highlighting URL parameter always added - Fixed #2235: Version selector doesn't select current version for aliases -### 1.16.0 _ January 7, 2021 { id="1.16.0" } +### 1.16.0 January 7, 2021 { id="1.16.0" } - Added latest release to repository info (GitHub) - Slight facelift of repository info (lighter fonts, spacing and icons) -### 1.15.0 _ January 2, 2021 { id="1.15.0" } +### 1.15.0 January 2, 2021 { id="1.15.0" } - Added support for native Mermaid.js integration -### 1.14.0 _ December 30, 2020 { id="1.14.0" } +### 1.14.0 December 30, 2020 { id="1.14.0" } - Added support for sharing searches -### 1.13.2 _ December 22, 2020 { id="1.13.2" } +### 1.13.2 December 22, 2020 { id="1.13.2" } - Fixed version selector + sticky tabs navigation rendering issues - Fixed version selector wrapping -### 1.13.1 _ December 20, 2020 { id="1.13.1" } +### 1.13.1 December 20, 2020 { id="1.13.1" } - Removed horizontal scrollbars on language and version selector - Fixed type conversion in JavaScript config -### 1.13.0 _ December 13, 2020 { id="1.13.0" } +### 1.13.0 December 13, 2020 { id="1.13.0" } - Refactored navigation tabs to simplify grouping behavior - Added support for sticky navigation tabs - Added support for arbitrary links in navigation tabs - Fixed #2098: Subsequent active subsection not highlighted correctly -### 1.12.1 _ December 8, 2020 { id="1.12.1" } +### 1.12.1 December 8, 2020 { id="1.12.1" } - Fixed empty language selector being shown -### 1.12.0 _ December 6, 2020 { id="1.12.0" } +### 1.12.0 December 6, 2020 { id="1.12.0" } - Added support for adding a language selector -### 1.11.2 _ November 29, 2020 { id="1.11.2" } +### 1.11.2 November 29, 2020 { id="1.11.2" } - Fixed #2068: Search highlight interprets code blocks as JavaScript -### 1.11.1 _ November 29, 2020 { id="1.11.1" } +### 1.11.1 November 29, 2020 { id="1.11.1" } - Refactored styling to be more stable and easier to adjust - Fixed some styling regressions from latest features -### 1.11.0 _ November 22, 2020 { id="1.11.0" } +### 1.11.0 November 22, 2020 { id="1.11.0" } - Added support for rendering admonitions as inline blocks -### 1.10.0 _ November 15, 2020 { id="1.10.0" } +### 1.10.0 November 15, 2020 { id="1.10.0" } - Added support for integrating table of contents into navigation -### 1.9.0 _ November 7, 2020 { id="1.9.0" } +### 1.9.0 November 7, 2020 { id="1.9.0" } - Added support for hiding navigation and table of contents on any page - Removed autohiding table of contents when empty -### 1.8.0 _ November 1, 2020 { id="1.8.0" } +### 1.8.0 November 1, 2020 { id="1.8.0" } - Added support for navigation sections - Fixed appearance of inactive search suggestions -### 1.7.0 _ October 25, 2020 { id="1.7.0" } +### 1.7.0 October 25, 2020 { id="1.7.0" } - Added support for deploying multiple versions - Fixed alignment of sidebar when content area is too small -### 1.6.0 _ October 11, 2020 { id="1.6.0" } +### 1.6.0 October 11, 2020 { id="1.6.0" } - Added support for search suggestions to save keystrokes - Added support for removing __Made with Material for MkDocs__ from footer - Fixed #1915: search should go to first result by pressing ++enter++ -### 1.5.1 _ September 21, 2020 { id="1.5.1" } +### 1.5.1 September 21, 2020 { id="1.5.1" } - Fixed content area stretching to whole width for long code blocks -### 1.5.0 _ September 19, 2020 { id="1.5.0" } +### 1.5.0 September 19, 2020 { id="1.5.0" } - Added support for autohiding table of contents when empty -### 1.4.1 _ September 6, 2020 { id="1.4.1" } +### 1.4.1 September 6, 2020 { id="1.4.1" } - Improved typeahead and search result relevance and scoring -### 1.4.0 _ August 30, 2020 { id="1.4.0" } +### 1.4.0 August 30, 2020 { id="1.4.0" } - Added support for autohiding header on scroll -### 1.3.0 _ August 26, 2020 { id="1.3.0" } +### 1.3.0 August 26, 2020 { id="1.3.0" } - Added support for user-selectable color palettes -### 1.2.0 _ August 11, 2020 { id="1.2.0" } +### 1.2.0 August 11, 2020 { id="1.2.0" } - Added feature to expand navigation by default -### 1.1.0 _ August 3, 2020 { id="1.1.0" } +### 1.1.0 August 3, 2020 { id="1.1.0" } - Added highlighting of search results -### 1.0.0 _ July 14, 2020 { id="1.0.0" } +### 1.0.0 July 14, 2020 { id="1.0.0" } - Added grouping of search results - Added missing query terms to search result diff --git a/docs/reference/admonitions.md b/docs/reference/admonitions.md index f2121ed5c9b..4eac4d2661e 100644 --- a/docs/reference/admonitions.md +++ b/docs/reference/admonitions.md @@ -34,8 +34,7 @@ See additional configuration options: ### Admonition icons -[:octicons-tag-24: 8.3.0][Admonition icons support] · -:octicons-beaker-24: Experimental +[:octicons-tag-24: 8.3.0][Admonition icons support] Each of the supported admonition types has a distinct icon, which can be changed to any icon bundled with the theme, or even a [custom icon]. Add the following @@ -230,9 +229,6 @@ Adding a `+` after the `???` token renders the block expanded: ### Inline blocks -[:octicons-tag-24: 7.0.0][Inline blocks support] · -:octicons-beaker-24: Experimental - Admonitions can also be rendered as inline blocks (i.e. for sidebars), placing them to the right using the `inline` + `end` modifiers, or to the left using only the `inline` modifier: @@ -282,8 +278,6 @@ prior to the content block you want to place them beside. If there's insufficient space to render the admonition next to the block, the admonition will stretch to the full width of the viewport, e.g. on mobile viewports. - [Inline blocks support]: https://github.com/squidfunk/mkdocs-material/releases/tag/7.0.0 - ### Supported types Following is a list of type qualifiers provided by Material for MkDocs, whereas diff --git a/docs/reference/buttons.md b/docs/reference/buttons.md index 72b8dcbc7ad..963c70e1b58 100644 --- a/docs/reference/buttons.md +++ b/docs/reference/buttons.md @@ -1,5 +1,5 @@ --- -icon: material/gesture-tap-button +icon: material/button-cursor --- # Buttons diff --git a/docs/reference/content-tabs.md b/docs/reference/content-tabs.md index 15fe47c73c6..fc01226d7d6 100644 --- a/docs/reference/content-tabs.md +++ b/docs/reference/content-tabs.md @@ -75,8 +75,7 @@ or to the [publishing guide for Insiders][tab_2]. ### Linked content tabs [:octicons-tag-24: 8.3.0][Linked content tabs support] · -:octicons-unlock-24: Feature flag · -:octicons-beaker-24: Experimental +:octicons-unlock-24: Feature flag When enabled, all content tabs across the whole documentation site will be linked and switch to the same label when the user clicks on a tab. Add the diff --git a/docs/reference/diagrams.md b/docs/reference/diagrams.md index d6ce3a99592..458ef8f1dbf 100644 --- a/docs/reference/diagrams.md +++ b/docs/reference/diagrams.md @@ -13,8 +13,7 @@ popular and flexible solution for drawing diagrams. ## Configuration -[:octicons-tag-24: 8.2.0][Diagrams support] · -:octicons-beaker-24: Experimental +[:octicons-tag-24: 8.2.0][Diagrams support] This configuration enables native support for [Mermaid.js] diagrams. Material for MkDocs will automatically initialize the JavaScript runtime when a page @@ -91,6 +90,7 @@ between those actors: ```` markdown title="Sequence diagram" ``` mermaid sequenceDiagram + autonumber Alice->>John: Hello John, how are you? loop Healthcheck John->>John: Fight against hypochondria @@ -106,6 +106,7 @@ sequenceDiagram ``` mermaid sequenceDiagram + autonumber Alice->>John: Hello John, how are you? loop Healthcheck John->>John: Fight against hypochondria diff --git a/docs/reference/images.md b/docs/reference/images.md index cbb30f2bb52..729107dab94 100644 --- a/docs/reference/images.md +++ b/docs/reference/images.md @@ -154,8 +154,7 @@ browsers without support: ### Light and dark mode -[:octicons-tag-24: 8.1.1][Light and dark mode support] · -:octicons-beaker-24: Experimental +[:octicons-tag-24: 8.1.1][Light and dark mode support] If you added a [color palette toggle] and want to show different images for light and dark color schemes, you can append a `#only-light` or `#only-dark` diff --git a/docs/schema/extra.json b/docs/schema/extra.json index b67d0ce302e..a94da860683 100644 --- a/docs/schema/extra.json +++ b/docs/schema/extra.json @@ -214,7 +214,8 @@ ] } ] - } + }, + "uniqueItems": true } }, "additionalProperties": false, diff --git a/docs/schema/plugins.json b/docs/schema/plugins.json index e1066d3fade..45f5ccfb54e 100644 --- a/docs/schema/plugins.json +++ b/docs/schema/plugins.json @@ -25,6 +25,9 @@ { "$ref": "plugins/blog.json" }, + { + "$ref": "plugins/info.json" + }, { "$ref": "plugins/meta.json" }, diff --git a/docs/schema/plugins/blog.json b/docs/schema/plugins/blog.json index c877a3e366a..39548988b81 100644 --- a/docs/schema/plugins/blog.json +++ b/docs/schema/plugins/blog.json @@ -254,6 +254,7 @@ "items": { "type": "string" }, + "uniqueItems": true, "default": [] }, "pagination": { diff --git a/docs/schema/plugins/external/git-authors.json b/docs/schema/plugins/external/git-authors.json index 4bf452ab6db..a76f3b9e0a7 100644 --- a/docs/schema/plugins/external/git-authors.json +++ b/docs/schema/plugins/external/git-authors.json @@ -27,7 +27,9 @@ "type": "array", "items": { "pattern": "(\\*|\\.md)$" - } + }, + "uniqueItems": true, + "minItems": 1 } }, "additionalProperties": false diff --git a/docs/schema/plugins/info.json b/docs/schema/plugins/info.json new file mode 100644 index 00000000000..26cc6236a51 --- /dev/null +++ b/docs/schema/plugins/info.json @@ -0,0 +1,31 @@ +{ + "$schema": "https://json-schema.org/draft-07/schema", + "title": "Built-in info plugin", + "oneOf": [ + { + "markdownDescription": "https://squidfunk.github.io/mkdocs-material/reporting-an-issue/#creating-a-zip-file", + "enum": [ + "info" + ] + }, + { + "type": "object", + "properties": { + "info": { + "markdownDescription": "https://squidfunk.github.io/mkdocs-material/reporting-an-issue/#creating-a-zip-file", + "type": "object", + "properties": { + "enabled": { + "title": "Enable plugin", + "markdownDescription": "https://squidfunk.github.io/mkdocs-material/reporting-an-issue/#creating-a-zip-file", + "type": "boolean", + "default": true + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] +} diff --git a/docs/schema/plugins/search.json b/docs/schema/plugins/search.json index f99370e3181..bbd1641b50b 100644 --- a/docs/schema/plugins/search.json +++ b/docs/schema/plugins/search.json @@ -36,6 +36,19 @@ "markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-site-search/#+search.separator", "type": "string" }, + "pipeline": { + "title": "Text processing pipeline for indexing", + "markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-site-search/#+search.pipeline", + "type": "array", + "items": { + "enum": [ + "stemmer", + "stopWordFilter", + "trimmer" + ] + }, + "uniqueItems": true + }, "jieba_dict": { "title": "Jieba dictionary replacement", "markdownDescription": "https://squidfunk.github.io/mkdocs-material/setup/setting-up-site-search/#+search.jieba_dict", diff --git a/docs/schema/plugins/tags.json b/docs/schema/plugins/tags.json index a62e084fd53..541b0fdaec4 100644 --- a/docs/schema/plugins/tags.json +++ b/docs/schema/plugins/tags.json @@ -36,7 +36,8 @@ "type": "array", "items": { "type": "string" - } + }, + "uniqueItems": true } }, "additionalProperties": false @@ -59,6 +60,7 @@ "items": { "type": "string" }, + "uniqueItems": true, "default": [] } }, diff --git a/docs/schema/theme.json b/docs/schema/theme.json index 12400030abb..ea9af64c00c 100644 --- a/docs/schema/theme.json +++ b/docs/schema/theme.json @@ -834,20 +834,6 @@ } } ] - }, - "include_search_page": { - "title": "Only necessary when installing from git", - "markdownDescription": "Must be set to `false`", - "enum": [ - false - ] - }, - "search_index_only": { - "title": "Only necessary when installing from git", - "markdownDescription": "Must be set to `false`", - "enum": [ - true - ] } }, "additionalProperties": false, diff --git a/docs/setup/building-for-offline-usage.md b/docs/setup/building-for-offline-usage.md index 1ff53c1d617..c836d80b55b 100644 --- a/docs/setup/building-for-offline-usage.md +++ b/docs/setup/building-for-offline-usage.md @@ -11,8 +11,7 @@ support for many of its features. ### Built-in offline plugin -[:octicons-heart-fill-24:{ .mdx-heart } Sponsors only][Insiders]{ .mdx-insiders } · -[:octicons-tag-24: insiders-4.10.0][Insiders] · +[:octicons-tag-24: 9.0.0][offline support] · :octicons-cpu-24: Plugin The built-in offline plugin makes sure that the [site search] works when you @@ -24,13 +23,9 @@ plugins: - offline ``` -> If you need to be able to build your documentation with and without -> [Insiders], please refer to the [built-in plugins] section to learn how -> shared configurations help to achieve this. - -The plugin will automatically disable [`use_directory_urls`][use_directory_urls] -via `mkdocs.yml`, ensuring that users can open your documentation directly -from the local file system. +The plugin will automatically disable the [`use_directory_urls`][use_directory_urls] +setting, ensuring that users can open your documentation directly from the local +file system. The following configuration options are available: @@ -52,14 +47,13 @@ hosted on a regular server. !!! tip "Automatically bundle all external assets" - The brand-new [built-in privacy plugin] makes it easy to use external assets + The [built-in privacy plugin] makes it easy to use external assets while building documentation for offline usage, as it will automatically download all external assets to distribute them with your documentation. - [Insiders]: ../insiders/index.md + [offline support]: https://github.com/squidfunk/mkdocs-material/releases/tag/9.0.0 [site search]: setting-up-site-search.md [site directory]: https://www.mkdocs.org/user-guide/configuration/#site_dir - [built-in plugins]: ../insiders/getting-started.md#built-in-plugins [use_directory_urls]: https://www.mkdocs.org/user-guide/configuration/#use_directory_urls [environment variable]: https://www.mkdocs.org/user-guide/configuration/#environment-variables [built-in privacy plugin]: ensuring-data-privacy.md#built-in-privacy-plugin diff --git a/docs/setup/changing-the-fonts.md b/docs/setup/changing-the-fonts.md index b671376afd0..d2d7a46af0d 100644 --- a/docs/setup/changing-the-fonts.md +++ b/docs/setup/changing-the-fonts.md @@ -64,7 +64,7 @@ theme: !!! tip "Automatically bundle Google Fonts" - The brand-new [built-in privacy plugin] makes it easy to use Google Fonts + The [built-in privacy plugin] makes it easy to use Google Fonts while complying with the __General Data Protection Regulation__ (GDPR), by automatically downloading and self-hosting the web font files. diff --git a/docs/setup/changing-the-language.md b/docs/setup/changing-the-language.md index 7cdf1d58790..baa4c24244f 100644 --- a/docs/setup/changing-the-language.md +++ b/docs/setup/changing-the-language.md @@ -58,7 +58,7 @@ The following languages are supported: - `it` – Italian - `ja` – Japanese - `ka` – Georgian -- `kr` – Korean +- `ko` – Korean - `lt` – Lithuanian - `lv` – Latvian - `mk` – Macedonian @@ -105,8 +105,7 @@ the default slug function works. Consider using a [Unicode-aware slug function]. ### Site language selector [:octicons-tag-24: 7.0.0][Site language selector support] · -:octicons-milestone-24: Default: _none_ · -:octicons-beaker-24: Experimental +:octicons-milestone-24: Default: _none_ If your documentation is available in multiple languages, a language selector pointing to those languages can be added to the header. Alternate languages diff --git a/docs/setup/changing-the-logo-and-icons.md b/docs/setup/changing-the-logo-and-icons.md index 1478fa488d7..c267fba0062 100644 --- a/docs/setup/changing-the-logo-and-icons.md +++ b/docs/setup/changing-the-logo-and-icons.md @@ -82,7 +82,7 @@ Next, add your `*.svg` icons into a subfolder of the `.icons` folder. Let's say you downloaded and unpacked the [Bootstrap] icon set, and want to add it to your project documentation. The structure of your project should look like this: -``` sh +``` { .sh .no-copy } . ├─ overrides/ │ └─ .icons/ diff --git a/docs/setup/ensuring-data-privacy.md b/docs/setup/ensuring-data-privacy.md index c295940d61a..b97cbddac90 100644 --- a/docs/setup/ensuring-data-privacy.md +++ b/docs/setup/ensuring-data-privacy.md @@ -360,7 +360,7 @@ removed during the build process. For the official documentation, the [built-in privacy plugin] downloads the following resources: - ``` { .sh id="example" } + ``` { .sh .no-copy #example } . └─ assets/external/ ├─ unpkg.com/tablesort@5.3.0/dist/tablesort.min.js diff --git a/docs/setup/setting-up-a-blog.md b/docs/setup/setting-up-a-blog.md index e4291720c7b..ae4bd89df06 100644 --- a/docs/setup/setting-up-a-blog.md +++ b/docs/setup/setting-up-a-blog.md @@ -45,7 +45,7 @@ By default, the built-in blog plugin assumes that your blog is hosted inside the `blog` subfolder of your documentation ([this is configurable]). Next, you need to create the following structure: -``` sh +``` { .sh .no-copy } . ├─ docs/ │ └─ blog/ @@ -935,7 +935,7 @@ your first post. The plugin doesn't assume any specific directory structure, so you're completely free in how you organize your posts, as long as they are all located inside the `posts` directory: -``` sh +``` { .sh .no-copy } . ├─ docs/ │ └─ blog/ @@ -1213,7 +1213,7 @@ for each post. Luckily, the [built-in meta plugin] allows to set default front matter properties per folder. You can group your posts by categories, or authors, and add a `.meta.yml` file to set common properties: -``` sh +``` { .sh .no-copy } . ├─ docs/ │ └─ blog/ @@ -1278,7 +1278,7 @@ If you want to add custom content to automatically generated [archive] and posts, you can manually create the category page in the same location where the [built-in blog plugin] would create it: -``` sh +``` { .sh .no-copy } . ├─ docs/ │ └─ blog/ diff --git a/docs/setup/setting-up-navigation.md b/docs/setup/setting-up-navigation.md index 0ac14e9e3d4..40dd7589274 100644 --- a/docs/setup/setting-up-navigation.md +++ b/docs/setup/setting-up-navigation.md @@ -37,8 +37,7 @@ especially useful for large documentation sites. ### Anchor tracking [:octicons-tag-24: 8.0.0][Anchor tracking support] · -:octicons-unlock-24: Feature flag · -:octicons-beaker-24: Experimental +:octicons-unlock-24: Feature flag When anchor tracking is enabled, the URL in the address bar is automatically updated with the active anchor as highlighted in the table of contents. Add the diff --git a/docs/setup/setting-up-site-analytics.md b/docs/setup/setting-up-site-analytics.md index 9ec16ca0cff..e27c1f14305 100644 --- a/docs/setup/setting-up-site-analytics.md +++ b/docs/setup/setting-up-site-analytics.md @@ -67,8 +67,7 @@ following lines to `mkdocs.yml`: ### Was this page helpful? [:octicons-tag-24: 8.4.0][Was this page helpful? support] · -:octicons-milestone-24: Default: _none_ · -:octicons-beaker-24: Experimental +:octicons-milestone-24: Default: _none_ A simple [feedback widget] can be included at the bottom of each page, encouraging users to give instant feedback whether a page was helpful or not. diff --git a/docs/setup/setting-up-site-search.md b/docs/setup/setting-up-site-search.md index e829138ff4e..77ec538e2eb 100644 --- a/docs/setup/setting-up-site-search.md +++ b/docs/setup/setting-up-site-search.md @@ -44,7 +44,7 @@ The following configuration options are supported: ``` yaml plugins: - search: - lang: ru + lang: en ``` === "Multiple languages" @@ -54,7 +54,7 @@ The following configuration options are supported: - search: lang: # (1)! - en - - ru + - de ``` 1. Be aware that including support for other languages increases the @@ -101,48 +101,85 @@ The following configuration options are supported: ``` yaml plugins: - search: - separator: '[\s\-\.]' # (1)! + separator: '[\s\-\.]+' ``` - 1. Tokenization itself is carried out by [lunr's default tokenizer], which - doesn't allow for lookahead or multi-character separators. For more - finegrained control over the tokenization process, see the section on - [tokenizer lookahead]. - -
- -[`prebuild_index`](#+search.prebuild_index){ #+search.prebuild_index } - -: [:octicons-tag-24: 5.0.0][prebuilt index support] · :octicons-archive-24: - Deprecated · :octicons-trash-24: 8.0.0 · :octicons-milestone-24: Default: - `false` – MkDocs can generate a [prebuilt index] of all pages during - build time, which provides performance improvements at the cost of more - bandwidth, as it reduces the build time of the search index: + With :octicons-tag-24: 9.0.0, a faster and more flexible tokenizer method + is shipped, allowing for __tokenizing with lookahead__, which yields more + influence on the way documents are indexed. As a result, we use the + following separator setting for this site's search: ``` yaml plugins: - search: - prebuild_index: true + separator: '[\s\-,:!=\[\]()"/]+|(?!\b)(?=[A-Z][a-z])|\.(?!\d)|&[lg]t;' ``` - Note that this configuration option was removed, as the [new search - plugin] generates up to [50% smaller] search indexes, doubling search - performance. + Broken into its parts, the separator induces the following behavior: + + === "Special characters" - [:octicons-arrow-right-24: Read more on the new search plugin] - [new search plugin] + ``` + [\s\-,:!=\[\]()"/]+ + ``` -
+ The first part of the expression inserts token boundaries for each + document before and after whitespace, hyphens, commas, brackets and + other special characters. If several of those special characters are + adjacent, they are treated as one. + + === "Case changes" + + ``` + (?!\b)(?=[A-Z][a-z]) + ``` + + Many programming languages have naming conventions like `PascalCase` or + `camelCase`. By adding this subexpression to the separator, + [words are split at case changes], tokenizing the word `PascalCase` + into `Pascal` and `Case`. + + [:octicons-arrow-right-24: Read more on tokenizing case changes] + [tokenize case changes] + + === "Version strings" + + ``` + \.(?!\d) + ``` + + When adding `.` to the separator, version strings like `1.2.3` are split + into `1`, `2` and `3`, which makes them undiscoverable via search. When + using this subexpression, a small lookahead is introduced which will + [preserve version strings] and keep them discoverable. + + [:octicons-arrow-right-24: Read more on tokenizing version numbers] + [tokenize version numbers] + + === "HTML/XML tags" + + ``` + &[lg]t; + ``` + + If your documentation includes HTML/XML code examples, you may want to allow + users to find specific tag names. Unfortunately, the `<` and `>` control + characters are encoded in code blocks as `<` and `>`. Adding this + subexpression to the separator allows for just that. + + [:octicons-arrow-right-24: Read more on tokenizing HTML/XML tags] + [tokenize html-xml tags] [Search support]: https://github.com/squidfunk/mkdocs-material/releases/tag/0.1.0 [lunr]: https://lunrjs.com [lunr-languages]: https://github.com/MihaiValentin/lunr-languages [lunr's default tokenizer]: https://github.com/olivernn/lunr.js/blob/aa5a878f62a6bba1e8e5b95714899e17e8150b38/lunr.js#L413-L456 [site language]: changing-the-language.md#site-language - [tokenizer lookahead]: #tokenizer-lookahead - [prebuilt index support]: https://github.com/squidfunk/mkdocs-material/releases/tag/5.0.0 - [prebuilt index]: https://www.mkdocs.org/user-guide/configuration/#prebuild_index - [50% smaller]: ../blog/posts/search-better-faster-smaller.md#benchmarks + [words are split at case changes]: ?q=searchHighlight + [preserve version strings]: ?q=9.0.0 + [tokenize case changes]: ../blog/posts/search-better-faster-smaller.md#case-changes + [tokenize version numbers]: ../blog/posts/search-better-faster-smaller.md#version-numbers + [tokenize html-xml tags]: ../blog/posts/search-better-faster-smaller.md#htmlxml-tags #### Chinese language support @@ -195,6 +232,7 @@ configuration options are available: User dictionaries can be used for tuning the segmenter to preserve technical terms. + [Insiders]: ../insiders/index.md [chinese search]: ../blog/posts/chinese-search-support.md [jieba]: https://pypi.org/project/jieba/ [built-in search plugin]: #built-in-search-plugin @@ -203,96 +241,6 @@ configuration options are available: [dict.txt.big]: https://github.com/fxsjy/jieba/raw/master/extra_dict/dict.txt.big [user dictionary]: https://github.com/fxsjy/jieba#%E8%BD%BD%E5%85%A5%E8%AF%8D%E5%85%B8 -### Rich search previews - -[:octicons-heart-fill-24:{ .mdx-heart } Sponsors only][Insiders]{ .mdx-insiders } · -[:octicons-tag-24: insiders-3.0.0][Insiders] · -:octicons-beaker-24: Experimental - -[Insiders] ships rich search previews as part of the [new search plugin], which -will render code blocks directly in the search result, and highlight all -occurrences inside those blocks: - -=== "Insiders" - - ![search preview now] - -=== "Material for MkDocs" - - ![search preview before] - - [Insiders]: ../insiders/index.md - [new search plugin]: ../blog/posts/search-better-faster-smaller.md - [search preview now]: ../blog/posts/search-better-faster-smaller/search-preview-now.png - [search preview before]: ../blog/posts/search-better-faster-smaller/search-preview-before.png - -### Tokenizer lookahead - -[:octicons-heart-fill-24:{ .mdx-heart } Sponsors only][Insiders]{ .mdx-insiders } · -[:octicons-tag-24: insiders-3.0.0][Insiders] · -:octicons-beaker-24: Experimental - -[Insiders] allows for more complex configurations of the [`separator`][separator] -setting as part of the [new search plugin], yielding more influence on the way -documents are tokenized: - -``` yaml -plugins: - - search: - separator: '[\s\-,:!=\[\]()"/]+|\.(?!\d)|&[lg]t;|(?!\b)(?=[A-Z][a-z])' -``` - -The following section explains what can be achieved with tokenizer lookahead: - -=== "Case changes" - - ``` - (?!\b)(?=[A-Z][a-z]) - ``` - - `PascalCase` and `camelCase` are used as naming conventions in many - programming languages. By adding this match group to the [`separator`] - [separator], [words are split at case changes], tokenizing the word - `PascalCase` into `Pascal` and `Case`, so both terms can be searched - individually. - - [:octicons-arrow-right-24: Read more on tokenizing case changes] - [tokenize case changes] - -=== "Version numbers" - - ``` - \.(?!\d) - ``` - - When `.` is added to the [`separator`][separator], version numbers would be - split into parts, rendering them undiscoverable via search. By adding - this match group, a small lookahead is introduced, so version numbers will - remain as they are, and can be found through search. - - [:octicons-arrow-right-24: Read more on tokenizing version numbers] - [tokenize version numbers] - -=== "HTML/XML tags" - - ``` - &[lg]t; - ``` - - If your documentation includes HTML/XML code examples, you may want to allow - users to find specific tag names. Unfortunately, the `<` and `>` control - characters are encoded in code blocks as `<` and `>`. Adding this - expression to the separator allows for just that. - - [:octicons-arrow-right-24: Read more on tokenizing HTML/XML tags] - [tokenize html-xml tags] - - [separator]: #search-separator - [words are split at case changes]: ?q=searchHighlight - [tokenize case changes]: ../blog/posts/search-better-faster-smaller.md#case-changes - [tokenize version numbers]: ../blog/posts/search-better-faster-smaller.md#version-numbers - [tokenize html-xml tags]: ../blog/posts/search-better-faster-smaller.md#htmlxml-tags - ### Search suggestions [:octicons-tag-24: 7.2.0][Search suggestions support] · @@ -340,8 +288,7 @@ highlights all occurrences of both terms. ### Search sharing [:octicons-tag-24: 7.2.0][Search sharing support] · -:octicons-unlock-24: Feature flag · -:octicons-beaker-24: Experimental +:octicons-unlock-24: Feature flag When search sharing is activated, a :material-share-variant: share button is rendered next to the reset button, which allows to deep link to the current @@ -362,32 +309,44 @@ clipboard. ### Search boosting -[:octicons-tag-24: 8.3.0][boost support] · -:octicons-beaker-24: Experimental +[:octicons-tag-24: 8.3.0][boost support] Pages can be boosted in search with the front matter `search.boost` property, which will make them rank higher. Add the following lines at the top of a Markdown file: -``` yaml ---- -search: - boost: 2 # (1)! ---- +=== ":material-arrow-up-circle: Rank up" -# Document title -... -``` + ``` yaml + --- + search: + boost: 2 # (1)! + --- + + # Document title + ... + ``` + + 1. :woman_in_lotus_position: When boosting pages, be gentle and start with + __low values__. + +=== ":material-arrow-down-circle: Rank down" -1. :woman_in_lotus_position: When boosting pages, be gentle and start with - __low values__. + ``` yaml + --- + search: + boost: 0.5 + --- + + # Document title + ... + ``` [boost support]: https://github.com/squidfunk/mkdocs-material/releases/tag/8.3.0 ### Search exclusion -[:octicons-heart-fill-24:{ .mdx-heart } Sponsors only][Insiders]{ .mdx-insiders } · -[:octicons-tag-24: insiders-3.1.0][Insiders] · +[:octicons-tag-24: 9.0.0][exclusion support] · :octicons-beaker-24: Experimental Pages can be excluded from search with the front matter `search.exclude` @@ -404,10 +363,12 @@ search: ... ``` + [exclusion support]: https://github.com/squidfunk/mkdocs-material/releases/tag/9.0.0 + #### Excluding sections When [Attribute Lists] is enabled, specific sections of pages can be excluded -from search by adding the `{ data-search-exclude }` pragma after a Markdown +from search by adding the `data-search-exclude` pragma after a Markdown heading: === ":octicons-file-code-16: `docs/page.md`" @@ -449,7 +410,7 @@ heading: #### Excluding blocks When [Attribute Lists] is enabled, specific sections of pages can be excluded -from search by adding the `{ data-search-exclude }` pragma after a Markdown +from search by adding the `data-search-exclude` pragma after a Markdown inline- or block-level element: === ":octicons-file-code-16: `docs/page.md`" @@ -477,112 +438,3 @@ inline- or block-level element: ] } ``` - -## Customization - -The search implementation of Material for MkDocs is probably its most -sophisticated feature, as it tries to balance a great typeahead experience, -good performance, accessibility, and a result list that is easy to scan. -This is where Material for MkDocs deviates from other themes. - -The following section explains how search can be customized to tailor it to -your needs. - -### Query transformation - -When a user enters a query into the search box, the query is pre-processed -before it is submitted to the search index. Material for MkDocs will apply the -following transformations, which can be customized by [extending the theme]: - -``` ts -export function defaultTransform(query: string): string { - return query - .split(/"([^"]+)"/g) /* (1)! */ - .map((terms, index) => index & 1 - ? terms.replace(/^\b|^(?![^\x00-\x7F]|$)|\s+/g, " +") - : terms - ) - .join("") - .replace(/"|(?:^|\s+)[*+\-:^~]+(?=\s+|$)/g, "") /* (2)! */ - .trim() /* (3)! */ -} -``` - -1. Search for terms in quotation marks and prepend a `+` modifier to denote - that the resulting document must contain all terms, converting the query - to an `AND` query (as opposed to the default `OR` behavior). While users - may expect terms enclosed in quotation marks to map to span queries, i.e. - for which order is important, `lunr` doesn't support them, so the best - we can do is to convert the terms to an `AND` query. - -2. Replace control characters which are not located at the beginning of the - query or preceded by white space, or are not followed by a non-whitespace - character or are at the end of the query string. Furthermore, filter - unmatched quotation marks. - -3. Trim excess whitespace from left and right. - -If you want to switch to the default behavior of the `mkdocs` and `readthedocs` -themes, both of which don't transform the query prior to submission, or -customize the `transform` function, you can do this by [overriding the -`config` block][overriding blocks]: - -``` html -{% extends "base.html" %} - -{% block config %} - {{ super() }} - -{% endblock %} -``` - -The `transform` function will receive the query string as entered by the user -and must return the processed query string to be submitted to the search index. - - [extending the theme]: ../customization.md#extending-the-theme - [overriding blocks]: ../customization.md#overriding-blocks - -### Custom search - -Material for MkDocs implements search as part of a [web worker]. If you -want to switch the web worker with your own implementation, e.g. to submit -search to an external service, you can add a custom JavaScript file to the -`docs` directory and [override the `config` block][overriding blocks]: - -``` html -{% extends "base.html" %} - -{% block config %} - {{ super() }} - -{% endblock %} -``` - -Communication with the search worker is implemented using a designated message -format using discriminated unions, i.e. through the `type` property of the -message. See the following interface definitions to learn about the message -formats: - -- [:octicons-file-code-24: `SearchMessage`][SearchMessage] -- [:octicons-file-code-24: `SearchIndex` and `SearchResult`][SearchIndex] - -The sequence and direction of messages is rather intuitive: - -- :octicons-arrow-right-24: `SearchSetupMessage` -- :octicons-arrow-left-24: `SearchReadyMessage` -- :octicons-arrow-right-24: `SearchQueryMessage` -- :octicons-arrow-left-24: `SearchResultMessage` - - [web worker]: https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers - [SearchMessage]: https://github.com/squidfunk/mkdocs-material/blob/master/src/assets/javascripts/integrations/search/worker/message/index.ts - [SearchIndex]: https://github.com/squidfunk/mkdocs-material/blob/master/src/assets/javascripts/integrations/search/_/index.ts diff --git a/docs/setup/setting-up-tags.md b/docs/setup/setting-up-tags.md index 8b84cecc60d..30ed0c935d2 100644 --- a/docs/setup/setting-up-tags.md +++ b/docs/setup/setting-up-tags.md @@ -12,8 +12,7 @@ can help to discover relevant information faster. ### Built-in tags plugin [:octicons-tag-24: 8.2.0][Tags support] · -:octicons-cpu-24: Plugin · -:octicons-beaker-24: Experimental +:octicons-cpu-24: Plugin The built-in tags plugin adds the ability to categorize any page with tags as part of the front matter of the page. In order to add support for tags, add diff --git a/docs/upgrade.md b/docs/upgrade.md index fe9ad9ab1b2..95a3f80e231 100644 --- a/docs/upgrade.md +++ b/docs/upgrade.md @@ -3,7 +3,7 @@ Upgrade to the latest version with: ``` -pip install --upgrade mkdocs-material +pip install --upgrade --force-reinstall mkdocs-material ``` Show the currently installed version with: @@ -12,6 +12,75 @@ Show the currently installed version with: pip show mkdocs-material ``` +## Upgrading from 8.x to 9.x + +This major release includes a brand new search implementation that is faster +and allows for rich previews, advanced tokenization and better highlighting. +It was available as part of Insiders for over a year, and now that the funding +goal was hit, makes its way into the community edition. + +### Changes to `mkdocs.yml` + +#### `content.code.copy` + +The copy-to-clipboard buttons are now opt-in and can be enabled or disabled +per block. If you wish to enable them for all code blocks, add the following +lines to `mkdocs.yml`: + +``` yaml +theme: + features: + - content.code.copy +``` + +#### `content.action.*` + +A "view source" button can be shown next to the "edit this page" button, both +of which must now be explicitly enabled. Add the following lines to +`mkdocs.yml`: + +``` yaml +theme: + features: + - content.action.edit + - content.action.view +``` + +#### `navigation.footer` + +The _previous_ and _next_ buttons in the footer are now opt-in. If you wish to +keep them for your documentation, add the following lines to `mkdocs.yml`: + +``` yaml +theme: + features: + - navigation.footer +``` + +#### `theme.language` + +The Korean and Norwegian language codes were renamed, as they were non-standard: + +- `kr` to `ko` +- `no` to `nb` + +#### `feedback.ratings` + +The old, nameless placeholders were removed (after being deprecated for several +months). Make sure to switch to the new named placeholders `{title}` and `{url}`: + +``` +https://github.com/.../issues/new/?title=[Feedback]+{title}+-+{url} +``` + +### Changes to `*.html` files + +The templates have undergone a series of changes. If you have customized +Material for MkDocs with theme extension, be sure to incorporate the latest +changes into your templates. A good starting point is to [inspect the diff]. + + [inspect the diff]: https://github.com/squidfunk/mkdocs-material/pull/4628/files#diff-3ca112736b9164701b599f34780107abf14bb79fe110c478cac410be90899828 + ## Upgrading from 7.x to 8.x ### What's new? diff --git a/material/.overrides/assets/javascripts/custom.ed9684d4.min.js b/material/.overrides/assets/javascripts/custom.699ea29a.min.js similarity index 86% rename from material/.overrides/assets/javascripts/custom.ed9684d4.min.js rename to material/.overrides/assets/javascripts/custom.699ea29a.min.js index 5f5d8a2cf43..ca8adc0471b 100644 --- a/material/.overrides/assets/javascripts/custom.ed9684d4.min.js +++ b/material/.overrides/assets/javascripts/custom.699ea29a.min.js @@ -1,4 +1,4 @@ -"use strict";(()=>{var An=Object.create;var Cr=Object.defineProperty;var Mn=Object.getOwnPropertyDescriptor;var In=Object.getOwnPropertyNames,Zr=Object.getOwnPropertySymbols,Cn=Object.getPrototypeOf,rt=Object.prototype.hasOwnProperty,Ln=Object.prototype.propertyIsEnumerable;var et=(e,r,t)=>r in e?Cr(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,Ke=(e,r)=>{for(var t in r||(r={}))rt.call(r,t)&&et(e,t,r[t]);if(Zr)for(var t of Zr(r))Ln.call(r,t)&&et(e,t,r[t]);return e};var Oe=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var Rn=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of In(r))!rt.call(e,o)&&o!==t&&Cr(e,o,{get:()=>r[o],enumerable:!(n=Mn(r,o))||n.enumerable});return e};var tt=(e,r,t)=>(t=e!=null?An(Cn(e)):{},Rn(r||!e||!e.__esModule?Cr(t,"default",{value:e,enumerable:!0}):t,e));var Ne=Oe(J=>{(function(){var e,r,t,n,o,i,a,c,u,s,f,p,l,v,h,m,b,w,S,R;R=150,s=20,S=150,u=.75,J.score=function(d,x,E){var O,y,g,T;return y=E.preparedQuery,O=E.allowErrors,O||o(d,y.core_lw,y.core_up)?(T=d.toLowerCase(),g=r(d,T,y),Math.ceil(g)):0},J.isMatch=o=function(d,x,E){var O,y,g,T,F,z,C;if(g=d.length,T=x.length,!g||T>g)return!1;for(O=-1,y=-1;++y-1)return h(d,x,me,oe,se,$,q);for(_e=new Array($),F=new Array($),Ir=w($,q),V=Math.ceil(u*$)+5,ne=V,C=!0,I=-1;++I<$;)_e[I]=0,F[I]=0;for(H=-1;++Hue&&(ue=Qe),z=0,oe[I]===Ar)if(Mr=c(H,d,x),z=T>0?T:l(d,x,me,oe,H,I,Mr),g=Tr+p(H,I,Mr,y,z),g>ue)ue=g,ne=V;else{if(de&&--ne<=0)return Math.max(ue,_e[$-1])*Ir;de=!1}Tr=Qe,T=F[I],F[I]=z,_e[I]=ue}}return ue=_e[$-1],ue*Ir},J.isWordStart=c=function(d,x,E){var O,y;return d===0?!0:(O=x[d],y=x[d-1],i(y)||O!==E[d]&&y===E[d-1])},J.isWordEnd=a=function(d,x,E,O){var y,g;return d===O-1?!0:(y=x[d],g=x[d+1],i(g)||y===E[d]&&g!==E[d+1])},i=function(d){return d===" "||d==="."||d==="-"||d==="_"||d==="/"||d==="\\"},b=function(d){var x;return dy?O:y)+10):g+R*y},J.scoreConsecutives=l=function(d,x,E,O,y,g,T){var F,z,C,H,I,q,V;for(z=d.length,H=E.length,C=z-y,I=H-g,F=C-1&&(I=c(C,d,x),I&&(y=C))),z=-1,H=0;++z1&&C>1))return t;for(y=0,V=0,ne=0,I=0,T=-1,F=-1;++F-1){V++;continue}else break;for(;++T12*F)return!1;for(g=-1;++gO)return!1;return!0}}).call(J)});var _r=Oe(De=>{(function(){var e,r,t,n,o,i,a,c,u,s;s=Ne(),i=s.isMatch,e=s.computeScore,c=s.scoreSize,u=20,t=2.5,De.score=function(f,p,l){var v,h,m,b;return h=l.preparedQuery,v=l.allowErrors,v||i(f,h.core_lw,h.core_up)?(b=f.toLowerCase(),m=e(f,b,h),m=a(f,b,m,l),Math.ceil(m)):0},a=function(f,p,l,v){var h,m,b,w,S,R,d,x,E,O;if(l===0)return 0;for(E=v.preparedQuery,O=v.useExtensionBonus,x=v.pathSeparator,S=f.length-1;f[S]===x;)S--;if(b=f.lastIndexOf(x,S),d=S-b,R=1,O&&(R+=o(p,E.ext,b,S,2),l*=R),b===-1)return l;for(w=E.depth;b>-1&&w-- >0;)b=f.lastIndexOf(x,b-1);return m=b===-1?l:R*e(f.slice(b+1,S+1),p.slice(b+1,S+1),E),h=.5*u/(u+r(f,S+1,x)),h*m+(1-h)*l*c(0,t*d)},De.countDir=r=function(f,p,l){var v,h;if(p<1)return 0;for(v=0,h=-1;++hl)))return 0;for(w=p.length,m=v-S,m0?.9*o(f,p,l,S-2,h-1):b/m}}).call(De)});var Jr=Oe((cn,pn)=>{(function(){var e,r,t,n,o,i,a,c;c=_r(),t=c.countDir,o=c.getExtension,pn.exports=e=function(){function u(s,f){var p,l,v;if(v=f!=null?f:{},p=v.optCharRegEx,l=v.pathSeparator,!(s&&s.length))return null;this.query=s,this.query_lw=s.toLowerCase(),this.core=r(s,p),this.core_lw=this.core.toLowerCase(),this.core_up=a(this.core),this.depth=t(s,s.length,l),this.ext=o(this.query_lw),this.charCodes=n(this.query_lw)}return u}(),i=/[ _\-:\/\\]/g,r=function(u,s){return s==null&&(s=i),u.replace(s,"")},a=function(u){var s,f,p,l;for(f="",p=0,l=u.length;p{(function(){var e,r,t,n,o;n=Ne(),r=_r(),e=Jr(),t=function(i){return i.candidate},o=function(i,a){return a.score-i.score},mn.exports=function(i,a,c){var u,s,f,p,l,v,h,m,b,w,S,R,d;for(m=[],f=c.key,l=c.maxResults,p=c.maxInners,S=c.usePathScoring,b=p!=null&&p>0?p:i.length+1,u=f!=null,h=S?r:n,R=0,d=i.length;R0&&(m.push({candidate:s,score:v}),!--b))));R++);return m.sort(o),i=m.map(t),l!=null&&(i=i.slice(0,l)),i}}).call(ln)});var dn=Oe(Or=>{(function(){var e,r,t,n,o,i,a,c,u,s;s=Ne(),t=s.isMatch,n=s.isWordStart,u=s.scoreConsecutives,c=s.scoreCharacter,a=s.scoreAcronyms,Or.match=o=function(f,p,l){var v,h,m,b,w,S;return v=l.allowErrors,w=l.preparedQuery,b=l.pathSeparator,v||t(f,w.core_lw,w.core_up)?(S=f.toLowerCase(),m=r(f,S,w),m.length===0||f.indexOf(b)>-1&&(h=e(f,S,w,b),m=i(m,h)),m):[]},Or.wrap=function(f,p,l){var v,h,m,b,w,S,R,d,x;if(l.wrap!=null&&(x=l.wrap,S=x.tagClass,d=x.tagOpen,R=x.tagClose),S==null&&(S="highlight"),d==null&&(d=''),R==null&&(R=""),f===p)return d+f+R;if(m=o(f,p,l),m.length===0)return f;for(b="",v=-1,w=0;++vw&&(b+=f.substring(w,h),w=h);++vw&&(b+=d,b+=f.substring(w,h),b+=R,w=h)}return w<=f.length-1&&(b+=f.substring(w)),b},e=function(f,p,l,v){var h,m,b;for(b=f.length-1;f[b]===v;)b--;if(h=f.lastIndexOf(v,b),h===-1)return[];for(m=l.depth;m-- >0;)if(h=f.lastIndexOf(v,h-1),h===-1)return[];return h++,b++,r(f.slice(h,b),p.slice(h,b),l,h)},i=function(f,p){var l,v,h,m,b,w,S;if(b=f.length,w=p.length,w===0)return f.slice();if(b===0)return p.slice();for(h=-1,m=0,v=p[m],S=[];++h0?x:u(f,p,I,q,y,g,oe),R=ne+c(y,g,oe,S,O)),se=$[g],x=E[g],V>se?z=m:(V=se,z=w),R>V?(V=R,z=h):O=0,$[g]=V,E[g]=O,de[++H]=V>0?z:b;for(y=T-1,g=C-1,H=y*C+g,d=!0,F=[];d&&y>=0&&g>=0;)switch(de[H]){case w:y--,H-=C;break;case m:g--,H--;break;case h:F.push(y+v),g--,y--,H-=C+1;break;default:d=!1}return F.reverse(),F}}).call(Or)});var Br=Oe((vn,bn)=>{(function(){var e,r,t,n,o,i,a,c;t=hn(),n=dn(),c=Ne(),i=_r(),e=Jr(),a=null,r=(typeof process!="undefined"&&process!==null?process.platform:void 0)==="win32"?"\\":"/",bn.exports={filter:function(u,s,f){return f==null&&(f={}),s!=null&&s.length&&(u!=null&&u.length)?(f=o(f,s),t(u,s,f)):[]},score:function(u,s,f){return f==null&&(f={}),u!=null&&u.length&&(s!=null&&s.length)?(f=o(f,s),f.usePathScoring?i.score(u,s,f):c.score(u,s,f)):0},match:function(u,s,f){var p,l,v;return f==null&&(f={}),u?s?u===s?function(){v=[];for(var h=0,m=u.length;0<=m?hm;0<=m?h++:h--)v.push(h);return v}.apply(this):(f=o(f,s),n.match(u,s,f)):[]:[]},wrap:function(u,s,f){return f==null&&(f={}),u?s?(f=o(f,s),n.wrap(u,s,f)):[]:[]},prepareQuery:function(u,s){return s==null&&(s={}),s=o(s,u),s.preparedQuery}},o=function(u,s){return u.allowErrors==null&&(u.allowErrors=!1),u.usePathScoring==null&&(u.usePathScoring=!0),u.useExtensionBonus==null&&(u.useExtensionBonus=!1),u.pathSeparator==null&&(u.pathSeparator=r),u.optCharRegEx==null&&(u.optCharRegEx=null),u.wrap==null&&(u.wrap=null),u.preparedQuery==null&&(u.preparedQuery=a&&a.query===s?a:a=new e(s,u)),u}}).call(vn)});/*! ***************************************************************************** +"use strict";(()=>{var An=Object.create;var Cr=Object.defineProperty;var Mn=Object.getOwnPropertyDescriptor;var In=Object.getOwnPropertyNames,Zr=Object.getOwnPropertySymbols,Cn=Object.getPrototypeOf,rt=Object.prototype.hasOwnProperty,Ln=Object.prototype.propertyIsEnumerable;var et=(e,r,t)=>r in e?Cr(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,Ke=(e,r)=>{for(var t in r||(r={}))rt.call(r,t)&&et(e,t,r[t]);if(Zr)for(var t of Zr(r))Ln.call(r,t)&&et(e,t,r[t]);return e};var Oe=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var Rn=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of In(r))!rt.call(e,o)&&o!==t&&Cr(e,o,{get:()=>r[o],enumerable:!(n=Mn(r,o))||n.enumerable});return e};var tt=(e,r,t)=>(t=e!=null?An(Cn(e)):{},Rn(r||!e||!e.__esModule?Cr(t,"default",{value:e,enumerable:!0}):t,e));var Ne=Oe(J=>{(function(){var e,r,t,n,o,i,a,c,u,s,f,p,l,v,h,m,b,w,S,R;R=150,s=20,S=150,u=.75,J.score=function(d,x,E){var O,y,g,T;return y=E.preparedQuery,O=E.allowErrors,O||o(d,y.core_lw,y.core_up)?(T=d.toLowerCase(),g=r(d,T,y),Math.ceil(g)):0},J.isMatch=o=function(d,x,E){var O,y,g,T,F,z,C;if(g=d.length,T=x.length,!g||T>g)return!1;for(O=-1,y=-1;++y-1)return h(d,x,me,oe,se,q,$);for(_e=new Array(q),F=new Array(q),Ir=w(q,$),V=Math.ceil(u*q)+5,ne=V,C=!0,I=-1;++Iue&&(ue=Qe),z=0,oe[I]===Ar)if(Mr=c(H,d,x),z=T>0?T:l(d,x,me,oe,H,I,Mr),g=Tr+p(H,I,Mr,y,z),g>ue)ue=g,ne=V;else{if(de&&--ne<=0)return Math.max(ue,_e[q-1])*Ir;de=!1}Tr=Qe,T=F[I],F[I]=z,_e[I]=ue}}return ue=_e[q-1],ue*Ir},J.isWordStart=c=function(d,x,E){var O,y;return d===0?!0:(O=x[d],y=x[d-1],i(y)||O!==E[d]&&y===E[d-1])},J.isWordEnd=a=function(d,x,E,O){var y,g;return d===O-1?!0:(y=x[d],g=x[d+1],i(g)||y===E[d]&&g!==E[d+1])},i=function(d){return d===" "||d==="."||d==="-"||d==="_"||d==="/"||d==="\\"},b=function(d){var x;return dy?O:y)+10):g+R*y},J.scoreConsecutives=l=function(d,x,E,O,y,g,T){var F,z,C,H,I,$,V;for(z=d.length,H=E.length,C=z-y,I=H-g,F=C-1&&(I=c(C,d,x),I&&(y=C))),z=-1,H=0;++z1&&C>1))return t;for(y=0,V=0,ne=0,I=0,T=-1,F=-1;++F-1){V++;continue}else break;for(;++T12*F)return!1;for(g=-1;++gO)return!1;return!0}}).call(J)});var _r=Oe(De=>{(function(){var e,r,t,n,o,i,a,c,u,s;s=Ne(),i=s.isMatch,e=s.computeScore,c=s.scoreSize,u=20,t=2.5,De.score=function(f,p,l){var v,h,m,b;return h=l.preparedQuery,v=l.allowErrors,v||i(f,h.core_lw,h.core_up)?(b=f.toLowerCase(),m=e(f,b,h),m=a(f,b,m,l),Math.ceil(m)):0},a=function(f,p,l,v){var h,m,b,w,S,R,d,x,E,O;if(l===0)return 0;for(E=v.preparedQuery,O=v.useExtensionBonus,x=v.pathSeparator,S=f.length-1;f[S]===x;)S--;if(b=f.lastIndexOf(x,S),d=S-b,R=1,O&&(R+=o(p,E.ext,b,S,2),l*=R),b===-1)return l;for(w=E.depth;b>-1&&w-- >0;)b=f.lastIndexOf(x,b-1);return m=b===-1?l:R*e(f.slice(b+1,S+1),p.slice(b+1,S+1),E),h=.5*u/(u+r(f,S+1,x)),h*m+(1-h)*l*c(0,t*d)},De.countDir=r=function(f,p,l){var v,h;if(p<1)return 0;for(v=0,h=-1;++hl)))return 0;for(w=p.length,m=v-S,m0?.9*o(f,p,l,S-2,h-1):b/m}}).call(De)});var Jr=Oe((cn,pn)=>{(function(){var e,r,t,n,o,i,a,c;c=_r(),t=c.countDir,o=c.getExtension,pn.exports=e=function(){function u(s,f){var p,l,v;if(v=f!=null?f:{},p=v.optCharRegEx,l=v.pathSeparator,!(s&&s.length))return null;this.query=s,this.query_lw=s.toLowerCase(),this.core=r(s,p),this.core_lw=this.core.toLowerCase(),this.core_up=a(this.core),this.depth=t(s,s.length,l),this.ext=o(this.query_lw),this.charCodes=n(this.query_lw)}return u}(),i=/[ _\-:\/\\]/g,r=function(u,s){return s==null&&(s=i),u.replace(s,"")},a=function(u){var s,f,p,l;for(f="",p=0,l=u.length;p{(function(){var e,r,t,n,o;n=Ne(),r=_r(),e=Jr(),t=function(i){return i.candidate},o=function(i,a){return a.score-i.score},mn.exports=function(i,a,c){var u,s,f,p,l,v,h,m,b,w,S,R,d;for(m=[],f=c.key,l=c.maxResults,p=c.maxInners,S=c.usePathScoring,b=p!=null&&p>0?p:i.length+1,u=f!=null,h=S?r:n,R=0,d=i.length;R0&&(m.push({candidate:s,score:v}),!--b))));R++);return m.sort(o),i=m.map(t),l!=null&&(i=i.slice(0,l)),i}}).call(ln)});var dn=Oe(Or=>{(function(){var e,r,t,n,o,i,a,c,u,s;s=Ne(),t=s.isMatch,n=s.isWordStart,u=s.scoreConsecutives,c=s.scoreCharacter,a=s.scoreAcronyms,Or.match=o=function(f,p,l){var v,h,m,b,w,S;return v=l.allowErrors,w=l.preparedQuery,b=l.pathSeparator,v||t(f,w.core_lw,w.core_up)?(S=f.toLowerCase(),m=r(f,S,w),m.length===0||f.indexOf(b)>-1&&(h=e(f,S,w,b),m=i(m,h)),m):[]},Or.wrap=function(f,p,l){var v,h,m,b,w,S,R,d,x;if(l.wrap!=null&&(x=l.wrap,S=x.tagClass,d=x.tagOpen,R=x.tagClose),S==null&&(S="highlight"),d==null&&(d=''),R==null&&(R=""),f===p)return d+f+R;if(m=o(f,p,l),m.length===0)return f;for(b="",v=-1,w=0;++vw&&(b+=f.substring(w,h),w=h);++vw&&(b+=d,b+=f.substring(w,h),b+=R,w=h)}return w<=f.length-1&&(b+=f.substring(w)),b},e=function(f,p,l,v){var h,m,b;for(b=f.length-1;f[b]===v;)b--;if(h=f.lastIndexOf(v,b),h===-1)return[];for(m=l.depth;m-- >0;)if(h=f.lastIndexOf(v,h-1),h===-1)return[];return h++,b++,r(f.slice(h,b),p.slice(h,b),l,h)},i=function(f,p){var l,v,h,m,b,w,S;if(b=f.length,w=p.length,w===0)return f.slice();if(b===0)return p.slice();for(h=-1,m=0,v=p[m],S=[];++h0?x:u(f,p,I,$,y,g,oe),R=ne+c(y,g,oe,S,O)),se=q[g],x=E[g],V>se?z=m:(V=se,z=w),R>V?(V=R,z=h):O=0,q[g]=V,E[g]=O,de[++H]=V>0?z:b;for(y=T-1,g=C-1,H=y*C+g,d=!0,F=[];d&&y>=0&&g>=0;)switch(de[H]){case w:y--,H-=C;break;case m:g--,H--;break;case h:F.push(y+v),g--,y--,H-=C+1;break;default:d=!1}return F.reverse(),F}}).call(Or)});var Br=Oe((vn,bn)=>{(function(){var e,r,t,n,o,i,a,c;t=hn(),n=dn(),c=Ne(),i=_r(),e=Jr(),a=null,r=(typeof process!="undefined"&&process!==null?process.platform:void 0)==="win32"?"\\":"/",bn.exports={filter:function(u,s,f){return f==null&&(f={}),s!=null&&s.length&&(u!=null&&u.length)?(f=o(f,s),t(u,s,f)):[]},score:function(u,s,f){return f==null&&(f={}),u!=null&&u.length&&(s!=null&&s.length)?(f=o(f,s),f.usePathScoring?i.score(u,s,f):c.score(u,s,f)):0},match:function(u,s,f){var p,l,v;return f==null&&(f={}),u?s?u===s?function(){v=[];for(var h=0,m=u.length;0<=m?hm;0<=m?h++:h--)v.push(h);return v}.apply(this):(f=o(f,s),n.match(u,s,f)):[]:[]},wrap:function(u,s,f){return f==null&&(f={}),u?s?(f=o(f,s),n.wrap(u,s,f)):[]:[]},prepareQuery:function(u,s){return s==null&&(s={}),s=o(s,u),s.preparedQuery}},o=function(u,s){return u.allowErrors==null&&(u.allowErrors=!1),u.usePathScoring==null&&(u.usePathScoring=!0),u.useExtensionBonus==null&&(u.useExtensionBonus=!1),u.pathSeparator==null&&(u.pathSeparator=r),u.optCharRegEx==null&&(u.optCharRegEx=null),u.wrap==null&&(u.wrap=null),u.preparedQuery==null&&(u.preparedQuery=a&&a.query===s?a:a=new e(s,u)),u}}).call(vn)});/*! ***************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any @@ -13,6 +13,6 @@ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */var Lr=function(e,r){return Lr=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o])},Lr(e,r)};function j(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");Lr(e,r);function t(){this.constructor=e}e.prototype=r===null?Object.create(r):(t.prototype=r.prototype,new t)}function nt(e,r,t,n){function o(i){return i instanceof t?i:new t(function(a){a(i)})}return new(t||(t=Promise))(function(i,a){function c(f){try{s(n.next(f))}catch(p){a(p)}}function u(f){try{s(n.throw(f))}catch(p){a(p)}}function s(f){f.done?i(f.value):o(f.value).then(c,u)}s((n=n.apply(e,r||[])).next())})}function Ge(e,r){var t={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},n,o,i,a;return a={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;t;)try{if(n=1,o&&(i=s[0]&2?o.return:s[0]?o.throw||((i=o.return)&&i.call(o),0):o.next)&&!(i=i.call(o,s[1])).done)return i;switch(o=0,i&&(s=[s[0]&2,i.value]),s[0]){case 0:case 1:i=s;break;case 4:return t.label++,{value:s[1],done:!1};case 5:t.label++,o=s[1],s=[0];continue;case 7:s=t.ops.pop(),t.trys.pop();continue;default:if(i=t.trys,!(i=i.length>0&&i[i.length-1])&&(s[0]===6||s[0]===2)){t=0;continue}if(s[0]===3&&(!i||s[1]>i[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(r?"Object is not iterable.":"Symbol.iterator is not defined.")}function W(e,r){var t=typeof Symbol=="function"&&e[Symbol.iterator];if(!t)return e;var n=t.call(e),o,i=[],a;try{for(;(r===void 0||r-- >0)&&!(o=n.next()).done;)i.push(o.value)}catch(c){a={error:c}}finally{try{o&&!o.done&&(t=n.return)&&t.call(n)}finally{if(a)throw a.error}}return i}function U(e,r,t){if(t||arguments.length===2)for(var n=0,o=r.length,i;n1||c(l,v)})})}function c(l,v){try{u(n[l](v))}catch(h){p(i[0][3],h)}}function u(l){l.value instanceof ve?Promise.resolve(l.value.v).then(s,f):p(i[0][2],l)}function s(l){c("next",l)}function f(l){c("throw",l)}function p(l,v){l(v),i.shift(),i.length&&c(i[0][0],i[0][1])}}function it(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r=e[Symbol.asyncIterator],t;return r?r.call(e):(e=typeof G=="function"?G(e):e[Symbol.iterator](),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(i){t[i]=e[i]&&function(a){return new Promise(function(c,u){a=e[i](a),o(c,u,a.done,a.value)})}}function o(i,a,c,u){Promise.resolve(u).then(function(s){i({value:s,done:c})},a)}}function _(e){return typeof e=="function"}function Ye(e){var r=function(n){Error.call(n),n.stack=new Error().stack},t=e(r);return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}var Je=Ye(function(e){return function(t){e(this),this.message=t?t.length+` errors occurred during unsubscription: `+t.map(function(n,o){return o+1+") "+n.toString()}).join(` - `):"",this.name="UnsubscriptionError",this.errors=t}});function fe(e,r){if(e){var t=e.indexOf(r);0<=t&&e.splice(t,1)}}var ie=function(){function e(r){this.initialTeardown=r,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var r,t,n,o,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a)if(this._parentage=null,Array.isArray(a))try{for(var c=G(a),u=c.next();!u.done;u=c.next()){var s=u.value;s.remove(this)}}catch(m){r={error:m}}finally{try{u&&!u.done&&(t=c.return)&&t.call(c)}finally{if(r)throw r.error}}else a.remove(this);var f=this.initialTeardown;if(_(f))try{f()}catch(m){i=m instanceof Je?m.errors:[m]}var p=this._finalizers;if(p){this._finalizers=null;try{for(var l=G(p),v=l.next();!v.done;v=l.next()){var h=v.value;try{at(h)}catch(m){i=i!=null?i:[],m instanceof Je?i=U(U([],W(i)),W(m.errors)):i.push(m)}}}catch(m){n={error:m}}finally{try{v&&!v.done&&(o=l.return)&&o.call(l)}finally{if(n)throw n.error}}}if(i)throw new Je(i)}},e.prototype.add=function(r){var t;if(r&&r!==this)if(this.closed)at(r);else{if(r instanceof e){if(r.closed||r._hasParent(this))return;r._addParent(this)}(this._finalizers=(t=this._finalizers)!==null&&t!==void 0?t:[]).push(r)}},e.prototype._hasParent=function(r){var t=this._parentage;return t===r||Array.isArray(t)&&t.includes(r)},e.prototype._addParent=function(r){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(r),t):t?[t,r]:r},e.prototype._removeParent=function(r){var t=this._parentage;t===r?this._parentage=null:Array.isArray(t)&&fe(t,r)},e.prototype.remove=function(r){var t=this._finalizers;t&&fe(t,r),r instanceof e&&r._removeParent(this)},e.EMPTY=function(){var r=new e;return r.closed=!0,r}(),e}();var Rr=ie.EMPTY;function Be(e){return e instanceof ie||e&&"closed"in e&&_(e.remove)&&_(e.add)&&_(e.unsubscribe)}function at(e){_(e)?e():e.unsubscribe()}var te={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var Te={setTimeout:function(e,r){for(var t=[],n=2;n0},enumerable:!1,configurable:!0}),r.prototype._trySubscribe=function(t){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,t)},r.prototype._subscribe=function(t){return this._throwIfClosed(),this._checkFinalizedStatuses(t),this._innerSubscribe(t)},r.prototype._innerSubscribe=function(t){var n=this,o=this,i=o.hasError,a=o.isStopped,c=o.observers;return i||a?Rr:(this.currentObservers=null,c.push(t),new ie(function(){n.currentObservers=null,fe(c,t)}))},r.prototype._checkFinalizedStatuses=function(t){var n=this,o=n.hasError,i=n.thrownError,a=n.isStopped;o?t.error(i):a&&t.complete()},r.prototype.asObservable=function(){var t=new L;return t.source=this,t},r.create=function(t,n){return new ht(t,n)},r}(L);var ht=function(e){j(r,e);function r(t,n){var o=e.call(this)||this;return o.destination=t,o.source=n,o}return r.prototype.next=function(t){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,t)},r.prototype.error=function(t){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,t)},r.prototype.complete=function(){var t,n;(n=(t=this.destination)===null||t===void 0?void 0:t.complete)===null||n===void 0||n.call(t)},r.prototype._subscribe=function(t){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(t))!==null&&o!==void 0?o:Rr},r}(B);var ze={now:function(){return(ze.delegate||Date).now()},delegate:void 0};var dt=function(e){j(r,e);function r(t,n,o){t===void 0&&(t=1/0),n===void 0&&(n=1/0),o===void 0&&(o=ze);var i=e.call(this)||this;return i._bufferSize=t,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,t),i._windowTime=Math.max(1,n),i}return r.prototype.next=function(t){var n=this,o=n.isStopped,i=n._buffer,a=n._infiniteTimeWindow,c=n._timestampProvider,u=n._windowTime;o||(i.push(t),!a&&i.push(c.now()+u)),this._trimBuffer(),e.prototype.next.call(this,t)},r.prototype._subscribe=function(t){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(t),o=this,i=o._infiniteTimeWindow,a=o._buffer,c=a.slice(),u=0;u0?e.prototype.requestAsyncId.call(this,t,n,o):(t.actions.push(this),t._scheduled||(t._scheduled=Ie.requestAnimationFrame(function(){return t.flush(void 0)})))},r.prototype.recycleAsyncId=function(t,n,o){var i;if(o===void 0&&(o=0),o!=null?o>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,t,n,o);var a=t.actions;n!=null&&((i=a[a.length-1])===null||i===void 0?void 0:i.id)!==n&&(Ie.cancelAnimationFrame(n),t._scheduled=void 0)},r}(er);var yt=function(e){j(r,e);function r(){return e!==null&&e.apply(this,arguments)||this}return r.prototype.flush=function(t){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;t=t||o.shift();do if(i=t.execute(t.state,t.delay))break;while((t=o[0])&&t.id===n&&o.shift());if(this._active=!1,i){for(;(t=o[0])&&t.id===n&&o.shift();)t.unsubscribe();throw i}},r}(rr);var Wr=new yt(xt);var pe=new L(function(e){return e.complete()});function tr(e){return e&&_(e.schedule)}function zr(e){return e[e.length-1]}function Ce(e){return _(zr(e))?e.pop():void 0}function ae(e){return tr(zr(e))?e.pop():void 0}function gt(e,r){return typeof zr(e)=="number"?e.pop():r}var Le=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function nr(e){return _(e==null?void 0:e.then)}function or(e){return _(e[Me])}function ir(e){return Symbol.asyncIterator&&_(e==null?void 0:e[Symbol.asyncIterator])}function ar(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function jn(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var sr=jn();function ur(e){return _(e==null?void 0:e[sr])}function fr(e){return ot(this,arguments,function(){var t,n,o,i;return Ge(this,function(a){switch(a.label){case 0:t=e.getReader(),a.label=1;case 1:a.trys.push([1,,9,10]),a.label=2;case 2:return[4,ve(t.read())];case 3:return n=a.sent(),o=n.value,i=n.done,i?[4,ve(void 0)]:[3,5];case 4:return[2,a.sent()];case 5:return[4,ve(o)];case 6:return[4,a.sent()];case 7:return a.sent(),[3,2];case 8:return[3,10];case 9:return t.releaseLock(),[7];case 10:return[2]}})})}function cr(e){return _(e==null?void 0:e.getReader)}function P(e){if(e instanceof L)return e;if(e!=null){if(or(e))return qn(e);if(Le(e))return $n(e);if(nr(e))return Nn(e);if(ir(e))return wt(e);if(ur(e))return Dn(e);if(cr(e))return Qn(e)}throw ar(e)}function qn(e){return new L(function(r){var t=e[Me]();if(_(t.subscribe))return t.subscribe(r);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function $n(e){return new L(function(r){for(var t=0;t0&&(f=new xe({next:function(E){return x.next(E)},error:function(E){m=!0,b(),p=Qr(w,o,E),x.error(E)},complete:function(){h=!0,b(),p=Qr(w,a),x.complete()}}),P(R).subscribe(f))})(s)}}function Qr(e,r){for(var t=[],n=2;n{let r=yr();return typeof r!="undefined"?e.contains(r):!1}),he(e===yr()),le())}function Dt(e){return{x:e.scrollLeft,y:e.scrollTop}}function Qt(e){return N(K(e,"scroll"),K(window,"resize")).pipe(Vr(0,Wr),k(()=>Dt(e)),he(Dt(e)))}var Gt=function(){if(typeof Map!="undefined")return Map;function e(r,t){var n=-1;return r.some(function(o,i){return o[0]===t?(n=i,!0):!1}),n}return function(){function r(){this.__entries__=[]}return Object.defineProperty(r.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),r.prototype.get=function(t){var n=e(this.__entries__,t),o=this.__entries__[n];return o&&o[1]},r.prototype.set=function(t,n){var o=e(this.__entries__,t);~o?this.__entries__[o][1]=n:this.__entries__.push([t,n])},r.prototype.delete=function(t){var n=this.__entries__,o=e(n,t);~o&&n.splice(o,1)},r.prototype.has=function(t){return!!~e(this.__entries__,t)},r.prototype.clear=function(){this.__entries__.splice(0)},r.prototype.forEach=function(t,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!Gr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),vo?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!Gr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(r){var t=r.propertyName,n=t===void 0?"":t,o=ho.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Yt=function(e,r){for(var t=0,n=Object.keys(r);t0},e}(),Bt=typeof WeakMap!="undefined"?new WeakMap:new Gt,Xt=function(){function e(r){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var t=bo.getInstance(),n=new Ao(r,t,this);Bt.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){Xt.prototype[e]=function(){var r;return(r=Bt.get(this))[e].apply(r,arguments)}});var Mo=function(){return typeof gr.ResizeObserver!="undefined"?gr.ResizeObserver:Xt}(),Zt=Mo;var Io=new B,Yp=je(()=>Z(new Zt(e=>{for(let r of e)Io.next(r)}))).pipe(D(e=>N(qe,Z(e)).pipe(Ee(()=>e.disconnect()))),Se(1));function en(e){return{width:e.offsetWidth,height:e.offsetHeight}}function rn(e){return{width:e.scrollWidth,height:e.scrollHeight}}var Co=new B,ol=je(()=>Z(new IntersectionObserver(e=>{for(let r of e)Co.next(r)},{threshold:0}))).pipe(D(e=>N(qe,Z(e)).pipe(Ee(()=>e.disconnect()))),Se(1));function tn(e,r=16){return Qt(e).pipe(k(({y:t})=>{let n=en(e),o=rn(e);return t>=o.height-n.height-r}),le())}var ml={drawer:ee("[data-md-toggle=drawer]"),search:ee("[data-md-toggle=search]")};function nn(){return new URL(location.href)}function on(e,r){if(typeof r=="string"||typeof r=="number")e.innerHTML+=r.toString();else if(r instanceof Node)e.appendChild(r);else if(Array.isArray(r))for(let t of r)on(e,t)}function re(e,r,...t){let n=document.createElement(e);if(r)for(let o of Object.keys(r))typeof r[o]!="undefined"&&(typeof r[o]!="boolean"?n.setAttribute(o,r[o]):n.setAttribute(o,""));for(let o of t)on(n,o);return n}function an(e){if(e>999){let r=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(r)}k`}else return e.toString()}function Lo(e,r={credentials:"same-origin"}){return X(fetch(`${e}`,r)).pipe(br(()=>pe),D(t=>t.status!==200?Ur(()=>new Error(t.statusText)):Z(t)))}function Sr(e,r){return Lo(e,r).pipe(D(t=>t.json()),Se(1))}function He(e,r=document){return ee(`[data-mdx-component=${e}]`,r)}function Yr(e,r=document){return qt(`[data-mdx-component=${e}]`,r)}var Ro=ee("#__config"),$e=JSON.parse(Ro.textContent);$e.base=`${new URL($e.base,nn())}`;function sn(){return $e}function un(e,r){return typeof r!="undefined"?$e.translations[e].replace("#",r.toString()):$e.translations[e]}function fn(e){let r=Nt(e),t=N(K(e,"keyup"),K(e,"focus").pipe(Dr(1))).pipe(k(()=>e.value),he(e.value),le());return r.pipe(we(n=>!n),Fe(t)).subscribe(([,n])=>{let o=document.location.pathname;typeof ga=="function"&&n.length&&ga("send","pageview",`${o}?q=[icon]+${n}`)}),Re([t,r]).pipe(k(([n,o])=>({ref:e,value:n,focus:o})))}var Xr=tt(Br());var yn=tt(Br());function xn(e,r){return(0,yn.wrap)(e.shortcode,r,{wrap:{tagOpen:"",tagClose:""}})}function gn(e,r,t){return re("li",{class:"mdx-iconsearch-result__item"},re("span",{class:"twemoji"},re("img",{src:e.url})),re("button",{class:"md-clipboard--inline",title:un("clipboard.copy"),"data-clipboard-text":t?e.shortcode:`:${e.shortcode}:`},re("code",null,t?xn(e,r):`:${xn(e,r)}:`)))}function wn(e){let r=`@${e.name}`;return re("a",{href:e.url,title:r,class:"mdx-sponsorship__item"},re("img",{src:e.image}))}function En(e){return re("a",{href:"https://github.com/sponsors/squidfunk?metadata_origin=docs",class:"mdx-sponsorship__item mdx-sponsorship__item--private"},"+",e)}function Po(e,{index$:r,query$:t}){switch(e.getAttribute("data-mdx-mode")){case"file":return Re([t.pipe(xr("value")),r.pipe(k(({icons:n})=>Object.values(n.data).map(o=>o.replace(/\.svg$/,""))))]).pipe(k(([{value:n},o])=>(0,Xr.filter)(o,n)),D(n=>r.pipe(k(({icons:o})=>({data:n.map(i=>({shortcode:i,url:[o.base,i,".svg"].join("")}))})))));default:return Re([t.pipe(xr("value")),r.pipe(k(({icons:n,emojis:o})=>[...Object.keys(n.data),...Object.keys(o.data)]))]).pipe(k(([{value:n},o])=>(0,Xr.filter)(o,n)),D(n=>r.pipe(k(({icons:o,emojis:i})=>({data:n.map(a=>{let c=a in o.data?o:i;return{shortcode:a,url:[c.base,c.data[a]].join("")}})})))))}}function Sn(e,{index$:r,query$:t}){let n=new B,o=tn(e).pipe(we(Boolean)),i=ee(":scope > :first-child",e);n.pipe(Fe(t)).subscribe(([{data:u},{value:s}])=>{if(s)switch(u.length){case 0:i.textContent="No matches";break;case 1:i.textContent="1 match";break;default:i.textContent=`${an(u.length)} matches`}else i.textContent="Type to start searching"});let a=e.getAttribute("data-mdx-mode")==="file",c=ee(":scope > :last-child",e);return n.pipe(Pe(()=>c.innerHTML=""),D(({data:u})=>N(Z(...u.slice(0,10)),Z(...u.slice(10)).pipe(jr(10),Kr(o),D(([s])=>s)))),Fe(t)).subscribe(([u,{value:s}])=>c.appendChild(gn(u,s,a))),Po(e,{query$:t,index$:r}).pipe(Pe(u=>n.next(u)),Ee(()=>n.complete()),k(u=>Ke({ref:e},u)))}function _n(e){let r=sn(),t=Sr(new URL("assets/javascripts/iconsearch_index.json",r.base)),n=He("iconsearch-query",e),o=He("iconsearch-result",e),i=fn(n),a=Sn(o,{index$:t,query$:i});return N(i,a)}function On(e){let r=Sr("https://3if8u9o552.execute-api.us-east-1.amazonaws.com/_/"),t=He("sponsorship-count"),n=He("sponsorship-total");return r.subscribe(o=>{e.removeAttribute("hidden");let i=ee(":scope > :first-child",e);for(let a of o.sponsors)a.type==="public"&&i.appendChild(wn(a.user));i.appendChild(En(o.sponsors.filter(({type:a})=>a==="private").length)),t.innerText=`${o.sponsors.length}`,n.innerText=`$ ${o.total.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")} a month`}),r.pipe(k(o=>Ke({ref:e},o)))}function Tn(){let{origin:e}=new URL(location.href);K(document.body,"click").subscribe(r=>{if(r.target instanceof HTMLElement){let t=r.target.closest("a");t&&t.origin!==e&&ga("send","event","outbound","click",t.href)}})}Tn();var Fo=document$.pipe(D(()=>N(...Yr("iconsearch").map(e=>_n(e)),...Yr("sponsorship").map(e=>On(e)))));Fo.subscribe();})(); -//# sourceMappingURL=custom.ed9684d4.min.js.map + `):"",this.name="UnsubscriptionError",this.errors=t}});function fe(e,r){if(e){var t=e.indexOf(r);0<=t&&e.splice(t,1)}}var ie=function(){function e(r){this.initialTeardown=r,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var r,t,n,o,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a)if(this._parentage=null,Array.isArray(a))try{for(var c=G(a),u=c.next();!u.done;u=c.next()){var s=u.value;s.remove(this)}}catch(m){r={error:m}}finally{try{u&&!u.done&&(t=c.return)&&t.call(c)}finally{if(r)throw r.error}}else a.remove(this);var f=this.initialTeardown;if(_(f))try{f()}catch(m){i=m instanceof Je?m.errors:[m]}var p=this._finalizers;if(p){this._finalizers=null;try{for(var l=G(p),v=l.next();!v.done;v=l.next()){var h=v.value;try{at(h)}catch(m){i=i!=null?i:[],m instanceof Je?i=U(U([],W(i)),W(m.errors)):i.push(m)}}}catch(m){n={error:m}}finally{try{v&&!v.done&&(o=l.return)&&o.call(l)}finally{if(n)throw n.error}}}if(i)throw new Je(i)}},e.prototype.add=function(r){var t;if(r&&r!==this)if(this.closed)at(r);else{if(r instanceof e){if(r.closed||r._hasParent(this))return;r._addParent(this)}(this._finalizers=(t=this._finalizers)!==null&&t!==void 0?t:[]).push(r)}},e.prototype._hasParent=function(r){var t=this._parentage;return t===r||Array.isArray(t)&&t.includes(r)},e.prototype._addParent=function(r){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(r),t):t?[t,r]:r},e.prototype._removeParent=function(r){var t=this._parentage;t===r?this._parentage=null:Array.isArray(t)&&fe(t,r)},e.prototype.remove=function(r){var t=this._finalizers;t&&fe(t,r),r instanceof e&&r._removeParent(this)},e.EMPTY=function(){var r=new e;return r.closed=!0,r}(),e}();var Rr=ie.EMPTY;function Be(e){return e instanceof ie||e&&"closed"in e&&_(e.remove)&&_(e.add)&&_(e.unsubscribe)}function at(e){_(e)?e():e.unsubscribe()}var te={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var Te={setTimeout:function(e,r){for(var t=[],n=2;n0},enumerable:!1,configurable:!0}),r.prototype._trySubscribe=function(t){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,t)},r.prototype._subscribe=function(t){return this._throwIfClosed(),this._checkFinalizedStatuses(t),this._innerSubscribe(t)},r.prototype._innerSubscribe=function(t){var n=this,o=this,i=o.hasError,a=o.isStopped,c=o.observers;return i||a?Rr:(this.currentObservers=null,c.push(t),new ie(function(){n.currentObservers=null,fe(c,t)}))},r.prototype._checkFinalizedStatuses=function(t){var n=this,o=n.hasError,i=n.thrownError,a=n.isStopped;o?t.error(i):a&&t.complete()},r.prototype.asObservable=function(){var t=new L;return t.source=this,t},r.create=function(t,n){return new ht(t,n)},r}(L);var ht=function(e){j(r,e);function r(t,n){var o=e.call(this)||this;return o.destination=t,o.source=n,o}return r.prototype.next=function(t){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,t)},r.prototype.error=function(t){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,t)},r.prototype.complete=function(){var t,n;(n=(t=this.destination)===null||t===void 0?void 0:t.complete)===null||n===void 0||n.call(t)},r.prototype._subscribe=function(t){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(t))!==null&&o!==void 0?o:Rr},r}(B);var ze={now:function(){return(ze.delegate||Date).now()},delegate:void 0};var dt=function(e){j(r,e);function r(t,n,o){t===void 0&&(t=1/0),n===void 0&&(n=1/0),o===void 0&&(o=ze);var i=e.call(this)||this;return i._bufferSize=t,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,t),i._windowTime=Math.max(1,n),i}return r.prototype.next=function(t){var n=this,o=n.isStopped,i=n._buffer,a=n._infiniteTimeWindow,c=n._timestampProvider,u=n._windowTime;o||(i.push(t),!a&&i.push(c.now()+u)),this._trimBuffer(),e.prototype.next.call(this,t)},r.prototype._subscribe=function(t){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(t),o=this,i=o._infiniteTimeWindow,a=o._buffer,c=a.slice(),u=0;u0?e.prototype.requestAsyncId.call(this,t,n,o):(t.actions.push(this),t._scheduled||(t._scheduled=Ie.requestAnimationFrame(function(){return t.flush(void 0)})))},r.prototype.recycleAsyncId=function(t,n,o){var i;if(o===void 0&&(o=0),o!=null?o>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,t,n,o);var a=t.actions;n!=null&&((i=a[a.length-1])===null||i===void 0?void 0:i.id)!==n&&(Ie.cancelAnimationFrame(n),t._scheduled=void 0)},r}(er);var yt=function(e){j(r,e);function r(){return e!==null&&e.apply(this,arguments)||this}return r.prototype.flush=function(t){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;t=t||o.shift();do if(i=t.execute(t.state,t.delay))break;while((t=o[0])&&t.id===n&&o.shift());if(this._active=!1,i){for(;(t=o[0])&&t.id===n&&o.shift();)t.unsubscribe();throw i}},r}(rr);var Wr=new yt(xt);var pe=new L(function(e){return e.complete()});function tr(e){return e&&_(e.schedule)}function zr(e){return e[e.length-1]}function Ce(e){return _(zr(e))?e.pop():void 0}function ae(e){return tr(zr(e))?e.pop():void 0}function gt(e,r){return typeof zr(e)=="number"?e.pop():r}var Le=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function nr(e){return _(e==null?void 0:e.then)}function or(e){return _(e[Me])}function ir(e){return Symbol.asyncIterator&&_(e==null?void 0:e[Symbol.asyncIterator])}function ar(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function jn(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var sr=jn();function ur(e){return _(e==null?void 0:e[sr])}function fr(e){return ot(this,arguments,function(){var t,n,o,i;return Ge(this,function(a){switch(a.label){case 0:t=e.getReader(),a.label=1;case 1:a.trys.push([1,,9,10]),a.label=2;case 2:return[4,ve(t.read())];case 3:return n=a.sent(),o=n.value,i=n.done,i?[4,ve(void 0)]:[3,5];case 4:return[2,a.sent()];case 5:return[4,ve(o)];case 6:return[4,a.sent()];case 7:return a.sent(),[3,2];case 8:return[3,10];case 9:return t.releaseLock(),[7];case 10:return[2]}})})}function cr(e){return _(e==null?void 0:e.getReader)}function P(e){if(e instanceof L)return e;if(e!=null){if(or(e))return $n(e);if(Le(e))return qn(e);if(nr(e))return Nn(e);if(ir(e))return wt(e);if(ur(e))return Dn(e);if(cr(e))return Qn(e)}throw ar(e)}function $n(e){return new L(function(r){var t=e[Me]();if(_(t.subscribe))return t.subscribe(r);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function qn(e){return new L(function(r){for(var t=0;t0&&(f=new xe({next:function(E){return x.next(E)},error:function(E){m=!0,b(),p=Qr(w,o,E),x.error(E)},complete:function(){h=!0,b(),p=Qr(w,a),x.complete()}}),P(R).subscribe(f))})(s)}}function Qr(e,r){for(var t=[],n=2;n{let r=yr();return typeof r!="undefined"?e.contains(r):!1}),he(e===yr()),le())}function Dt(e){return{x:e.scrollLeft,y:e.scrollTop}}function Qt(e){return N(K(e,"scroll"),K(window,"resize")).pipe(Vr(0,Wr),k(()=>Dt(e)),he(Dt(e)))}var Gt=function(){if(typeof Map!="undefined")return Map;function e(r,t){var n=-1;return r.some(function(o,i){return o[0]===t?(n=i,!0):!1}),n}return function(){function r(){this.__entries__=[]}return Object.defineProperty(r.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),r.prototype.get=function(t){var n=e(this.__entries__,t),o=this.__entries__[n];return o&&o[1]},r.prototype.set=function(t,n){var o=e(this.__entries__,t);~o?this.__entries__[o][1]=n:this.__entries__.push([t,n])},r.prototype.delete=function(t){var n=this.__entries__,o=e(n,t);~o&&n.splice(o,1)},r.prototype.has=function(t){return!!~e(this.__entries__,t)},r.prototype.clear=function(){this.__entries__.splice(0)},r.prototype.forEach=function(t,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!Gr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),vo?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!Gr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(r){var t=r.propertyName,n=t===void 0?"":t,o=ho.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Yt=function(e,r){for(var t=0,n=Object.keys(r);t0},e}(),Bt=typeof WeakMap!="undefined"?new WeakMap:new Gt,Xt=function(){function e(r){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var t=bo.getInstance(),n=new Ao(r,t,this);Bt.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){Xt.prototype[e]=function(){var r;return(r=Bt.get(this))[e].apply(r,arguments)}});var Mo=function(){return typeof gr.ResizeObserver!="undefined"?gr.ResizeObserver:Xt}(),Zt=Mo;var Io=new B,Yp=je(()=>Z(new Zt(e=>{for(let r of e)Io.next(r)}))).pipe(D(e=>N($e,Z(e)).pipe(Ee(()=>e.disconnect()))),Se(1));function en(e){return{width:e.offsetWidth,height:e.offsetHeight}}function rn(e){return{width:e.scrollWidth,height:e.scrollHeight}}var Co=new B,ol=je(()=>Z(new IntersectionObserver(e=>{for(let r of e)Co.next(r)},{threshold:0}))).pipe(D(e=>N($e,Z(e)).pipe(Ee(()=>e.disconnect()))),Se(1));function tn(e,r=16){return Qt(e).pipe(k(({y:t})=>{let n=en(e),o=rn(e);return t>=o.height-n.height-r}),le())}var ml={drawer:ee("[data-md-toggle=drawer]"),search:ee("[data-md-toggle=search]")};function nn(){return new URL(location.href)}function on(e,r){if(typeof r=="string"||typeof r=="number")e.innerHTML+=r.toString();else if(r instanceof Node)e.appendChild(r);else if(Array.isArray(r))for(let t of r)on(e,t)}function re(e,r,...t){let n=document.createElement(e);if(r)for(let o of Object.keys(r))typeof r[o]!="undefined"&&(typeof r[o]!="boolean"?n.setAttribute(o,r[o]):n.setAttribute(o,""));for(let o of t)on(n,o);return n}function an(e){if(e>999){let r=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(r)}k`}else return e.toString()}function Lo(e,r={credentials:"same-origin"}){return X(fetch(`${e}`,r)).pipe(br(()=>pe),D(t=>t.status!==200?Ur(()=>new Error(t.statusText)):Z(t)))}function Sr(e,r){return Lo(e,r).pipe(D(t=>t.json()),Se(1))}(()=>{function e(n,o){parent.postMessage(n,o||"*")}function r(...n){return n.reduce((o,i)=>o.then(()=>new Promise(a=>{let c=document.createElement("script");c.src=i,c.onload=a,document.body.appendChild(c)})),Promise.resolve())}var t=class{constructor(n){this.url=n,this.onerror=null,this.onmessage=null,this.onmessageerror=null,this.m=a=>{a.source===this.w&&(a.stopImmediatePropagation(),this.dispatchEvent(new MessageEvent("message",{data:a.data})),this.onmessage&&this.onmessage(a))},this.e=(a,c,u,s,f)=>{if(c===this.url.toString()){let p=new ErrorEvent("error",{message:a,filename:c,lineno:u,colno:s,error:f});this.dispatchEvent(p),this.onerror&&this.onerror(p)}};let o=new EventTarget;this.addEventListener=o.addEventListener.bind(o),this.removeEventListener=o.removeEventListener.bind(o),this.dispatchEvent=o.dispatchEvent.bind(o);let i=document.createElement("iframe");i.width=i.height=i.frameBorder="0",document.body.appendChild(this.iframe=i),this.w.document.open(),this.w.document.write(` + {% endblock %} diff --git a/material/.overrides/partials/actions.html b/material/.overrides/partials/actions.html deleted file mode 100644 index a31b0b72515..00000000000 --- a/material/.overrides/partials/actions.html +++ /dev/null @@ -1,13 +0,0 @@ -{#- - This file was automatically generated - do not edit --#} -{% if page.edit_url %} - {% set edit = "https://github.com/squidfunk/mkdocs-material/edit" %} - {% set view = "https://raw.githubusercontent.com/squidfunk/mkdocs-material" %} - - {% include ".icons/material/file-edit-outline.svg" %} - - - {% include ".icons/material/file-eye-outline.svg" %} - -{% endif %} diff --git a/material/assets/javascripts/bundle.6ca897f9.min.js b/material/assets/javascripts/bundle.6ca897f9.min.js new file mode 100644 index 00000000000..46e0287e6b2 --- /dev/null +++ b/material/assets/javascripts/bundle.6ca897f9.min.js @@ -0,0 +1,29 @@ +"use strict";(()=>{var Hi=Object.create;var xr=Object.defineProperty;var Pi=Object.getOwnPropertyDescriptor;var $i=Object.getOwnPropertyNames,kt=Object.getOwnPropertySymbols,Ii=Object.getPrototypeOf,Er=Object.prototype.hasOwnProperty,an=Object.prototype.propertyIsEnumerable;var on=(e,t,r)=>t in e?xr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,P=(e,t)=>{for(var r in t||(t={}))Er.call(t,r)&&on(e,r,t[r]);if(kt)for(var r of kt(t))an.call(t,r)&&on(e,r,t[r]);return e};var sn=(e,t)=>{var r={};for(var n in e)Er.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&kt)for(var n of kt(e))t.indexOf(n)<0&&an.call(e,n)&&(r[n]=e[n]);return r};var Ht=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ji=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of $i(t))!Er.call(e,o)&&o!==r&&xr(e,o,{get:()=>t[o],enumerable:!(n=Pi(t,o))||n.enumerable});return e};var yt=(e,t,r)=>(r=e!=null?Hi(Ii(e)):{},ji(t||!e||!e.__esModule?xr(r,"default",{value:e,enumerable:!0}):r,e));var fn=Ht((wr,cn)=>{(function(e,t){typeof wr=="object"&&typeof cn!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(wr,function(){"use strict";function e(r){var n=!0,o=!1,i=null,a={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function s(O){return!!(O&&O!==document&&O.nodeName!=="HTML"&&O.nodeName!=="BODY"&&"classList"in O&&"contains"in O.classList)}function f(O){var Ne=O.type,Ue=O.tagName;return!!(Ue==="INPUT"&&a[Ne]&&!O.readOnly||Ue==="TEXTAREA"&&!O.readOnly||O.isContentEditable)}function c(O){O.classList.contains("focus-visible")||(O.classList.add("focus-visible"),O.setAttribute("data-focus-visible-added",""))}function u(O){O.hasAttribute("data-focus-visible-added")&&(O.classList.remove("focus-visible"),O.removeAttribute("data-focus-visible-added"))}function p(O){O.metaKey||O.altKey||O.ctrlKey||(s(r.activeElement)&&c(r.activeElement),n=!0)}function m(O){n=!1}function d(O){s(O.target)&&(n||f(O.target))&&c(O.target)}function h(O){s(O.target)&&(O.target.classList.contains("focus-visible")||O.target.hasAttribute("data-focus-visible-added"))&&(o=!0,window.clearTimeout(i),i=window.setTimeout(function(){o=!1},100),u(O.target))}function v(O){document.visibilityState==="hidden"&&(o&&(n=!0),B())}function B(){document.addEventListener("mousemove",V),document.addEventListener("mousedown",V),document.addEventListener("mouseup",V),document.addEventListener("pointermove",V),document.addEventListener("pointerdown",V),document.addEventListener("pointerup",V),document.addEventListener("touchmove",V),document.addEventListener("touchstart",V),document.addEventListener("touchend",V)}function re(){document.removeEventListener("mousemove",V),document.removeEventListener("mousedown",V),document.removeEventListener("mouseup",V),document.removeEventListener("pointermove",V),document.removeEventListener("pointerdown",V),document.removeEventListener("pointerup",V),document.removeEventListener("touchmove",V),document.removeEventListener("touchstart",V),document.removeEventListener("touchend",V)}function V(O){O.target.nodeName&&O.target.nodeName.toLowerCase()==="html"||(n=!1,re())}document.addEventListener("keydown",p,!0),document.addEventListener("mousedown",m,!0),document.addEventListener("pointerdown",m,!0),document.addEventListener("touchstart",m,!0),document.addEventListener("visibilitychange",v,!0),B(),r.addEventListener("focus",d,!0),r.addEventListener("blur",h,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var un=Ht(Sr=>{(function(e){var t=function(){try{return!!Symbol.iterator}catch(c){return!1}},r=t(),n=function(c){var u={next:function(){var p=c.shift();return{done:p===void 0,value:p}}};return r&&(u[Symbol.iterator]=function(){return u}),u},o=function(c){return encodeURIComponent(c).replace(/%20/g,"+")},i=function(c){return decodeURIComponent(String(c).replace(/\+/g," "))},a=function(){var c=function(p){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var m=typeof p;if(m!=="undefined")if(m==="string")p!==""&&this._fromString(p);else if(p instanceof c){var d=this;p.forEach(function(re,V){d.append(V,re)})}else if(p!==null&&m==="object")if(Object.prototype.toString.call(p)==="[object Array]")for(var h=0;hd[0]?1:0}),c._entries&&(c._entries={});for(var p=0;p1?i(d[1]):"")}})})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Sr);(function(e){var t=function(){try{var o=new e.URL("b","http://a");return o.pathname="c d",o.href==="http://a/c%20d"&&o.searchParams}catch(i){return!1}},r=function(){var o=e.URL,i=function(f,c){typeof f!="string"&&(f=String(f)),c&&typeof c!="string"&&(c=String(c));var u=document,p;if(c&&(e.location===void 0||c!==e.location.href)){c=c.toLowerCase(),u=document.implementation.createHTMLDocument(""),p=u.createElement("base"),p.href=c,u.head.appendChild(p);try{if(p.href.indexOf(c)!==0)throw new Error(p.href)}catch(O){throw new Error("URL unable to set base "+c+" due to "+O)}}var m=u.createElement("a");m.href=f,p&&(u.body.appendChild(m),m.href=m.href);var d=u.createElement("input");if(d.type="url",d.value=f,m.protocol===":"||!/:/.test(m.href)||!d.checkValidity()&&!c)throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:m});var h=new e.URLSearchParams(this.search),v=!0,B=!0,re=this;["append","delete","set"].forEach(function(O){var Ne=h[O];h[O]=function(){Ne.apply(h,arguments),v&&(B=!1,re.search=h.toString(),B=!0)}}),Object.defineProperty(this,"searchParams",{value:h,enumerable:!0});var V=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==V&&(V=this.search,B&&(v=!1,this.searchParams._fromString(this.search),v=!0))}})},a=i.prototype,s=function(f){Object.defineProperty(a,f,{get:function(){return this._anchorElement[f]},set:function(c){this._anchorElement[f]=c},enumerable:!0})};["hash","host","hostname","port","protocol"].forEach(function(f){s(f)}),Object.defineProperty(a,"search",{get:function(){return this._anchorElement.search},set:function(f){this._anchorElement.search=f,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(a,{toString:{get:function(){var f=this;return function(){return f.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(f){this._anchorElement.href=f,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(f){this._anchorElement.pathname=f},enumerable:!0},origin:{get:function(){var f={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],c=this._anchorElement.port!=f&&this._anchorElement.port!=="";return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(c?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(f){},enumerable:!0},username:{get:function(){return""},set:function(f){},enumerable:!0}}),i.createObjectURL=function(f){return o.createObjectURL.apply(o,arguments)},i.revokeObjectURL=function(f){return o.revokeObjectURL.apply(o,arguments)},e.URL=i};if(t()||r(),e.location!==void 0&&!("origin"in e.location)){var n=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:n,enumerable:!0})}catch(o){setInterval(function(){e.location.origin=n()},100)}}})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Sr)});var Qr=Ht((Lt,Kr)=>{/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(t,r){typeof Lt=="object"&&typeof Kr=="object"?Kr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Lt=="object"?Lt.ClipboardJS=r():t.ClipboardJS=r()})(Lt,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return ki}});var a=i(279),s=i.n(a),f=i(370),c=i.n(f),u=i(817),p=i.n(u);function m(F){try{return document.execCommand(F)}catch(T){return!1}}var d=function(T){var w=p()(T);return m("cut"),w},h=d;function v(F){var T=document.documentElement.getAttribute("dir")==="rtl",w=document.createElement("textarea");w.style.fontSize="12pt",w.style.border="0",w.style.padding="0",w.style.margin="0",w.style.position="absolute",w.style[T?"right":"left"]="-9999px";var k=window.pageYOffset||document.documentElement.scrollTop;return w.style.top="".concat(k,"px"),w.setAttribute("readonly",""),w.value=F,w}var B=function(T,w){var k=v(T);w.container.appendChild(k);var j=p()(k);return m("copy"),k.remove(),j},re=function(T){var w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},k="";return typeof T=="string"?k=B(T,w):T instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(T==null?void 0:T.type)?k=B(T.value,w):(k=p()(T),m("copy")),k},V=re;function O(F){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?O=function(w){return typeof w}:O=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},O(F)}var Ne=function(){var T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},w=T.action,k=w===void 0?"copy":w,j=T.container,N=T.target,Me=T.text;if(k!=="copy"&&k!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(N!==void 0)if(N&&O(N)==="object"&&N.nodeType===1){if(k==="copy"&&N.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(k==="cut"&&(N.hasAttribute("readonly")||N.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Me)return V(Me,{container:j});if(N)return k==="cut"?h(N):V(N,{container:j})},Ue=Ne;function $e(F){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?$e=function(w){return typeof w}:$e=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},$e(F)}function Oi(F,T){if(!(F instanceof T))throw new TypeError("Cannot call a class as a function")}function nn(F,T){for(var w=0;w0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof j.action=="function"?j.action:this.defaultAction,this.target=typeof j.target=="function"?j.target:this.defaultTarget,this.text=typeof j.text=="function"?j.text:this.defaultText,this.container=$e(j.container)==="object"?j.container:document.body}},{key:"listenClick",value:function(j){var N=this;this.listener=c()(j,"click",function(Me){return N.onClick(Me)})}},{key:"onClick",value:function(j){var N=j.delegateTarget||j.currentTarget,Me=this.action(N)||"copy",Rt=Ue({action:Me,container:this.container,target:this.target(N),text:this.text(N)});this.emit(Rt?"success":"error",{action:Me,text:Rt,trigger:N,clearSelection:function(){N&&N.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(j){return yr("action",j)}},{key:"defaultTarget",value:function(j){var N=yr("target",j);if(N)return document.querySelector(N)}},{key:"defaultText",value:function(j){return yr("text",j)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(j){var N=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return V(j,N)}},{key:"cut",value:function(j){return h(j)}},{key:"isSupported",value:function(){var j=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],N=typeof j=="string"?[j]:j,Me=!!document.queryCommandSupported;return N.forEach(function(Rt){Me=Me&&!!document.queryCommandSupported(Rt)}),Me}}]),w}(s()),ki=Ri},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function a(s,f){for(;s&&s.nodeType!==o;){if(typeof s.matches=="function"&&s.matches(f))return s;s=s.parentNode}}n.exports=a},438:function(n,o,i){var a=i(828);function s(u,p,m,d,h){var v=c.apply(this,arguments);return u.addEventListener(m,v,h),{destroy:function(){u.removeEventListener(m,v,h)}}}function f(u,p,m,d,h){return typeof u.addEventListener=="function"?s.apply(null,arguments):typeof m=="function"?s.bind(null,document).apply(null,arguments):(typeof u=="string"&&(u=document.querySelectorAll(u)),Array.prototype.map.call(u,function(v){return s(v,p,m,d,h)}))}function c(u,p,m,d){return function(h){h.delegateTarget=a(h.target,p),h.delegateTarget&&d.call(u,h)}}n.exports=f},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var a=Object.prototype.toString.call(i);return i!==void 0&&(a==="[object NodeList]"||a==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var a=Object.prototype.toString.call(i);return a==="[object Function]"}},370:function(n,o,i){var a=i(879),s=i(438);function f(m,d,h){if(!m&&!d&&!h)throw new Error("Missing required arguments");if(!a.string(d))throw new TypeError("Second argument must be a String");if(!a.fn(h))throw new TypeError("Third argument must be a Function");if(a.node(m))return c(m,d,h);if(a.nodeList(m))return u(m,d,h);if(a.string(m))return p(m,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function c(m,d,h){return m.addEventListener(d,h),{destroy:function(){m.removeEventListener(d,h)}}}function u(m,d,h){return Array.prototype.forEach.call(m,function(v){v.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(m,function(v){v.removeEventListener(d,h)})}}}function p(m,d,h){return s(document.body,m,d,h)}n.exports=f},817:function(n){function o(i){var a;if(i.nodeName==="SELECT")i.focus(),a=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var s=i.hasAttribute("readonly");s||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),s||i.removeAttribute("readonly"),a=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var f=window.getSelection(),c=document.createRange();c.selectNodeContents(i),f.removeAllRanges(),f.addRange(c),a=f.toString()}return a}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,a,s){var f=this.e||(this.e={});return(f[i]||(f[i]=[])).push({fn:a,ctx:s}),this},once:function(i,a,s){var f=this;function c(){f.off(i,c),a.apply(s,arguments)}return c._=a,this.on(i,c,s)},emit:function(i){var a=[].slice.call(arguments,1),s=((this.e||(this.e={}))[i]||[]).slice(),f=0,c=s.length;for(f;f{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var is=/["'&<>]/;Jo.exports=as;function as(e){var t=""+e,r=is.exec(t);if(!r)return t;var n,o="",i=0,a=0;for(i=r.index;i0&&i[i.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function W(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),o,i=[],a;try{for(;(t===void 0||t-- >0)&&!(o=n.next()).done;)i.push(o.value)}catch(s){a={error:s}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(a)throw a.error}}return i}function D(e,t,r){if(r||arguments.length===2)for(var n=0,o=t.length,i;n1||s(m,d)})})}function s(m,d){try{f(n[m](d))}catch(h){p(i[0][3],h)}}function f(m){m.value instanceof Xe?Promise.resolve(m.value.v).then(c,u):p(i[0][2],m)}function c(m){s("next",m)}function u(m){s("throw",m)}function p(m,d){m(d),i.shift(),i.length&&s(i[0][0],i[0][1])}}function mn(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof xe=="function"?xe(e):e[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(i){r[i]=e[i]&&function(a){return new Promise(function(s,f){a=e[i](a),o(s,f,a.done,a.value)})}}function o(i,a,s,f){Promise.resolve(f).then(function(c){i({value:c,done:s})},a)}}function A(e){return typeof e=="function"}function at(e){var t=function(n){Error.call(n),n.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var $t=at(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: +`+r.map(function(n,o){return o+1+") "+n.toString()}).join(` + `):"",this.name="UnsubscriptionError",this.errors=r}});function We(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Ie=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,n,o,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a)if(this._parentage=null,Array.isArray(a))try{for(var s=xe(a),f=s.next();!f.done;f=s.next()){var c=f.value;c.remove(this)}}catch(v){t={error:v}}finally{try{f&&!f.done&&(r=s.return)&&r.call(s)}finally{if(t)throw t.error}}else a.remove(this);var u=this.initialTeardown;if(A(u))try{u()}catch(v){i=v instanceof $t?v.errors:[v]}var p=this._finalizers;if(p){this._finalizers=null;try{for(var m=xe(p),d=m.next();!d.done;d=m.next()){var h=d.value;try{dn(h)}catch(v){i=i!=null?i:[],v instanceof $t?i=D(D([],W(i)),W(v.errors)):i.push(v)}}}catch(v){n={error:v}}finally{try{d&&!d.done&&(o=m.return)&&o.call(m)}finally{if(n)throw n.error}}}if(i)throw new $t(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)dn(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&We(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&We(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var Tr=Ie.EMPTY;function It(e){return e instanceof Ie||e&&"closed"in e&&A(e.remove)&&A(e.add)&&A(e.unsubscribe)}function dn(e){A(e)?e():e.unsubscribe()}var Le={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var st={setTimeout:function(e,t){for(var r=[],n=2;n0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var n=this,o=this,i=o.hasError,a=o.isStopped,s=o.observers;return i||a?Tr:(this.currentObservers=null,s.push(r),new Ie(function(){n.currentObservers=null,We(s,r)}))},t.prototype._checkFinalizedStatuses=function(r){var n=this,o=n.hasError,i=n.thrownError,a=n.isStopped;o?r.error(i):a&&r.complete()},t.prototype.asObservable=function(){var r=new U;return r.source=this,r},t.create=function(r,n){return new wn(r,n)},t}(U);var wn=function(e){ne(t,e);function t(r,n){var o=e.call(this)||this;return o.destination=r,o.source=n,o}return t.prototype.next=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,r)},t.prototype.error=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,r)},t.prototype.complete=function(){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||n===void 0||n.call(r)},t.prototype._subscribe=function(r){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(r))!==null&&o!==void 0?o:Tr},t}(E);var Et={now:function(){return(Et.delegate||Date).now()},delegate:void 0};var wt=function(e){ne(t,e);function t(r,n,o){r===void 0&&(r=1/0),n===void 0&&(n=1/0),o===void 0&&(o=Et);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(r){var n=this,o=n.isStopped,i=n._buffer,a=n._infiniteTimeWindow,s=n._timestampProvider,f=n._windowTime;o||(i.push(r),!a&&i.push(s.now()+f)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(r),o=this,i=o._infiniteTimeWindow,a=o._buffer,s=a.slice(),f=0;f0?e.prototype.requestAsyncId.call(this,r,n,o):(r.actions.push(this),r._scheduled||(r._scheduled=ut.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,n,o){var i;if(o===void 0&&(o=0),o!=null?o>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,n,o);var a=r.actions;n!=null&&((i=a[a.length-1])===null||i===void 0?void 0:i.id)!==n&&(ut.cancelAnimationFrame(n),r._scheduled=void 0)},t}(Ut);var Tn=function(e){ne(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;r=r||o.shift();do if(i=r.execute(r.state,r.delay))break;while((r=o[0])&&r.id===n&&o.shift());if(this._active=!1,i){for(;(r=o[0])&&r.id===n&&o.shift();)r.unsubscribe();throw i}},t}(Wt);var we=new Tn(On);var R=new U(function(e){return e.complete()});function Dt(e){return e&&A(e.schedule)}function kr(e){return e[e.length-1]}function qe(e){return A(kr(e))?e.pop():void 0}function Se(e){return Dt(kr(e))?e.pop():void 0}function Vt(e,t){return typeof kr(e)=="number"?e.pop():t}var pt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function zt(e){return A(e==null?void 0:e.then)}function Nt(e){return A(e[ft])}function qt(e){return Symbol.asyncIterator&&A(e==null?void 0:e[Symbol.asyncIterator])}function Kt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function Ki(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Qt=Ki();function Yt(e){return A(e==null?void 0:e[Qt])}function Gt(e){return ln(this,arguments,function(){var r,n,o,i;return Pt(this,function(a){switch(a.label){case 0:r=e.getReader(),a.label=1;case 1:a.trys.push([1,,9,10]),a.label=2;case 2:return[4,Xe(r.read())];case 3:return n=a.sent(),o=n.value,i=n.done,i?[4,Xe(void 0)]:[3,5];case 4:return[2,a.sent()];case 5:return[4,Xe(o)];case 6:return[4,a.sent()];case 7:return a.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function Bt(e){return A(e==null?void 0:e.getReader)}function $(e){if(e instanceof U)return e;if(e!=null){if(Nt(e))return Qi(e);if(pt(e))return Yi(e);if(zt(e))return Gi(e);if(qt(e))return _n(e);if(Yt(e))return Bi(e);if(Bt(e))return Ji(e)}throw Kt(e)}function Qi(e){return new U(function(t){var r=e[ft]();if(A(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function Yi(e){return new U(function(t){for(var r=0;r=2;return function(n){return n.pipe(e?M(function(o,i){return e(o,i,n)}):me,Te(1),r?ke(t):zn(function(){return new Xt}))}}function Nn(){for(var e=[],t=0;t=2,!0))}function fe(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new E}:t,n=e.resetOnError,o=n===void 0?!0:n,i=e.resetOnComplete,a=i===void 0?!0:i,s=e.resetOnRefCountZero,f=s===void 0?!0:s;return function(c){var u,p,m,d=0,h=!1,v=!1,B=function(){p==null||p.unsubscribe(),p=void 0},re=function(){B(),u=m=void 0,h=v=!1},V=function(){var O=u;re(),O==null||O.unsubscribe()};return g(function(O,Ne){d++,!v&&!h&&B();var Ue=m=m!=null?m:r();Ne.add(function(){d--,d===0&&!v&&!h&&(p=Fr(V,f))}),Ue.subscribe(Ne),!u&&d>0&&(u=new et({next:function($e){return Ue.next($e)},error:function($e){v=!0,B(),p=Fr(re,o,$e),Ue.error($e)},complete:function(){h=!0,B(),p=Fr(re,a),Ue.complete()}}),$(O).subscribe(u))})(c)}}function Fr(e,t){for(var r=[],n=2;ne.next(document)),e}function K(e,t=document){return Array.from(t.querySelectorAll(e))}function q(e,t=document){let r=se(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function se(e,t=document){return t.querySelector(e)||void 0}function je(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}function tr(e){return L(b(document.body,"focusin"),b(document.body,"focusout")).pipe(Re(1),l(()=>{let t=je();return typeof t!="undefined"?e.contains(t):!1}),z(e===je()),Y())}function Ye(e){return{x:e.offsetLeft,y:e.offsetTop}}function Yn(e){return L(b(window,"load"),b(window,"resize")).pipe(Ae(0,we),l(()=>Ye(e)),z(Ye(e)))}function rr(e){return{x:e.scrollLeft,y:e.scrollTop}}function dt(e){return L(b(e,"scroll"),b(window,"resize")).pipe(Ae(0,we),l(()=>rr(e)),z(rr(e)))}var Bn=function(){if(typeof Map!="undefined")return Map;function e(t,r){var n=-1;return t.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},t.prototype.set=function(r,n){var o=e(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,o=e(n,r);~o&&n.splice(o,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!zr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),xa?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!zr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,o=ya.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Jn=function(e,t){for(var r=0,n=Object.keys(t);r0},e}(),Zn=typeof WeakMap!="undefined"?new WeakMap:new Bn,eo=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=Ea.getInstance(),n=new Ra(t,r,this);Zn.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){eo.prototype[e]=function(){var t;return(t=Zn.get(this))[e].apply(t,arguments)}});var ka=function(){return typeof nr.ResizeObserver!="undefined"?nr.ResizeObserver:eo}(),to=ka;var ro=new E,Ha=I(()=>H(new to(e=>{for(let t of e)ro.next(t)}))).pipe(x(e=>L(Oe,H(e)).pipe(C(()=>e.disconnect()))),J(1));function de(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ge(e){return Ha.pipe(S(t=>t.observe(e)),x(t=>ro.pipe(M(({target:r})=>r===e),C(()=>t.unobserve(e)),l(()=>de(e)))),z(de(e)))}function bt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function ar(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var no=new E,Pa=I(()=>H(new IntersectionObserver(e=>{for(let t of e)no.next(t)},{threshold:0}))).pipe(x(e=>L(Oe,H(e)).pipe(C(()=>e.disconnect()))),J(1));function sr(e){return Pa.pipe(S(t=>t.observe(e)),x(t=>no.pipe(M(({target:r})=>r===e),C(()=>t.unobserve(e)),l(({isIntersecting:r})=>r))))}function oo(e,t=16){return dt(e).pipe(l(({y:r})=>{let n=de(e),o=bt(e);return r>=o.height-n.height-t}),Y())}var cr={drawer:q("[data-md-toggle=drawer]"),search:q("[data-md-toggle=search]")};function io(e){return cr[e].checked}function Ge(e,t){cr[e].checked!==t&&cr[e].click()}function Be(e){let t=cr[e];return b(t,"change").pipe(l(()=>t.checked),z(t.checked))}function $a(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Ia(){return L(b(window,"compositionstart").pipe(l(()=>!0)),b(window,"compositionend").pipe(l(()=>!1))).pipe(z(!1))}function ao(){let e=b(window,"keydown").pipe(M(t=>!(t.metaKey||t.ctrlKey)),l(t=>({mode:io("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),M(({mode:t,type:r})=>{if(t==="global"){let n=je();if(typeof n!="undefined")return!$a(n,r)}return!0}),fe());return Ia().pipe(x(t=>t?R:e))}function _e(){return new URL(location.href)}function ot(e){location.href=e.href}function so(){return new E}function co(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)co(e,r)}function _(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)co(n,o);return n}function fr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function fo(){return location.hash.substring(1)}function uo(e){let t=_("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function ja(){return b(window,"hashchange").pipe(l(fo),z(fo()),M(e=>e.length>0),J(1))}function po(){return ja().pipe(l(e=>se(`[id="${e}"]`)),M(e=>typeof e!="undefined"))}function Nr(e){let t=matchMedia(e);return Zt(r=>t.addListener(()=>r(t.matches))).pipe(z(t.matches))}function lo(){let e=matchMedia("print");return L(b(window,"beforeprint").pipe(l(()=>!0)),b(window,"afterprint").pipe(l(()=>!1))).pipe(z(e.matches))}function qr(e,t){return e.pipe(x(r=>r?t():R))}function ur(e,t={credentials:"same-origin"}){return ve(fetch(`${e}`,t)).pipe(ce(()=>R),x(r=>r.status!==200?Ot(()=>new Error(r.statusText)):H(r)))}function Fe(e,t){return ur(e,t).pipe(x(r=>r.json()),J(1))}function mo(e,t){let r=new DOMParser;return ur(e,t).pipe(x(n=>n.text()),l(n=>r.parseFromString(n,"text/xml")),J(1))}function pr(e){let t=_("script",{src:e});return I(()=>(document.head.appendChild(t),L(b(t,"load"),b(t,"error").pipe(x(()=>Ot(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(l(()=>{}),C(()=>document.head.removeChild(t)),Te(1))))}function ho(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function bo(){return L(b(window,"scroll",{passive:!0}),b(window,"resize",{passive:!0})).pipe(l(ho),z(ho()))}function vo(){return{width:innerWidth,height:innerHeight}}function go(){return b(window,"resize",{passive:!0}).pipe(l(vo),z(vo()))}function yo(){return Q([bo(),go()]).pipe(l(([e,t])=>({offset:e,size:t})),J(1))}function lr(e,{viewport$:t,header$:r}){let n=t.pipe(X("size")),o=Q([n,r]).pipe(l(()=>Ye(e)));return Q([r,t,o]).pipe(l(([{height:i},{offset:a,size:s},{x:f,y:c}])=>({offset:{x:a.x-f,y:a.y-c+i},size:s})))}(()=>{function e(n,o){parent.postMessage(n,o||"*")}function t(...n){return n.reduce((o,i)=>o.then(()=>new Promise(a=>{let s=document.createElement("script");s.src=i,s.onload=a,document.body.appendChild(s)})),Promise.resolve())}var r=class{constructor(n){this.url=n,this.onerror=null,this.onmessage=null,this.onmessageerror=null,this.m=a=>{a.source===this.w&&(a.stopImmediatePropagation(),this.dispatchEvent(new MessageEvent("message",{data:a.data})),this.onmessage&&this.onmessage(a))},this.e=(a,s,f,c,u)=>{if(s===this.url.toString()){let p=new ErrorEvent("error",{message:a,filename:s,lineno:f,colno:c,error:u});this.dispatchEvent(p),this.onerror&&this.onerror(p)}};let o=new EventTarget;this.addEventListener=o.addEventListener.bind(o),this.removeEventListener=o.removeEventListener.bind(o),this.dispatchEvent=o.dispatchEvent.bind(o);let i=document.createElement("iframe");i.width=i.height=i.frameBorder="0",document.body.appendChild(this.iframe=i),this.w.document.open(),this.w.document.write(` {% endblock %} {% block scripts %} - + {% for path in config.extra_javascript %} {% endfor %} {% endblock %} - {% if page.meta and page.meta.ᴴₒᴴₒᴴₒ %} - - - {% endif %} diff --git a/material/mkdocs_theme.yml b/material/mkdocs_theme.yml index ca34371471e..465d7ac2796 100644 --- a/material/mkdocs_theme.yml +++ b/material/mkdocs_theme.yml @@ -55,14 +55,6 @@ icon: # Favicon to be rendered favicon: assets/images/favicon.png -# Material includes the search in the header as a partial, not as a separate -# template, so it's correct that search.html is missing -include_search_page: false - -# Material doesn't use MkDocs search functionality but provides its own. For -# this reason, only the search index needs to be built -search_index_only: true - # Static pages to build static_templates: - 404.html diff --git a/material/partials/actions.html b/material/partials/actions.html index 2c33c02491a..eb173fa78e5 100644 --- a/material/partials/actions.html +++ b/material/partials/actions.html @@ -2,8 +2,16 @@ This file was automatically generated - do not edit -#} {% if page.edit_url %} - - {% set icon = config.theme.icon.edit or "material/pencil" %} - {% include ".icons/" ~ icon ~ ".svg" %} - + {% if "content.action.edit" in features %} + + {% set icon = config.theme.icon.edit or "material/file-edit-outline" %} + {% include ".icons/" ~ icon ~ ".svg" %} + + {% endif %} + {% if "content.action.view" in features %} + + {% set icon = config.theme.icon.view or "material/file-eye-outline" %} + {% include ".icons/" ~ icon ~ ".svg" %} + + {% endif %} {% endif %} diff --git a/material/partials/consent.html b/material/partials/consent.html index b97803b7df4..dea39bc30de 100644 --- a/material/partials/consent.html +++ b/material/partials/consent.html @@ -16,7 +16,7 @@ {% if not actions %} {% set actions = ["accept", "manage"] %} {% endif %} -{% if not "manage" in actions %} +{% if "manage" not in actions %} {% set checked = "checked" %} {% endif %}

{{ config.extra.consent.title }}

diff --git a/material/partials/content.html b/material/partials/content.html index 758be91b6b3..ff9eedfa05d 100644 --- a/material/partials/content.html +++ b/material/partials/content.html @@ -1,11 +1,11 @@ {#- This file was automatically generated - do not edit -#} -{% if "tags" in config.plugins %} +{% if "material/tags" in config.plugins %} {% include "partials/tags.html" %} {% endif %} {% include "partials/actions.html" %} -{% if not "\x3ch1" in page.content %} +{% if "\x3ch1" not in page.content %}

{{ page.title | d(config.site_name, true)}}

{% endif %} {{ page.content }} diff --git a/material/partials/feedback.html b/material/partials/feedback.html index ab4fcf232f5..2cde98c75df 100644 --- a/material/partials/feedback.html +++ b/material/partials/feedback.html @@ -32,11 +32,7 @@ {% else %} {% set title = page.title | urlencode %} {% endif %} - {% if "{}" in rating.note %} - {{ rating.note.format(url, title) }} - {% else %} - {{ rating.note.format(url = url, title = title) }} - {% endif %} + {{ rating.note.format(url = url, title = title) }} {% endfor %} diff --git a/material/partials/footer.html b/material/partials/footer.html index 597cfa237b0..9e1b23696c8 100644 --- a/material/partials/footer.html +++ b/material/partials/footer.html @@ -2,44 +2,46 @@ This file was automatically generated - do not edit -#}