From 847825a3dcd1f1bf1aac8f44a2885b331e6af525 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacek=20Pi=C4=99tal?= Date: Thu, 23 May 2024 17:08:43 +0200 Subject: [PATCH] fix: jsdoc-x url --- README.md | 4 +- docs/content/changelog.html | 2006 +++-- docs/content/home.html | 422 +- docs/content/license.html | 56 +- docs/content/readme.html | 422 +- docs/content/templates/zebra.html | 920 ++- docs/css/docma.css | 66 +- docs/index.html | 39 +- docs/js/docma-web.js | 12299 +++++++++++++++++++++++++++- package.json | 4 +- yarn.lock | 8 +- 11 files changed, 15058 insertions(+), 1188 deletions(-) diff --git a/README.md b/README.md index 020d66c..1230e95 100644 --- a/README.md +++ b/README.md @@ -99,7 +99,7 @@ See [Docma API Reference][docma-api]. ## Parsed Output -Sometimes, the issue is with invalid JSDoc comments. [See this](https://github.com/Prozi/docma/issues/55#issuecomment-437599192) for linting/validating your JSDoc while you type and within a build process. +Sometimes, the issue is with invalid JSDoc comments. [See this](https://github.com/onury/docma/issues/55#issuecomment-437599192) for linting/validating your JSDoc while you type and within a build process. To investigate the parsed JSDoc output, enable the `debug` option that will create a JSON output(s) within the root of the destination directory. If you have a problem with the parsed documentation data, open an issue @ [jsdoc-x][jsdoc-x]. _(I'm the author.)_ @@ -144,7 +144,7 @@ Emoji shortcuts used in source markdown files are parsed into [twemoji][twemoji] [docma-config]: https://prozi.github.io/docma/api/#Docma~BuildConfiguration [zebra]: https://prozi.github.io/docma/templates/zebra [jsdoc]: http://usejsdoc.org -[jsdoc-x]: https://github.com/Prozi/jsdoc-x +[jsdoc-x]: https://github.com/onury/jsdoc-x [marked]: https://github.com/chjj/marked [markdown]: https://daringfireball.net/projects/markdown [dustjs]: http://www.dustjs.com diff --git a/docs/content/changelog.html b/docs/content/changelog.html index 7049e21..8189253 100644 --- a/docs/content/changelog.html +++ b/docs/content/changelog.html @@ -1,590 +1,1454 @@ + + + +

Docma Changelog

+
+

+ All notable changes to this project will be documented in this file. + The format is based on + Keep a Changelog + and this project adheres to + Semantic Versioning. +

+

+ 3.2.4 + (2020-06-18) +

+
+

Fixed

+ +

+ 3.2.2 + (2019-01-08) +

+
+

Fixed

+ +

Added

+ +

Changed

+ +

+ 3.1.0 + (2018-12-04) +

+
+

Fixed

+ +

Added

+ +

Changed

+ +

+ 3.0.0 + (2018-11-18) +

+
+

Changed

+ +

Added

+ +

Fixed

+ +

+ 2.1.0 + (2018-04-29) +

+
+

Docma CLI

+
+

+ Thanks to @feugy for this + PR. +

+
+

Added

+ +

Fixed

+ +

Changed

+ +

+ Default Template - Zebra v2.1.0 +

+

Added

+ +

Fixed

+ +

Changed

+ +

+ 2.0.0 + (2018-04-12) +

+
+
+

+ This is a big release with some breaking changes.
Please read this changelog thoroughly before updating your + Docma configuration. +

+
+

Docma (Builder)

+

Added

+ +

Fixed

+ +

Changed

+ +

Removed

+ +

Docma CLI

+

Added

+ +

Changed

+ +

+ See CLI documentation for + detailed information on updated CLI. +

+

Docma Web Core

+

Added

+ +

Fixed

+ +

Changed

+ +

Docma Template API

+

Changed

+ +

+ Default Template - Zebra v2.0.0 +

+

Added

+ +

Fixed

+ +

Changed

+ +

Deprecated

+ +

Removed

+ +
-

Docma Changelog

-
-

All notable changes to this project will be documented in this file. The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

-

3.2.4 (2020-06-18)

-
-

Fixed

- -

3.2.2 (2019-01-08)

-
-

Fixed

- -

Added

- -

Changed

- -

3.1.0 (2018-12-04)

-
-

Fixed

- -

Added

- -

Changed

- -

3.0.0 (2018-11-18)

-
-

Changed

- -

Added

- -

Fixed

- -

2.1.0 (2018-04-29)

-
-

Docma CLI

-
-

Thanks to @feugy for this PR.

-
-

Added

- -

Fixed

- -

Changed

- -

Default Template - Zebra v2.1.0

-

Added

- -

Fixed

- -

Changed

- -

2.0.0 (2018-04-12)

-
-
-

This is a big release with some breaking changes.
Please read this changelog thoroughly before updating your Docma configuration.

-
-

Docma (Builder)

-

Added

- -

Fixed

- -

Changed

- -

Removed

- -

Docma CLI

-

Added

- -

Changed

- -

See CLI documentation for detailed information on updated CLI.

-

Docma Web Core

-

Added

- -

Fixed

- -

Changed

- -

Docma Template API

-

Changed

- -

Default Template - Zebra v2.0.0

-

Added

- -

Fixed

- -

Changed

- -

Deprecated

- -

Removed

- -
+

+ 1.5.3 + (2017-12-21) +

+
+

Docma Web Core

+

Fixed

+ +
-

1.5.3 (2017-12-21)

-
-

Docma Web Core

-

Fixed

- -
+

+ 1.5.2 + (2017-12-09) +

+
+

Docma Web Core

+

Fixed

+ +
+

+ Note: For this release, some dependencies + (such as jsdoc-x, jsdom) are NOT + updated on purpose 'cause they introduce breaking changes. + In v2 (WIP, to be released) these will be + updated and many things will be improved. +

+
+
-

1.5.2 (2017-12-09)

-
-

Docma Web Core

-

Fixed

- -
-

Note: For this release, some dependencies (such as jsdoc-x, jsdom) are NOT updated on purpose 'cause they introduce breaking changes. In v2 (WIP, to be released) these will be updated and many things will be improved.

-
-
+

+ 1.5.1 + (2017-03-11) +

+
+

Docma Web Core

+

Fixed

+ +
-

1.5.1 (2017-03-11)

-
-

Docma Web Core

-

Fixed

- -
+

+ 1.5.0 + (2017-03-10) +

+
+

Docma (Builder)

+

Added

+ +

Docma Web Core

+

Fixed

+ +

Changed

+ +

Default Template

+

Added

+ +

Changed

+ +
-

1.5.0 (2017-03-10)

-
-

Docma (Builder)

-

Added

- -

Docma Web Core

-

Fixed

- -

Changed

- -

Default Template

-

Added

- -

Changed

- -
+

+ 1.4.7 + (2017-03-09) +

+
+

Docma (Builder)

+

Fixed

+ +
-

1.4.7 (2017-03-09)

-
-

Docma (Builder)

-

Fixed

- -
+

+ 1.4.5 + (2017-03-05) +

+
+

Docma (Builder)

+

Added

+ +
-

1.4.5 (2017-03-05)

-
-

Docma (Builder)

-

Added

- -
+

+ 1.4.0 + (2017-02-13) +

+
+

Docma (Builder)

+

Fixed

+ +

Changed

+ +

Docma CLI

+

Changed

+ +

Docma Web Core

+

Fixed

+ +

Changed

+ +

Default Template

+

Fixed

+ +

Changed

+ +
-

1.4.0 (2017-02-13)

-
-

Docma (Builder)

-

Fixed

- -

Changed

- -

Docma CLI

-

Changed

- -

Docma Web Core

-

Fixed

- -

Changed

- -

Default Template

-

Fixed

- -

Changed

- -
+

+ 1.3.0 + (2016-11-23) +

+
+

Docma (Builder)

+

Added

+ +

Changed

+ +

Docma Web Core

+

Added

+ +

Changed

+ +

Default Template

+

Fixed

+ +
-

1.3.0 (2016-11-23)

-
-

Docma (Builder)

-

Added

- -

Changed

- -

Docma Web Core

-

Added

- -

Changed

- -

Default Template

-

Fixed

- -
+

+ 1.2.0 + (2016-10-31) +

+
+

Docma CLI

+

Added

+ +

Default Template

+

Changed

+ +
-

1.2.0 (2016-10-31)

-
-

Docma CLI

-

Added

- -

Default Template

-

Changed

- -
+

+ 1.1.1 + (2016-08-13) +

+
+

Default Template

+

Fixed

+ +
-

1.1.1 (2016-08-13)

-
-

Default Template

-

Fixed

- -
+

+ 1.1.0 + (2016-08-12) +

+
+

Docma (Builder)

+

Fixed

+ +

Changed

+ +

Default Template

+

Fixed

+ +

Changed

+ +
-

1.1.0 (2016-08-12)

-
-

Docma (Builder)

-

Fixed

- -

Changed

- -

Default Template

-

Fixed

- -

Changed

- -
+

+ 1.0.3 + (2016-06-27) +

+
+

Docma (Builder)

+

Added

+ +

Default Template

+

Changed

+ +
-

1.0.3 (2016-06-27)

-
-

Docma (Builder)

-

Added

- -

Default Template

-

Changed

- -
+

+ 1.0.1 + (2016-06-11) +

+
+

Docma Web Core

+
+

+ David considers + marked as + insecure dependency. This is + already + reported. +

+
+

Fixed

+ +
-

1.0.1 (2016-06-11)

-
-

Docma Web Core

-
-

David considers marked as insecure dependency. This is already reported.

-
-

Fixed

- -
+

+ 1.0.0 + (2016-06-11) +

+
+

Docma (Builder)

+

Added

+ +

Changed

+ +

Docma Web Core

+

Added

+ +

Changed

+ +

Fixed

+ +

Default Template

+

Added

+ +

Fixed

+ +

Changed

+ +

Other

+ +
-

1.0.0 (2016-06-11)

-
-

Docma (Builder)

-

Added

- -

Changed

- -

Docma Web Core

-

Added

- -

Changed

- -

Fixed

- -

Default Template

-

Added

- -

Fixed

- -

Changed

- -

Other

- -
+

Pre-Releases

+
+
-

Pre-Releases

-
-
+

0.5.4 (2016-05-22)

+
+

Added

+ +

Changed

+ +
-

0.5.4 (2016-05-22)

-
-

Added

- -

Changed

- -
+

0.5.3 (2016-05-22)

+
+

Fixed

+ +
-

0.5.3 (2016-05-22)

-
-

Fixed

- -
+

0.5.2 (2016-05-20)

+
+

Changed

+ +
-

0.5.2 (2016-05-20)

-
-

Changed

- -
- -

0.5.0 (2016-05-11)

-
- - \ No newline at end of file +

0.5.0 (2016-05-11)

+
+ + + diff --git a/docs/content/home.html b/docs/content/home.html index cd724a5..de727c9 100644 --- a/docs/content/home.html +++ b/docs/content/home.html @@ -1,70 +1,195 @@ + + + +

+ Docma +

-

- Docma -

+

+ npm + release + license + downloads + dependencies + maintained + documentation +
+ © 2019, Onur Yıldırım (@onury). +

-

- npm - release - license - downloads - dependencies - maintained - documentation -
- © 2019, Onur Yıldırım (@onury). -

+

+ A powerful tool to easily generate beautiful HTML documentation from + Javascript (JSDoc), + Markdown + and HTML files. +

+

Features

+
+ +

...like this:

+

+ Docma screen +
+
+ This is generated with the built-in template, Zebra.
+ click to view live +

-

A powerful tool to easily generate beautiful HTML documentation from Javascript (JSDoc), Markdown and HTML files.

-

Features

-
- -

...like this:

-

- Docma screen -
-
- This is generated with the built-in template, Zebra.
- click to view live -

- -

Installation

-
-
npm i @pietal.dev/docma -D
+        

Installation

+
+
npm i @pietal.dev/docma -D
 
-

Building Documentation with CLI

-
-

You can use Docma CLI to build documentations directly from your console. -Once you create the configuration file docma.json in your project root, it's quite simple.

-
docma
+        

+ Building Documentation with CLI +

+
+

+ You can use Docma CLI to build documentations directly from your + console. Once you create the configuration file + docma.json in your project root, it's quite simple. +

+
docma
 
-

You can even serve the docs locally and test.

-
docma serve
+        

You can even serve the docs locally and test.

+
docma serve
 
-

See

- -

Building Documentation Programmatically

-
-

If you need to build documentation from within your code, use the API.

-
const Docma = require("@pietal.dev/docma");
+        

See

+ +

+ Building Documentation Programmatically +

+
+

+ If you need to build documentation from within your code, use the + API. +

+
const Docma = require("@pietal.dev/docma");
 
-

Either by passing a configuration object.

-
const config = {
+        

+ Either by passing a + configuration + object. +

+
const config = {
     src: ["./code/**/*.js", "./README.md"],
     dest: "./output/doc",
 };
@@ -73,53 +198,136 @@ 

Building Documentation Programm .then((success) => console.log("Documentation is built successfully.")) .catch((error) => console.log(error));

-

Or by reading configuration from a JSON file.

-
Docma.create()
+        

+ Or by reading + configuration + from a JSON file. +

+
Docma.create()
     .build("./path/to/docma.json")
     .catch((error) => console.log(error));
 
-

See Docma API Reference.

-

Parsed Output

-
-

Sometimes, the issue is with invalid JSDoc comments. See this for linting/validating your JSDoc while you type and within a build process.

-

To investigate the parsed JSDoc output, enable the debug option that will create a JSON output(s) within the root of the destination directory. If you have a problem with the parsed documentation data, open an issue @ jsdoc-x. (I'm the author.)

-

For markdown output issues (that are not related with style), you can open an issue @ marked.

-

Changelog

-
-

See CHANGELOG.

-

Compatibility Table

- - - - - - - - - - - - - - - - - - - -
Docma versionNode version
v3.0.0v8+
v2.0.0v6+
v1.0.0v4+
-

Documentation

-
-

Read Docma documentation, built with Docma, for a Docma demo...
Also see the [F.A.Q.][docma-faq] section.

-

License

-
-

MIT. You don't have to include any copyright notice in your documentation output or templates but I'd appreciate if you let people know about this tool so we can read better documentations.

-

Emoji shortcuts used in source markdown files are parsed into twemoji. Graphics and icons licensed under CC-BY 4.0.

- -
-
    -
  • jsdoc-x — Parser for outputting a Javascript object from documented code via JSDoc's explain (-X) command.
  • -
  • marked — A full-featured markdown parser and compiler, written in JavaScript. Built for speed.
  • -
  • dustjs — Asynchronous Javascript templating for the browser and server.
  • -
- \ No newline at end of file +

+ See + Docma API Reference. +

+

Parsed Output

+
+

+ Sometimes, the issue is with invalid JSDoc comments. + See this + for linting/validating your JSDoc while you type and within a build + process. +

+

+ To investigate the parsed JSDoc output, enable the + debug option that will create a JSON output(s) within + the root of the destination directory. If you have a problem with + the parsed documentation data, open an issue @ + jsdoc-x. + (I'm the author.) +

+

+ For markdown output issues (that are not related with style), you + can open an issue @ + marked. +

+

Changelog

+
+

+ See + CHANGELOG. +

+

Compatibility Table

+ + + + + + + + + + + + + + + + + + + + + +
Docma versionNode version
+ v3.0.0 + v8+
+ v2.0.0 + v6+
+ v1.0.0 + v4+
+

Documentation

+
+

+ Read + Docma documentation, built with Docma, for a Docma demo... +
Also see the [F.A.Q.][docma-faq] section. +

+

License

+
+

+ MIT. You don't have to include any copyright notice in your + documentation output or templates but I'd appreciate if you let + people know about this tool so we can read better documentations. +

+

+ Emoji shortcuts used in source markdown files are parsed into + twemoji. Graphics + and icons licensed under + CC-BY 4.0. +

+ +
+
    +
  • + jsdoc-x — Parser + for outputting a Javascript object from documented code via + JSDoc's explain (-X) command. +
  • +
  • + marked — A + full-featured markdown parser and compiler, written in + JavaScript. Built for speed. +
  • +
  • + dustjs — + Asynchronous Javascript templating for the browser and server. +
  • +
+ + diff --git a/docs/content/license.html b/docs/content/license.html index 9393afe..aef69ce 100644 --- a/docs/content/license.html +++ b/docs/content/license.html @@ -1,20 +1,36 @@ - -

The MIT License

-

Copyright (c) 2019-2024, Onur Yıldırım onur@cutepilot.com. Maintained by -Jacek Pietal prozi85@gmail.com. All rights reserved.

-

Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE.

- \ No newline at end of file + + + +

The MIT License

+

+ Copyright (c) 2019-2024, Onur Yıldırım + onur@cutepilot.com. + Maintained by Jacek Pietal + prozi85@gmail.com. All rights + reserved. +

+

+ Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation files + (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: +

+

+ The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. +

+

+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. +

+ + diff --git a/docs/content/readme.html b/docs/content/readme.html index cd724a5..de727c9 100644 --- a/docs/content/readme.html +++ b/docs/content/readme.html @@ -1,70 +1,195 @@ + + + +

+ Docma +

-

- Docma -

+

+ npm + release + license + downloads + dependencies + maintained + documentation +
+ © 2019, Onur Yıldırım (@onury). +

-

- npm - release - license - downloads - dependencies - maintained - documentation -
- © 2019, Onur Yıldırım (@onury). -

+

+ A powerful tool to easily generate beautiful HTML documentation from + Javascript (JSDoc), + Markdown + and HTML files. +

+

Features

+
+
    +
  • + Parse JSDoc documentation, + Markdown and HTML files. +
  • +
  • + Build a cool SPA (Single Page Application) from + parsed files. +
  • +
  • + Generate multiple/separate API documentations by + grouping JS files. +
  • +
  • Path or Query-string based app routing.
  • +
  • + Non-opinionated engine, built-in template with + cool opinions. + +
  • +
  • + Supports custom templates, comes with template authoring tools. +
  • +
  • + Works great with GitHub Pages, Amazon + S3, Nginx, Apache, etc... +
  • +
  • + Build via + API + or + CLI. +
  • +
  • Extremely configurable and debuggable.
  • +
  • + Well documented. + +
  • +
+

...like this:

+

+ Docma screen +
+
+ This is generated with the built-in template, Zebra.
+ click to view live +

-

A powerful tool to easily generate beautiful HTML documentation from Javascript (JSDoc), Markdown and HTML files.

-

Features

-
-
    -
  • Parse JSDoc documentation, Markdown and HTML files.
  • -
  • Build a cool SPA (Single Page Application) from parsed files.
  • -
  • Generate multiple/separate API documentations by grouping JS files.
  • -
  • Path or Query-string based app routing.
  • -
  • Non-opinionated engine, built-in template with cool opinions.
  • -
  • Supports custom templates, comes with template authoring tools.
  • -
  • Works great with GitHub Pages, Amazon S3, Nginx, Apache, etc...
  • -
  • Build via API or CLI.
  • -
  • Extremely configurable and debuggable.
  • -
  • Well documented.
  • -
-

...like this:

-

- Docma screen -
-
- This is generated with the built-in template, Zebra.
- click to view live -

- -

Installation

-
-
npm i @pietal.dev/docma -D
+        

Installation

+
+
npm i @pietal.dev/docma -D
 
-

Building Documentation with CLI

-
-

You can use Docma CLI to build documentations directly from your console. -Once you create the configuration file docma.json in your project root, it's quite simple.

-
docma
+        

+ Building Documentation with CLI +

+
+

+ You can use Docma CLI to build documentations directly from your + console. Once you create the configuration file + docma.json in your project root, it's quite simple. +

+
docma
 
-

You can even serve the docs locally and test.

-
docma serve
+        

You can even serve the docs locally and test.

+
docma serve
 
-

See

- -

Building Documentation Programmatically

-
-

If you need to build documentation from within your code, use the API.

-
const Docma = require("@pietal.dev/docma");
+        

See

+ +

+ Building Documentation Programmatically +

+
+

+ If you need to build documentation from within your code, use the + API. +

+
const Docma = require("@pietal.dev/docma");
 
-

Either by passing a configuration object.

-
const config = {
+        

+ Either by passing a + configuration + object. +

+
const config = {
     src: ["./code/**/*.js", "./README.md"],
     dest: "./output/doc",
 };
@@ -73,53 +198,136 @@ 

Building Documentation Programm .then((success) => console.log("Documentation is built successfully.")) .catch((error) => console.log(error));

-

Or by reading configuration from a JSON file.

-
Docma.create()
+        

+ Or by reading + configuration + from a JSON file. +

+
Docma.create()
     .build("./path/to/docma.json")
     .catch((error) => console.log(error));
 
-

See Docma API Reference.

-

Parsed Output

-
-

Sometimes, the issue is with invalid JSDoc comments. See this for linting/validating your JSDoc while you type and within a build process.

-

To investigate the parsed JSDoc output, enable the debug option that will create a JSON output(s) within the root of the destination directory. If you have a problem with the parsed documentation data, open an issue @ jsdoc-x. (I'm the author.)

-

For markdown output issues (that are not related with style), you can open an issue @ marked.

-

Changelog

-
-

See CHANGELOG.

-

Compatibility Table

- - - - - - - - - - - - - - - - - - - -
Docma versionNode version
v3.0.0v8+
v2.0.0v6+
v1.0.0v4+
-

Documentation

-
-

Read Docma documentation, built with Docma, for a Docma demo...
Also see the [F.A.Q.][docma-faq] section.

-

License

-
-

MIT. You don't have to include any copyright notice in your documentation output or templates but I'd appreciate if you let people know about this tool so we can read better documentations.

-

Emoji shortcuts used in source markdown files are parsed into twemoji. Graphics and icons licensed under CC-BY 4.0.

- -
-
    -
  • jsdoc-x — Parser for outputting a Javascript object from documented code via JSDoc's explain (-X) command.
  • -
  • marked — A full-featured markdown parser and compiler, written in JavaScript. Built for speed.
  • -
  • dustjs — Asynchronous Javascript templating for the browser and server.
  • -
- \ No newline at end of file +

+ See + Docma API Reference. +

+

Parsed Output

+
+

+ Sometimes, the issue is with invalid JSDoc comments. + See this + for linting/validating your JSDoc while you type and within a build + process. +

+

+ To investigate the parsed JSDoc output, enable the + debug option that will create a JSON output(s) within + the root of the destination directory. If you have a problem with + the parsed documentation data, open an issue @ + jsdoc-x. + (I'm the author.) +

+

+ For markdown output issues (that are not related with style), you + can open an issue @ + marked. +

+

Changelog

+
+

+ See + CHANGELOG. +

+

Compatibility Table

+ + + + + + + + + + + + + + + + + + + + + +
Docma versionNode version
+ v3.0.0 + v8+
+ v2.0.0 + v6+
+ v1.0.0 + v4+
+

Documentation

+
+

+ Read + Docma documentation, built with Docma, for a Docma demo... +
Also see the [F.A.Q.][docma-faq] section. +

+

License

+
+

+ MIT. You don't have to include any copyright notice in your + documentation output or templates but I'd appreciate if you let + people know about this tool so we can read better documentations. +

+

+ Emoji shortcuts used in source markdown files are parsed into + twemoji. Graphics + and icons licensed under + CC-BY 4.0. +

+ +
+
    +
  • + jsdoc-x — Parser + for outputting a Javascript object from documented code via + JSDoc's explain (-X) command. +
  • +
  • + marked — A + full-featured markdown parser and compiler, written in + JavaScript. Built for speed. +
  • +
  • + dustjs — + Asynchronous Javascript templating for the browser and server. +
  • +
+ + diff --git a/docs/content/templates/zebra.html b/docs/content/templates/zebra.html index 1371d35..44a2a5b 100644 --- a/docs/content/templates/zebra.html +++ b/docs/content/templates/zebra.html @@ -1,324 +1,554 @@ + + + +

+ Zebra — Template for Docma +

+
-

- Zebra — Template for Docma -

-
+

+ This is the default template for + Docma; with a side-bar + symbols menu, search and navigation features; and a beautiful + layout.

+

+

+ Built with Docma using Zebra Template +
+ click to view live +

-

This is the default template for Docma; with a side-bar symbols menu, search and navigation features; and a beautiful layout. -

-

-Built with Docma using Zebra Template -
-click to view live -

+

Usage

+
+
    +
  1. + Make sure you have the latest + Docma installed. +
  2. +
  3. + Although Zebra is installed together with Docma, you can still + install/update this template via npm: + npm i docma-template-zebra -D +
  4. +
  5. + Set template.path to "default" or + "zebra" or omit it in your build configuration + (docma.json). +
  6. +
  7. + Configure and set template.options as described + below. +
  8. +
+

Template Options

+
+

+ Template specific options that can be used when building your + documentation with Zebra. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OptionTypeDescription
+ title + String|Object + Title to be set both on the navbar and sidebar. If you + want to set a link for these titles, pass an object. + Default: ""
+ Note: Don't confuse this with document title (tag) + which is set via app.title in the build + configuration. +
+ ↳ title.label + String + Title to be set both on navbar and sidebar. Default: + "" +
+ ↳ title.href + String + Link to be set for both navbar and sidebar titles. + Default: "#" +
+ logo + String|Object + URL of your logo to be used both in the sidebar and + navbar, on the left of the title. If you need to set + separate logos for dark (sidebar) and light (navbar) + backgrounds, set this to an object. + Recommended size of a logo image is 120 x 120 + pixels. + Default: null +
+ ↳ logo.dark + StringURL for dark logo. Default: null
+ ↳ logo.light + StringURL for light logo. Default: null
+ sidebar + Object|Boolean + Contains settings for the sidebar that lists the + documentation symbols; as an outline menu. To simply + toggle this with default settings, pass a boolean. For + detailed configuration pass an object. Default: + true +
+ ↳ sidebar.enabled + Boolean + Whether to the sidebar should be visible/enabled... + Default: true +
+ ↳ sidebar.collapsed + Boolean + Whether to collapse the sidebar initially by default, on + document load. Default: false +
+ ↳ sidebar.outline + String + Indicates the outline style for the sidebar symbols. If + set to "flat" symbols are listed with their + long names. If set to "tree", symbols are + listed with their short names; as an indented tree, + depending on their hierarchical position. Default: + "tree" +
+ ↳ sidebar.toolbar + Boolean + Whether the toolbar below the sidebar search-box should + be shown. This toolbar provides buttons for switching + between outlines, quick-filtering symbols by + symbol-kind, etc... Default: true +
+ ↳ sidebar.itemsFolded + Boolean + Indicates whether to initially fold symbol items with + child members, in the sidebar. Default: + false +
+ ↳ sidebar.itemsOverflow + String + Specifies how to fit overflowing sidebar items. Either + set to "crop" (crops the item and reveals + on hover), or "shrink" (decreases font-size + until it fits). Default: "crop" +
+ ↳ sidebar.animations + Boolean + Whether CSS transitions and animations are enabled for + sidebar and listed symbols. Default: true +
+ ↳ sidebar.badges + Boolean|String + Whether to show symbol badges (that indicate member type + and symbol scope) within the sidebar. If set to false, + will be used as bullets, instead of + badges. Or you can set a string for custom bullets. + Default: true +
+ ↳ sidebar.search + Boolean + Whether to enable the search box within the sidebar. For + this to be visible, sidebar should be enabled. Default: + true +
+ symbols + Object + Contains settings for symbol definition documentation. + Default: {} +
+ ↳ symbols.autoLink + Boolean|String + Specifies whether documented types should be auto-linked + to their sources. Set to "internal" paths + (i.e. Docma route if type/object definition is within + the generated docs) or "external" (MDN docs + if it's a JS or Web-API built-in type/object); or + true for both. Default: true +
+ ↳ symbols.meta + Boolean + Whether to add meta information at the end of each + symbol documentation such as code file name and line + number. Default: false +
+ ↳ symbols.params + String + Specifies the layout style for documented parameters of + a symbol. Possible values are "list" or + "table". Default: "list" +
+ ↳ symbols.props + String + Specifies the layout style for documented properties of + a symbol. Possible values are "list" or + "table". Default: "list" +
+ ↳ symbols.enums + String + Specifies the layout style for documented properties of + an enumeration symbol. Possible values are + "list" or "table". Default: + "list" +
+ contentView + Object + Contains settings for content view, which is generated + from markdown or HTML files. +
+ ↳ contentView.bookmarks + Boolean|String + Whether to automatically add bookmark links for + headings. In order to customize the list of heading + tags, set to a comma separated tag name list. e.g. + "h1,h2". Default: false +
+ ↳ contentView.faLibs + String|Array + FontAwesome + icon libraries to be included with the generated output. + Set to "all" to include all libraries. To + include an individual library; set to + "solid", "regular" or + "brands". Or you can set to a combination + of libraries. e.g. "solid,brands". Set to + null to exclude FontAwesome from the + output. Default: "all" +
+ ↳ contentView.faVersion + String + FontAwesome icon library version to be used. Default: + "5.5.0" +
+ navbar + Object|Boolean + Contains settings for the navigation bar on top of the + main document. This is useful if you have extra views to + navigate to. To simply toggle this with default + settings, pass a boolean. For detailed configuration + pass an object. Default: {} +
+ ↳ navbar.enabled + Boolean + Whether to the navbar should be visible/enabled... + Default: true +
+ ↳ navbar.fixed + Boolean + Whether navbar should be fixed to top of the page. + Default: true +
+ ↳ navbar.dark + Boolean + Whether to enable dark theme on navbar. Default: + false + Note: If this is enabled, you don't need to set + path for a dark logo. +
+ ↳ navbar.animations + Boolean + Whether CSS transitions and animations are enabled for + navbar and listed symbols. Default: true +
+ ↳ navbar.menu + Array + List of navigation menu items that builds the navbar and + submenu items. See + Navigation Menu below. + Default: [] +
-

Usage

-
-
    -
  1. Make sure you have the latest Docma installed.
  2. -
  3. Although Zebra is installed together with Docma, you can still install/update this template via npm: npm i docma-template-zebra -D
  4. -
  5. Set template.path to "default" or "zebra" or omit it in your build configuration (docma.json).
  6. -
  7. Configure and set template.options as described below.
  8. -
-

Template Options

-
-

Template specific options that can be used when building your documentation with Zebra.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
OptionTypeDescription
titleString|Object - Title to be set both on the navbar and sidebar. If you want to set a link for these titles, pass an object. Default: ""
Note: Don't confuse this with document title (tag) which is set via app.title in the build configuration. -
↳ title.labelString - Title to be set both on navbar and sidebar. Default: "" -
↳ title.hrefString - Link to be set for both navbar and sidebar titles. Default: "#" -
logoString|Object - URL of your logo to be used both in the sidebar and navbar, on the left of the title. If you need to set separate logos for dark (sidebar) and light (navbar) backgrounds, set this to an object. Recommended size of a logo image is 120 x 120 pixels. Default: null -
↳ logo.darkString - URL for dark logo. Default: null -
↳ logo.lightString - URL for light logo. Default: null -
sidebarObject|Boolean - Contains settings for the sidebar that lists the documentation symbols; as an outline menu. To simply toggle this with default settings, pass a boolean. For detailed configuration pass an object. Default: true -
↳ sidebar.enabledBoolean - Whether to the sidebar should be visible/enabled... Default: true -
↳ sidebar.collapsedBoolean - Whether to collapse the sidebar initially by default, on document load. Default: false -
↳ sidebar.outlineString - Indicates the outline style for the sidebar symbols. If set to "flat" symbols are listed with their long names. If set to "tree", symbols are listed with their short names; as an indented tree, depending on their hierarchical position. Default: "tree" -
↳ sidebar.toolbarBoolean - Whether the toolbar below the sidebar search-box should be shown. This toolbar provides buttons for switching between outlines, quick-filtering symbols by symbol-kind, etc... Default: true -
↳ sidebar.itemsFoldedBoolean - Indicates whether to initially fold symbol items with child members, in the sidebar. Default: false -
↳ sidebar.itemsOverflowString - Specifies how to fit overflowing sidebar items. Either set to "crop" (crops the item and reveals on hover), or "shrink" (decreases font-size until it fits). Default: "crop" -
↳ sidebar.animationsBoolean - Whether CSS transitions and animations are enabled for sidebar and listed symbols. Default: true -
↳ sidebar.badgesBoolean|String - Whether to show symbol badges (that indicate member type and symbol scope) within the sidebar. If set to false, will be used as bullets, instead of badges. Or you can set a string for custom bullets. Default: true -
↳ sidebar.searchBoolean - Whether to enable the search box within the sidebar. For this to be visible, sidebar should be enabled. Default: true -
symbolsObject - Contains settings for symbol definition documentation. Default: {} -
↳ symbols.autoLinkBoolean|String - Specifies whether documented types should be auto-linked to their sources. Set to "internal" paths (i.e. Docma route if type/object definition is within the generated docs) or "external" (MDN docs if it's a JS or Web-API built-in type/object); or true for both. Default: true -
↳ symbols.metaBoolean - Whether to add meta information at the end of each symbol documentation such as code file name and line number. Default: false -
↳ symbols.paramsString - Specifies the layout style for documented parameters of a symbol. Possible values are "list" or "table". Default: "list" -
↳ symbols.propsString - Specifies the layout style for documented properties of a symbol. Possible values are "list" or "table". Default: "list" -
↳ symbols.enumsString - Specifies the layout style for documented properties of an enumeration symbol. Possible values are "list" or "table". Default: "list" -
contentViewObject - Contains settings for content view, which is generated from markdown or HTML files. -
↳ contentView.bookmarksBoolean|String - Whether to automatically add bookmark links for headings. In order to customize the list of heading tags, set to a comma separated tag name list. e.g. "h1,h2". Default: false -
↳ contentView.faLibsString|Array - FontAwesome icon libraries to be included with the generated output. Set to "all" to include all libraries. To include an individual library; set to "solid", "regular" or "brands". Or you can set to a combination of libraries. e.g. "solid,brands". Set to null to exclude FontAwesome from the output. Default: "all" -
↳ contentView.faVersionString - FontAwesome icon library version to be used. Default: "5.5.0" -
navbarObject|Boolean - Contains settings for the navigation bar on top of the main document. This is useful if you have extra views to navigate to. To simply toggle this with default settings, pass a boolean. For detailed configuration pass an object. Default: {} -
↳ navbar.enabledBoolean - Whether to the navbar should be visible/enabled... Default: true -
↳ navbar.fixedBoolean - Whether navbar should be fixed to top of the page. Default: true -
↳ navbar.darkBoolean - Whether to enable dark theme on navbar. Default: false Note: If this is enabled, you don't need to set path for a dark logo. -
↳ navbar.animationsBoolean - Whether CSS transitions and animations are enabled for navbar and listed symbols. Default: true -
↳ navbar.menuArray - List of navigation menu items that builds the navbar and submenu items. See Navigation Menu below. Default: [] -
+ +

+ Linked labels that build the navigation menu on the top bar of the + document. Each item is an arbitrary Object with the + following properties. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyTypeDescription
+ label + String + Label of the navigation item. Try keeping this short. + Default: "" +
+ href + String + Sets the link of the navigation item. Either a bookmark, + a relative or external link. Default: "#" +
+ target + String + Sets the anchor target option. e.g. + "_blank" to open the link in new/blank + page. Default: undefined +
+ iconClass + String + One of FontAwsome (v5) Free icon CSS classes. e.g. + "fab fa-github". You can combine this with + a class that define the size of the icon such as + "fab fa-github fa-w-16". See + this + on how to use FontAwsome v5 icons for details. Default: + undefined +
+ chevron + Boolean + Toggles the visibility of the dropdown arrow for the + corresponding item. Default: true +
+ items + Array + Sub-items for this navigation item. You can use + label, href and + target options. You can also use an + additional separator option, which places a + horizontal line within the submenu. e.g. + { separator: true }. Default: + undefined +
- -

Linked labels that build the navigation menu on the top bar of the document. Each item is an arbitrary Object with the following properties.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropertyTypeDescription
labelString - Label of the navigation item. Try keeping this short. Default: "" -
hrefString - Sets the link of the navigation item. Either a bookmark, a relative or external link. Default: "#" -
targetString - Sets the anchor target option. e.g. "_blank" to open the link in new/blank page. Default: undefined -
iconClassString - One of FontAwsome (v5) Free icon CSS classes. e.g. "fab fa-github". You can combine this with a class that define the size of the icon such as "fab fa-github fa-w-16". See this on how to use FontAwsome v5 icons for details. Default: undefined -
chevronBoolean - Toggles the visibility of the dropdown arrow for the corresponding item. Default: true -
itemsArray - Sub-items for this navigation item. You can use label, href and target options. You can also use an additional separator option, which places a horizontal line within the submenu. e.g. { separator: true }. Default: undefined -
- -

Usage with Docma

-
-

Template options are defined within the build configuration. i.e. in a docma.json file.

-
{
+        

Usage with Docma

+
+

+ Template options are defined within the + build configuration. i.e. in a docma.json file. +

+
{
     "template": {
         // Docma Template to be used.
         // Either a path, module name or "default"
@@ -399,8 +629,11 @@ 

Usage with Docma

// src, dest, app, jsdoc, markdown, debug, etc... }
-

Then you can build your documentation with these customized template options.

-
Docma.create()
+        

+ Then you can build your documentation with these customized template + options. +

+
Docma.create()
     .build("path/to/docma.json")
     .then(() => {
         console.log("Documentation is built successfully.");
@@ -409,14 +642,43 @@ 

Usage with Docma

console.log(err); });
-

...or build via CLI:

-
docma -c path/to/docma.json
+        

...or build via CLI:

+
docma -c path/to/docma.json
 
-

Changelog

-
-

See CHANGELOG.
Note: If you're upgrading from Zebra v1.x to v2.x, there are some breaking changes.

-

License

-
-

MIT.

-

Emoji shortcuts used in source markdown files are parsed into twemoji. Graphics and icons licensed under CC-BY 4.0. See FontAwesome license.

- \ No newline at end of file +

Changelog

+
+

+ See + CHANGELOG.
Note: If you're upgrading from Zebra v1.x to v2.x, there are + some + breaking changes. +

+

License

+
+

+ MIT. +

+

+ Emoji shortcuts used in source markdown files are parsed into + twemoji. Graphics + and icons licensed under + CC-BY 4.0. + See FontAwesome + license. +

+ + diff --git a/docs/css/docma.css b/docs/css/docma.css index fb483f8..feb0ed3 100644 --- a/docs/css/docma.css +++ b/docs/css/docma.css @@ -1 +1,65 @@ -img.docma{display:inline-block;border:0 none}img.docma.emoji,img.docma.emoji-sm,img.docma.emoji-1x{height:1em;width:1em;margin:0 .05em 0 .1em;vertical-align:-0.1em}img.docma.emoji-md{height:1.33em;width:1.33em;margin:0 .0665em 0 .133em;vertical-align:-0.133em}img.docma.emoji-lg{height:1.66em;width:1.66em;margin:0 .083em 0 .166em;vertical-align:-0.166em}img.docma .emoji-2x{height:2em;width:2em;margin:0 .1em 0 .2em;vertical-align:-0.2em}img.docma .emoji-3x{height:3em;width:3em;margin:0 .15em 0 .3em;vertical-align:-0.3em}img.docma .emoji-4x{height:4em;width:4em;margin:0 .2em 0 .4em;vertical-align:-0.4em}img.docma .emoji-5x{height:5em;width:5em;margin:0 .25em 0 .5em;vertical-align:-0.5em}ul.docma.task-list{list-style:none;padding-left:0;margin-left:0}ul.docma.task-list>li.docma.task-item{padding-left:0;margin-left:0}.docma-hide,.docma-ignore{position:absolute !important;display:none !important;visibility:hidden !important;opacity:0 !important;margin-right:2000px} \ No newline at end of file +img.docma { + display: inline-block; + border: 0 none; +} +img.docma.emoji, +img.docma.emoji-sm, +img.docma.emoji-1x { + height: 1em; + width: 1em; + margin: 0 0.05em 0 0.1em; + vertical-align: -0.1em; +} +img.docma.emoji-md { + height: 1.33em; + width: 1.33em; + margin: 0 0.0665em 0 0.133em; + vertical-align: -0.133em; +} +img.docma.emoji-lg { + height: 1.66em; + width: 1.66em; + margin: 0 0.083em 0 0.166em; + vertical-align: -0.166em; +} +img.docma .emoji-2x { + height: 2em; + width: 2em; + margin: 0 0.1em 0 0.2em; + vertical-align: -0.2em; +} +img.docma .emoji-3x { + height: 3em; + width: 3em; + margin: 0 0.15em 0 0.3em; + vertical-align: -0.3em; +} +img.docma .emoji-4x { + height: 4em; + width: 4em; + margin: 0 0.2em 0 0.4em; + vertical-align: -0.4em; +} +img.docma .emoji-5x { + height: 5em; + width: 5em; + margin: 0 0.25em 0 0.5em; + vertical-align: -0.5em; +} +ul.docma.task-list { + list-style: none; + padding-left: 0; + margin-left: 0; +} +ul.docma.task-list > li.docma.task-item { + padding-left: 0; + margin-left: 0; +} +.docma-hide, +.docma-ignore { + position: absolute !important; + display: none !important; + visibility: hidden !important; + opacity: 0 !important; + margin-right: 2000px; +} diff --git a/docs/index.html b/docs/index.html index f7a9a8a..9f8171f 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,19 +1,25 @@ - + - - - Docma Documentation - - - - + + + Docma Documentation + + + + - - + + - - - + + + @@ -21,8 +27,5 @@
- - - - - \ No newline at end of file + + diff --git a/docs/js/docma-web.js b/docs/js/docma-web.js index 351f9f6..8f45527 100644 --- a/docs/js/docma-web.js +++ b/docs/js/docma-web.js @@ -1,49 +1,12294 @@ /*! dustjs-linkedin - v3.0.0 -* http://dustjs.com/ -* Copyright (c) 2021 Aleksander Williams; Released under the MIT License */ -!function(a,b){"function"==typeof define&&define.amd&&define.amd.dust===!0?define("dust.core",[],b):"object"==typeof exports?module.exports=b():a.dust=b()}(this,function(){function getTemplate(a,b){if(a)return"function"==typeof a&&a.template?a.template:dust.isTemplateFn(a)?a:b!==!1?dust.cache[a]:void 0}function load(a,b,c){if(!a)return b.setError(new Error("No template or template name provided to render"));var d=getTemplate(a,dust.config.cache);return d?d(b,Context.wrap(c,d.templateName)):dust.onLoad?b.map(function(b){function d(a,d){var f;if(a)return b.setError(a);if(f=getTemplate(d,!1)||getTemplate(e,dust.config.cache),!f){if(!dust.compile)return b.setError(new Error("Dust compiler not available"));f=dust.loadSource(dust.compile(d,e))}f(b,Context.wrap(c,f.templateName)).end()}var e=a;3===dust.onLoad.length?dust.onLoad(e,c.options,d):dust.onLoad(e,d)}):b.setError(new Error("Template Not Found: "+a))}function Context(a,b,c,d,e){void 0===a||a instanceof Stack||(a=new Stack(a)),this.stack=a,this.global=b,this.options=c,this.blocks=d,this.templateName=e,this._isContext=!0}function getWithResolvedData(a,b,c){return function(d){return a.push(d)._get(b,c)}}function Stack(a,b,c,d){this.tail=b,this.isObject=a&&"object"==typeof a,this.head=a,this.index=c,this.of=d}function Stub(a){this.head=new Chunk(this),this.callback=a,this.out=""}function Stream(){this.head=new Chunk(this)}function Chunk(a,b,c){this.root=a,this.next=b,this.data=[],this.flushable=!1,this.taps=c}function mapThenable(a,b,c,d,e){return a.map(function(a){b.then(function(b){try{e(a,b)}catch(c){dust.log(c,ERROR),a.setError(c)}},function(b){dust.log("Unhandled promise rejection in `"+c.getTemplateName()+"`",INFO),a.renderError(b,c,d).end()})})}function Tap(a,b){this.head=a,this.tail=b}var dust={version:"3.0.0"},NONE="NONE",ERROR="ERROR",WARN="WARN",INFO="INFO",DEBUG="DEBUG",EMPTY_FUNC=function(){};dust.config={whitespace:!1,amd:!1,cjs:!1,cache:!0},dust._aliases={write:"w",end:"e",map:"m",render:"r",reference:"f",section:"s",exists:"x",notexists:"nx",block:"b",partial:"p",helper:"h"},function(){var a,b,c={DEBUG:0,INFO:1,WARN:2,ERROR:3,NONE:4};"undefined"!=typeof console&&console.log?(a=console.log,b="function"==typeof a?function(){a.apply(console,arguments)}:function(){a(Array.prototype.slice.apply(arguments).join(" "))}):b=EMPTY_FUNC,dust.log=function(a,d){d=d||INFO,c[d]>=c[dust.debugLevel]&&(b("[DUST:"+d+"]",a),d===ERROR&&dust.debugLevel===DEBUG&&a instanceof Error&&a.stack&&b("[DUST:"+d+"]",a.stack))},dust.debugLevel=NONE,"undefined"!=typeof process&&process.env&&/\bdust\b/.test(process.env.DEBUG)&&(dust.debugLevel=DEBUG)}(),dust.helpers={},dust.cache={},dust.register=function(a,b){a&&(b.templateName=a,dust.config.cache!==!1&&(dust.cache[a]=b))},dust.render=function(a,b,c){var d=new Stub(c).head;try{load(a,d,b).end()}catch(e){d.setError(e)}},dust.stream=function(a,b){var c=new Stream,d=c.head;return dust.nextTick(function(){try{load(a,d,b).end()}catch(c){d.setError(c)}}),c},dust.loadSource=function(source){return eval(source)},Array.isArray?dust.isArray=Array.isArray:dust.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)},dust.nextTick=function(){return function(a){setTimeout(a,0)}}(),dust.isEmpty=function(a){return 0!==a&&(!(!dust.isArray(a)||a.length)||!a)},dust.isEmptyObject=function(a){var b;if(null===a)return!1;if(void 0===a)return!1;if(a.length>0)return!1;for(b in a)if(Object.prototype.hasOwnProperty.call(a,b))return!1;return!0},dust.isTemplateFn=function(a){return"function"==typeof a&&a.__dustBody},dust.isThenable=function(a){return a&&("object"==typeof a||"function"==typeof a)&&"function"==typeof a.then},dust.isNonThenableFunction=function(a){return"function"==typeof a&&!dust.isThenable(a)},dust.isStreamable=function(a){return a&&"function"==typeof a.on&&"function"==typeof a.pipe},dust.filter=function(a,b,c,d){var e,f,g,h;if(c)for(e=0,f=c.length;e0){for(g=b.stack&&b.stack.head||{},g.$len=f,e=0;e"']/,AMP=/&/g,LT=//g,QUOT=/\"/g,SQUOT=/\'/g;dust.escapeHtml=function(a){return"string"==typeof a||a&&"function"==typeof a.toString?("string"!=typeof a&&(a=a.toString()),HCHARS.test(a)?a.replace(AMP,"&").replace(LT,"<").replace(GT,">").replace(QUOT,""").replace(SQUOT,"'"):a):a};var BS=/\\/g,FS=/\//g,CR=/\r/g,LS=/\u2028/g,PS=/\u2029/g,NL=/\n/g,LF=/\f/g,SQ=/'/g,DQ=/"/g,TB=/\t/g;return dust.escapeJs=function(a){return"string"==typeof a?a.replace(BS,"\\\\").replace(FS,"\\/").replace(DQ,'\\"').replace(SQ,"\\'").replace(CR,"\\r").replace(LS,"\\u2028").replace(PS,"\\u2029").replace(NL,"\\n").replace(LF,"\\f").replace(TB,"\\t"):a},dust.escapeJSON=function(a){return JSON?JSON.stringify(a).replace(LS,"\\u2028").replace(PS,"\\u2029").replace(LT,"\\u003c"):(dust.log("JSON is undefined; could not escape `"+a+"`",WARN),a)},dust}),"function"==typeof define&&define.amd&&define.amd.dust===!0&&define(["require","dust.core"],function(require,dust){return dust.onLoad=function(a,b){require([a],function(a){b(null,a)})},dust}); + * http://dustjs.com/ + * Copyright (c) 2021 Aleksander Williams; Released under the MIT License */ +!(function (a, b) { + "function" == typeof define && define.amd && define.amd.dust === !0 + ? define("dust.core", [], b) + : "object" == typeof exports + ? (module.exports = b()) + : (a.dust = b()); +})(this, function () { + function getTemplate(a, b) { + if (a) + return "function" == typeof a && a.template + ? a.template + : dust.isTemplateFn(a) + ? a + : b !== !1 + ? dust.cache[a] + : void 0; + } + function load(a, b, c) { + if (!a) + return b.setError( + new Error("No template or template name provided to render"), + ); + var d = getTemplate(a, dust.config.cache); + return d + ? d(b, Context.wrap(c, d.templateName)) + : dust.onLoad + ? b.map(function (b) { + function d(a, d) { + var f; + if (a) return b.setError(a); + if ( + ((f = + getTemplate(d, !1) || + getTemplate(e, dust.config.cache)), + !f) + ) { + if (!dust.compile) + return b.setError( + new Error("Dust compiler not available"), + ); + f = dust.loadSource(dust.compile(d, e)); + } + f(b, Context.wrap(c, f.templateName)).end(); + } + var e = a; + 3 === dust.onLoad.length + ? dust.onLoad(e, c.options, d) + : dust.onLoad(e, d); + }) + : b.setError(new Error("Template Not Found: " + a)); + } + function Context(a, b, c, d, e) { + void 0 === a || a instanceof Stack || (a = new Stack(a)), + (this.stack = a), + (this.global = b), + (this.options = c), + (this.blocks = d), + (this.templateName = e), + (this._isContext = !0); + } + function getWithResolvedData(a, b, c) { + return function (d) { + return a.push(d)._get(b, c); + }; + } + function Stack(a, b, c, d) { + (this.tail = b), + (this.isObject = a && "object" == typeof a), + (this.head = a), + (this.index = c), + (this.of = d); + } + function Stub(a) { + (this.head = new Chunk(this)), (this.callback = a), (this.out = ""); + } + function Stream() { + this.head = new Chunk(this); + } + function Chunk(a, b, c) { + (this.root = a), + (this.next = b), + (this.data = []), + (this.flushable = !1), + (this.taps = c); + } + function mapThenable(a, b, c, d, e) { + return a.map(function (a) { + b.then( + function (b) { + try { + e(a, b); + } catch (c) { + dust.log(c, ERROR), a.setError(c); + } + }, + function (b) { + dust.log( + "Unhandled promise rejection in `" + + c.getTemplateName() + + "`", + INFO, + ), + a.renderError(b, c, d).end(); + }, + ); + }); + } + function Tap(a, b) { + (this.head = a), (this.tail = b); + } + var dust = { version: "3.0.0" }, + NONE = "NONE", + ERROR = "ERROR", + WARN = "WARN", + INFO = "INFO", + DEBUG = "DEBUG", + EMPTY_FUNC = function () {}; + (dust.config = { whitespace: !1, amd: !1, cjs: !1, cache: !0 }), + (dust._aliases = { + write: "w", + end: "e", + map: "m", + render: "r", + reference: "f", + section: "s", + exists: "x", + notexists: "nx", + block: "b", + partial: "p", + helper: "h", + }), + (function () { + var a, + b, + c = { DEBUG: 0, INFO: 1, WARN: 2, ERROR: 3, NONE: 4 }; + "undefined" != typeof console && console.log + ? ((a = console.log), + (b = + "function" == typeof a + ? function () { + a.apply(console, arguments); + } + : function () { + a( + Array.prototype.slice + .apply(arguments) + .join(" "), + ); + })) + : (b = EMPTY_FUNC), + (dust.log = function (a, d) { + (d = d || INFO), + c[d] >= c[dust.debugLevel] && + (b("[DUST:" + d + "]", a), + d === ERROR && + dust.debugLevel === DEBUG && + a instanceof Error && + a.stack && + b("[DUST:" + d + "]", a.stack)); + }), + (dust.debugLevel = NONE), + "undefined" != typeof process && + process.env && + /\bdust\b/.test(process.env.DEBUG) && + (dust.debugLevel = DEBUG); + })(), + (dust.helpers = {}), + (dust.cache = {}), + (dust.register = function (a, b) { + a && + ((b.templateName = a), + dust.config.cache !== !1 && (dust.cache[a] = b)); + }), + (dust.render = function (a, b, c) { + var d = new Stub(c).head; + try { + load(a, d, b).end(); + } catch (e) { + d.setError(e); + } + }), + (dust.stream = function (a, b) { + var c = new Stream(), + d = c.head; + return ( + dust.nextTick(function () { + try { + load(a, d, b).end(); + } catch (c) { + d.setError(c); + } + }), + c + ); + }), + (dust.loadSource = function (source) { + return eval(source); + }), + Array.isArray + ? (dust.isArray = Array.isArray) + : (dust.isArray = function (a) { + return "[object Array]" === Object.prototype.toString.call(a); + }), + (dust.nextTick = (function () { + return function (a) { + setTimeout(a, 0); + }; + })()), + (dust.isEmpty = function (a) { + return 0 !== a && (!(!dust.isArray(a) || a.length) || !a); + }), + (dust.isEmptyObject = function (a) { + var b; + if (null === a) return !1; + if (void 0 === a) return !1; + if (a.length > 0) return !1; + for (b in a) + if (Object.prototype.hasOwnProperty.call(a, b)) return !1; + return !0; + }), + (dust.isTemplateFn = function (a) { + return "function" == typeof a && a.__dustBody; + }), + (dust.isThenable = function (a) { + return ( + a && + ("object" == typeof a || "function" == typeof a) && + "function" == typeof a.then + ); + }), + (dust.isNonThenableFunction = function (a) { + return "function" == typeof a && !dust.isThenable(a); + }), + (dust.isStreamable = function (a) { + return ( + a && "function" == typeof a.on && "function" == typeof a.pipe + ); + }), + (dust.filter = function (a, b, c, d) { + var e, f, g, h; + if (c) + for (e = 0, f = c.length; e < f; e++) + (g = c[e]), + g.length && + ((h = dust.filters[g]), + "s" === g + ? (b = null) + : "function" == typeof h + ? (a = h(a, d)) + : dust.log( + "Invalid filter `" + g + "`", + WARN, + )); + return b && (a = dust.filters[b](a, d)), a; + }), + (dust.filters = { + h: function (a) { + return dust.escapeHtml(a); + }, + j: function (a) { + return dust.escapeJs(a); + }, + u: encodeURI, + uc: encodeURIComponent, + js: function (a) { + return dust.escapeJSON(a); + }, + jp: function (a) { + return JSON + ? JSON.parse(a) + : (dust.log( + "JSON is undefined; could not parse `" + a + "`", + WARN, + ), + a); + }, + }), + (dust.makeBase = dust.context = + function (a, b) { + return new Context(void 0, a, b); + }), + (dust.isContext = function (a) { + return "object" == typeof a && a._isContext === !0; + }), + (Context.wrap = function (a, b) { + return dust.isContext(a) + ? ((a.templateName = b), a) + : new Context(a, {}, {}, null, b); + }), + (Context.prototype.get = function (a, b) { + return ( + "string" == typeof a && + ("." === a[0] && ((b = !0), (a = a.substr(1))), + (a = a.split("."))), + this._get(b, a) + ); + }), + (Context.prototype._get = function (a, b) { + var c, + d, + e, + f, + g, + h = this.stack || {}, + i = 1; + if (((d = b[0]), (e = b.length), a && 0 === e)) + (f = h), (h = h.head); + else { + if (a) h && (h = h.head ? h.head[d] : void 0); + else { + for ( + ; + h && + (!h.isObject || + ((f = h.head), (c = h.head[d]), void 0 === c)); + + ) + h = h.tail; + h = void 0 !== c ? c : this.global && this.global[d]; + } + for (; h && i < e; ) { + if (dust.isThenable(h)) + return h.then(getWithResolvedData(this, a, b.slice(i))); + (f = h), (h = h[b[i]]), i++; + } + } + return dust.isNonThenableFunction(h) + ? ((g = function () { + try { + return h.apply(f, arguments); + } catch (a) { + throw (dust.log(a, ERROR), a); + } + }), + (g.__dustBody = !!h.__dustBody), + g) + : (void 0 === h && + dust.log( + "Cannot find reference `{" + + b.join(".") + + "}` in template `" + + this.getTemplateName() + + "`", + INFO, + ), + h); + }), + (Context.prototype.getPath = function (a, b) { + return this._get(a, b); + }), + (Context.prototype.push = function (a, b, c) { + return void 0 === a + ? (dust.log( + "Not pushing an undefined variable onto the context", + INFO, + ), + this) + : this.rebase(new Stack(a, this.stack, b, c)); + }), + (Context.prototype.pop = function () { + var a = this.current(); + return (this.stack = this.stack && this.stack.tail), a; + }), + (Context.prototype.rebase = function (a) { + return new Context( + a, + this.global, + this.options, + this.blocks, + this.getTemplateName(), + ); + }), + (Context.prototype.clone = function () { + var a = this.rebase(); + return (a.stack = this.stack), a; + }), + (Context.prototype.current = function () { + return this.stack && this.stack.head; + }), + (Context.prototype.getBlock = function (a) { + var b, c, d; + if ( + ("function" == typeof a && + (a = a(new Chunk(), this).data.join("")), + (b = this.blocks), + !b) + ) + return ( + dust.log( + "No blocks for context `" + + a + + "` in template `" + + this.getTemplateName() + + "`", + DEBUG, + ), + !1 + ); + for (c = b.length; c--; ) if ((d = b[c][a])) return d; + return ( + dust.log( + "Malformed template `" + + this.getTemplateName() + + "` was missing one or more blocks.", + ), + !1 + ); + }), + (Context.prototype.shiftBlocks = function (a) { + var b, + c = this.blocks; + return a + ? ((b = c ? c.concat([a]) : [a]), + new Context( + this.stack, + this.global, + this.options, + b, + this.getTemplateName(), + )) + : this; + }), + (Context.prototype.resolve = function (a) { + var b; + return "function" != typeof a + ? a + : ((b = new Chunk().render(a, this)), + b instanceof Chunk ? b.data.join("") : b); + }), + (Context.prototype.getTemplateName = function () { + return this.templateName; + }), + (Stub.prototype.flush = function () { + for (var a = this.head; a; ) { + if (!a.flushable) + return a.error + ? (this.callback(a.error), + dust.log( + "Rendering failed with error `" + a.error + "`", + ERROR, + ), + void (this.flush = EMPTY_FUNC)) + : void 0; + (this.out += a.data.join("")), (a = a.next), (this.head = a); + } + this.callback(null, this.out); + }), + (Stream.prototype.flush = function () { + for (var a = this.head; a; ) { + if (!a.flushable) + return a.error + ? (this.emit("error", a.error), + this.emit("end"), + dust.log( + "Streaming failed with error `" + a.error + "`", + ERROR, + ), + void (this.flush = EMPTY_FUNC)) + : void 0; + this.emit("data", a.data.join("")), + (a = a.next), + (this.head = a); + } + this.emit("end"); + }), + (Stream.prototype.emit = function (a, b) { + var c, + d, + e = this.events || {}, + f = e[a] || []; + if (!f.length) + return ( + dust.log( + "Stream broadcasting, but no listeners for `" + a + "`", + DEBUG, + ), + !1 + ); + for (f = f.slice(0), c = 0, d = f.length; c < d; c++) f[c](b); + return !0; + }), + (Stream.prototype.on = function (a, b) { + var c = (this.events = this.events || {}), + d = (c[a] = c[a] || []); + return ( + "function" != typeof b + ? dust.log( + "No callback function provided for `" + + a + + "` event listener", + WARN, + ) + : d.push(b), + this + ); + }), + (Stream.prototype.pipe = function (a) { + if ("function" != typeof a.write || "function" != typeof a.end) + return ( + dust.log("Incompatible stream passed to `pipe`", WARN), this + ); + var b = !1; + return ( + "function" == typeof a.emit && a.emit("pipe", this), + "function" == typeof a.on && + a.on("error", function () { + b = !0; + }), + this.on("data", function (c) { + if (!b) + try { + a.write(c, "utf8"); + } catch (d) { + dust.log(d, ERROR); + } + }).on("end", function () { + if (!b) + try { + a.end(), (b = !0); + } catch (c) { + dust.log(c, ERROR); + } + }) + ); + }), + (Chunk.prototype.write = function (a) { + var b = this.taps; + return b && (a = b.go(a)), this.data.push(a), this; + }), + (Chunk.prototype.end = function (a) { + return ( + a && this.write(a), + (this.flushable = !0), + this.root.flush(), + this + ); + }), + (Chunk.prototype.map = function (a) { + var b = new Chunk(this.root, this.next, this.taps), + c = new Chunk(this.root, b, this.taps); + (this.next = c), (this.flushable = !0); + try { + a(c); + } catch (d) { + dust.log(d, ERROR), c.setError(d); + } + return b; + }), + (Chunk.prototype.tap = function (a) { + var b = this.taps; + return b ? (this.taps = b.push(a)) : (this.taps = new Tap(a)), this; + }), + (Chunk.prototype.untap = function () { + return (this.taps = this.taps.tail), this; + }), + (Chunk.prototype.render = function (a, b) { + return a(this, b); + }), + (Chunk.prototype.reference = function (a, b, c, d) { + return dust.isNonThenableFunction(a) + ? ((a = a.apply(b.current(), [ + this, + b, + null, + { auto: c, filters: d }, + ])), + a instanceof Chunk ? a : this.reference(a, b, c, d)) + : dust.isThenable(a) + ? this.await(a, b, null, c, d) + : dust.isStreamable(a) + ? this.stream(a, b, null, c, d) + : dust.isEmpty(a) + ? this + : this.write(dust.filter(a, c, d, b)); + }), + (Chunk.prototype.section = function (a, b, c, d) { + var e, + f, + g, + h = c.block, + i = c["else"], + j = this; + if (dust.isNonThenableFunction(a) && !dust.isTemplateFn(a)) { + try { + a = a.apply(b.current(), [this, b, c, d]); + } catch (k) { + return dust.log(k, ERROR), this.setError(k); + } + if (a instanceof Chunk) return a; + } + if (dust.isEmptyObject(c)) return j; + if ((dust.isEmptyObject(d) || (b = b.push(d)), dust.isArray(a))) { + if (h) { + if (((f = a.length), f > 0)) { + for ( + g = (b.stack && b.stack.head) || {}, + g.$len = f, + e = 0; + e < f; + e++ + ) + (g.$idx = e), (j = h(j, b.push(a[e], e, f))); + return (g.$idx = void 0), (g.$len = void 0), j; + } + if (i) return i(this, b); + } + } else { + if (dust.isThenable(a)) return this.await(a, b, c); + if (dust.isStreamable(a)) return this.stream(a, b, c); + if (a === !0) { + if (h) return h(this, b); + } else if (a || 0 === a) { + if (h) return h(this, b.push(a)); + } else if (i) return i(this, b); + } + return ( + dust.log( + "Section without corresponding key in template `" + + b.getTemplateName() + + "`", + DEBUG, + ), + this + ); + }), + (Chunk.prototype.exists = function (a, b, c) { + var d = c.block, + e = c["else"]; + if (dust.isThenable(a)) + return mapThenable(this, a, b, c, function (a, d) { + a.exists(d, b, c).end(); + }); + if (dust.isEmpty(a)) { + if (e) return e(this, b); + } else { + if (d) return d(this, b); + dust.log( + "No block for exists check in template `" + + b.getTemplateName() + + "`", + DEBUG, + ); + } + return this; + }), + (Chunk.prototype.notexists = function (a, b, c) { + var d = c.block, + e = c["else"]; + if (dust.isThenable(a)) + return mapThenable(this, a, b, c, function (a, d) { + a.notexists(d, b, c).end(); + }); + if (dust.isEmpty(a)) { + if (d) return d(this, b); + dust.log( + "No block for not-exists check in template `" + + b.getTemplateName() + + "`", + DEBUG, + ); + } else if (e) return e(this, b); + return this; + }), + (Chunk.prototype.block = function (a, b, c) { + var d = a || c.block; + return d ? d(this, b) : this; + }), + (Chunk.prototype.partial = function (a, b, c, d) { + var e; + return ( + void 0 === d && ((d = c), (c = b)), + dust.isEmptyObject(d) || + ((c = c.clone()), (e = c.pop()), (c = c.push(d).push(e))), + dust.isTemplateFn(a) + ? this.capture(a, b, function (a, b) { + load(a, b, c).end(); + }) + : load(a, this, c) + ); + }), + (Chunk.prototype.helper = function (a, b, c, d, e) { + var f, + g = this, + h = d.filters; + if ((void 0 === e && (e = "h"), !dust.helpers[a])) + return dust.log("Helper `" + a + "` does not exist", WARN), g; + try { + return ( + (f = dust.helpers[a](g, b, c, d)), + f instanceof Chunk + ? f + : ("string" == typeof h && (h = h.split("|")), + dust.isEmptyObject(c) + ? g.reference(f, b, e, h) + : g.section(f, b, c, d)) + ); + } catch (i) { + return ( + dust.log( + "Error in helper `" + a + "`: " + i.message, + ERROR, + ), + g.setError(i) + ); + } + }), + (Chunk.prototype.await = function (a, b, c, d, e) { + return mapThenable(this, a, b, c, function (a, f) { + c ? a.section(f, b, c).end() : a.reference(f, b, d, e).end(); + }); + }), + (Chunk.prototype.renderError = function (a, b, c) { + var d = c && c.error; + return d ? this.render(d, b.push(a)) : this; + }), + (Chunk.prototype.stream = function (a, b, c, d, e) { + var f = c && c.block; + return this.map(function (g) { + var h = !1; + a.on("data", function (a) { + h || + (f + ? (g = g.map(function (c) { + c.render(f, b.push(a)).end(); + })) + : c || (g = g.reference(a, b, d, e))); + }) + .on("error", function (a) { + h || + (g.renderError(a, b, c), + dust.log( + "Unhandled stream error in `" + + b.getTemplateName() + + "`", + INFO, + ), + h || ((h = !0), g.end())); + }) + .on("end", function () { + h || ((h = !0), g.end()); + }); + }); + }), + (Chunk.prototype.capture = function (a, b, c) { + return this.map(function (d) { + var e = new Stub(function (a, b) { + a ? d.setError(a) : c(b, d); + }); + a(e.head, b).end(); + }); + }), + (Chunk.prototype.setError = function (a) { + return (this.error = a), this.root.flush(), this; + }); + for (var f in Chunk.prototype) + dust._aliases[f] && + (Chunk.prototype[dust._aliases[f]] = Chunk.prototype[f]); + (Tap.prototype.push = function (a) { + return new Tap(a, this); + }), + (Tap.prototype.go = function (a) { + for (var b = this; b; ) (a = b.head(a)), (b = b.tail); + return a; + }); + var HCHARS = /[&<>"']/, + AMP = /&/g, + LT = //g, + QUOT = /\"/g, + SQUOT = /\'/g; + dust.escapeHtml = function (a) { + return "string" == typeof a || (a && "function" == typeof a.toString) + ? ("string" != typeof a && (a = a.toString()), + HCHARS.test(a) + ? a + .replace(AMP, "&") + .replace(LT, "<") + .replace(GT, ">") + .replace(QUOT, """) + .replace(SQUOT, "'") + : a) + : a; + }; + var BS = /\\/g, + FS = /\//g, + CR = /\r/g, + LS = /\u2028/g, + PS = /\u2029/g, + NL = /\n/g, + LF = /\f/g, + SQ = /'/g, + DQ = /"/g, + TB = /\t/g; + return ( + (dust.escapeJs = function (a) { + return "string" == typeof a + ? a + .replace(BS, "\\\\") + .replace(FS, "\\/") + .replace(DQ, '\\"') + .replace(SQ, "\\'") + .replace(CR, "\\r") + .replace(LS, "\\u2028") + .replace(PS, "\\u2029") + .replace(NL, "\\n") + .replace(LF, "\\f") + .replace(TB, "\\t") + : a; + }), + (dust.escapeJSON = function (a) { + return JSON + ? JSON.stringify(a) + .replace(LS, "\\u2028") + .replace(PS, "\\u2029") + .replace(LT, "\\u003c") + : (dust.log( + "JSON is undefined; could not escape `" + a + "`", + WARN, + ), + a); + }), + dust + ); +}), + "function" == typeof define && + define.amd && + define.amd.dust === !0 && + define(["require", "dust.core"], function (require, dust) { + return ( + (dust.onLoad = function (a, b) { + require([a], function (a) { + b(null, a); + }); + }), + dust + ); + }); /*! dustjs-helpers - v1.7.4 -* http://dustjs.com/ -* Copyright (c) 2017 Aleksander Williams; Released under the MIT License */ -!function(a,b){"function"==typeof define&&define.amd&&define.amd.dust===!0?define(["dust.core"],b):"object"==typeof exports?(module.exports=b(require("dustjs-linkedin")),module.exports.registerWith=b):b(a.dust)}(this,function(dust){function a(a,b,c){c=c||"INFO",a=a?"{@"+a+"}: ":"",dust.log(a+b,c)}function b(b){k[b]||(a(b,"Deprecation warning: "+b+" is deprecated and will be removed in a future version of dustjs-helpers","WARN"),a(null,"For help and a deprecation timeline, see https://github.com/linkedin/dustjs-helpers/wiki/Deprecated-Features#"+b.replace(/\W+/g,""),"WARN"),k[b]=!0)}function c(a){return a.stack.tail&&a.stack.tail.head&&"undefined"!=typeof a.stack.tail.head.__select__}function d(a){return c(a)&&a.get("__select__")}function e(a,b){var c,d=a.stack.head,e=a.rebase();a.stack&&a.stack.tail&&(e.stack=a.stack.tail);var f={isPending:!1,isResolved:!1,isDeferredComplete:!1,deferreds:[]};for(c in b)f[c]=b[c];return e.push({__select__:f}).push(d,a.stack.index,a.stack.of)}function f(a){var b,c;if(a.isDeferredPending=!0,a.deferreds.length)for(a.isDeferredComplete=!0,b=0,c=a.deferreds.length;c>b;b++)a.deferreds[b]();a.isDeferredPending=!1}function g(a,b){return"function"==typeof b?b.toString().replace(/(^\s+|\s+$)/gm,"").replace(/\n/gm,"").replace(/,\s*/gm,", ").replace(/\)\{/gm,") {"):b}function h(a,b){return function(c,d,e,f){return i(c,d,e,f,a,b)}}function i(b,c,e,f,g,h){var i,k,l,m,n=e.block,o=e["else"],p=d(c)||{};if(p.isResolved&&!p.isDeferredPending)return b;if(f.hasOwnProperty("key"))k=f.key;else{if(!p.hasOwnProperty("key"))return a(g,"No key specified","WARN"),b;k=p.key}return m=f.type||p.type,k=j(c.resolve(k),m),l=j(c.resolve(f.value),m),h(k,l)?(p.isPending||(i=!0,p.isPending=!0),n&&(b=b.render(n,c)),i&&(p.isResolved=!0)):o&&(b=b.render(o,c)),b}function j(a,b){switch(b&&(b=b.toLowerCase()),b){case"number":return+a;case"string":return String(a);case"boolean":return a="false"===a?!1:a,Boolean(a);case"date":return new Date(a)}return a}var k={},l={tap:function(a,c,d){return b("tap"),d.resolve(a)},sep:function(a,b,c){var d=c.block;return b.stack.index===b.stack.of-1?a:d?d(a,b):a},first:function(a,b,c){return 0===b.stack.index?c.block(a,b):a},last:function(a,b,c){return b.stack.index===b.stack.of-1?c.block(a,b):a},contextDump:function(b,c,d,e){var f,h,i=c.resolve(e.to),j=c.resolve(e.key);switch(j){case"full":f=c.stack;break;default:f=c.stack.head}switch(h=JSON.stringify(f,g,2),i){case"console":a("contextDump",h);break;default:h=h.replace(/a}),lte:h("lte",function(a,b){return b>=a}),gt:h("gt",function(a,b){return a>b}),gte:h("gte",function(a,b){return a>=b}),any:function(b,c,e){var f=d(c);return f?f.isDeferredComplete?a("any","Must not be nested inside {@any} or {@none} block","ERROR"):b=b.map(function(a){f.deferreds.push(function(){f.isResolved&&(a=a.render(e.block,c)),a.end()})}):a("any","Must be used inside a {@select} block","ERROR"),b},none:function(b,c,e){var f=d(c);return f?f.isDeferredComplete?a("none","Must not be nested inside {@any} or {@none} block","ERROR"):b=b.map(function(a){f.deferreds.push(function(){f.isResolved||(a=a.render(e.block,c)),a.end()})}):a("none","Must be used inside a {@select} block","ERROR"),b},size:function(a,b,c,d){var e,f,g=d.key;if(g=b.resolve(d.key),g&&g!==!0)if(dust.isArray(g))e=g.length;else if(!isNaN(parseFloat(g))&&isFinite(g))e=g;else if("object"==typeof g){e=0;for(f in g)g.hasOwnProperty(f)&&e++}else e=(g+"").length;else e=0;return a.write(e)}};for(var m in l)dust.helpers[m]=l[m];return dust}); -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.page=e()}(this,function(){"use strict";function t(t){return r(m(t))}var g=Array.isArray||function(t){return"[object Array]"==Object.prototype.toString.call(t)},i=_,e=m,n=r,o=y,d=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^()])+)\\))?|\\(((?:\\\\.|[^()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function m(t){for(var e=[],n=0,i=0,o="";null!=(a=d.exec(t));){var r,s,a,h=a[0],c=a[1],p=a.index;o+=t.slice(i,p),i=p+h.length,c?o+=c[1]:(o&&(e.push(o),o=""),p=a[2],h=a[3],c=a[4],r=a[5],s=a[6],a=a[7],e.push({name:h||n++,prefix:p||"",delimiter:h=p||"/",optional:"?"===s||"*"===s,repeat:"+"===s||"*"===s,pattern:(c||r||(a?".*":"[^"+h+"]+?")).replace(/([=!:$\/()])/g,"\\$1")}))}return it.length).pop()+"/",""),s=n._getBase(),a=(r="/"===r[0]&&0!==r.indexOf(s)?s+(o?"#!":"")+r:r).indexOf("?"),t=(this.canonicalPath=t,new RegExp("^"+s.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1")));this.path=r.replace(t,"")||"/",o&&(this.path=this.path.replace("#!","")||"/"),this.title=h&&i.document.title,this.state=e||{},this.state.path=r,this.querystring=~a?n._decodeURLEncodedURIComponent(r.slice(a+1)):"",this.pathname=n._decodeURLEncodedURIComponent(~a?r.slice(0,a):r),this.params={},this.hash="",o||~this.path.indexOf("#")&&(s=this.path.split("#"),this.path=this.pathname=s[0],this.hash=n._decodeURLEncodedURIComponent(s[1])||"",this.querystring=this.querystring.split("#")[0])}function R(t,e,n){this.page=n||k;e=e||{};e.strict=e.strict||n._strict,this.path="*"===t?"(.*)":t,this.method="GET",this.regexp=i(this.path,this.keys=[],e)}b.prototype.configure=function(t){t=t||{},this._window=t.window||a&&window,this._decodeURLComponents=!1!==t.decodeURLComponents,this._popstate=!1!==t.popstate&&a,this._click=!1!==t.click&&h,this._hashbang=!!t.hashbang,t=this._window;this._popstate?t.addEventListener("popstate",this._onpopstate,!1):a&&t.removeEventListener("popstate",this._onpopstate,!1),this._click?t.document.addEventListener(u,this.clickHandler,!1):h&&t.document.removeEventListener(u,this.clickHandler,!1),this._hashbang&&a&&!c?t.addEventListener("hashchange",this._onpopstate,!1):a&&t.removeEventListener("hashchange",this._onpopstate,!1)},b.prototype.base=function(t){if(0===arguments.length)return this._base;this._base=t},b.prototype._getBase=function(){var t,e=this._base;return e||(t=a&&this._window&&this._window.location,a&&this._hashbang&&t&&"file:"===t.protocol&&(e=t.pathname)),e},b.prototype.strict=function(t){if(0===arguments.length)return this._strict;this._strict=t},b.prototype.start=function(t){var e,t=t||{};this.configure(t),!1!==t.dispatch&&(this._running=!0,f&&(e=this._window.location,e=this._hashbang&&~e.hash.indexOf("#!")?e.hash.substr(2)+e.search:this._hashbang?e.search+e.hash:e.pathname+e.search+e.hash),this.replace(e,null,!0,t.dispatch))},b.prototype.stop=function(){var t;this._running&&(this.current="",this.len=0,this._running=!1,t=this._window,this._click&&t.document.removeEventListener(u,this.clickHandler,!1),a&&t.removeEventListener("popstate",this._onpopstate,!1),a)&&t.removeEventListener("hashchange",this._onpopstate,!1)},b.prototype.show=function(t,e,n,i){t=new E(t,e,this),e=this.prevContext;return this.prevContext=t,this.current=t.path,!1!==n&&this.dispatch(t,e),!1!==t.handled&&!1!==i&&t.pushState(),t},b.prototype.back=function(t,e){var n,i=this;0 b; + b++ + ) + a.deferreds[b](); + a.isDeferredPending = !1; + } + function g(a, b) { + return "function" == typeof b + ? b + .toString() + .replace(/(^\s+|\s+$)/gm, "") + .replace(/\n/gm, "") + .replace(/,\s*/gm, ", ") + .replace(/\)\{/gm, ") {") + : b; + } + function h(a, b) { + return function (c, d, e, f) { + return i(c, d, e, f, a, b); + }; + } + function i(b, c, e, f, g, h) { + var i, + k, + l, + m, + n = e.block, + o = e["else"], + p = d(c) || {}; + if (p.isResolved && !p.isDeferredPending) return b; + if (f.hasOwnProperty("key")) k = f.key; + else { + if (!p.hasOwnProperty("key")) + return a(g, "No key specified", "WARN"), b; + k = p.key; + } + return ( + (m = f.type || p.type), + (k = j(c.resolve(k), m)), + (l = j(c.resolve(f.value), m)), + h(k, l) + ? (p.isPending || ((i = !0), (p.isPending = !0)), + n && (b = b.render(n, c)), + i && (p.isResolved = !0)) + : o && (b = b.render(o, c)), + b + ); + } + function j(a, b) { + switch ((b && (b = b.toLowerCase()), b)) { + case "number": + return +a; + case "string": + return String(a); + case "boolean": + return (a = "false" === a ? !1 : a), Boolean(a); + case "date": + return new Date(a); + } + return a; + } + var k = {}, + l = { + tap: function (a, c, d) { + return b("tap"), d.resolve(a); + }, + sep: function (a, b, c) { + var d = c.block; + return b.stack.index === b.stack.of - 1 ? a : d ? d(a, b) : a; + }, + first: function (a, b, c) { + return 0 === b.stack.index ? c.block(a, b) : a; + }, + last: function (a, b, c) { + return b.stack.index === b.stack.of - 1 ? c.block(a, b) : a; + }, + contextDump: function (b, c, d, e) { + var f, + h, + i = c.resolve(e.to), + j = c.resolve(e.key); + switch (j) { + case "full": + f = c.stack; + break; + default: + f = c.stack.head; + } + switch (((h = JSON.stringify(f, g, 2)), i)) { + case "console": + a("contextDump", h); + break; + default: + (h = h.replace(/ a; + }), + lte: h("lte", function (a, b) { + return b >= a; + }), + gt: h("gt", function (a, b) { + return a > b; + }), + gte: h("gte", function (a, b) { + return a >= b; + }), + any: function (b, c, e) { + var f = d(c); + return ( + f + ? f.isDeferredComplete + ? a( + "any", + "Must not be nested inside {@any} or {@none} block", + "ERROR", + ) + : (b = b.map(function (a) { + f.deferreds.push(function () { + f.isResolved && + (a = a.render(e.block, c)), + a.end(); + }); + })) + : a( + "any", + "Must be used inside a {@select} block", + "ERROR", + ), + b + ); + }, + none: function (b, c, e) { + var f = d(c); + return ( + f + ? f.isDeferredComplete + ? a( + "none", + "Must not be nested inside {@any} or {@none} block", + "ERROR", + ) + : (b = b.map(function (a) { + f.deferreds.push(function () { + f.isResolved || + (a = a.render(e.block, c)), + a.end(); + }); + })) + : a( + "none", + "Must be used inside a {@select} block", + "ERROR", + ), + b + ); + }, + size: function (a, b, c, d) { + var e, + f, + g = d.key; + if (((g = b.resolve(d.key)), g && g !== !0)) + if (dust.isArray(g)) e = g.length; + else if (!isNaN(parseFloat(g)) && isFinite(g)) e = g; + else if ("object" == typeof g) { + e = 0; + for (f in g) g.hasOwnProperty(f) && e++; + } else e = (g + "").length; + else e = 0; + return a.write(e); + }, + }; + for (var m in l) dust.helpers[m] = l[m]; + return dust; +}); +!(function (t, e) { + "object" == typeof exports && "undefined" != typeof module + ? (module.exports = e()) + : "function" == typeof define && define.amd + ? define(e) + : (t.page = e()); +})(this, function () { + "use strict"; + function t(t) { + return r(m(t)); + } + var g = + Array.isArray || + function (t) { + return "[object Array]" == Object.prototype.toString.call(t); + }, + i = _, + e = m, + n = r, + o = y, + d = new RegExp( + [ + "(\\\\.)", + "([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^()])+)\\))?|\\(((?:\\\\.|[^()])+)\\))([+*?])?|(\\*))", + ].join("|"), + "g", + ); + function m(t) { + for (var e = [], n = 0, i = 0, o = ""; null != (a = d.exec(t)); ) { + var r, + s, + a, + h = a[0], + c = a[1], + p = a.index; + (o += t.slice(i, p)), + (i = p + h.length), + c + ? (o += c[1]) + : (o && (e.push(o), (o = "")), + (p = a[2]), + (h = a[3]), + (c = a[4]), + (r = a[5]), + (s = a[6]), + (a = a[7]), + e.push({ + name: h || n++, + prefix: p || "", + delimiter: (h = p || "/"), + optional: "?" === s || "*" === s, + repeat: "+" === s || "*" === s, + pattern: ( + c || + r || + (a ? ".*" : "[^" + h + "]+?") + ).replace(/([=!:$\/()])/g, "\\$1"), + })); + } + return i < t.length && (o += t.substr(i)), o && e.push(o), e; + } + function r(h) { + for (var c = new Array(h.length), t = 0; t < h.length; t++) + "object" == typeof h[t] && + (c[t] = new RegExp("^" + h[t].pattern + "$")); + return function (t) { + for (var e = "", n = t || {}, i = 0; i < h.length; i++) { + var o = h[i]; + if ("string" == typeof o) e += o; + else { + var r, + s = n[o.name]; + if (null == s) { + if (o.optional) continue; + throw new TypeError( + 'Expected "' + o.name + '" to be defined', + ); + } + if (g(s)) { + if (!o.repeat) + throw new TypeError( + 'Expected "' + + o.name + + '" to not repeat, but received "' + + s + + '"', + ); + if (0 === s.length) { + if (o.optional) continue; + throw new TypeError( + 'Expected "' + o.name + '" to not be empty', + ); + } + for (var a = 0; a < s.length; a++) { + if (((r = encodeURIComponent(s[a])), !c[i].test(r))) + throw new TypeError( + 'Expected all "' + + o.name + + '" to match "' + + o.pattern + + '", but received "' + + r + + '"', + ); + e += (0 === a ? o.prefix : o.delimiter) + r; + } + } else { + if (((r = encodeURIComponent(s)), !c[i].test(r))) + throw new TypeError( + 'Expected "' + + o.name + + '" to match "' + + o.pattern + + '", but received "' + + r + + '"', + ); + e += o.prefix + r; + } + } + } + return e; + }; + } + function p(t) { + return t.replace(/([.+*?=^!:${}()[\]|\/])/g, "\\$1"); + } + function w(t, e) { + return (t.keys = e), t; + } + function v(t) { + return t.sensitive ? "" : "i"; + } + function y(t, e) { + for ( + var n = (e = e || {}).strict, + i = !1 !== e.end, + o = "", + r = t[t.length - 1], + r = "string" == typeof r && /\/$/.test(r), + s = 0; + s < t.length; + s++ + ) { + var a, + h, + c = t[s]; + "string" == typeof c + ? (o += p(c)) + : ((a = p(c.prefix)), + (h = c.pattern), + c.repeat && (h += "(?:" + a + h + ")*"), + (o += h = + c.optional + ? a + ? "(?:" + a + "(" + h + "))?" + : "(" + h + ")?" + : a + "(" + h + ")")); + } + return ( + n || (o = (r ? o.slice(0, -2) : o) + "(?:\\/(?=$))?"), + (o += i ? "$" : n && r ? "" : "(?=\\/|$)"), + new RegExp("^" + o, v(e)) + ); + } + function _(t, e, n) { + if ( + (g((e = e || [])) ? (n = n || {}) : ((n = e), (e = [])), + t instanceof RegExp) + ) { + var i = t, + o = e, + r = i.source.match(/\((?!\?)/g); + if (r) + for (var s = 0; s < r.length; s++) + o.push({ + name: s, + prefix: null, + delimiter: null, + optional: !1, + repeat: !1, + pattern: null, + }); + return w(i, o); + } + if (g(t)) { + for (var a = t, h = e, c = n, p = [], d = 0; d < a.length; d++) + p.push(_(a[d], h, c).source); + return w(new RegExp("(?:" + p.join("|") + ")", v(c)), h); + } + for ( + var l = e, i = n, u = m((e = t)), e = y(u, i), f = 0; + f < u.length; + f++ + ) + "string" != typeof u[f] && l.push(u[f]); + return w(e, l); + } + (i.parse = e), + (i.compile = t), + (i.tokensToFunction = n), + (i.tokensToRegExp = o); + var s, + h = "undefined" != typeof document, + a = "undefined" != typeof window, + c = "undefined" != typeof history, + l = "undefined" != typeof process, + u = h && document.ontouchstart ? "touchstart" : "click", + f = a && !(!window.history.location && !window.location); + function b() { + (this.callbacks = []), + (this.exits = []), + (this.current = ""), + (this.len = 0), + (this._decodeURLComponents = !0), + (this._base = ""), + (this._strict = !1), + (this._running = !1), + (this._hashbang = !1), + (this.clickHandler = this.clickHandler.bind(this)), + (this._onpopstate = this._onpopstate.bind(this)); + } + function x(t, e) { + if ("function" == typeof t) return x.call(this, "*", t); + if ("function" == typeof e) + for (var n = new R(t, null, this), i = 1; i < arguments.length; ++i) + this.callbacks.push(n.middleware(arguments[i])); + else + "string" == typeof t + ? this["string" == typeof e ? "redirect" : "show"](t, e) + : this.start(t); + } + function E(t, e, n) { + var n = (this.page = n || x), + i = n._window, + o = n._hashbang, + r = t.replace( + document.baseURI + .split("/") + .filter((t) => t.length) + .pop() + "/", + "", + ), + s = n._getBase(), + a = (r = + "/" === r[0] && 0 !== r.indexOf(s) + ? s + (o ? "#!" : "") + r + : r).indexOf("?"), + t = + ((this.canonicalPath = t), + new RegExp( + "^" + s.replace(/([.+*?=^!:${}()[\]|/\\])/g, "\\$1"), + )); + (this.path = r.replace(t, "") || "/"), + o && (this.path = this.path.replace("#!", "") || "/"), + (this.title = h && i.document.title), + (this.state = e || {}), + (this.state.path = r), + (this.querystring = ~a + ? n._decodeURLEncodedURIComponent(r.slice(a + 1)) + : ""), + (this.pathname = n._decodeURLEncodedURIComponent( + ~a ? r.slice(0, a) : r, + )), + (this.params = {}), + (this.hash = ""), + o || + (~this.path.indexOf("#") && + ((s = this.path.split("#")), + (this.path = this.pathname = s[0]), + (this.hash = n._decodeURLEncodedURIComponent(s[1]) || ""), + (this.querystring = this.querystring.split("#")[0]))); + } + function R(t, e, n) { + this.page = n || k; + e = e || {}; + (e.strict = e.strict || n._strict), + (this.path = "*" === t ? "(.*)" : t), + (this.method = "GET"), + (this.regexp = i(this.path, (this.keys = []), e)); + } + (b.prototype.configure = function (t) { + (t = t || {}), + (this._window = t.window || (a && window)), + (this._decodeURLComponents = !1 !== t.decodeURLComponents), + (this._popstate = !1 !== t.popstate && a), + (this._click = !1 !== t.click && h), + (this._hashbang = !!t.hashbang), + (t = this._window); + this._popstate + ? t.addEventListener("popstate", this._onpopstate, !1) + : a && t.removeEventListener("popstate", this._onpopstate, !1), + this._click + ? t.document.addEventListener(u, this.clickHandler, !1) + : h && t.document.removeEventListener(u, this.clickHandler, !1), + this._hashbang && a && !c + ? t.addEventListener("hashchange", this._onpopstate, !1) + : a && + t.removeEventListener("hashchange", this._onpopstate, !1); + }), + (b.prototype.base = function (t) { + if (0 === arguments.length) return this._base; + this._base = t; + }), + (b.prototype._getBase = function () { + var t, + e = this._base; + return ( + e || + ((t = a && this._window && this._window.location), + a && + this._hashbang && + t && + "file:" === t.protocol && + (e = t.pathname)), + e + ); + }), + (b.prototype.strict = function (t) { + if (0 === arguments.length) return this._strict; + this._strict = t; + }), + (b.prototype.start = function (t) { + var e, + t = t || {}; + this.configure(t), + !1 !== t.dispatch && + ((this._running = !0), + f && + ((e = this._window.location), + (e = + this._hashbang && ~e.hash.indexOf("#!") + ? e.hash.substr(2) + e.search + : this._hashbang + ? e.search + e.hash + : e.pathname + e.search + e.hash)), + this.replace(e, null, !0, t.dispatch)); + }), + (b.prototype.stop = function () { + var t; + this._running && + ((this.current = ""), + (this.len = 0), + (this._running = !1), + (t = this._window), + this._click && + t.document.removeEventListener(u, this.clickHandler, !1), + a && t.removeEventListener("popstate", this._onpopstate, !1), + a) && + t.removeEventListener("hashchange", this._onpopstate, !1); + }), + (b.prototype.show = function (t, e, n, i) { + (t = new E(t, e, this)), (e = this.prevContext); + return ( + (this.prevContext = t), + (this.current = t.path), + !1 !== n && this.dispatch(t, e), + !1 !== t.handled && !1 !== i && t.pushState(), + t + ); + }), + (b.prototype.back = function (t, e) { + var n, + i = this; + 0 < this.len + ? ((n = this._window), c && n.history.back(), this.len--) + : t + ? setTimeout(function () { + i.show(t, e); + }) + : setTimeout(function () { + i.show(i._getBase(), e); + }); + }), + (b.prototype.redirect = function (t, e) { + var n = this; + "string" == typeof t && + "string" == typeof e && + x.call(this, t, function (t) { + setTimeout(function () { + n.replace(e); + }, 0); + }), + "string" == typeof t && + void 0 === e && + setTimeout(function () { + n.replace(t); + }, 0); + }), + (b.prototype.replace = function (t, e, n, i) { + (t = new E(t, e, this)), (e = this.prevContext); + return ( + (this.prevContext = t), + (this.current = t.path), + (t.init = n), + t.save(), + !1 !== i && this.dispatch(t, e), + t + ); + }), + (b.prototype.dispatch = function (e, n) { + var i = 0, + o = 0, + r = this; + function s() { + var t = r.callbacks[i++]; + if (e.path === r.current) + return t + ? void t(e, s) + : function (t) { + var e; + t.handled || + ((e = this._window), + (this._hashbang + ? f && + this._getBase() + + e.location.hash.replace("#!", "") + : f && + e.location.pathname + + e.location.search) !== + t.canonicalPath && + (this.stop(), (t.handled = !1), f) && + (e.location.href = t.canonicalPath)); + }.call(r, e); + e.handled = !1; + } + (n + ? function t() { + var e = r.exits[o++]; + if (!e) return s(); + e(n, t); + } + : s)(); + }), + (b.prototype.exit = function (t, e) { + if ("function" == typeof t) return this.exit("*", t); + for (var n = new R(t, null, this), i = 1; i < arguments.length; ++i) + this.exits.push(n.middleware(arguments[i])); + }), + (b.prototype.clickHandler = function (t) { + if ( + 1 === this._which(t) && + !(t.metaKey || t.ctrlKey || t.shiftKey || t.defaultPrevented) + ) { + var e, + n, + i, + o = t.target, + r = t.path || (t.composedPath ? t.composedPath() : null); + if (r) + for (var s = 0; s < r.length; s++) + if ( + r[s].nodeName && + "A" === r[s].nodeName.toUpperCase() && + r[s].href + ) { + o = r[s]; + break; + } + for (; o && "A" !== o.nodeName.toUpperCase(); ) + o = o.parentNode; + o && + "A" === o.nodeName.toUpperCase() && + ((n = + "object" == typeof o.href && + "SVGAnimatedString" === o.href.constructor.name), + o.hasAttribute("download") || + "external" === o.getAttribute("rel") || + ((e = o.getAttribute("href")), + !this._hashbang && + this._samePath(o) && + (o.hash || "#" === e)) || + (e && -1 < e.indexOf("mailto:")) || + (n ? o.target.baseVal : o.target) || + ((n || this.sameOrigin(o.href)) && + ((e = + "/" !== + (e = n + ? o.href.baseVal + : o.pathname + o.search + (o.hash || ""))[0] + ? "/" + e + : e), + (n = e = + l && e.match(/^\/[a-zA-Z]:\//) + ? e.replace(/^\/[a-zA-Z]:\//, "/") + : e), + (i = this._getBase()), + 0 === e.indexOf(i) && (e = e.substr(i.length)), + this._hashbang && (e = e.replace("#!", "")), + !i || + n !== e || + (f && + "file:" === + this._window.location.protocol)) && + (t.preventDefault(), this.show(n)))); + } + }), + (b.prototype._onpopstate = + ((s = !1), + a + ? (h && "complete" === document.readyState + ? (s = !0) + : window.addEventListener("load", function () { + setTimeout(function () { + s = !0; + }, 0); + }), + function (t) { + var e; + s && + (t.state + ? ((e = t.state.path), this.replace(e, t.state)) + : f && + ((e = this._window.location), + this.show( + e.pathname + e.search + e.hash, + void 0, + void 0, + !1, + ))); + }) + : function () {})), + (b.prototype._which = function (t) { + return null == (t = t || (a && this._window.event)).which + ? t.button + : t.which; + }), + (b.prototype._toURL = function (t) { + var e = this._window; + return "function" == typeof URL && f + ? new URL(t, e.location.toString()) + : h + ? (((e = e.document.createElement("a")).href = t), e) + : void 0; + }), + (b.prototype.sameOrigin = function (t) { + var e; + return ( + !(!t || !f) && + ((t = this._toURL(t)), + (e = this._window.location).protocol === t.protocol) && + e.hostname === t.hostname && + e.port === t.port + ); + }), + (b.prototype._samePath = function (t) { + var e; + return ( + !!f && + ((e = this._window.location), t.pathname === e.pathname) && + t.search === e.search + ); + }), + (b.prototype._decodeURLEncodedURIComponent = function (t) { + return "string" == typeof t && this._decodeURLComponents + ? decodeURIComponent(t.replace(/\+/g, " ")) + : t; + }), + (E.prototype.pushState = function () { + var t = this.page, + e = t._window, + n = t._hashbang; + t.len++, + c && + e.history.pushState( + this.state, + this.title, + n && "/" !== this.path + ? "#!" + this.path + : this.canonicalPath, + ); + }), + (E.prototype.save = function () { + var t = this.page; + c && + "file:" !== t._window.location.protocol && + t._window.history.replaceState( + this.state, + this.title, + t._hashbang && "/" !== this.path + ? "#!" + this.path + : this.canonicalPath, + ); + }), + (R.prototype.middleware = function (n) { + var i = this; + return function (t, e) { + if (i.match(t.path, t.params)) return n(t, e); + e(); + }; + }), + (R.prototype.match = function (t, e) { + var n = this.keys, + i = t.indexOf("?"), + i = ~i ? t.slice(0, i) : t, + o = this.regexp.exec(decodeURIComponent(i)); + if (!o) return !1; + for (var r = 1, s = o.length; r < s; ++r) { + var a = n[r - 1], + h = this.page._decodeURLEncodedURIComponent(o[r]); + (void 0 === h && hasOwnProperty.call(e, a.name)) || + (e[a.name] = h); + } + return !0; + }); + var k = (function t() { + var e = new b(); + function n() { + return x.apply(e, arguments); + } + return ( + (n.callbacks = e.callbacks), + (n.exits = e.exits), + (n.base = e.base.bind(e)), + (n.strict = e.strict.bind(e)), + (n.start = e.start.bind(e)), + (n.stop = e.stop.bind(e)), + (n.show = e.show.bind(e)), + (n.back = e.back.bind(e)), + (n.redirect = e.redirect.bind(e)), + (n.replace = e.replace.bind(e)), + (n.dispatch = e.dispatch.bind(e)), + (n.exit = e.exit.bind(e)), + (n.configure = e.configure.bind(e)), + (n.sameOrigin = e.sameOrigin.bind(e)), + (n.clickHandler = e.clickHandler.bind(e)), + (n.create = t), + Object.defineProperty(n, "len", { + get: function () { + return e.len; + }, + set: function (t) { + e.len = t; + }, + }), + Object.defineProperty(n, "current", { + get: function () { + return e.current; + }, + set: function (t) { + e.current = t; + }, + }), + (n.Context = E), + (n.Route = R), + n + ); + })(), + e = k; + return (e.default = k), e; +}); /*! * EventEmitter v5.2.9 - git.io/ee * Unlicense - http://unlicense.org/ * Oliver Caldwell - https://oli.me.uk/ * @preserve */ -!function(e){"use strict";function t(){}function n(e,t){for(var n=e.length;n--;)if(e[n].listener===t)return n;return-1}function r(e){return function(){return this[e].apply(this,arguments)}}function i(e){return"function"==typeof e||e instanceof RegExp||!(!e||"object"!=typeof e)&&i(e.listener)}var s=t.prototype,o=e.EventEmitter;s.getListeners=function(e){var t,n,r=this._getEvents();if(e instanceof RegExp){t={};for(n in r)r.hasOwnProperty(n)&&e.test(n)&&(t[n]=r[n])}else t=r[e]||(r[e]=[]);return t},s.flattenListeners=function(e){var t,n=[];for(t=0;t\n ").h("eq",ctx,{"else":body_1,"block":body_2},{"key":ctx.getPath(false, ["currentRoute","sourceType"]),"value":"md"},"h").w("\n\n");}body_0.__dustBody=!0;function body_1(chk,ctx){return chk.w("\n
\n
\n
\n ");}body_1.__dustBody=!0;function body_2(chk,ctx){return chk.w("\n
\n
\n
\n
\n Documentation built with\n Docma.\n
\n ");}body_2.__dustBody=!0;return body_0}(dust)); -(function(dust){dust.register("docma-api",body_0);function body_0(chk,ctx){return chk.p("navbar",ctx,ctx,{}).w("\n\n
\n ").x(ctx.getPath(false, ["template","options","sidebar","enabled"]),ctx,{"block":body_1},{}).w("\n\n
\n
\n
\n ").s(ctx.get(["documentation"], false),ctx,{"block":body_2},{}).w("\n
\n Documentation built with\n Docma.\n
\n
\n
\n");}body_0.__dustBody=!0;function body_1(chk,ctx){return chk.w("\n
").p("sidebar",ctx,ctx,{}).w("
\n ");}body_1.__dustBody=!0;function body_2(chk,ctx){return chk.w(" ").p("symbol",ctx,ctx,{"symbol":ctx.getPath(true, []),"template":ctx.get(["template"], false)}).w("\n ");}body_2.__dustBody=!0;return body_0}(dust)); -(function(dust){dust.register("docma-404",body_0);function body_0(chk,ctx){return chk.p("navbar",ctx,ctx,{"boxed":"true"}).w("\n\n
\n
\n

\n

404

\n
\n

Page Not Found

\n
\n The file or page you have requested is not found.   \n
\n Please make sure page address is entered correctly.\n
\n
\n
\n
\n
\n");}body_0.__dustBody=!0;return body_0}(dust)); -(function(dust){dust.register("symbol",body_0);function body_0(chk,ctx){return chk.nx(ctx.getPath(false, ["symbol","$hide"]),ctx,{"block":body_1},{}).w("\n");}body_0.__dustBody=!0;function body_1(chk,ctx){return chk.w("\n\n
\n\n
\n
\n \n \n \n ").f(ctx.get(["symbol"], false),ctx,"h",["s","$longname_params"]).w("\n ").f(ctx.get(["symbol"], false),ctx,"h",["$type_sep"]).w("\n ").f(ctx.get(["symbol"], false),ctx,"h",["s","$type"]).w("\n\n ").f(ctx.get(["symbol"], false),ctx,"h",["s","$tags"]).w("\n\n\n
\n
\n\n
\n\n
\n ").x(ctx.getPath(false, ["symbol","alias"]),ctx,{"block":body_2},{}).w("\n\n ").x(ctx.getPath(false, ["symbol","augments"]),ctx,{"block":body_4},{}).w("\n\n ").x(ctx.getPath(false, ["symbol","version"]),ctx,{"block":body_5},{}).w("\n\n ").x(ctx.getPath(false, ["symbol","since"]),ctx,{"block":body_6},{}).w("\n\n ").x(ctx.getPath(false, ["symbol","copyright"]),ctx,{"block":body_7},{}).w("\n\n ").x(ctx.getPath(false, ["symbol","author"]),ctx,{"block":body_8},{}).w("\n\n ").x(ctx.getPath(false, ["symbol","license"]),ctx,{"block":body_9},{}).w("\n
\n\n ").x(ctx.getPath(false, ["symbol","defaultvalue"]),ctx,{"block":body_10},{}).w("\n\n ").f(ctx.get(["symbol"], false),ctx,"h",["s","$desc"]).w("\n\n ").x(ctx.getPath(false, ["symbol","see"]),ctx,{"block":body_11},{}).w("\n\n \n ").h("ne",ctx,{"block":body_16},{"key":ctx.getPath(false, ["symbol","meta","code","type"]),"value":"ClassDeclaration"},"h").w("\n\n ").x(ctx.getPath(false, ["symbol","fires"]),ctx,{"block":body_19},{}).w("\n\n ").x(ctx.getPath(false, ["symbol","returns"]),ctx,{"block":body_21},{}).w("\n\n ").x(ctx.getPath(false, ["symbol","generator"]),ctx,{"block":body_24},{}).w("\n\n ").x(ctx.getPath(false, ["symbol","exceptions"]),ctx,{"block":body_28},{}).w("\n\n \n ").x(ctx.getPath(false, ["symbol","isEnum"]),ctx,{"block":body_31},{}).w("\n\n ").x(ctx.getPath(false, ["symbol","examples"]),ctx,{"block":body_32},{}).w("\n\n ").x(ctx.getPath(false, ["template","options","symbols","meta"]),ctx,{"block":body_35},{}).w("\n\n
\n\n
\n
\n\n").x(ctx.getPath(false, ["symbol","$constructor"]),ctx,{"block":body_39},{}).w("\n\n\n").nx(ctx.getPath(false, ["symbol","isEnum"]),ctx,{"block":body_41},{}).w("\n\n\n");}body_1.__dustBody=!0;function body_2(chk,ctx){return chk.w("\n \n \n ").nx(ctx.get(["$constructor"], false),ctx,{"block":body_3},{}).w("\n ");}body_2.__dustBody=!0;function body_3(chk,ctx){return chk.w("\n

Alias: ").f(ctx.getPath(false, ["symbol","alias"]),ctx,"h",["s","$dot_prop"]).w("

\n ");}body_3.__dustBody=!0;function body_4(chk,ctx){return chk.w("\n

Extends: ").f(ctx.get(["symbol"], false),ctx,"h",["s","$extends"]).w("

\n ");}body_4.__dustBody=!0;function body_5(chk,ctx){return chk.w("\n

Version: ").f(ctx.getPath(false, ["symbol","version"]),ctx,"h",["s"]).w("

\n ");}body_5.__dustBody=!0;function body_6(chk,ctx){return chk.w("\n

Since: ").f(ctx.getPath(false, ["symbol","since"]),ctx,"h",["s"]).w("

\n ");}body_6.__dustBody=!0;function body_7(chk,ctx){return chk.w("\n

Copyright: ").f(ctx.getPath(false, ["symbol","copyright"]),ctx,"h",["s"]).w("

\n ");}body_7.__dustBody=!0;function body_8(chk,ctx){return chk.w("\n

Author: ").f(ctx.getPath(false, ["symbol","author"]),ctx,"h",["s","$author"]).w("

\n ");}body_8.__dustBody=!0;function body_9(chk,ctx){return chk.w("\n

License: ").f(ctx.getPath(false, ["symbol","license"]),ctx,"h",["s"]).w("

\n ");}body_9.__dustBody=!0;function body_10(chk,ctx){return chk.w("\n

Value: ").f(ctx.get(["symbol"], false),ctx,"h",["$def"]).w("

\n ");}body_10.__dustBody=!0;function body_11(chk,ctx){return chk.w("\n

\n See\n ").h("gt",ctx,{"else":body_12,"block":body_14},{"key":ctx.getPath(false, ["symbol","see","length"]),"value":1},"h").w("\n

\n ");}body_11.__dustBody=!0;function body_12(chk,ctx){return chk.w("\n ").s(ctx.getPath(false, ["symbol","see"]),ctx,{"block":body_13},{}).w("\n ");}body_12.__dustBody=!0;function body_13(chk,ctx){return chk.w(" ").f(ctx.getPath(true, []),ctx,"h",["s","$pl"]);}body_13.__dustBody=!0;function body_14(chk,ctx){return chk.w("\n
    \n ").s(ctx.getPath(false, ["symbol","see"]),ctx,{"block":body_15},{}).w("\n
\n ");}body_14.__dustBody=!0;function body_15(chk,ctx){return chk.w("
  • ").f(ctx.getPath(true, []),ctx,"h",["s","$pl"]).w("
  • ");}body_15.__dustBody=!0;function body_16(chk,ctx){return chk.w("\n ").p("params",ctx,ctx.rebase(ctx.get(["symbol"], false)),{"template":ctx.get(["template"], false)}).w(" \n ").x(ctx.getPath(false, ["symbol","isEnum"]),ctx,{"else":body_17,"block":body_18},{}).w("\n ");}body_16.__dustBody=!0;function body_17(chk,ctx){return chk.w("\n ").p("properties",ctx,ctx.rebase(ctx.get(["symbol"], false)),{"template":ctx.get(["template"], false)}).w(" \n ");}body_17.__dustBody=!0;function body_18(chk,ctx){return chk;}body_18.__dustBody=!0;function body_19(chk,ctx){return chk.w("\n ").h("gt",ctx,{"block":body_20},{"key":ctx.getPath(false, ["symbol","fires","length"]),"value":"0","type":"number"},"h").w("\n ");}body_19.__dustBody=!0;function body_20(chk,ctx){return chk.w("\n

    \n Emits:  ").f(ctx.get(["symbol"], false),ctx,"h",["s","$emits"]).w("\n

    \n ");}body_20.__dustBody=!0;function body_21(chk,ctx){return chk.w("\n ").h("gt",ctx,{"else":body_22,"block":body_23},{"key":ctx.getPath(false, ["symbol","returns","length"]),"value":"1","type":"number"},"h").w("\n ");}body_21.__dustBody=!0;function body_22(chk,ctx){return chk.w("\n

    \n Returns:  ").f(ctx.get(["symbol"], false),ctx,"h",["s","$returns"]).w("\n

    \n ");}body_22.__dustBody=!0;function body_23(chk,ctx){return chk.w("\n Returns:\n

    \n ").f(ctx.get(["symbol"], false),ctx,"h",["s","$returns"]).w("\n

    \n ");}body_23.__dustBody=!0;function body_24(chk,ctx){return chk.w("\n ").x(ctx.getPath(false, ["symbol","yields"]),ctx,{"block":body_25},{}).w("\n ");}body_24.__dustBody=!0;function body_25(chk,ctx){return chk.w("\n ").h("gt",ctx,{"else":body_26,"block":body_27},{"key":ctx.getPath(false, ["symbol","yields","length"]),"value":"1","type":"number"},"h").w("\n ");}body_25.__dustBody=!0;function body_26(chk,ctx){return chk.w("\n

    \n Yields:  ").f(ctx.get(["symbol"], false),ctx,"h",["s","$yields"]).w("\n

    \n ");}body_26.__dustBody=!0;function body_27(chk,ctx){return chk.w("\n Yields:\n

    \n ").f(ctx.get(["symbol"], false),ctx,"h",["s","$yields"]).w("\n

    \n ");}body_27.__dustBody=!0;function body_28(chk,ctx){return chk.w("\n ").h("gt",ctx,{"else":body_29,"block":body_30},{"key":ctx.getPath(false, ["symbol","exceptions","length"]),"value":"1","type":"number"},"h").w("\n ");}body_28.__dustBody=!0;function body_29(chk,ctx){return chk.w("\n

    \n Throws:  ").f(ctx.get(["symbol"], false),ctx,"h",["s","$exceptions"]).w("\n

    \n ");}body_29.__dustBody=!0;function body_30(chk,ctx){return chk.w("\n Throws:\n

    \n ").f(ctx.get(["symbol"], false),ctx,"h",["s","$exceptions"]).w("\n

    \n ");}body_30.__dustBody=!0;function body_31(chk,ctx){return chk.w("\n ").p("enums",ctx,ctx.rebase(ctx.get(["symbol"], false)),{"template":ctx.get(["template"], false)}).w(" \n ");}body_31.__dustBody=!0;function body_32(chk,ctx){return chk.w("\n ").s(ctx.getPath(false, ["symbol","examples"]),ctx,{"block":body_33},{}).w("\n ");}body_32.__dustBody=!0;function body_33(chk,ctx){return chk.w("\n

    Example\n ").h("gt",ctx,{"block":body_34},{"key":ctx.getPath(false, ["symbol","examples","length"]),"value":1},"h").w("\n ").f(ctx.getPath(true, []),ctx,"h",["$get_caption","s"]).w("

    \n
    ").f(ctx.getPath(true, []),ctx,"h",["$nt","$tnl","$remove_caption"]).w("
    \n ");}body_33.__dustBody=!0;function body_34(chk,ctx){return chk.w("\n  #").h("math",ctx,{},{"key":ctx.get(["$idx"], false),"method":"add","operand":"1"},"h").w("\n ");}body_34.__dustBody=!0;function body_35(chk,ctx){return chk.w("\n ").x(ctx.getPath(false, ["symbol","meta","lineno"]),ctx,{"block":body_36},{}).w("\n ");}body_35.__dustBody=!0;function body_36(chk,ctx){return chk.w("\n

    \n ").x(ctx.getPath(false, ["symbol","meta","filename"]),ctx,{"block":body_37},{}).w("\n ").x(ctx.getPath(false, ["symbol","meta","lineno"]),ctx,{"block":body_38},{}).w("\n

    \n ");}body_36.__dustBody=!0;function body_37(chk,ctx){return chk.w("File: ").f(ctx.getPath(false, ["symbol","meta","filename"]),ctx,"h").w("  ");}body_37.__dustBody=!0;function body_38(chk,ctx){return chk.w("Line: ").f(ctx.getPath(false, ["symbol","meta","lineno"]),ctx,"h").w("  ");}body_38.__dustBody=!0;function body_39(chk,ctx){return chk.w("\n ").h("ne",ctx,{"block":body_40},{"key":ctx.getPath(false, ["symbol","hideconstructor"]),"type":"boolean","value":"true"},"h").w("\n");}body_39.__dustBody=!0;function body_40(chk,ctx){return chk.w("\n ").p("symbol",ctx,ctx,{"symbol":ctx.getPath(false, ["symbol","$constructor"]),"template":ctx.get(["template"], false)}).w("\n ");}body_40.__dustBody=!0;function body_41(chk,ctx){return chk.w("\n \n ").s(ctx.getPath(false, ["symbol","$members"]),ctx,{"block":body_42},{}).w("\n");}body_41.__dustBody=!0;function body_42(chk,ctx){return chk.w("\n ").p("symbol",ctx,ctx,{"symbol":ctx.getPath(true, []),"template":ctx.get(["template"], false)}).w("\n ");}body_42.__dustBody=!0;return body_0}(dust)); -(function(dust){dust.register("sidebar",body_0);function body_0(chk,ctx){return chk.w("
    \n
    \n \n
    \n
    \n ").x(ctx.getPath(false, ["template","options","logo","light"]),ctx,{"block":body_1},{}).w("\n \n \n ").f(ctx.getPath(false, ["template","options","title","label"]),ctx,"h").w("\n \n \n
    \n ").x(ctx.getPath(false, ["template","options","sidebar","search"]),ctx,{"block":body_2},{}).w(" ").x(ctx.getPath(false, ["template","options","sidebar","toolbar"]),ctx,{"block":body_3},{}).w("\n
    \n\n
    \n
      \n ").f(ctx.get(["symbols"], false),ctx,"h",["s","$navnodes"]).w("\n
    \n
    \n");}body_0.__dustBody=!0;function body_1(chk,ctx){return chk.w("\n \n ");}body_1.__dustBody=!0;function body_2(chk,ctx){return chk.w("\n
    \n
    \n \n
    \n \n
    \n \n
    \n
    \n ");}body_2.__dustBody=!0;function body_3(chk,ctx){return chk.w("\n
    \n
    \n
    \n
    \n \n ").h("eq",ctx,{"else":body_4,"block":body_5},{"key":ctx.getPath(false, ["template","options","sidebar","itemsFolded"]),"type":"boolean","value":"true"},"h").w("\n \n \n ").h("eq",ctx,{"else":body_6,"block":body_7},{"key":ctx.getPath(false, ["template","options","sidebar","outline"]),"type":"string","value":"tree"},"h").w("\n \n
    \n
    \n ");}body_3.__dustBody=!0;function body_4(chk,ctx){return chk.w("\n \n ");}body_4.__dustBody=!0;function body_5(chk,ctx){return chk.w("\n \n ");}body_5.__dustBody=!0;function body_6(chk,ctx){return chk.w("\n \n ");}body_6.__dustBody=!0;function body_7(chk,ctx){return chk.w("\n \n ");}body_7.__dustBody=!0;return body_0}(dust)); -(function(dust){dust.register("properties",body_0);function body_0(chk,ctx){return chk.x(ctx.get(["properties"], false),ctx,{"block":body_1},{}).w("\n");}body_0.__dustBody=!0;function body_1(chk,ctx){return chk.w(" ").h("eq",ctx,{"else":body_2,"block":body_4},{"key":ctx.getPath(false, ["template","options","symbols","props"]),"value":"table"},"h").w(" ");}body_1.__dustBody=!0;function body_2(chk,ctx){return chk.w("\n\n
    Properties
    \n
      \n ").s(ctx.get(["properties"], false),ctx,{"block":body_3},{}).w("\n
    \n\n");}body_2.__dustBody=!0;function body_3(chk,ctx){return chk.w("\n
  • \n
    \n \n ").f(ctx.get(["name"], false),ctx,"h",["s","$dot_prop"]).w("\n  : ").f(ctx.getPath(true, []),ctx,"h",["s","$type"]).w("\n \n
    \n\n
    ").f(ctx.get(["description"], false),ctx,"h",["s","$p"]).w("
    \n
  • \n ");}body_3.__dustBody=!0;function body_4(chk,ctx){return chk.w("\n\n \n \n \n \n \n \n \n \n ").s(ctx.get(["properties"], false),ctx,{"block":body_5},{}).w("\n \n
    PropertyTypeDescription
    \n\n");}body_4.__dustBody=!0;function body_5(chk,ctx){return chk.w("\n \n ").f(ctx.get(["name"], false),ctx,"h",["s","$dot_prop"]).w("\n ").f(ctx.getPath(true, []),ctx,"h",["s","$type"]).w("\n ").f(ctx.get(["description"], false),ctx,"h",["s","$p"]).w("\n \n ");}body_5.__dustBody=!0;return body_0}(dust)); -(function(dust){dust.register("params",body_0);function body_0(chk,ctx){return chk.x(ctx.get(["params"], false),ctx,{"block":body_1},{}).w("\n");}body_0.__dustBody=!0;function body_1(chk,ctx){return chk.w(" ").h("eq",ctx,{"else":body_2,"block":body_8},{"key":ctx.getPath(false, ["template","options","symbols","params"]),"value":"table"},"h").w(" ");}body_1.__dustBody=!0;function body_2(chk,ctx){return chk.w("\n\n
    Parameters
    \n
      \n ").s(ctx.get(["params"], false),ctx,{"block":body_3},{}).w("\n
    \n\n");}body_2.__dustBody=!0;function body_3(chk,ctx){return chk.w("\n
  • \n
    \n \n ").x(ctx.get(["variable"], false),ctx,{"block":body_4},{}).f(ctx.get(["name"], false),ctx,"h",["s","$dot_prop"]).w("\n  : ").x(ctx.get(["variable"], false),ctx,{"block":body_5},{}).f(ctx.getPath(true, []),ctx,"h",["s","$type"]).w("\n \n \n ").x(ctx.get(["optional"], false),ctx,{"else":body_6,"block":body_7},{}).w("\n \n
    \n\n
    ").f(ctx.getPath(true, []),ctx,"h",["s","$param_desc"]).w("
    \n
  • \n ");}body_3.__dustBody=!0;function body_4(chk,ctx){return chk.w("...");}body_4.__dustBody=!0;function body_5(chk,ctx){return chk.w("...");}body_5.__dustBody=!0;function body_6(chk,ctx){return chk.w("\n Required\n ");}body_6.__dustBody=!0;function body_7(chk,ctx){return chk.w("\n Default: \n ").f(ctx.getPath(true, []),ctx,"h",["$def"]).w("\n ");}body_7.__dustBody=!0;function body_8(chk,ctx){return chk.w("\n\n\n \n \n \n \n \n \n \n \n ").s(ctx.get(["params"], false),ctx,{"block":body_9},{}).w("\n \n
    ParamTypeDescription
    \n\n");}body_8.__dustBody=!0;function body_9(chk,ctx){return chk.w("\n \n ").x(ctx.get(["variable"], false),ctx,{"block":body_10},{}).f(ctx.get(["name"], false),ctx,"h",["s","$dot_prop"]).w("\n ").x(ctx.get(["variable"], false),ctx,{"block":body_11},{}).f(ctx.getPath(true, []),ctx,"h",["s","$type"]).w("\n \n ").x(ctx.get(["optional"], false),ctx,{"else":body_12,"block":body_13},{}).w(" ").f(ctx.getPath(true, []),ctx,"h",["s","$param_desc"]).w("\n \n \n ");}body_9.__dustBody=!0;function body_10(chk,ctx){return chk.w("...");}body_10.__dustBody=!0;function body_11(chk,ctx){return chk.w("...");}body_11.__dustBody=!0;function body_12(chk,ctx){return chk.w("\n Required\n ");}body_12.__dustBody=!0;function body_13(chk,ctx){return chk.w("\n Default\n :\n ").f(ctx.getPath(true, []),ctx,"h",["$def"]).w("\n ");}body_13.__dustBody=!0;return body_0}(dust)); -(function(dust){dust.register("navitem",body_0);function body_0(chk,ctx){return chk.x(ctx.get(["separator"], false),ctx,{"else":body_1,"block":body_6},{}).w("\n");}body_0.__dustBody=!0;function body_1(chk,ctx){return chk.w("\n
  • \n \n ").x(ctx.get(["iconClass"], false),ctx,{"block":body_4},{}).w(" ").x(ctx.get(["label"], false),ctx,{"block":body_5},{}).w("\n \n
  • \n");}body_1.__dustBody=!0;function body_2(chk,ctx){return chk.w("#");}body_2.__dustBody=!0;function body_3(chk,ctx){return chk.f(ctx.get(["href"], false),ctx,"h");}body_3.__dustBody=!0;function body_4(chk,ctx){return chk.w("");}body_4.__dustBody=!0;function body_5(chk,ctx){return chk.w("").f(ctx.get(["label"], false),ctx,"h",["s"]).w("");}body_5.__dustBody=!0;function body_6(chk,ctx){return chk.w("\n
  • \n");}body_6.__dustBody=!0;return body_0}(dust)); -(function(dust){dust.register("navbar",body_0);function body_0(chk,ctx){return chk.x(ctx.getPath(false, ["template","options","navbar","enabled"]),ctx,{"block":body_1},{}).w("\n");}body_0.__dustBody=!0;function body_1(chk,ctx){return chk.w("\n\n\n").x(ctx.getPath(false, ["template","options","navbar","fixed"]),ctx,{"block":body_14},{}).w("\n\n
    \n");}body_1.__dustBody=!0;function body_2(chk,ctx){return chk.w(" ").x(ctx.getPath(false, ["template","options","navbar","dark"]),ctx,{"else":body_3,"block":body_4},{}).w(" ");}body_2.__dustBody=!0;function body_3(chk,ctx){return chk.w("\n \n ");}body_3.__dustBody=!0;function body_4(chk,ctx){return chk.w("\n \n ");}body_4.__dustBody=!0;function body_5(chk,ctx){return chk.w("\n
    \n \n \n
    \n
    \n
      \n ").s(ctx.getPath(false, ["template","options","navbar","menu"]),ctx,{"block":body_6},{}).w("\n
    \n
    \n ");}body_5.__dustBody=!0;function body_6(chk,ctx){return chk.w(" ").x(ctx.get(["items"], false),ctx,{"else":body_7,"block":body_8},{}).w(" ");}body_6.__dustBody=!0;function body_7(chk,ctx){return chk.w(" ").p("navitem",ctx,ctx.rebase(ctx.getPath(true, [])),{}).w(" ");}body_7.__dustBody=!0;function body_8(chk,ctx){return chk.w("\n
  • \n \n ").x(ctx.get(["label"], false),ctx,{"block":body_11},{}).x(ctx.get(["chevron"], false),ctx,{"block":body_12},{}).w("\n \n
      \n ").s(ctx.get(["items"], false),ctx,{"block":body_13},{}).w("\n
    \n
  • \n ");}body_8.__dustBody=!0;function body_9(chk,ctx){return chk.w("#");}body_9.__dustBody=!0;function body_10(chk,ctx){return chk.f(ctx.get(["href"], false),ctx,"h");}body_10.__dustBody=!0;function body_11(chk,ctx){return chk.w("").f(ctx.get(["label"], false),ctx,"h").w("");}body_11.__dustBody=!0;function body_12(chk,ctx){return chk.w("");}body_12.__dustBody=!0;function body_13(chk,ctx){return chk.w(" ").p("navitem",ctx,ctx.rebase(ctx.getPath(true, [])),{}).w(" ");}body_13.__dustBody=!0;function body_14(chk,ctx){return chk.w("\n
    \n");}body_14.__dustBody=!0;return body_0}(dust)); -(function(dust){dust.register("enums",body_0);function body_0(chk,ctx){return chk.x(ctx.get(["$members"], false),ctx,{"block":body_1},{}).w("\n");}body_0.__dustBody=!0;function body_1(chk,ctx){return chk.w(" ").h("eq",ctx,{"else":body_2,"block":body_4},{"key":ctx.getPath(false, ["template","options","symbols","enums"]),"value":"table"},"h").w(" ");}body_1.__dustBody=!0;function body_2(chk,ctx){return chk.w("\n\n
    Enumeration
    \n
      \n ").s(ctx.get(["$members"], false),ctx,{"block":body_3},{}).w("\n
    \n\n");}body_2.__dustBody=!0;function body_3(chk,ctx){return chk.w("\n
  • \n
    \n \n ").f(ctx.getPath(true, []),ctx,"h",["$longname","s","$dot_prop"]).w("\n  : ").f(ctx.getPath(true, []),ctx,"h",["s","$type"]).w("\n \n \n Value: \n ").f(ctx.getPath(true, []),ctx,"h",["$val"]).w("\n \n
    \n\n
    ").f(ctx.getPath(true, []),ctx,"h",["s","$desc"]).w("
    \n
  • \n ");}body_3.__dustBody=!0;function body_4(chk,ctx){return chk.w("\n\n \n \n \n \n \n \n \n \n \n ").s(ctx.get(["$members"], false),ctx,{"block":body_5},{}).w("\n \n
    EnumerationTypeValueDescription
    \n\n");}body_4.__dustBody=!0;function body_5(chk,ctx){return chk.w("\n \n ").f(ctx.getPath(true, []),ctx,"h",["$longname","s","$dot_prop"]).w("\n ").f(ctx.getPath(true, []),ctx,"h",["s","$type"]).w("\n ").f(ctx.getPath(true, []),ctx,"h",["$val"]).w("\n ").f(ctx.getPath(true, []),ctx,"h",["s","$desc"]).w("\n \n ");}body_5.__dustBody=!0;return body_0}(dust)); +(function (dust) { + dust.register("docma-content", body_0); + function body_0(chk, ctx) { + return chk + .p("navbar", ctx, ctx, { boxed: "true" }) + .w('\n\n
    \n ') + .h( + "eq", + ctx, + { else: body_1, block: body_2 }, + { + key: ctx.getPath(false, ["currentRoute", "sourceType"]), + value: "md", + }, + "h", + ) + .w("\n
    \n"); + } + body_0.__dustBody = !0; + function body_1(chk, ctx) { + return chk.w( + '\n
    \n
    \n
    \n ', + ); + } + body_1.__dustBody = !0; + function body_2(chk, ctx) { + return chk.w( + '\n
    \n
    \n
    \n
    \n Documentation built with\n Docma.\n
    \n ', + ); + } + body_2.__dustBody = !0; + return body_0; +})(dust); +(function (dust) { + dust.register("docma-api", body_0); + function body_0(chk, ctx) { + return chk + .p("navbar", ctx, ctx, {}) + .w('\n\n
    \n ') + .x( + ctx.getPath(false, [ + "template", + "options", + "sidebar", + "enabled", + ]), + ctx, + { block: body_1 }, + {}, + ) + .w( + '\n\n
    \n
    \n
    \n ', + ) + .s(ctx.get(["documentation"], false), ctx, { block: body_2 }, {}) + .w( + '\n
    \n Documentation built with\n Docma.\n
    \n
    \n
    \n', + ); + } + body_0.__dustBody = !0; + function body_1(chk, ctx) { + return chk + .w('\n \n "); + } + body_1.__dustBody = !0; + function body_2(chk, ctx) { + return chk + .w(" ") + .p("symbol", ctx, ctx, { + symbol: ctx.getPath(true, []), + template: ctx.get(["template"], false), + }) + .w("\n "); + } + body_2.__dustBody = !0; + return body_0; +})(dust); +(function (dust) { + dust.register("docma-404", body_0); + function body_0(chk, ctx) { + return chk + .p("navbar", ctx, ctx, { boxed: "true" }) + .w( + '\n\n
    \n
    \n

    \n

    404

    \n
    \n

    Page Not Found

    \n
    \n The file or page you have requested is not found.   \n
    \n Please make sure page address is entered correctly.\n
    \n
    \n
    \n
    \n
    \n', + ); + } + body_0.__dustBody = !0; + return body_0; +})(dust); +(function (dust) { + dust.register("symbol", body_0); + function body_0(chk, ctx) { + return chk + .nx( + ctx.getPath(false, ["symbol", "$hide"]), + ctx, + { block: body_1 }, + {}, + ) + .w("\n"); + } + body_0.__dustBody = !0; + function body_1(chk, ctx) { + return chk + .w('\n\n
    \n\n
    \n
    \n \n \n \n ', + ) + .f(ctx.get(["symbol"], false), ctx, "h", ["s", "$longname_params"]) + .w('\n ') + .f(ctx.get(["symbol"], false), ctx, "h", ["$type_sep"]) + .w('\n ') + .f(ctx.get(["symbol"], false), ctx, "h", ["s", "$type"]) + .w("\n\n ") + .f(ctx.get(["symbol"], false), ctx, "h", ["s", "$tags"]) + .w( + '\n\n\n
    \n
    \n\n
    \n\n
    \n ', + ) + .x( + ctx.getPath(false, ["symbol", "alias"]), + ctx, + { block: body_2 }, + {}, + ) + .w("\n\n ") + .x( + ctx.getPath(false, ["symbol", "augments"]), + ctx, + { block: body_4 }, + {}, + ) + .w("\n\n ") + .x( + ctx.getPath(false, ["symbol", "version"]), + ctx, + { block: body_5 }, + {}, + ) + .w("\n\n ") + .x( + ctx.getPath(false, ["symbol", "since"]), + ctx, + { block: body_6 }, + {}, + ) + .w("\n\n ") + .x( + ctx.getPath(false, ["symbol", "copyright"]), + ctx, + { block: body_7 }, + {}, + ) + .w("\n\n ") + .x( + ctx.getPath(false, ["symbol", "author"]), + ctx, + { block: body_8 }, + {}, + ) + .w("\n\n ") + .x( + ctx.getPath(false, ["symbol", "license"]), + ctx, + { block: body_9 }, + {}, + ) + .w("\n
    \n\n ") + .x( + ctx.getPath(false, ["symbol", "defaultvalue"]), + ctx, + { block: body_10 }, + {}, + ) + .w("\n\n ") + .f(ctx.get(["symbol"], false), ctx, "h", ["s", "$desc"]) + .w("\n\n ") + .x( + ctx.getPath(false, ["symbol", "see"]), + ctx, + { block: body_11 }, + {}, + ) + .w("\n\n \n ") + .h( + "ne", + ctx, + { block: body_16 }, + { + key: ctx.getPath(false, ["symbol", "meta", "code", "type"]), + value: "ClassDeclaration", + }, + "h", + ) + .w("\n\n ") + .x( + ctx.getPath(false, ["symbol", "fires"]), + ctx, + { block: body_19 }, + {}, + ) + .w("\n\n ") + .x( + ctx.getPath(false, ["symbol", "returns"]), + ctx, + { block: body_21 }, + {}, + ) + .w("\n\n ") + .x( + ctx.getPath(false, ["symbol", "generator"]), + ctx, + { block: body_24 }, + {}, + ) + .w("\n\n ") + .x( + ctx.getPath(false, ["symbol", "exceptions"]), + ctx, + { block: body_28 }, + {}, + ) + .w("\n\n \n ") + .x( + ctx.getPath(false, ["symbol", "isEnum"]), + ctx, + { block: body_31 }, + {}, + ) + .w("\n\n ") + .x( + ctx.getPath(false, ["symbol", "examples"]), + ctx, + { block: body_32 }, + {}, + ) + .w("\n\n ") + .x( + ctx.getPath(false, ["template", "options", "symbols", "meta"]), + ctx, + { block: body_35 }, + {}, + ) + .w("\n\n
    \n\n
    \n
    \n\n") + .x( + ctx.getPath(false, ["symbol", "$constructor"]), + ctx, + { block: body_39 }, + {}, + ) + .w("\n\n\n") + .nx( + ctx.getPath(false, ["symbol", "isEnum"]), + ctx, + { block: body_41 }, + {}, + ) + .w("\n\n\n"); + } + body_1.__dustBody = !0; + function body_2(chk, ctx) { + return chk + .w("\n \n \n ") + .nx(ctx.get(["$constructor"], false), ctx, { block: body_3 }, {}) + .w("\n "); + } + body_2.__dustBody = !0; + function body_3(chk, ctx) { + return chk + .w('\n

    Alias: ') + .f(ctx.getPath(false, ["symbol", "alias"]), ctx, "h", [ + "s", + "$dot_prop", + ]) + .w("

    \n "); + } + body_3.__dustBody = !0; + function body_4(chk, ctx) { + return chk + .w('\n

    Extends: ') + .f(ctx.get(["symbol"], false), ctx, "h", ["s", "$extends"]) + .w("

    \n "); + } + body_4.__dustBody = !0; + function body_5(chk, ctx) { + return chk + .w('\n

    Version: ') + .f(ctx.getPath(false, ["symbol", "version"]), ctx, "h", ["s"]) + .w("

    \n "); + } + body_5.__dustBody = !0; + function body_6(chk, ctx) { + return chk + .w('\n

    Since: ') + .f(ctx.getPath(false, ["symbol", "since"]), ctx, "h", ["s"]) + .w("

    \n "); + } + body_6.__dustBody = !0; + function body_7(chk, ctx) { + return chk + .w('\n

    Copyright: ') + .f(ctx.getPath(false, ["symbol", "copyright"]), ctx, "h", ["s"]) + .w("

    \n "); + } + body_7.__dustBody = !0; + function body_8(chk, ctx) { + return chk + .w('\n

    Author: ') + .f(ctx.getPath(false, ["symbol", "author"]), ctx, "h", [ + "s", + "$author", + ]) + .w("

    \n "); + } + body_8.__dustBody = !0; + function body_9(chk, ctx) { + return chk + .w('\n

    License: ') + .f(ctx.getPath(false, ["symbol", "license"]), ctx, "h", ["s"]) + .w("

    \n "); + } + body_9.__dustBody = !0; + function body_10(chk, ctx) { + return chk + .w( + '\n

    Value: ', + ) + .f(ctx.get(["symbol"], false), ctx, "h", ["$def"]) + .w("

    \n "); + } + body_10.__dustBody = !0; + function body_11(chk, ctx) { + return chk + .w( + '\n

    \n See\n ', + ) + .h( + "gt", + ctx, + { else: body_12, block: body_14 }, + { + key: ctx.getPath(false, ["symbol", "see", "length"]), + value: 1, + }, + "h", + ) + .w("\n

    \n "); + } + body_11.__dustBody = !0; + function body_12(chk, ctx) { + return chk + .w("\n ") + .s( + ctx.getPath(false, ["symbol", "see"]), + ctx, + { block: body_13 }, + {}, + ) + .w("\n "); + } + body_12.__dustBody = !0; + function body_13(chk, ctx) { + return chk.w(" ").f(ctx.getPath(true, []), ctx, "h", ["s", "$pl"]); + } + body_13.__dustBody = !0; + function body_14(chk, ctx) { + return chk + .w("\n
      \n ") + .s( + ctx.getPath(false, ["symbol", "see"]), + ctx, + { block: body_15 }, + {}, + ) + .w("\n
    \n "); + } + body_14.__dustBody = !0; + function body_15(chk, ctx) { + return chk + .w("
  • ") + .f(ctx.getPath(true, []), ctx, "h", ["s", "$pl"]) + .w("
  • "); + } + body_15.__dustBody = !0; + function body_16(chk, ctx) { + return chk + .w("\n ") + .p("params", ctx, ctx.rebase(ctx.get(["symbol"], false)), { + template: ctx.get(["template"], false), + }) + .w(" \n ") + .x( + ctx.getPath(false, ["symbol", "isEnum"]), + ctx, + { else: body_17, block: body_18 }, + {}, + ) + .w("\n "); + } + body_16.__dustBody = !0; + function body_17(chk, ctx) { + return chk + .w("\n ") + .p("properties", ctx, ctx.rebase(ctx.get(["symbol"], false)), { + template: ctx.get(["template"], false), + }) + .w(" \n "); + } + body_17.__dustBody = !0; + function body_18(chk, ctx) { + return chk; + } + body_18.__dustBody = !0; + function body_19(chk, ctx) { + return chk + .w("\n ") + .h( + "gt", + ctx, + { block: body_20 }, + { + key: ctx.getPath(false, ["symbol", "fires", "length"]), + value: "0", + type: "number", + }, + "h", + ) + .w("\n "); + } + body_19.__dustBody = !0; + function body_20(chk, ctx) { + return chk + .w( + '\n

    \n Emits:  ', + ) + .f(ctx.get(["symbol"], false), ctx, "h", ["s", "$emits"]) + .w("\n

    \n "); + } + body_20.__dustBody = !0; + function body_21(chk, ctx) { + return chk + .w("\n ") + .h( + "gt", + ctx, + { else: body_22, block: body_23 }, + { + key: ctx.getPath(false, ["symbol", "returns", "length"]), + value: "1", + type: "number", + }, + "h", + ) + .w("\n "); + } + body_21.__dustBody = !0; + function body_22(chk, ctx) { + return chk + .w( + '\n

    \n Returns:  ', + ) + .f(ctx.get(["symbol"], false), ctx, "h", ["s", "$returns"]) + .w("\n

    \n "); + } + body_22.__dustBody = !0; + function body_23(chk, ctx) { + return chk + .w( + '\n Returns:\n

    \n ', + ) + .f(ctx.get(["symbol"], false), ctx, "h", ["s", "$returns"]) + .w("\n

    \n "); + } + body_23.__dustBody = !0; + function body_24(chk, ctx) { + return chk + .w("\n ") + .x( + ctx.getPath(false, ["symbol", "yields"]), + ctx, + { block: body_25 }, + {}, + ) + .w("\n "); + } + body_24.__dustBody = !0; + function body_25(chk, ctx) { + return chk + .w("\n ") + .h( + "gt", + ctx, + { else: body_26, block: body_27 }, + { + key: ctx.getPath(false, ["symbol", "yields", "length"]), + value: "1", + type: "number", + }, + "h", + ) + .w("\n "); + } + body_25.__dustBody = !0; + function body_26(chk, ctx) { + return chk + .w( + '\n

    \n Yields:  ', + ) + .f(ctx.get(["symbol"], false), ctx, "h", ["s", "$yields"]) + .w("\n

    \n "); + } + body_26.__dustBody = !0; + function body_27(chk, ctx) { + return chk + .w( + '\n Yields:\n

    \n ', + ) + .f(ctx.get(["symbol"], false), ctx, "h", ["s", "$yields"]) + .w("\n

    \n "); + } + body_27.__dustBody = !0; + function body_28(chk, ctx) { + return chk + .w("\n ") + .h( + "gt", + ctx, + { else: body_29, block: body_30 }, + { + key: ctx.getPath(false, ["symbol", "exceptions", "length"]), + value: "1", + type: "number", + }, + "h", + ) + .w("\n "); + } + body_28.__dustBody = !0; + function body_29(chk, ctx) { + return chk + .w( + '\n

    \n Throws:  ', + ) + .f(ctx.get(["symbol"], false), ctx, "h", ["s", "$exceptions"]) + .w("\n

    \n "); + } + body_29.__dustBody = !0; + function body_30(chk, ctx) { + return chk + .w( + '\n Throws:\n

    \n ', + ) + .f(ctx.get(["symbol"], false), ctx, "h", ["s", "$exceptions"]) + .w("\n

    \n "); + } + body_30.__dustBody = !0; + function body_31(chk, ctx) { + return chk + .w("\n ") + .p("enums", ctx, ctx.rebase(ctx.get(["symbol"], false)), { + template: ctx.get(["template"], false), + }) + .w(" \n "); + } + body_31.__dustBody = !0; + function body_32(chk, ctx) { + return chk + .w("\n ") + .s( + ctx.getPath(false, ["symbol", "examples"]), + ctx, + { block: body_33 }, + {}, + ) + .w("\n "); + } + body_32.__dustBody = !0; + function body_33(chk, ctx) { + return chk + .w("\n

    Example\n ") + .h( + "gt", + ctx, + { block: body_34 }, + { + key: ctx.getPath(false, ["symbol", "examples", "length"]), + value: 1, + }, + "h", + ) + .w("\n ") + .f(ctx.getPath(true, []), ctx, "h", ["$get_caption", "s"]) + .w("

    \n
    ")
    +            .f(ctx.getPath(true, []), ctx, "h", [
    +                "$nt",
    +                "$tnl",
    +                "$remove_caption",
    +            ])
    +            .w("
    \n "); + } + body_33.__dustBody = !0; + function body_34(chk, ctx) { + return chk + .w("\n  #") + .h( + "math", + ctx, + {}, + { key: ctx.get(["$idx"], false), method: "add", operand: "1" }, + "h", + ) + .w("\n "); + } + body_34.__dustBody = !0; + function body_35(chk, ctx) { + return chk + .w("\n ") + .x( + ctx.getPath(false, ["symbol", "meta", "lineno"]), + ctx, + { block: body_36 }, + {}, + ) + .w("\n "); + } + body_35.__dustBody = !0; + function body_36(chk, ctx) { + return chk + .w('\n

    \n ') + .x( + ctx.getPath(false, ["symbol", "meta", "filename"]), + ctx, + { block: body_37 }, + {}, + ) + .w("\n ") + .x( + ctx.getPath(false, ["symbol", "meta", "lineno"]), + ctx, + { block: body_38 }, + {}, + ) + .w("\n

    \n "); + } + body_36.__dustBody = !0; + function body_37(chk, ctx) { + return chk + .w("File: ") + .f(ctx.getPath(false, ["symbol", "meta", "filename"]), ctx, "h") + .w("  "); + } + body_37.__dustBody = !0; + function body_38(chk, ctx) { + return chk + .w("Line: ") + .f(ctx.getPath(false, ["symbol", "meta", "lineno"]), ctx, "h") + .w("  "); + } + body_38.__dustBody = !0; + function body_39(chk, ctx) { + return chk + .w("\n ") + .h( + "ne", + ctx, + { block: body_40 }, + { + key: ctx.getPath(false, ["symbol", "hideconstructor"]), + type: "boolean", + value: "true", + }, + "h", + ) + .w("\n"); + } + body_39.__dustBody = !0; + function body_40(chk, ctx) { + return chk + .w("\n ") + .p("symbol", ctx, ctx, { + symbol: ctx.getPath(false, ["symbol", "$constructor"]), + template: ctx.get(["template"], false), + }) + .w("\n "); + } + body_40.__dustBody = !0; + function body_41(chk, ctx) { + return chk + .w("\n \n ") + .s( + ctx.getPath(false, ["symbol", "$members"]), + ctx, + { block: body_42 }, + {}, + ) + .w("\n"); + } + body_41.__dustBody = !0; + function body_42(chk, ctx) { + return chk + .w("\n ") + .p("symbol", ctx, ctx, { + symbol: ctx.getPath(true, []), + template: ctx.get(["template"], false), + }) + .w("\n "); + } + body_42.__dustBody = !0; + return body_0; +})(dust); +(function (dust) { + dust.register("sidebar", body_0); + function body_0(chk, ctx) { + return chk + .w( + '\n\n\n"); + } + body_0.__dustBody = !0; + function body_1(chk, ctx) { + return chk + .w('\n