From a26389ba65e32f7c8b6501111f815d6d057bf88b Mon Sep 17 00:00:00 2001 From: Lissy93 Date: Sat, 15 Apr 2023 20:31:08 +0000 Subject: [PATCH] Deploy website - based on c8279349dd864de61971396b70f6bc6c8a933e19 --- 404.html | 13 +++++----- assets/css/styles.4fadb805.css | 25 ------------------- assets/css/styles.ccd89138.css | 25 +++++++++++++++++++ assets/js/0276dc25.6e7be07b.js | 2 -- assets/js/0276dc25.6e7be07b.js.LICENSE.txt | 1 - assets/js/0276dc25.88d76eaf.js | 2 ++ assets/js/0276dc25.88d76eaf.js.LICENSE.txt | 1 + assets/js/044d5aa6.6c391927.js | 1 + assets/js/044d5aa6.dd861788.js | 1 - assets/js/0bfe2fe2.217cf5c6.js | 1 + assets/js/0bfe2fe2.275f5202.js | 1 - assets/js/1745c531.6389f550.js | 1 + assets/js/1745c531.6e25dc2e.js | 1 - assets/js/17896441.1bc7bf92.js | 1 + assets/js/17896441.a1a52f63.js | 1 - assets/js/18ba09e8.5ec5ee21.js | 1 - assets/js/18ba09e8.c378ebcb.js | 1 + assets/js/1be78505.8bafd29f.js | 1 + assets/js/1be78505.a984814b.js | 1 - assets/js/1f391b9e.3e2df21d.js | 1 + assets/js/1f391b9e.da34fa01.js | 1 - assets/js/1f5fb0df.1a2f5700.js | 1 - assets/js/1f5fb0df.dad7e8d7.js | 1 + assets/js/2140bf91.875d4e01.js | 1 - assets/js/2140bf91.9cef2494.js | 1 + assets/js/25b7c3f2.5efe5515.js | 1 + assets/js/25b7c3f2.911b29ed.js | 1 - assets/js/27d9d47d.4502e466.js | 1 - assets/js/27d9d47d.5617c4c7.js | 1 + assets/js/393be207.317aa2b3.js | 1 - assets/js/393be207.6044d846.js | 1 + assets/js/{40.9e646974.js => 40.9c8af0e5.js} | 2 +- assets/js/402.2b7abcef.js | 1 - assets/js/402.677917c9.js | 1 + assets/js/431.07bd0f18.js | 1 - assets/js/431.f87d0658.js | 1 + assets/js/486.1cefe950.js | 1 + assets/js/486.bbbfae86.js | 1 - assets/js/4bdb0d83.262fc887.js | 1 - assets/js/4bdb0d83.584578b8.js | 1 + assets/js/4d54d076.925cbe0c.js | 1 + assets/js/4d54d076.d63fea3e.js | 1 - assets/js/52e2a80b.a7f67190.js | 1 - assets/js/52e2a80b.c04aed24.js | 1 + assets/js/608.3a1d3896.js | 1 + assets/js/608.ef4abb81.js | 1 - assets/js/625b1ed7.a891f9d2.js | 1 - assets/js/625b1ed7.b0e19da9.js | 1 + assets/js/68d50eef.9e6d6b84.js | 1 + assets/js/68d50eef.d2fb6fc4.js | 1 - assets/js/72e14192.28cd6874.js | 1 + assets/js/72e14192.2b59efef.js | 1 - assets/js/849.1b129f7a.js | 1 + assets/js/849.2cf00947.js | 1 - assets/js/87124b4e.48e3d788.js | 1 + assets/js/87124b4e.ade602bd.js | 1 - assets/js/935f2afb.9874745b.js | 1 - assets/js/935f2afb.b4c62bcc.js | 1 + .../js/{945.20a8d61e.js => 945.4fd31c05.js} | 2 +- assets/js/9b4185c1.d2066e31.js | 1 - assets/js/9b4185c1.e8cd5c5d.js | 1 + assets/js/9be9f402.274d6666.js | 1 + assets/js/9be9f402.d9bd01d9.js | 1 - assets/js/9beb87c2.05688da7.js | 1 - assets/js/9beb87c2.73e7a3e4.js | 1 + assets/js/9d9f8394.6075f970.js | 1 + assets/js/9d9f8394.c6536b0b.js | 1 - assets/js/a3713279.00e56e07.js | 1 + assets/js/a3713279.ad2ad5d4.js | 1 - assets/js/a63906ba.98341392.js | 1 - assets/js/a63906ba.d17a9fa6.js | 1 + assets/js/ac5280f2.72010f26.js | 1 - assets/js/ac5280f2.8fea0e32.js | 1 + assets/js/c4f5d8e4.6d50001d.js | 1 - assets/js/c4f5d8e4.8cc58682.js | 1 + assets/js/ccab7630.717b0cf2.js | 1 + assets/js/ccab7630.a1e110fc.js | 1 - assets/js/dea0f9ea.cb0679e8.js | 1 + assets/js/dea0f9ea.d8ddc3ea.js | 1 - assets/js/e505b3a5.e16a27ac.js | 1 + assets/js/e505b3a5.e6ccf446.js | 1 - assets/js/f52ebc2d.0bf73f45.js | 1 + assets/js/f52ebc2d.65b3cd0a.js | 1 - assets/js/f62d4472.5a2387ca.js | 1 + assets/js/f62d4472.b07549ce.js | 1 - assets/js/f9f76190.5188137e.js | 1 + assets/js/f9f76190.98d1d587.js | 1 - assets/js/ffd4f506.08f3d158.js | 1 - assets/js/ffd4f506.779186d1.js | 1 + assets/js/main.1e4604c5.js | 2 ++ ...CENSE.txt => main.1e4604c5.js.LICENSE.txt} | 0 assets/js/main.c2d2672a.js | 2 -- assets/js/runtime~main.b5287c0a.js | 1 - assets/js/runtime~main.c17e7211.js | 1 + docs/alternate-views/index.html | 13 +++++----- docs/authentication/index.html | 13 +++++----- docs/backup-restore/index.html | 13 +++++----- docs/changelog/index.html | 13 +++++----- docs/code-of-conduct/index.html | 13 +++++----- docs/configuring/index.html | 13 +++++----- docs/contributing/index.html | 13 +++++----- docs/credits/index.html | 13 +++++----- docs/deployment/index.html | 13 +++++----- docs/developing/index.html | 13 +++++----- docs/development-guides/index.html | 13 +++++----- docs/icons/index.html | 13 +++++----- docs/index.html | 13 +++++----- docs/license/index.html | 13 +++++----- docs/management/index.html | 13 +++++----- docs/multi-language-support/index.html | 13 +++++----- docs/pages-and-sections/index.html | 13 +++++----- docs/privacy/index.html | 13 +++++----- docs/quick-start/index.html | 13 +++++----- docs/readme/index.html | 13 +++++----- docs/release-workflow/index.html | 13 +++++----- docs/searching/index.html | 13 +++++----- docs/showcase/index.html | 13 +++++----- docs/showcase/readme/index.html | 13 +++++----- docs/status-indicators/index.html | 13 +++++----- docs/theming/index.html | 13 +++++----- docs/troubleshooting/index.html | 13 +++++----- docs/widgets/index.html | 13 +++++----- index.html | 13 +++++----- markdown-page/index.html | 13 +++++----- search/index.html | 13 +++++----- survey/index.html | 13 +++++----- 126 files changed, 304 insertions(+), 271 deletions(-) delete mode 100644 assets/css/styles.4fadb805.css create mode 100644 assets/css/styles.ccd89138.css delete mode 100644 assets/js/0276dc25.6e7be07b.js delete mode 100644 assets/js/0276dc25.6e7be07b.js.LICENSE.txt create mode 100644 assets/js/0276dc25.88d76eaf.js create mode 100644 assets/js/0276dc25.88d76eaf.js.LICENSE.txt create mode 100644 assets/js/044d5aa6.6c391927.js delete mode 100644 assets/js/044d5aa6.dd861788.js create mode 100644 assets/js/0bfe2fe2.217cf5c6.js delete mode 100644 assets/js/0bfe2fe2.275f5202.js create mode 100644 assets/js/1745c531.6389f550.js delete mode 100644 assets/js/1745c531.6e25dc2e.js create mode 100644 assets/js/17896441.1bc7bf92.js delete mode 100644 assets/js/17896441.a1a52f63.js delete mode 100644 assets/js/18ba09e8.5ec5ee21.js create mode 100644 assets/js/18ba09e8.c378ebcb.js create mode 100644 assets/js/1be78505.8bafd29f.js delete mode 100644 assets/js/1be78505.a984814b.js create mode 100644 assets/js/1f391b9e.3e2df21d.js delete mode 100644 assets/js/1f391b9e.da34fa01.js delete mode 100644 assets/js/1f5fb0df.1a2f5700.js create mode 100644 assets/js/1f5fb0df.dad7e8d7.js delete mode 100644 assets/js/2140bf91.875d4e01.js create mode 100644 assets/js/2140bf91.9cef2494.js create mode 100644 assets/js/25b7c3f2.5efe5515.js delete mode 100644 assets/js/25b7c3f2.911b29ed.js delete mode 100644 assets/js/27d9d47d.4502e466.js create mode 100644 assets/js/27d9d47d.5617c4c7.js delete mode 100644 assets/js/393be207.317aa2b3.js create mode 100644 assets/js/393be207.6044d846.js rename assets/js/{40.9e646974.js => 40.9c8af0e5.js} (58%) delete mode 100644 assets/js/402.2b7abcef.js create mode 100644 assets/js/402.677917c9.js delete mode 100644 assets/js/431.07bd0f18.js create mode 100644 assets/js/431.f87d0658.js create mode 100644 assets/js/486.1cefe950.js delete mode 100644 assets/js/486.bbbfae86.js delete mode 100644 assets/js/4bdb0d83.262fc887.js create mode 100644 assets/js/4bdb0d83.584578b8.js create mode 100644 assets/js/4d54d076.925cbe0c.js delete mode 100644 assets/js/4d54d076.d63fea3e.js delete mode 100644 assets/js/52e2a80b.a7f67190.js create mode 100644 assets/js/52e2a80b.c04aed24.js create mode 100644 assets/js/608.3a1d3896.js delete mode 100644 assets/js/608.ef4abb81.js delete mode 100644 assets/js/625b1ed7.a891f9d2.js create mode 100644 assets/js/625b1ed7.b0e19da9.js create mode 100644 assets/js/68d50eef.9e6d6b84.js delete mode 100644 assets/js/68d50eef.d2fb6fc4.js create mode 100644 assets/js/72e14192.28cd6874.js delete mode 100644 assets/js/72e14192.2b59efef.js create mode 100644 assets/js/849.1b129f7a.js delete mode 100644 assets/js/849.2cf00947.js create mode 100644 assets/js/87124b4e.48e3d788.js delete mode 100644 assets/js/87124b4e.ade602bd.js delete mode 100644 assets/js/935f2afb.9874745b.js create mode 100644 assets/js/935f2afb.b4c62bcc.js rename assets/js/{945.20a8d61e.js => 945.4fd31c05.js} (58%) delete mode 100644 assets/js/9b4185c1.d2066e31.js create mode 100644 assets/js/9b4185c1.e8cd5c5d.js create mode 100644 assets/js/9be9f402.274d6666.js delete mode 100644 assets/js/9be9f402.d9bd01d9.js delete mode 100644 assets/js/9beb87c2.05688da7.js create mode 100644 assets/js/9beb87c2.73e7a3e4.js create mode 100644 assets/js/9d9f8394.6075f970.js delete mode 100644 assets/js/9d9f8394.c6536b0b.js create mode 100644 assets/js/a3713279.00e56e07.js delete mode 100644 assets/js/a3713279.ad2ad5d4.js delete mode 100644 assets/js/a63906ba.98341392.js create mode 100644 assets/js/a63906ba.d17a9fa6.js delete mode 100644 assets/js/ac5280f2.72010f26.js create mode 100644 assets/js/ac5280f2.8fea0e32.js delete mode 100644 assets/js/c4f5d8e4.6d50001d.js create mode 100644 assets/js/c4f5d8e4.8cc58682.js create mode 100644 assets/js/ccab7630.717b0cf2.js delete mode 100644 assets/js/ccab7630.a1e110fc.js create mode 100644 assets/js/dea0f9ea.cb0679e8.js delete mode 100644 assets/js/dea0f9ea.d8ddc3ea.js create mode 100644 assets/js/e505b3a5.e16a27ac.js delete mode 100644 assets/js/e505b3a5.e6ccf446.js create mode 100644 assets/js/f52ebc2d.0bf73f45.js delete mode 100644 assets/js/f52ebc2d.65b3cd0a.js create mode 100644 assets/js/f62d4472.5a2387ca.js delete mode 100644 assets/js/f62d4472.b07549ce.js create mode 100644 assets/js/f9f76190.5188137e.js delete mode 100644 assets/js/f9f76190.98d1d587.js delete mode 100644 assets/js/ffd4f506.08f3d158.js create mode 100644 assets/js/ffd4f506.779186d1.js create mode 100644 assets/js/main.1e4604c5.js rename assets/js/{main.c2d2672a.js.LICENSE.txt => main.1e4604c5.js.LICENSE.txt} (100%) delete mode 100644 assets/js/main.c2d2672a.js delete mode 100644 assets/js/runtime~main.b5287c0a.js create mode 100644 assets/js/runtime~main.c17e7211.js diff --git a/404.html b/404.html index 7d3fc9bc..497bca95 100644 --- a/404.html +++ b/404.html @@ -4,14 +4,15 @@ -Page Not Found | Dashy - - + +Page Not Found | Dashy + +
-
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- - +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

+ + \ No newline at end of file diff --git a/assets/css/styles.4fadb805.css b/assets/css/styles.4fadb805.css deleted file mode 100644 index 5a136a4f..00000000 --- a/assets/css/styles.4fadb805.css +++ /dev/null @@ -1,25 +0,0 @@ -@import url(https://fonts.googleapis.com/css2?family=Racing+Sans+One&family=Raleway:wght@200&family=Roboto+Mono:wght@500&display=swap);.row .col,img{max-width:100%}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.admonition-icon,.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.clean-btn,.close,.menu__link,.navbar__link{cursor:pointer}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.footer__items,.menu__list,.pills__item{list-style-type:none}.tabs__item,hr,img{box-sizing:content-box}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.react-toggle,html{-webkit-tap-highlight-color:transparent}.close,.home-page-features-wrapper .feature div.read-the-docs{float:right}.DocSearch-Hit-content-wrapper,.navbar__title,.text--truncate{text-overflow:ellipsis;white-space:nowrap}.button,.dropdown__link,.navbar__title,.text--truncate{white-space:nowrap}:root{--ra-admonition-background-color:var(--ifm-alert-background-color);--ra-admonition-border-width:var(--ifm-alert-border-width);--ra-admonition-border-color:var(--ifm-alert-border-color);--ra-admonition-border-radius:var(--ifm-alert-border-radius);--ra-admonition-color:var(--ifm-alert-color);--ra-admonition-padding-vertical:var(--ifm-alert-padding-vertical);--ra-admonition-padding-horizontal:var(--ifm-alert-padding-horizontal);--ra-color-note:var(--ifm-color-secondary);--ra-color-important:var(--ifm-color-info);--ra-color-tip:var(--ifm-color-success);--ra-color-caution:var(--ifm-color-warning);--ra-color-warning:var(--ifm-color-danger);--ra-color-text-dark:var(--ifm-color-gray-900)}.admonition{margin-bottom:1em;--ra-admonition-icon-color:var(--ra-admonition-color)}.admonition:not(.alert){--ra-admonition-background-color:var(--ifm-color-primary);background-color:var(--ra-admonition-background-color);border:var(--ra-admonition-border-width) solid var(--ra-admonition-border-color);border-radius:var(--ra-admonition-border-radius);box-sizing:border-box;color:var(--ra-admonition-color);padding:var(--ra-admonition-padding-vertical) var(--ra-admonition-padding-horizontal)}.container,.row .col{padding:0 var(--ifm-spacing-horizontal);width:100%}.admonition h5{margin-bottom:8px;margin-top:0;text-transform:uppercase}.admonition-icon{display:inline-block;margin-right:.2em}.admonition-icon svg{stroke-width:0;fill:var(--ra-admonition-icon-color);stroke:var(--ra-admonition-icon-color);display:inline-block;height:22px;width:22px}.admonition-content>:last-child,blockquote>:last-child{margin-bottom:0}.admonition-note{--ra-admonition-color:var(--ra-color-text-dark)}:root{--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-color-primary:#3578e5;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-secondary:#ebedf0;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-success:#00a400;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-info:#54c7ec;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-warning:#ffba00;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-danger:#fa383e;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:transparent;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:rgba(0,0,0,.05);--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 rgba(0,0,0,.1);--ifm-global-shadow-md:0 5px 40px rgba(0,0,0,.2);--ifm-global-shadow-tl:0 12px 28px 0 rgba(0,0,0,.2),0 2px 4px 0 rgba(0,0,0,.1);--ifm-z-index-dropdown:3;--ifm-z-index-fixed:4;--ifm-z-index-overlay:6;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:rgba(0,0,0,.05);--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.3rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-color-emphasis-100);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:inherit;--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:transparent;--ifm-table-stripe-background:var(--ifm-color-emphasis-100);--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-color:#6a737d;--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-padding-horizontal:1rem;--ifm-blockquote-padding-vertical:1rem;--ifm-hr-border-color:var(--ifm-color-emphasis-500);--ifm-hr-border-width:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:#888;--ifm-scrollbar-thumb-hover-background-color:#555;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:var(--ifm-global-border-width);--ifm-alert-color:var(--ifm-font-color-base-inverse);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size-sm:2rem;--ifm-avatar-photo-size-md:3rem;--ifm-avatar-photo-size-lg:4rem;--ifm-avatar-photo-size-xl:6rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.0625rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:1rem;--ifm-breadcrumb-padding-vertical:0.5rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-margin:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:1rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:80vw;--ifm-pagination-border-radius:calc(var(--ifm-global-radius)*var(--ifm-pagination-size-multiplier));--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.0625rem;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-size-multiplier:1;--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.0625rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--ifm-tabs-spacing:0.0625rem}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:transparent}.navbar--dark,.navbar--primary{--ifm-navbar-search-input-background-color:hsla(0,0%,100%,.1);--ifm-navbar-search-input-placeholder-color:hsla(0,0%,100%,.5)}*{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);--primary:#54bff7;--background:var(--pale-grey);--text-color:var(--black);--hero-background:var(--bright-white);--kinda-transparent:#ffffffd9;--hyperlink:#ff62ce;--feature-img-shadow:4px 4px 6px #a9a9a980,-2px -2px 4px rgba(0,0,0,.4);--footer-color:var(--white);--footer-text-color:var(--black);scroll-behavior:smooth}body{background:var(--background)}.container{margin:0 auto;max-width:var(--ifm-container-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.container--fluid{max-width:inherit}.row{display:flex;flex-direction:row;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none,.markdown>:first-child{margin-top:0!important}.row .col{--ifm-col-width:100%;flex:1 0;margin-left:0}.row .col.col--1,.row .col.col--2,.row .col.col--3,.row .col[class*=col--]{flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--1{--ifm-col-width:8.33333%}.row .col.col--offset-1{margin-left:8.33333%}.row .col.col--2{--ifm-col-width:16.66667%}.row .col.col--offset-2{margin-left:16.66667%}.row .col.col--3{--ifm-col-width:25%}.row .col.col--offset-3{margin-left:25%}.row .col.col--4{--ifm-col-width:33.33333%;flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--offset-4{margin-left:33.33333%}.row .col.col--5{--ifm-col-width:41.66667%;flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--6,.row .col.col--7{flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--offset-5{margin-left:41.66667%}.row .col.col--6{--ifm-col-width:50%}.row .col.col--offset-6{margin-left:50%}.row .col.col--7{--ifm-col-width:58.33333%}.row .col.col--offset-7{margin-left:58.33333%}.row .col.col--8{--ifm-col-width:66.66667%;flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--offset-8{margin-left:66.66667%}.row .col.col--9{--ifm-col-width:75%;flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--10,.row .col.col--11{flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--offset-9{margin-left:75%}.row .col.col--10{--ifm-col-width:83.33333%}.row .col.col--offset-10{margin-left:83.33333%}.row .col.col--11{--ifm-col-width:91.66667%}.row .col.col--offset-11{margin-left:91.66667%}.row .col.col--12{--ifm-col-width:100%;flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--offset-12{margin-left:100%}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid rgba(0,0,0,.1);border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:transparent;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}article div.markdown h1,h1{font-size:var(--ifm-h1-font-size)}article div.markdown h2,h2{font-size:var(--ifm-h2-font-size)}article div.markdown h3,h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{border-style:none}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before,hr:after,hr:before{content:"";display:table}.markdown:after,hr:after{clear:both}.markdown>h1{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading));margin-top:calc(var(--ifm-h1-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.codeBlockContainer_J\+bg,.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical);width:100%}.avatar__photo,.card,.text--truncate,hr{overflow:hidden}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration);transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.breadcrumbs__link:hover,.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:6px solid var(--ifm-color-emphasis-300);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}hr{border-color:var(--ifm-hr-border-color);border-style:solid;border-width:var(--ifm-hr-border-width);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;padding:0}.alert,.alert a{color:var(--ifm-alert-color)}.alert{background-color:var(--ifm-alert-background-color);border-color:var(--ifm-alert-border-color);border-radius:var(--ifm-alert-border-radius);border-style:solid;border-width:var(--ifm-alert-border-width);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary);--ifm-alert-border-color:var(--ifm-color-primary)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary);--ifm-alert-border-color:var(--ifm-color-secondary);--ifm-alert-color:var(--ifm-color-gray-900)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success);--ifm-alert-border-color:var(--ifm-color-success)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info);--ifm-alert-border-color:var(--ifm-color-info)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning);--ifm-alert-border-color:var(--ifm-color-warning)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger);--ifm-alert-border-color:var(--ifm-color-danger)}.alert a{text-decoration:underline}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0}.avatar,.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.avatar__photo-link{display:block}.avatar__photo{border-radius:50%;height:var(--ifm-avatar-photo-size-md);width:var(--ifm-avatar-photo-size-md)}.avatar__photo--sm{height:var(--ifm-avatar-photo-size-sm);width:var(--ifm-avatar-photo-size-sm)}.avatar__photo--lg{height:var(--ifm-avatar-photo-size-lg);width:var(--ifm-avatar-photo-size-lg)}.avatar__photo--xl{height:var(--ifm-avatar-photo-size-xl);width:var(--ifm-avatar-photo-size-xl)}.avatar__photo+.avatar__intro{margin-left:var(--ifm-avatar-intro-margin)}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.dropdown>.navbar__link:after,.menu__link--sublist:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.avatar--vertical .avatar__intro{margin-left:0}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:first-child){margin-left:var(--ifm-breadcrumb-spacing)}.breadcrumbs__item:not(:last-child){margin-right:var(--ifm-breadcrumb-spacing)}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 .5rem;opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__item--active .breadcrumbs__link,.breadcrumbs__item:not(.breadcrumbs__item--active):hover .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border-color:var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);border-width:var(--ifm-button-border-width);font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);-webkit-user-select:none;-ms-user-select:none;user-select:none}.copyButton_M3SB,.react-toggle{-webkit-user-select:none;-ms-user-select:none}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:transparent;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}.button--primary{--ifm-button-border-color:var(--ifm-color-primary)}.button--primary:not(.button--outline){--ifm-button-background-color:var(--ifm-color-primary)}.button--primary:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-border-color:var(--ifm-color-primary-darker);--ifm-button-background-color:var(--ifm-color-primary-darker);background-color:var( - --ifm-color-primary-darker - );border-color:var( - --ifm-color-primary-darker - )}.button--secondary{--ifm-button-border-color:var(--ifm-color-secondary)}.button--secondary:not(.button--outline){--ifm-button-background-color:var(--ifm-color-secondary)}.button--secondary:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-border-color:var(--ifm-color-secondary-darker);--ifm-button-background-color:var(--ifm-color-secondary-darker);background-color:var( - --ifm-color-secondary-darker - );border-color:var( - --ifm-color-secondary-darker - )}.button--success{--ifm-button-border-color:var(--ifm-color-success)}.button--success:not(.button--outline){--ifm-button-background-color:var(--ifm-color-success)}.button--success:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-border-color:var(--ifm-color-success-darker);--ifm-button-background-color:var(--ifm-color-success-darker);background-color:var( - --ifm-color-success-darker - );border-color:var( - --ifm-color-success-darker - )}.button--info{--ifm-button-border-color:var(--ifm-color-info)}.button--info:not(.button--outline){--ifm-button-background-color:var(--ifm-color-info)}.button--info:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-border-color:var(--ifm-color-info-darker);--ifm-button-background-color:var(--ifm-color-info-darker);background-color:var( - --ifm-color-info-darker - );border-color:var( - --ifm-color-info-darker - )}.button--warning{--ifm-button-border-color:var(--ifm-color-warning)}.button--warning:not(.button--outline){--ifm-button-background-color:var(--ifm-color-warning)}.button--warning:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-border-color:var(--ifm-color-warning-darker);--ifm-button-background-color:var(--ifm-color-warning-darker);background-color:var( - --ifm-color-warning-darker - );border-color:var( - --ifm-color-warning-darker - )}.button--danger{--ifm-button-border-color:var(--ifm-color-danger)}.button--danger:not(.button--outline){--ifm-button-background-color:var(--ifm-color-danger)}.button--danger:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-border-color:var(--ifm-color-danger-darker);--ifm-button-background-color:var(--ifm-color-danger-darker);background-color:var( - --ifm-color-danger-darker - );border-color:var( - --ifm-color-danger-darker - )}.button-group{display:inline-flex}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:var(--ifm-button-group-margin)}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group>.button--active{z-index:1}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column}.card--full-height,body,html{height:100%}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style-type:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.footer__links,ul.menu__list{margin-bottom:1rem}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color)}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{background:none;border:none;color:var(--ifm-color-black);font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__menu,.menu__link,.menu__link:hover{transition-duration:var(--ifm-transition-fast);transition-timing-function:var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;transform:translateY(0);visibility:visible}.dropdown--right .dropdown__menu{right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);list-style:none;max-height:calc(100vh - var(--ifm-navbar-height));min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:100%;transform:translateY(-10px);transition-property:opacity,transform,visibility;visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor transparent;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:10rem}.docItemContainer_oiyr header+*,.footer__item,.pills__item+.pills__item{margin-top:0}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.footer__items{margin-bottom:0;padding-left:0}[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title,h2{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu{font-weight:var(--ifm-font-weight-semibold);overflow-x:hidden}.menu__list{margin:0;padding-left:0}.menu__list .menu__list{margin-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item{margin-top:.25rem}.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__link{border-radius:.25rem;display:flex;justify-content:space-between;line-height:1.25;padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal);position:relative}.menu__link,.menu__link:hover{color:var(--ifm-menu-color);transition-property:color,background}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;transition-timing-function:ease-in-out;visibility:hidden;left:0;top:0}.menu__link:hover{background:var(--ifm-menu-color-background-hover);text-decoration:none}.menu__link--sublist:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;content:" ";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;min-width:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background:var(--ifm-menu-color-background-active)}.menu--responsive .menu__button{bottom:2rem;display:none;position:fixed;right:1rem;z-index:var(--ifm-z-index-fixed)}.menu--show{-ms-scroll-chaining:none;background:var(--ifm-background-surface-color);bottom:0;left:0;overscroll-behavior:contain;padding:1rem;position:fixed;right:0;top:0;z-index:var(--ifm-z-index-overlay)}.menu--show .menu__list{display:inherit;opacity:1;transition:opacity var(--ifm-transition-fast) linear}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal);width:100%}.navbar--fixed-top{position:-webkit-sticky;position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar__inner{align-items:stretch;display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;font-weight:700;height:2rem;margin-right:1rem;min-width:0}.navbar__brand:hover{color:inherit;text-decoration:none}.navbar__title{flex:1 1 auto;overflow:hidden}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{height:100%;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.home-page-features-wrapper .feature .feature-title h3,.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.codeBlock_rtdJ,.navbar__item.dropdown{padding:0}#nprogress,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.navbar__link{font-weight:var(--ifm-font-weight-semibold);padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal);position:relative;text-decoration:none}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-color:var(--ifm-color-white);--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-toggle-color:var(--ifm-color-white)}.navbar--dark .navbar__toggle{color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input:-ms-input-placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);overflow:auto;position:fixed;transform:translate3d(-100%,0,0);transition-duration:.25s;transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar--show .navbar-sidebar{transform:translateZ(0)}.navbar-sidebar__backdrop{background-color:rgba(0,0,0,.6);position:fixed;right:0;transition-duration:.1s;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.footer,article div.markdown p img,nav.navbar{box-shadow:var(--feature-img-shadow)}.pagination__item,.pagination__link{display:inline-block}.navbar-sidebar__items{padding:.5rem}.pagination{font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item:not(:first-child){margin-left:var(--ifm-pagination-page-spacing)}.pagination__item:not(:last-child){margin-right:var(--ifm-pagination-page-spacing)}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.button-link-wrapper:hover,.pagination__link:hover{text-decoration:none}.pagination-nav{display:flex}.pagination-nav__item{display:flex;flex:1 50%;max-width:50%}.pagination-nav__item--next{text-align:right}.pagination-nav__item+.pagination-nav__item{margin-left:var(--ifm-spacing-horizontal)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);flex-grow:1;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.DocSearch-Hit[aria-selected=true] mark,.announcementBarContent_6uhP a,.keepReading_3EdK,li a:hover,main.docs p.see-repo-note a,p a:hover{text-decoration:underline}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pills__item--active{background:var(--ifm-pills-color-background-active);color:var(--ifm-pills-color-active)}.pills__item:not(.pills__item--active):hover{background-color:var(--ifm-pills-color-background-active)}.pills__item:not(:first-child){margin-left:var(--ifm-pills-spacing)}.pills__item:not(:last-child){margin-right:var(--ifm-pills-spacing)}.pills--block{display:flex;justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto;padding-left:0}.tabs__item{border-bottom:3px solid transparent;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;margin:0;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#18191a;--ifm-background-surface-color:#242526;--ifm-hover-overlay:hsla(0,0%,100%,.05);--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:hsla(0,0%,100%,.1);--primary:#db78fc;--background:var(--dark-grey);--text-color:var(--white);--hero-background:var(--black);--kinda-transparent:#000000d9;--hyperlink:var(--primary);--feature-img-shadow:4px 4px 6px #00000080,-2px -2px 4px rgba(0,0,0,.4);--footer-color:var(--black);--footer-text-color:var(--white);--heading-shadow:-5px 4px 0px #000;--sub-heading-shadow:-3px 3px 1px #000;--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}header.heroBanner_Kgsz,main.docs{background:var(--hero-background)}:root{--bright-white:#fff;--white:#f7f7f7;--pale-grey:#e9e9e8;--mid-grey:#a9a9a9;--dark-grey:##18191a;--black:#121212;--pitch-black:#000;--info:#35c9fa;--success:#8f8;--warning:#ece715;--danger:#f80363;--ifm-color-primary:var(--background);--ifm-color-primary-dark:#21af90;--ifm-color-primary-darker:#1fa588;--ifm-color-primary-darkest:#1a8870;--ifm-color-primary-light:#46cbae;--ifm-color-primary-lighter:#66d4bd;--ifm-color-primary-lightest:#92e0d0;--ifm-code-font-size:95%;--ifm-navbar-background-color:var(--hero-background);--ifm-navbar-link-color:var(--text-color);--docusaurus-announcement-bar-height:auto;--collapse-button-bg-color-dark:#2e333a;--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12);--docsearch-primary-color:var(--ifm-color-primary);--docsearch-text-color:var(--ifm-font-color-base);--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}h1{font-family:Racing Sans One,mono;font-size:4rem}button,h2,h3,h4,h5{font-family:Roboto Mono,monospace}h3{font-size:2rem}button,h4,h5{font-size:1.2rem}a,body,div,p,section,span,ul li{font-family:Raleway,sans-serif;font-size:1.2rem}.hero{--ifm-hero-background-color:var(--hero-background);--ifm-hero-text-color:var(--text-color)}.footer{--ifm-footer-background-color:var(--footer-color);--ifm-footer-color:var(--footer-text-color);--ifm-footer-link-color:var(--footer-text-color);--ifm-footer-title-color:var(--footer-text-color);--ifm-footer-link-hover-color:var(--primary);--ifm-link-color:var(--footer-text-color);--ifm-link-hover-color:var(--primary)}.footer .footer__link-item,article div.markdown a,article div.markdown code span,article div.markdown li,article div.markdown ol,article div.markdown p,article div.markdown ul,ul.table-of-contents li a{font-size:1rem}.footer .footer__copyright,.footer .footer__copyright a{font-family:Roboto Mono,monospace;font-size:.9rem;font-weight:700;opacity:.9}.docusaurus-highlight-code-line{background-color:rgba(0,0,0,.1);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}nav.navbar a.navbar__brand b{font-size:1.5rem;font-weight:700}li a,li a:hover,p a,p a:hover,ul.table-of-contents li a:hover,ul.table-of-contents li a:hover code{color:var(--hyperlink)}h1,h2,h3,h4,h5{cursor:default}article div.markdown{--ifm-h1-font-size:3.0rem;--ifm-h2-font-size:2.5rem;--ifm-h3-font-size:1.4rem}article div.markdown p img{border-radius:4px}article div.markdown table>tr>td>a>img{border-radius:6px}ul.table-of-contents li a.table-of-contents__link--active,ul.table-of-contents li a.table-of-contents__link--active code{color:var(--hyperlink);font-weight:700}ul.menu__list li.menu__list-item a.active{color:var(--hyperlink);font-weight:700}code span{font-family:Roboto Mono,monospace;font-size:.9rem!important}html[data-theme=light] main div.container.padding-top--md.padding-bottom--lg{padding:0 1rem!important}html[data-theme=light] main div.container.padding-top--md.padding-bottom--lg div>div.col.docItemCol_node_modules-\@docusaurus-theme-classic-lib-next-theme-DocItem-styles-module{background:var(--bright-white);border-right:1px solid var(--ifm-toc-border-color);padding:1rem}html[data-theme=light] main div.container.padding-top--md.padding-bottom--lg div>div.col.docItemCol_node_modules-\@docusaurus-theme-classic-lib-next-theme-DocItem-styles-module ul li a{font-weight:700}html[data-theme=light] main div.container.padding-top--md.padding-bottom--lg .table-of-contents__left-border{border-left:none}html[data-theme=light] main div.container.padding-top--md.padding-bottom--lg .pagination-nav__label{color:var(--black)}#nprogress .bar{background:#29d;height:2px;left:0;position:fixed;top:0;width:100%;z-index:7}#nprogress .peg{box-shadow:0 0 10px #29d,0 0 5px #29d;height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}#docusaurus-base-url-issue-banner-container,.collapseSidebarButton_eoK2,.sidebarLogo_hmkv,.themedImage_TMUO,html[data-announcement-bar-initially-dismissed=true] .announcementBar_axC9{display:none}.skipToContent_OuoZ{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_OuoZ:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.announcementBar_axC9{background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);height:var(--docusaurus-announcement-bar-height);position:relative;width:100%}.announcementBarClose_A3A1{font-size:1.25rem;height:100%;position:absolute;right:0;top:0;width:55px}.announcementBarContent_6uhP{font-size:85%;padding:5px 0;text-align:center;width:100%}.announcementBarCloseable_y4cp{margin-right:55px}.announcementBarContent_6uhP a{color:inherit}.react-toggle{cursor:pointer;position:relative;touch-action:pan-x;user-select:none}.react-toggle-screenreader-only{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;position:absolute;width:1px}.react-toggle--disabled{cursor:not-allowed}.react-toggle-track{background-color:#4d4d4d;border-radius:30px;height:24px;transition:.2s;width:50px}.react-toggle-track-check,.react-toggle-track-x{bottom:0;height:10px;margin:auto 0;top:0;position:absolute}.react-toggle-track-check{left:8px;opacity:0;transition:opacity .25s;width:14px}.react-toggle--checked .react-toggle-track-check,.react-toggle-track-x,[data-theme=dark] .react-toggle .react-toggle-track-check{opacity:1;transition:opacity .25s}.react-toggle-track-x{right:10px;width:10px}.react-toggle--checked .react-toggle-track-x,[data-theme=dark] .react-toggle .react-toggle-track-x{opacity:0}.react-toggle-thumb{background-color:#fafafa;border:1px solid #4d4d4d;border-radius:50%;height:22px;left:1px;position:absolute;top:1px;transition:.25s;width:22px}.react-toggle--checked .react-toggle-thumb,[data-theme=dark] .react-toggle .react-toggle-thumb{left:27px}.react-toggle--focus .react-toggle-thumb,.react-toggle:hover .react-toggle-thumb{box-shadow:0 0 2px 3px var(--ifm-color-primary)}.react-toggle:active:not(.react-toggle--disabled) .react-toggle-thumb{box-shadow:0 0 5px 5px var(--ifm-color-primary)}.toggle_iYfV{align-items:center;display:flex;height:10px;justify-content:center;width:10px}.toggle_iYfV:before{position:absolute}.iconExternalLink_wgqa{margin-left:.3rem;position:relative;top:1px}html[data-theme=dark] .themedImage--dark_uzRr,html[data-theme=light] .themedImage--light_4Vu1{display:initial}.navbarHideable_RReh{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_FBwS{transform:translate3d(0,calc(-100% - 2px),0)}.footerLogoLink_SRtH{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.codeBlockContent_csEI:hover>.copyButton_M3SB,.codeBlockTitle_oQzk:hover+.codeBlockContent_csEI .copyButton_M3SB,.copyButton_M3SB:focus,.footerLogoLink_SRtH:hover,.hash-link:focus,:hover>.hash-link,header.heroBanner_Kgsz img.starButton_Z5jC:hover{opacity:1}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.main-wrapper{flex:1 0 auto}.docusaurus-mt-lg{margin-top:3rem}.searchQueryInput_gKrp,.searchVersionInput_yK3v{background:var(--docsearch-searchbox-focus-background);border:2px solid var(--ifm-toc-border-color);border-radius:var(--ifm-global-radius);color:var(--docsearch-text-color);font:var(--ifm-font-size-base) var(--ifm-font-family-base);margin-bottom:.5rem;padding:.8rem;transition:border var(--ifm-transition-fast) ease;width:100%}.searchQueryInput_gKrp:focus,.searchVersionInput_yK3v:focus{border-color:var(--docsearch-primary-color);outline:0}.searchQueryInput_gKrp:-ms-input-placeholder{color:var(--docsearch-muted-color)}.searchQueryInput_gKrp::placeholder{color:var(--docsearch-muted-color)}.searchResultsColumn_u0zF{font-size:.9rem;font-weight:700}.algoliaLogo_8CW0{max-width:150px}.algoliaLogoPathFill_P7SL{fill:var(--ifm-font-color-base)}.searchResultItem_AAMZ{border-bottom:1px solid var(--ifm-toc-border-color);padding:1rem 0}.searchResultItemHeading_Z8N\+{font-weight:400;margin-bottom:0}.searchResultItemPath_0ix4{--ifm-breadcrumb-separator-size-multiplier:1;color:var(--ifm-color-content-secondary);font-size:.8rem}.searchResultItemSummary_jyET{font-style:italic;margin:.5rem 0 0}.loadingSpinner_DlG9{animation:1s linear infinite a;border:.4em solid #eee;border-radius:50%;border-top:.4em solid var(--ifm-color-primary);height:3rem;margin:0 auto;width:3rem}@keyframes a{to{transform:rotate(1turn)}}.loader_L7Al{margin-top:2rem}.search-result-match{background:rgba(255,215,142,.25);color:var(--docsearch-hit-color);padding:.09em 0}.sidebarMenuIcon_iZzd{vertical-align:middle}.sidebarMenuCloseIcon_6kU2{align-items:center;display:inline-flex;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);height:24px;justify-content:center;line-height:.9;width:24px}.menu__list .menu__list{overflow-y:hidden;transition:height var(--ifm-transition-fast) linear;will-change:height}.menu__list-item--collapsed .menu__list{overflow:hidden;height:0!important}.codeBlockContent_csEI{direction:ltr;position:relative}.codeBlockTitle_oQzk{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:var(--ifm-global-radius);border-top-right-radius:var(--ifm-global-radius);font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlockWithTitle_ZT05{border-top-left-radius:0;border-top-right-radius:0}.copyButton_M3SB{background:rgba(0,0,0,.3);border-radius:var(--ifm-global-radius);color:var(--ifm-color-white);opacity:0;padding:.4rem .5rem;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2);transition:opacity .2s ease-in-out;user-select:none}.DocSearch-Button,.DocSearch-Help{-webkit-user-select:none;-ms-user-select:none}.codeBlockLines_1zSZ{display:flex;flex-direction:column;float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}html[data-theme=light]{--heading-shadow:-2px 3px 2px #a2a1a1;--sub-heading-shadow:-1px 1px 1px #a2a1a1}header.heroBanner_Kgsz{min-height:calc(100vh - 4rem);overflow:hidden;padding:4rem 1rem;position:relative;text-align:center}header.heroBanner_Kgsz h1.heroTitle_BKcm{font-family:Racing Sans One,mono;font-size:8rem;text-shadow:var(--heading-shadow)}header.heroBanner_Kgsz h3.heroSubTitle_VV83{text-shadow:var(--sub-heading-shadow)}header.heroBanner_Kgsz img.starButton_Z5jC{opacity:.85;position:absolute;right:1rem;top:1rem;width:12rem}.scrollDown_f1kE,main.docs p.see-repo-note{width:-webkit-fit-content;width:-moz-fit-content}.buttons_3T5n{align-items:center;display:flex;justify-content:center;margin:1.5rem}.dashyDescription_wvhj{font-size:1.2rem;margin:1rem auto;max-width:680px;text-align:left}.keepReading_3EdK{cursor:pointer;font-size:1.2rem;margin-left:.5rem}.scrollDown_f1kE{bottom:2rem;cursor:pointer;display:flex;left:42%;margin:2rem auto;position:absolute;width:fit-content}.scrollDownText_L5rW{color:var(--text-color);font-size:1.2rem;font-weight:700;margin:0 1rem}.scrollDownIcon_\+yvr{width:2rem}.scrollDownIcon_\+yvr path{fill:var(--text-color)}.button{border:none;border-radius:4px;color:var(--black);cursor:pointer;display:inline-block;display:flex;font-size:1.3rem;font-weight:700;margin:.5rem;min-width:12rem;padding:.75rem 1rem;position:relative;transition:none}.button svg{margin-right:.5rem;width:1.8rem}.button.color-btn:hover{color:rgba(0,0,0,.702);top:2px}.button.color-btn:active{box-shadow:none!important;color:rgba(0,0,0,.502);top:4px}.button.color-btn.btn-pink{background:#db78fc;box-shadow:0 4px #b83ddd}.button.color-btn.btn-pink:hover{box-shadow:0 2px #b83ddd}.button.color-btn.btn-purple{background:#9083ed;box-shadow:0 4px #6b3cd6}.button.color-btn.btn-purple:hover{box-shadow:0 2px #6b3cd6}.button.color-btn.btn-blue{background:#5c85f7;box-shadow:0 4px #3d48dd}.button.color-btn.btn-blue:hover{box-shadow:0 2px #3d48dd}.button.color-btn.btn-green{background:#41ef90;box-shadow:0 4px #1e9554}.button.color-btn.btn-green:hover{box-shadow:0 2px #1e9554}.button.color-btn.btn-yellow{background:#dcff5a;box-shadow:0 4px #ceb73f}.button.color-btn.btn-yellow:hover{box-shadow:0 2px #ceb73f}main.docs{box-shadow:var(--feature-img-shadow);margin:1rem auto;max-width:1250px;padding:1rem}main.docs h1.docs-title{font-size:5rem;margin:0}main.docs p.see-repo-note{background:rgba(255,255,170,.839);border-radius:3px;padding:.25rem 1rem;width:fit-content}main.docs p.see-repo-note a,main.docs p.see-repo-note b,main.docs p.see-repo-note span{color:#000;font-size:1rem;font-style:italic}main.docs p.see-repo-note a{color:#000;font-size:1rem;font-weight:700}main.docs div.row1{display:flex;flex-direction:row}main.docs div.docs-links-section{display:flex;flex-wrap:wrap}main.docs div.docs-contents{color:var(--text-color);display:flex;flex-direction:column;justify-content:space-around}main.docs div.docs-contents h3.section-title{margin:1rem .5rem .5rem}main.docs div.docs-contents a{display:flex;flex-direction:column;margin:.5rem .75rem;min-height:5rem;padding:.25rem .5rem;width:calc(33% - 1.5rem)}main.docs div.docs-contents a p.name{font-size:1.4rem;margin:0;text-align:left}main.docs div.docs-contents a span.description{font-size:1rem;text-align:left;white-space:pre-wrap}.color-pink{--feature-color:#db78fc}.color-blue{--feature-color:#5c85f7}.color-green{--feature-color:#41ef90}.color-yellow{--feature-color:#dcff5a}.color-white{--feature-color:#fff}html[data-theme=light] .color-pink{--feature-color:#b83ddd}html[data-theme=light] .color-blue{--feature-color:#6b3cd6}html[data-theme=light] .color-green{--feature-color:#1e9554}html[data-theme=light] .color-yellow{--feature-color:#ceb73f}html[data-theme=light] .color-white{--feature-color:#000}.home-page-features-wrapper{display:flex;flex-direction:column;font-size:1.2rem}.home-page-features-wrapper .feature{align-items:center;display:flex;justify-content:center;margin:0;padding:.5rem}.home-page-features-wrapper .feature.align-left{background:var(--background);box-shadow:0 1px 4px #000;flex-direction:row}.home-page-features-wrapper .feature.align-right{background:var(--hero-background);box-shadow:0 -1px 4px rgba(0,0,0,.702);flex-direction:row-reverse}.home-page-features-wrapper .feature .feature-half{margin:1rem;padding:.25rem;width:40%}.home-page-features-wrapper .feature .feature-half.assets{align-items:center;background:var(--feature-color);border-radius:8px;box-shadow:var(--feature-img-shadow);display:flex;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;justify-content:center;margin:.5rem}.home-page-features-wrapper .feature .feature-half.assets img.demo,.home-page-features-wrapper .feature .feature-half.assets span.not-demo{background:var(--kinda-transparent);border-radius:8px;box-shadow:var(--feature-img-shadow);height:100%;max-height:36rem;min-height:12rem;object-fit:contain;width:100%}.home-page-features-wrapper .feature .feature-half.assets span.not-demo{align-items:center;display:flex;justify-content:center}.home-page-features-wrapper .feature .feature-title{align-items:flex-end;color:var(--feature-color);display:flex;margin:1rem 0}.DocSearch-Button,.DocSearch-Button-Container{align-items:center;display:flex}.home-page-features-wrapper .feature .feature-title svg{margin-right:.5rem;width:2rem}.home-page-features-wrapper .feature div.read-the-docs a.button-link-wrapper{margin:0 1rem 1rem}.home-page-features-wrapper .feature div.read-the-docs small{margin:0 .5rem;opacity:.75}iframe#dashy-survey{border:none;height:92vh;width:100%}.DocSearch-Button{background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;font-weight:500;height:36px;justify-content:space-between;padding:0 8px;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:0}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Hit-Tree,.DocSearch-Hit-action,.DocSearch-Hit-icon,.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Input,.DocSearch-Link{-webkit-appearance:none;font:inherit}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;width:20px}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:4}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{appearance:none;background:0 0;border:0;color:var(--docsearch-text-color);flex:1;font-size:1.2em;height:100%;outline:0;padding:0 0 0 8px;width:80%}.DocSearch-Hit-action-button,.DocSearch-Reset{-webkit-appearance:none;border:0;cursor:pointer}.DocSearch-Input:-ms-input-placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Cancel,.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator,.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset{animation:.1s ease-in forwards b;appearance:none;background:none;border-radius:50%;color:var(--docsearch-icon-color);padding:2px;right:0}.DocSearch-Help,.DocSearch-HitsFooter,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Reset:focus{outline:0}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:0 0}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help{font-size:.9em;margin:0;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a,.docs-wrapper{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}.DocSearch-Hit--deleting{opacity:0;transition:.25s linear}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:.25s linear .25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:-webkit-sticky;position:sticky;top:0;z-index:2}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{appearance:none;background:none;border-radius:50%;color:inherit;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:background-color .1s ease-in}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:0;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none;width:100%;z-index:5}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}@keyframes b{0%{opacity:0}to{opacity:1}}.DocSearch-Button{margin:0;transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.DocSearch-Container{z-index:calc(var(--ifm-z-index-fixed) + 1)}.tableOfContents_vrFS{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:-webkit-sticky;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.iconEdit_mS5F{margin-right:.3em;vertical-align:sub}.anchor{display:block;position:relative;top:-.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast)}.enhancedAnchor_WiXH{top:calc(var(--ifm-navbar-height)*-1 - .5rem)}.h1Heading_dC7a{font-size:3rem;margin-bottom:calc(var(--ifm-leading-desktop)*var(--ifm-leading))}.lastUpdated_wj\+Z{font-size:smaller;font-style:italic;margin-top:.2rem}.docMainContainer_r8cw,.docPage_lDyR{display:flex;width:100%}.mdxPageWrapper_eQvw{justify-content:center}@media (min-width:997px){.searchBox_Bc3W{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.sidebar_a3j0{display:flex;flex-direction:column;height:100%;max-height:100vh;padding-top:var(--ifm-navbar-height);position:-webkit-sticky;position:sticky;top:0;transition:opacity 50ms;width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_VlPv{padding-top:0}.sidebarHidden_OqfG{height:0;opacity:0;overflow:hidden;visibility:hidden}.sidebarLogo_hmkv{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_hmkv img{height:2rem;margin-right:.5rem}.menu_cyFh{flex-grow:1;padding:.5rem}.menuLinkText_lRH\+{cursor:auto}.menuLinkText_lRH\+:hover{background:none}.menuWithAnnouncementBar_\+O1J{margin-bottom:var(--docusaurus-announcement-bar-height)}.collapseSidebarButton_eoK2{background-color:var(--ifm-button-background-color);border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:-webkit-sticky;position:sticky}.collapseSidebarButtonIcon_e\+kA{margin-top:4px;transform:rotate(180deg)}.expandSidebarButtonIcon_cxi8,html[dir=rtl] .collapseSidebarButtonIcon_e\+kA{transform:rotate(0)}html[data-theme=dark] .collapseSidebarButton_eoK2,html[data-theme=dark] .collapsedDocSidebar_zZpm:focus,html[data-theme=dark] .collapsedDocSidebar_zZpm:hover{background-color:var(--collapse-button-bg-color-dark)}.collapsedDocSidebar_zZpm:focus,.collapsedDocSidebar_zZpm:hover,html[data-theme=dark] .collapseSidebarButton_eoK2:focus,html[data-theme=dark] .collapseSidebarButton_eoK2:hover{background-color:var(--ifm-color-emphasis-200)}.docMainContainer_r8cw{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_SOUu{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docSidebarContainer_0YBq{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_Qlt2{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.collapsedDocSidebar_zZpm{align-items:center;display:flex;height:100%;justify-content:center;max-height:100vh;position:-webkit-sticky;position:sticky;top:0;transition:background-color var(--ifm-transition-fast) ease}html[dir=rtl] .expandSidebarButtonIcon_cxi8{transform:rotate(180deg)}.docItemWrapperEnhanced_aT5H{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}}@media only screen and (min-width:997px){.docItemCol_zHA2{max-width:75%!important}.lastUpdated_wj\+Z{text-align:right}}@media screen and (min-width:1024px){:root{--docusaurus-announcement-bar-height:30px}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:1200px){h1{--ifm-h1-font-size:calc(1.375rem + 1.5vw)}}@media screen and (max-width:997px){.displayOnlyInLargeViewport_cxYs{display:none!important}}@media (max-width:996px){.row .col.col.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0;max-width:var(--ifm-col-width)}.footer{--ifm-footer-padding-horizontal:0}.docSidebarContainer_0YBq,.footer__link-separator,.navbar__item{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.menu--responsive .menu__button,.navbar__toggle{display:inherit}.menu--responsive:not(.menu--show) .menu__list{display:none;opacity:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.pills--block .pills__item:not(:first-child){margin-top:var(--ifm-pills-spacing)}.pills--block .pills__item:not(:last-child){margin-bottom:var(--ifm-pills-spacing)}.tabs--block .tabs__item:not(:first-child){margin-top:var(--ifm-tabs-spacing)}.tabs--block .tabs__item:not(:last-child){margin-bottom:var(--ifm-tabs-spacing)}.searchBox_Bc3W{position:absolute;right:var(--ifm-navbar-padding-horizontal)}}@media only screen and (max-width:996px){.searchQueryColumn_oQOT,.searchResultsColumn_u0zF{max-width:60%!important}.searchLogoColumn_tJ40,.searchVersionColumn_AEiZ{max-width:40%!important}.searchLogoColumn_tJ40{padding-left:0!important}.tableOfContents_vrFS{display:none}.docItemContainer_VKW9{padding:0 .3rem}}@media (max-width:966px){header.heroBanner_Kgsz h1.heroTitle_BKcm{font-size:6rem}header.heroBanner_Kgsz h3.heroSubTitle_VV83{font-size:1.5rem}.scrollDown_f1kE{display:none}.button{width:80%}.home-page-features-wrapper .feature.align-left,.home-page-features-wrapper .feature.align-right{flex-direction:column}.home-page-features-wrapper .feature.align-left .feature-half,.home-page-features-wrapper .feature.align-right .feature-half{width:95%}}@media screen and (max-width:966px){header.heroBanner_Kgsz{padding:2rem}.buttons_3T5n{flex-direction:column}}@media (max-width:750px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder,.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%;max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Cancel{-webkit-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:0;overflow:hidden;padding:0;-webkit-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap}}@media screen and (max-width:576px){.announcementBarClose_A3A1{width:35px}.announcementBarContent_6uhP{width:auto}.announcementBarCloseable_y4cp{margin-right:35px}.searchQueryColumn_oQOT{max-width:100%!important}.searchVersionColumn_AEiZ{max-width:100%!important;padding-left:var(--ifm-spacing-horizontal)!important}}@media (max-width:500px){main.docs div.docs-contents a{width:100%}}@media (pointer:fine){.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width);animation:none;-webkit-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0}.DocSearch-Hit--deleting,.DocSearch-Hit--favoriting{transition:none}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:none}}@media print{.announcementBar_axC9,.footer,.menu,.navbar,.pagination-nav,.table-of-contents{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_1zSZ{white-space:pre-wrap}} \ No newline at end of file diff --git a/assets/css/styles.ccd89138.css b/assets/css/styles.ccd89138.css new file mode 100644 index 00000000..730c77a1 --- /dev/null +++ b/assets/css/styles.ccd89138.css @@ -0,0 +1,25 @@ +@import url(https://fonts.googleapis.com/css2?family=Racing+Sans+One&family=Raleway:wght@200&family=Roboto+Mono:wght@500&display=swap);.row .col,img{max-width:100%}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.admonition-icon,.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.clean-btn,.close,.menu__link,.navbar__link{cursor:pointer}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.footer__items,.menu__list,.pills__item{list-style-type:none}.tabs__item,hr,img{box-sizing:initial}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.react-toggle,html{-webkit-tap-highlight-color:transparent}.close,.home-page-features-wrapper .feature div.read-the-docs{float:right}.DocSearch-Hit-content-wrapper,.navbar__title,.text--truncate{text-overflow:ellipsis;white-space:nowrap}.button,.dropdown__link,.navbar__title,.text--truncate{white-space:nowrap}:root{--ra-admonition-background-color:var(--ifm-alert-background-color);--ra-admonition-border-width:var(--ifm-alert-border-width);--ra-admonition-border-color:var(--ifm-alert-border-color);--ra-admonition-border-radius:var(--ifm-alert-border-radius);--ra-admonition-color:var(--ifm-alert-color);--ra-admonition-padding-vertical:var(--ifm-alert-padding-vertical);--ra-admonition-padding-horizontal:var(--ifm-alert-padding-horizontal);--ra-color-note:var(--ifm-color-secondary);--ra-color-important:var(--ifm-color-info);--ra-color-tip:var(--ifm-color-success);--ra-color-caution:var(--ifm-color-warning);--ra-color-warning:var(--ifm-color-danger);--ra-color-text-dark:var(--ifm-color-gray-900)}.admonition{margin-bottom:1em;--ra-admonition-icon-color:var(--ra-admonition-color)}.admonition:not(.alert){--ra-admonition-background-color:var(--ifm-color-primary);background-color:var(--ra-admonition-background-color);border:var(--ra-admonition-border-width) solid var(--ra-admonition-border-color);border-radius:var(--ra-admonition-border-radius);box-sizing:border-box;color:var(--ra-admonition-color);padding:var(--ra-admonition-padding-vertical) var(--ra-admonition-padding-horizontal)}.container,.row .col{padding:0 var(--ifm-spacing-horizontal);width:100%}.admonition h5{margin-bottom:8px;margin-top:0;text-transform:uppercase}.admonition-icon{display:inline-block;margin-right:.2em}.admonition-icon svg{stroke-width:0;fill:var(--ra-admonition-icon-color);stroke:var(--ra-admonition-icon-color);display:inline-block;height:22px;width:22px}.admonition-content>:last-child,blockquote>:last-child{margin-bottom:0}.admonition-note{--ra-admonition-color:var(--ra-color-text-dark)}:root{--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-color-primary:#3578e5;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-secondary:#ebedf0;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-success:#00a400;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-info:#54c7ec;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-warning:#ffba00;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-danger:#fa383e;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:3;--ifm-z-index-fixed:4;--ifm-z-index-overlay:6;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#0000000d;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.3rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-color-emphasis-100);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:inherit;--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:var(--ifm-color-emphasis-100);--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-color:#6a737d;--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-padding-horizontal:1rem;--ifm-blockquote-padding-vertical:1rem;--ifm-hr-border-color:var(--ifm-color-emphasis-500);--ifm-hr-border-width:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:#888;--ifm-scrollbar-thumb-hover-background-color:#555;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:var(--ifm-global-border-width);--ifm-alert-color:var(--ifm-font-color-base-inverse);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size-sm:2rem;--ifm-avatar-photo-size-md:3rem;--ifm-avatar-photo-size-lg:4rem;--ifm-avatar-photo-size-xl:6rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.0625rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:1rem;--ifm-breadcrumb-padding-vertical:0.5rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-margin:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:1rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:80vw;--ifm-pagination-border-radius:calc(var(--ifm-global-radius)*var(--ifm-pagination-size-multiplier));--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.0625rem;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-size-multiplier:1;--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.0625rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--ifm-tabs-spacing:0.0625rem}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}.navbar--dark,.navbar--primary{--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80}*{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);text-rendering:optimizelegibility;--primary:#54bff7;--background:var(--pale-grey);--text-color:var(--black);--hero-background:var(--bright-white);--kinda-transparent:#ffffffd9;--hyperlink:#ff62ce;--feature-img-shadow:4px 4px 6px #a9a9a980,-2px -2px 4px #0006;--footer-color:var(--white);--footer-text-color:var(--black);scroll-behavior:smooth}body{background:var(--background)}.container{margin:0 auto;max-width:var(--ifm-container-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.container--fluid{max-width:inherit}.row{display:flex;flex-direction:row;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none,.markdown>:first-child{margin-top:0!important}.row .col{--ifm-col-width:100%;flex:1 0;margin-left:0}.row .col.col--1,.row .col.col--2,.row .col.col--3,.row .col[class*=col--]{flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--1{--ifm-col-width:8.33333%}.row .col.col--offset-1{margin-left:8.33333%}.row .col.col--2{--ifm-col-width:16.66667%}.row .col.col--offset-2{margin-left:16.66667%}.row .col.col--3{--ifm-col-width:25%}.row .col.col--offset-3{margin-left:25%}.row .col.col--4{--ifm-col-width:33.33333%;flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--offset-4{margin-left:33.33333%}.row .col.col--5{--ifm-col-width:41.66667%;flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--6,.row .col.col--7{flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--offset-5{margin-left:41.66667%}.row .col.col--6{--ifm-col-width:50%}.row .col.col--offset-6{margin-left:50%}.row .col.col--7{--ifm-col-width:58.33333%}.row .col.col--offset-7{margin-left:58.33333%}.row .col.col--8{--ifm-col-width:66.66667%;flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--offset-8{margin-left:66.66667%}.row .col.col--9{--ifm-col-width:75%;flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--10,.row .col.col--11{flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--offset-9{margin-left:75%}.row .col.col--10{--ifm-col-width:83.33333%}.row .col.col--offset-10{margin-left:83.33333%}.row .col.col--11{--ifm-col-width:91.66667%}.row .col.col--offset-11{margin-left:91.66667%}.row .col.col--12{--ifm-col-width:100%;flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--offset-12{margin-left:100%}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}article div.markdown h1,h1{font-size:var(--ifm-h1-font-size)}article div.markdown h2,h2{font-size:var(--ifm-h2-font-size)}article div.markdown h3,h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{border-style:none}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before,hr:after,hr:before{content:"";display:table}.markdown:after,hr:after{clear:both}.markdown>h1{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading));margin-top:calc(var(--ifm-h1-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.codeBlockContainer_J\+bg,.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical);width:100%}.avatar__photo,.card,.text--truncate,hr{overflow:hidden}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration);transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.breadcrumbs__link:hover,.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:6px solid var(--ifm-color-emphasis-300);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}hr{border-color:var(--ifm-hr-border-color);border-style:solid;border-width:var(--ifm-hr-border-width);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;padding:0}.alert,.alert a{color:var(--ifm-alert-color)}.alert{background-color:var(--ifm-alert-background-color);border-color:var(--ifm-alert-border-color);border-radius:var(--ifm-alert-border-radius);border-style:solid;border-width:var(--ifm-alert-border-width);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary);--ifm-alert-border-color:var(--ifm-color-primary)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary);--ifm-alert-border-color:var(--ifm-color-secondary);--ifm-alert-color:var(--ifm-color-gray-900)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success);--ifm-alert-border-color:var(--ifm-color-success)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info);--ifm-alert-border-color:var(--ifm-color-info)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning);--ifm-alert-border-color:var(--ifm-color-warning)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger);--ifm-alert-border-color:var(--ifm-color-danger)}.alert a{text-decoration:underline}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0}.avatar,.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.avatar__photo-link{display:block}.avatar__photo{border-radius:50%;height:var(--ifm-avatar-photo-size-md);width:var(--ifm-avatar-photo-size-md)}.avatar__photo--sm{height:var(--ifm-avatar-photo-size-sm);width:var(--ifm-avatar-photo-size-sm)}.avatar__photo--lg{height:var(--ifm-avatar-photo-size-lg);width:var(--ifm-avatar-photo-size-lg)}.avatar__photo--xl{height:var(--ifm-avatar-photo-size-xl);width:var(--ifm-avatar-photo-size-xl)}.avatar__photo+.avatar__intro{margin-left:var(--ifm-avatar-intro-margin)}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.dropdown>.navbar__link:after,.menu__link--sublist:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.avatar--vertical .avatar__intro{margin-left:0}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:first-child){margin-left:var(--ifm-breadcrumb-spacing)}.breadcrumbs__item:not(:last-child){margin-right:var(--ifm-breadcrumb-spacing)}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 .5rem;opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__item--active .breadcrumbs__link,.breadcrumbs__item:not(.breadcrumbs__item--active):hover .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border-color:var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);border-width:var(--ifm-button-border-width);font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);-webkit-user-select:none;user-select:none}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}.button--primary{--ifm-button-border-color:var(--ifm-color-primary)}.button--primary:not(.button--outline){--ifm-button-background-color:var(--ifm-color-primary)}.button--primary:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-border-color:var(--ifm-color-primary-darker);--ifm-button-background-color:var(--ifm-color-primary-darker);background-color:var( + --ifm-color-primary-darker + );border-color:var( + --ifm-color-primary-darker + )}.button--secondary{--ifm-button-border-color:var(--ifm-color-secondary)}.button--secondary:not(.button--outline){--ifm-button-background-color:var(--ifm-color-secondary)}.button--secondary:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-border-color:var(--ifm-color-secondary-darker);--ifm-button-background-color:var(--ifm-color-secondary-darker);background-color:var( + --ifm-color-secondary-darker + );border-color:var( + --ifm-color-secondary-darker + )}.button--success{--ifm-button-border-color:var(--ifm-color-success)}.button--success:not(.button--outline){--ifm-button-background-color:var(--ifm-color-success)}.button--success:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-border-color:var(--ifm-color-success-darker);--ifm-button-background-color:var(--ifm-color-success-darker);background-color:var( + --ifm-color-success-darker + );border-color:var( + --ifm-color-success-darker + )}.button--info{--ifm-button-border-color:var(--ifm-color-info)}.button--info:not(.button--outline){--ifm-button-background-color:var(--ifm-color-info)}.button--info:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-border-color:var(--ifm-color-info-darker);--ifm-button-background-color:var(--ifm-color-info-darker);background-color:var( + --ifm-color-info-darker + );border-color:var( + --ifm-color-info-darker + )}.button--warning{--ifm-button-border-color:var(--ifm-color-warning)}.button--warning:not(.button--outline){--ifm-button-background-color:var(--ifm-color-warning)}.button--warning:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-border-color:var(--ifm-color-warning-darker);--ifm-button-background-color:var(--ifm-color-warning-darker);background-color:var( + --ifm-color-warning-darker + );border-color:var( + --ifm-color-warning-darker + )}.button--danger{--ifm-button-border-color:var(--ifm-color-danger)}.button--danger:not(.button--outline){--ifm-button-background-color:var(--ifm-color-danger)}.button--danger:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-border-color:var(--ifm-color-danger-darker);--ifm-button-background-color:var(--ifm-color-danger-darker);background-color:var( + --ifm-color-danger-darker + );border-color:var( + --ifm-color-danger-darker + )}.button-group{display:inline-flex}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:var(--ifm-button-group-margin)}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group>.button--active{z-index:1}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column}.card--full-height,body,html{height:100%}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style-type:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.footer__links,ul.menu__list{margin-bottom:1rem}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color)}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{background:none;border:none;color:var(--ifm-color-black);font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__menu,.menu__link,.menu__link:hover{transition-duration:var(--ifm-transition-fast);transition-timing-function:var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;transform:translateY(0);visibility:visible}.dropdown--right .dropdown__menu{right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);list-style:none;max-height:calc(100vh - var(--ifm-navbar-height));min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:100%;transform:translateY(-10px);transition-property:opacity,transform,visibility;visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:10rem}.docItemContainer_oiyr header+*,.footer__item,.pills__item+.pills__item{margin-top:0}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.footer__items{margin-bottom:0;padding-left:0}[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title,h2{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu{font-weight:var(--ifm-font-weight-semibold);overflow-x:hidden}.menu__list{margin:0;padding-left:0}.menu__list .menu__list{margin-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item{margin-top:.25rem}.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__link{border-radius:.25rem;display:flex;justify-content:space-between;line-height:1.25;padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal);position:relative}.menu__link,.menu__link:hover{color:var(--ifm-menu-color);transition-property:color,background}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;transition-timing-function:ease-in-out;visibility:hidden;left:0;top:0}.menu__link:hover{background:var(--ifm-menu-color-background-hover);text-decoration:none}.menu__link--sublist:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;content:" ";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;min-width:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background:var(--ifm-menu-color-background-active)}.menu--responsive .menu__button{bottom:2rem;display:none;position:fixed;right:1rem;z-index:var(--ifm-z-index-fixed)}.menu--show{background:var(--ifm-background-surface-color);bottom:0;left:0;overscroll-behavior:contain;padding:1rem;position:fixed;right:0;top:0;z-index:var(--ifm-z-index-overlay)}.menu--show .menu__list{display:inherit;opacity:1;transition:opacity var(--ifm-transition-fast) linear}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal);width:100%}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar__inner{align-items:stretch;display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;font-weight:700;height:2rem;margin-right:1rem;min-width:0}.navbar__brand:hover{color:inherit;text-decoration:none}.navbar__title{flex:1 1 auto;overflow:hidden}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{height:100%;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.home-page-features-wrapper .feature .feature-title h3,.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.codeBlock_rtdJ,.navbar__item.dropdown{padding:0}#nprogress,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.navbar__link{font-weight:var(--ifm-font-weight-semibold);padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal);position:relative;text-decoration:none}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-color:var(--ifm-color-white);--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-toggle-color:var(--ifm-color-white)}.navbar--dark .navbar__toggle{color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);overflow:auto;position:fixed;transform:translate3d(-100%,0,0);transition-duration:.25s;transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar--show .navbar-sidebar{transform:translateZ(0)}.navbar-sidebar__backdrop{background-color:#0009;position:fixed;right:0;transition-duration:.1s;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.footer,article div.markdown p img,nav.navbar{box-shadow:var(--feature-img-shadow)}.pagination__item,.pagination__link{display:inline-block}.navbar-sidebar__items{padding:.5rem}.pagination{font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item:not(:first-child){margin-left:var(--ifm-pagination-page-spacing)}.pagination__item:not(:last-child){margin-right:var(--ifm-pagination-page-spacing)}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.button-link-wrapper:hover,.pagination__link:hover{text-decoration:none}.pagination-nav{display:flex}.pagination-nav__item{display:flex;flex:1 50%;max-width:50%}.pagination-nav__item--next{text-align:right}.pagination-nav__item+.pagination-nav__item{margin-left:var(--ifm-spacing-horizontal)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);flex-grow:1;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.DocSearch-Hit[aria-selected=true] mark,.announcementBarContent_6uhP a,.keepReading_3EdK,li a:hover,main.docs p.see-repo-note a,p a:hover{text-decoration:underline}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pills__item--active{background:var(--ifm-pills-color-background-active);color:var(--ifm-pills-color-active)}.pills__item:not(.pills__item--active):hover{background-color:var(--ifm-pills-color-background-active)}.pills__item:not(:first-child){margin-left:var(--ifm-pills-spacing)}.pills__item:not(:last-child){margin-right:var(--ifm-pills-spacing)}.pills--block{display:flex;justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto;padding-left:0}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;margin:0;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#18191a;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--primary:#db78fc;--background:var(--dark-grey);--text-color:var(--white);--hero-background:var(--black);--kinda-transparent:#000000d9;--hyperlink:var(--primary);--feature-img-shadow:4px 4px 6px #00000080,-2px -2px 4px #0006;--footer-color:var(--black);--footer-text-color:var(--white);--heading-shadow:-5px 4px 0px #000;--sub-heading-shadow:-3px 3px 1px #000;--docsearch-text-color:#f5f6f7;--docsearch-container-background:#090a11cc;--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 #0304094d;--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 #494c6a80,0 -4px 8px 0 #0003;--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}header.heroBanner_Kgsz,main.docs{background:var(--hero-background)}:root{--bright-white:#fff;--white:#f7f7f7;--pale-grey:#e9e9e8;--mid-grey:#a9a9a9;--dark-grey:##18191a;--black:#121212;--pitch-black:#000;--info:#35c9fa;--success:#8f8;--warning:#ece715;--danger:#f80363;--ifm-color-primary:var(--background);--ifm-color-primary-dark:#21af90;--ifm-color-primary-darker:#1fa588;--ifm-color-primary-darkest:#1a8870;--ifm-color-primary-light:#46cbae;--ifm-color-primary-lighter:#66d4bd;--ifm-color-primary-lightest:#92e0d0;--ifm-code-font-size:95%;--ifm-navbar-background-color:var(--hero-background);--ifm-navbar-link-color:var(--text-color);--docusaurus-announcement-bar-height:auto;--collapse-button-bg-color-dark:#2e333a;--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:#656c85cc;--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 #ffffff80,0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px #1e235a66;--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 #45629b1f;--docsearch-primary-color:var(--ifm-color-primary);--docsearch-text-color:var(--ifm-font-color-base);--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}h1{font-family:Racing Sans One,mono;font-size:4rem}button,h2,h3,h4,h5{font-family:Roboto Mono,monospace}h3{font-size:2rem}button,h4,h5{font-size:1.2rem}a,body,div,p,section,span,ul li{font-family:Raleway,sans-serif;font-size:1.2rem}.hero{--ifm-hero-background-color:var(--hero-background);--ifm-hero-text-color:var(--text-color)}.footer{--ifm-footer-background-color:var(--footer-color);--ifm-footer-color:var(--footer-text-color);--ifm-footer-link-color:var(--footer-text-color);--ifm-footer-title-color:var(--footer-text-color);--ifm-footer-link-hover-color:var(--primary);--ifm-link-color:var(--footer-text-color);--ifm-link-hover-color:var(--primary)}.footer .footer__link-item,article div.markdown a,article div.markdown code span,article div.markdown li,article div.markdown ol,article div.markdown p,article div.markdown ul,ul.table-of-contents li a{font-size:1rem}.footer .footer__copyright,.footer .footer__copyright a{font-family:Roboto Mono,monospace;font-size:.9rem;font-weight:700;opacity:.9}.docusaurus-highlight-code-line{background-color:#0000001a;display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}nav.navbar a.navbar__brand b{font-size:1.5rem;font-weight:700}li a,li a:hover,p a,p a:hover,ul.table-of-contents li a:hover,ul.table-of-contents li a:hover code{color:var(--hyperlink)}h1,h2,h3,h4,h5{cursor:default}article div.markdown{--ifm-h1-font-size:3.0rem;--ifm-h2-font-size:2.5rem;--ifm-h3-font-size:1.4rem}article div.markdown p img{border-radius:4px}article div.markdown table>tr>td>a>img{border-radius:6px}ul.table-of-contents li a.table-of-contents__link--active,ul.table-of-contents li a.table-of-contents__link--active code{color:var(--hyperlink);font-weight:700}ul.menu__list li.menu__list-item a.active{color:var(--hyperlink);font-weight:700}code span{font-family:Roboto Mono,monospace;font-size:.9rem!important}html[data-theme=light] main div.container.padding-top--md.padding-bottom--lg{padding:0 1rem!important}html[data-theme=light] main div.container.padding-top--md.padding-bottom--lg div>div.col.docItemCol_node_modules-\@docusaurus-theme-classic-lib-next-theme-DocItem-styles-module{background:var(--bright-white);border-right:1px solid var(--ifm-toc-border-color);padding:1rem}html[data-theme=light] main div.container.padding-top--md.padding-bottom--lg div>div.col.docItemCol_node_modules-\@docusaurus-theme-classic-lib-next-theme-DocItem-styles-module ul li a{font-weight:700}html[data-theme=light] main div.container.padding-top--md.padding-bottom--lg .table-of-contents__left-border{border-left:none}html[data-theme=light] main div.container.padding-top--md.padding-bottom--lg .pagination-nav__label{color:var(--black)}#nprogress .bar{background:#29d;height:2px;left:0;position:fixed;top:0;width:100%;z-index:7}#nprogress .peg{box-shadow:0 0 10px #29d,0 0 5px #29d;height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}#docusaurus-base-url-issue-banner-container,.collapseSidebarButton_eoK2,.sidebarLogo_hmkv,.themedImage_TMUO,html[data-announcement-bar-initially-dismissed=true] .announcementBar_axC9{display:none}.skipToContent_OuoZ{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_OuoZ:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.announcementBar_axC9{background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);height:var(--docusaurus-announcement-bar-height);position:relative;width:100%}.announcementBarClose_A3A1{font-size:1.25rem;height:100%;position:absolute;right:0;top:0;width:55px}.announcementBarContent_6uhP{font-size:85%;padding:5px 0;text-align:center;width:100%}.announcementBarCloseable_y4cp{margin-right:55px}.announcementBarContent_6uhP a{color:inherit}.react-toggle{cursor:pointer;position:relative;touch-action:pan-x;-webkit-user-select:none;user-select:none}.react-toggle-screenreader-only{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;position:absolute;width:1px}.react-toggle--disabled{cursor:not-allowed}.react-toggle-track{background-color:#4d4d4d;border-radius:30px;height:24px;transition:.2s;width:50px}.react-toggle-track-check,.react-toggle-track-x{bottom:0;height:10px;margin:auto 0;top:0;position:absolute}.react-toggle-track-check{left:8px;opacity:0;transition:opacity .25s;width:14px}.react-toggle--checked .react-toggle-track-check,.react-toggle-track-x,[data-theme=dark] .react-toggle .react-toggle-track-check{opacity:1;transition:opacity .25s}.react-toggle-track-x{right:10px;width:10px}.react-toggle--checked .react-toggle-track-x,[data-theme=dark] .react-toggle .react-toggle-track-x{opacity:0}.react-toggle-thumb{background-color:#fafafa;border:1px solid #4d4d4d;border-radius:50%;height:22px;left:1px;position:absolute;top:1px;transition:.25s;width:22px}.react-toggle--checked .react-toggle-thumb,[data-theme=dark] .react-toggle .react-toggle-thumb{left:27px}.react-toggle--focus .react-toggle-thumb,.react-toggle:hover .react-toggle-thumb{box-shadow:0 0 2px 3px var(--ifm-color-primary)}.react-toggle:active:not(.react-toggle--disabled) .react-toggle-thumb{box-shadow:0 0 5px 5px var(--ifm-color-primary)}.toggle_iYfV{align-items:center;display:flex;height:10px;justify-content:center;width:10px}.toggle_iYfV:before{position:absolute}.iconExternalLink_wgqa{margin-left:.3rem;position:relative;top:1px}html[data-theme=dark] .themedImage--dark_uzRr,html[data-theme=light] .themedImage--light_4Vu1{display:initial}.navbarHideable_RReh{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_FBwS{transform:translate3d(0,calc(-100% - 2px),0)}.footerLogoLink_SRtH{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.codeBlockContent_csEI:hover>.copyButton_M3SB,.codeBlockTitle_oQzk:hover+.codeBlockContent_csEI .copyButton_M3SB,.copyButton_M3SB:focus,.footerLogoLink_SRtH:hover,.hash-link:focus,:hover>.hash-link,header.heroBanner_Kgsz img.starButton_Z5jC:hover{opacity:1}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.main-wrapper{flex:1 0 auto}.docusaurus-mt-lg{margin-top:3rem}.searchQueryInput_gKrp,.searchVersionInput_yK3v{background:var(--docsearch-searchbox-focus-background);border:2px solid var(--ifm-toc-border-color);border-radius:var(--ifm-global-radius);color:var(--docsearch-text-color);font:var(--ifm-font-size-base) var(--ifm-font-family-base);margin-bottom:.5rem;padding:.8rem;transition:border var(--ifm-transition-fast) ease;width:100%}.searchQueryInput_gKrp:focus,.searchVersionInput_yK3v:focus{border-color:var(--docsearch-primary-color);outline:0}.searchQueryInput_gKrp::placeholder{color:var(--docsearch-muted-color)}.searchResultsColumn_u0zF{font-size:.9rem;font-weight:700}.algoliaLogo_8CW0{max-width:150px}.algoliaLogoPathFill_P7SL{fill:var(--ifm-font-color-base)}.searchResultItem_AAMZ{border-bottom:1px solid var(--ifm-toc-border-color);padding:1rem 0}.searchResultItemHeading_Z8N\+{font-weight:400;margin-bottom:0}.searchResultItemPath_0ix4{--ifm-breadcrumb-separator-size-multiplier:1;color:var(--ifm-color-content-secondary);font-size:.8rem}.searchResultItemSummary_jyET{font-style:italic;margin:.5rem 0 0}.loadingSpinner_DlG9{animation:1s linear infinite a;border:.4em solid #eee;border-radius:50%;border-top:.4em solid var(--ifm-color-primary);height:3rem;margin:0 auto;width:3rem}@keyframes a{to{transform:rotate(1turn)}}.loader_L7Al{margin-top:2rem}.search-result-match{background:#ffd78e40;color:var(--docsearch-hit-color);padding:.09em 0}.sidebarMenuIcon_iZzd{vertical-align:middle}.sidebarMenuCloseIcon_6kU2{align-items:center;display:inline-flex;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);height:24px;justify-content:center;line-height:.9;width:24px}.menu__list .menu__list{overflow-y:hidden;transition:height var(--ifm-transition-fast) linear;will-change:height}.menu__list-item--collapsed .menu__list{overflow:hidden;height:0!important}.codeBlockContent_csEI{direction:ltr;position:relative}.codeBlockTitle_oQzk{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:var(--ifm-global-radius);border-top-right-radius:var(--ifm-global-radius);font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlockWithTitle_ZT05{border-top-left-radius:0;border-top-right-radius:0}.copyButton_M3SB{background:#0000004d;border-radius:var(--ifm-global-radius);color:var(--ifm-color-white);opacity:0;padding:.4rem .5rem;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2);transition:opacity .2s ease-in-out;-webkit-user-select:none;user-select:none}.codeBlockLines_1zSZ{display:flex;flex-direction:column;float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}html[data-theme=light]{--heading-shadow:-2px 3px 2px #a2a1a1;--sub-heading-shadow:-1px 1px 1px #a2a1a1}header.heroBanner_Kgsz{min-height:calc(100vh - 4rem);overflow:hidden;padding:4rem 1rem;position:relative;text-align:center}header.heroBanner_Kgsz h1.heroTitle_BKcm{font-family:Racing Sans One,mono;font-size:8rem;text-shadow:var(--heading-shadow)}header.heroBanner_Kgsz h3.heroSubTitle_VV83{text-shadow:var(--sub-heading-shadow)}header.heroBanner_Kgsz img.starButton_Z5jC{opacity:.85;position:absolute;right:1rem;top:1rem;width:12rem}.buttons_3T5n{align-items:center;display:flex;justify-content:center;margin:1.5rem}.dashyDescription_wvhj{font-size:1.2rem;margin:1rem auto;max-width:680px;text-align:left}.keepReading_3EdK{cursor:pointer;font-size:1.2rem;margin-left:.5rem}.scrollDown_f1kE{bottom:2rem;cursor:pointer;display:flex;left:42%;margin:2rem auto;position:absolute;width:-moz-fit-content;width:fit-content}.scrollDownText_L5rW{color:var(--text-color);font-size:1.2rem;font-weight:700;margin:0 1rem}.scrollDownIcon_\+yvr{width:2rem}.scrollDownIcon_\+yvr path{fill:var(--text-color)}.button{border:none;border-radius:4px;color:var(--black);cursor:pointer;display:inline-block;display:flex;font-size:1.3rem;font-weight:700;margin:.5rem;min-width:12rem;padding:.75rem 1rem;position:relative;transition:none}.button svg{margin-right:.5rem;width:1.8rem}.button.color-btn:hover{color:rgba(0,0,0,.702);top:2px}.button.color-btn:active{box-shadow:none!important;color:rgba(0,0,0,.502);top:4px}.button.color-btn.btn-pink{background:#db78fc;box-shadow:0 4px #b83ddd}.button.color-btn.btn-pink:hover{box-shadow:0 2px #b83ddd}.button.color-btn.btn-purple{background:#9083ed;box-shadow:0 4px #6b3cd6}.button.color-btn.btn-purple:hover{box-shadow:0 2px #6b3cd6}.button.color-btn.btn-blue{background:#5c85f7;box-shadow:0 4px #3d48dd}.button.color-btn.btn-blue:hover{box-shadow:0 2px #3d48dd}.button.color-btn.btn-green{background:#41ef90;box-shadow:0 4px #1e9554}.button.color-btn.btn-green:hover{box-shadow:0 2px #1e9554}.button.color-btn.btn-yellow{background:#dcff5a;box-shadow:0 4px #ceb73f}.button.color-btn.btn-yellow:hover{box-shadow:0 2px #ceb73f}main.docs{box-shadow:var(--feature-img-shadow);margin:1rem auto;max-width:1250px;padding:1rem}main.docs h1.docs-title{font-size:5rem;margin:0}main.docs p.see-repo-note{background:rgba(255,255,170,.839);border-radius:3px;padding:.25rem 1rem;width:-moz-fit-content;width:fit-content}main.docs p.see-repo-note a,main.docs p.see-repo-note b,main.docs p.see-repo-note span{color:#000;font-size:1rem;font-style:italic}main.docs p.see-repo-note a{color:#000;font-size:1rem;font-weight:700}main.docs div.row1{display:flex;flex-direction:row}main.docs div.docs-links-section{display:flex;flex-wrap:wrap}main.docs div.docs-contents{color:var(--text-color);display:flex;flex-direction:column;justify-content:space-around}main.docs div.docs-contents h3.section-title{margin:1rem .5rem .5rem}main.docs div.docs-contents a{display:flex;flex-direction:column;margin:.5rem .75rem;min-height:5rem;padding:.25rem .5rem;width:calc(33% - 1.5rem)}main.docs div.docs-contents a p.name{font-size:1.4rem;margin:0;text-align:left}main.docs div.docs-contents a span.description{font-size:1rem;text-align:left;white-space:pre-wrap}.color-pink{--feature-color:#db78fc}.color-blue{--feature-color:#5c85f7}.color-green{--feature-color:#41ef90}.color-yellow{--feature-color:#dcff5a}.color-white{--feature-color:#fff}html[data-theme=light] .color-pink{--feature-color:#b83ddd}html[data-theme=light] .color-blue{--feature-color:#6b3cd6}html[data-theme=light] .color-green{--feature-color:#1e9554}html[data-theme=light] .color-yellow{--feature-color:#ceb73f}html[data-theme=light] .color-white{--feature-color:#000}.home-page-features-wrapper{display:flex;flex-direction:column;font-size:1.2rem}.home-page-features-wrapper .feature{align-items:center;display:flex;justify-content:center;margin:0;padding:.5rem}.home-page-features-wrapper .feature.align-left{background:var(--background);box-shadow:0 1px 4px #000;flex-direction:row}.home-page-features-wrapper .feature.align-right{background:var(--hero-background);box-shadow:0 -1px 4px rgba(0,0,0,.702);flex-direction:row-reverse}.home-page-features-wrapper .feature .feature-half{margin:1rem;padding:.25rem;width:40%}.home-page-features-wrapper .feature .feature-half.assets{align-items:center;background:var(--feature-color);border-radius:8px;box-shadow:var(--feature-img-shadow);display:flex;height:-moz-fit-content;height:fit-content;justify-content:center;margin:.5rem}.home-page-features-wrapper .feature .feature-half.assets img.demo,.home-page-features-wrapper .feature .feature-half.assets span.not-demo{background:var(--kinda-transparent);border-radius:8px;box-shadow:var(--feature-img-shadow);height:100%;max-height:36rem;min-height:12rem;object-fit:contain;width:100%}.home-page-features-wrapper .feature .feature-half.assets span.not-demo{align-items:center;display:flex;justify-content:center}.home-page-features-wrapper .feature .feature-title{align-items:flex-end;color:var(--feature-color);display:flex;margin:1rem 0}.DocSearch-Button,.DocSearch-Button-Container{align-items:center;display:flex}.home-page-features-wrapper .feature .feature-title svg{margin-right:.5rem;width:2rem}.home-page-features-wrapper .feature div.read-the-docs a.button-link-wrapper{margin:0 1rem 1rem}.home-page-features-wrapper .feature div.read-the-docs small{margin:0 .5rem;opacity:.75}iframe#dashy-survey{border:none;height:92vh;width:100%}.DocSearch-Button{background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;font-weight:500;height:36px;justify-content:space-between;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:0}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Hit-Tree,.DocSearch-Hit-action,.DocSearch-Hit-icon,.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Input,.DocSearch-Link{-webkit-appearance:none;font:inherit}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;width:20px}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:4}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{appearance:none;background:#0000;border:0;color:var(--docsearch-text-color);flex:1;font-size:1.2em;height:100%;outline:0;padding:0 0 0 8px;width:80%}.DocSearch-Hit-action-button,.DocSearch-Reset{-webkit-appearance:none;border:0;cursor:pointer}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Cancel,.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator,.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset{animation:.1s ease-in forwards b;appearance:none;background:none;border-radius:50%;color:var(--docsearch-icon-color);padding:2px;right:0}.DocSearch-Help,.DocSearch-HitsFooter,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:#0000}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a,.docs-wrapper{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}.DocSearch-Hit--deleting{opacity:0;transition:.25s linear}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:.25s linear .25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:2}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{appearance:none;background:none;border-radius:50%;color:inherit;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:0;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:5}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}@keyframes b{0%{opacity:0}to{opacity:1}}.DocSearch-Button{margin:0;transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.DocSearch-Container{z-index:calc(var(--ifm-z-index-fixed) + 1)}.tableOfContents_vrFS{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.iconEdit_mS5F{margin-right:.3em;vertical-align:sub}.anchor{display:block;position:relative;top:-.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast)}.enhancedAnchor_WiXH{top:calc(var(--ifm-navbar-height)*-1 - .5rem)}.h1Heading_dC7a{font-size:3rem;margin-bottom:calc(var(--ifm-leading-desktop)*var(--ifm-leading))}.lastUpdated_wj\+Z{font-size:smaller;font-style:italic;margin-top:.2rem}.docMainContainer_r8cw,.docPage_lDyR{display:flex;width:100%}.mdxPageWrapper_eQvw{justify-content:center}@media (min-width:997px){.searchBox_Bc3W{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.sidebar_a3j0{display:flex;flex-direction:column;height:100%;max-height:100vh;padding-top:var(--ifm-navbar-height);position:sticky;top:0;transition:opacity 50ms;width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_VlPv{padding-top:0}.sidebarHidden_OqfG{height:0;opacity:0;overflow:hidden;visibility:hidden}.sidebarLogo_hmkv{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_hmkv img{height:2rem;margin-right:.5rem}.menu_cyFh{flex-grow:1;padding:.5rem}.menuLinkText_lRH\+{cursor:auto}.menuLinkText_lRH\+:hover{background:none}.menuWithAnnouncementBar_\+O1J{margin-bottom:var(--docusaurus-announcement-bar-height)}.collapseSidebarButton_eoK2{background-color:var(--ifm-button-background-color);border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_e\+kA{margin-top:4px;transform:rotate(180deg)}.expandSidebarButtonIcon_cxi8,html[dir=rtl] .collapseSidebarButtonIcon_e\+kA{transform:rotate(0)}html[data-theme=dark] .collapseSidebarButton_eoK2,html[data-theme=dark] .collapsedDocSidebar_zZpm:focus,html[data-theme=dark] .collapsedDocSidebar_zZpm:hover{background-color:var(--collapse-button-bg-color-dark)}.collapsedDocSidebar_zZpm:focus,.collapsedDocSidebar_zZpm:hover,html[data-theme=dark] .collapseSidebarButton_eoK2:focus,html[data-theme=dark] .collapseSidebarButton_eoK2:hover{background-color:var(--ifm-color-emphasis-200)}.docMainContainer_r8cw{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_SOUu{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docSidebarContainer_0YBq{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_Qlt2{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.collapsedDocSidebar_zZpm{align-items:center;display:flex;height:100%;justify-content:center;max-height:100vh;position:sticky;top:0;transition:background-color var(--ifm-transition-fast) ease}html[dir=rtl] .expandSidebarButtonIcon_cxi8{transform:rotate(180deg)}.docItemWrapperEnhanced_aT5H{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}}@media only screen and (min-width:997px){.docItemCol_zHA2{max-width:75%!important}.lastUpdated_wj\+Z{text-align:right}}@media screen and (min-width:1024px){:root{--docusaurus-announcement-bar-height:30px}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:1200px){h1{--ifm-h1-font-size:calc(1.375rem + 1.5vw)}}@media screen and (max-width:997px){.displayOnlyInLargeViewport_cxYs{display:none!important}}@media (max-width:996px){.row .col.col.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0;max-width:var(--ifm-col-width)}.footer{--ifm-footer-padding-horizontal:0}.docSidebarContainer_0YBq,.footer__link-separator,.navbar__item{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.menu--responsive .menu__button,.navbar__toggle{display:inherit}.menu--responsive:not(.menu--show) .menu__list{display:none;opacity:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.pills--block .pills__item:not(:first-child){margin-top:var(--ifm-pills-spacing)}.pills--block .pills__item:not(:last-child){margin-bottom:var(--ifm-pills-spacing)}.tabs--block .tabs__item:not(:first-child){margin-top:var(--ifm-tabs-spacing)}.tabs--block .tabs__item:not(:last-child){margin-bottom:var(--ifm-tabs-spacing)}.searchBox_Bc3W{position:absolute;right:var(--ifm-navbar-padding-horizontal)}}@media only screen and (max-width:996px){.searchQueryColumn_oQOT,.searchResultsColumn_u0zF{max-width:60%!important}.searchLogoColumn_tJ40,.searchVersionColumn_AEiZ{max-width:40%!important}.searchLogoColumn_tJ40{padding-left:0!important}.tableOfContents_vrFS{display:none}.docItemContainer_VKW9{padding:0 .3rem}}@media (max-width:966px){header.heroBanner_Kgsz h1.heroTitle_BKcm{font-size:6rem}header.heroBanner_Kgsz h3.heroSubTitle_VV83{font-size:1.5rem}.scrollDown_f1kE{display:none}.button{width:80%}.home-page-features-wrapper .feature.align-left,.home-page-features-wrapper .feature.align-right{flex-direction:column}.home-page-features-wrapper .feature.align-left .feature-half,.home-page-features-wrapper .feature.align-right .feature-half{width:95%}}@media screen and (max-width:966px){header.heroBanner_Kgsz{padding:2rem}.buttons_3T5n{flex-direction:column}}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder,.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%;max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Cancel{-webkit-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:0;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}}@media screen and (max-width:576px){.announcementBarClose_A3A1{width:35px}.announcementBarContent_6uhP{width:auto}.announcementBarCloseable_y4cp{margin-right:35px}.searchQueryColumn_oQOT{max-width:100%!important}.searchVersionColumn_AEiZ{max-width:100%!important;padding-left:var(--ifm-spacing-horizontal)!important}}@media (max-width:500px){main.docs div.docs-contents a{width:100%}}@media (pointer:fine){.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width);animation:none;-webkit-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0}.DocSearch-Hit--deleting,.DocSearch-Hit--favoriting{transition:none}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}@media print{.announcementBar_axC9,.footer,.menu,.navbar,.pagination-nav,.table-of-contents{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_1zSZ{white-space:pre-wrap}} \ No newline at end of file diff --git a/assets/js/0276dc25.6e7be07b.js b/assets/js/0276dc25.6e7be07b.js deleted file mode 100644 index 8b1df8d3..00000000 --- a/assets/js/0276dc25.6e7be07b.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see 0276dc25.6e7be07b.js.LICENSE.txt */ -(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[865],{7331:function(e){function t(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(e){return"function"==typeof e}function n(e){return"object"==typeof e&&null!==e}function i(e){return void 0===e}e.exports=t,t.prototype._events=void 0,t.prototype._maxListeners=void 0,t.defaultMaxListeners=10,t.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},t.prototype.emit=function(e){var t,a,s,c,u,o;if(this._events||(this._events={}),"error"===e&&(!this._events.error||n(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var h=new Error('Uncaught, unspecified "error" event. ('+t+")");throw h.context=t,h}if(i(a=this._events[e]))return!1;if(r(a))switch(arguments.length){case 1:a.call(this);break;case 2:a.call(this,arguments[1]);break;case 3:a.call(this,arguments[1],arguments[2]);break;default:c=Array.prototype.slice.call(arguments,1),a.apply(this,c)}else if(n(a))for(c=Array.prototype.slice.call(arguments,1),s=(o=a.slice()).length,u=0;u0&&this._events[e].length>s&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},t.prototype.on=t.prototype.addListener,t.prototype.once=function(e,t){if(!r(t))throw TypeError("listener must be a function");var n=!1;function i(){this.removeListener(e,i),n||(n=!0,t.apply(this,arguments))}return i.listener=t,this.on(e,i),this},t.prototype.removeListener=function(e,t){var i,a,s,c;if(!r(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(s=(i=this._events[e]).length,a=-1,i===t||r(i.listener)&&i.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(n(i)){for(c=s;c-- >0;)if(i[c]===t||i[c].listener&&i[c].listener===t){a=c;break}if(a<0)return this;1===i.length?(i.length=0,delete this._events[e]):i.splice(a,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},t.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r(n=this._events[e]))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},t.prototype.listeners=function(e){return this._events&&this._events[e]?r(this._events[e])?[this._events[e]]:this._events[e].slice():[]},t.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(r(t))return 1;if(t)return t.length}return 0},t.listenerCount=function(e,t){return e.listenerCount(t)}},8131:function(e,t,r){"use strict";var n=r(9374),i=r(7775),a=r(3076);function s(e,t,r){return new n(e,t,r)}s.version=r(4336),s.AlgoliaSearchHelper=n,s.SearchParameters=i,s.SearchResults=a,e.exports=s},8078:function(e,t,r){"use strict";var n=r(7331);function i(e,t){this.main=e,this.fn=t,this.lastResults=null}r(4853)(i,n),i.prototype.detach=function(){this.removeAllListeners(),this.main.detachDerivedHelper(this)},i.prototype.getModifiedState=function(e){return this.fn(e)},e.exports=i},2437:function(e,t,r){"use strict";var n=r(2344),i=r(9803),a=r(116),s={addRefinement:function(e,t,r){if(s.isRefined(e,t,r))return e;var i=""+r,a=e[t]?e[t].concat(i):[i],c={};return c[t]=a,n({},c,e)},removeRefinement:function(e,t,r){if(void 0===r)return s.clearRefinement(e,(function(e,r){return t===r}));var n=""+r;return s.clearRefinement(e,(function(e,r){return t===r&&n===e}))},toggleRefinement:function(e,t,r){if(void 0===r)throw new Error("toggleRefinement should be used with a value");return s.isRefined(e,t,r)?s.removeRefinement(e,t,r):s.addRefinement(e,t,r)},clearRefinement:function(e,t,r){if(void 0===t)return a(e)?{}:e;if("string"==typeof t)return i(e,[t]);if("function"==typeof t){var n=!1,s=Object.keys(e).reduce((function(i,a){var s=e[a]||[],c=s.filter((function(e){return!t(e,a,r)}));return c.length!==s.length&&(n=!0),i[a]=c,i}),{});return n?s:e}},isRefined:function(e,t,r){var n=!!e[t]&&e[t].length>0;if(void 0===r||!n)return n;var i=""+r;return-1!==e[t].indexOf(i)}};e.exports=s},7775:function(e,t,r){"use strict";var n=r(185),i=r(2344),a=r(2686),s=r(7888),c=r(8023),u=r(9803),o=r(116),h=r(6801),f=r(2437);function l(e,t){return Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&e.every((function(e,r){return l(t[r],e)})):e===t}function m(e){var t=e?m._parseNumbers(e):{};void 0===t.userToken||h(t.userToken)||console.warn("[algoliasearch-helper] The `userToken` parameter is invalid. This can lead to wrong analytics.\n - Format: [a-zA-Z0-9_-]{1,64}"),this.facets=t.facets||[],this.disjunctiveFacets=t.disjunctiveFacets||[],this.hierarchicalFacets=t.hierarchicalFacets||[],this.facetsRefinements=t.facetsRefinements||{},this.facetsExcludes=t.facetsExcludes||{},this.disjunctiveFacetsRefinements=t.disjunctiveFacetsRefinements||{},this.numericRefinements=t.numericRefinements||{},this.tagRefinements=t.tagRefinements||[],this.hierarchicalFacetsRefinements=t.hierarchicalFacetsRefinements||{};var r=this;Object.keys(t).forEach((function(e){var n=-1!==m.PARAMETERS.indexOf(e),i=void 0!==t[e];!n&&i&&(r[e]=t[e])}))}m.PARAMETERS=Object.keys(new m),m._parseNumbers=function(e){if(e instanceof m)return e;var t={};if(["aroundPrecision","aroundRadius","getRankingInfo","minWordSizefor2Typos","minWordSizefor1Typo","page","maxValuesPerFacet","distinct","minimumAroundRadius","hitsPerPage","minProximity"].forEach((function(r){var n=e[r];if("string"==typeof n){var i=parseFloat(n);t[r]=isNaN(i)?n:i}})),Array.isArray(e.insideBoundingBox)&&(t.insideBoundingBox=e.insideBoundingBox.map((function(e){return Array.isArray(e)?e.map((function(e){return parseFloat(e)})):e}))),e.numericRefinements){var r={};Object.keys(e.numericRefinements).forEach((function(t){var n=e.numericRefinements[t]||{};r[t]={},Object.keys(n).forEach((function(e){var i=n[e].map((function(e){return Array.isArray(e)?e.map((function(e){return"string"==typeof e?parseFloat(e):e})):"string"==typeof e?parseFloat(e):e}));r[t][e]=i}))})),t.numericRefinements=r}return n({},e,t)},m.make=function(e){var t=new m(e);return(e.hierarchicalFacets||[]).forEach((function(e){if(e.rootPath){var r=t.getHierarchicalRefinement(e.name);r.length>0&&0!==r[0].indexOf(e.rootPath)&&(t=t.clearRefinements(e.name)),0===(r=t.getHierarchicalRefinement(e.name)).length&&(t=t.toggleHierarchicalFacetRefinement(e.name,e.rootPath))}})),t},m.validate=function(e,t){var r=t||{};return e.tagFilters&&r.tagRefinements&&r.tagRefinements.length>0?new Error("[Tags] Cannot switch from the managed tag API to the advanced API. It is probably an error, if it is really what you want, you should first clear the tags with clearTags method."):e.tagRefinements.length>0&&r.tagFilters?new Error("[Tags] Cannot switch from the advanced tag API to the managed API. It is probably an error, if it is not, you should first clear the tags with clearTags method."):e.numericFilters&&r.numericRefinements&&o(r.numericRefinements)?new Error("[Numeric filters] Can't switch from the advanced to the managed API. It is probably an error, if this is really what you want, you have to first clear the numeric filters."):o(e.numericRefinements)&&r.numericFilters?new Error("[Numeric filters] Can't switch from the managed API to the advanced. It is probably an error, if this is really what you want, you have to first clear the numeric filters."):null},m.prototype={constructor:m,clearRefinements:function(e){var t={numericRefinements:this._clearNumericRefinements(e),facetsRefinements:f.clearRefinement(this.facetsRefinements,e,"conjunctiveFacet"),facetsExcludes:f.clearRefinement(this.facetsExcludes,e,"exclude"),disjunctiveFacetsRefinements:f.clearRefinement(this.disjunctiveFacetsRefinements,e,"disjunctiveFacet"),hierarchicalFacetsRefinements:f.clearRefinement(this.hierarchicalFacetsRefinements,e,"hierarchicalFacet")};return t.numericRefinements===this.numericRefinements&&t.facetsRefinements===this.facetsRefinements&&t.facetsExcludes===this.facetsExcludes&&t.disjunctiveFacetsRefinements===this.disjunctiveFacetsRefinements&&t.hierarchicalFacetsRefinements===this.hierarchicalFacetsRefinements?this:this.setQueryParameters(t)},clearTags:function(){return void 0===this.tagFilters&&0===this.tagRefinements.length?this:this.setQueryParameters({tagFilters:void 0,tagRefinements:[]})},setIndex:function(e){return e===this.index?this:this.setQueryParameters({index:e})},setQuery:function(e){return e===this.query?this:this.setQueryParameters({query:e})},setPage:function(e){return e===this.page?this:this.setQueryParameters({page:e})},setFacets:function(e){return this.setQueryParameters({facets:e})},setDisjunctiveFacets:function(e){return this.setQueryParameters({disjunctiveFacets:e})},setHitsPerPage:function(e){return this.hitsPerPage===e?this:this.setQueryParameters({hitsPerPage:e})},setTypoTolerance:function(e){return this.typoTolerance===e?this:this.setQueryParameters({typoTolerance:e})},addNumericRefinement:function(e,t,r){var i=c(r);if(this.isNumericRefined(e,t,i))return this;var a=n({},this.numericRefinements);return a[e]=n({},a[e]),a[e][t]?(a[e][t]=a[e][t].slice(),a[e][t].push(i)):a[e][t]=[i],this.setQueryParameters({numericRefinements:a})},getConjunctiveRefinements:function(e){return this.isConjunctiveFacet(e)&&this.facetsRefinements[e]||[]},getDisjunctiveRefinements:function(e){return this.isDisjunctiveFacet(e)&&this.disjunctiveFacetsRefinements[e]||[]},getHierarchicalRefinement:function(e){return this.hierarchicalFacetsRefinements[e]||[]},getExcludeRefinements:function(e){return this.isConjunctiveFacet(e)&&this.facetsExcludes[e]||[]},removeNumericRefinement:function(e,t,r){return void 0!==r?this.isNumericRefined(e,t,r)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(n,i){return i===e&&n.op===t&&l(n.val,c(r))}))}):this:void 0!==t?this.isNumericRefined(e,t)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(r,n){return n===e&&r.op===t}))}):this:this.isNumericRefined(e)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(t,r){return r===e}))}):this},getNumericRefinements:function(e){return this.numericRefinements[e]||{}},getNumericRefinement:function(e,t){return this.numericRefinements[e]&&this.numericRefinements[e][t]},_clearNumericRefinements:function(e){if(void 0===e)return o(this.numericRefinements)?{}:this.numericRefinements;if("string"==typeof e)return u(this.numericRefinements,[e]);if("function"==typeof e){var t=!1,r=this.numericRefinements,n=Object.keys(r).reduce((function(n,i){var a=r[i],s={};return a=a||{},Object.keys(a).forEach((function(r){var n=a[r]||[],c=[];n.forEach((function(t){e({val:t,op:r},i,"numeric")||c.push(t)})),c.length!==n.length&&(t=!0),s[r]=c})),n[i]=s,n}),{});return t?n:this.numericRefinements}},addFacet:function(e){return this.isConjunctiveFacet(e)?this:this.setQueryParameters({facets:this.facets.concat([e])})},addDisjunctiveFacet:function(e){return this.isDisjunctiveFacet(e)?this:this.setQueryParameters({disjunctiveFacets:this.disjunctiveFacets.concat([e])})},addHierarchicalFacet:function(e){if(this.isHierarchicalFacet(e.name))throw new Error("Cannot declare two hierarchical facets with the same name: `"+e.name+"`");return this.setQueryParameters({hierarchicalFacets:this.hierarchicalFacets.concat([e])})},addFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsRefinements,e,t)?this:this.setQueryParameters({facetsRefinements:f.addRefinement(this.facetsRefinements,e,t)})},addExcludeRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsExcludes,e,t)?this:this.setQueryParameters({facetsExcludes:f.addRefinement(this.facetsExcludes,e,t)})},addDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return f.isRefined(this.disjunctiveFacetsRefinements,e,t)?this:this.setQueryParameters({disjunctiveFacetsRefinements:f.addRefinement(this.disjunctiveFacetsRefinements,e,t)})},addTagRefinement:function(e){if(this.isTagRefined(e))return this;var t={tagRefinements:this.tagRefinements.concat(e)};return this.setQueryParameters(t)},removeFacet:function(e){return this.isConjunctiveFacet(e)?this.clearRefinements(e).setQueryParameters({facets:this.facets.filter((function(t){return t!==e}))}):this},removeDisjunctiveFacet:function(e){return this.isDisjunctiveFacet(e)?this.clearRefinements(e).setQueryParameters({disjunctiveFacets:this.disjunctiveFacets.filter((function(t){return t!==e}))}):this},removeHierarchicalFacet:function(e){return this.isHierarchicalFacet(e)?this.clearRefinements(e).setQueryParameters({hierarchicalFacets:this.hierarchicalFacets.filter((function(t){return t.name!==e}))}):this},removeFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsRefinements,e,t)?this.setQueryParameters({facetsRefinements:f.removeRefinement(this.facetsRefinements,e,t)}):this},removeExcludeRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsExcludes,e,t)?this.setQueryParameters({facetsExcludes:f.removeRefinement(this.facetsExcludes,e,t)}):this},removeDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return f.isRefined(this.disjunctiveFacetsRefinements,e,t)?this.setQueryParameters({disjunctiveFacetsRefinements:f.removeRefinement(this.disjunctiveFacetsRefinements,e,t)}):this},removeTagRefinement:function(e){if(!this.isTagRefined(e))return this;var t={tagRefinements:this.tagRefinements.filter((function(t){return t!==e}))};return this.setQueryParameters(t)},toggleRefinement:function(e,t){return this.toggleFacetRefinement(e,t)},toggleFacetRefinement:function(e,t){if(this.isHierarchicalFacet(e))return this.toggleHierarchicalFacetRefinement(e,t);if(this.isConjunctiveFacet(e))return this.toggleConjunctiveFacetRefinement(e,t);if(this.isDisjunctiveFacet(e))return this.toggleDisjunctiveFacetRefinement(e,t);throw new Error("Cannot refine the undeclared facet "+e+"; it should be added to the helper options facets, disjunctiveFacets or hierarchicalFacets")},toggleConjunctiveFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return this.setQueryParameters({facetsRefinements:f.toggleRefinement(this.facetsRefinements,e,t)})},toggleExcludeFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return this.setQueryParameters({facetsExcludes:f.toggleRefinement(this.facetsExcludes,e,t)})},toggleDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return this.setQueryParameters({disjunctiveFacetsRefinements:f.toggleRefinement(this.disjunctiveFacetsRefinements,e,t)})},toggleHierarchicalFacetRefinement:function(e,t){if(!this.isHierarchicalFacet(e))throw new Error(e+" is not defined in the hierarchicalFacets attribute of the helper configuration");var r=this._getHierarchicalFacetSeparator(this.getHierarchicalFacetByName(e)),n={};return void 0!==this.hierarchicalFacetsRefinements[e]&&this.hierarchicalFacetsRefinements[e].length>0&&(this.hierarchicalFacetsRefinements[e][0]===t||0===this.hierarchicalFacetsRefinements[e][0].indexOf(t+r))?-1===t.indexOf(r)?n[e]=[]:n[e]=[t.slice(0,t.lastIndexOf(r))]:n[e]=[t],this.setQueryParameters({hierarchicalFacetsRefinements:i({},n,this.hierarchicalFacetsRefinements)})},addHierarchicalFacetRefinement:function(e,t){if(this.isHierarchicalFacetRefined(e))throw new Error(e+" is already refined.");if(!this.isHierarchicalFacet(e))throw new Error(e+" is not defined in the hierarchicalFacets attribute of the helper configuration.");var r={};return r[e]=[t],this.setQueryParameters({hierarchicalFacetsRefinements:i({},r,this.hierarchicalFacetsRefinements)})},removeHierarchicalFacetRefinement:function(e){if(!this.isHierarchicalFacetRefined(e))return this;var t={};return t[e]=[],this.setQueryParameters({hierarchicalFacetsRefinements:i({},t,this.hierarchicalFacetsRefinements)})},toggleTagRefinement:function(e){return this.isTagRefined(e)?this.removeTagRefinement(e):this.addTagRefinement(e)},isDisjunctiveFacet:function(e){return this.disjunctiveFacets.indexOf(e)>-1},isHierarchicalFacet:function(e){return void 0!==this.getHierarchicalFacetByName(e)},isConjunctiveFacet:function(e){return this.facets.indexOf(e)>-1},isFacetRefined:function(e,t){return!!this.isConjunctiveFacet(e)&&f.isRefined(this.facetsRefinements,e,t)},isExcludeRefined:function(e,t){return!!this.isConjunctiveFacet(e)&&f.isRefined(this.facetsExcludes,e,t)},isDisjunctiveFacetRefined:function(e,t){return!!this.isDisjunctiveFacet(e)&&f.isRefined(this.disjunctiveFacetsRefinements,e,t)},isHierarchicalFacetRefined:function(e,t){if(!this.isHierarchicalFacet(e))return!1;var r=this.getHierarchicalRefinement(e);return t?-1!==r.indexOf(t):r.length>0},isNumericRefined:function(e,t,r){if(void 0===r&&void 0===t)return!!this.numericRefinements[e];var n=this.numericRefinements[e]&&void 0!==this.numericRefinements[e][t];if(void 0===r||!n)return n;var i,a,u=c(r),o=void 0!==(i=this.numericRefinements[e][t],a=u,s(i,(function(e){return l(e,a)})));return n&&o},isTagRefined:function(e){return-1!==this.tagRefinements.indexOf(e)},getRefinedDisjunctiveFacets:function(){var e=this,t=a(Object.keys(this.numericRefinements).filter((function(t){return Object.keys(e.numericRefinements[t]).length>0})),this.disjunctiveFacets);return Object.keys(this.disjunctiveFacetsRefinements).filter((function(t){return e.disjunctiveFacetsRefinements[t].length>0})).concat(t).concat(this.getRefinedHierarchicalFacets())},getRefinedHierarchicalFacets:function(){var e=this;return a(this.hierarchicalFacets.map((function(e){return e.name})),Object.keys(this.hierarchicalFacetsRefinements).filter((function(t){return e.hierarchicalFacetsRefinements[t].length>0})))},getUnrefinedDisjunctiveFacets:function(){var e=this.getRefinedDisjunctiveFacets();return this.disjunctiveFacets.filter((function(t){return-1===e.indexOf(t)}))},managedParameters:["index","facets","disjunctiveFacets","facetsRefinements","hierarchicalFacets","facetsExcludes","disjunctiveFacetsRefinements","numericRefinements","tagRefinements","hierarchicalFacetsRefinements"],getQueryParams:function(){var e=this.managedParameters,t={},r=this;return Object.keys(this).forEach((function(n){var i=r[n];-1===e.indexOf(n)&&void 0!==i&&(t[n]=i)})),t},setQueryParameter:function(e,t){if(this[e]===t)return this;var r={};return r[e]=t,this.setQueryParameters(r)},setQueryParameters:function(e){if(!e)return this;var t=m.validate(this,e);if(t)throw t;var r=this,n=m._parseNumbers(e),i=Object.keys(this).reduce((function(e,t){return e[t]=r[t],e}),{}),a=Object.keys(n).reduce((function(e,t){var r=void 0!==e[t],i=void 0!==n[t];return r&&!i?u(e,[t]):(i&&(e[t]=n[t]),e)}),i);return new this.constructor(a)},resetPage:function(){return void 0===this.page?this:this.setPage(0)},_getHierarchicalFacetSortBy:function(e){return e.sortBy||["isRefined:desc","name:asc"]},_getHierarchicalFacetSeparator:function(e){return e.separator||" > "},_getHierarchicalRootPath:function(e){return e.rootPath||null},_getHierarchicalShowParentLevel:function(e){return"boolean"!=typeof e.showParentLevel||e.showParentLevel},getHierarchicalFacetByName:function(e){return s(this.hierarchicalFacets,(function(t){return t.name===e}))},getHierarchicalFacetBreadcrumb:function(e){if(!this.isHierarchicalFacet(e))return[];var t=this.getHierarchicalRefinement(e)[0];if(!t)return[];var r=this._getHierarchicalFacetSeparator(this.getHierarchicalFacetByName(e));return t.split(r).map((function(e){return e.trim()}))},toString:function(){return JSON.stringify(this,null,2)}},e.exports=m},210:function(e,t,r){"use strict";e.exports=function(e){return function(t,r){var s=e.hierarchicalFacets[r],o=e.hierarchicalFacetsRefinements[s.name]&&e.hierarchicalFacetsRefinements[s.name][0]||"",h=e._getHierarchicalFacetSeparator(s),f=e._getHierarchicalRootPath(s),l=e._getHierarchicalShowParentLevel(s),m=a(e._getHierarchicalFacetSortBy(s)),d=t.every((function(e){return e.exhaustive})),p=function(e,t,r,a,s){return function(o,h,f){var l=o;if(f>0){var m=0;for(l=o;m-1})));if(s){var h=s.attributes.indexOf(t),l=u(e.hierarchicalFacets,(function(e){return e.name===s.name}));o.hierarchicalFacets[l][h]={attribute:t,data:i,exhaustive:a.exhaustiveFacetsCount}}else{var m,d=-1!==e.disjunctiveFacets.indexOf(t),g=-1!==e.facets.indexOf(t);d&&(m=v[t],o.disjunctiveFacets[m]={name:t,data:i,exhaustive:a.exhaustiveFacetsCount},p(o.disjunctiveFacets[m],a.facets_stats,t)),g&&(m=f[t],o.facets[m]={name:t,data:i,exhaustive:a.exhaustiveFacetsCount},p(o.facets[m],a.facets_stats,t))}})),this.hierarchicalFacets=s(this.hierarchicalFacets),h.forEach((function(r){var s=t[g],c=s&&s.facets?s.facets:{},h=e.getHierarchicalFacetByName(r);Object.keys(c).forEach((function(t){var r,f=c[t];if(h){r=u(e.hierarchicalFacets,(function(e){return e.name===h.name}));var m=u(o.hierarchicalFacets[r],(function(e){return e.attribute===t}));if(-1===m)return;o.hierarchicalFacets[r][m].data=n({},o.hierarchicalFacets[r][m].data,f)}else{r=v[t];var d=a.facets&&a.facets[t]||{};o.disjunctiveFacets[r]={name:t,data:i({},f,d),exhaustive:s.exhaustiveFacetsCount},p(o.disjunctiveFacets[r],s.facets_stats,t),e.disjunctiveFacetsRefinements[t]&&e.disjunctiveFacetsRefinements[t].forEach((function(n){!o.disjunctiveFacets[r].data[n]&&e.disjunctiveFacetsRefinements[t].indexOf(l(n))>-1&&(o.disjunctiveFacets[r].data[n]=0)}))}})),g++})),e.getRefinedHierarchicalFacets().forEach((function(r){var n=e.getHierarchicalFacetByName(r),a=e._getHierarchicalFacetSeparator(n),s=e.getHierarchicalRefinement(r);if(!(0===s.length||s[0].split(a).length<2)){var c=t[g],h=c&&c.facets?c.facets:{};Object.keys(h).forEach((function(t){var r=h[t],c=u(e.hierarchicalFacets,(function(e){return e.name===n.name})),f=u(o.hierarchicalFacets[c],(function(e){return e.attribute===t}));if(-1!==f){var l={};if(s.length>0){var m=s[0].split(a)[0];l[m]=o.hierarchicalFacets[c][f].data[m]}o.hierarchicalFacets[c][f].data=i(l,r,o.hierarchicalFacets[c][f].data)}})),g++}})),Object.keys(e.facetsExcludes).forEach((function(t){var r=e.facetsExcludes[t],n=f[t];o.facets[n]={name:t,data:a.facets[t],exhaustive:a.exhaustiveFacetsCount},r.forEach((function(e){o.facets[n]=o.facets[n]||{name:t},o.facets[n].data=o.facets[n].data||{},o.facets[n].data[e]=0}))})),this.hierarchicalFacets=this.hierarchicalFacets.map(m(e)),this.facets=s(this.facets),this.disjunctiveFacets=s(this.disjunctiveFacets),this._state=e}function g(e,t,r,n){if(n=n||0,Array.isArray(t))return e(t,r[n]);if(!t.data||0===t.data.length)return t;var a=t.data.map((function(t){return g(e,t,r,n+1)})),s=e(a,r[n]);return i({data:s},t)}function y(e,t){var r=c(e,(function(e){return e.name===t}));return r&&r.stats}function R(e,t,r,n,i){var a=c(i,(function(e){return e.name===r})),s=a&&a.data&&a.data[n]?a.data[n]:0,u=a&&a.exhaustive||!1;return{type:t,attributeName:r,name:n,count:s,exhaustive:u}}v.prototype.getFacetByName=function(e){function t(t){return t.name===e}return c(this.facets,t)||c(this.disjunctiveFacets,t)||c(this.hierarchicalFacets,t)},v.DEFAULT_SORT=["isRefined:desc","count:desc","name:asc"],v.prototype.getFacetValues=function(e,t){var r=function(e,t){function r(e){return e.name===t}if(e._state.isConjunctiveFacet(t)){var n=c(e.facets,r);return n?Object.keys(n.data).map((function(r){var i=f(r);return{name:r,escapedValue:i,count:n.data[r],isRefined:e._state.isFacetRefined(t,i),isExcluded:e._state.isExcludeRefined(t,r)}})):[]}if(e._state.isDisjunctiveFacet(t)){var i=c(e.disjunctiveFacets,r);return i?Object.keys(i.data).map((function(r){var n=f(r);return{name:r,escapedValue:n,count:i.data[r],isRefined:e._state.isDisjunctiveFacetRefined(t,n)}})):[]}if(e._state.isHierarchicalFacet(t))return c(e.hierarchicalFacets,r)}(this,e);if(r){var n,s=i({},t,{sortBy:v.DEFAULT_SORT,facetOrdering:!(t&&t.sortBy)}),u=this;if(Array.isArray(r))n=[e];else n=u._state.getHierarchicalFacetByName(r.name).attributes;return g((function(e,t){if(s.facetOrdering){var r=function(e,t){return e.renderingContent&&e.renderingContent.facetOrdering&&e.renderingContent.facetOrdering.values&&e.renderingContent.facetOrdering.values[t]}(u,t);if(Boolean(r))return function(e,t){var r=[],n=[],i=(t.order||[]).reduce((function(e,t,r){return e[t]=r,e}),{});e.forEach((function(e){var t=e.path||e.name;void 0!==i[t]?r[i[t]]=e:n.push(e)})),r=r.filter((function(e){return e}));var s,c=t.sortRemainingBy;return"hidden"===c?r:(s="alpha"===c?[["path","name"],["asc","asc"]]:[["count"],["desc"]],r.concat(a(n,s[0],s[1])))}(e,r)}if(Array.isArray(s.sortBy)){var n=o(s.sortBy,v.DEFAULT_SORT);return a(e,n[0],n[1])}if("function"==typeof s.sortBy)return function(e,t){return t.sort(e)}(s.sortBy,e);throw new Error("options.sortBy is optional but if defined it must be either an array of string (predicates) or a sorting function")}),r,n)}},v.prototype.getFacetStats=function(e){return this._state.isConjunctiveFacet(e)?y(this.facets,e):this._state.isDisjunctiveFacet(e)?y(this.disjunctiveFacets,e):void 0},v.prototype.getRefinements=function(){var e=this._state,t=this,r=[];return Object.keys(e.facetsRefinements).forEach((function(n){e.facetsRefinements[n].forEach((function(i){r.push(R(e,"facet",n,i,t.facets))}))})),Object.keys(e.facetsExcludes).forEach((function(n){e.facetsExcludes[n].forEach((function(i){r.push(R(e,"exclude",n,i,t.facets))}))})),Object.keys(e.disjunctiveFacetsRefinements).forEach((function(n){e.disjunctiveFacetsRefinements[n].forEach((function(i){r.push(R(e,"disjunctive",n,i,t.disjunctiveFacets))}))})),Object.keys(e.hierarchicalFacetsRefinements).forEach((function(n){e.hierarchicalFacetsRefinements[n].forEach((function(i){r.push(function(e,t,r,n){var i=e.getHierarchicalFacetByName(t),a=e._getHierarchicalFacetSeparator(i),s=r.split(a),u=c(n,(function(e){return e.name===t})),o=s.reduce((function(e,t){var r=e&&c(e.data,(function(e){return e.name===t}));return void 0!==r?r:e}),u),h=o&&o.count||0,f=o&&o.exhaustive||!1,l=o&&o.path||"";return{type:"hierarchical",attributeName:t,name:l,count:h,exhaustive:f}}(e,n,i,t.hierarchicalFacets))}))})),Object.keys(e.numericRefinements).forEach((function(t){var n=e.numericRefinements[t];Object.keys(n).forEach((function(e){n[e].forEach((function(n){r.push({type:"numeric",attributeName:t,name:n,numericValue:n,operator:e})}))}))})),e.tagRefinements.forEach((function(e){r.push({type:"tag",attributeName:"_tags",name:e})})),r},e.exports=v},9374:function(e,t,r){"use strict";var n=r(7775),i=r(3076),a=r(8078),s=r(6394),c=r(7331),u=r(4853),o=r(116),h=r(9803),f=r(185),l=r(4336),m=r(4039).escapeFacetValue;function d(e,t,r){"function"==typeof e.addAlgoliaAgent&&e.addAlgoliaAgent("JS Helper ("+l+")"),this.setClient(e);var i=r||{};i.index=t,this.state=n.make(i),this.lastResults=null,this._queryId=0,this._lastQueryIdReceived=-1,this.derivedHelpers=[],this._currentNbQueries=0}function p(e){if(e<0)throw new Error("Page requested below 0.");return this._change({state:this.state.setPage(e),isPageReset:!1}),this}function v(){return this.state.page}u(d,c),d.prototype.search=function(){return this._search({onlyWithDerivedHelpers:!1}),this},d.prototype.searchOnlyWithDerivedHelpers=function(){return this._search({onlyWithDerivedHelpers:!0}),this},d.prototype.getQuery=function(){var e=this.state;return s._getHitsSearchParams(e)},d.prototype.searchOnce=function(e,t){var r=e?this.state.setQueryParameters(e):this.state,n=s._getQueries(r.index,r),a=this;if(this._currentNbQueries++,this.emit("searchOnce",{state:r}),!t)return this.client.search(n).then((function(e){return a._currentNbQueries--,0===a._currentNbQueries&&a.emit("searchQueueEmpty"),{content:new i(r,e.results),state:r,_originalResponse:e}}),(function(e){throw a._currentNbQueries--,0===a._currentNbQueries&&a.emit("searchQueueEmpty"),e}));this.client.search(n).then((function(e){a._currentNbQueries--,0===a._currentNbQueries&&a.emit("searchQueueEmpty"),t(null,new i(r,e.results),r)})).catch((function(e){a._currentNbQueries--,0===a._currentNbQueries&&a.emit("searchQueueEmpty"),t(e,null,r)}))},d.prototype.findAnswers=function(e){var t=this.state,r=this.derivedHelpers[0];if(!r)return Promise.resolve([]);var n=r.getModifiedState(t),i=f({attributesForPrediction:e.attributesForPrediction,nbHits:e.nbHits},{params:h(s._getHitsSearchParams(n),["attributesToSnippet","hitsPerPage","restrictSearchableAttributes","snippetEllipsisText"])}),a="search for answers was called, but this client does not have a function client.initIndex(index).findAnswers";if("function"!=typeof this.client.initIndex)throw new Error(a);var c=this.client.initIndex(n.index);if("function"!=typeof c.findAnswers)throw new Error(a);return c.findAnswers(n.query,e.queryLanguages,i)},d.prototype.searchForFacetValues=function(e,t,r,n){var i="function"==typeof this.client.searchForFacetValues;if(!i&&"function"!=typeof this.client.initIndex)throw new Error("search for facet values (searchable) was called, but this client does not have a function client.searchForFacetValues or client.initIndex(index).searchForFacetValues");var a=this.state.setQueryParameters(n||{}),c=a.isDisjunctiveFacet(e),u=s.getSearchForFacetQuery(e,t,r,a);this._currentNbQueries++;var o=this;return this.emit("searchForFacetValues",{state:a,facet:e,query:t}),(i?this.client.searchForFacetValues([{indexName:a.index,params:u}]):this.client.initIndex(a.index).searchForFacetValues(u)).then((function(t){return o._currentNbQueries--,0===o._currentNbQueries&&o.emit("searchQueueEmpty"),(t=Array.isArray(t)?t[0]:t).facetHits.forEach((function(t){t.escapedValue=m(t.value),t.isRefined=c?a.isDisjunctiveFacetRefined(e,t.escapedValue):a.isFacetRefined(e,t.escapedValue)})),t}),(function(e){throw o._currentNbQueries--,0===o._currentNbQueries&&o.emit("searchQueueEmpty"),e}))},d.prototype.setQuery=function(e){return this._change({state:this.state.resetPage().setQuery(e),isPageReset:!0}),this},d.prototype.clearRefinements=function(e){return this._change({state:this.state.resetPage().clearRefinements(e),isPageReset:!0}),this},d.prototype.clearTags=function(){return this._change({state:this.state.resetPage().clearTags(),isPageReset:!0}),this},d.prototype.addDisjunctiveFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addDisjunctiveFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.addDisjunctiveRefine=function(){return this.addDisjunctiveFacetRefinement.apply(this,arguments)},d.prototype.addHierarchicalFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addHierarchicalFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.addNumericRefinement=function(e,t,r){return this._change({state:this.state.resetPage().addNumericRefinement(e,t,r),isPageReset:!0}),this},d.prototype.addFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.addRefine=function(){return this.addFacetRefinement.apply(this,arguments)},d.prototype.addFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().addExcludeRefinement(e,t),isPageReset:!0}),this},d.prototype.addExclude=function(){return this.addFacetExclusion.apply(this,arguments)},d.prototype.addTag=function(e){return this._change({state:this.state.resetPage().addTagRefinement(e),isPageReset:!0}),this},d.prototype.removeNumericRefinement=function(e,t,r){return this._change({state:this.state.resetPage().removeNumericRefinement(e,t,r),isPageReset:!0}),this},d.prototype.removeDisjunctiveFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().removeDisjunctiveFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.removeDisjunctiveRefine=function(){return this.removeDisjunctiveFacetRefinement.apply(this,arguments)},d.prototype.removeHierarchicalFacetRefinement=function(e){return this._change({state:this.state.resetPage().removeHierarchicalFacetRefinement(e),isPageReset:!0}),this},d.prototype.removeFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().removeFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.removeRefine=function(){return this.removeFacetRefinement.apply(this,arguments)},d.prototype.removeFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().removeExcludeRefinement(e,t),isPageReset:!0}),this},d.prototype.removeExclude=function(){return this.removeFacetExclusion.apply(this,arguments)},d.prototype.removeTag=function(e){return this._change({state:this.state.resetPage().removeTagRefinement(e),isPageReset:!0}),this},d.prototype.toggleFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().toggleExcludeFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.toggleExclude=function(){return this.toggleFacetExclusion.apply(this,arguments)},d.prototype.toggleRefinement=function(e,t){return this.toggleFacetRefinement(e,t)},d.prototype.toggleFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().toggleFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.toggleRefine=function(){return this.toggleFacetRefinement.apply(this,arguments)},d.prototype.toggleTag=function(e){return this._change({state:this.state.resetPage().toggleTagRefinement(e),isPageReset:!0}),this},d.prototype.nextPage=function(){var e=this.state.page||0;return this.setPage(e+1)},d.prototype.previousPage=function(){var e=this.state.page||0;return this.setPage(e-1)},d.prototype.setCurrentPage=p,d.prototype.setPage=p,d.prototype.setIndex=function(e){return this._change({state:this.state.resetPage().setIndex(e),isPageReset:!0}),this},d.prototype.setQueryParameter=function(e,t){return this._change({state:this.state.resetPage().setQueryParameter(e,t),isPageReset:!0}),this},d.prototype.setState=function(e){return this._change({state:n.make(e),isPageReset:!1}),this},d.prototype.overrideStateWithoutTriggeringChangeEvent=function(e){return this.state=new n(e),this},d.prototype.hasRefinements=function(e){return!!o(this.state.getNumericRefinements(e))||(this.state.isConjunctiveFacet(e)?this.state.isFacetRefined(e):this.state.isDisjunctiveFacet(e)?this.state.isDisjunctiveFacetRefined(e):!!this.state.isHierarchicalFacet(e)&&this.state.isHierarchicalFacetRefined(e))},d.prototype.isExcluded=function(e,t){return this.state.isExcludeRefined(e,t)},d.prototype.isDisjunctiveRefined=function(e,t){return this.state.isDisjunctiveFacetRefined(e,t)},d.prototype.hasTag=function(e){return this.state.isTagRefined(e)},d.prototype.isTagRefined=function(){return this.hasTagRefinements.apply(this,arguments)},d.prototype.getIndex=function(){return this.state.index},d.prototype.getCurrentPage=v,d.prototype.getPage=v,d.prototype.getTags=function(){return this.state.tagRefinements},d.prototype.getRefinements=function(e){var t=[];if(this.state.isConjunctiveFacet(e))this.state.getConjunctiveRefinements(e).forEach((function(e){t.push({value:e,type:"conjunctive"})})),this.state.getExcludeRefinements(e).forEach((function(e){t.push({value:e,type:"exclude"})}));else if(this.state.isDisjunctiveFacet(e)){this.state.getDisjunctiveRefinements(e).forEach((function(e){t.push({value:e,type:"disjunctive"})}))}var r=this.state.getNumericRefinements(e);return Object.keys(r).forEach((function(e){var n=r[e];t.push({value:n,operator:e,type:"numeric"})})),t},d.prototype.getNumericRefinement=function(e,t){return this.state.getNumericRefinement(e,t)},d.prototype.getHierarchicalFacetBreadcrumb=function(e){return this.state.getHierarchicalFacetBreadcrumb(e)},d.prototype._search=function(e){var t=this.state,r=[],n=[];e.onlyWithDerivedHelpers||(n=s._getQueries(t.index,t),r.push({state:t,queriesCount:n.length,helper:this}),this.emit("search",{state:t,results:this.lastResults}));var i=this.derivedHelpers.map((function(e){var n=e.getModifiedState(t),i=s._getQueries(n.index,n);return r.push({state:n,queriesCount:i.length,helper:e}),e.emit("search",{state:n,results:e.lastResults}),i})),a=Array.prototype.concat.apply(n,i),c=this._queryId++;this._currentNbQueries++;try{this.client.search(a).then(this._dispatchAlgoliaResponse.bind(this,r,c)).catch(this._dispatchAlgoliaError.bind(this,c))}catch(u){this.emit("error",{error:u})}},d.prototype._dispatchAlgoliaResponse=function(e,t,r){if(!(t0},d.prototype._change=function(e){var t=e.state,r=e.isPageReset;t!==this.state&&(this.state=t,this.emit("change",{state:this.state,results:this.lastResults,isPageReset:r}))},d.prototype.clearCache=function(){return this.client.clearCache&&this.client.clearCache(),this},d.prototype.setClient=function(e){return this.client===e||("function"==typeof e.addAlgoliaAgent&&e.addAlgoliaAgent("JS Helper ("+l+")"),this.client=e),this},d.prototype.getClient=function(){return this.client},d.prototype.derive=function(e){var t=new a(this,e);return this.derivedHelpers.push(t),t},d.prototype.detachDerivedHelper=function(e){var t=this.derivedHelpers.indexOf(e);if(-1===t)throw new Error("Derived helper already detached");this.derivedHelpers.splice(t,1)},d.prototype.hasPendingRequests=function(){return this._currentNbQueries>0},e.exports=d},4587:function(e){"use strict";e.exports=function(e){return Array.isArray(e)?e.filter(Boolean):[]}},2344:function(e){"use strict";e.exports=function(){var e=Array.prototype.slice.call(arguments);return e.reduceRight((function(e,t){return Object.keys(Object(t)).forEach((function(r){void 0!==t[r]&&(void 0!==e[r]&&delete e[r],e[r]=t[r])})),e}),{})}},4039:function(e){"use strict";e.exports={escapeFacetValue:function(e){return"string"!=typeof e?e:String(e).replace(/^-/,"\\-")},unescapeFacetValue:function(e){return"string"!=typeof e?e:e.replace(/^\\-/,"-")}}},7888:function(e){"use strict";e.exports=function(e,t){if(Array.isArray(e))for(var r=0;r1||!a?(e[0].push(i[0]),e[1].push(i[1]),e):(e[0].push(a[0]),e[1].push(a[1]),e)}),[[],[]])}},4853:function(e){"use strict";e.exports=function(e,t){e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}},2686:function(e){"use strict";e.exports=function(e,t){return e.filter((function(r,n){return t.indexOf(r)>-1&&e.indexOf(r)===n}))}},185:function(e){"use strict";function t(e){return"function"==typeof e||Array.isArray(e)||"[object Object]"===Object.prototype.toString.call(e)}function r(e,n){if(e===n)return e;for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)&&"__proto__"!==i){var a=n[i],s=e[i];void 0!==s&&void 0===a||(t(s)&&t(a)?e[i]=r(s,a):e[i]="object"==typeof(c=a)&&null!==c?r(Array.isArray(c)?[]:{},c):c)}var c;return e}e.exports=function(e){t(e)||(e={});for(var n=1,i=arguments.length;n0}},9803:function(e){"use strict";e.exports=function(e,t){if(null===e)return{};var r,n,i={},a=Object.keys(e);for(n=0;n=0||(i[r]=e[r]);return i}},2148:function(e){"use strict";function t(e,t){if(e!==t){var r=void 0!==e,n=null===e,i=void 0!==t,a=null===t;if(!a&&e>t||n&&i||!r)return 1;if(!n&&e=n.length?a:"desc"===n[i]?-a:a}return e.index-r.index})),i.map((function(e){return e.value}))}},8023:function(e){"use strict";e.exports=function e(t){if("number"==typeof t)return t;if("string"==typeof t)return parseFloat(t);if(Array.isArray(t))return t.map(e);throw new Error("The value should be a number, a parsable string or an array of those.")}},6394:function(e,t,r){"use strict";var n=r(185),i={_getQueries:function(e,t){var r=[];return r.push({indexName:e,params:i._getHitsSearchParams(t)}),t.getRefinedDisjunctiveFacets().forEach((function(n){r.push({indexName:e,params:i._getDisjunctiveFacetSearchParams(t,n)})})),t.getRefinedHierarchicalFacets().forEach((function(n){var a=t.getHierarchicalFacetByName(n),s=t.getHierarchicalRefinement(n),c=t._getHierarchicalFacetSeparator(a);s.length>0&&s[0].split(c).length>1&&r.push({indexName:e,params:i._getDisjunctiveFacetSearchParams(t,n,!0)})})),r},_getHitsSearchParams:function(e){var t=e.facets.concat(e.disjunctiveFacets).concat(i._getHitsHierarchicalFacetsAttributes(e)),r=i._getFacetFilters(e),a=i._getNumericFilters(e),s=i._getTagFilters(e),c={facets:t.indexOf("*")>-1?["*"]:t,tagFilters:s};return r.length>0&&(c.facetFilters=r),a.length>0&&(c.numericFilters=a),n({},e.getQueryParams(),c)},_getDisjunctiveFacetSearchParams:function(e,t,r){var a=i._getFacetFilters(e,t,r),s=i._getNumericFilters(e,t),c={hitsPerPage:1,page:0,attributesToRetrieve:[],attributesToHighlight:[],attributesToSnippet:[],tagFilters:i._getTagFilters(e),analytics:!1,clickAnalytics:!1},u=e.getHierarchicalFacetByName(t);return c.facets=u?i._getDisjunctiveHierarchicalFacetAttribute(e,u,r):t,s.length>0&&(c.numericFilters=s),a.length>0&&(c.facetFilters=a),n({},e.getQueryParams(),c)},_getNumericFilters:function(e,t){if(e.numericFilters)return e.numericFilters;var r=[];return Object.keys(e.numericRefinements).forEach((function(n){var i=e.numericRefinements[n]||{};Object.keys(i).forEach((function(e){var a=i[e]||[];t!==n&&a.forEach((function(t){if(Array.isArray(t)){var i=t.map((function(t){return n+e+t}));r.push(i)}else r.push(n+e+t)}))}))})),r},_getTagFilters:function(e){return e.tagFilters?e.tagFilters:e.tagRefinements.join(",")},_getFacetFilters:function(e,t,r){var n=[],i=e.facetsRefinements||{};Object.keys(i).forEach((function(e){(i[e]||[]).forEach((function(t){n.push(e+":"+t)}))}));var a=e.facetsExcludes||{};Object.keys(a).forEach((function(e){(a[e]||[]).forEach((function(t){n.push(e+":-"+t)}))}));var s=e.disjunctiveFacetsRefinements||{};Object.keys(s).forEach((function(e){var r=s[e]||[];if(e!==t&&r&&0!==r.length){var i=[];r.forEach((function(t){i.push(e+":"+t)})),n.push(i)}}));var c=e.hierarchicalFacetsRefinements||{};return Object.keys(c).forEach((function(i){var a=(c[i]||[])[0];if(void 0!==a){var s,u,o=e.getHierarchicalFacetByName(i),h=e._getHierarchicalFacetSeparator(o),f=e._getHierarchicalRootPath(o);if(t===i){if(-1===a.indexOf(h)||!f&&!0===r||f&&f.split(h).length===a.split(h).length)return;f?(u=f.split(h).length-1,a=f):(u=a.split(h).length-2,a=a.slice(0,a.lastIndexOf(h))),s=o.attributes[u]}else u=a.split(h).length-1,s=o.attributes[u];s&&n.push([s+":"+a])}})),n},_getHitsHierarchicalFacetsAttributes:function(e){return e.hierarchicalFacets.reduce((function(t,r){var n=e.getHierarchicalRefinement(r.name)[0];if(!n)return t.push(r.attributes[0]),t;var i=e._getHierarchicalFacetSeparator(r),a=n.split(i).length,s=r.attributes.slice(0,a+1);return t.concat(s)}),[])},_getDisjunctiveHierarchicalFacetAttribute:function(e,t,r){var n=e._getHierarchicalFacetSeparator(t);if(!0===r){var i=e._getHierarchicalRootPath(t),a=0;return i&&(a=i.split(n).length),[t.attributes[a]]}var s=(e.getHierarchicalRefinement(t.name)[0]||"").split(n).length-1;return t.attributes.slice(0,s+1)},getSearchForFacetQuery:function(e,t,r,a){var s=a.isDisjunctiveFacet(e)?a.clearRefinements(e):a,c={facetQuery:t,facetName:e};return"number"==typeof r&&(c.maxFacetHits=r),n({},i._getHitsSearchParams(s),c)}};e.exports=i},6801:function(e){"use strict";e.exports=function(e){return null!==e&&/^[a-zA-Z0-9_-]{1,64}$/.test(e)}},4336:function(e){"use strict";e.exports="3.8.2"},290:function(e){e.exports=function(){"use strict";function e(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function t(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function r(r){for(var n=1;n=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var r=[],n=!0,i=!1,a=void 0;try{for(var s,c=e[Symbol.iterator]();!(n=(s=c.next()).done)&&(r.push(s.value),!t||r.length!==t);n=!0);}catch(e){i=!0,a=e}finally{try{n||null==c.return||c.return()}finally{if(i)throw a}}return r}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function a(e){return function(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then((function(){var r=JSON.stringify(e),n=a()[r];return Promise.all([n||t(),void 0!==n])})).then((function(e){var t=i(e,2),n=t[0],a=t[1];return Promise.all([n,a||r.miss(n)])})).then((function(e){return i(e,1)[0]}))},set:function(e,t){return Promise.resolve().then((function(){var i=a();return i[JSON.stringify(e)]=t,n().setItem(r,JSON.stringify(i)),t}))},delete:function(e){return Promise.resolve().then((function(){var t=a();delete t[JSON.stringify(e)],n().setItem(r,JSON.stringify(t))}))},clear:function(){return Promise.resolve().then((function(){n().removeItem(r)}))}}}function c(e){var t=a(e.caches),r=t.shift();return void 0===r?{get:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return t().then((function(e){return Promise.all([e,r.miss(e)])})).then((function(e){return i(e,1)[0]}))},set:function(e,t){return Promise.resolve(t)},delete:function(e){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(e,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return r.get(e,n,i).catch((function(){return c({caches:t}).get(e,n,i)}))},set:function(e,n){return r.set(e,n).catch((function(){return c({caches:t}).set(e,n)}))},delete:function(e){return r.delete(e).catch((function(){return c({caches:t}).delete(e)}))},clear:function(){return r.clear().catch((function(){return c({caches:t}).clear()}))}}}function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{serializable:!0},t={};return{get:function(r,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},a=JSON.stringify(r);if(a in t)return Promise.resolve(e.serializable?JSON.parse(t[a]):t[a]);var s=n(),c=i&&i.miss||function(){return Promise.resolve()};return s.then((function(e){return c(e)})).then((function(){return s}))},set:function(r,n){return t[JSON.stringify(r)]=e.serializable?JSON.stringify(n):n,Promise.resolve(n)},delete:function(e){return delete t[JSON.stringify(e)],Promise.resolve()},clear:function(){return t={},Promise.resolve()}}}function o(e){for(var t=e.length-1;t>0;t--){var r=Math.floor(Math.random()*(t+1)),n=e[t];e[t]=e[r],e[r]=n}return e}function h(e,t){return t?(Object.keys(t).forEach((function(r){e[r]=t[r](e)})),e):e}function f(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n0?n:void 0,timeout:r.timeout||t,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var d={Read:1,Write:2,Any:3},p=1,v=2,g=3;function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p;return r(r({},e),{},{status:t,lastUpdate:Date.now()})}function R(e){return"string"==typeof e?{protocol:"https",url:e,accept:d.Any}:{protocol:e.protocol||"https",url:e.url,accept:e.accept||d.Any}}var F="GET",b="POST";function P(e,t){return Promise.all(t.map((function(t){return e.get(t,(function(){return Promise.resolve(y(t))}))}))).then((function(e){var r=e.filter((function(e){return function(e){return e.status===p||Date.now()-e.lastUpdate>12e4}(e)})),n=e.filter((function(e){return function(e){return e.status===g&&Date.now()-e.lastUpdate<=12e4}(e)})),i=[].concat(a(r),a(n));return{getTimeout:function(e,t){return(0===n.length&&0===e?1:n.length+3+e)*t},statelessHosts:i.length>0?i.map((function(e){return R(e)})):t}}))}function j(e,t,n,i){var s=[],c=function(e,t){if(e.method!==F&&(void 0!==e.data||void 0!==t.data)){var n=Array.isArray(e.data)?e.data:r(r({},e.data),t.data);return JSON.stringify(n)}}(n,i),u=function(e,t){var n=r(r({},e.headers),t.headers),i={};return Object.keys(n).forEach((function(e){var t=n[e];i[e.toLowerCase()]=t})),i}(e,i),o=n.method,h=n.method!==F?{}:r(r({},n.data),i.data),f=r(r(r({"x-algolia-agent":e.userAgent.value},e.queryParameters),h),i.queryParameters),l=0,m=function t(r,a){var h=r.pop();if(void 0===h)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:O(s)};var m={data:c,headers:u,method:o,url:E(h,n.path,f),connectTimeout:a(l,e.timeouts.connect),responseTimeout:a(l,i.timeout)},d=function(e){var t={request:m,response:e,host:h,triesLeft:r.length};return s.push(t),t},p={onSuccess:function(e){return function(e){try{return JSON.parse(e.content)}catch(t){throw function(e,t){return{name:"DeserializationError",message:e,response:t}}(t.message,e)}}(e)},onRetry:function(n){var i=d(n);return n.isTimedOut&&l++,Promise.all([e.logger.info("Retryable failure",w(i)),e.hostsCache.set(h,y(h,n.isTimedOut?g:v))]).then((function(){return t(r,a)}))},onFail:function(e){throw d(e),function(e,t){var r=e.content,n=e.status,i=r;try{i=JSON.parse(r).message}catch(e){}return function(e,t,r){return{name:"ApiError",message:e,status:t,transporterStackTrace:r}}(i,n,t)}(e,O(s))}};return e.requester.send(m).then((function(e){return function(e,t){return function(e){var t=e.status;return e.isTimedOut||function(e){var t=e.isTimedOut,r=e.status;return!t&&0==~~r}(e)||2!=~~(t/100)&&4!=~~(t/100)}(e)?t.onRetry(e):2==~~(e.status/100)?t.onSuccess(e):t.onFail(e)}(e,p)}))};return P(e.hostsCache,t).then((function(e){return m(a(e.statelessHosts).reverse(),e.getTimeout)}))}function _(e){var t={value:"Algolia for JavaScript (".concat(e,")"),add:function(e){var r="; ".concat(e.segment).concat(void 0!==e.version?" (".concat(e.version,")"):"");return-1===t.value.indexOf(r)&&(t.value="".concat(t.value).concat(r)),t}};return t}function E(e,t,r){var n=x(r),i="".concat(e.protocol,"://").concat(e.url,"/").concat("/"===t.charAt(0)?t.substr(1):t);return n.length&&(i+="?".concat(n)),i}function x(e){return Object.keys(e).map((function(t){return f("%s=%s",t,(r=e[t],"[object Object]"===Object.prototype.toString.call(r)||"[object Array]"===Object.prototype.toString.call(r)?JSON.stringify(e[t]):e[t]));var r})).join("&")}function O(e){return e.map((function(e){return w(e)}))}function w(e){var t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return r(r({},e),{},{request:r(r({},e.request),{},{headers:r(r({},e.request.headers),t)})})}var N=function(e){var t=e.appId,n=function(e,t,r){var n={"x-algolia-api-key":r,"x-algolia-application-id":t};return{headers:function(){return e===l.WithinHeaders?n:{}},queryParameters:function(){return e===l.WithinQueryParameters?n:{}}}}(void 0!==e.authMode?e.authMode:l.WithinHeaders,t,e.apiKey),a=function(e){var t=e.hostsCache,r=e.logger,n=e.requester,a=e.requestsCache,s=e.responsesCache,c=e.timeouts,u=e.userAgent,o=e.hosts,h=e.queryParameters,f={hostsCache:t,logger:r,requester:n,requestsCache:a,responsesCache:s,timeouts:c,userAgent:u,headers:e.headers,queryParameters:h,hosts:o.map((function(e){return R(e)})),read:function(e,t){var r=m(t,f.timeouts.read),n=function(){return j(f,f.hosts.filter((function(e){return 0!=(e.accept&d.Read)})),e,r)};if(!0!==(void 0!==r.cacheable?r.cacheable:e.cacheable))return n();var a={request:e,mappedRequestOptions:r,transporter:{queryParameters:f.queryParameters,headers:f.headers}};return f.responsesCache.get(a,(function(){return f.requestsCache.get(a,(function(){return f.requestsCache.set(a,n()).then((function(e){return Promise.all([f.requestsCache.delete(a),e])}),(function(e){return Promise.all([f.requestsCache.delete(a),Promise.reject(e)])})).then((function(e){var t=i(e,2);return t[0],t[1]}))}))}),{miss:function(e){return f.responsesCache.set(a,e)}})},write:function(e,t){return j(f,f.hosts.filter((function(e){return 0!=(e.accept&d.Write)})),e,m(t,f.timeouts.write))}};return f}(r(r({hosts:[{url:"".concat(t,"-dsn.algolia.net"),accept:d.Read},{url:"".concat(t,".algolia.net"),accept:d.Write}].concat(o([{url:"".concat(t,"-1.algolianet.com")},{url:"".concat(t,"-2.algolianet.com")},{url:"".concat(t,"-3.algolianet.com")}]))},e),{},{headers:r(r(r({},n.headers()),{"content-type":"application/x-www-form-urlencoded"}),e.headers),queryParameters:r(r({},n.queryParameters()),e.queryParameters)}));return h({transporter:a,appId:t,addAlgoliaAgent:function(e,t){a.userAgent.add({segment:e,version:t})},clearCache:function(){return Promise.all([a.requestsCache.clear(),a.responsesCache.clear()]).then((function(){}))}},e.methods)},A=function(e){return function(t,r){return t.method===F?e.transporter.read(t,r):e.transporter.write(t,r)}},H=function(e){return function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return h({transporter:e.transporter,appId:e.appId,indexName:t},r.methods)}},S=function(e){return function(t,n){var i=t.map((function(e){return r(r({},e),{},{params:x(e.params||{})})}));return e.transporter.read({method:b,path:"1/indexes/*/queries",data:{requests:i},cacheable:!0},n)}},T=function(e){return function(t,i){return Promise.all(t.map((function(t){var a=t.params,s=a.facetName,c=a.facetQuery,u=n(a,["facetName","facetQuery"]);return H(e)(t.indexName,{methods:{searchForFacetValues:k}}).searchForFacetValues(s,c,r(r({},i),u))})))}},Q=function(e){return function(t,r,n){return e.transporter.read({method:b,path:f("1/answers/%s/prediction",e.indexName),data:{query:t,queryLanguages:r},cacheable:!0},n)}},C=function(e){return function(t,r){return e.transporter.read({method:b,path:f("1/indexes/%s/query",e.indexName),data:{query:t},cacheable:!0},r)}},k=function(e){return function(t,r,n){return e.transporter.read({method:b,path:f("1/indexes/%s/facets/%s/query",e.indexName,t),data:{facetQuery:r},cacheable:!0},n)}},D=1,I=2,q=3;function V(e,t,n){var i,a={appId:e,apiKey:t,timeouts:{connect:1,read:2,write:30},requester:{send:function(e){return new Promise((function(t){var r=new XMLHttpRequest;r.open(e.method,e.url,!0),Object.keys(e.headers).forEach((function(t){return r.setRequestHeader(t,e.headers[t])}));var n,i=function(e,n){return setTimeout((function(){r.abort(),t({status:0,content:n,isTimedOut:!0})}),1e3*e)},a=i(e.connectTimeout,"Connection timeout");r.onreadystatechange=function(){r.readyState>r.OPENED&&void 0===n&&(clearTimeout(a),n=i(e.responseTimeout,"Socket timeout"))},r.onerror=function(){0===r.status&&(clearTimeout(a),clearTimeout(n),t({content:r.responseText||"Network request failed",status:r.status,isTimedOut:!1}))},r.onload=function(){clearTimeout(a),clearTimeout(n),t({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(e.data)}))}},logger:(i=q,{debug:function(e,t){return D>=i&&console.debug(e,t),Promise.resolve()},info:function(e,t){return I>=i&&console.info(e,t),Promise.resolve()},error:function(e,t){return console.error(e,t),Promise.resolve()}}),responsesCache:u(),requestsCache:u({serializable:!1}),hostsCache:c({caches:[s({key:"".concat("4.13.1","-").concat(e)}),u()]}),userAgent:_("4.13.1").add({segment:"Browser",version:"lite"}),authMode:l.WithinQueryParameters};return N(r(r(r({},a),n),{},{methods:{search:S,searchForFacetValues:T,multipleQueries:S,multipleSearchForFacetValues:T,customRequest:A,initIndex:function(e){return function(t){return H(e)(t,{methods:{search:C,searchForFacetValues:k,findAnswers:Q}})}}}}))}return V.version="4.13.1",V}()},6929:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return T}});var n=r(7294),i=r(290),a=r.n(i),s=r(8131),c=r.n(s),u=r(6010),o=r(9105),h=r(6742),f=r(412),l=r(9306),m=r(2263),d=r(907),p=r(2644),v=r(6402),g=r(4973),y="searchQueryInput_gKrp",R="searchVersionInput_yK3v",F="searchResultsColumn_u0zF",b="algoliaLogo_8CW0",P="algoliaLogoPathFill_P7SL",j="searchResultItem_AAMZ",_="searchResultItemHeading_Z8N+",E="searchResultItemPath_0ix4",x="searchResultItemSummary_jyET",O="searchQueryColumn_oQOT",w="searchVersionColumn_AEiZ",N="searchLogoColumn_tJ40",A="loadingSpinner_DlG9",H="loader_L7Al";var S=function(e){var t=e.docsSearchVersionsHelpers,r=Object.entries(t.allDocsData).filter((function(e){return e[1].versions.length>1}));return n.createElement("div",{className:(0,u.Z)("col","col--3","padding-left--none",w)},r.map((function(e){var i=e[0],a=e[1],s=r.length>1?i+": ":"";return n.createElement("select",{key:i,onChange:function(e){return t.setSearchVersion(i,e.target.value)},defaultValue:t.searchVersions[i],className:R},a.versions.map((function(e,t){return n.createElement("option",{key:t,label:""+s+e.label,value:e.name})})))})))};var T=function(){var e,t,r,i,s,R,w=(0,m.Z)(),T=w.siteConfig.themeConfig.algolia,Q=T.appId,C=T.apiKey,k=T.indexName,D=w.i18n.currentLocale,I=(e=(0,l.c2)().selectMessage,function(t){return e(t,(0,g.I)({id:"theme.SearchPage.documentsFound.plurals",description:'Pluralized label for "{count} documents found". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One document found|{count} documents found"},{count:t}))}),q=(t=(0,d._r)(),r=(0,n.useState)((function(){return Object.entries(t).reduce((function(e,t){var r,n=t[0],i=t[1];return Object.assign({},e,((r={})[n]=i.versions[0].name,r))}),{})})),i=r[0],s=r[1],R=Object.values(t).some((function(e){return e.versions.length>1})),{allDocsData:t,versioningEnabled:R,searchVersions:i,setSearchVersion:function(e,t){return s((function(r){var n;return Object.assign({},r,((n={})[e]=t,n))}))}}),V=(0,p.Z)(),L=V.searchValue,B=V.updateSearchPath,z=(0,n.useState)(L),M=z[0],J=z[1],Z={items:[],query:null,totalResults:null,totalPages:null,lastPage:null,hasMore:null,loading:null},W=(0,n.useReducer)((function(e,t){var r=t.type,n=t.value;switch(r){case"reset":return Z;case"loading":return Object.assign({},e,{loading:!0});case"update":return M!==n.query?e:Object.assign({},n,{items:0===n.lastPage?n.items:e.items.concat(n.items)});case"advance":var i=e.totalPages>e.lastPage+1;return Object.assign({},e,{lastPage:i?e.lastPage+1:e.lastPage,hasMore:i});default:return e}}),Z),U=W[0],K=W[1],G=a()(Q,C),X=c()(G,k,{hitsPerPage:15,advancedSyntax:!0,disjunctiveFacets:["language","docusaurus_tag"]});X.on("result",(function(e){var t=e.results,r=t.query,n=t.hits,i=t.page,a=t.nbHits,s=t.nbPages;if(""!==r&&n instanceof Array){var c=function(e){return e.replace(/algolia-docsearch-suggestion--highlight/g,"search-result-match")},u=n.map((function(e){var t=e.url,r=e._highlightResult.hierarchy,n=e._snippetResult,i=void 0===n?{}:n,a=new URL(t),s=a.pathname,u=a.hash,o=Object.keys(r).map((function(e){return c(r[e].value)}));return{title:o.pop(),url:s+u,summary:i.content?c(i.content.value)+"...":"",breadcrumbs:o}}));K({type:"update",value:{items:u,query:r,totalResults:a,totalPages:s,lastPage:i,hasMore:s>i+1,loading:!1}})}else K({type:"reset"})}));var $=(0,n.useState)(null),Y=$[0],ee=$[1],te=(0,n.useRef)(0),re=(0,n.useRef)(f.Z.canUseDOM&&new IntersectionObserver((function(e){var t=e[0],r=t.isIntersecting,n=t.boundingClientRect.y;r&&te.current>n&&K({type:"advance"}),te.current=n}),{threshold:1})),ne=function(){return M?(0,g.I)({id:"theme.SearchPage.existingResultsTitle",message:'Search results for "{query}"',description:"The search page title for non-empty query"},{query:M}):(0,g.I)({id:"theme.SearchPage.emptyResultsTitle",message:"Search the documentation",description:"The search page title for empty query"})},ie=function(e){void 0===e&&(e=0),X.addDisjunctiveFacetRefinement("docusaurus_tag","default"),X.addDisjunctiveFacetRefinement("language",D),Object.entries(q.searchVersions).forEach((function(e){var t=e[0],r=e[1];X.addDisjunctiveFacetRefinement("docusaurus_tag","docs-"+t+"-"+r)})),X.setQuery(M).setPage(e).search()};return(0,n.useEffect)((function(){if(Y)return re.current.observe(Y),function(){re.current.unobserve(Y)}}),[Y]),(0,n.useEffect)((function(){B(M),K({type:"reset"}),M&&(K({type:"loading"}),setTimeout((function(){ie()}),300))}),[M,q.searchVersions]),(0,n.useEffect)((function(){U.lastPage&&0!==U.lastPage&&ie(U.lastPage)}),[U.lastPage]),(0,n.useEffect)((function(){L&&L!==M&&J(L)}),[L]),n.createElement(v.Z,{wrapperClassName:"search-page-wrapper"},n.createElement(o.Z,null,n.createElement("title",null,(0,l.pe)(ne())),n.createElement("meta",{property:"robots",content:"noindex, follow"})),n.createElement("div",{className:"container margin-vert--lg"},n.createElement("h1",null,ne()),n.createElement("form",{className:"row",onSubmit:function(e){return e.preventDefault()}},n.createElement("div",{className:(0,u.Z)("col",O,{"col--9":q.versioningEnabled,"col--12":!q.versioningEnabled})},n.createElement("input",{type:"search",name:"q",className:y,placeholder:(0,g.I)({id:"theme.SearchPage.inputPlaceholder",message:"Type your search here",description:"The placeholder for search page input"}),"aria-label":(0,g.I)({id:"theme.SearchPage.inputLabel",message:"Search",description:"The ARIA label for search page input"}),onChange:function(e){return J(e.target.value)},value:M,autoComplete:"off",autoFocus:!0})),q.versioningEnabled&&n.createElement(S,{docsSearchVersionsHelpers:q})),n.createElement("div",{className:"row"},n.createElement("div",{className:(0,u.Z)("col","col--8",F)},!!U.totalResults&&I(U.totalResults)),n.createElement("div",{className:(0,u.Z)("col","col--4","text--right",N)},n.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:"https://www.algolia.com/","aria-label":(0,g.I)({id:"theme.SearchPage.algoliaLabel",message:"Search by Algolia",description:"The ARIA label for Algolia mention"})},n.createElement("svg",{viewBox:"0 0 168 24",className:b},n.createElement("g",{fill:"none"},n.createElement("path",{className:P,d:"M120.925 18.804c-4.386.02-4.386-3.54-4.386-4.106l-.007-13.336 2.675-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-10.846-2.18c.821 0 1.43-.047 1.855-.129v-2.719a6.334 6.334 0 0 0-1.574-.199 5.7 5.7 0 0 0-.897.069 2.699 2.699 0 0 0-.814.24c-.24.116-.439.28-.582.491-.15.212-.219.335-.219.656 0 .628.219.991.616 1.23s.938.362 1.615.362zm-.233-9.7c.883 0 1.629.109 2.231.328.602.218 1.088.525 1.444.915.363.396.609.922.76 1.483.157.56.232 1.175.232 1.85v6.874a32.5 32.5 0 0 1-1.868.314c-.834.123-1.772.185-2.813.185-.69 0-1.327-.069-1.895-.198a4.001 4.001 0 0 1-1.471-.636 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.803 0-.656.13-1.073.384-1.525a3.24 3.24 0 0 1 1.047-1.106c.445-.287.95-.492 1.532-.615a8.8 8.8 0 0 1 1.82-.185 8.404 8.404 0 0 1 1.972.24v-.438c0-.307-.035-.6-.11-.874a1.88 1.88 0 0 0-.384-.73 1.784 1.784 0 0 0-.724-.493 3.164 3.164 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.735 7.735 0 0 0-1.26.307l-.321-2.192c.335-.117.834-.233 1.478-.349a10.98 10.98 0 0 1 2.073-.178zm52.842 9.626c.822 0 1.43-.048 1.854-.13V13.7a6.347 6.347 0 0 0-1.574-.199c-.294 0-.595.021-.896.069a2.7 2.7 0 0 0-.814.24 1.46 1.46 0 0 0-.582.491c-.15.212-.218.335-.218.656 0 .628.218.991.615 1.23.404.245.938.362 1.615.362zm-.226-9.694c.883 0 1.629.108 2.231.327.602.219 1.088.526 1.444.915.355.39.609.923.759 1.483a6.8 6.8 0 0 1 .233 1.852v6.873c-.41.088-1.034.19-1.868.314-.834.123-1.772.184-2.813.184-.69 0-1.327-.068-1.895-.198a4.001 4.001 0 0 1-1.471-.635 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.804 0-.656.13-1.073.384-1.524.26-.45.608-.82 1.047-1.107.445-.286.95-.491 1.532-.614a8.803 8.803 0 0 1 2.751-.13c.329.034.671.096 1.04.185v-.437a3.3 3.3 0 0 0-.109-.875 1.873 1.873 0 0 0-.384-.731 1.784 1.784 0 0 0-.724-.492 3.165 3.165 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.75 7.75 0 0 0-1.26.307l-.321-2.193c.335-.116.834-.232 1.478-.348a11.633 11.633 0 0 1 2.073-.177zm-8.034-1.271a1.626 1.626 0 0 1-1.628-1.62c0-.895.725-1.62 1.628-1.62.904 0 1.63.725 1.63 1.62 0 .895-.733 1.62-1.63 1.62zm1.348 13.22h-2.689V7.27l2.69-.423v11.956zm-4.714 0c-4.386.02-4.386-3.54-4.386-4.107l-.008-13.336 2.676-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-8.698-5.903c0-1.156-.253-2.119-.746-2.788-.493-.677-1.183-1.01-2.067-1.01-.882 0-1.574.333-2.065 1.01-.493.676-.733 1.632-.733 2.788 0 1.168.246 1.953.74 2.63.492.683 1.183 1.018 2.066 1.018.882 0 1.574-.342 2.067-1.019.492-.683.738-1.46.738-2.63zm2.737-.007c0 .902-.13 1.584-.397 2.33a5.52 5.52 0 0 1-1.128 1.906 4.986 4.986 0 0 1-1.752 1.223c-.685.286-1.739.45-2.265.45-.528-.006-1.574-.157-2.252-.45a5.096 5.096 0 0 1-1.744-1.223c-.487-.527-.863-1.162-1.137-1.906a6.345 6.345 0 0 1-.41-2.33c0-.902.123-1.77.397-2.508a5.554 5.554 0 0 1 1.15-1.892 5.133 5.133 0 0 1 1.75-1.216c.679-.287 1.425-.423 2.232-.423.808 0 1.553.142 2.237.423a4.88 4.88 0 0 1 1.753 1.216 5.644 5.644 0 0 1 1.135 1.892c.287.738.431 1.606.431 2.508zm-20.138 0c0 1.12.246 2.363.738 2.882.493.52 1.13.78 1.91.78.424 0 .828-.062 1.204-.178.377-.116.677-.253.917-.417V9.33a10.476 10.476 0 0 0-1.766-.226c-.971-.028-1.71.37-2.23 1.004-.513.636-.773 1.75-.773 2.788zm7.438 5.274c0 1.824-.466 3.156-1.404 4.004-.936.846-2.367 1.27-4.296 1.27-.705 0-2.17-.137-3.34-.396l.431-2.118c.98.205 2.272.26 2.95.26 1.074 0 1.84-.219 2.299-.656.459-.437.684-1.086.684-1.948v-.437a8.07 8.07 0 0 1-1.047.397c-.43.13-.93.198-1.492.198-.739 0-1.41-.116-2.018-.349a4.206 4.206 0 0 1-1.567-1.025c-.431-.45-.774-1.017-1.013-1.694-.24-.677-.363-1.885-.363-2.773 0-.834.13-1.88.384-2.577.26-.696.629-1.298 1.129-1.796.493-.498 1.095-.881 1.8-1.162a6.605 6.605 0 0 1 2.428-.457c.87 0 1.67.109 2.45.24.78.129 1.444.265 1.985.415V18.17zM6.972 6.677v1.627c-.712-.446-1.52-.67-2.425-.67-.585 0-1.045.13-1.38.391a1.24 1.24 0 0 0-.502 1.03c0 .425.164.765.494 1.02.33.256.835.532 1.516.83.447.192.795.356 1.045.495.25.138.537.332.862.582.324.25.563.548.718.894.154.345.23.741.23 1.188 0 .947-.334 1.691-1.004 2.234-.67.542-1.537.814-2.601.814-1.18 0-2.16-.229-2.936-.686v-1.708c.84.628 1.814.942 2.92.942.585 0 1.048-.136 1.388-.407.34-.271.51-.646.51-1.125 0-.287-.1-.55-.302-.79-.203-.24-.42-.42-.655-.542-.234-.123-.585-.29-1.053-.503a61.27 61.27 0 0 1-.582-.271 13.67 13.67 0 0 1-.55-.287 4.275 4.275 0 0 1-.567-.351 6.92 6.92 0 0 1-.455-.4c-.18-.17-.31-.34-.39-.51-.08-.17-.155-.37-.224-.598a2.553 2.553 0 0 1-.104-.742c0-.915.333-1.638.998-2.17.664-.532 1.523-.798 2.576-.798.968 0 1.793.17 2.473.51zm7.468 5.696v-.287c-.022-.607-.187-1.088-.495-1.444-.309-.357-.75-.535-1.324-.535-.532 0-.99.194-1.373.583-.382.388-.622.949-.717 1.683h3.909zm1.005 2.792v1.404c-.596.34-1.383.51-2.362.51-1.255 0-2.255-.377-3-1.132-.744-.755-1.116-1.744-1.116-2.968 0-1.297.34-2.316 1.021-3.055.68-.74 1.548-1.11 2.6-1.11 1.033 0 1.852.323 2.458.966.606.644.91 1.572.91 2.784 0 .33-.033.676-.096 1.038h-5.314c.107.702.405 1.239.894 1.611.49.372 1.106.558 1.85.558.862 0 1.58-.202 2.155-.606zm6.605-1.77h-1.212c-.596 0-1.045.116-1.349.35-.303.234-.454.532-.454.894 0 .372.117.664.35.877.235.213.575.32 1.022.32.51 0 .912-.142 1.204-.424.293-.281.44-.651.44-1.108v-.91zm-4.068-2.554V9.325c.627-.361 1.457-.542 2.489-.542 2.116 0 3.175 1.026 3.175 3.08V17h-1.548v-.957c-.415.68-1.143 1.02-2.186 1.02-.766 0-1.38-.22-1.843-.661-.462-.442-.694-1.003-.694-1.684 0-.776.293-1.38.878-1.81.585-.431 1.404-.647 2.457-.647h1.34V11.8c0-.554-.133-.971-.399-1.253-.266-.282-.707-.423-1.324-.423a4.07 4.07 0 0 0-2.345.718zm9.333-1.93v1.42c.394-1 1.101-1.5 2.123-1.5.148 0 .313.016.494.048v1.531a1.885 1.885 0 0 0-.75-.143c-.542 0-.989.24-1.34.718-.351.479-.527 1.048-.527 1.707V17h-1.563V8.91h1.563zm5.01 4.084c.022.82.272 1.492.75 2.019.479.526 1.15.79 2.01.79.639 0 1.235-.176 1.788-.527v1.404c-.521.319-1.186.479-1.995.479-1.265 0-2.276-.4-3.031-1.197-.755-.798-1.133-1.792-1.133-2.984 0-1.16.38-2.151 1.14-2.975.761-.825 1.79-1.237 3.088-1.237.702 0 1.346.149 1.93.447v1.436a3.242 3.242 0 0 0-1.77-.495c-.84 0-1.513.266-2.019.798-.505.532-.758 1.213-.758 2.042zM40.24 5.72v4.579c.458-1 1.293-1.5 2.505-1.5.787 0 1.42.245 1.899.734.479.49.718 1.17.718 2.042V17h-1.564v-5.106c0-.553-.14-.98-.422-1.284-.282-.303-.652-.455-1.11-.455-.531 0-1.002.202-1.411.606-.41.405-.615 1.022-.615 1.851V17h-1.563V5.72h1.563zm14.966 10.02c.596 0 1.096-.253 1.5-.758.404-.506.606-1.157.606-1.955 0-.915-.202-1.62-.606-2.114-.404-.495-.92-.742-1.548-.742-.553 0-1.05.224-1.491.67-.442.447-.662 1.133-.662 2.058 0 .958.212 1.67.638 2.138.425.469.946.703 1.563.703zM53.004 5.72v4.42c.574-.894 1.388-1.341 2.44-1.341 1.022 0 1.857.383 2.506 1.149.649.766.973 1.781.973 3.047 0 1.138-.309 2.109-.925 2.912-.617.803-1.463 1.205-2.537 1.205-1.075 0-1.894-.447-2.457-1.34V17h-1.58V5.72h1.58zm9.908 11.104l-3.223-7.913h1.739l1.005 2.632 1.26 3.415c.096-.32.48-1.458 1.15-3.415l.909-2.632h1.66l-2.92 7.866c-.777 2.074-1.963 3.11-3.559 3.11a2.92 2.92 0 0 1-.734-.079v-1.34c.17.042.351.064.543.064 1.032 0 1.755-.57 2.17-1.708z"}),n.createElement("path",{fill:"#5468FF",d:"M78.988.938h16.594a2.968 2.968 0 0 1 2.966 2.966V20.5a2.967 2.967 0 0 1-2.966 2.964H78.988a2.967 2.967 0 0 1-2.966-2.964V3.897A2.961 2.961 0 0 1 78.988.938z"}),n.createElement("path",{fill:"white",d:"M89.632 5.967v-.772a.978.978 0 0 0-.978-.977h-2.28a.978.978 0 0 0-.978.977v.793c0 .088.082.15.171.13a7.127 7.127 0 0 1 1.984-.28c.65 0 1.295.088 1.917.259.082.02.164-.04.164-.13m-6.248 1.01l-.39-.389a.977.977 0 0 0-1.382 0l-.465.465a.973.973 0 0 0 0 1.38l.383.383c.062.061.15.047.205-.014.226-.307.472-.601.746-.874.281-.28.568-.526.883-.751.068-.042.075-.137.02-.2m4.16 2.453v3.341c0 .096.104.165.192.117l2.97-1.537c.068-.034.089-.117.055-.184a3.695 3.695 0 0 0-3.08-1.866c-.068 0-.136.054-.136.13m0 8.048a4.489 4.489 0 0 1-4.49-4.482 4.488 4.488 0 0 1 4.49-4.482 4.488 4.488 0 0 1 4.489 4.482 4.484 4.484 0 0 1-4.49 4.482m0-10.85a6.363 6.363 0 1 0 0 12.729 6.37 6.37 0 0 0 6.372-6.368 6.358 6.358 0 0 0-6.371-6.36"})))))),U.items.length>0?n.createElement("main",null,U.items.map((function(e,t){var r=e.title,i=e.url,a=e.summary,s=e.breadcrumbs;return n.createElement("article",{key:t,className:j},n.createElement("h2",{className:_},n.createElement(h.Z,{to:i,dangerouslySetInnerHTML:{__html:r}})),s.length>0&&n.createElement("nav",{"aria-label":"breadcrumbs"},n.createElement("ul",{className:(0,u.Z)("breadcrumbs",E)},s.map((function(e,t){return n.createElement("li",{key:t,className:"breadcrumbs__item",dangerouslySetInnerHTML:{__html:e}})})))),a&&n.createElement("p",{className:x,dangerouslySetInnerHTML:{__html:a}}))}))):[M&&!U.loading&&n.createElement("p",{key:"no-results"},n.createElement(g.Z,{id:"theme.SearchPage.noResultsText",description:"The paragraph for empty search result"},"No results were found")),!!U.loading&&n.createElement("div",{key:"spinner",className:A})],U.hasMore&&n.createElement("div",{className:H,ref:ee},n.createElement(g.Z,{id:"theme.SearchPage.fetchingNewResults",description:"The paragraph for fetching new search results"},"Fetching new results..."))))}}}]); \ No newline at end of file diff --git a/assets/js/0276dc25.6e7be07b.js.LICENSE.txt b/assets/js/0276dc25.6e7be07b.js.LICENSE.txt deleted file mode 100644 index 3016b5c8..00000000 --- a/assets/js/0276dc25.6e7be07b.js.LICENSE.txt +++ /dev/null @@ -1 +0,0 @@ -/*! algoliasearch-lite.umd.js | 4.13.1 | © Algolia, inc. | https://github.com/algolia/algoliasearch-client-javascript */ diff --git a/assets/js/0276dc25.88d76eaf.js b/assets/js/0276dc25.88d76eaf.js new file mode 100644 index 00000000..fcf36f79 --- /dev/null +++ b/assets/js/0276dc25.88d76eaf.js @@ -0,0 +1,2 @@ +/*! For license information please see 0276dc25.88d76eaf.js.LICENSE.txt */ +(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[865],{7331:e=>{function t(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(e){return"function"==typeof e}function n(e){return"object"==typeof e&&null!==e}function i(e){return void 0===e}e.exports=t,t.prototype._events=void 0,t.prototype._maxListeners=void 0,t.defaultMaxListeners=10,t.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},t.prototype.emit=function(e){var t,a,s,c,u,o;if(this._events||(this._events={}),"error"===e&&(!this._events.error||n(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var h=new Error('Uncaught, unspecified "error" event. ('+t+")");throw h.context=t,h}if(i(a=this._events[e]))return!1;if(r(a))switch(arguments.length){case 1:a.call(this);break;case 2:a.call(this,arguments[1]);break;case 3:a.call(this,arguments[1],arguments[2]);break;default:c=Array.prototype.slice.call(arguments,1),a.apply(this,c)}else if(n(a))for(c=Array.prototype.slice.call(arguments,1),s=(o=a.slice()).length,u=0;u0&&this._events[e].length>s&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},t.prototype.on=t.prototype.addListener,t.prototype.once=function(e,t){if(!r(t))throw TypeError("listener must be a function");var n=!1;function i(){this.removeListener(e,i),n||(n=!0,t.apply(this,arguments))}return i.listener=t,this.on(e,i),this},t.prototype.removeListener=function(e,t){var i,a,s,c;if(!r(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(s=(i=this._events[e]).length,a=-1,i===t||r(i.listener)&&i.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(n(i)){for(c=s;c-- >0;)if(i[c]===t||i[c].listener&&i[c].listener===t){a=c;break}if(a<0)return this;1===i.length?(i.length=0,delete this._events[e]):i.splice(a,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},t.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r(n=this._events[e]))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},t.prototype.listeners=function(e){return this._events&&this._events[e]?r(this._events[e])?[this._events[e]]:this._events[e].slice():[]},t.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(r(t))return 1;if(t)return t.length}return 0},t.listenerCount=function(e,t){return e.listenerCount(t)}},8131:(e,t,r)=>{"use strict";var n=r(9374),i=r(7775),a=r(3076);function s(e,t,r){return new n(e,t,r)}s.version=r(4336),s.AlgoliaSearchHelper=n,s.SearchParameters=i,s.SearchResults=a,e.exports=s},8078:(e,t,r)=>{"use strict";var n=r(7331);function i(e,t){this.main=e,this.fn=t,this.lastResults=null}r(4853)(i,n),i.prototype.detach=function(){this.removeAllListeners(),this.main.detachDerivedHelper(this)},i.prototype.getModifiedState=function(e){return this.fn(e)},e.exports=i},2437:(e,t,r)=>{"use strict";var n=r(2344),i=r(9803),a=r(116),s={addRefinement:function(e,t,r){if(s.isRefined(e,t,r))return e;var i=""+r,a=e[t]?e[t].concat(i):[i],c={};return c[t]=a,n({},c,e)},removeRefinement:function(e,t,r){if(void 0===r)return s.clearRefinement(e,(function(e,r){return t===r}));var n=""+r;return s.clearRefinement(e,(function(e,r){return t===r&&n===e}))},toggleRefinement:function(e,t,r){if(void 0===r)throw new Error("toggleRefinement should be used with a value");return s.isRefined(e,t,r)?s.removeRefinement(e,t,r):s.addRefinement(e,t,r)},clearRefinement:function(e,t,r){if(void 0===t)return a(e)?{}:e;if("string"==typeof t)return i(e,[t]);if("function"==typeof t){var n=!1,s=Object.keys(e).reduce((function(i,a){var s=e[a]||[],c=s.filter((function(e){return!t(e,a,r)}));return c.length!==s.length&&(n=!0),i[a]=c,i}),{});return n?s:e}},isRefined:function(e,t,r){var n=!!e[t]&&e[t].length>0;if(void 0===r||!n)return n;var i=""+r;return-1!==e[t].indexOf(i)}};e.exports=s},7775:(e,t,r)=>{"use strict";var n=r(185),i=r(2344),a=r(2686),s=r(7888),c=r(8023),u=r(9803),o=r(116),h=r(6801),f=r(2437);function l(e,t){return Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&e.every((function(e,r){return l(t[r],e)})):e===t}function m(e){var t=e?m._parseNumbers(e):{};void 0===t.userToken||h(t.userToken)||console.warn("[algoliasearch-helper] The `userToken` parameter is invalid. This can lead to wrong analytics.\n - Format: [a-zA-Z0-9_-]{1,64}"),this.facets=t.facets||[],this.disjunctiveFacets=t.disjunctiveFacets||[],this.hierarchicalFacets=t.hierarchicalFacets||[],this.facetsRefinements=t.facetsRefinements||{},this.facetsExcludes=t.facetsExcludes||{},this.disjunctiveFacetsRefinements=t.disjunctiveFacetsRefinements||{},this.numericRefinements=t.numericRefinements||{},this.tagRefinements=t.tagRefinements||[],this.hierarchicalFacetsRefinements=t.hierarchicalFacetsRefinements||{};var r=this;Object.keys(t).forEach((function(e){var n=-1!==m.PARAMETERS.indexOf(e),i=void 0!==t[e];!n&&i&&(r[e]=t[e])}))}m.PARAMETERS=Object.keys(new m),m._parseNumbers=function(e){if(e instanceof m)return e;var t={};if(["aroundPrecision","aroundRadius","getRankingInfo","minWordSizefor2Typos","minWordSizefor1Typo","page","maxValuesPerFacet","distinct","minimumAroundRadius","hitsPerPage","minProximity"].forEach((function(r){var n=e[r];if("string"==typeof n){var i=parseFloat(n);t[r]=isNaN(i)?n:i}})),Array.isArray(e.insideBoundingBox)&&(t.insideBoundingBox=e.insideBoundingBox.map((function(e){return Array.isArray(e)?e.map((function(e){return parseFloat(e)})):e}))),e.numericRefinements){var r={};Object.keys(e.numericRefinements).forEach((function(t){var n=e.numericRefinements[t]||{};r[t]={},Object.keys(n).forEach((function(e){var i=n[e].map((function(e){return Array.isArray(e)?e.map((function(e){return"string"==typeof e?parseFloat(e):e})):"string"==typeof e?parseFloat(e):e}));r[t][e]=i}))})),t.numericRefinements=r}return n({},e,t)},m.make=function(e){var t=new m(e);return(e.hierarchicalFacets||[]).forEach((function(e){if(e.rootPath){var r=t.getHierarchicalRefinement(e.name);r.length>0&&0!==r[0].indexOf(e.rootPath)&&(t=t.clearRefinements(e.name)),0===(r=t.getHierarchicalRefinement(e.name)).length&&(t=t.toggleHierarchicalFacetRefinement(e.name,e.rootPath))}})),t},m.validate=function(e,t){var r=t||{};return e.tagFilters&&r.tagRefinements&&r.tagRefinements.length>0?new Error("[Tags] Cannot switch from the managed tag API to the advanced API. It is probably an error, if it is really what you want, you should first clear the tags with clearTags method."):e.tagRefinements.length>0&&r.tagFilters?new Error("[Tags] Cannot switch from the advanced tag API to the managed API. It is probably an error, if it is not, you should first clear the tags with clearTags method."):e.numericFilters&&r.numericRefinements&&o(r.numericRefinements)?new Error("[Numeric filters] Can't switch from the advanced to the managed API. It is probably an error, if this is really what you want, you have to first clear the numeric filters."):o(e.numericRefinements)&&r.numericFilters?new Error("[Numeric filters] Can't switch from the managed API to the advanced. It is probably an error, if this is really what you want, you have to first clear the numeric filters."):null},m.prototype={constructor:m,clearRefinements:function(e){var t={numericRefinements:this._clearNumericRefinements(e),facetsRefinements:f.clearRefinement(this.facetsRefinements,e,"conjunctiveFacet"),facetsExcludes:f.clearRefinement(this.facetsExcludes,e,"exclude"),disjunctiveFacetsRefinements:f.clearRefinement(this.disjunctiveFacetsRefinements,e,"disjunctiveFacet"),hierarchicalFacetsRefinements:f.clearRefinement(this.hierarchicalFacetsRefinements,e,"hierarchicalFacet")};return t.numericRefinements===this.numericRefinements&&t.facetsRefinements===this.facetsRefinements&&t.facetsExcludes===this.facetsExcludes&&t.disjunctiveFacetsRefinements===this.disjunctiveFacetsRefinements&&t.hierarchicalFacetsRefinements===this.hierarchicalFacetsRefinements?this:this.setQueryParameters(t)},clearTags:function(){return void 0===this.tagFilters&&0===this.tagRefinements.length?this:this.setQueryParameters({tagFilters:void 0,tagRefinements:[]})},setIndex:function(e){return e===this.index?this:this.setQueryParameters({index:e})},setQuery:function(e){return e===this.query?this:this.setQueryParameters({query:e})},setPage:function(e){return e===this.page?this:this.setQueryParameters({page:e})},setFacets:function(e){return this.setQueryParameters({facets:e})},setDisjunctiveFacets:function(e){return this.setQueryParameters({disjunctiveFacets:e})},setHitsPerPage:function(e){return this.hitsPerPage===e?this:this.setQueryParameters({hitsPerPage:e})},setTypoTolerance:function(e){return this.typoTolerance===e?this:this.setQueryParameters({typoTolerance:e})},addNumericRefinement:function(e,t,r){var i=c(r);if(this.isNumericRefined(e,t,i))return this;var a=n({},this.numericRefinements);return a[e]=n({},a[e]),a[e][t]?(a[e][t]=a[e][t].slice(),a[e][t].push(i)):a[e][t]=[i],this.setQueryParameters({numericRefinements:a})},getConjunctiveRefinements:function(e){return this.isConjunctiveFacet(e)&&this.facetsRefinements[e]||[]},getDisjunctiveRefinements:function(e){return this.isDisjunctiveFacet(e)&&this.disjunctiveFacetsRefinements[e]||[]},getHierarchicalRefinement:function(e){return this.hierarchicalFacetsRefinements[e]||[]},getExcludeRefinements:function(e){return this.isConjunctiveFacet(e)&&this.facetsExcludes[e]||[]},removeNumericRefinement:function(e,t,r){return void 0!==r?this.isNumericRefined(e,t,r)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(n,i){return i===e&&n.op===t&&l(n.val,c(r))}))}):this:void 0!==t?this.isNumericRefined(e,t)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(r,n){return n===e&&r.op===t}))}):this:this.isNumericRefined(e)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(t,r){return r===e}))}):this},getNumericRefinements:function(e){return this.numericRefinements[e]||{}},getNumericRefinement:function(e,t){return this.numericRefinements[e]&&this.numericRefinements[e][t]},_clearNumericRefinements:function(e){if(void 0===e)return o(this.numericRefinements)?{}:this.numericRefinements;if("string"==typeof e)return u(this.numericRefinements,[e]);if("function"==typeof e){var t=!1,r=this.numericRefinements,n=Object.keys(r).reduce((function(n,i){var a=r[i],s={};return a=a||{},Object.keys(a).forEach((function(r){var n=a[r]||[],c=[];n.forEach((function(t){e({val:t,op:r},i,"numeric")||c.push(t)})),c.length!==n.length&&(t=!0),s[r]=c})),n[i]=s,n}),{});return t?n:this.numericRefinements}},addFacet:function(e){return this.isConjunctiveFacet(e)?this:this.setQueryParameters({facets:this.facets.concat([e])})},addDisjunctiveFacet:function(e){return this.isDisjunctiveFacet(e)?this:this.setQueryParameters({disjunctiveFacets:this.disjunctiveFacets.concat([e])})},addHierarchicalFacet:function(e){if(this.isHierarchicalFacet(e.name))throw new Error("Cannot declare two hierarchical facets with the same name: `"+e.name+"`");return this.setQueryParameters({hierarchicalFacets:this.hierarchicalFacets.concat([e])})},addFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsRefinements,e,t)?this:this.setQueryParameters({facetsRefinements:f.addRefinement(this.facetsRefinements,e,t)})},addExcludeRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsExcludes,e,t)?this:this.setQueryParameters({facetsExcludes:f.addRefinement(this.facetsExcludes,e,t)})},addDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return f.isRefined(this.disjunctiveFacetsRefinements,e,t)?this:this.setQueryParameters({disjunctiveFacetsRefinements:f.addRefinement(this.disjunctiveFacetsRefinements,e,t)})},addTagRefinement:function(e){if(this.isTagRefined(e))return this;var t={tagRefinements:this.tagRefinements.concat(e)};return this.setQueryParameters(t)},removeFacet:function(e){return this.isConjunctiveFacet(e)?this.clearRefinements(e).setQueryParameters({facets:this.facets.filter((function(t){return t!==e}))}):this},removeDisjunctiveFacet:function(e){return this.isDisjunctiveFacet(e)?this.clearRefinements(e).setQueryParameters({disjunctiveFacets:this.disjunctiveFacets.filter((function(t){return t!==e}))}):this},removeHierarchicalFacet:function(e){return this.isHierarchicalFacet(e)?this.clearRefinements(e).setQueryParameters({hierarchicalFacets:this.hierarchicalFacets.filter((function(t){return t.name!==e}))}):this},removeFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsRefinements,e,t)?this.setQueryParameters({facetsRefinements:f.removeRefinement(this.facetsRefinements,e,t)}):this},removeExcludeRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsExcludes,e,t)?this.setQueryParameters({facetsExcludes:f.removeRefinement(this.facetsExcludes,e,t)}):this},removeDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return f.isRefined(this.disjunctiveFacetsRefinements,e,t)?this.setQueryParameters({disjunctiveFacetsRefinements:f.removeRefinement(this.disjunctiveFacetsRefinements,e,t)}):this},removeTagRefinement:function(e){if(!this.isTagRefined(e))return this;var t={tagRefinements:this.tagRefinements.filter((function(t){return t!==e}))};return this.setQueryParameters(t)},toggleRefinement:function(e,t){return this.toggleFacetRefinement(e,t)},toggleFacetRefinement:function(e,t){if(this.isHierarchicalFacet(e))return this.toggleHierarchicalFacetRefinement(e,t);if(this.isConjunctiveFacet(e))return this.toggleConjunctiveFacetRefinement(e,t);if(this.isDisjunctiveFacet(e))return this.toggleDisjunctiveFacetRefinement(e,t);throw new Error("Cannot refine the undeclared facet "+e+"; it should be added to the helper options facets, disjunctiveFacets or hierarchicalFacets")},toggleConjunctiveFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return this.setQueryParameters({facetsRefinements:f.toggleRefinement(this.facetsRefinements,e,t)})},toggleExcludeFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return this.setQueryParameters({facetsExcludes:f.toggleRefinement(this.facetsExcludes,e,t)})},toggleDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return this.setQueryParameters({disjunctiveFacetsRefinements:f.toggleRefinement(this.disjunctiveFacetsRefinements,e,t)})},toggleHierarchicalFacetRefinement:function(e,t){if(!this.isHierarchicalFacet(e))throw new Error(e+" is not defined in the hierarchicalFacets attribute of the helper configuration");var r=this._getHierarchicalFacetSeparator(this.getHierarchicalFacetByName(e)),n={};return void 0!==this.hierarchicalFacetsRefinements[e]&&this.hierarchicalFacetsRefinements[e].length>0&&(this.hierarchicalFacetsRefinements[e][0]===t||0===this.hierarchicalFacetsRefinements[e][0].indexOf(t+r))?-1===t.indexOf(r)?n[e]=[]:n[e]=[t.slice(0,t.lastIndexOf(r))]:n[e]=[t],this.setQueryParameters({hierarchicalFacetsRefinements:i({},n,this.hierarchicalFacetsRefinements)})},addHierarchicalFacetRefinement:function(e,t){if(this.isHierarchicalFacetRefined(e))throw new Error(e+" is already refined.");if(!this.isHierarchicalFacet(e))throw new Error(e+" is not defined in the hierarchicalFacets attribute of the helper configuration.");var r={};return r[e]=[t],this.setQueryParameters({hierarchicalFacetsRefinements:i({},r,this.hierarchicalFacetsRefinements)})},removeHierarchicalFacetRefinement:function(e){if(!this.isHierarchicalFacetRefined(e))return this;var t={};return t[e]=[],this.setQueryParameters({hierarchicalFacetsRefinements:i({},t,this.hierarchicalFacetsRefinements)})},toggleTagRefinement:function(e){return this.isTagRefined(e)?this.removeTagRefinement(e):this.addTagRefinement(e)},isDisjunctiveFacet:function(e){return this.disjunctiveFacets.indexOf(e)>-1},isHierarchicalFacet:function(e){return void 0!==this.getHierarchicalFacetByName(e)},isConjunctiveFacet:function(e){return this.facets.indexOf(e)>-1},isFacetRefined:function(e,t){return!!this.isConjunctiveFacet(e)&&f.isRefined(this.facetsRefinements,e,t)},isExcludeRefined:function(e,t){return!!this.isConjunctiveFacet(e)&&f.isRefined(this.facetsExcludes,e,t)},isDisjunctiveFacetRefined:function(e,t){return!!this.isDisjunctiveFacet(e)&&f.isRefined(this.disjunctiveFacetsRefinements,e,t)},isHierarchicalFacetRefined:function(e,t){if(!this.isHierarchicalFacet(e))return!1;var r=this.getHierarchicalRefinement(e);return t?-1!==r.indexOf(t):r.length>0},isNumericRefined:function(e,t,r){if(void 0===r&&void 0===t)return!!this.numericRefinements[e];var n=this.numericRefinements[e]&&void 0!==this.numericRefinements[e][t];if(void 0===r||!n)return n;var i,a,u=c(r),o=void 0!==(i=this.numericRefinements[e][t],a=u,s(i,(function(e){return l(e,a)})));return n&&o},isTagRefined:function(e){return-1!==this.tagRefinements.indexOf(e)},getRefinedDisjunctiveFacets:function(){var e=this,t=a(Object.keys(this.numericRefinements).filter((function(t){return Object.keys(e.numericRefinements[t]).length>0})),this.disjunctiveFacets);return Object.keys(this.disjunctiveFacetsRefinements).filter((function(t){return e.disjunctiveFacetsRefinements[t].length>0})).concat(t).concat(this.getRefinedHierarchicalFacets())},getRefinedHierarchicalFacets:function(){var e=this;return a(this.hierarchicalFacets.map((function(e){return e.name})),Object.keys(this.hierarchicalFacetsRefinements).filter((function(t){return e.hierarchicalFacetsRefinements[t].length>0})))},getUnrefinedDisjunctiveFacets:function(){var e=this.getRefinedDisjunctiveFacets();return this.disjunctiveFacets.filter((function(t){return-1===e.indexOf(t)}))},managedParameters:["index","facets","disjunctiveFacets","facetsRefinements","hierarchicalFacets","facetsExcludes","disjunctiveFacetsRefinements","numericRefinements","tagRefinements","hierarchicalFacetsRefinements"],getQueryParams:function(){var e=this.managedParameters,t={},r=this;return Object.keys(this).forEach((function(n){var i=r[n];-1===e.indexOf(n)&&void 0!==i&&(t[n]=i)})),t},setQueryParameter:function(e,t){if(this[e]===t)return this;var r={};return r[e]=t,this.setQueryParameters(r)},setQueryParameters:function(e){if(!e)return this;var t=m.validate(this,e);if(t)throw t;var r=this,n=m._parseNumbers(e),i=Object.keys(this).reduce((function(e,t){return e[t]=r[t],e}),{}),a=Object.keys(n).reduce((function(e,t){var r=void 0!==e[t],i=void 0!==n[t];return r&&!i?u(e,[t]):(i&&(e[t]=n[t]),e)}),i);return new this.constructor(a)},resetPage:function(){return void 0===this.page?this:this.setPage(0)},_getHierarchicalFacetSortBy:function(e){return e.sortBy||["isRefined:desc","name:asc"]},_getHierarchicalFacetSeparator:function(e){return e.separator||" > "},_getHierarchicalRootPath:function(e){return e.rootPath||null},_getHierarchicalShowParentLevel:function(e){return"boolean"!=typeof e.showParentLevel||e.showParentLevel},getHierarchicalFacetByName:function(e){return s(this.hierarchicalFacets,(function(t){return t.name===e}))},getHierarchicalFacetBreadcrumb:function(e){if(!this.isHierarchicalFacet(e))return[];var t=this.getHierarchicalRefinement(e)[0];if(!t)return[];var r=this._getHierarchicalFacetSeparator(this.getHierarchicalFacetByName(e));return t.split(r).map((function(e){return e.trim()}))},toString:function(){return JSON.stringify(this,null,2)}},e.exports=m},210:(e,t,r)=>{"use strict";e.exports=function(e){return function(t,r){var s=e.hierarchicalFacets[r],o=e.hierarchicalFacetsRefinements[s.name]&&e.hierarchicalFacetsRefinements[s.name][0]||"",h=e._getHierarchicalFacetSeparator(s),f=e._getHierarchicalRootPath(s),l=e._getHierarchicalShowParentLevel(s),m=a(e._getHierarchicalFacetSortBy(s)),d=t.every((function(e){return e.exhaustive})),p=function(e,t,r,a,s){return function(o,h,f){var l=o;if(f>0){var m=0;for(l=o;m{"use strict";var n=r(185),i=r(2344),a=r(2148),s=r(4587),c=r(7888),u=r(9725),o=r(2293),h=r(4039),f=h.escapeFacetValue,l=h.unescapeFacetValue,m=r(210);function d(e){var t={};return e.forEach((function(e,r){t[e]=r})),t}function p(e,t,r){t&&t[r]&&(e.stats=t[r])}function v(e,t,r){var a=t[0];this._rawResults=t;var o=this;Object.keys(a).forEach((function(e){o[e]=a[e]})),Object.keys(r||{}).forEach((function(e){o[e]=r[e]})),this.processingTimeMS=t.reduce((function(e,t){return void 0===t.processingTimeMS?e:e+t.processingTimeMS}),0),this.disjunctiveFacets=[],this.hierarchicalFacets=e.hierarchicalFacets.map((function(){return[]})),this.facets=[];var h=e.getRefinedDisjunctiveFacets(),f=d(e.facets),v=d(e.disjunctiveFacets),g=1,y=a.facets||{};Object.keys(y).forEach((function(t){var r,n,i=y[t],s=(r=e.hierarchicalFacets,n=t,c(r,(function(e){return(e.attributes||[]).indexOf(n)>-1})));if(s){var h=s.attributes.indexOf(t),l=u(e.hierarchicalFacets,(function(e){return e.name===s.name}));o.hierarchicalFacets[l][h]={attribute:t,data:i,exhaustive:a.exhaustiveFacetsCount}}else{var m,d=-1!==e.disjunctiveFacets.indexOf(t),g=-1!==e.facets.indexOf(t);d&&(m=v[t],o.disjunctiveFacets[m]={name:t,data:i,exhaustive:a.exhaustiveFacetsCount},p(o.disjunctiveFacets[m],a.facets_stats,t)),g&&(m=f[t],o.facets[m]={name:t,data:i,exhaustive:a.exhaustiveFacetsCount},p(o.facets[m],a.facets_stats,t))}})),this.hierarchicalFacets=s(this.hierarchicalFacets),h.forEach((function(r){var s=t[g],c=s&&s.facets?s.facets:{},h=e.getHierarchicalFacetByName(r);Object.keys(c).forEach((function(t){var r,f=c[t];if(h){r=u(e.hierarchicalFacets,(function(e){return e.name===h.name}));var m=u(o.hierarchicalFacets[r],(function(e){return e.attribute===t}));if(-1===m)return;o.hierarchicalFacets[r][m].data=n({},o.hierarchicalFacets[r][m].data,f)}else{r=v[t];var d=a.facets&&a.facets[t]||{};o.disjunctiveFacets[r]={name:t,data:i({},f,d),exhaustive:s.exhaustiveFacetsCount},p(o.disjunctiveFacets[r],s.facets_stats,t),e.disjunctiveFacetsRefinements[t]&&e.disjunctiveFacetsRefinements[t].forEach((function(n){!o.disjunctiveFacets[r].data[n]&&e.disjunctiveFacetsRefinements[t].indexOf(l(n))>-1&&(o.disjunctiveFacets[r].data[n]=0)}))}})),g++})),e.getRefinedHierarchicalFacets().forEach((function(r){var n=e.getHierarchicalFacetByName(r),a=e._getHierarchicalFacetSeparator(n),s=e.getHierarchicalRefinement(r);0===s.length||s[0].split(a).length<2||t.slice(g).forEach((function(t){var r=t&&t.facets?t.facets:{};Object.keys(r).forEach((function(t){var c=r[t],h=u(e.hierarchicalFacets,(function(e){return e.name===n.name})),f=u(o.hierarchicalFacets[h],(function(e){return e.attribute===t}));if(-1!==f){var l={};if(s.length>0){var m=s[0].split(a)[0];l[m]=o.hierarchicalFacets[h][f].data[m]}o.hierarchicalFacets[h][f].data=i(l,c,o.hierarchicalFacets[h][f].data)}})),g++}))})),Object.keys(e.facetsExcludes).forEach((function(t){var r=e.facetsExcludes[t],n=f[t];o.facets[n]={name:t,data:a.facets[t],exhaustive:a.exhaustiveFacetsCount},r.forEach((function(e){o.facets[n]=o.facets[n]||{name:t},o.facets[n].data=o.facets[n].data||{},o.facets[n].data[e]=0}))})),this.hierarchicalFacets=this.hierarchicalFacets.map(m(e)),this.facets=s(this.facets),this.disjunctiveFacets=s(this.disjunctiveFacets),this._state=e}function g(e,t){function r(e){return e.name===t}if(e._state.isConjunctiveFacet(t)){var n=c(e.facets,r);return n?Object.keys(n.data).map((function(r){var i=f(r);return{name:r,escapedValue:i,count:n.data[r],isRefined:e._state.isFacetRefined(t,i),isExcluded:e._state.isExcludeRefined(t,r)}})):[]}if(e._state.isDisjunctiveFacet(t)){var i=c(e.disjunctiveFacets,r);return i?Object.keys(i.data).map((function(r){var n=f(r);return{name:r,escapedValue:n,count:i.data[r],isRefined:e._state.isDisjunctiveFacetRefined(t,n)}})):[]}if(e._state.isHierarchicalFacet(t)){var a=c(e.hierarchicalFacets,r);if(!a)return a;var s=e._state.getHierarchicalFacetByName(t),u=l(e._state.getHierarchicalRefinement(t)[0]||"").split(e._state._getHierarchicalFacetSeparator(s));return u.unshift(t),y(a,u,0),a}}function y(e,t,r){e.isRefined=e.name===t[r],e.data&&e.data.forEach((function(e){y(e,t,r+1)}))}function R(e,t,r,n){if(n=n||0,Array.isArray(t))return e(t,r[n]);if(!t.data||0===t.data.length)return t;var a=t.data.map((function(t){return R(e,t,r,n+1)})),s=e(a,r[n]);return i({data:s},t)}function F(e,t){var r=c(e,(function(e){return e.name===t}));return r&&r.stats}function b(e,t,r,n,i){var a=c(i,(function(e){return e.name===r})),s=a&&a.data&&a.data[n]?a.data[n]:0,u=a&&a.exhaustive||!1;return{type:t,attributeName:r,name:n,count:s,exhaustive:u}}v.prototype.getFacetByName=function(e){function t(t){return t.name===e}return c(this.facets,t)||c(this.disjunctiveFacets,t)||c(this.hierarchicalFacets,t)},v.DEFAULT_SORT=["isRefined:desc","count:desc","name:asc"],v.prototype.getFacetValues=function(e,t){var r=g(this,e);if(r){var n,s=i({},t,{sortBy:v.DEFAULT_SORT,facetOrdering:!(t&&t.sortBy)}),c=this;if(Array.isArray(r))n=[e];else n=c._state.getHierarchicalFacetByName(r.name).attributes;return R((function(e,t){if(s.facetOrdering){var r=function(e,t){return e.renderingContent&&e.renderingContent.facetOrdering&&e.renderingContent.facetOrdering.values&&e.renderingContent.facetOrdering.values[t]}(c,t);if(Boolean(r))return function(e,t){var r=[],n=[],i=(t.order||[]).reduce((function(e,t,r){return e[t]=r,e}),{});e.forEach((function(e){var t=e.path||e.name;void 0!==i[t]?r[i[t]]=e:n.push(e)})),r=r.filter((function(e){return e}));var s,c=t.sortRemainingBy;return"hidden"===c?r:(s="alpha"===c?[["path","name"],["asc","asc"]]:[["count"],["desc"]],r.concat(a(n,s[0],s[1])))}(e,r)}if(Array.isArray(s.sortBy)){var n=o(s.sortBy,v.DEFAULT_SORT);return a(e,n[0],n[1])}if("function"==typeof s.sortBy)return function(e,t){return t.sort(e)}(s.sortBy,e);throw new Error("options.sortBy is optional but if defined it must be either an array of string (predicates) or a sorting function")}),r,n)}},v.prototype.getFacetStats=function(e){return this._state.isConjunctiveFacet(e)?F(this.facets,e):this._state.isDisjunctiveFacet(e)?F(this.disjunctiveFacets,e):void 0},v.prototype.getRefinements=function(){var e=this._state,t=this,r=[];return Object.keys(e.facetsRefinements).forEach((function(n){e.facetsRefinements[n].forEach((function(i){r.push(b(e,"facet",n,i,t.facets))}))})),Object.keys(e.facetsExcludes).forEach((function(n){e.facetsExcludes[n].forEach((function(i){r.push(b(e,"exclude",n,i,t.facets))}))})),Object.keys(e.disjunctiveFacetsRefinements).forEach((function(n){e.disjunctiveFacetsRefinements[n].forEach((function(i){r.push(b(e,"disjunctive",n,i,t.disjunctiveFacets))}))})),Object.keys(e.hierarchicalFacetsRefinements).forEach((function(n){e.hierarchicalFacetsRefinements[n].forEach((function(i){r.push(function(e,t,r,n){var i=e.getHierarchicalFacetByName(t),a=e._getHierarchicalFacetSeparator(i),s=r.split(a),u=c(n,(function(e){return e.name===t})),o=s.reduce((function(e,t){var r=e&&c(e.data,(function(e){return e.name===t}));return void 0!==r?r:e}),u),h=o&&o.count||0,f=o&&o.exhaustive||!1,l=o&&o.path||"";return{type:"hierarchical",attributeName:t,name:l,count:h,exhaustive:f}}(e,n,i,t.hierarchicalFacets))}))})),Object.keys(e.numericRefinements).forEach((function(t){var n=e.numericRefinements[t];Object.keys(n).forEach((function(e){n[e].forEach((function(n){r.push({type:"numeric",attributeName:t,name:n,numericValue:n,operator:e})}))}))})),e.tagRefinements.forEach((function(e){r.push({type:"tag",attributeName:"_tags",name:e})})),r},e.exports=v},9374:(e,t,r)=>{"use strict";var n=r(7775),i=r(3076),a=r(8078),s=r(6394),c=r(7331),u=r(4853),o=r(116),h=r(9803),f=r(185),l=r(4336),m=r(4039).escapeFacetValue;function d(e,t,r){"function"==typeof e.addAlgoliaAgent&&e.addAlgoliaAgent("JS Helper ("+l+")"),this.setClient(e);var i=r||{};i.index=t,this.state=n.make(i),this.lastResults=null,this._queryId=0,this._lastQueryIdReceived=-1,this.derivedHelpers=[],this._currentNbQueries=0}function p(e){if(e<0)throw new Error("Page requested below 0.");return this._change({state:this.state.setPage(e),isPageReset:!1}),this}function v(){return this.state.page}u(d,c),d.prototype.search=function(){return this._search({onlyWithDerivedHelpers:!1}),this},d.prototype.searchOnlyWithDerivedHelpers=function(){return this._search({onlyWithDerivedHelpers:!0}),this},d.prototype.getQuery=function(){var e=this.state;return s._getHitsSearchParams(e)},d.prototype.searchOnce=function(e,t){var r=e?this.state.setQueryParameters(e):this.state,n=s._getQueries(r.index,r),a=this;if(this._currentNbQueries++,this.emit("searchOnce",{state:r}),!t)return this.client.search(n).then((function(e){return a._currentNbQueries--,0===a._currentNbQueries&&a.emit("searchQueueEmpty"),{content:new i(r,e.results),state:r,_originalResponse:e}}),(function(e){throw a._currentNbQueries--,0===a._currentNbQueries&&a.emit("searchQueueEmpty"),e}));this.client.search(n).then((function(e){a._currentNbQueries--,0===a._currentNbQueries&&a.emit("searchQueueEmpty"),t(null,new i(r,e.results),r)})).catch((function(e){a._currentNbQueries--,0===a._currentNbQueries&&a.emit("searchQueueEmpty"),t(e,null,r)}))},d.prototype.findAnswers=function(e){console.warn("[algoliasearch-helper] answers is no longer supported");var t=this.state,r=this.derivedHelpers[0];if(!r)return Promise.resolve([]);var n=r.getModifiedState(t),i=f({attributesForPrediction:e.attributesForPrediction,nbHits:e.nbHits},{params:h(s._getHitsSearchParams(n),["attributesToSnippet","hitsPerPage","restrictSearchableAttributes","snippetEllipsisText"])}),a="search for answers was called, but this client does not have a function client.initIndex(index).findAnswers";if("function"!=typeof this.client.initIndex)throw new Error(a);var c=this.client.initIndex(n.index);if("function"!=typeof c.findAnswers)throw new Error(a);return c.findAnswers(n.query,e.queryLanguages,i)},d.prototype.searchForFacetValues=function(e,t,r,n){var i="function"==typeof this.client.searchForFacetValues,a="function"==typeof this.client.initIndex;if(!i&&!a&&"function"!=typeof this.client.search)throw new Error("search for facet values (searchable) was called, but this client does not have a function client.searchForFacetValues or client.initIndex(index).searchForFacetValues");var c=this.state.setQueryParameters(n||{}),u=c.isDisjunctiveFacet(e),o=s.getSearchForFacetQuery(e,t,r,c);this._currentNbQueries++;var h,f=this;return i?h=this.client.searchForFacetValues([{indexName:c.index,params:o}]):a?h=this.client.initIndex(c.index).searchForFacetValues(o):(delete o.facetName,h=this.client.search([{type:"facet",facet:e,indexName:c.index,params:o}]).then((function(e){return e.results[0]}))),this.emit("searchForFacetValues",{state:c,facet:e,query:t}),h.then((function(t){return f._currentNbQueries--,0===f._currentNbQueries&&f.emit("searchQueueEmpty"),(t=Array.isArray(t)?t[0]:t).facetHits.forEach((function(t){t.escapedValue=m(t.value),t.isRefined=u?c.isDisjunctiveFacetRefined(e,t.escapedValue):c.isFacetRefined(e,t.escapedValue)})),t}),(function(e){throw f._currentNbQueries--,0===f._currentNbQueries&&f.emit("searchQueueEmpty"),e}))},d.prototype.setQuery=function(e){return this._change({state:this.state.resetPage().setQuery(e),isPageReset:!0}),this},d.prototype.clearRefinements=function(e){return this._change({state:this.state.resetPage().clearRefinements(e),isPageReset:!0}),this},d.prototype.clearTags=function(){return this._change({state:this.state.resetPage().clearTags(),isPageReset:!0}),this},d.prototype.addDisjunctiveFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addDisjunctiveFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.addDisjunctiveRefine=function(){return this.addDisjunctiveFacetRefinement.apply(this,arguments)},d.prototype.addHierarchicalFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addHierarchicalFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.addNumericRefinement=function(e,t,r){return this._change({state:this.state.resetPage().addNumericRefinement(e,t,r),isPageReset:!0}),this},d.prototype.addFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.addRefine=function(){return this.addFacetRefinement.apply(this,arguments)},d.prototype.addFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().addExcludeRefinement(e,t),isPageReset:!0}),this},d.prototype.addExclude=function(){return this.addFacetExclusion.apply(this,arguments)},d.prototype.addTag=function(e){return this._change({state:this.state.resetPage().addTagRefinement(e),isPageReset:!0}),this},d.prototype.removeNumericRefinement=function(e,t,r){return this._change({state:this.state.resetPage().removeNumericRefinement(e,t,r),isPageReset:!0}),this},d.prototype.removeDisjunctiveFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().removeDisjunctiveFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.removeDisjunctiveRefine=function(){return this.removeDisjunctiveFacetRefinement.apply(this,arguments)},d.prototype.removeHierarchicalFacetRefinement=function(e){return this._change({state:this.state.resetPage().removeHierarchicalFacetRefinement(e),isPageReset:!0}),this},d.prototype.removeFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().removeFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.removeRefine=function(){return this.removeFacetRefinement.apply(this,arguments)},d.prototype.removeFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().removeExcludeRefinement(e,t),isPageReset:!0}),this},d.prototype.removeExclude=function(){return this.removeFacetExclusion.apply(this,arguments)},d.prototype.removeTag=function(e){return this._change({state:this.state.resetPage().removeTagRefinement(e),isPageReset:!0}),this},d.prototype.toggleFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().toggleExcludeFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.toggleExclude=function(){return this.toggleFacetExclusion.apply(this,arguments)},d.prototype.toggleRefinement=function(e,t){return this.toggleFacetRefinement(e,t)},d.prototype.toggleFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().toggleFacetRefinement(e,t),isPageReset:!0}),this},d.prototype.toggleRefine=function(){return this.toggleFacetRefinement.apply(this,arguments)},d.prototype.toggleTag=function(e){return this._change({state:this.state.resetPage().toggleTagRefinement(e),isPageReset:!0}),this},d.prototype.nextPage=function(){var e=this.state.page||0;return this.setPage(e+1)},d.prototype.previousPage=function(){var e=this.state.page||0;return this.setPage(e-1)},d.prototype.setCurrentPage=p,d.prototype.setPage=p,d.prototype.setIndex=function(e){return this._change({state:this.state.resetPage().setIndex(e),isPageReset:!0}),this},d.prototype.setQueryParameter=function(e,t){return this._change({state:this.state.resetPage().setQueryParameter(e,t),isPageReset:!0}),this},d.prototype.setState=function(e){return this._change({state:n.make(e),isPageReset:!1}),this},d.prototype.overrideStateWithoutTriggeringChangeEvent=function(e){return this.state=new n(e),this},d.prototype.hasRefinements=function(e){return!!o(this.state.getNumericRefinements(e))||(this.state.isConjunctiveFacet(e)?this.state.isFacetRefined(e):this.state.isDisjunctiveFacet(e)?this.state.isDisjunctiveFacetRefined(e):!!this.state.isHierarchicalFacet(e)&&this.state.isHierarchicalFacetRefined(e))},d.prototype.isExcluded=function(e,t){return this.state.isExcludeRefined(e,t)},d.prototype.isDisjunctiveRefined=function(e,t){return this.state.isDisjunctiveFacetRefined(e,t)},d.prototype.hasTag=function(e){return this.state.isTagRefined(e)},d.prototype.isTagRefined=function(){return this.hasTagRefinements.apply(this,arguments)},d.prototype.getIndex=function(){return this.state.index},d.prototype.getCurrentPage=v,d.prototype.getPage=v,d.prototype.getTags=function(){return this.state.tagRefinements},d.prototype.getRefinements=function(e){var t=[];if(this.state.isConjunctiveFacet(e))this.state.getConjunctiveRefinements(e).forEach((function(e){t.push({value:e,type:"conjunctive"})})),this.state.getExcludeRefinements(e).forEach((function(e){t.push({value:e,type:"exclude"})}));else if(this.state.isDisjunctiveFacet(e)){this.state.getDisjunctiveRefinements(e).forEach((function(e){t.push({value:e,type:"disjunctive"})}))}var r=this.state.getNumericRefinements(e);return Object.keys(r).forEach((function(e){var n=r[e];t.push({value:n,operator:e,type:"numeric"})})),t},d.prototype.getNumericRefinement=function(e,t){return this.state.getNumericRefinement(e,t)},d.prototype.getHierarchicalFacetBreadcrumb=function(e){return this.state.getHierarchicalFacetBreadcrumb(e)},d.prototype._search=function(e){var t=this.state,r=[],n=[];e.onlyWithDerivedHelpers||(n=s._getQueries(t.index,t),r.push({state:t,queriesCount:n.length,helper:this}),this.emit("search",{state:t,results:this.lastResults}));var i=this.derivedHelpers.map((function(e){var n=e.getModifiedState(t),i=s._getQueries(n.index,n);return r.push({state:n,queriesCount:i.length,helper:e}),e.emit("search",{state:n,results:e.lastResults}),i})),a=Array.prototype.concat.apply(n,i),c=this._queryId++;this._currentNbQueries++;try{this.client.search(a).then(this._dispatchAlgoliaResponse.bind(this,r,c)).catch(this._dispatchAlgoliaError.bind(this,c))}catch(u){this.emit("error",{error:u})}},d.prototype._dispatchAlgoliaResponse=function(e,t,r){if(!(t0},d.prototype._change=function(e){var t=e.state,r=e.isPageReset;t!==this.state&&(this.state=t,this.emit("change",{state:this.state,results:this.lastResults,isPageReset:r}))},d.prototype.clearCache=function(){return this.client.clearCache&&this.client.clearCache(),this},d.prototype.setClient=function(e){return this.client===e||("function"==typeof e.addAlgoliaAgent&&e.addAlgoliaAgent("JS Helper ("+l+")"),this.client=e),this},d.prototype.getClient=function(){return this.client},d.prototype.derive=function(e){var t=new a(this,e);return this.derivedHelpers.push(t),t},d.prototype.detachDerivedHelper=function(e){var t=this.derivedHelpers.indexOf(e);if(-1===t)throw new Error("Derived helper already detached");this.derivedHelpers.splice(t,1)},d.prototype.hasPendingRequests=function(){return this._currentNbQueries>0},e.exports=d},4587:e=>{"use strict";e.exports=function(e){return Array.isArray(e)?e.filter(Boolean):[]}},2344:e=>{"use strict";e.exports=function(){return Array.prototype.slice.call(arguments).reduceRight((function(e,t){return Object.keys(Object(t)).forEach((function(r){void 0!==t[r]&&(void 0!==e[r]&&delete e[r],e[r]=t[r])})),e}),{})}},4039:e=>{"use strict";e.exports={escapeFacetValue:function(e){return"string"!=typeof e?e:String(e).replace(/^-/,"\\-")},unescapeFacetValue:function(e){return"string"!=typeof e?e:e.replace(/^\\-/,"-")}}},7888:e=>{"use strict";e.exports=function(e,t){if(Array.isArray(e))for(var r=0;r{"use strict";e.exports=function(e,t){if(!Array.isArray(e))return-1;for(var r=0;r{"use strict";var n=r(7888);e.exports=function(e,t){var r=(t||[]).map((function(e){return e.split(":")}));return e.reduce((function(e,t){var i=t.split(":"),a=n(r,(function(e){return e[0]===i[0]}));return i.length>1||!a?(e[0].push(i[0]),e[1].push(i[1]),e):(e[0].push(a[0]),e[1].push(a[1]),e)}),[[],[]])}},4853:e=>{"use strict";e.exports=function(e,t){e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}},2686:e=>{"use strict";e.exports=function(e,t){return e.filter((function(r,n){return t.indexOf(r)>-1&&e.indexOf(r)===n}))}},185:e=>{"use strict";function t(e){return"function"==typeof e||Array.isArray(e)||"[object Object]"===Object.prototype.toString.call(e)}function r(e,n){if(e===n)return e;for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)&&"__proto__"!==i&&"constructor"!==i){var a=n[i],s=e[i];void 0!==s&&void 0===a||(t(s)&&t(a)?e[i]=r(s,a):e[i]="object"==typeof(c=a)&&null!==c?r(Array.isArray(c)?[]:{},c):c)}var c;return e}e.exports=function(e){t(e)||(e={});for(var n=1,i=arguments.length;n{"use strict";e.exports=function(e){return e&&Object.keys(e).length>0}},9803:e=>{"use strict";e.exports=function(e,t){if(null===e)return{};var r,n,i={},a=Object.keys(e);for(n=0;n=0||(i[r]=e[r]);return i}},2148:e=>{"use strict";function t(e,t){if(e!==t){var r=void 0!==e,n=null===e,i=void 0!==t,a=null===t;if(!a&&e>t||n&&i||!r)return 1;if(!n&&e=n.length?a:"desc"===n[i]?-a:a}return e.index-r.index})),i.map((function(e){return e.value}))}},8023:e=>{"use strict";e.exports=function e(t){if("number"==typeof t)return t;if("string"==typeof t)return parseFloat(t);if(Array.isArray(t))return t.map(e);throw new Error("The value should be a number, a parsable string or an array of those.")}},6394:(e,t,r)=>{"use strict";var n=r(185);function i(e){return Object.keys(e).sort((function(e,t){return e.localeCompare(t)})).reduce((function(t,r){return t[r]=e[r],t}),{})}var a={_getQueries:function(e,t){var r=[];return r.push({indexName:e,params:a._getHitsSearchParams(t)}),t.getRefinedDisjunctiveFacets().forEach((function(n){r.push({indexName:e,params:a._getDisjunctiveFacetSearchParams(t,n)})})),t.getRefinedHierarchicalFacets().forEach((function(n){var i=t.getHierarchicalFacetByName(n),s=t.getHierarchicalRefinement(n),c=t._getHierarchicalFacetSeparator(i);if(s.length>0&&s[0].split(c).length>1){var u=s[0].split(c).slice(0,-1).reduce((function(e,t,r){return e.concat({attribute:i.attributes[r],value:0===r?t:[e[e.length-1].value,t].join(c)})}),[]);u.forEach((function(n,s){var c=a._getDisjunctiveFacetSearchParams(t,n.attribute,0===s);function o(e){return i.attributes.some((function(t){return t===e.split(":")[0]}))}var h=(c.facetFilters||[]).reduce((function(e,t){if(Array.isArray(t)){var r=t.filter((function(e){return!o(e)}));r.length>0&&e.push(r)}return"string"!=typeof t||o(t)||e.push(t),e}),[]),f=u[s-1];c.facetFilters=s>0?h.concat(f.attribute+":"+f.value):h.length>0?h:void 0,r.push({indexName:e,params:c})}))}})),r},_getHitsSearchParams:function(e){var t=e.facets.concat(e.disjunctiveFacets).concat(a._getHitsHierarchicalFacetsAttributes(e)),r=a._getFacetFilters(e),s=a._getNumericFilters(e),c=a._getTagFilters(e),u={facets:t.indexOf("*")>-1?["*"]:t,tagFilters:c};return r.length>0&&(u.facetFilters=r),s.length>0&&(u.numericFilters=s),i(n({},e.getQueryParams(),u))},_getDisjunctiveFacetSearchParams:function(e,t,r){var s=a._getFacetFilters(e,t,r),c=a._getNumericFilters(e,t),u=a._getTagFilters(e),o={hitsPerPage:0,page:0,analytics:!1,clickAnalytics:!1};u.length>0&&(o.tagFilters=u);var h=e.getHierarchicalFacetByName(t);return o.facets=h?a._getDisjunctiveHierarchicalFacetAttribute(e,h,r):t,c.length>0&&(o.numericFilters=c),s.length>0&&(o.facetFilters=s),i(n({},e.getQueryParams(),o))},_getNumericFilters:function(e,t){if(e.numericFilters)return e.numericFilters;var r=[];return Object.keys(e.numericRefinements).forEach((function(n){var i=e.numericRefinements[n]||{};Object.keys(i).forEach((function(e){var a=i[e]||[];t!==n&&a.forEach((function(t){if(Array.isArray(t)){var i=t.map((function(t){return n+e+t}));r.push(i)}else r.push(n+e+t)}))}))})),r},_getTagFilters:function(e){return e.tagFilters?e.tagFilters:e.tagRefinements.join(",")},_getFacetFilters:function(e,t,r){var n=[],i=e.facetsRefinements||{};Object.keys(i).forEach((function(e){(i[e]||[]).forEach((function(t){n.push(e+":"+t)}))}));var a=e.facetsExcludes||{};Object.keys(a).forEach((function(e){(a[e]||[]).forEach((function(t){n.push(e+":-"+t)}))}));var s=e.disjunctiveFacetsRefinements||{};Object.keys(s).forEach((function(e){var r=s[e]||[];if(e!==t&&r&&0!==r.length){var i=[];r.forEach((function(t){i.push(e+":"+t)})),n.push(i)}}));var c=e.hierarchicalFacetsRefinements||{};return Object.keys(c).forEach((function(i){var a=(c[i]||[])[0];if(void 0!==a){var s,u,o=e.getHierarchicalFacetByName(i),h=e._getHierarchicalFacetSeparator(o),f=e._getHierarchicalRootPath(o);if(t===i){if(-1===a.indexOf(h)||!f&&!0===r||f&&f.split(h).length===a.split(h).length)return;f?(u=f.split(h).length-1,a=f):(u=a.split(h).length-2,a=a.slice(0,a.lastIndexOf(h))),s=o.attributes[u]}else u=a.split(h).length-1,s=o.attributes[u];s&&n.push([s+":"+a])}})),n},_getHitsHierarchicalFacetsAttributes:function(e){return e.hierarchicalFacets.reduce((function(t,r){var n=e.getHierarchicalRefinement(r.name)[0];if(!n)return t.push(r.attributes[0]),t;var i=e._getHierarchicalFacetSeparator(r),a=n.split(i).length,s=r.attributes.slice(0,a+1);return t.concat(s)}),[])},_getDisjunctiveHierarchicalFacetAttribute:function(e,t,r){var n=e._getHierarchicalFacetSeparator(t);if(!0===r){var i=e._getHierarchicalRootPath(t),a=0;return i&&(a=i.split(n).length),[t.attributes[a]]}var s=(e.getHierarchicalRefinement(t.name)[0]||"").split(n).length-1;return t.attributes.slice(0,s+1)},getSearchForFacetQuery:function(e,t,r,s){var c=s.isDisjunctiveFacet(e)?s.clearRefinements(e):s,u={facetQuery:t,facetName:e};return"number"==typeof r&&(u.maxFacetHits=r),i(n({},a._getHitsSearchParams(c),u))}};e.exports=a},6801:e=>{"use strict";e.exports=function(e){return null!==e&&/^[a-zA-Z0-9_-]{1,64}$/.test(e)}},4336:e=>{"use strict";e.exports="3.12.0"},290:function(e){e.exports=function(){"use strict";function e(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function t(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function r(r){for(var n=1;n=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var r=[],n=!0,i=!1,a=void 0;try{for(var s,c=e[Symbol.iterator]();!(n=(s=c.next()).done)&&(r.push(s.value),!t||r.length!==t);n=!0);}catch(e){i=!0,a=e}finally{try{n||null==c.return||c.return()}finally{if(i)throw a}}return r}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function a(e){return function(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then((function(){var r=JSON.stringify(e),n=a()[r];return Promise.all([n||t(),void 0!==n])})).then((function(e){var t=i(e,2),n=t[0],a=t[1];return Promise.all([n,a||r.miss(n)])})).then((function(e){return i(e,1)[0]}))},set:function(e,t){return Promise.resolve().then((function(){var i=a();return i[JSON.stringify(e)]=t,n().setItem(r,JSON.stringify(i)),t}))},delete:function(e){return Promise.resolve().then((function(){var t=a();delete t[JSON.stringify(e)],n().setItem(r,JSON.stringify(t))}))},clear:function(){return Promise.resolve().then((function(){n().removeItem(r)}))}}}function c(e){var t=a(e.caches),r=t.shift();return void 0===r?{get:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return t().then((function(e){return Promise.all([e,r.miss(e)])})).then((function(e){return i(e,1)[0]}))},set:function(e,t){return Promise.resolve(t)},delete:function(e){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(e,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return r.get(e,n,i).catch((function(){return c({caches:t}).get(e,n,i)}))},set:function(e,n){return r.set(e,n).catch((function(){return c({caches:t}).set(e,n)}))},delete:function(e){return r.delete(e).catch((function(){return c({caches:t}).delete(e)}))},clear:function(){return r.clear().catch((function(){return c({caches:t}).clear()}))}}}function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{serializable:!0},t={};return{get:function(r,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},a=JSON.stringify(r);if(a in t)return Promise.resolve(e.serializable?JSON.parse(t[a]):t[a]);var s=n(),c=i&&i.miss||function(){return Promise.resolve()};return s.then((function(e){return c(e)})).then((function(){return s}))},set:function(r,n){return t[JSON.stringify(r)]=e.serializable?JSON.stringify(n):n,Promise.resolve(n)},delete:function(e){return delete t[JSON.stringify(e)],Promise.resolve()},clear:function(){return t={},Promise.resolve()}}}function o(e){for(var t=e.length-1;t>0;t--){var r=Math.floor(Math.random()*(t+1)),n=e[t];e[t]=e[r],e[r]=n}return e}function h(e,t){return t?(Object.keys(t).forEach((function(r){e[r]=t[r](e)})),e):e}function f(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n0?n:void 0,timeout:r.timeout||t,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var d={Read:1,Write:2,Any:3},p=1,v=2,g=3;function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p;return r(r({},e),{},{status:t,lastUpdate:Date.now()})}function R(e){return"string"==typeof e?{protocol:"https",url:e,accept:d.Any}:{protocol:e.protocol||"https",url:e.url,accept:e.accept||d.Any}}var F="GET",b="POST";function P(e,t){return Promise.all(t.map((function(t){return e.get(t,(function(){return Promise.resolve(y(t))}))}))).then((function(e){var r=e.filter((function(e){return function(e){return e.status===p||Date.now()-e.lastUpdate>12e4}(e)})),n=e.filter((function(e){return function(e){return e.status===g&&Date.now()-e.lastUpdate<=12e4}(e)})),i=[].concat(a(r),a(n));return{getTimeout:function(e,t){return(0===n.length&&0===e?1:n.length+3+e)*t},statelessHosts:i.length>0?i.map((function(e){return R(e)})):t}}))}function j(e,t,n,i){var s=[],c=function(e,t){if(e.method!==F&&(void 0!==e.data||void 0!==t.data)){var n=Array.isArray(e.data)?e.data:r(r({},e.data),t.data);return JSON.stringify(n)}}(n,i),u=function(e,t){var n=r(r({},e.headers),t.headers),i={};return Object.keys(n).forEach((function(e){var t=n[e];i[e.toLowerCase()]=t})),i}(e,i),o=n.method,h=n.method!==F?{}:r(r({},n.data),i.data),f=r(r(r({"x-algolia-agent":e.userAgent.value},e.queryParameters),h),i.queryParameters),l=0,m=function t(r,a){var h=r.pop();if(void 0===h)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:w(s)};var m={data:c,headers:u,method:o,url:E(h,n.path,f),connectTimeout:a(l,e.timeouts.connect),responseTimeout:a(l,i.timeout)},d=function(e){var t={request:m,response:e,host:h,triesLeft:r.length};return s.push(t),t},p={onSuccess:function(e){return function(e){try{return JSON.parse(e.content)}catch(t){throw function(e,t){return{name:"DeserializationError",message:e,response:t}}(t.message,e)}}(e)},onRetry:function(n){var i=d(n);return n.isTimedOut&&l++,Promise.all([e.logger.info("Retryable failure",O(i)),e.hostsCache.set(h,y(h,n.isTimedOut?g:v))]).then((function(){return t(r,a)}))},onFail:function(e){throw d(e),function(e,t){var r=e.content,n=e.status,i=r;try{i=JSON.parse(r).message}catch(e){}return function(e,t,r){return{name:"ApiError",message:e,status:t,transporterStackTrace:r}}(i,n,t)}(e,w(s))}};return e.requester.send(m).then((function(e){return function(e,t){return function(e){var t=e.status;return e.isTimedOut||function(e){var t=e.isTimedOut,r=e.status;return!t&&0==~~r}(e)||2!=~~(t/100)&&4!=~~(t/100)}(e)?t.onRetry(e):2==~~(e.status/100)?t.onSuccess(e):t.onFail(e)}(e,p)}))};return P(e.hostsCache,t).then((function(e){return m(a(e.statelessHosts).reverse(),e.getTimeout)}))}function _(e){var t={value:"Algolia for JavaScript (".concat(e,")"),add:function(e){var r="; ".concat(e.segment).concat(void 0!==e.version?" (".concat(e.version,")"):"");return-1===t.value.indexOf(r)&&(t.value="".concat(t.value).concat(r)),t}};return t}function E(e,t,r){var n=x(r),i="".concat(e.protocol,"://").concat(e.url,"/").concat("/"===t.charAt(0)?t.substr(1):t);return n.length&&(i+="?".concat(n)),i}function x(e){return Object.keys(e).map((function(t){return f("%s=%s",t,(r=e[t],"[object Object]"===Object.prototype.toString.call(r)||"[object Array]"===Object.prototype.toString.call(r)?JSON.stringify(e[t]):e[t]));var r})).join("&")}function w(e){return e.map((function(e){return O(e)}))}function O(e){var t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return r(r({},e),{},{request:r(r({},e.request),{},{headers:r(r({},e.request.headers),t)})})}var N=function(e){var t=e.appId,n=function(e,t,r){var n={"x-algolia-api-key":r,"x-algolia-application-id":t};return{headers:function(){return e===l.WithinHeaders?n:{}},queryParameters:function(){return e===l.WithinQueryParameters?n:{}}}}(void 0!==e.authMode?e.authMode:l.WithinHeaders,t,e.apiKey),a=function(e){var t=e.hostsCache,r=e.logger,n=e.requester,a=e.requestsCache,s=e.responsesCache,c=e.timeouts,u=e.userAgent,o=e.hosts,h=e.queryParameters,f={hostsCache:t,logger:r,requester:n,requestsCache:a,responsesCache:s,timeouts:c,userAgent:u,headers:e.headers,queryParameters:h,hosts:o.map((function(e){return R(e)})),read:function(e,t){var r=m(t,f.timeouts.read),n=function(){return j(f,f.hosts.filter((function(e){return 0!=(e.accept&d.Read)})),e,r)};if(!0!==(void 0!==r.cacheable?r.cacheable:e.cacheable))return n();var a={request:e,mappedRequestOptions:r,transporter:{queryParameters:f.queryParameters,headers:f.headers}};return f.responsesCache.get(a,(function(){return f.requestsCache.get(a,(function(){return f.requestsCache.set(a,n()).then((function(e){return Promise.all([f.requestsCache.delete(a),e])}),(function(e){return Promise.all([f.requestsCache.delete(a),Promise.reject(e)])})).then((function(e){var t=i(e,2);return t[0],t[1]}))}))}),{miss:function(e){return f.responsesCache.set(a,e)}})},write:function(e,t){return j(f,f.hosts.filter((function(e){return 0!=(e.accept&d.Write)})),e,m(t,f.timeouts.write))}};return f}(r(r({hosts:[{url:"".concat(t,"-dsn.algolia.net"),accept:d.Read},{url:"".concat(t,".algolia.net"),accept:d.Write}].concat(o([{url:"".concat(t,"-1.algolianet.com")},{url:"".concat(t,"-2.algolianet.com")},{url:"".concat(t,"-3.algolianet.com")}]))},e),{},{headers:r(r(r({},n.headers()),{"content-type":"application/x-www-form-urlencoded"}),e.headers),queryParameters:r(r({},n.queryParameters()),e.queryParameters)}));return h({transporter:a,appId:t,addAlgoliaAgent:function(e,t){a.userAgent.add({segment:e,version:t})},clearCache:function(){return Promise.all([a.requestsCache.clear(),a.responsesCache.clear()]).then((function(){}))}},e.methods)},A=function(e){return function(t,r){return t.method===F?e.transporter.read(t,r):e.transporter.write(t,r)}},H=function(e){return function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return h({transporter:e.transporter,appId:e.appId,indexName:t},r.methods)}},S=function(e){return function(t,n){var i=t.map((function(e){return r(r({},e),{},{params:x(e.params||{})})}));return e.transporter.read({method:b,path:"1/indexes/*/queries",data:{requests:i},cacheable:!0},n)}},T=function(e){return function(t,i){return Promise.all(t.map((function(t){var a=t.params,s=a.facetName,c=a.facetQuery,u=n(a,["facetName","facetQuery"]);return H(e)(t.indexName,{methods:{searchForFacetValues:k}}).searchForFacetValues(s,c,r(r({},i),u))})))}},Q=function(e){return function(t,r,n){return e.transporter.read({method:b,path:f("1/answers/%s/prediction",e.indexName),data:{query:t,queryLanguages:r},cacheable:!0},n)}},C=function(e){return function(t,r){return e.transporter.read({method:b,path:f("1/indexes/%s/query",e.indexName),data:{query:t},cacheable:!0},r)}},k=function(e){return function(t,r,n){return e.transporter.read({method:b,path:f("1/indexes/%s/facets/%s/query",e.indexName,t),data:{facetQuery:r},cacheable:!0},n)}},D=1,I=2,q=3;function V(e,t,n){var i,a={appId:e,apiKey:t,timeouts:{connect:1,read:2,write:30},requester:{send:function(e){return new Promise((function(t){var r=new XMLHttpRequest;r.open(e.method,e.url,!0),Object.keys(e.headers).forEach((function(t){return r.setRequestHeader(t,e.headers[t])}));var n,i=function(e,n){return setTimeout((function(){r.abort(),t({status:0,content:n,isTimedOut:!0})}),1e3*e)},a=i(e.connectTimeout,"Connection timeout");r.onreadystatechange=function(){r.readyState>r.OPENED&&void 0===n&&(clearTimeout(a),n=i(e.responseTimeout,"Socket timeout"))},r.onerror=function(){0===r.status&&(clearTimeout(a),clearTimeout(n),t({content:r.responseText||"Network request failed",status:r.status,isTimedOut:!1}))},r.onload=function(){clearTimeout(a),clearTimeout(n),t({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(e.data)}))}},logger:(i=q,{debug:function(e,t){return D>=i&&console.debug(e,t),Promise.resolve()},info:function(e,t){return I>=i&&console.info(e,t),Promise.resolve()},error:function(e,t){return console.error(e,t),Promise.resolve()}}),responsesCache:u(),requestsCache:u({serializable:!1}),hostsCache:c({caches:[s({key:"".concat("4.17.0","-").concat(e)}),u()]}),userAgent:_("4.17.0").add({segment:"Browser",version:"lite"}),authMode:l.WithinQueryParameters};return N(r(r(r({},a),n),{},{methods:{search:S,searchForFacetValues:T,multipleQueries:S,multipleSearchForFacetValues:T,customRequest:A,initIndex:function(e){return function(t){return H(e)(t,{methods:{search:C,searchForFacetValues:k,findAnswers:Q}})}}}}))}return V.version="4.17.0",V}()},6929:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>T});var n=r(7294),i=r(290),a=r.n(i),s=r(8131),c=r.n(s),u=r(6010),o=r(9105),h=r(6742),f=r(412),l=r(9306),m=r(2263),d=r(907),p=r(2644),v=r(6402),g=r(4973);const y="searchQueryInput_gKrp",R="searchVersionInput_yK3v",F="searchResultsColumn_u0zF",b="algoliaLogo_8CW0",P="algoliaLogoPathFill_P7SL",j="searchResultItem_AAMZ",_="searchResultItemHeading_Z8N+",E="searchResultItemPath_0ix4",x="searchResultItemSummary_jyET",w="searchQueryColumn_oQOT",O="searchVersionColumn_AEiZ",N="searchLogoColumn_tJ40",A="loadingSpinner_DlG9",H="loader_L7Al";const S=e=>{let{docsSearchVersionsHelpers:t}=e;const r=Object.entries(t.allDocsData).filter((e=>{let[,t]=e;return t.versions.length>1}));return n.createElement("div",{className:(0,u.Z)("col","col--3","padding-left--none",O)},r.map((e=>{let[i,a]=e;const s=r.length>1?`${i}: `:"";return n.createElement("select",{key:i,onChange:e=>t.setSearchVersion(i,e.target.value),defaultValue:t.searchVersions[i],className:R},a.versions.map(((e,t)=>n.createElement("option",{key:t,label:`${s}${e.label}`,value:e.name}))))})))};const T=function(){const{siteConfig:{themeConfig:{algolia:{appId:e,apiKey:t,indexName:r}}},i18n:{currentLocale:i}}=(0,m.Z)(),s=function(){const{selectMessage:e}=(0,l.c2)();return t=>e(t,(0,g.I)({id:"theme.SearchPage.documentsFound.plurals",description:'Pluralized label for "{count} documents found". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One document found|{count} documents found"},{count:t}))}(),R=function(){const e=(0,d._r)(),[t,r]=(0,n.useState)((()=>Object.entries(e).reduce(((e,t)=>{let[r,n]=t;return{...e,[r]:n.versions[0].name}}),{}))),i=Object.values(e).some((e=>e.versions.length>1));return{allDocsData:e,versioningEnabled:i,searchVersions:t,setSearchVersion:(e,t)=>r((r=>({...r,[e]:t})))}}(),{searchValue:O,updateSearchPath:T}=(0,p.Z)(),[Q,C]=(0,n.useState)(O),k={items:[],query:null,totalResults:null,totalPages:null,lastPage:null,hasMore:null,loading:null},[D,I]=(0,n.useReducer)(((e,t)=>{let{type:r,value:n}=t;switch(r){case"reset":return k;case"loading":return{...e,loading:!0};case"update":return Q!==n.query?e:{...n,items:0===n.lastPage?n.items:e.items.concat(n.items)};case"advance":{const t=e.totalPages>e.lastPage+1;return{...e,lastPage:t?e.lastPage+1:e.lastPage,hasMore:t}}default:return e}}),k),q=a()(e,t),V=c()(q,r,{hitsPerPage:15,advancedSyntax:!0,disjunctiveFacets:["language","docusaurus_tag"]});V.on("result",(e=>{let{results:{query:t,hits:r,page:n,nbHits:i,nbPages:a}}=e;if(""===t||!(r instanceof Array))return void I({type:"reset"});const s=e=>e.replace(/algolia-docsearch-suggestion--highlight/g,"search-result-match"),c=r.map((e=>{let{url:t,_highlightResult:{hierarchy:r},_snippetResult:n={}}=e;const{pathname:i,hash:a}=new URL(t),c=Object.keys(r).map((e=>s(r[e].value)));return{title:c.pop(),url:i+a,summary:n.content?`${s(n.content.value)}...`:"",breadcrumbs:c}}));I({type:"update",value:{items:c,query:t,totalResults:i,totalPages:a,lastPage:n,hasMore:a>n+1,loading:!1}})}));const[L,B]=(0,n.useState)(null),z=(0,n.useRef)(0),M=(0,n.useRef)(f.Z.canUseDOM&&new IntersectionObserver((e=>{const{isIntersecting:t,boundingClientRect:{y:r}}=e[0];t&&z.current>r&&I({type:"advance"}),z.current=r}),{threshold:1})),J=()=>Q?(0,g.I)({id:"theme.SearchPage.existingResultsTitle",message:'Search results for "{query}"',description:"The search page title for non-empty query"},{query:Q}):(0,g.I)({id:"theme.SearchPage.emptyResultsTitle",message:"Search the documentation",description:"The search page title for empty query"}),Z=function(e){void 0===e&&(e=0),V.addDisjunctiveFacetRefinement("docusaurus_tag","default"),V.addDisjunctiveFacetRefinement("language",i),Object.entries(R.searchVersions).forEach((e=>{let[t,r]=e;V.addDisjunctiveFacetRefinement("docusaurus_tag",`docs-${t}-${r}`)})),V.setQuery(Q).setPage(e).search()};return(0,n.useEffect)((()=>{if(L)return M.current.observe(L),()=>{M.current.unobserve(L)}}),[L]),(0,n.useEffect)((()=>{T(Q),I({type:"reset"}),Q&&(I({type:"loading"}),setTimeout((()=>{Z()}),300))}),[Q,R.searchVersions]),(0,n.useEffect)((()=>{D.lastPage&&0!==D.lastPage&&Z(D.lastPage)}),[D.lastPage]),(0,n.useEffect)((()=>{O&&O!==Q&&C(O)}),[O]),n.createElement(v.Z,{wrapperClassName:"search-page-wrapper"},n.createElement(o.Z,null,n.createElement("title",null,(0,l.pe)(J())),n.createElement("meta",{property:"robots",content:"noindex, follow"})),n.createElement("div",{className:"container margin-vert--lg"},n.createElement("h1",null,J()),n.createElement("form",{className:"row",onSubmit:e=>e.preventDefault()},n.createElement("div",{className:(0,u.Z)("col",w,{"col--9":R.versioningEnabled,"col--12":!R.versioningEnabled})},n.createElement("input",{type:"search",name:"q",className:y,placeholder:(0,g.I)({id:"theme.SearchPage.inputPlaceholder",message:"Type your search here",description:"The placeholder for search page input"}),"aria-label":(0,g.I)({id:"theme.SearchPage.inputLabel",message:"Search",description:"The ARIA label for search page input"}),onChange:e=>C(e.target.value),value:Q,autoComplete:"off",autoFocus:!0})),R.versioningEnabled&&n.createElement(S,{docsSearchVersionsHelpers:R})),n.createElement("div",{className:"row"},n.createElement("div",{className:(0,u.Z)("col","col--8",F)},!!D.totalResults&&s(D.totalResults)),n.createElement("div",{className:(0,u.Z)("col","col--4","text--right",N)},n.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:"https://www.algolia.com/","aria-label":(0,g.I)({id:"theme.SearchPage.algoliaLabel",message:"Search by Algolia",description:"The ARIA label for Algolia mention"})},n.createElement("svg",{viewBox:"0 0 168 24",className:b},n.createElement("g",{fill:"none"},n.createElement("path",{className:P,d:"M120.925 18.804c-4.386.02-4.386-3.54-4.386-4.106l-.007-13.336 2.675-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-10.846-2.18c.821 0 1.43-.047 1.855-.129v-2.719a6.334 6.334 0 0 0-1.574-.199 5.7 5.7 0 0 0-.897.069 2.699 2.699 0 0 0-.814.24c-.24.116-.439.28-.582.491-.15.212-.219.335-.219.656 0 .628.219.991.616 1.23s.938.362 1.615.362zm-.233-9.7c.883 0 1.629.109 2.231.328.602.218 1.088.525 1.444.915.363.396.609.922.76 1.483.157.56.232 1.175.232 1.85v6.874a32.5 32.5 0 0 1-1.868.314c-.834.123-1.772.185-2.813.185-.69 0-1.327-.069-1.895-.198a4.001 4.001 0 0 1-1.471-.636 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.803 0-.656.13-1.073.384-1.525a3.24 3.24 0 0 1 1.047-1.106c.445-.287.95-.492 1.532-.615a8.8 8.8 0 0 1 1.82-.185 8.404 8.404 0 0 1 1.972.24v-.438c0-.307-.035-.6-.11-.874a1.88 1.88 0 0 0-.384-.73 1.784 1.784 0 0 0-.724-.493 3.164 3.164 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.735 7.735 0 0 0-1.26.307l-.321-2.192c.335-.117.834-.233 1.478-.349a10.98 10.98 0 0 1 2.073-.178zm52.842 9.626c.822 0 1.43-.048 1.854-.13V13.7a6.347 6.347 0 0 0-1.574-.199c-.294 0-.595.021-.896.069a2.7 2.7 0 0 0-.814.24 1.46 1.46 0 0 0-.582.491c-.15.212-.218.335-.218.656 0 .628.218.991.615 1.23.404.245.938.362 1.615.362zm-.226-9.694c.883 0 1.629.108 2.231.327.602.219 1.088.526 1.444.915.355.39.609.923.759 1.483a6.8 6.8 0 0 1 .233 1.852v6.873c-.41.088-1.034.19-1.868.314-.834.123-1.772.184-2.813.184-.69 0-1.327-.068-1.895-.198a4.001 4.001 0 0 1-1.471-.635 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.804 0-.656.13-1.073.384-1.524.26-.45.608-.82 1.047-1.107.445-.286.95-.491 1.532-.614a8.803 8.803 0 0 1 2.751-.13c.329.034.671.096 1.04.185v-.437a3.3 3.3 0 0 0-.109-.875 1.873 1.873 0 0 0-.384-.731 1.784 1.784 0 0 0-.724-.492 3.165 3.165 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.75 7.75 0 0 0-1.26.307l-.321-2.193c.335-.116.834-.232 1.478-.348a11.633 11.633 0 0 1 2.073-.177zm-8.034-1.271a1.626 1.626 0 0 1-1.628-1.62c0-.895.725-1.62 1.628-1.62.904 0 1.63.725 1.63 1.62 0 .895-.733 1.62-1.63 1.62zm1.348 13.22h-2.689V7.27l2.69-.423v11.956zm-4.714 0c-4.386.02-4.386-3.54-4.386-4.107l-.008-13.336 2.676-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-8.698-5.903c0-1.156-.253-2.119-.746-2.788-.493-.677-1.183-1.01-2.067-1.01-.882 0-1.574.333-2.065 1.01-.493.676-.733 1.632-.733 2.788 0 1.168.246 1.953.74 2.63.492.683 1.183 1.018 2.066 1.018.882 0 1.574-.342 2.067-1.019.492-.683.738-1.46.738-2.63zm2.737-.007c0 .902-.13 1.584-.397 2.33a5.52 5.52 0 0 1-1.128 1.906 4.986 4.986 0 0 1-1.752 1.223c-.685.286-1.739.45-2.265.45-.528-.006-1.574-.157-2.252-.45a5.096 5.096 0 0 1-1.744-1.223c-.487-.527-.863-1.162-1.137-1.906a6.345 6.345 0 0 1-.41-2.33c0-.902.123-1.77.397-2.508a5.554 5.554 0 0 1 1.15-1.892 5.133 5.133 0 0 1 1.75-1.216c.679-.287 1.425-.423 2.232-.423.808 0 1.553.142 2.237.423a4.88 4.88 0 0 1 1.753 1.216 5.644 5.644 0 0 1 1.135 1.892c.287.738.431 1.606.431 2.508zm-20.138 0c0 1.12.246 2.363.738 2.882.493.52 1.13.78 1.91.78.424 0 .828-.062 1.204-.178.377-.116.677-.253.917-.417V9.33a10.476 10.476 0 0 0-1.766-.226c-.971-.028-1.71.37-2.23 1.004-.513.636-.773 1.75-.773 2.788zm7.438 5.274c0 1.824-.466 3.156-1.404 4.004-.936.846-2.367 1.27-4.296 1.27-.705 0-2.17-.137-3.34-.396l.431-2.118c.98.205 2.272.26 2.95.26 1.074 0 1.84-.219 2.299-.656.459-.437.684-1.086.684-1.948v-.437a8.07 8.07 0 0 1-1.047.397c-.43.13-.93.198-1.492.198-.739 0-1.41-.116-2.018-.349a4.206 4.206 0 0 1-1.567-1.025c-.431-.45-.774-1.017-1.013-1.694-.24-.677-.363-1.885-.363-2.773 0-.834.13-1.88.384-2.577.26-.696.629-1.298 1.129-1.796.493-.498 1.095-.881 1.8-1.162a6.605 6.605 0 0 1 2.428-.457c.87 0 1.67.109 2.45.24.78.129 1.444.265 1.985.415V18.17zM6.972 6.677v1.627c-.712-.446-1.52-.67-2.425-.67-.585 0-1.045.13-1.38.391a1.24 1.24 0 0 0-.502 1.03c0 .425.164.765.494 1.02.33.256.835.532 1.516.83.447.192.795.356 1.045.495.25.138.537.332.862.582.324.25.563.548.718.894.154.345.23.741.23 1.188 0 .947-.334 1.691-1.004 2.234-.67.542-1.537.814-2.601.814-1.18 0-2.16-.229-2.936-.686v-1.708c.84.628 1.814.942 2.92.942.585 0 1.048-.136 1.388-.407.34-.271.51-.646.51-1.125 0-.287-.1-.55-.302-.79-.203-.24-.42-.42-.655-.542-.234-.123-.585-.29-1.053-.503a61.27 61.27 0 0 1-.582-.271 13.67 13.67 0 0 1-.55-.287 4.275 4.275 0 0 1-.567-.351 6.92 6.92 0 0 1-.455-.4c-.18-.17-.31-.34-.39-.51-.08-.17-.155-.37-.224-.598a2.553 2.553 0 0 1-.104-.742c0-.915.333-1.638.998-2.17.664-.532 1.523-.798 2.576-.798.968 0 1.793.17 2.473.51zm7.468 5.696v-.287c-.022-.607-.187-1.088-.495-1.444-.309-.357-.75-.535-1.324-.535-.532 0-.99.194-1.373.583-.382.388-.622.949-.717 1.683h3.909zm1.005 2.792v1.404c-.596.34-1.383.51-2.362.51-1.255 0-2.255-.377-3-1.132-.744-.755-1.116-1.744-1.116-2.968 0-1.297.34-2.316 1.021-3.055.68-.74 1.548-1.11 2.6-1.11 1.033 0 1.852.323 2.458.966.606.644.91 1.572.91 2.784 0 .33-.033.676-.096 1.038h-5.314c.107.702.405 1.239.894 1.611.49.372 1.106.558 1.85.558.862 0 1.58-.202 2.155-.606zm6.605-1.77h-1.212c-.596 0-1.045.116-1.349.35-.303.234-.454.532-.454.894 0 .372.117.664.35.877.235.213.575.32 1.022.32.51 0 .912-.142 1.204-.424.293-.281.44-.651.44-1.108v-.91zm-4.068-2.554V9.325c.627-.361 1.457-.542 2.489-.542 2.116 0 3.175 1.026 3.175 3.08V17h-1.548v-.957c-.415.68-1.143 1.02-2.186 1.02-.766 0-1.38-.22-1.843-.661-.462-.442-.694-1.003-.694-1.684 0-.776.293-1.38.878-1.81.585-.431 1.404-.647 2.457-.647h1.34V11.8c0-.554-.133-.971-.399-1.253-.266-.282-.707-.423-1.324-.423a4.07 4.07 0 0 0-2.345.718zm9.333-1.93v1.42c.394-1 1.101-1.5 2.123-1.5.148 0 .313.016.494.048v1.531a1.885 1.885 0 0 0-.75-.143c-.542 0-.989.24-1.34.718-.351.479-.527 1.048-.527 1.707V17h-1.563V8.91h1.563zm5.01 4.084c.022.82.272 1.492.75 2.019.479.526 1.15.79 2.01.79.639 0 1.235-.176 1.788-.527v1.404c-.521.319-1.186.479-1.995.479-1.265 0-2.276-.4-3.031-1.197-.755-.798-1.133-1.792-1.133-2.984 0-1.16.38-2.151 1.14-2.975.761-.825 1.79-1.237 3.088-1.237.702 0 1.346.149 1.93.447v1.436a3.242 3.242 0 0 0-1.77-.495c-.84 0-1.513.266-2.019.798-.505.532-.758 1.213-.758 2.042zM40.24 5.72v4.579c.458-1 1.293-1.5 2.505-1.5.787 0 1.42.245 1.899.734.479.49.718 1.17.718 2.042V17h-1.564v-5.106c0-.553-.14-.98-.422-1.284-.282-.303-.652-.455-1.11-.455-.531 0-1.002.202-1.411.606-.41.405-.615 1.022-.615 1.851V17h-1.563V5.72h1.563zm14.966 10.02c.596 0 1.096-.253 1.5-.758.404-.506.606-1.157.606-1.955 0-.915-.202-1.62-.606-2.114-.404-.495-.92-.742-1.548-.742-.553 0-1.05.224-1.491.67-.442.447-.662 1.133-.662 2.058 0 .958.212 1.67.638 2.138.425.469.946.703 1.563.703zM53.004 5.72v4.42c.574-.894 1.388-1.341 2.44-1.341 1.022 0 1.857.383 2.506 1.149.649.766.973 1.781.973 3.047 0 1.138-.309 2.109-.925 2.912-.617.803-1.463 1.205-2.537 1.205-1.075 0-1.894-.447-2.457-1.34V17h-1.58V5.72h1.58zm9.908 11.104l-3.223-7.913h1.739l1.005 2.632 1.26 3.415c.096-.32.48-1.458 1.15-3.415l.909-2.632h1.66l-2.92 7.866c-.777 2.074-1.963 3.11-3.559 3.11a2.92 2.92 0 0 1-.734-.079v-1.34c.17.042.351.064.543.064 1.032 0 1.755-.57 2.17-1.708z"}),n.createElement("path",{fill:"#5468FF",d:"M78.988.938h16.594a2.968 2.968 0 0 1 2.966 2.966V20.5a2.967 2.967 0 0 1-2.966 2.964H78.988a2.967 2.967 0 0 1-2.966-2.964V3.897A2.961 2.961 0 0 1 78.988.938z"}),n.createElement("path",{fill:"white",d:"M89.632 5.967v-.772a.978.978 0 0 0-.978-.977h-2.28a.978.978 0 0 0-.978.977v.793c0 .088.082.15.171.13a7.127 7.127 0 0 1 1.984-.28c.65 0 1.295.088 1.917.259.082.02.164-.04.164-.13m-6.248 1.01l-.39-.389a.977.977 0 0 0-1.382 0l-.465.465a.973.973 0 0 0 0 1.38l.383.383c.062.061.15.047.205-.014.226-.307.472-.601.746-.874.281-.28.568-.526.883-.751.068-.042.075-.137.02-.2m4.16 2.453v3.341c0 .096.104.165.192.117l2.97-1.537c.068-.034.089-.117.055-.184a3.695 3.695 0 0 0-3.08-1.866c-.068 0-.136.054-.136.13m0 8.048a4.489 4.489 0 0 1-4.49-4.482 4.488 4.488 0 0 1 4.49-4.482 4.488 4.488 0 0 1 4.489 4.482 4.484 4.484 0 0 1-4.49 4.482m0-10.85a6.363 6.363 0 1 0 0 12.729 6.37 6.37 0 0 0 6.372-6.368 6.358 6.358 0 0 0-6.371-6.36"})))))),D.items.length>0?n.createElement("main",null,D.items.map(((e,t)=>{let{title:r,url:i,summary:a,breadcrumbs:s}=e;return n.createElement("article",{key:t,className:j},n.createElement("h2",{className:_},n.createElement(h.Z,{to:i,dangerouslySetInnerHTML:{__html:r}})),s.length>0&&n.createElement("nav",{"aria-label":"breadcrumbs"},n.createElement("ul",{className:(0,u.Z)("breadcrumbs",E)},s.map(((e,t)=>n.createElement("li",{key:t,className:"breadcrumbs__item",dangerouslySetInnerHTML:{__html:e}}))))),a&&n.createElement("p",{className:x,dangerouslySetInnerHTML:{__html:a}}))}))):[Q&&!D.loading&&n.createElement("p",{key:"no-results"},n.createElement(g.Z,{id:"theme.SearchPage.noResultsText",description:"The paragraph for empty search result"},"No results were found")),!!D.loading&&n.createElement("div",{key:"spinner",className:A})],D.hasMore&&n.createElement("div",{className:H,ref:B},n.createElement(g.Z,{id:"theme.SearchPage.fetchingNewResults",description:"The paragraph for fetching new search results"},"Fetching new results..."))))}}}]); \ No newline at end of file diff --git a/assets/js/0276dc25.88d76eaf.js.LICENSE.txt b/assets/js/0276dc25.88d76eaf.js.LICENSE.txt new file mode 100644 index 00000000..137dcba5 --- /dev/null +++ b/assets/js/0276dc25.88d76eaf.js.LICENSE.txt @@ -0,0 +1 @@ +/*! algoliasearch-lite.umd.js | 4.17.0 | © Algolia, inc. | https://github.com/algolia/algoliasearch-client-javascript */ diff --git a/assets/js/044d5aa6.6c391927.js b/assets/js/044d5aa6.6c391927.js new file mode 100644 index 00000000..e9652e4c --- /dev/null +++ b/assets/js/044d5aa6.6c391927.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[221],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>d});var i=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function r(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=i.createContext({}),c=function(e){var t=i.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},p=function(e){var t=c(e.components);return i.createElement(l.Provider,{value:t},e.children)},m="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},u=i.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),m=c(n),u=o,d=m["".concat(l,".").concat(u)]||m[u]||h[u]||a;return n?i.createElement(d,r(r({ref:t},p),{},{components:n})):i.createElement(d,r({ref:t},p))}));function d(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,r=new Array(a);r[0]=u;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[m]="string"==typeof e?e:o,r[1]=s;for(var c=2;c{n.r(t),n.d(t,{contentTitle:()=>r,default:()=>m,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var i=n(7462),o=(n(7294),n(3905));const a={},r="Icons",s={unversionedId:"icons",id:"icons",isDocsHomePage:!1,title:"Icons",description:"Both sections and items can have an icon, which is specified using the icon attribute. Using icons improves the aesthetics of your UI and makes the app more intuitive to use. Dashy supports multiple different icon providers, usage instructions for which are explained here.",source:"@site/docs/icons.md",sourceDirName:".",slug:"/icons",permalink:"/docs/icons",editUrl:"https://github.com/Lissy93/dashy/edit/gh-pages/docs/docs/icons.md",version:"current",frontMatter:{},sidebar:"dashySidebar",previous:{title:"Troubleshooting",permalink:"/docs/troubleshooting"},next:{title:"Widgets",permalink:"/docs/widgets"}},l=[{value:"Favicons",id:"favicons",children:[]},{value:"Font Awesome",id:"font-awesome",children:[]},{value:"Simple Icons",id:"simple-icons",children:[]},{value:"Generative Icons",id:"generative-icons",children:[]},{value:"Emoji Icons",id:"emoji-icons",children:[]},{value:"Home-Lab Icons",id:"home-lab-icons",children:[]},{value:"Material Design Icons",id:"material-design-icons",children:[]},{value:"Icons by URL",id:"icons-by-url",children:[]},{value:"Local Icons",id:"local-icons",children:[]},{value:"No Icon",id:"no-icon",children:[]},{value:"Icon Collections and Resources",id:"icon-collections-and-resources",children:[]},{value:"Notes",id:"notes",children:[]}],c={toc:l},p="wrapper";function m(e){let{components:t,...n}=e;return(0,o.kt)(p,(0,i.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"icons"},"Icons"),(0,o.kt)("p",null,"Both sections and items can have an icon, which is specified using the ",(0,o.kt)("inlineCode",{parentName:"p"},"icon")," attribute. Using icons improves the aesthetics of your UI and makes the app more intuitive to use. Dashy supports multiple different icon providers, usage instructions for which are explained here."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#favicons"},"Auto-Fetched Favicons")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#font-awesome"},"Font Awesome Icons")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#simple-icons"},"Simple Icons")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#generative-icons"},"Generative Icons")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#emoji-icons"},"Emoji Icons")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#home-lab-icons"},"Home-Lab Icons")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#material-design-icons"},"Material Icons")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#icons-by-url"},"Icons by URL")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#local-icons"},"Local Icons")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#no-icon"},"No Icon"))),(0,o.kt)("p",{align:"center"},(0,o.kt)("img",{width:"500",src:"https://i.ibb.co/GTVmZnc/dashy-example-icons.png"})),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"favicons"},"Favicons"),(0,o.kt)("p",null,"Dashy can auto-fetch an icon for a given service, using it's favicon. Just set ",(0,o.kt)("inlineCode",{parentName:"p"},"icon: favicon")," to use this feature."),(0,o.kt)("p",{align:"center"},(0,o.kt)("img",{width:"580",src:"https://i.ibb.co/k6wyhnB/favicon-icons.png"})),(0,o.kt)("p",null,"Since different websites host their favicons at different paths, for the best results Dashy can use an API to resolve a websites icon."),(0,o.kt)("p",null,"The default favicon API is ",(0,o.kt)("a",{parentName:"p",href:"https://favicon.allesedv.com/"},"allesedv.com"),", but you can change this under ",(0,o.kt)("inlineCode",{parentName:"p"},"appConfig.faviconApi"),". If you'd prefer not to use an API, just set this value to ",(0,o.kt)("inlineCode",{parentName:"p"},"local"),". You can also use different APIs for individual items, by setting ",(0,o.kt)("inlineCode",{parentName:"p"},"icon: favicon-[api]"),", e.g. ",(0,o.kt)("inlineCode",{parentName:"p"},"favicon-clearbit"),"."),(0,o.kt)("p",null,"The following favicon APIs are supported:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"allesedv")," - ",(0,o.kt)("a",{parentName:"li",href:"https://favicon.allesedv.com/"},"allesedv.com")," is a highly efficient IPv6-enabled service"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"iconhorse")," - ",(0,o.kt)("a",{parentName:"li",href:"https://icon.horse/"},"Icon.Horse")," returns quality icons for any site, with caching for speed and fallbacks for sites without an icon"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"clearbit")," - ",(0,o.kt)("a",{parentName:"li",href:"https://clearbit.com/logo"},"Clearbit")," returns high-quality square logos from mainstream websites"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"faviconkit")," - ",(0,o.kt)("a",{parentName:"li",href:"https://faviconkit.com/"},"faviconkit.com")," good quality icons and most sites supported (Note: down as of Nov '21)"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"besticon")," - ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/mat/besticon"},"BestIcon")," fetches websites icons from manifest"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"mcapi")," - ",(0,o.kt)("a",{parentName:"li",href:"https://eu.mc-api.net/"},"MC-API")," fetches default website favicon, originally a Minecraft util"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"duckduckgo")," - Returns decent quality website icons, from DuckDuckGo search"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"google")," - Official Google favicon API service, good support for all sites, but poor quality"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"yandex")," - Lower quality icons, but useful in some regions where other services are blocked"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"local")," - Set to local to fetch the default icon at /favicon.ico instead of using an API")),(0,o.kt)("p",null,"If for a given service none of the APIs work in your situation, and nor does local, then the best option is to find the path of the services logo or favicon, and set the icon to the URL of the raw image. For example, ",(0,o.kt)("inlineCode",{parentName:"p"},"icon: https://monitoring.local/faviconx128.png"),"- you can find this path using the browser dev tools."),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"font-awesome"},"Font Awesome"),(0,o.kt)("p",null,"You can use any ",(0,o.kt)("a",{parentName:"p",href:"https://fontawesome.com/icons"},"Font Awesome Icon")," simply by specifying it's identifier. This is in the format of ",(0,o.kt)("inlineCode",{parentName:"p"},"[category] [name]")," and can be found on the page for that icon on the Font Awesome site. For example: ",(0,o.kt)("inlineCode",{parentName:"p"},"fas fa-rocket"),", ",(0,o.kt)("inlineCode",{parentName:"p"},"fab fa-monero")," or ",(0,o.kt)("inlineCode",{parentName:"p"},"fas fa-unicorn"),"."),(0,o.kt)("p",null,"Font-Awesome has a wide variety of free icons, but you can also use their pro icons if you have a membership. To do so, you need to specify your license key under: ",(0,o.kt)("inlineCode",{parentName:"p"},"appConfig.fontAwesomeKey"),". This is usually a 10-digit string, for example ",(0,o.kt)("inlineCode",{parentName:"p"},"13014ae648"),"."),(0,o.kt)("p",{align:"center"},(0,o.kt)("img",{width:"500",src:"https://i.ibb.co/tMtwNYZ/fontawesome-icons3.png"})),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"simple-icons"},"Simple Icons"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://simpleicons.org/"},"SimpleIcons.org")," is a collection of 2000+ high quality, free and open source brand and logo SVG icons. Usage of which is very similar to font-awesome icons. First find the glyph you want to use on the ",(0,o.kt)("a",{parentName:"p",href:"https://simpleicons.org/"},"website"),", then just set your icon the the simple icon slug, prefixed with ",(0,o.kt)("inlineCode",{parentName:"p"},"si-"),". "),(0,o.kt)("p",{align:"center"},(0,o.kt)("img",{width:"580",src:"https://i.ibb.co/MVhkXfC/simple-icons-example.png"})),(0,o.kt)("p",null,"For example:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-yaml"},"sections:\n- name: Simple Icons Example\n items:\n - title: Portainer\n icon: si-portainer\n - title: FreeNAS\n icon: si-freenas\n - title: NextCloud\n icon: si-nextcloud\n - title: Home Assistant\n icon: si-homeassistant\n")),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"generative-icons"},"Generative Icons"),(0,o.kt)("p",null,"To uses a unique and programmatically generated icon for a given service just set ",(0,o.kt)("inlineCode",{parentName:"p"},"icon: generative"),". This is particularly useful when you have a lot of similar services with a different IP or port, and no specific icon. These icons are generated with ",(0,o.kt)("a",{parentName:"p",href:"https://avatars.dicebear.com/"},"DiceBear")," (or ",(0,o.kt)("a",{parentName:"p",href:"https://evatar.io/"},"Evatar")," for fallback), and use a hash of the services domain/ ip for entropy, so each domain will have a unique icon."),(0,o.kt)("p",{align:"center"},(0,o.kt)("img",{width:"500",src:"https://i.ibb.co/b2pC2CL/generative-icons-2.png"})),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"emoji-icons"},"Emoji Icons"),(0,o.kt)("p",null,"You can use almost any emoji as an icon for items or sections. You can specify the emoji either by pasting it directly, using it's unicode ( e.g. ",(0,o.kt)("inlineCode",{parentName:"p"},"'U+1F680'"),") or shortcode (e.g. ",(0,o.kt)("inlineCode",{parentName:"p"},"':rocket:'"),"). You can find these codes for any emoji using ",(0,o.kt)("a",{parentName:"p",href:"https://emojipedia.org/"},"Emojipedia")," (near the bottom of emoji each page), or for a quick reference to emoji shortcodes, check out ",(0,o.kt)("a",{parentName:"p",href:"https://emojis.ninja/"},"emojis.ninja")," by @nomanoff."),(0,o.kt)("p",{align:"center"},(0,o.kt)("img",{width:"580",src:"https://i.ibb.co/YLwgTf9/emoji-icons-1.png"})),(0,o.kt)("p",null,"For example, these will all render the same rocket (\ud83d\ude80) emoji: ",(0,o.kt)("inlineCode",{parentName:"p"},"icon: ':rocket:'")," or ",(0,o.kt)("inlineCode",{parentName:"p"},"icon: 'U+1F680'")," or ",(0,o.kt)("inlineCode",{parentName:"p"},"icon: \ud83d\ude80")),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"home-lab-icons"},"Home-Lab Icons"),(0,o.kt)("p",null,"The ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/WalkxHub/dashboard-icons"},"dashboard-icons")," repo by ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/WalkxCode"},"@WalkxCode")," provides a comprehensive collection of 360+ high-quality PNG icons for commonly self-hosted services. Dashy natively supports these icons, and you can use them just by specifying the icon name (without extension) preceded by ",(0,o.kt)("inlineCode",{parentName:"p"},"hl-"),". See ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/WalkxCode/dashboard-icons/tree/master/png"},"here")," for a full list of all available icons. Note that these are fetched and cached strait from GitHub, so if you require offline access, the ",(0,o.kt)("a",{parentName:"p",href:"#local-icons"},"Local Icons")," method may be a better option for you."),(0,o.kt)("p",null,"For example:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-yaml"},"sections:\n- name: Home Lab Icons Example\n items:\n - title: AdGuard Home\n icon: hl-adguardhome\n - title: Long Horn\n icon: hl-longhorn\n - title: Nagios\n icon: hl-nagios\n - title: Whoogle Search\n icon: hl-whooglesearch\n")),(0,o.kt)("p",{align:"center"},(0,o.kt)("img",{width:"580",src:"https://i.ibb.co/PQzYHmD/homelab-icons-2.png"})),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"material-design-icons"},"Material Design Icons"),(0,o.kt)("p",null,"Dashy also supports 5000+ ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/Templarian/MaterialDesign"},"material-design-icons"),". To use these, first find the name/ slug for your icon ",(0,o.kt)("a",{parentName:"p",href:"https://dev.materialdesignicons.com/icons"},"here"),", and then prefix is with ",(0,o.kt)("inlineCode",{parentName:"p"},"mdi-"),"."),(0,o.kt)("p",null,"For example:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-yaml"},"sections:\n- name: Material Design Icons Example\n items:\n - title: Alien Icon\n icon: mdi-alien \n - title: Fire Icon\n icon: mdi-fire \n - title: Dino Icon\n icon: mdi-google-downasaur \n")),(0,o.kt)("p",{align:"center"},(0,o.kt)("img",{width:"500",src:"https://i.ibb.co/fC9B4mq/icons-mdi-example.png"})),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"icons-by-url"},"Icons by URL"),(0,o.kt)("p",null,"You can also set an icon by passing in a valid URL pointing to the icons location. For example ",(0,o.kt)("inlineCode",{parentName:"p"},"icon: https://i.ibb.co/710B3Yc/space-invader-x256.png"),", this can be in .png, .jpg or .svg format, and hosted anywhere (local or remote) - so long as it's accessible from where you are hosting Dashy. The icon will be automatically scaled to fit, however loading in a lot of large icons may have a negative impact on performance, especially if you visit Dashy from new devices often."),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"local-icons"},"Local Icons"),(0,o.kt)("p",null,"You may also want to store your icons locally, bundled within Dashy so that there is no reliance on outside services. This can be done by putting the icons within Dashy's ",(0,o.kt)("inlineCode",{parentName:"p"},"./public/item-icons/")," directory. If you are using Docker, then the easiest option is to map a volume from your host system, for example: ",(0,o.kt)("inlineCode",{parentName:"p"},"-v /local/image/directory:/app/public/item-icons/"),". To reference an icon stored locally, just specify it's name and extension. For example, if my icon was stored in ",(0,o.kt)("inlineCode",{parentName:"p"},"/app/public/item-icons/maltrail.png"),", then I would just set ",(0,o.kt)("inlineCode",{parentName:"p"},"icon: maltrail.png"),"."),(0,o.kt)("p",null,"You can also use sub-folders within the ",(0,o.kt)("inlineCode",{parentName:"p"},"item-icons")," directory to keep things organized. You would then specify an icon with it's folder name slash image name. For example: ",(0,o.kt)("inlineCode",{parentName:"p"},"networking/monit.png")),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"no-icon"},"No Icon"),(0,o.kt)("p",null,"If you don't wish for a given item or section to have an icon, just leave out the ",(0,o.kt)("inlineCode",{parentName:"p"},"icon")," attribute."),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"icon-collections-and-resources"},"Icon Collections and Resources"),(0,o.kt)("p",null,"The following websites provide good-quality, free icon sets. To use any of these icons, either copy the link to the raw icon (it should end in ",(0,o.kt)("inlineCode",{parentName:"p"},".svg")," or ",(0,o.kt)("inlineCode",{parentName:"p"},".png"),") and paste it as your ",(0,o.kt)("inlineCode",{parentName:"p"},"icon"),", or download and save the icons in ",(0,o.kt)("inlineCode",{parentName:"p"},"/public/item-icons")," / mapped Docker volume. Full credit to the authors, please see the licenses for each service for usage and copyright information."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://thehomelab.wiki/books/helpful-tools-resources/page/icons-for-self-hosted-dashboards"},"Icons for Self-Hosted Apps")," - 350+ high-quality icons for commonly self-hosted services"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://svgbox.net/iconsets/"},"SVG Box")," - Cryptocurrency, social media apps and flag icons"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://simpleicons.org/"},"Simple Icons")," - Free SVG brand icons, with easy API access"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/google/material-design-icons/"},"Material Design Icons")," - Hundreds of Open source PNG + SVG icons by Google"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://icons8.com/icons"},"Icons8")," - Thousands of icons, all with free versions at 64x64"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://www.flaticon.com/"},"Flat Icon")," - Wide variety of icon sets, most of which are free to use"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://www.svgrepo.com/"},"SVG Repo")," - 300,000+ Vector Icons")),(0,o.kt)("p",null,"If you are a student, then you can get free access to premium icons on ",(0,o.kt)("a",{parentName:"p",href:"https://education.github.com/pack/redeem/iconscout-student"},"Icon Scout")," or ",(0,o.kt)("a",{parentName:"p",href:"https://icons8.com/github-students"},"Icons8")," using the ",(0,o.kt)("a",{parentName:"p",href:"https://education.github.com/pack"},"GitHub Student Pack"),"."),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"notes"},"Notes"),(0,o.kt)("p",null,"If you are using icons from an external source, these will be fetched on initial page load automatically, if and when needed. But combining icons from multiple services may have a negative impact on performance."),(0,o.kt)("p",null,"You can improve load speeds, by downloading your required icons, and serving them locally. Scaling icons to the minimum required dimensions (e.g. 128x128 or 64x64) will also greatly improve application load times."),(0,o.kt)("p",null,"For icons from external sources, please see the Privacy Policies and Licenses for that provider."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/044d5aa6.dd861788.js b/assets/js/044d5aa6.dd861788.js deleted file mode 100644 index ad08e95a..00000000 --- a/assets/js/044d5aa6.dd861788.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[221],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return h}});var i=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function r(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=i.createContext({}),c=function(e){var t=i.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},p=function(e){var t=c(e.components);return i.createElement(l.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},u=i.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=c(n),h=o,d=u["".concat(l,".").concat(h)]||u[h]||m[h]||a;return n?i.createElement(d,r(r({ref:t},p),{},{components:n})):i.createElement(d,r({ref:t},p))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,r=new Array(a);r[0]=u;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:o,r[1]=s;for(var c=2;c{a.d(t,{Zo:()=>c,kt:()=>k});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var l=n.createContext({}),p=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},c=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},h="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),h=p(a),d=r,k=h["".concat(l,".").concat(d)]||h[d]||u[d]||i;return a?n.createElement(k,o(o({ref:t},c),{},{components:a})):n.createElement(k,o({ref:t},c))}));function k(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,o=new Array(i);o[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[h]="string"==typeof e?e:r,o[1]=s;for(var p=2;p{a.r(t),a.d(t,{contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>s,toc:()=>l});var n=a(7462),r=(a(7294),a(3905));const i={},o="Keyboard Shortcuts",s={unversionedId:"searching",id:"searching",isDocsHomePage:!1,title:"Keyboard Shortcuts",description:"Searching",source:"@site/docs/searching.md",sourceDirName:".",slug:"/searching",permalink:"/docs/searching",editUrl:"https://github.com/Lissy93/dashy/edit/gh-pages/docs/docs/searching.md",version:"current",frontMatter:{},sidebar:"dashySidebar",previous:{title:"Authentication",permalink:"/docs/authentication"},next:{title:"Alternate Views & Opening Methods",permalink:"/docs/alternate-views"}},l=[{value:"Searching",id:"searching",children:[]},{value:"Navigating",id:"navigating",children:[]},{value:"Launching Apps",id:"launching-apps",children:[]},{value:"Tags",id:"tags",children:[]},{value:"Custom Hotkeys",id:"custom-hotkeys",children:[]},{value:"Web Search",id:"web-search",children:[{value:"Setting Search Engine",id:"setting-search-engine",children:[]},{value:"Using Custom Search Engine",id:"using-custom-search-engine",children:[]},{value:"Setting Opening Method",id:"setting-opening-method",children:[]},{value:"Using Bangs",id:"using-bangs",children:[]},{value:"Disabling Web Search",id:"disabling-web-search",children:[]}]},{value:"Clearing Search",id:"clearing-search",children:[]}],p={toc:l},c="wrapper";function h(e){let{components:t,...a}=e;return(0,r.kt)(c,(0,n.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"keyboard-shortcuts"},"Keyboard Shortcuts"),(0,r.kt)("h2",{id:"searching"},"Searching"),(0,r.kt)("p",null,"One of the primary purposes of Dashy is to allow you to quickly find and launch a given app. To make this as quick as possible, there is no need to touch the mouse, or press a certain key to begin searching - just start typing. Results will be filtered in real-time. No need to worry about case, special characters or small typos, these are taken care of, and your results should appear."),(0,r.kt)("h2",{id:"navigating"},"Navigating"),(0,r.kt)("p",null,"You can navigate through your items or search results using the keyboard. You can use ",(0,r.kt)("kbd",null,"Tab")," to cycle through results, and ",(0,r.kt)("kbd",null,"Shift")," + ",(0,r.kt)("kbd",null,"Tab")," to go backwards. Or use the arrow keys, ",(0,r.kt)("kbd",null,"\u2191"),", ",(0,r.kt)("kbd",null,"\u2192"),", ",(0,r.kt)("kbd",null,"\u2193")," and ",(0,r.kt)("kbd",null,"\u2190"),"."),(0,r.kt)("h2",{id:"launching-apps"},"Launching Apps"),(0,r.kt)("p",null,"You can launch a elected app by hitting ",(0,r.kt)("kbd",null,"Enter"),". This will open the app using your default opening method, specified in ",(0,r.kt)("inlineCode",{parentName:"p"},"target")," (either ",(0,r.kt)("inlineCode",{parentName:"p"},"newtab"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"sametab"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"modal"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"top")," or ",(0,r.kt)("inlineCode",{parentName:"p"},"workspace"),"). You can also use ",(0,r.kt)("kbd",null,"Alt")," + ",(0,r.kt)("kbd",null,"Enter")," to open the app in a pop-up modal, or ",(0,r.kt)("kbd",null,"Ctrl")," + ",(0,r.kt)("kbd",null,"Enter")," to open it in a new tab. For all available opening methods, just right-click on an item, to bring up the context menu."),(0,r.kt)("h2",{id:"tags"},"Tags"),(0,r.kt)("p",null,"By default, items are filtered by the ",(0,r.kt)("inlineCode",{parentName:"p"},"title")," attribute, as well as the hostname (extracted from ",(0,r.kt)("inlineCode",{parentName:"p"},"url"),"), the ",(0,r.kt)("inlineCode",{parentName:"p"},"provider")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"description"),". If you need to find results based on text which isn't included in these attributes, then you can add ",(0,r.kt)("inlineCode",{parentName:"p"},"tags")," to a given item. "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"}," items:\n - title: Plex\n description: Media library\n icon: favicon\n url: https://plex.lab.local\n tags: [ movies, videos, music ]\n - title: FreshRSS\n description: RSS Reader\n icon: favicon\n url: https://freshrss.lab.local\n tags: [ news, updates, blogs ]\n\n")),(0,r.kt)("p",null,"In the above example, Plex will be visible when searching for 'movies', and FreshRSS with 'news'"),(0,r.kt)("h2",{id:"custom-hotkeys"},"Custom Hotkeys"),(0,r.kt)("p",null,"For apps that you use regularly, you can set a custom keybinding. Use the ",(0,r.kt)("inlineCode",{parentName:"p"},"hotkey")," parameter on a certain item to specify a numeric key, between ",(0,r.kt)("inlineCode",{parentName:"p"},"0 - 9"),". You can then launch that app, by just pressing that key, which is much quicker than searching for it, if it's an app you use frequently."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"- title: Bookstack\n icon: far fa-books\n url: https://bookstack.lab.local/\n hotkey: 2\n- title: Git Tea\n icon: fab fa-git\n url: https://git.lab.local/\n target: workspace\n hotkey: 3\n")),(0,r.kt)("p",null,"In the above example, pressing ",(0,r.kt)("kbd",null,"2")," will launch Bookstack. Or hitting ",(0,r.kt)("kbd",null,"3")," will open Git in the workspace view."),(0,r.kt)("h2",{id:"web-search"},"Web Search"),(0,r.kt)("p",null,"It's possible to search the web directly from Dashy, which might be useful if you're using Dashy as your start page. This can be done by typing your query as normal, and then pressing ",(0,r.kt)("kbd",null,"\u23ce"),". Web search options are configured under ",(0,r.kt)("inlineCode",{parentName:"p"},"appConfig.webSearch"),"."),(0,r.kt)("h3",{id:"setting-search-engine"},"Setting Search Engine"),(0,r.kt)("p",null,"Set your default search engine using the ",(0,r.kt)("inlineCode",{parentName:"p"},"webSearch.searchEngine")," property. This defaults to DuckDuckGo. Search engine must be referenced by their key, the following providers are supported:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://duckduckgo.com"},(0,r.kt)("inlineCode",{parentName:"a"},"duckduckgo")),", ",(0,r.kt)("a",{parentName:"li",href:"https://google.com"},(0,r.kt)("inlineCode",{parentName:"a"},"google")),", ",(0,r.kt)("a",{parentName:"li",href:"https://whoogle.sdf.org"},(0,r.kt)("inlineCode",{parentName:"a"},"whoogle")),", ",(0,r.kt)("a",{parentName:"li",href:"https://www.qwant.com"},(0,r.kt)("inlineCode",{parentName:"a"},"qwant")),", ",(0,r.kt)("a",{parentName:"li",href:"https://www.startpage.com"},(0,r.kt)("inlineCode",{parentName:"a"},"startpage")),", ",(0,r.kt)("a",{parentName:"li",href:"https://searx.bar"},(0,r.kt)("inlineCode",{parentName:"a"},"searx-bar")),", ",(0,r.kt)("a",{parentName:"li",href:"https://searx.info"},(0,r.kt)("inlineCode",{parentName:"a"},"searx-info"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://searx.tiekoetter.com"},(0,r.kt)("inlineCode",{parentName:"a"},"searx-tiekoetter")),", ",(0,r.kt)("a",{parentName:"li",href:"https://searx.bissisoft.com"},(0,r.kt)("inlineCode",{parentName:"a"},"searx-bissisoft")),", ",(0,r.kt)("a",{parentName:"li",href:"https://www.ecosia.org"},(0,r.kt)("inlineCode",{parentName:"a"},"ecosia")),", ",(0,r.kt)("a",{parentName:"li",href:"https://metager.org/meta"},(0,r.kt)("inlineCode",{parentName:"a"},"metager")),", ",(0,r.kt)("a",{parentName:"li",href:"https://swisscows.com"},(0,r.kt)("inlineCode",{parentName:"a"},"swisscows")),", ",(0,r.kt)("a",{parentName:"li",href:"https://www.mojeek.com"},(0,r.kt)("inlineCode",{parentName:"a"},"mojeek"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://en.wikipedia.org"},(0,r.kt)("inlineCode",{parentName:"a"},"wikipedia")),", ",(0,r.kt)("a",{parentName:"li",href:"https://www.wolframalpha.com"},(0,r.kt)("inlineCode",{parentName:"a"},"wolframalpha")),", ",(0,r.kt)("a",{parentName:"li",href:"https://stackoverflow.com"},(0,r.kt)("inlineCode",{parentName:"a"},"stackoverflow")),", ",(0,r.kt)("a",{parentName:"li",href:"https://github.com"},(0,r.kt)("inlineCode",{parentName:"a"},"github")),", ",(0,r.kt)("a",{parentName:"li",href:"https://www.reddit.com"},(0,r.kt)("inlineCode",{parentName:"a"},"reddit")),", ",(0,r.kt)("a",{parentName:"li",href:"https://youtube.com"},(0,r.kt)("inlineCode",{parentName:"a"},"youtube")),", ",(0,r.kt)("a",{parentName:"li",href:"https://www.bbc.co.uk"},(0,r.kt)("inlineCode",{parentName:"a"},"bbc")))),(0,r.kt)("h3",{id:"using-custom-search-engine"},"Using Custom Search Engine"),(0,r.kt)("p",null,"You can also use a custom search engine, that isn't included in the above list (like a self-hosted instance of ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/benbusby/whoogle-search"},"Whoogle")," or ",(0,r.kt)("a",{parentName:"p",href:"https://searx.github.io/searx/"},"Searx"),"). Set ",(0,r.kt)("inlineCode",{parentName:"p"},"searchEngine: custom"),", and then specify the URL (plus query params) to you're search engine under ",(0,r.kt)("inlineCode",{parentName:"p"},"customSearchEngine"),"."),(0,r.kt)("p",null,"For example: "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"appConfig:\n webSearch:\n searchEngine: custom\n customSearchEngine: 'https://searx.local/search?q='\n")),(0,r.kt)("h3",{id:"setting-opening-method"},"Setting Opening Method"),(0,r.kt)("p",null,"In a similar way to opening apps, you can specify where you would like search results to be opened. This is done under the ",(0,r.kt)("inlineCode",{parentName:"p"},"openingMethod")," attribute, and can be set to either ",(0,r.kt)("inlineCode",{parentName:"p"},"newtab"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"sametab")," or ",(0,r.kt)("inlineCode",{parentName:"p"},"workspace"),". By default results are opened in a new tab."),(0,r.kt)("h3",{id:"using-bangs"},"Using Bangs"),(0,r.kt)("p",null,"An insanely useful feature of DDG is ",(0,r.kt)("a",{parentName:"p",href:"https://duckduckgo.com/bang"},"Bangs"),", where you type a specific character combination at the start of your search query, and it will be redirected the that website, such as '!w Docker' will display the Docker wikipedia page. Dashy has a similar feature, enabling you to define your own custom bangs to redirect search results to a specific app, website or search engine."),(0,r.kt)("p",null,"This is done under the ",(0,r.kt)("inlineCode",{parentName:"p"},"searchBangs")," property, with a list of key value pairs. The key is what you will type, and the value is the destination, either as an identifier or a URL with query parameters. "),(0,r.kt)("p",null,"For example:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"appConfig:\n webSearch:\n searchEngine: 'duckduckgo'\n openingMethod: 'newtab'\n searchBangs:\n /r: reddit\n /w: wikipedia\n /s: https://whoogle.local/search?q=\n /a: https://www.amazon.co.uk/s?k=\n ':wolf': wolframalpha\n ':so': stackoverflow\n ':git': github\n")),(0,r.kt)("p",null,"Note that bangs begging with ",(0,r.kt)("inlineCode",{parentName:"p"},"!")," or ",(0,r.kt)("inlineCode",{parentName:"p"},":")," must be surrounded them in quotes"),(0,r.kt)("h3",{id:"disabling-web-search"},"Disabling Web Search"),(0,r.kt)("p",null,"Web search can be disabled, by setting ",(0,r.kt)("inlineCode",{parentName:"p"},"disableWebSearch"),", for example:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"appConfig:\n webSearch: { disableWebSearch: true }\n")),(0,r.kt)("h2",{id:"clearing-search"},"Clearing Search"),(0,r.kt)("p",null,"You can clear your search term at any time, resting the UI to it's initial state, by pressing ",(0,r.kt)("kbd",null,"Esc"),".\nThis can also be used to close any open pop-up modals."))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0bfe2fe2.275f5202.js b/assets/js/0bfe2fe2.275f5202.js deleted file mode 100644 index 51b27d90..00000000 --- a/assets/js/0bfe2fe2.275f5202.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[723],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return d}});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),p=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=p(e.components);return a.createElement(l.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),h=p(n),d=r,k=h["".concat(l,".").concat(d)]||h[d]||u[d]||i;return n?a.createElement(k,o(o({ref:t},c),{},{components:n})):a.createElement(k,o({ref:t},c))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:r,o[1]=s;for(var p=2;p{t.d(r,{Zo:()=>l,kt:()=>m});var n=t(7294);function o(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function a(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function c(e){for(var r=1;r=0||(o[t]=e[t]);return o}(e,r);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var i=n.createContext({}),p=function(e){var r=n.useContext(i),t=r;return e&&(t="function"==typeof e?e(r):c(c({},r),e)),t},l=function(e){var r=p(e.components);return n.createElement(i.Provider,{value:r},e.children)},u="mdxType",f={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},d=n.forwardRef((function(e,r){var t=e.components,o=e.mdxType,a=e.originalType,i=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),u=p(t),d=o,m=u["".concat(i,".").concat(d)]||u[d]||f[d]||a;return t?n.createElement(m,c(c({ref:r},l),{},{components:t})):n.createElement(m,c({ref:r},l))}));function m(e,r){var t=arguments,o=r&&r.mdxType;if("string"==typeof e||o){var a=t.length,c=new Array(a);c[0]=d;var s={};for(var i in r)hasOwnProperty.call(r,i)&&(s[i]=r[i]);s.originalType=e,s[u]="string"==typeof e?e:o,c[1]=s;for(var p=2;p{t.r(r),t.d(r,{contentTitle:()=>c,default:()=>u,frontMatter:()=>a,metadata:()=>s,toc:()=>i});var n=t(7462),o=(t(7294),t(3905));const a={},c=void 0,s={unversionedId:"showcase/readme",id:"showcase/readme",isDocsHomePage:!1,title:"readme",description:"See: Showcase.",source:"@site/docs/showcase/readme.md",sourceDirName:"showcase",slug:"/showcase/readme",permalink:"/docs/showcase/readme",editUrl:"https://github.com/Lissy93/dashy/edit/gh-pages/docs/docs/showcase/readme.md",version:"current",frontMatter:{}},i=[],p={toc:i},l="wrapper";function u(e){let{components:r,...t}=e;return(0,o.kt)(l,(0,n.Z)({},p,t,{components:r,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"See: ",(0,o.kt)("a",{parentName:"p",href:"/docs/showcase"},"Showcase"),"."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/1745c531.6e25dc2e.js b/assets/js/1745c531.6e25dc2e.js deleted file mode 100644 index fda4a3a8..00000000 --- a/assets/js/1745c531.6e25dc2e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[478],{3905:function(e,r,t){t.d(r,{Zo:function(){return p},kt:function(){return m}});var n=t(7294);function o(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function c(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function a(e){for(var r=1;r=0||(o[t]=e[t]);return o}(e,r);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var s=n.createContext({}),u=function(e){var r=n.useContext(s),t=r;return e&&(t="function"==typeof e?e(r):a(a({},r),e)),t},p=function(e){var r=u(e.components);return n.createElement(s.Provider,{value:r},e.children)},l={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},f=n.forwardRef((function(e,r){var t=e.components,o=e.mdxType,c=e.originalType,s=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),f=u(t),m=o,d=f["".concat(s,".").concat(m)]||f[m]||l[m]||c;return t?n.createElement(d,a(a({ref:r},p),{},{components:t})):n.createElement(d,a({ref:r},p))}));function m(e,r){var t=arguments,o=r&&r.mdxType;if("string"==typeof e||o){var c=t.length,a=new Array(c);a[0]=f;var i={};for(var s in r)hasOwnProperty.call(r,s)&&(i[s]=r[s]);i.originalType=e,i.mdxType="string"==typeof e?e:o,a[1]=i;for(var u=2;u{a.r(t),a.d(t,{default:()=>A});var n=a(7294),l=a(6742),r=a(4973);const i=function(e){const{metadata:t}=e;return n.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,r.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages navigation",description:"The ARIA label for the docs pagination"})},n.createElement("div",{className:"pagination-nav__item"},t.previous&&n.createElement(l.Z,{className:"pagination-nav__link",to:t.previous.permalink},n.createElement("div",{className:"pagination-nav__sublabel"},n.createElement(r.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")),n.createElement("div",{className:"pagination-nav__label"},"\xab ",t.previous.title))),n.createElement("div",{className:"pagination-nav__item pagination-nav__item--next"},t.next&&n.createElement(l.Z,{className:"pagination-nav__link",to:t.next.permalink},n.createElement("div",{className:"pagination-nav__sublabel"},n.createElement(r.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next")),n.createElement("div",{className:"pagination-nav__label"},t.next.title," \xbb"))))};var s=a(2263),o=a(907),c=a(9306);const d={unreleased:function(e){let{siteTitle:t,versionMetadata:a}=e;return n.createElement(r.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a.label)}},"This is unreleased documentation for {siteTitle} {versionLabel} version.")},unmaintained:function(e){let{siteTitle:t,versionMetadata:a}=e;return n.createElement(r.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a.label)}},"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.")}};function m(e){const t=d[e.versionMetadata.banner];return n.createElement(t,e)}function u(e){let{versionLabel:t,to:a,onClick:i}=e;return n.createElement(r.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:n.createElement("b",null,n.createElement(l.Z,{to:a,onClick:i},n.createElement(r.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label"},"latest version")))}},"For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).")}function v(e){let{versionMetadata:t}=e;const{siteConfig:{title:a}}=(0,s.Z)(),{pluginId:l}=(0,o.gA)({failfast:!0}),{savePreferredVersionName:r}=(0,c.J)(l),{latestDocSuggestion:i,latestVersionSuggestion:d}=(0,o.Jo)(l),v=i??(h=d).docs.find((e=>e.id===h.mainDocId));var h;return n.createElement("div",{className:"alert alert--warning margin-bottom--md",role:"alert"},n.createElement("div",null,n.createElement(m,{siteTitle:a,versionMetadata:t})),n.createElement("div",{className:"margin-top--md"},n.createElement(u,{versionLabel:d.label,to:v.path,onClick:()=>r(d.name)})))}const h=function(e){let{versionMetadata:t}=e;return"none"===t.banner?n.createElement(n.Fragment,null):n.createElement(v,{versionMetadata:t})};var E=a(1217);function p(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:a}=e;return n.createElement(r.Z,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:n.createElement("b",null,n.createElement("time",{dateTime:new Date(1e3*t).toISOString()},a))}}," on {date}")}function g(e){let{lastUpdatedBy:t}=e;return n.createElement(r.Z,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:n.createElement("b",null,t)}}," by {user}")}function b(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:a,lastUpdatedBy:l}=e;return n.createElement(n.Fragment,null,n.createElement(r.Z,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t&&a?n.createElement(p,{lastUpdatedAt:t,formattedLastUpdatedAt:a}):"",byUser:l?n.createElement(g,{lastUpdatedBy:l}):""}},"Last updated{atDate}{byUser}"),!1)}var f=a(571),_=a(7462),N=a(6010);const L="iconEdit_mS5F",k=e=>{let{className:t,...a}=e;return n.createElement("svg",(0,_.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,N.Z)(L,t),"aria-hidden":"true"},a),n.createElement("g",null,n.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))};function U(e){let{editUrl:t}=e;return n.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener"},n.createElement(k,null),n.createElement(r.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}var T=a(6159);const Z="docItemContainer_oiyr",y="lastUpdated_wj+Z",w="docItemCol_zHA2";const A=function(e){const{content:t,versionMetadata:a}=e,{metadata:l,frontMatter:r}=t,{image:s,keywords:c,hide_title:d,hide_table_of_contents:m}=r,{description:u,title:v,editUrl:p,lastUpdatedAt:g,formattedLastUpdatedAt:_,lastUpdatedBy:L}=l,{pluginId:k}=(0,o.gA)({failfast:!0}),A=(0,o.gB)(k).length>1,C=!d&&void 0===t.contentTitle;return n.createElement(n.Fragment,null,n.createElement(E.Z,{title:v,description:u,keywords:c,image:s}),n.createElement("div",{className:"row"},n.createElement("div",{className:(0,N.Z)("col",{[w]:!m})},n.createElement(h,{versionMetadata:a}),n.createElement("div",{className:Z},n.createElement("article",null,A&&n.createElement("span",{className:"badge badge--secondary"},"Version: ",a.label),n.createElement("div",{className:"markdown"},C&&n.createElement(T.N,null,v),n.createElement(t,null)),(p||g||L)&&n.createElement("footer",{className:"row docusaurus-mt-lg"},n.createElement("div",{className:"col"},p&&n.createElement(U,{editUrl:p})),n.createElement("div",{className:(0,N.Z)("col",y)},(g||L)&&n.createElement(b,{lastUpdatedAt:g,formattedLastUpdatedAt:_,lastUpdatedBy:L})))),n.createElement(i,{metadata:l}))),!m&&t.toc&&n.createElement("div",{className:"col col--3"},n.createElement(f.Z,{toc:t.toc}))))}},6159:(e,t,a)=>{a.d(t,{N:()=>d,Z:()=>m});var n=a(7462),l=a(7294),r=a(6010),i=a(4973),s=a(9306);const o="enhancedAnchor_WiXH",c="h1Heading_dC7a",d=function(e){let{...t}=e;return l.createElement("header",null,l.createElement("h1",(0,n.Z)({},t,{id:void 0,className:c}),t.children))},m=e=>{return"h1"===e?d:(t=e,function(e){let{id:a,...n}=e;const{navbar:{hideOnScroll:c}}=(0,s.LU)();return a?l.createElement(t,n,l.createElement("a",{"aria-hidden":"true",tabIndex:-1,className:(0,r.Z)("anchor",{[o]:!c}),id:a}),n.children,l.createElement("a",{className:"hash-link",href:`#${a}`,title:(0,i.I)({id:"theme.common.headingLinkTitle",message:"Direct link to heading",description:"Title for link to heading"})},"#")):l.createElement(t,n)});var t}},571:(e,t,a)=>{a.d(t,{Z:()=>c});var n=a(7294),l=a(6010);const r=function(e,t,a){const[l,r]=(0,n.useState)(void 0);(0,n.useEffect)((()=>{function n(){const n=function(){const e=Array.from(document.getElementsByClassName("anchor")),t=e.find((e=>{const{top:t}=e.getBoundingClientRect();return t>=a}));if(t){if(t.getBoundingClientRect().top>=a){return e[e.indexOf(t)-1]??t}return t}return e[e.length-1]}();if(n){let a=0,i=!1;const s=document.getElementsByClassName(e);for(;a{document.removeEventListener("scroll",n),document.removeEventListener("resize",n)}}))},i="tableOfContents_vrFS",s="table-of-contents__link";function o(e){let{toc:t,isChild:a}=e;return t.length?n.createElement("ul",{className:a?"":"table-of-contents table-of-contents__left-border"},t.map((e=>n.createElement("li",{key:e.id},n.createElement("a",{href:`#${e.id}`,className:s,dangerouslySetInnerHTML:{__html:e.value}}),n.createElement(o,{isChild:!0,toc:e.children}))))):null}const c=function(e){let{toc:t}=e;return r(s,"table-of-contents__link--active",100),n.createElement("div",{className:(0,l.Z)(i,"thin-scrollbar")},n.createElement(o,{toc:t}))}}}]); \ No newline at end of file diff --git a/assets/js/17896441.a1a52f63.js b/assets/js/17896441.a1a52f63.js deleted file mode 100644 index 256d8cc1..00000000 --- a/assets/js/17896441.a1a52f63.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[918],{2631:function(e,t,a){a.r(t),a.d(t,{default:function(){return B}});var n=a(7294),r=a(6742),l=a(4973);var i=function(e){var t=e.metadata;return n.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,l.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages navigation",description:"The ARIA label for the docs pagination"})},n.createElement("div",{className:"pagination-nav__item"},t.previous&&n.createElement(r.Z,{className:"pagination-nav__link",to:t.previous.permalink},n.createElement("div",{className:"pagination-nav__sublabel"},n.createElement(l.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")),n.createElement("div",{className:"pagination-nav__label"},"\xab ",t.previous.title))),n.createElement("div",{className:"pagination-nav__item pagination-nav__item--next"},t.next&&n.createElement(r.Z,{className:"pagination-nav__link",to:t.next.permalink},n.createElement("div",{className:"pagination-nav__sublabel"},n.createElement(l.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next")),n.createElement("div",{className:"pagination-nav__label"},t.next.title," \xbb"))))},s=a(2263),o=a(907),c=a(9306);var d={unreleased:function(e){var t=e.siteTitle,a=e.versionMetadata;return n.createElement(l.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a.label)}},"This is unreleased documentation for {siteTitle} {versionLabel} version.")},unmaintained:function(e){var t=e.siteTitle,a=e.versionMetadata;return n.createElement(l.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a.label)}},"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.")}};function m(e){var t=d[e.versionMetadata.banner];return n.createElement(t,e)}function u(e){var t=e.versionLabel,a=e.to,i=e.onClick;return n.createElement(l.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:n.createElement("b",null,n.createElement(r.Z,{to:a,onClick:i},n.createElement(l.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label"},"latest version")))}},"For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).")}function v(e){var t,a=e.versionMetadata,r=(0,s.Z)().siteConfig.title,l=(0,o.gA)({failfast:!0}).pluginId,i=(0,c.J)(l).savePreferredVersionName,d=(0,o.Jo)(l),v=d.latestDocSuggestion,h=d.latestVersionSuggestion,E=null!=v?v:(t=h).docs.find((function(e){return e.id===t.mainDocId}));return n.createElement("div",{className:"alert alert--warning margin-bottom--md",role:"alert"},n.createElement("div",null,n.createElement(m,{siteTitle:r,versionMetadata:a})),n.createElement("div",{className:"margin-top--md"},n.createElement(u,{versionLabel:h.label,to:E.path,onClick:function(){return i(h.name)}})))}var h=function(e){var t=e.versionMetadata;return"none"===t.banner?n.createElement(n.Fragment,null):n.createElement(v,{versionMetadata:t})},E=a(1217);function p(e){var t=e.lastUpdatedAt,a=e.formattedLastUpdatedAt;return n.createElement(l.Z,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:n.createElement("b",null,n.createElement("time",{dateTime:new Date(1e3*t).toISOString()},a))}}," on {date}")}function f(e){var t=e.lastUpdatedBy;return n.createElement(l.Z,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:n.createElement("b",null,t)}}," by {user}")}function g(e){var t=e.lastUpdatedAt,a=e.formattedLastUpdatedAt,r=e.lastUpdatedBy;return n.createElement(n.Fragment,null,n.createElement(l.Z,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t&&a?n.createElement(p,{lastUpdatedAt:t,formattedLastUpdatedAt:a}):"",byUser:r?n.createElement(f,{lastUpdatedBy:r}):""}},"Last updated{atDate}{byUser}"),!1)}var b=a(571),_=a(7462),N=a(3366),L=a(6010),k="iconEdit_mS5F",U=["className"],Z=function(e){var t=e.className,a=(0,N.Z)(e,U);return n.createElement("svg",(0,_.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,L.Z)(k,t),"aria-hidden":"true"},a),n.createElement("g",null,n.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))};function T(e){var t=e.editUrl;return n.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener"},n.createElement(Z,null),n.createElement(l.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}var y=a(6159),w="docItemContainer_oiyr",A="lastUpdated_wj+Z",C="docItemCol_zHA2";var B=function(e){var t,a=e.content,r=e.versionMetadata,l=a.metadata,s=a.frontMatter,c=s.image,d=s.keywords,m=s.hide_title,u=s.hide_table_of_contents,v=l.description,p=l.title,f=l.editUrl,_=l.lastUpdatedAt,N=l.formattedLastUpdatedAt,k=l.lastUpdatedBy,U=(0,o.gA)({failfast:!0}).pluginId,Z=(0,o.gB)(U).length>1,B=!m&&void 0===a.contentTitle;return n.createElement(n.Fragment,null,n.createElement(E.Z,{title:p,description:v,keywords:d,image:c}),n.createElement("div",{className:"row"},n.createElement("div",{className:(0,L.Z)("col",(t={},t[C]=!u,t))},n.createElement(h,{versionMetadata:r}),n.createElement("div",{className:w},n.createElement("article",null,Z&&n.createElement("span",{className:"badge badge--secondary"},"Version: ",r.label),n.createElement("div",{className:"markdown"},B&&n.createElement(y.N,null,p),n.createElement(a,null)),(f||_||k)&&n.createElement("footer",{className:"row docusaurus-mt-lg"},n.createElement("div",{className:"col"},f&&n.createElement(T,{editUrl:f})),n.createElement("div",{className:(0,L.Z)("col",A)},(_||k)&&n.createElement(g,{lastUpdatedAt:_,formattedLastUpdatedAt:N,lastUpdatedBy:k})))),n.createElement(i,{metadata:l}))),!u&&a.toc&&n.createElement("div",{className:"col col--3"},n.createElement(b.Z,{toc:a.toc}))))}},6159:function(e,t,a){a.d(t,{N:function(){return u},Z:function(){return v}});var n=a(3366),r=a(7462),l=a(7294),i=a(6010),s=a(4973),o=a(9306),c="enhancedAnchor_WiXH",d="h1Heading_dC7a",m=["id"],u=function(e){var t=Object.assign({},e);return l.createElement("header",null,l.createElement("h1",(0,r.Z)({},t,{id:void 0,className:d}),t.children))},v=function(e){return"h1"===e?u:(t=e,function(e){var a,r=e.id,d=(0,n.Z)(e,m),u=(0,o.LU)().navbar.hideOnScroll;return r?l.createElement(t,d,l.createElement("a",{"aria-hidden":"true",tabIndex:-1,className:(0,i.Z)("anchor",(a={},a[c]=!u,a)),id:r}),d.children,l.createElement("a",{className:"hash-link",href:"#"+r,title:(0,s.I)({id:"theme.common.headingLinkTitle",message:"Direct link to heading",description:"Title for link to heading"})},"#")):l.createElement(t,d)});var t}},571:function(e,t,a){a.d(t,{Z:function(){return c}});var n=a(7294),r=a(6010);var l=function(e,t,a){var r=(0,n.useState)(void 0),l=r[0],i=r[1];(0,n.useEffect)((function(){function n(){var n=function(){var e=Array.from(document.getElementsByClassName("anchor")),t=e.find((function(e){return e.getBoundingClientRect().top>=a}));if(t){if(t.getBoundingClientRect().top>=a){var n=e[e.indexOf(t)-1];return null!=n?n:t}return t}return e[e.length-1]}();if(n)for(var r=0,s=!1,o=document.getElementsByClassName(e);r=0||(r[n]=t[n]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}var u=a.createContext({}),o=function(t){var e=a.useContext(u),n=e;return t&&(n="function"==typeof t?t(e):i(i({},e),t)),n},h=function(t){var e=o(t.components);return a.createElement(u.Provider,{value:e},t.children)},c={inlineCode:"code",wrapper:function(t){var e=t.children;return a.createElement(a.Fragment,{},e)}},k=a.forwardRef((function(t,e){var n=t.components,r=t.mdxType,l=t.originalType,u=t.parentName,h=s(t,["components","mdxType","originalType","parentName"]),k=o(n),p=r,b=k["".concat(u,".").concat(p)]||k[p]||c[p]||l;return n?a.createElement(b,i(i({ref:e},h),{},{components:n})):a.createElement(b,i({ref:e},h))}));function p(t,e){var n=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=n.length,i=new Array(l);i[0]=k;var s={};for(var u in e)hasOwnProperty.call(e,u)&&(s[u]=e[u]);s.originalType=t,s.mdxType="string"==typeof t?t:r,i[1]=s;for(var o=2;o{n.d(e,{Zo:()=>h,kt:()=>b});var a=n(7294);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function l(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function i(t){for(var e=1;e=0||(r[n]=t[n]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}var o=a.createContext({}),u=function(t){var e=a.useContext(o),n=e;return t&&(n="function"==typeof t?t(e):i(i({},e),t)),n},h=function(t){var e=u(t.components);return a.createElement(o.Provider,{value:e},t.children)},k="mdxType",c={inlineCode:"code",wrapper:function(t){var e=t.children;return a.createElement(a.Fragment,{},e)}},p=a.forwardRef((function(t,e){var n=t.components,r=t.mdxType,l=t.originalType,o=t.parentName,h=s(t,["components","mdxType","originalType","parentName"]),k=u(n),p=r,b=k["".concat(o,".").concat(p)]||k[p]||c[p]||l;return n?a.createElement(b,i(i({ref:e},h),{},{components:n})):a.createElement(b,i({ref:e},h))}));function b(t,e){var n=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=n.length,i=new Array(l);i[0]=p;var s={};for(var o in e)hasOwnProperty.call(e,o)&&(s[o]=e[o]);s.originalType=t,s[k]="string"==typeof t?t:r,i[1]=s;for(var u=2;u{n.r(e),n.d(e,{contentTitle:()=>i,default:()=>k,frontMatter:()=>l,metadata:()=>s,toc:()=>o});var a=n(7462),r=(n(7294),n(3905));const l={},i="Credits",s={unversionedId:"credits",id:"credits",isDocsHomePage:!1,title:"Credits",description:"Sponsors",source:"@site/docs/credits.md",sourceDirName:".",slug:"/credits",permalink:"/docs/credits",editUrl:"https://github.com/Lissy93/dashy/edit/gh-pages/docs/docs/credits.md",version:"current",frontMatter:{}},o=[{value:"Sponsors",id:"sponsors",children:[]},{value:"Contributors",id:"contributors",children:[]},{value:"Helpful Users",id:"helpful-users",children:[]},{value:"Bots",id:"bots",children:[]},{value:"Newest Stargazers",id:"newest-stargazers",children:[]},{value:"Dependencies",id:"dependencies",children:[]},{value:"You!",id:"you",children:[]}],u={toc:o},h="wrapper";function k(t){let{components:e,...n}=t;return(0,r.kt)(h,(0,a.Z)({},u,n,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"credits"},"Credits"),(0,r.kt)("h3",{id:"sponsors"},"Sponsors"),(0,r.kt)("table",null,(0,r.kt)("tr",null,(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/peng1can"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/225854?v=4",width:"80;",alt:"peng1can"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Peng1can")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/emlazzarin"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/1141361?u=714e3487a3f2e0df721b01a0133945f075d3ff68&v=4",width:"80;",alt:"emlazzarin"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Eddy Lazzarin")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/BOZG"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/6022344?u=a52f42b946a1e1156f7bb9d7f65e9e28bb2da89f&v=4",width:"80;",alt:"BOZG"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Stephen Rigney")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/Robert-Ernst"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/9050259?u=7253b4063f1ffe3b5a894263c8b2056151802508&v=4",width:"80;",alt:"Robert-Ernst"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Robert Ernst")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/vlad-timofeev"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/11474041?v=4",width:"80;",alt:"vlad-timofeev"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Vlad Timofeev")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/kitl000"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/19974513?u=6b426af87e6a57781e9b819a37393543db6d68ec&v=4",width:"80;",alt:"kitl000"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Kit L."))))),(0,r.kt)("tr",null,(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/Byolock"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/25748003?v=4",width:"80;",alt:"Byolock"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Byolock")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/PAPAMICA"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/29079741?v=4",width:"80;",alt:"PAPAMICA"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Mickael Asseline")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/hugalafutro"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/30209689?v=4",width:"80;",alt:"hugalafutro"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Hugalafutro")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/shadowking001"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/43928955?u=a00b44f22e5a82234d9b406ac048def1fbc16e31&v=4",width:"80;",alt:"shadowking001"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"LawrenceP.")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/KierenConnell"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/46445781?u=5502f8fb780938e2825735d7bbb9236642d212c0&v=4",width:"80;",alt:"KierenConnell"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Kieren Connell")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/Antiz96"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/53110319?u=a4fad84fed8fb2fd9ca7c507d303fd6048b3e497&v=4",width:"80;",alt:"Antiz96"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Robin Candau"))))),(0,r.kt)("tr",null,(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/ced4568"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/60725859?v=4",width:"80;",alt:"ced4568"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Kyforker148")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/ratty222"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/92832598?u=137b65530cbd5f5af9c24cde51baa6cc77cc934b&v=4",width:"80;",alt:"ratty222"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Ratty222")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/undefined"},(0,r.kt)("img",{src:"",width:"80;",alt:"undefined"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Undefined")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/jtfinley72"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/96497997?v=4",width:"80;",alt:"jtfinley72"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Jtfinley72")))))),(0,r.kt)("h3",{id:"contributors"},"Contributors"),(0,r.kt)("table",null,(0,r.kt)("tr",null,(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/Lissy93"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/1862727?v=4",width:"80;",alt:"Lissy93"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Alicia Sykes")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/liss-bot"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/87835202?v=4",width:"80;",alt:"liss-bot"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Alicia Bot")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/EVOTk"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/45015615?v=4",width:"80;",alt:"EVOTk"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"EVOTk")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/Ateroz"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/5369885?v=4",width:"80;",alt:"Ateroz"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Kenneth Church")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/snyk-bot"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/19733683?v=4",width:"80;",alt:"snyk-bot"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Snyk Bot")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/pinarruiz"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/37040888?v=4",width:"80;",alt:"pinarruiz"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Alejandro Pinar Ruiz"))))),(0,r.kt)("tr",null,(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/kashif-se"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/5568138?v=4",width:"80;",alt:"kashif-se"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Kashif Sohail")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/walkxcode"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/71191962?v=4",width:"80;",alt:"walkxcode"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Walkx")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/evroon"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/11857441?v=4",width:"80;",alt:"evroon"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Erik Vroon")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/UrekD"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/38784343?v=4",width:"80;",alt:"UrekD"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"UrekD")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/remygrandin"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/1934515?v=4",width:"80;",alt:"remygrandin"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Remygrandin")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/stanly0726"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/37040069?v=4",width:"80;",alt:"stanly0726"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Stanly0726"))))),(0,r.kt)("tr",null,(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/onedr0p"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/213795?v=4",width:"80;",alt:"onedr0p"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"\u15ea\u0454\u03bd\u03b9\u03b7 \u15f7\u03c5\u043d\u029f")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/alexdelprete"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/7027842?v=4",width:"80;",alt:"alexdelprete"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Alessandro Del Prete")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/BOZG"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/6022344?v=4",width:"80;",alt:"BOZG"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Stephen Rigney")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/moemoeq"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/1808434?v=4",width:"80;",alt:"moemoeq"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"CHAIYEON CHO")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/daentech"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/358678?v=4",width:"80;",alt:"daentech"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Dan Gilbert")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/rubenandre"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/9402773?v=4",width:"80;",alt:"rubenandre"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"R\xfaben Silva"))))),(0,r.kt)("tr",null,(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/Singebob"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/24290044?v=4",width:"80;",alt:"Singebob"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Jeremy Chauvin")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/0n1cOn3"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/27576311?v=4",width:"80;",alt:"0n1cOn3"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"0n1cOn3")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/BeginCI"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/57495754?v=4",width:"80;",alt:"BeginCI"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Begin")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/skaarj1989"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/34756939?v=4",width:"80;",alt:"skaarj1989"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"David")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/deepsourcebot"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/60907429?v=4",width:"80;",alt:"deepsourcebot"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"DeepSource Bot")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/emiran-orange"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/71817149?v=4",width:"80;",alt:"emiran-orange"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Emiran-orange"))))),(0,r.kt)("tr",null,(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/FormatToday"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/20515769?v=4",width:"80;",alt:"FormatToday"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"FormatToday")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/Compunctus"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/5058853?v=4",width:"80;",alt:"Compunctus"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Iaroslav Dronskii")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/b1thunt3r"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/791091?v=4",width:"80;",alt:"b1thunt3r"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Ishan Jain")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/Hellhium"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/11504877?v=4",width:"80;",alt:"Hellhium"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Jemy SCHNEPP")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/KierenConnell"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/46445781?v=4",width:"80;",alt:"KierenConnell"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Kieren Connell")))))),(0,r.kt)("h3",{id:"helpful-users"},"Helpful Users"),(0,r.kt)("table",null,(0,r.kt)("tr",null,(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/evotk"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/45015615?v=4",width:"80;",alt:"evotk"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Evotk")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/shadowking001"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/43928955?v=4",width:"80;",alt:"shadowking001"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"LawrenceP.")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/urekd"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/38784343?v=4",width:"80;",alt:"urekd"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Urekd")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/dylanbeme"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/41838333?v=4",width:"80;",alt:"dylanbeme"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"DylanH")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/milesteg1"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/29298312?v=4",width:"80;",alt:"milesteg1"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Milesteg1")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/lu4t"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/29571529?v=4",width:"80;",alt:"lu4t"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Lu4t")))))),(0,r.kt)("h3",{id:"bots"},"Bots"),(0,r.kt)("table",null,(0,r.kt)("tr",null,(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/liss-bot"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/87835202?v=4",width:"80;",alt:"liss-bot"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Alicia Bot")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/snyk-bot"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/19733683?v=4",width:"80;",alt:"snyk-bot"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Snyk Bot")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/netlify"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/7892489?v=4",width:"80;",alt:"netlify"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Netlify")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/viezly"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/78649443?v=4",width:"80;",alt:"viezly"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"Viezly")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/muse-dev"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/u/42072939?v=4",width:"80;",alt:"muse-dev"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"MuseDev")))),(0,r.kt)("td",{align:"center"},(0,r.kt)("a",{href:"https://github.com/github-actions[bot]"},(0,r.kt)("img",{src:"https://avatars.githubusercontent.com/in/15368?v=4",width:"80;",alt:"github-actions[bot]"}),(0,r.kt)("br",null),(0,r.kt)("sub",null,(0,r.kt)("b",null,"github-actions[bot]")))))),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"The above section is auto-generated, using ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/marketplace/actions/contribute-list"},"contribute-list")," by @akhilmhdh.")),(0,r.kt)("h3",{id:"newest-stargazers"},"Newest Stargazers"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/stargazers"},(0,r.kt)("img",{parentName:"a",src:"https://reporoster.com/stars/dark/Lissy93/dashy",alt:"Recent Star Gazers"}))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://github.com/lissy93/dashy/network/members"},(0,r.kt)("img",{parentName:"a",src:"https://reporoster.com/forks/dark/lissy93/dashy",alt:"Recent Forkers"}))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"dependencies"},"Dependencies"),(0,r.kt)("p",null,"This app definitely wouldn't have been quite so possible without the making use of the following package and components. Full credit and big kudos to their respective authors, who've done an amazing job in building and maintaining them. For a full breakdown of dependency licenses, please see ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/blob/master/.github/LEGAL.md"},"Legal")),(0,r.kt)("h4",{id:"core"},"Core"),(0,r.kt)("p",null,"At it's core, the application uses ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/vuejs/vue"},(0,r.kt)("strong",{parentName:"a"},"Vue.js")),", as well as it's services with ",(0,r.kt)("a",{parentName:"p",href:"https://vuex.vuejs.org/"},(0,r.kt)("strong",{parentName:"a"},"VueX"))," for state management. Styling is done with ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/sass/sass"},(0,r.kt)("strong",{parentName:"a"},"SCSS")),", JavaScript is currently ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/babel/babel"},(0,r.kt)("strong",{parentName:"a"},"Babel")),", (but I am in the process of converting to ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/Microsoft/TypeScript"},(0,r.kt)("strong",{parentName:"a"},"TypeScript")),"). Linting is done with ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/eslint/eslint"},(0,r.kt)("strong",{parentName:"a"},"ESLint"))," and ",(0,r.kt)("a",{parentName:"p",href:"https://prettier.io/"},(0,r.kt)("strong",{parentName:"a"},"Prettier")),", both following the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/airbnb/javascript"},(0,r.kt)("strong",{parentName:"a"},"AirBnB Styleguide")),". The config is defined in ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/yaml/yaml"},(0,r.kt)("strong",{parentName:"a"},"YAML")),", with a simple ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/nodejs/node"},(0,r.kt)("strong",{parentName:"a"},"Node.js"))," server to serve up the static app and the optional API endpoints, and container deployment is done with ",(0,r.kt)("a",{parentName:"p",href:"https://www.docker.com/"},(0,r.kt)("strong",{parentName:"a"},"Docker")),"."),(0,r.kt)("h4",{id:"utilities"},"Utilities"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/brix/crypto-js"},(0,r.kt)("inlineCode",{parentName:"a"},"crypto-js"))," - Encryption implementations by @evanvosberg and community ",(0,r.kt)("inlineCode",{parentName:"li"},"MIT")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/axios/axios"},(0,r.kt)("inlineCode",{parentName:"a"},"axios"))," - Promise based HTTP client by @mzabriskie and community ",(0,r.kt)("inlineCode",{parentName:"li"},"MIT")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/ajv-validator/ajv"},(0,r.kt)("inlineCode",{parentName:"a"},"ajv"))," - JSON schema Validator by @epoberezkin and community ",(0,r.kt)("inlineCode",{parentName:"li"},"MIT")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/kazupon/vue-i18n"},(0,r.kt)("inlineCode",{parentName:"a"},"i18n"))," - Internationalization plugin by @kazupon and community ",(0,r.kt)("inlineCode",{parentName:"li"},"MIT")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/frappe/charts"},(0,r.kt)("inlineCode",{parentName:"a"},"frappe-charts"))," - Lightweight charting library by @frappe ",(0,r.kt)("inlineCode",{parentName:"li"},"MIT"))),(0,r.kt)("h4",{id:"frontend-components"},"Frontend Components"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/sagalbot/vue-select"},(0,r.kt)("inlineCode",{parentName:"a"},"vue-select"))," - Dropdown component by @sagalbot ",(0,r.kt)("inlineCode",{parentName:"li"},"MIT")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/euvl/vue-js-modal"},(0,r.kt)("inlineCode",{parentName:"a"},"vue-js-modal"))," - Modal component by @euvl ",(0,r.kt)("inlineCode",{parentName:"li"},"MIT")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/Akryum/v-tooltip"},(0,r.kt)("inlineCode",{parentName:"a"},"v-tooltip"))," - Tooltip component by @Akryum ",(0,r.kt)("inlineCode",{parentName:"li"},"MIT")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/jairoblatt/vue-material-tabs"},(0,r.kt)("inlineCode",{parentName:"a"},"vue-material-tabs"))," - Tab view component by @jairoblatt ",(0,r.kt)("inlineCode",{parentName:"li"},"MIT")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/yansenlei/VJsoneditor"},(0,r.kt)("inlineCode",{parentName:"a"},"VJsoneditor"))," - Interactive JSON editor component by @yansenlei ",(0,r.kt)("inlineCode",{parentName:"li"},"MIT"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Forked from ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/josdejong/jsoneditor"},(0,r.kt)("inlineCode",{parentName:"a"},"JsonEditor"))," by @josdejong ",(0,r.kt)("inlineCode",{parentName:"li"},"Apache-2.0 License")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/shakee93/vue-toasted"},(0,r.kt)("inlineCode",{parentName:"a"},"vue-toasted"))," - Toast notification component by @shakee93 ",(0,r.kt)("inlineCode",{parentName:"li"},"MIT")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/saintplay/vue-swatches"},(0,r.kt)("inlineCode",{parentName:"a"},"vue-swatches"))," - Color palete picker by @saintplay ",(0,r.kt)("inlineCode",{parentName:"li"},"MIT"))),(0,r.kt)("h4",{id:"backup--sync-server"},"Backup & Sync Server"),(0,r.kt)("p",null,"Although the app is purely frontend, there is an optional cloud sync feature, for off-site backup and restore. This is built as a serverless function on ",(0,r.kt)("a",{parentName:"p",href:"https://workers.cloudflare.com/"},"Cloudflare workers")," using ",(0,r.kt)("a",{parentName:"p",href:"https://developers.cloudflare.com/workers/runtime-apis/kv"},"KV")," and ",(0,r.kt)("a",{parentName:"p",href:"https://developers.cloudflare.com/workers/runtime-apis/web-crypto"},"web crypto")),(0,r.kt)("h4",{id:"external-services"},"External Services"),(0,r.kt)("p",null,"The 1-Click deploy demo uses ",(0,r.kt)("a",{parentName:"p",href:"https://play-with-docker.com/"},"Play-with-Docker Labs"),". Code is hosted on ",(0,r.kt)("a",{parentName:"p",href:"https://github.com"},"GitHub"),", Docker images are hosted on ",(0,r.kt)("a",{parentName:"p",href:"https://hub.docker.com/"},"DockerHub"),", and the demos are hosted on ",(0,r.kt)("a",{parentName:"p",href:"https://www.netlify.com/"},"Netlify"),"."),(0,r.kt)("h4",{id:"actions"},"Actions"),(0,r.kt)("p",null,"This repo makes heavy use of ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/features/actions"},"GitHub actions")," to run automated workflows. The following base actions are totally awesome, and have been extremely useful. Full credit to their respective authors"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/butlerlogic/action-autotag"},(0,r.kt)("inlineCode",{parentName:"a"},"action-autotag"))," by @butlerlogic - Tags new versions when app version changes"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/joeizzard/action-wiki-sync"},(0,r.kt)("inlineCode",{parentName:"a"},"action-wiki-sync"))," by @joeizzard - Copies the markdown docs to the GH wiki"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/bubkoo/contributors-list"},(0,r.kt)("inlineCode",{parentName:"a"},"contributors-list"))," by @bubkoo - Generates contributors SVG"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/akhilmhdh/contributors-readme-action"},(0,r.kt)("inlineCode",{parentName:"a"},"contributors-readme-action"))," by @akhilmhdh - Inserts contributors into credits"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/eter-evans/create-pull-request"},(0,r.kt)("inlineCode",{parentName:"a"},"create-pull-request"))," by @eter-evans - Creates pull request"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/JamesIves/github-pages-deploy-action"},(0,r.kt)("inlineCode",{parentName:"a"},"github-pages-deploy-action"))," by @JamesIves - Deploy app to GH pages"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/apexskier/github-release-commenter"},(0,r.kt)("inlineCode",{parentName:"a"},"github-release-commenter"))," by @apexskier - Updates issues when fix is released"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/JamesIves/github-sponsors-readme-action"},(0,r.kt)("inlineCode",{parentName:"a"},"github-sponsors-readme-action"))," by @JamesIves - Inserts sponsors into credits"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/JasonEtco/is-sponsor-label-action"},(0,r.kt)("inlineCode",{parentName:"a"},"is-sponsor-label-action"))," by @JasonEtco - Label sponsors, for priority support"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/tomsun28/issues-translate-action"},(0,r.kt)("inlineCode",{parentName:"a"},"issues-translate-action"))," by @tomsun28 - Translates non-English issues and comments"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/sobolevn/misspell-fixer-action"},(0,r.kt)("inlineCode",{parentName:"a"},"misspell-fixer-action"))," by @sobolevn - Finds and fixes typos"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/uhyo/please-star-first"},(0,r.kt)("inlineCode",{parentName:"a"},"please-star-first"))," by @uhyo - Closes certain issues by non-stargazers"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/exercism/pr-commenter-action"},(0,r.kt)("inlineCode",{parentName:"a"},"pr-commenter-action"))," by @exercism - Adds info comments to PR based on the files changed"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/snyk/actions/node"},(0,r.kt)("inlineCode",{parentName:"a"},"snyk note"))," by @snyk - Reports vulnerabilities in the code or dependencies"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/alstr/todo-to-issue-action"},(0,r.kt)("inlineCode",{parentName:"a"},"todo-to-issue-action"))," by @alstr - Opens issues from todos in the code"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/Simek/yarn-lock-changes"},(0,r.kt)("inlineCode",{parentName:"a"},"yarn-lock-changes"))," by @Simek - Outputs dependency changes in PR")),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"you"},"You!"),(0,r.kt)("p",null,"Would you like to be listed here? Whatever your skill set, Dashy needs people like you to help support future development. Check out the ",(0,r.kt)("a",{parentName:"p",href:"/docs/contributing"},"Contributing Page")," for ways that you can get involved. Huge thank you to everyone who has already contributed! \ud83d\udc96"))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/1be78505.8bafd29f.js b/assets/js/1be78505.8bafd29f.js new file mode 100644 index 00000000..41bfcab8 --- /dev/null +++ b/assets/js/1be78505.8bafd29f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[514,608],{3616:(e,t,a)=>{a.r(t),a.d(t,{default:()=>H});var n=a(7294),i=a(3905),o=a(2263),l=a(6291),r=a(6402),s=a(7462),c=a(6010),d=a(9306),m=a(1839),u=a(3783),b=a(7898),p=a(6742),h=a(3919),E=a(5537);const f=e=>n.createElement("svg",(0,s.Z)({width:"20",height:"20","aria-hidden":"true"},e),n.createElement("g",{fill:"#7a7a7a"},n.createElement("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),n.createElement("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})));var v=a(4478),g=a(8617),C=a(4973);const k={sidebar:"sidebar_a3j0",sidebarWithHideableNavbar:"sidebarWithHideableNavbar_VlPv",sidebarHidden:"sidebarHidden_OqfG",sidebarLogo:"sidebarLogo_hmkv",menu:"menu_cyFh",menuLinkText:"menuLinkText_lRH+",menuWithAnnouncementBar:"menuWithAnnouncementBar_+O1J",collapseSidebarButton:"collapseSidebarButton_eoK2",collapseSidebarButtonIcon:"collapseSidebarButtonIcon_e+kA",sidebarMenuIcon:"sidebarMenuIcon_iZzd",sidebarMenuCloseIcon:"sidebarMenuCloseIcon_6kU2"},_=24,S=(e,t)=>"link"===e.type?(0,d.Mg)(e.href,t):"category"===e.type&&e.items.some((e=>S(e,t))),I=(0,n.memo)((function(e){let{items:t,...a}=e;return t.map(((e,t)=>n.createElement(N,(0,s.Z)({key:t,item:e},a))))}));function N(e){return"category"===e.item.type?n.createElement(Z,e):n.createElement(M,e)}function Z(e){let{item:t,onItemClick:a,collapsible:i,activePath:o,...l}=e;const{items:r,label:m}=t,u=S(t,o),b=(0,d.D9)(u),[p,h]=(0,n.useState)((()=>!!i&&(!u&&t.collapsed))),E=(0,n.useRef)(null),[f,v]=(0,n.useState)(void 0),g=function(e){void 0===e&&(e=!0),v(e?`${E.current?.scrollHeight}px`:void 0)};(0,n.useEffect)((()=>{u&&!b&&p&&h(!1)}),[u,b,p]);const C=(0,n.useCallback)((e=>{e.preventDefault(),f||g(),setTimeout((()=>h((e=>!e))),100)}),[f]);return 0===r.length?null:n.createElement("li",{className:(0,c.Z)("menu__list-item",{"menu__list-item--collapsed":p})},n.createElement("a",(0,s.Z)({className:(0,c.Z)("menu__link",{"menu__link--sublist":i,"menu__link--active":i&&u,[k.menuLinkText]:!i}),onClick:i?C:void 0,href:i?"#!":void 0},l),m),n.createElement("ul",{className:"menu__list",ref:E,style:{height:f},onTransitionEnd:()=>{p||g(!1)}},n.createElement(I,{items:r,tabIndex:p?"-1":"0",onItemClick:a,collapsible:i,activePath:o})))}function M(e){let{item:t,onItemClick:a,activePath:i,collapsible:o,...l}=e;const{href:r,label:d}=t,m=S(t,i);return n.createElement("li",{className:"menu__list-item",key:d},n.createElement(p.Z,(0,s.Z)({className:(0,c.Z)("menu__link",{"menu__link--active":m}),to:r},(0,h.Z)(r)&&{isNavLink:!0,exact:!0,onClick:a},l),(0,h.Z)(r)?d:n.createElement("span",null,d,n.createElement(g.Z,null))))}function T(e){let{onClick:t}=e;return n.createElement("button",{type:"button",title:(0,C.I)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,C.I)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,c.Z)("button button--secondary button--outline",k.collapseSidebarButton),onClick:t},n.createElement(f,{className:k.collapseSidebarButtonIcon}))}function y(e){let{responsiveSidebarOpened:t,onClick:a}=e;return n.createElement("button",{"aria-label":t?(0,C.I)({id:"theme.docs.sidebar.responsiveCloseButtonLabel",message:"Close menu",description:"The ARIA label for close button of mobile doc sidebar"}):(0,C.I)({id:"theme.docs.sidebar.responsiveOpenButtonLabel",message:"Open menu",description:"The ARIA label for open button of mobile doc sidebar"}),"aria-haspopup":"true",className:"button button--secondary button--sm menu__button",type:"button",onClick:a},t?n.createElement("span",{className:(0,c.Z)(k.sidebarMenuIcon,k.sidebarMenuCloseIcon)},"\xd7"):n.createElement(v.Z,{className:k.sidebarMenuIcon,height:_,width:_}))}const x=function(e){let{path:t,sidebar:a,sidebarCollapsible:i=!0,onCollapse:o,isHidden:l}=e;const r=function(){const{isClosed:e}=(0,d.nT)(),[t,a]=(0,n.useState)(!e);return(0,b.Z)((t=>{let{scrollY:n}=t;e||a(0===n)})),t}(),{navbar:{hideOnScroll:s},hideableSidebar:p}=(0,d.LU)(),{isClosed:h}=(0,d.nT)(),{showResponsiveSidebar:f,closeResponsiveSidebar:v,toggleResponsiveSidebar:g}=function(){const[e,t]=(0,n.useState)(!1);(0,m.Z)(e);const a=(0,u.Z)();return(0,n.useEffect)((()=>{a===u.D.desktop&&t(!1)}),[a]),{showResponsiveSidebar:e,closeResponsiveSidebar:(0,n.useCallback)((e=>{e.target.blur(),t(!1)}),[t]),toggleResponsiveSidebar:(0,n.useCallback)((()=>{t((e=>!e))}),[t])}}();return n.createElement("div",{className:(0,c.Z)(k.sidebar,{[k.sidebarWithHideableNavbar]:s,[k.sidebarHidden]:l})},s&&n.createElement(E.Z,{tabIndex:-1,className:k.sidebarLogo}),n.createElement("nav",{className:(0,c.Z)("menu","menu--responsive","thin-scrollbar",k.menu,{"menu--show":f,[k.menuWithAnnouncementBar]:!h&&r}),"aria-label":(0,C.I)({id:"theme.docs.sidebar.navAriaLabel",message:"Sidebar navigation",description:"The ARIA label for documentation menu"})},n.createElement(y,{responsiveSidebarOpened:f,onClick:g}),n.createElement("ul",{className:"menu__list"},n.createElement(I,{items:a,onItemClick:v,collapsible:i,activePath:t}))),p&&n.createElement(T,{onClick:o}))};var B=a(7933),R=a(4608),A=a(6550);const L={docPage:"docPage_lDyR",docMainContainer:"docMainContainer_r8cw",docMainContainerEnhanced:"docMainContainerEnhanced_SOUu",docSidebarContainer:"docSidebarContainer_0YBq",docSidebarContainerHidden:"docSidebarContainerHidden_Qlt2",collapsedDocSidebar:"collapsedDocSidebar_zZpm",expandSidebarButtonIcon:"expandSidebarButtonIcon_cxi8",docItemWrapperEnhanced:"docItemWrapperEnhanced_aT5H"};function w(e){let{currentDocRoute:t,versionMetadata:a,children:l}=e;const{siteConfig:s,isClient:m}=(0,o.Z)(),{pluginId:u,version:b}=a,{sidebarName:p,sidebar:h}=function(e){let{versionMetadata:t,currentDocRoute:a}=e;const{permalinkToSidebar:n,docsSidebars:i}=t,o=n[a.path]||n[(l=a.path,l.endsWith("/")?l:`${l}/`)]||n[function(e){return e.endsWith("/")?e.slice(0,-1):e}(a.path)];var l;return{sidebar:i[o],sidebarName:o}}({versionMetadata:a,currentDocRoute:t}),[E,v]=(0,n.useState)(!1),[g,k]=(0,n.useState)(!1),_=(0,n.useCallback)((()=>{g&&k(!1),v(!E)}),[g]);return n.createElement(r.Z,{key:m,wrapperClassName:d.kM.wrapper.docPages,pageClassName:d.kM.page.docPage,searchMetadatas:{version:b,tag:(0,d.os)(u,b)}},n.createElement("div",{className:L.docPage},h&&n.createElement("aside",{className:(0,c.Z)(L.docSidebarContainer,{[L.docSidebarContainerHidden]:E}),onTransitionEnd:e=>{e.currentTarget.classList.contains(L.docSidebarContainer)&&E&&k(!0)}},n.createElement(x,{key:p,sidebar:h,path:t.path,sidebarCollapsible:s.themeConfig?.sidebarCollapsible??!0,onCollapse:_,isHidden:g}),g&&n.createElement("div",{className:L.collapsedDocSidebar,title:(0,C.I)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,C.I)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:_,onClick:_},n.createElement(f,{className:L.expandSidebarButtonIcon}))),n.createElement("main",{className:(0,c.Z)(L.docMainContainer,{[L.docMainContainerEnhanced]:E||!h})},n.createElement("div",{className:(0,c.Z)("container padding-top--md padding-bottom--lg",L.docItemWrapper,{[L.docItemWrapperEnhanced]:E})},n.createElement(i.Zo,{components:B.Z},l)))))}const H=function(e){const{route:{routes:t},versionMetadata:a,location:i}=e,o=t.find((e=>(0,A.LX)(i.pathname,e)));return o?n.createElement(w,{currentDocRoute:o,versionMetadata:a},(0,l.Z)(t,{versionMetadata:a})):n.createElement(R.default,e)}},4608:(e,t,a)=>{a.r(t),a.d(t,{default:()=>l});var n=a(7294),i=a(6402),o=a(4973);const l=function(){return n.createElement(i.Z,{title:(0,o.I)({id:"theme.NotFound.title",message:"Page Not Found"})},n.createElement("main",{className:"container margin-vert--xl"},n.createElement("div",{className:"row"},n.createElement("div",{className:"col col--6 col--offset-3"},n.createElement("h1",{className:"hero__title"},n.createElement(o.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),n.createElement("p",null,n.createElement(o.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),n.createElement("p",null,n.createElement(o.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."))))))}}}]); \ No newline at end of file diff --git a/assets/js/1be78505.a984814b.js b/assets/js/1be78505.a984814b.js deleted file mode 100644 index 0e197333..00000000 --- a/assets/js/1be78505.a984814b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[514,608],{3616:function(e,t,a){a.r(t),a.d(t,{default:function(){return J}});var n=a(7294),i=a(3905),o=a(2263),r=a(6291),l=a(6402),c=a(7462),s=a(3366),d=a(6010),u=a(9306),m=a(1839),b=a(3783),p=a(7898),h=a(6742),f=a(3919),v=a(5537),E=function(e){return n.createElement("svg",(0,c.Z)({width:"20",height:"20","aria-hidden":"true"},e),n.createElement("g",{fill:"#7a7a7a"},n.createElement("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),n.createElement("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})))},C=a(4478),g=a(8617),k=a(4973),_="sidebar_a3j0",Z="sidebarWithHideableNavbar_VlPv",N="sidebarHidden_OqfG",S="sidebarLogo_hmkv",I="menu_cyFh",y="menuLinkText_lRH+",T="menuWithAnnouncementBar_+O1J",M="collapseSidebarButton_eoK2",R="collapseSidebarButtonIcon_e+kA",x="sidebarMenuIcon_iZzd",w="sidebarMenuCloseIcon_6kU2",A=["items"],P=["item","onItemClick","collapsible","activePath"],L=["item","onItemClick","activePath","collapsible"],B=function e(t,a){return"link"===t.type?(0,u.Mg)(t.href,a):"category"===t.type&&t.items.some((function(t){return e(t,a)}))},D=(0,n.memo)((function(e){var t=e.items,a=(0,s.Z)(e,A);return t.map((function(e,t){return n.createElement(H,(0,c.Z)({key:t,item:e},a))}))}));function H(e){return"category"===e.item.type?n.createElement(W,e):n.createElement(O,e)}function W(e){var t,a=e.item,i=e.onItemClick,o=e.collapsible,r=e.activePath,l=(0,s.Z)(e,P),m=a.items,b=a.label,p=B(a,r),h=(0,u.D9)(p),f=(0,n.useState)((function(){return!!o&&(!p&&a.collapsed)})),v=f[0],E=f[1],C=(0,n.useRef)(null),g=(0,n.useState)(void 0),k=g[0],_=g[1],Z=function(e){var t;void 0===e&&(e=!0),_(e?(null==(t=C.current)?void 0:t.scrollHeight)+"px":void 0)};(0,n.useEffect)((function(){p&&!h&&v&&E(!1)}),[p,h,v]);var N=(0,n.useCallback)((function(e){e.preventDefault(),k||Z(),setTimeout((function(){return E((function(e){return!e}))}),100)}),[k]);return 0===m.length?null:n.createElement("li",{className:(0,d.Z)("menu__list-item",{"menu__list-item--collapsed":v})},n.createElement("a",(0,c.Z)({className:(0,d.Z)("menu__link",(t={"menu__link--sublist":o,"menu__link--active":o&&p},t[y]=!o,t)),onClick:o?N:void 0,href:o?"#!":void 0},l),b),n.createElement("ul",{className:"menu__list",ref:C,style:{height:k},onTransitionEnd:function(){v||Z(!1)}},n.createElement(D,{items:m,tabIndex:v?"-1":"0",onItemClick:i,collapsible:o,activePath:r})))}function O(e){var t=e.item,a=e.onItemClick,i=e.activePath,o=(e.collapsible,(0,s.Z)(e,L)),r=t.href,l=t.label,u=B(t,i);return n.createElement("li",{className:"menu__list-item",key:l},n.createElement(h.Z,(0,c.Z)({className:(0,d.Z)("menu__link",{"menu__link--active":u}),to:r},(0,f.Z)(r)&&{isNavLink:!0,exact:!0,onClick:a},o),(0,f.Z)(r)?l:n.createElement("span",null,l,n.createElement(g.Z,null))))}function F(e){var t=e.onClick;return n.createElement("button",{type:"button",title:(0,k.I)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,k.I)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,d.Z)("button button--secondary button--outline",M),onClick:t},n.createElement(E,{className:R}))}function z(e){var t=e.responsiveSidebarOpened,a=e.onClick;return n.createElement("button",{"aria-label":t?(0,k.I)({id:"theme.docs.sidebar.responsiveCloseButtonLabel",message:"Close menu",description:"The ARIA label for close button of mobile doc sidebar"}):(0,k.I)({id:"theme.docs.sidebar.responsiveOpenButtonLabel",message:"Open menu",description:"The ARIA label for open button of mobile doc sidebar"}),"aria-haspopup":"true",className:"button button--secondary button--sm menu__button",type:"button",onClick:a},t?n.createElement("span",{className:(0,d.Z)(x,w)},"\xd7"):n.createElement(C.Z,{className:x,height:24,width:24}))}var U=function(e){var t,a,i=e.path,o=e.sidebar,r=e.sidebarCollapsible,l=void 0===r||r,c=e.onCollapse,s=e.isHidden,h=function(){var e=(0,u.nT)().isClosed,t=(0,n.useState)(!e),a=t[0],i=t[1];return(0,p.Z)((function(t){var a=t.scrollY;e||i(0===a)})),a}(),f=(0,u.LU)(),E=f.navbar.hideOnScroll,C=f.hideableSidebar,g=(0,u.nT)().isClosed,y=function(){var e=(0,n.useState)(!1),t=e[0],a=e[1];(0,m.Z)(t);var i=(0,b.Z)();return(0,n.useEffect)((function(){i===b.D.desktop&&a(!1)}),[i]),{showResponsiveSidebar:t,closeResponsiveSidebar:(0,n.useCallback)((function(e){e.target.blur(),a(!1)}),[a]),toggleResponsiveSidebar:(0,n.useCallback)((function(){a((function(e){return!e}))}),[a])}}(),M=y.showResponsiveSidebar,R=y.closeResponsiveSidebar,x=y.toggleResponsiveSidebar;return n.createElement("div",{className:(0,d.Z)(_,(t={},t[Z]=E,t[N]=s,t))},E&&n.createElement(v.Z,{tabIndex:-1,className:S}),n.createElement("nav",{className:(0,d.Z)("menu","menu--responsive","thin-scrollbar",I,(a={"menu--show":M},a[T]=!g&&h,a)),"aria-label":(0,k.I)({id:"theme.docs.sidebar.navAriaLabel",message:"Sidebar navigation",description:"The ARIA label for documentation menu"})},n.createElement(z,{responsiveSidebarOpened:M,onClick:x}),n.createElement("ul",{className:"menu__list"},n.createElement(D,{items:o,onItemClick:R,collapsible:l,activePath:i}))),C&&n.createElement(F,{onClick:c}))},q=a(7933),K=a(4608),Y=a(5977),j={docPage:"docPage_lDyR",docMainContainer:"docMainContainer_r8cw",docMainContainerEnhanced:"docMainContainerEnhanced_SOUu",docSidebarContainer:"docSidebarContainer_0YBq",docSidebarContainerHidden:"docSidebarContainerHidden_Qlt2",collapsedDocSidebar:"collapsedDocSidebar_zZpm",expandSidebarButtonIcon:"expandSidebarButtonIcon_cxi8",docItemWrapperEnhanced:"docItemWrapperEnhanced_aT5H"};function G(e){var t,a,r,c,s,m=e.currentDocRoute,b=e.versionMetadata,p=e.children,h=(0,o.Z)(),f=h.siteConfig,v=h.isClient,C=b.pluginId,g=b.version,_=function(e){var t,a=e.versionMetadata,n=e.currentDocRoute,i=a.permalinkToSidebar,o=a.docsSidebars,r=i[n.path]||i[(t=n.path,t.endsWith("/")?t:t+"/")]||i[function(e){return e.endsWith("/")?e.slice(0,-1):e}(n.path)];return{sidebar:o[r],sidebarName:r}}({versionMetadata:b,currentDocRoute:m}),Z=_.sidebarName,N=_.sidebar,S=(0,n.useState)(!1),I=S[0],y=S[1],T=(0,n.useState)(!1),M=T[0],R=T[1],x=(0,n.useCallback)((function(){M&&R(!1),y(!I)}),[M]);return n.createElement(l.Z,{key:v,wrapperClassName:u.kM.wrapper.docPages,pageClassName:u.kM.page.docPage,searchMetadatas:{version:g,tag:(0,u.os)(C,g)}},n.createElement("div",{className:j.docPage},N&&n.createElement("aside",{className:(0,d.Z)(j.docSidebarContainer,(t={},t[j.docSidebarContainerHidden]=I,t)),onTransitionEnd:function(e){e.currentTarget.classList.contains(j.docSidebarContainer)&&I&&R(!0)}},n.createElement(U,{key:Z,sidebar:N,path:m.path,sidebarCollapsible:null==(a=null==(r=f.themeConfig)?void 0:r.sidebarCollapsible)||a,onCollapse:x,isHidden:M}),M&&n.createElement("div",{className:j.collapsedDocSidebar,title:(0,k.I)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,k.I)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:x,onClick:x},n.createElement(E,{className:j.expandSidebarButtonIcon}))),n.createElement("main",{className:(0,d.Z)(j.docMainContainer,(c={},c[j.docMainContainerEnhanced]=I||!N,c))},n.createElement("div",{className:(0,d.Z)("container padding-top--md padding-bottom--lg",j.docItemWrapper,(s={},s[j.docItemWrapperEnhanced]=I,s))},n.createElement(i.Zo,{components:q.Z},p)))))}var J=function(e){var t=e.route.routes,a=e.versionMetadata,i=e.location,o=t.find((function(e){return(0,Y.LX)(i.pathname,e)}));return o?n.createElement(G,{currentDocRoute:o,versionMetadata:a},(0,r.Z)(t,{versionMetadata:a})):n.createElement(K.default,e)}},4608:function(e,t,a){a.r(t);var n=a(7294),i=a(6402),o=a(4973);t.default=function(){return n.createElement(i.Z,{title:(0,o.I)({id:"theme.NotFound.title",message:"Page Not Found"})},n.createElement("main",{className:"container margin-vert--xl"},n.createElement("div",{className:"row"},n.createElement("div",{className:"col col--6 col--offset-3"},n.createElement("h1",{className:"hero__title"},n.createElement(o.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),n.createElement("p",null,n.createElement(o.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),n.createElement("p",null,n.createElement(o.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."))))))}}}]); \ No newline at end of file diff --git a/assets/js/1f391b9e.3e2df21d.js b/assets/js/1f391b9e.3e2df21d.js new file mode 100644 index 00000000..a90450b2 --- /dev/null +++ b/assets/js/1f391b9e.3e2df21d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[85],{7979:(e,t,n)=>{n.r(t),n.d(t,{default:()=>d});var a=n(7294),c=n(6010),r=n(6402),l=n(3905),s=n(7933),o=n(571),i=n(9306);const m="mdxPageWrapper_eQvw";const d=function(e){const{content:t}=e,{frontMatter:n,metadata:d}=t,{title:u,description:f,wrapperClassName:p,hide_table_of_contents:E}=n,{permalink:v}=d;return a.createElement(r.Z,{title:u,description:f,permalink:v,wrapperClassName:p??i.kM.wrapper.mdxPages,pageClassName:i.kM.page.mdxPage},a.createElement("main",{className:"container container--fluid margin-vert--lg"},a.createElement("div",{className:(0,c.Z)("row",m)},a.createElement("div",{className:(0,c.Z)("col",!E&&"col--8")},a.createElement(l.Zo,{components:s.Z},a.createElement(t,null))),!E&&t.toc&&a.createElement("div",{className:"col col--2"},a.createElement(o.Z,{toc:t.toc})))))}},571:(e,t,n)=>{n.d(t,{Z:()=>i});var a=n(7294),c=n(6010);const r=function(e,t,n){const[c,r]=(0,a.useState)(void 0);(0,a.useEffect)((()=>{function a(){const a=function(){const e=Array.from(document.getElementsByClassName("anchor")),t=e.find((e=>{const{top:t}=e.getBoundingClientRect();return t>=n}));if(t){if(t.getBoundingClientRect().top>=n){return e[e.indexOf(t)-1]??t}return t}return e[e.length-1]}();if(a){let n=0,l=!1;const s=document.getElementsByClassName(e);for(;n{document.removeEventListener("scroll",a),document.removeEventListener("resize",a)}}))},l="tableOfContents_vrFS",s="table-of-contents__link";function o(e){let{toc:t,isChild:n}=e;return t.length?a.createElement("ul",{className:n?"":"table-of-contents table-of-contents__left-border"},t.map((e=>a.createElement("li",{key:e.id},a.createElement("a",{href:`#${e.id}`,className:s,dangerouslySetInnerHTML:{__html:e.value}}),a.createElement(o,{isChild:!0,toc:e.children}))))):null}const i=function(e){let{toc:t}=e;return r(s,"table-of-contents__link--active",100),a.createElement("div",{className:(0,c.Z)(l,"thin-scrollbar")},a.createElement(o,{toc:t}))}}}]); \ No newline at end of file diff --git a/assets/js/1f391b9e.da34fa01.js b/assets/js/1f391b9e.da34fa01.js deleted file mode 100644 index 34e81940..00000000 --- a/assets/js/1f391b9e.da34fa01.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[85],{7979:function(e,t,n){n.r(t),n.d(t,{default:function(){return u}});var r=n(7294),a=n(6010),l=n(6402),c=n(3905),o=n(7933),i=n(571),s=n(9306),m="mdxPageWrapper_eQvw";var u=function(e){var t=e.content,n=t.frontMatter,u=t.metadata,d=n.title,f=n.description,v=n.wrapperClassName,p=n.hide_table_of_contents,E=u.permalink;return r.createElement(l.Z,{title:d,description:f,permalink:E,wrapperClassName:null!=v?v:s.kM.wrapper.mdxPages,pageClassName:s.kM.page.mdxPage},r.createElement("main",{className:"container container--fluid margin-vert--lg"},r.createElement("div",{className:(0,a.Z)("row",m)},r.createElement("div",{className:(0,a.Z)("col",!p&&"col--8")},r.createElement(c.Zo,{components:o.Z},r.createElement(t,null))),!p&&t.toc&&r.createElement("div",{className:"col col--2"},r.createElement(i.Z,{toc:t.toc})))))}},571:function(e,t,n){n.d(t,{Z:function(){return s}});var r=n(7294),a=n(6010);var l=function(e,t,n){var a=(0,r.useState)(void 0),l=a[0],c=a[1];(0,r.useEffect)((function(){function r(){var r=function(){var e=Array.from(document.getElementsByClassName("anchor")),t=e.find((function(e){return e.getBoundingClientRect().top>=n}));if(t){if(t.getBoundingClientRect().top>=n){var r=e[e.indexOf(t)-1];return null!=r?r:t}return t}return e[e.length-1]}();if(r)for(var a=0,o=!1,i=document.getElementsByClassName(e);a=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),p=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=p(e.components);return a.createElement(l.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=p(n),h=r,m=d["".concat(l,".").concat(h)]||d[h]||u[h]||o;return n?a.createElement(m,i(i({ref:t},c),{},{components:n})):a.createElement(m,i({ref:t},c))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:r,i[1]=s;for(var p=2;p\n Options Indexes FollowSymLinks\n AllowOverride All\n Require all granted\n\n\n\n RewriteEngine On\n RewriteBase /\n RewriteRule ^index\\.html$ - [L]\n RewriteCond %{REQUEST_FILENAME} !-f\n RewriteCond %{REQUEST_FILENAME} !-d\n RewriteRule . /index.html [L]\n\n")),(0,o.kt)("p",null,"Add a ",(0,o.kt)("inlineCode",{parentName:"p"},".htaccess")," file within ",(0,o.kt)("inlineCode",{parentName:"p"},"/var/www/html/dashy/.htaccess"),", and add:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"Options -MultiViews\nRewriteEngine On\nRewriteCond %{REQUEST_FILENAME} !-f\nRewriteRule ^ index.html [QSA,L]\n")),(0,o.kt)("p",null,"Then restart Apache, with ",(0,o.kt)("inlineCode",{parentName:"p"},"sudo systemctl restart apache2")),(0,o.kt)("h3",{id:"caddy-1"},"Caddy"),(0,o.kt)("p",null,"Caddy v2"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"try_files {path} /\n")),(0,o.kt)("p",null,"Caddy v1"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"rewrite {\n regexp .*\n to {path} /\n}\n")),(0,o.kt)("h3",{id:"firebase-hosting"},"Firebase Hosting"),(0,o.kt)("p",null,"Create a file names ",(0,o.kt)("inlineCode",{parentName:"p"},"firebase.json"),", and populate it with something similar to:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},'{\n "hosting": {\n "public": "dist",\n "rewrites": [\n {\n "source": "**",\n "destination": "/index.html"\n }\n ]\n }\n}\n')),(0,o.kt)("h3",{id:"cpanel"},"cPanel"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Login to your WHM"),(0,o.kt)("li",{parentName:"ol"},"Open 'Feature Manager' on the left sidebar"),(0,o.kt)("li",{parentName:"ol"},"Under 'Manage feature list', click 'Edit'"),(0,o.kt)("li",{parentName:"ol"},"Find 'Application manager' in the list, enable it and hit 'Save'"),(0,o.kt)("li",{parentName:"ol"},"Log into your users cPanel account, and under 'Software' find 'Application Manager'"),(0,o.kt)("li",{parentName:"ol"},"Click 'Register Application', fill in the form using the path that Dashy is located, and choose a domain, and hit 'Save'"),(0,o.kt)("li",{parentName:"ol"},"The application should now show up in the list, click 'Ensure dependencies', and move the toggle switch to 'Enabled'"),(0,o.kt)("li",{parentName:"ol"},"If you need to change the port, click 'Add environmental variable', give it the name 'PORT', choose a port number and press 'Save'."),(0,o.kt)("li",{parentName:"ol"},"Dashy should now be running at your selected path an on a given port")),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"running-a-modified-version-of-the-app"},"Running a Modified Version of the App"),(0,o.kt)("p",null,"If you'd like to make any code changes to the app, and deploy your modified version, this section briefly explains how."),(0,o.kt)("p",null,"The first step is to fork the project on GitHub, and clone it to your local system. Next, install the dependencies (",(0,o.kt)("inlineCode",{parentName:"p"},"yarn"),"), and start the development server (",(0,o.kt)("inlineCode",{parentName:"p"},"yarn dev"),") and visit ",(0,o.kt)("inlineCode",{parentName:"p"},"localhost:8080")," in your browser. You can then make changes to the codebase, and see the live app update in real-time. Once you've finished, running ",(0,o.kt)("inlineCode",{parentName:"p"},"yarn build")," will build the app for production, and output the assets into ",(0,o.kt)("inlineCode",{parentName:"p"},"./dist")," which can then be deployed using a web server, CDN or the built-in Node server with ",(0,o.kt)("inlineCode",{parentName:"p"},"yarn start"),". For more info on all of this, take a look at the ",(0,o.kt)("a",{parentName:"p",href:"/docs/developing"},"Developing Docs"),". To build your own Docker container from the modified app, see ",(0,o.kt)("a",{parentName:"p",href:"#building-your-own-container"},"Building your Own Container")),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"building-your-own-container"},"Building your Own Container"),(0,o.kt)("p",null,"Similar to above, you'll first need to fork and clone Dashy to your local system, and then install dependencies."),(0,o.kt)("p",null,"Then, either use Dashy's default ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/blob/master/Dockerfile"},(0,o.kt)("inlineCode",{parentName:"a"},"Dockerfile"))," as is, or modify it according to your needs."),(0,o.kt)("p",null,"To build and deploy locally, first build the app with: ",(0,o.kt)("inlineCode",{parentName:"p"},"docker build -t dashy ."),", and then start the app with ",(0,o.kt)("inlineCode",{parentName:"p"},"docker run -p 8080:80 --name my-dashboard dashy"),". Or modify the ",(0,o.kt)("inlineCode",{parentName:"p"},"docker-compose.yml")," file, replacing ",(0,o.kt)("inlineCode",{parentName:"p"},"image: lissy93/dashy")," with ",(0,o.kt)("inlineCode",{parentName:"p"},"build: .")," and run ",(0,o.kt)("inlineCode",{parentName:"p"},"docker compose up"),"."),(0,o.kt)("p",null,"Your container should now be running, and will appear in the list when you run ",(0,o.kt)("inlineCode",{parentName:"p"},"docker container ls \u2013a"),". If you'd like to enter the container, run ",(0,o.kt)("inlineCode",{parentName:"p"},"docker exec -it [container-id] /bin/ash"),"."),(0,o.kt)("p",null,"You may wish to upload your image to a container registry for easier access. Note that if you choose to do this on a public registry, please name your container something other than just 'dashy', to avoid confusion with the official image.\nYou can push your build image, by running: ",(0,o.kt)("inlineCode",{parentName:"p"},"docker push ghcr.io/OWNER/IMAGE_NAME:latest"),". You will first need to authenticate, this can be done by running ",(0,o.kt)("inlineCode",{parentName:"p"},"echo $CR_PAT | docker login ghcr.io -u USERNAME --password-stdin"),", where ",(0,o.kt)("inlineCode",{parentName:"p"},"CR_PAT")," is an environmental variable containing a token generated from your GitHub account. For more info, see the ",(0,o.kt)("a",{parentName:"p",href:"https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry"},"Container Registry Docs"),"."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,o.kt)("hr",null))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/1f5fb0df.dad7e8d7.js b/assets/js/1f5fb0df.dad7e8d7.js new file mode 100644 index 00000000..1b0dbfe7 --- /dev/null +++ b/assets/js/1f5fb0df.dad7e8d7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[733],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),p=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=p(e.components);return a.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),u=p(n),h=r,m=u["".concat(l,".").concat(h)]||u[h]||d[h]||o;return n?a.createElement(m,i(i({ref:t},c),{},{components:n})):a.createElement(m,i({ref:t},c))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:r,i[1]=s;for(var p=2;p{n.r(t),n.d(t,{contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>l});var a=n(7462),r=(n(7294),n(3905));const o={},i="App Management",s={unversionedId:"management",id:"management",isDocsHomePage:!1,title:"App Management",description:"The following article is a primer on managing self-hosted apps. It covers everything from keeping the Dashy (or any other app) up-to-date, secure, backed up, to other topics like auto-starting, monitoring, log management, web server configuration and using custom domains.",source:"@site/docs/management.md",sourceDirName:".",slug:"/management",permalink:"/docs/management",editUrl:"https://github.com/Lissy93/dashy/edit/gh-pages/docs/docs/management.md",version:"current",frontMatter:{},sidebar:"dashySidebar",previous:{title:"Configuring",permalink:"/docs/configuring"},next:{title:"Troubleshooting",permalink:"/docs/troubleshooting"}},l=[{value:"Contents",id:"contents",children:[]},{value:"Providing Assets",id:"providing-assets",children:[]},{value:"Running Commands",id:"running-commands",children:[]},{value:"Healthchecks",id:"healthchecks",children:[]},{value:"Logs and Performance",id:"logs-and-performance",children:[]},{value:"Auto-Starting at System Boot",id:"auto-starting-at-system-boot",children:[]},{value:"Updating",id:"updating",children:[{value:"Updating Docker Container",id:"updating-docker-container",children:[]},{value:"Automatic Docker Updates",id:"automatic-docker-updates",children:[]},{value:"Updating Dashy from Source",id:"updating-dashy-from-source",children:[]}]},{value:"Backing Up",id:"backing-up",children:[{value:"Backing Up Containers",id:"backing-up-containers",children:[]},{value:"Backing Up Volumes",id:"backing-up-volumes",children:[]},{value:"Dashy-Specific Backup",id:"dashy-specific-backup",children:[]}]},{value:"Scheduling",id:"scheduling",children:[]},{value:"SSL Certificates",id:"ssl-certificates",children:[{value:"Auto-SSL",id:"auto-ssl",children:[]},{value:"Getting a Self-Signed SSL Certificate",id:"getting-a-self-signed-ssl-certificate",children:[]},{value:"Passing a Self-Signed Certificate to Dashy",id:"passing-a-self-signed-certificate-to-dashy",children:[]}]},{value:"Authentication",id:"authentication",children:[]},{value:"Managing Containers with Docker Compose",id:"managing-containers-with-docker-compose",children:[]},{value:"Passing in Environmental Variables",id:"passing-in-environmental-variables",children:[]},{value:"Setting Headers",id:"setting-headers",children:[{value:"Example Headers",id:"example-headers",children:[]}]},{value:"Remote Access",id:"remote-access",children:[{value:"WireGuard",id:"wireguard",children:[]},{value:"Reverse SSH Tunnel",id:"reverse-ssh-tunnel",children:[]},{value:"TCP Tunnel",id:"tcp-tunnel",children:[]}]},{value:"Custom Domain",id:"custom-domain",children:[{value:"Using DNS",id:"using-dns",children:[]},{value:"Using NGINX",id:"using-nginx",children:[]}]},{value:"Container Security",id:"container-security",children:[{value:"Keep Docker Up-To-Date",id:"keep-docker-up-to-date",children:[]},{value:"Set Resource Quotas",id:"set-resource-quotas",children:[]},{value:"Don't Run as Root",id:"dont-run-as-root",children:[]},{value:"Specify a User",id:"specify-a-user",children:[]},{value:"Limit capabilities",id:"limit-capabilities",children:[]},{value:"Prevent new Privilages being Added",id:"prevent-new-privilages-being-added",children:[]},{value:"Disable Inter-Container Communication",id:"disable-inter-container-communication",children:[]},{value:"Don't Expose the Docker Daemon Socket",id:"dont-expose-the-docker-daemon-socket",children:[]},{value:"Use Read-Only Volumes",id:"use-read-only-volumes",children:[]},{value:"Set the Logging Level",id:"set-the-logging-level",children:[]},{value:"Verify Image before Pulling",id:"verify-image-before-pulling",children:[]},{value:"Specify the Tag",id:"specify-the-tag",children:[]},{value:"Container Security Scanning",id:"container-security-scanning",children:[]},{value:"Registry Security",id:"registry-security",children:[]},{value:"Security Modules",id:"security-modules",children:[]}]},{value:"Web Server Configuration",id:"web-server-configuration",children:[{value:"NGINX",id:"nginx-1",children:[]},{value:"Apache",id:"apache-1",children:[]},{value:"Caddy",id:"caddy-1",children:[]},{value:"Firebase Hosting",id:"firebase-hosting",children:[]},{value:"cPanel",id:"cpanel",children:[]}]},{value:"Running a Modified Version of the App",id:"running-a-modified-version-of-the-app",children:[]},{value:"Building your Own Container",id:"building-your-own-container",children:[]}],p={toc:l},c="wrapper";function u(e){let{components:t,...n}=e;return(0,r.kt)(c,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"app-management"},"App Management"),(0,r.kt)("p",null,(0,r.kt)("em",{parentName:"p"},"The following article is a primer on managing self-hosted apps. It covers everything from keeping the Dashy (or any other app) up-to-date, secure, backed up, to other topics like auto-starting, monitoring, log management, web server configuration and using custom domains.")),(0,r.kt)("h2",{id:"contents"},"Contents"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#providing-assets"},"Providing Assets")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#running-commands"},"Running Commands")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#healthchecks"},"Healthchecks")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#logs-and-performance"},"Logs and Performance")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#auto-starting-at-system-boot"},"Auto-Starting at Boot")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#updating"},"Updating")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#backing-up"},"Backing Up")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#scheduling"},"Scheduling")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#ssl-certificates"},"SSL Certificates")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#authentication"},"Authentication")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#managing-containers-with-docker-compose"},"Managing with Compose")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#passing-in-environmental-variables"},"Environmental Variables")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#setting-headers"},"Setting Headers")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#remote-access"},"Remote Access")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#custom-domain"},"Custom Domain")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#container-security"},"Securing Containers")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#web-server-configuration"},"Web Server Configuration")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#running-a-modified-version-of-the-app"},"Running a Modified App")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#building-your-own-container"},"Building your Own Container"))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"providing-assets"},"Providing Assets"),(0,r.kt)("p",null,"Although not essential, you will most likely want to provide several assets to your running app."),(0,r.kt)("p",null,"This is easy to do using ",(0,r.kt)("a",{parentName:"p",href:"https://docs.docker.com/storage/volumes/"},"Docker Volumes"),", which lets you share a file or directory between your host system, and the container. Volumes are specified in the Docker run command, or Docker compose file, using the ",(0,r.kt)("inlineCode",{parentName:"p"},"--volume")," or ",(0,r.kt)("inlineCode",{parentName:"p"},"-v")," flags. The value of which consists of the path to the file / directory on your host system, followed by the destination path within the container. Fields are separated by a colon (",(0,r.kt)("inlineCode",{parentName:"p"},":"),"), and must be in the correct order. For example: ",(0,r.kt)("inlineCode",{parentName:"p"},"-v ~/alicia/my-local-conf.yml:/app/public/conf.yml")),(0,r.kt)("p",null,"In Dashy, commonly configured resources include:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"./public/conf.yml")," - Your main application config file"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"./public/item-icons")," - A directory containing your own icons. This allows for offline access, and better performance than fetching from a CDN"),(0,r.kt)("li",{parentName:"ul"},"Also within ",(0,r.kt)("inlineCode",{parentName:"li"},"./public")," you'll find standard website assets, including ",(0,r.kt)("inlineCode",{parentName:"li"},"favicon.ico"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"manifest.json"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"robots.txt"),", etc. There's no need to pass these in, but you can do so if you wish"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"/src/styles/user-defined-themes.scss")," - A stylesheet for applying custom CSS to your app. You can also write your own themes here.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"running-commands"},"Running Commands"),(0,r.kt)("p",null," If you're running an app in Docker, then commands will need to be passed to the container to be executed. This can be done by preceding each command with ",(0,r.kt)("inlineCode",{parentName:"p"},"docker exec -it [container-id]"),", where container ID can be found by running ",(0,r.kt)("inlineCode",{parentName:"p"},"docker ps"),". For example ",(0,r.kt)("inlineCode",{parentName:"p"},"docker exec -it 26c156c467b4 yarn build"),". You can also enter the container, with ",(0,r.kt)("inlineCode",{parentName:"p"},"docker exec -it [container-id] /bin/ash"),", and navigate around it with normal Linux commands."),(0,r.kt)("p",null," Dashy has several commands that can be used for various tasks, you can find a list of these either in the ",(0,r.kt)("a",{parentName:"p",href:"/docs/developing#project-commands"},"Developing Docs"),", or by looking at the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/blob/master/package.json#L5"},(0,r.kt)("inlineCode",{parentName:"a"},"package.json")),". These can be used by running ",(0,r.kt)("inlineCode",{parentName:"p"},"yarn [command-name]"),"."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"healthchecks"},"Healthchecks"),(0,r.kt)("p",null,"Healthchecks are configured to periodically check that Dashy is up and running correctly on the specified port. By default, the health script is called every 5 minutes, but this can be modified with the ",(0,r.kt)("inlineCode",{parentName:"p"},"--health-interval")," option. You can check the current container health with: ",(0,r.kt)("inlineCode",{parentName:"p"},'docker inspect --format "{{json .State.Health }}" [container-id]'),", and a summary of health status will show up under ",(0,r.kt)("inlineCode",{parentName:"p"},"docker ps"),". You can also manually request the current application status by running ",(0,r.kt)("inlineCode",{parentName:"p"},"docker exec -it [container-id] yarn health-check"),". You can disable healthchecks altogether by adding the ",(0,r.kt)("inlineCode",{parentName:"p"},"--no-healthcheck")," flag to your Docker run command."),(0,r.kt)("p",null,"To restart unhealthy containers automatically, check out ",(0,r.kt)("a",{parentName:"p",href:"https://hub.docker.com/r/willfarrell/autoheal/"},"Autoheal"),". This image watches for unhealthy containers, and automatically triggers a restart. (This is a stand in for Docker's ",(0,r.kt)("inlineCode",{parentName:"p"},"--exit-on-unhealthy")," that was proposed, but ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/moby/moby/pull/22719"},"not merged"),"). There's also ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/qdm12/deunhealth"},"Deunhealth"),", which is super light-weight, and doesn't require network access."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"docker run -d \\\n --name autoheal \\\n --restart=always \\\n -e AUTOHEAL_CONTAINER_LABEL=all \\\n -v /var/run/docker.sock:/var/run/docker.sock \\\n willfarrell/autoheal\n")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"logs-and-performance"},"Logs and Performance"),(0,r.kt)("h4",{id:"container-logs"},"Container Logs"),(0,r.kt)("p",null,"You can view logs for a given Docker container with ",(0,r.kt)("inlineCode",{parentName:"p"},"docker logs [container-id]"),", add the ",(0,r.kt)("inlineCode",{parentName:"p"},"--follow")," flag to stream the logs. For more info, see the ",(0,r.kt)("a",{parentName:"p",href:"https://docs.docker.com/config/containers/logging/"},"Logging Documentation"),". There's also ",(0,r.kt)("a",{parentName:"p",href:"https://dozzle.dev/"},"Dozzle"),", a useful tool, that provides a web interface where you can stream and query logs from all your running containers from a single web app."),(0,r.kt)("h4",{id:"container-performance"},"Container Performance"),(0,r.kt)("p",null,"You can check the resource usage for your running Docker containers with ",(0,r.kt)("inlineCode",{parentName:"p"},"docker stats")," or ",(0,r.kt)("inlineCode",{parentName:"p"},"docker stats [container-id]"),". For more info, see the ",(0,r.kt)("a",{parentName:"p",href:"https://docs.docker.com/engine/reference/commandline/stats/"},"Stats Documentation"),". There's also ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/google/cadvisor"},"cAdvisor"),", a useful web app for viewing and analyzing resource usage and performance of all your running containers."),(0,r.kt)("h4",{id:"management-apps"},"Management Apps"),(0,r.kt)("p",null,"You can also view logs, resource usage and other info as well as manage your entire Docker workflow in third-party Docker management apps. For example ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/portainer/portainer"},"Portainer")," an all-in-one open source management web UI for Docker and Kubernetes, or ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/jesseduffield/lazydocker"},"LazyDocker")," a terminal UI for Docker container management and monitoring."),(0,r.kt)("h4",{id:"advanced-logging-and-monitoring"},"Advanced Logging and Monitoring"),(0,r.kt)("p",null,"Docker supports using ",(0,r.kt)("a",{parentName:"p",href:"https://prometheus.io/"},"Prometheus")," to collect logs, which can then be visualized using a platform like ",(0,r.kt)("a",{parentName:"p",href:"https://grafana.com/"},"Grafana"),". For more info, see ",(0,r.kt)("a",{parentName:"p",href:"https://docs.docker.com/config/daemon/prometheus/"},"this guide"),". If you need to route your logs to a remote syslog, then consider using ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/gliderlabs/logspout"},"logspout"),". For enterprise-grade instances, there are managed services, that make monitoring container logs and metrics very easy, such as ",(0,r.kt)("a",{parentName:"p",href:"https://sematext.com/blog/docker-container-monitoring-with-sematext/"},"Sematext")," with ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/sematext/logagent-js"},"Logagent"),"."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"auto-starting-at-system-boot"},"Auto-Starting at System Boot"),(0,r.kt)("p",null,"You can use Docker's ",(0,r.kt)("a",{parentName:"p",href:"https://docs.docker.com/engine/reference/run/#restart-policies---restart"},"restart policies")," to instruct the container to start after a system reboot, or restart after a crash. Just add the ",(0,r.kt)("inlineCode",{parentName:"p"},"--restart=always")," flag to your Docker compose script or Docker run command. For more information, see the docs on ",(0,r.kt)("a",{parentName:"p",href:"https://docs.docker.com/config/containers/start-containers-automatically/"},"Starting Containers Automatically"),"."),(0,r.kt)("p",null,"For Podman, you can use ",(0,r.kt)("inlineCode",{parentName:"p"},"systemd")," to create a service that launches your container, ",(0,r.kt)("a",{parentName:"p",href:"https://podman.io/blogs/2018/09/13/systemd.html"},"the docs")," explains things further. A similar approach can be used with Docker, if you need to start containers after a reboot, but before any user interaction."),(0,r.kt)("p",null,"To restart the container after something within it has crashed, consider using ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/willfarrell/docker-autoheal"},(0,r.kt)("inlineCode",{parentName:"a"},"docker-autoheal"))," by @willfarrell, a service that monitors and restarts unhealthy containers. For more info, see the ",(0,r.kt)("a",{parentName:"p",href:"#healthchecks"},"Healthchecks")," section above."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"updating"},"Updating"),(0,r.kt)("p",null,"Dashy is under active development, so to take advantage of the latest features, you may need to update your instance every now and again."),(0,r.kt)("h3",{id:"updating-docker-container"},"Updating Docker Container"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Pull latest image: ",(0,r.kt)("inlineCode",{parentName:"li"},"docker pull lissy93/dashy:latest")),(0,r.kt)("li",{parentName:"ol"},"Kill off existing container",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Find container ID: ",(0,r.kt)("inlineCode",{parentName:"li"},"docker ps")),(0,r.kt)("li",{parentName:"ul"},"Stop container: ",(0,r.kt)("inlineCode",{parentName:"li"},"docker stop [container_id]")),(0,r.kt)("li",{parentName:"ul"},"Remove container: ",(0,r.kt)("inlineCode",{parentName:"li"},"docker rm [container_id]")))),(0,r.kt)("li",{parentName:"ol"},"Spin up new container: ",(0,r.kt)("inlineCode",{parentName:"li"},"docker run [params] lissy93/dashy"))),(0,r.kt)("h3",{id:"automatic-docker-updates"},"Automatic Docker Updates"),(0,r.kt)("p",null,"You can automate the above process using ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/containrrr/watchtower"},"Watchtower"),".\nWatchtower will watch for new versions of a given image on Docker Hub, pull down your new image, gracefully shut down your existing container and restart it with the same options that were used when it was deployed initially."),(0,r.kt)("p",null,"To get started, spin up the watchtower container:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"docker run -d \\\n --name watchtower \\\n -v /var/run/docker.sock:/var/run/docker.sock \\\n containrrr/watchtower\n")),(0,r.kt)("p",null,"For more information, see the ",(0,r.kt)("a",{parentName:"p",href:"https://containrrr.dev/watchtower/"},"Watchtower Docs")),(0,r.kt)("h3",{id:"updating-dashy-from-source"},"Updating Dashy from Source"),(0,r.kt)("p",null,"Stop your current instance of Dashy, then navigate into the source directory. Pull down the latest code, with ",(0,r.kt)("inlineCode",{parentName:"p"},"git pull origin master"),", then update dependencies with ",(0,r.kt)("inlineCode",{parentName:"p"},"yarn"),", rebuild with ",(0,r.kt)("inlineCode",{parentName:"p"},"yarn build"),", and start the server again with ",(0,r.kt)("inlineCode",{parentName:"p"},"yarn start"),"."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"backing-up"},"Backing Up"),(0,r.kt)("h3",{id:"backing-up-containers"},"Backing Up Containers"),(0,r.kt)("p",null,"You can make a backup of any running container really easily, using ",(0,r.kt)("a",{parentName:"p",href:"https://docs.docker.com/engine/reference/commandline/commit/"},(0,r.kt)("inlineCode",{parentName:"a"},"docker commit"))," and save it with ",(0,r.kt)("a",{parentName:"p",href:"https://docs.docker.com/engine/reference/commandline/export/"},(0,r.kt)("inlineCode",{parentName:"a"},"docker export")),", to do so:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"First find the container ID, you can do this with ",(0,r.kt)("inlineCode",{parentName:"li"},"docker container ls")),(0,r.kt)("li",{parentName:"ul"},"Now to create the snapshot, just run ",(0,r.kt)("inlineCode",{parentName:"li"},"docker commit -p [container-id] my-backup")),(0,r.kt)("li",{parentName:"ul"},"Finally, to save the backup locally, run ",(0,r.kt)("inlineCode",{parentName:"li"},"docker save -o ~/dashy-backup.tar my-backup")),(0,r.kt)("li",{parentName:"ul"},"If you want to push this to a container registry, run ",(0,r.kt)("inlineCode",{parentName:"li"},"docker push my-backup:latest"))),(0,r.kt)("p",null,"Note that this will not include any data in docker volumes, and the process here is a bit different. Since these files exist on your host system, if you have an existing backup solution implemented, you can incorporate and volume files within that system."),(0,r.kt)("h3",{id:"backing-up-volumes"},"Backing Up Volumes"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://github.com/offen/docker-volume-backup"},"offen/docker-volume-backup")," is a useful tool for periodic Docker volume backups, to any S3-compatible storage provider. It's run as a light-weight Docker container, and is easy to setup, and also supports GPG-encryption, email notification, and routing away older backups. "),(0,r.kt)("p",null,"To get started, create a docker-compose similar to the example below, and then start the container. For more info, check out their ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/offen/docker-volume-backup"},"documentation"),", which is very clear."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"version: '3'\nservices:\n backup:\n image: offen/docker-volume-backup:latest\n environment:\n BACKUP_CRON_EXPRESSION: \"0 * * * *\"\n BACKUP_PRUNING_PREFIX: backup-\n BACKUP_RETENTION_DAYS: 7\n AWS_BUCKET_NAME: backup-bucket\n AWS_ACCESS_KEY_ID: AKIAIOSFODNN7EXAMPLE\n AWS_SECRET_ACCESS_KEY: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\n volumes:\n - data:/backup/my-app-backup:ro\n - /var/run/docker.sock:/var/run/docker.sock:ro\nvolumes:\n data:\n")),(0,r.kt)("p",null,"It's worth noting that this process can also be done manually, using the following commands:"),(0,r.kt)("p",null,"Backup:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"docker run --rm -v some_volume:/volume -v /tmp:/backup alpine tar -cjf /backup/some_archive.tar.bz2 -C /volume ./\n")),(0,r.kt)("p",null,"Restore:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'docker run --rm -v some_volume:/volume -v /tmp:/backup alpine sh -c "rm -rf /volume/* /volume/..?* /volume/.[!.]* ; tar -C /volume/ -xjf /backup/some_archive.tar.bz2"\n')),(0,r.kt)("h3",{id:"dashy-specific-backup"},"Dashy-Specific Backup"),(0,r.kt)("p",null,"Since Dashy is open source, and freely available, providing you're configuration data is passed in as volumes, there shouldn't be any need to backup the main container. Your main config file, and any assets you're using should be kept backed up, preferably in at least two places, and you should ensure that you can easily restore from backup, if needed."),(0,r.kt)("p",null,"Dashy also has a built-in cloud backup feature, which is free for personal users, and will let you make and restore fully encrypted backups of your config directly through the UI. To learn more, see the ",(0,r.kt)("a",{parentName:"p",href:"/docs/backup-restore"},"Cloud Backup Docs")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"scheduling"},"Scheduling"),(0,r.kt)("p",null,"If you need to periodically schedule the running of a given command on Dashy (or any other container), then a useful tool for doing so it ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/mcuadros/ofelia"},"ofelia"),". This runs as a Docker container and is really useful for things like backups, logging, updating, notifications, etc. Crons are specified using Go's crontab format, and a useful tool for visualizing this is ",(0,r.kt)("a",{parentName:"p",href:"https://crontab.guru/"},"crontab.guru"),". This can also be done natively with Alpine: ",(0,r.kt)("inlineCode",{parentName:"p"},"docker run -it alpine ls /etc/periodic"),".\nI recommend combining this with ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/healthchecks/healthchecks"},"healthchecks")," for easy monitoring of jobs, and failure notifications."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"ssl-certificates"},"SSL Certificates"),(0,r.kt)("p",null,"Enabling HTTPS with an SSL certificate is recommended, especially if you are hosting Dashy anywhere other than your home. This will ensure that all traffic is encrypted in transit."),(0,r.kt)("h3",{id:"auto-ssl"},"Auto-SSL"),(0,r.kt)("p",null,"If you are using ",(0,r.kt)("a",{parentName:"p",href:"https://nginxproxymanager.com/"},"NGINX Proxy Manager"),', then SSL is supported out of the box. Once you\'ve added your proxy host and web address, then set the scheme to HTTPS, then under the SSL Tab select "Request a new SSL certificate" and follow the on-screen instructions.'),(0,r.kt)("p",null,"If you're hosting Dashy behind Cloudflare, then they offer ",(0,r.kt)("a",{parentName:"p",href:"https://www.cloudflare.com/en-gb/learning/ssl/what-is-an-ssl-certificate/"},"free and easy SSL"),"- all you need to do is enable it under the SSL/TLS tab. Or if you are using shared hosting, you may find ",(0,r.kt)("a",{parentName:"p",href:"https://www.sitepoint.com/a-guide-to-setting-up-lets-encrypt-ssl-on-shared-hosting/"},"this tutorial")," helpful. "),(0,r.kt)("h3",{id:"getting-a-self-signed-ssl-certificate"},"Getting a Self-Signed SSL Certificate"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://letsencrypt.org/docs/"},"Let's Encrypt")," is a global Certificate Authority, providing free SSL/TLS Domain Validation certificates in order to enable secure HTTPS access to your website. They have good browser/ OS ",(0,r.kt)("a",{parentName:"p",href:"https://letsencrypt.org/docs/certificate-compatibility/"},"compatibility")," with their ISRG X1 and DST CA X3 root certificates, support ",(0,r.kt)("a",{parentName:"p",href:"https://community.letsencrypt.org/t/acme-v2-production-environment-wildcards/55578"},"Wildcard issuance")," done via ACMEv2 using the DNS-01 and have ",(0,r.kt)("a",{parentName:"p",href:"https://letsencrypt.org/2020/02/19/multi-perspective-validation.html"},"Multi-Perspective Validation"),". Let's Encrypt provide ",(0,r.kt)("a",{parentName:"p",href:"https://certbot.eff.org/"},"CertBot")," an easy app for generating and setting up an SSL certificate."),(0,r.kt)("p",null,"This process can be automated, using something like the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/Valian/docker-nginx-auto-ssl"},"Docker-NGINX-Auto-SSL Container")," to generate and renew certificates when needed."),(0,r.kt)("p",null,"If you're not so comfortable on the command line, then you can use a tool like ",(0,r.kt)("a",{parentName:"p",href:"https://www.sslforfree.com/"},"SSL For Free")," or ",(0,r.kt)("a",{parentName:"p",href:"https://zerossl.com/"},"ZeroSSL")," to generate your cert. They also provide step-by-step setup instructions for most platforms."),(0,r.kt)("h3",{id:"passing-a-self-signed-certificate-to-dashy"},"Passing a Self-Signed Certificate to Dashy"),(0,r.kt)("p",null,"Once you've generated your SSL cert, you'll need to pass it to Dashy. This can be done by specifying the paths to your public and private keys using the ",(0,r.kt)("inlineCode",{parentName:"p"},"SSL_PRIV_KEY_PATH")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"SSL_PUB_KEY_PATH")," environmental variables. Or if you're using Docker, then just pass public + private SSL keys in under ",(0,r.kt)("inlineCode",{parentName:"p"},"/etc/ssl/certs/dashy-pub.pem")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"/etc/ssl/certs/dashy-priv.key")," respectively, e.g:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"docker run -d \\\n -p 8080:80 \\\n -v ~/my-private-key.key:/etc/ssl/certs/dashy-priv.key:ro \\\n -v ~/my-public-key.pem:/etc/ssl/certs/dashy-pub.pem:ro \\\n lissy93/dashy:latest\n")),(0,r.kt)("p",null,"By default the SSL port is ",(0,r.kt)("inlineCode",{parentName:"p"},"443")," within a Docker container, or ",(0,r.kt)("inlineCode",{parentName:"p"},"4001")," if running on bare metal, but you can override this with the ",(0,r.kt)("inlineCode",{parentName:"p"},"SSL_PORT")," environmental variable."),(0,r.kt)("p",null,"Once everything is setup, you can verify your site is secured using a tool like ",(0,r.kt)("a",{parentName:"p",href:"https://www.sslchecker.com/sslchecker"},"SSL Checker"),"."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"authentication"},"Authentication"),(0,r.kt)("p",null,"Dashy natively supports secure authentication using KeyCloak. There is also a Simple Auth feature that doesn't require any additional setup. Usage instructions for both, as well as alternative auth methods, has now moved to the ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"/docs/authentication"},"Authentication Docs"))," page."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"managing-containers-with-docker-compose"},"Managing Containers with Docker Compose"),(0,r.kt)("p",null,"When you have a lot of containers, it quickly becomes hard to manage with ",(0,r.kt)("inlineCode",{parentName:"p"},"docker run")," commands. The solution to this is ",(0,r.kt)("a",{parentName:"p",href:"https://docs.docker.com/compose/"},"docker compose"),", a handy tool for defining all a containers run settings in a single YAML file, and then spinning up that container with a single short command - ",(0,r.kt)("inlineCode",{parentName:"p"},"docker compose up"),". A good example of which can be seen in ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/abhilesh/self-hosted_docker_setups"},"@abhilesh's docker compose collection"),"."),(0,r.kt)("p",null,"You can use Dashy's default ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/blob/master/docker-compose.yml"},(0,r.kt)("inlineCode",{parentName:"a"},"docker-compose.yml"))," file as a template, and modify it according to your needs."),(0,r.kt)("p",null,"An example Docker compose, using the default base image from DockerHub, might look something like this:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"---\nversion: \"3.8\"\nservices:\n dashy:\n container_name: Dashy\n image: lissy93/dashy\n volumes:\n - /root/my-config.yml:/app/public/conf.yml\n ports:\n - 4000:80\n environment:\n - BASE_URL=/my-dashboard\n restart: unless-stopped\n healthcheck:\n test: ['CMD', 'node', '/app/services/healthcheck']\n interval: 1m30s\n timeout: 10s\n retries: 3\n start_period: 40s\n")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"passing-in-environmental-variables"},"Passing in Environmental Variables"),(0,r.kt)("p",null,"With Docker, you can define environmental variables under the ",(0,r.kt)("inlineCode",{parentName:"p"},"environment")," section of your Docker compose file. Environmental variables are used to configure high-level settings, usually before the config file has been read. For a list of all supported env vars in Dashy, see ",(0,r.kt)("a",{parentName:"p",href:"/docs/developing#environmental-variables"},"the developing docs"),", or the default ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/blob/master/.env"},(0,r.kt)("inlineCode",{parentName:"a"},".env"))," file."),(0,r.kt)("p",null,"A common use case, is to run Dashy under a sub-page, instead of at the root of a URL (e.g. ",(0,r.kt)("inlineCode",{parentName:"p"},"https://my-homelab.local/dashy")," instead of ",(0,r.kt)("inlineCode",{parentName:"p"},"https://dashy.my-homelab.local"),"). In this use-case, you'd specify the ",(0,r.kt)("inlineCode",{parentName:"p"},"BASE_URL")," variable in your compose file."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"environment:\n - BASE_URL=/dashy\n")),(0,r.kt)("p",null,"You can also do the same thing with the docker run command, using the ",(0,r.kt)("a",{parentName:"p",href:"https://docs.docker.com/engine/reference/commandline/run/#set-environment-variables--e---env---env-file"},(0,r.kt)("inlineCode",{parentName:"a"},"--env"))," flag.\nIf you've got many environmental variables, you might find it useful to put them in a ",(0,r.kt)("a",{parentName:"p",href:"https://docs.docker.com/compose/env-file/"},(0,r.kt)("inlineCode",{parentName:"a"},".env")," file"),". Similarly, for Docker run you can use ",(0,r.kt)("a",{parentName:"p",href:"https://docs.docker.com/engine/reference/commandline/run/#set-environment-variables--e---env---env-file"},(0,r.kt)("inlineCode",{parentName:"a"},"--env-file"))," if you'd like to pass in a file containing all your environmental variables."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"setting-headers"},"Setting Headers"),(0,r.kt)("p",null,"Any external requests made to a different origin (app/ service under a different domain) will be blocked if the correct headers are not specified. This is known as ",(0,r.kt)("a",{parentName:"p",href:"https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS"},"Cross-Origin Resource Sharing")," (CORS) and is a security feature built into modern browsers."),(0,r.kt)("p",null,"If you see a CORS error in your console, this can be easily fixed by setting the correct headers. This is not a bug with Dashy, so please don't raise it as a bug!"),(0,r.kt)("h3",{id:"example-headers"},"Example Headers"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#caddy"},"Caddy")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#nginx"},"NGINX")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#traefik"},"Tr\xe6f\u026ak")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#haproxy"},"HAProxy")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#apache"},"Apache"))),(0,r.kt)("p",null,(0,r.kt)("em",{parentName:"p"},"The following section briefly outlines how you can set headers for common web proxies/ servers. More info can be found in the documentation for the proxy that you are using, or in the ",(0,r.kt)("a",{parentName:"em",href:"https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS"},"MDN Docs"),".")),(0,r.kt)("p",null,"These examples are using:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Access-Control-Allow-Origin")," header, but depending on what type of content you are enabling, this will vary. For example, to allow a site to be loaded in an iframe (for the modal or workspace views) you would use ",(0,r.kt)("inlineCode",{parentName:"li"},"X-Frame-Options"),"."),(0,r.kt)("li",{parentName:"ul"},"The domain root (",(0,r.kt)("inlineCode",{parentName:"li"},"/"),"), if your're hosting from a sub-page, replace that with your path."),(0,r.kt)("li",{parentName:"ul"},"A wildcard (",(0,r.kt)("inlineCode",{parentName:"li"},"*"),"), which would allow access from traffic on any domain, this is discorouaged, and you should replace it with the URL where you are hosting Dashy. Note that for requests that transport sensitive info, like credentials (e.g. Keycloak login), the wildcard is ",(0,r.kt)("a",{parentName:"li",href:"https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#requests_with_credentials"},"disallowed all together")," and will be blocked.")),(0,r.kt)("h4",{id:"caddy"},"Caddy"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"See ",(0,r.kt)("a",{parentName:"p",href:"https://caddyserver.com/docs/caddyfile/directives/header"},"Caddy ",(0,r.kt)("inlineCode",{parentName:"a"},"header")," docs")," for more info.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"headers / {\n Access-Control-Allow-Origin *\n}\n")),(0,r.kt)("h4",{id:"nginx"},"NGINX"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"See ",(0,r.kt)("a",{parentName:"p",href:"https://nginx.org/en/docs/http/ngx_http_headers_module.html"},"NGINX ",(0,r.kt)("inlineCode",{parentName:"a"},"ngx_http_headers_module")," docs")," for more info.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"location / {\n add_header Access-Control-Allow-Origin *; \n}\n")),(0,r.kt)("p",null,"Note this can also be done through the UI, using NGINX Proxy Manager."),(0,r.kt)("h4",{id:"traefik"},"Traefik"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"See ",(0,r.kt)("a",{parentName:"p",href:"https://doc.traefik.io/traefik/middlewares/http/headers/#cors-headers"},"Tr\xe6f\u026ak CORS headers docs")," for more info.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'labels:\n - "traefik.http.middlewares.testheader.headers.accesscontrolallowmethods=GET,OPTIONS,PUT"\n - "traefik.http.middlewares.testheader.headers.accesscontrolalloworiginlist=https://foo.bar.org,https://example.org"\n - "traefik.http.middlewares.testheader.headers.accesscontrolmaxage=100"\n - "traefik.http.middlewares.testheader.headers.addvaryheader=true"\n')),(0,r.kt)("h4",{id:"haproxy"},"HAProxy"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"See ",(0,r.kt)("a",{parentName:"p",href:"https://www.haproxy.com/documentation/hapee/latest/traffic-routing/rewrites/rewrite-responses/"},"HAProxy Rewrite Response Docs")," for more info.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"/\n http-response add-header Access-Control-Allow-Origin *\n")),(0,r.kt)("h4",{id:"apache"},"Apache"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"See ",(0,r.kt)("a",{parentName:"p",href:"https://httpd.apache.org/docs/current/mod/mod_headers.html"},"Apache ",(0,r.kt)("inlineCode",{parentName:"a"},"mode_headers")," docs")," for more info.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'Header always set Access-Control-Allow-Origin "*"\n')),(0,r.kt)("h4",{id:"squid"},"Squid"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"See ",(0,r.kt)("a",{parentName:"p",href:"http://www2.gr.squid-cache.org/Doc/config/request_header_access/"},"Squid ",(0,r.kt)("inlineCode",{parentName:"a"},"request_header_access")," docs")," for more info.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"request_header_access Authorization allow all\n")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"remote-access"},"Remote Access"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#wireguard"},"WireGuard")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#reverse-ssh-tunnel"},"Reverse SSH Tunnel")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#tcp-tunnel"},"TCP Tunnel"))),(0,r.kt)("h3",{id:"wireguard"},"WireGuard"),(0,r.kt)("p",null,"Using a VPN is one of the easiest ways to provide secure, full access to your local network from remote locations. ",(0,r.kt)("a",{parentName:"p",href:"https://www.wireguard.com/"},"WireGuard")," is a reasonably new open source VPN protocol, that was designed with ease of use, performance and security in mind. Unlike OpenVPN, it doesn't need to recreate the tunnel whenever connection is dropped, and it's also much easier to setup, using shared keys instead. "),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Install Wireguard")," - See the ",(0,r.kt)("a",{parentName:"li",href:"https://www.wireguard.com/install/"},"Install Docs")," for download links + instructions",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"On Debian-based systems, it's ",(0,r.kt)("inlineCode",{parentName:"li"},"sudo apt install wireguard")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Generate a Private Key")," - Run ",(0,r.kt)("inlineCode",{parentName:"li"},"wg genkey")," on the Wireguard server, and copy it to somewhere safe for later"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Create Server Config")," - Open or create a file at ",(0,r.kt)("inlineCode",{parentName:"li"},"/etc/wireguard/wg0.conf")," and under ",(0,r.kt)("inlineCode",{parentName:"li"},"[Interface]")," add the following (see example below):",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Address")," - as a subnet of all desired IPs"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"PrivateKey")," - that you just generated"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ListenPort")," - Default is ",(0,r.kt)("inlineCode",{parentName:"li"},"51820"),", but can be anything"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Get Client App")," - Download the ",(0,r.kt)("a",{parentName:"li",href:"https://www.wireguard.com/install/"},"WG client app")," for your platform (Linux, Windows, MacOS, Android or iOS are all supported)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Create new Client Tunnel")," - On your client app, there should be an option to create a new tunnel, when doing so a client private key will be generated (but if not, use the ",(0,r.kt)("inlineCode",{parentName:"li"},"wg genkey")," command again), and keep it somewhere safe. A public key will also be generated, and this will go in our saver config"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Add Clients to Server Config")," - Head back to your ",(0,r.kt)("inlineCode",{parentName:"li"},"wg0.conf")," file on the server, create a ",(0,r.kt)("inlineCode",{parentName:"li"},"[Peer]")," section, and populate the following info",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"AllowedIPs")," - List of IP address inside the subnet, the client should have access to"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"PublicKey")," - The public key for the client you just generated"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Start the Server")," - You can now start the WG server, using: ",(0,r.kt)("inlineCode",{parentName:"li"},"wg-quick up wg0")," on your server"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Finish Client Setup")," - Head back to your client device, and edit the config file, leave the private key as is, and add the following fields:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"PublicKey")," - The public key of the server"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Address")," - This should match the ",(0,r.kt)("inlineCode",{parentName:"li"},"AllowedIPs")," section on the servers config file"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"DNS")," - The DNS server that'll be used when accessing the network through the VPN"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Endpoint")," - The hostname or IP + Port where your WG server is running (you may need to forward this in your firewall's settings)"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Done")," - Your clients should now be able to connect to your WG server :) Depending on your networks firewall rules, you may need to port forward the address of your WG server")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example Server Config")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-ini"},"# Server file\n[Interface]\n# Which networks does my interface belong to? Notice: /24 and /64\nAddress = 10.5.0.1/24, 2001:470:xxxx:xxxx::1/64\nPrivateKey = xxx\nListenPort = 51820\n\n# Peer 1\n[Peer]\nPublicKey = xxx\n# Which source IPs can I expect from that peer? Notice: /32 and /128\nAllowedIps = 10.5.0.35/32, 2001:470:xxxx:xxxx::746f:786f/128\n\n# Peer 2\n[Peer]\nPublicKey = xxx\n# Which source IPs can I expect from that peer? This one has a LAN which can\n# access hosts/jails without NAT.\n# Peer 2 has a single IP address inside the VPN: it's 10.5.0.25/32\nAllowedIps = 10.5.0.25/32,10.21.10.0/24,10.21.20.0/24,10.21.30.0/24,10.31.0.0/24,2001:470:xxxx:xxxx::ca:571e/128\n")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Example Client Config")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-ini"},"[Interface]\n# Which networks does my interface belong to? Notice: /24 and /64\nAddress = 10.5.0.35/24, 2001:470:xxxx:xxxx::746f:786f/64\nPrivateKey = xxx\n\n# Server\n[Peer]\nPublicKey = xxx\n# I want to route everything through the server, both IPv4 and IPv6. All IPs are\n# thus available through the Server, and I can expect packets from any IP to\n# come from that peer.\nAllowedIPs = 0.0.0.0/0, ::0/0\n# Where is the server on the internet? This is a public address. The port\n# (:51820) is the same as ListenPort in the [Interface] of the Server file above\nEndpoint = 1.2.3.4:51820\n# Usually, clients are behind NAT. to keep the connection running, keep alive.\nPersistentKeepalive = 15\n")),(0,r.kt)("p",null,"A useful tool for getting WG setup is ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/trailofbits/algo"},"Algo"),". It includes scripts and docs which cover almost all devices, platforms and clients, and has best practices implemented, and security features enabled. All of this is better explained in ",(0,r.kt)("a",{parentName:"p",href:"https://blog.trailofbits.com/2016/12/12/meet-algo-the-vpn-that-works/"},"this blog post"),"."),(0,r.kt)("h3",{id:"reverse-ssh-tunnel"},"Reverse SSH Tunnel"),(0,r.kt)("p",null,"SSH (or ",(0,r.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Secure_Shell"},"Secure Shell"),") is a secure tunnel that allows you to connect to a remote host. Unlike the VPN methods, an SSH connection does not require an intermediary, and will not be affected by your IP changing. However it only allows you to access a single service at a time. SSH was really designed for terminal access, but because of the latter mentioned benefits it's useful to setup, as a fallback option."),(0,r.kt)("p",null,"Directly SSH'ing into your home, would require you to open a port (usually 22), which would be terrible for security, and is not recommended. However a reverse SSH connection is initiated from inside your network. Once the connection is established, the port is redirected, allowing you to use the established connection to SSH into your home network. "),(0,r.kt)("p",null,"The issue you've probably spotted, is that most public, corporate, and institutional networks will block SSH connections. To overcome this, you'd have to establish a server outside of your homelab that your homelab's device could SSH into to establish the reverse SSH connection. You can then connect to that remote server (the ",(0,r.kt)("em",{parentName:"p"},"mothership"),"), which in turn connects to your home network."),(0,r.kt)("p",null,"Now all of this is starting to sound like quite a lot of work, but this is where services like ",(0,r.kt)("a",{parentName:"p",href:"https://remote.it/"},"remot3.it")," come in. They maintain the intermediary mothership server, and create the tunnel service for you. It's free for personal use, secure and easy. There are several similar services, such as ",(0,r.kt)("a",{parentName:"p",href:"https://remoteiot.com/"},"RemoteIoT"),", or you could create your own on a cloud VPS (see ",(0,r.kt)("a",{parentName:"p",href:"https://gist.github.com/nileshtrivedi/4c615e8d3c1bf053b0d31176b9e69e42"},"this tutorial")," for more info on that)."),(0,r.kt)("p",null,"Before getting started, you'll need to head over to ",(0,r.kt)("a",{parentName:"p",href:"https://app.remote.it/auth/#/sign-up"},"Remote.it")," and create an account."),(0,r.kt)("p",null,"Then setup your local device:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"If you haven't already done so, you'll need to enable and configure SSH.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"This is out-of-scope of this article, but I've explained it in detail in ",(0,r.kt)("a",{parentName:"li",href:"https://notes.aliciasykes.com/22798/my-server-setup#configure-ssh"},"this post"),"."))),(0,r.kt)("li",{parentName:"ol"},"Download the Remote.it install script from their ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/remoteit/installer"},"GitHub"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"curl -LkO https://raw.githubusercontent.com/remoteit/installer/master/scripts/auto-install.sh")))),(0,r.kt)("li",{parentName:"ol"},"Make it executable, with ",(0,r.kt)("inlineCode",{parentName:"li"},"chmod +x ./auto-install.sh"),", and then run it with ",(0,r.kt)("inlineCode",{parentName:"li"},"sudo ./auto-install.sh")),(0,r.kt)("li",{parentName:"ol"},"Finally, configure your device, by running ",(0,r.kt)("inlineCode",{parentName:"li"},"sudo connectd_installer")," and following the on-screen instructions")),(0,r.kt)("p",null,"And when you're ready to connect to it:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Login to ",(0,r.kt)("a",{parentName:"li",href:"https://app.remote.it/"},"app.remote.it"),", and select the name of your device"),(0,r.kt)("li",{parentName:"ol"},"You should see a list of running services, click SSH"),(0,r.kt)("li",{parentName:"ol"},"You'll then be presented with some SSH credentials that you can now use to securely connect to your home, via the Remote.it servers")),(0,r.kt)("p",null,"Done :)"),(0,r.kt)("h3",{id:"tcp-tunnel"},"TCP Tunnel"),(0,r.kt)("p",null,"If you're running Dashy on your local network, behind a firewall, but need to temporarily share it with someone external, this can be achieved quickly and securely using ",(0,r.kt)("a",{parentName:"p",href:"https://ngrok.com/"},"Ngrok"),". It\u2019s basically a super slick, encrypted TCP tunnel that provides an internet-accessible address that anyone use to access your local service, from anywhere."),(0,r.kt)("p",null,"To get started, ",(0,r.kt)("a",{parentName:"p",href:"https://ngrok.com/download"},"Download")," and install Ngrok for your system, then just run ",(0,r.kt)("inlineCode",{parentName:"p"},"ngrok http [port]")," (replace the port with the http port where Dashy is running, e.g. 8080). When ",(0,r.kt)("a",{parentName:"p",href:"https://ngrok.com/docs#http-local-https"},"using https"),", specify the full local url/ ip including the protocol."),(0,r.kt)("p",null,"Some Ngrok features require you to be authenticated, you can ",(0,r.kt)("a",{parentName:"p",href:"https://dashboard.ngrok.com/signup"},"create a free account")," and generate a token in ",(0,r.kt)("a",{parentName:"p",href:"https://dashboard.ngrok.com/auth/your-authtoken"},"your dashboard"),", then run ",(0,r.kt)("inlineCode",{parentName:"p"},"ngrok authtoken [token]"),". "),(0,r.kt)("p",null,"It's recommended to use authentication for any publicly accessible service. Dashy has an ",(0,r.kt)("a",{parentName:"p",href:"/docs/authentication"},"Auth")," feature built in, but an even easier method it to use the ",(0,r.kt)("a",{parentName:"p",href:"https://ngrok.com/docs#http-auth"},(0,r.kt)("inlineCode",{parentName:"a"},"-auth"))," switch. E.g. ",(0,r.kt)("inlineCode",{parentName:"p"},"ngrok http -auth=\u201dusername:password123\u201d 8080")),(0,r.kt)("p",null,"By default, your web app is assigned a randomly generated ngrok domain, but you can also use your own custom domain. Under the ",(0,r.kt)("a",{parentName:"p",href:"https://dashboard.ngrok.com/endpoints/domains"},"Domains Tab")," of your Ngrok dashboard, add your domain, and follow the CNAME instructions. You can now use your domain, with the ",(0,r.kt)("a",{parentName:"p",href:"https://ngrok.com/docs#http-custom-domains"},(0,r.kt)("inlineCode",{parentName:"a"},"-hostname"))," switch, e.g. ",(0,r.kt)("inlineCode",{parentName:"p"},"ngrok http -region=us -hostname=dashy.example.com 8080"),". If you don't have your own domain name, you can instead use a custom sub-domain (e.g. ",(0,r.kt)("inlineCode",{parentName:"p"},"alicia-dashy.ngrok.io"),"), using the ",(0,r.kt)("a",{parentName:"p",href:"https://ngrok.com/docs#custom-subdomain-names"},(0,r.kt)("inlineCode",{parentName:"a"},"-subdomain"))," switch."),(0,r.kt)("p",null,"To integrate this into your docker-compose, take a look at the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/gtriggiano/ngrok-tunnel"},"gtriggiano/ngrok-tunnel")," container."),(0,r.kt)("p",null,"There's so much more you can do with Ngrok, such as exposing a directory as a file browser, using websockets, relaying requests, rewriting headers, inspecting traffic, TLS and TCP tunnels and lots more. All or which is explained in ",(0,r.kt)("a",{parentName:"p",href:"https://ngrok.com/docs"},"the Documentation"),"."),(0,r.kt)("p",null,"It's worth noting that Ngrok isn't the only option here, other options include: ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/fatedier/frp"},"FRP"),", ",(0,r.kt)("a",{parentName:"p",href:"https://inlets.dev"},"Inlets"),", ",(0,r.kt)("a",{parentName:"p",href:"https://localtunnel.me/"},"Local Tunnel"),", ",(0,r.kt)("a",{parentName:"p",href:"https://tailscale.com/"},"TailScale"),", etc. Check out ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/anderspitman/awesome-tunneling"},"Awesome Tunneling")," for a list of alternatives."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"custom-domain"},"Custom Domain"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#using-nginx"},"Using DNS")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#using-dns"},"Using NGINX"))),(0,r.kt)("h3",{id:"using-dns"},"Using DNS"),(0,r.kt)("p",null,"For locally running services, a domain can be set up directly in the DNS records. This method is really quick and easy, and doesn't require you to purchase an actual domain. Just update your networks DNS resolver, to point your desired URL to the local IP where Dashy (or any other app) is running. For example, a line in your hosts file might look something like: ",(0,r.kt)("inlineCode",{parentName:"p"},"192.168.0.2 dashy.homelab.local"),"."),(0,r.kt)("p",null,"If you're using Pi-Hole, a similar thing can be done in the ",(0,r.kt)("inlineCode",{parentName:"p"},"/etc/dnsmasq.d/03-custom-dns.conf")," file, add a line like: ",(0,r.kt)("inlineCode",{parentName:"p"},"address=/dashy.example.com/192.168.2.0")," for each of your services."),(0,r.kt)("p",null,"If you're running OPNSense/ PfSense, then this can be done through the UI with Unbound, it's explained nicely in ",(0,r.kt)("a",{parentName:"p",href:"https://homenetworkguy.com/how-to/use-custom-domain-name-in-internal-network/"},"this article"),", by Dustin Casto. "),(0,r.kt)("h3",{id:"using-nginx"},"Using NGINX"),(0,r.kt)("p",null,"If you're using NGINX, then you can use your own domain name, with a config similar to the below example."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"upstream dashy {\n server 127.0.0.1:32400;\n}\n\nserver {\n listen 80;\n server_name dashy.mydomain.com;\n\n # Setup SSL\n ssl_certificate /var/www/mydomain/sslcert.pem;\n ssl_certificate_key /var/www/mydomain/sslkey.pem;\n ssl_protocols TLSv1 TLSv1.1 TLSv1.2;\n ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';\n ssl_session_timeout 5m;\n ssl_prefer_server_ciphers on;\n\n location / {\n proxy_pass http://dashy;\n proxy_redirect off;\n proxy_buffering off;\n proxy_set_header host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;\n }\n}\n")),(0,r.kt)("p",null,"Similarly, a basic ",(0,r.kt)("inlineCode",{parentName:"p"},"Caddyfile")," might look like:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"dashy.example.com {\n reverse_proxy / nginx:80\n}\n")),(0,r.kt)("p",null,"For more info, ",(0,r.kt)("a",{parentName:"p",href:"https://thehomelab.wiki/books/dns-reverse-proxy/page/create-domain-records-to-point-to-your-home-server-on-cloudflare-using-nginx-progy-manager"},"this guide")," on Setting up Domains with NGINX Proxy Manager and CloudFlare may be useful."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"container-security"},"Container Security"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#keep-docker-up-to-date"},"Keep Docker Up-To-Date")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#set-resource-quotas"},"Set Resource Quotas")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#dont-run-as-root"},"Don't Run as Root")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#specify-a-user"},"Specify a User")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#limit-capabilities"},"Limit Capabilities")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#prevent-new-privilages-being-added"},"Prevent new Privilages being Added")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#disable-inter-container-communication"},"Disable Inter-Container Communication")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#dont-expose-the-docker-daemon-socket"},"Don't Expose the Docker Daemon Socket")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#use-read-only-volumes"},"Use Read-Only Volumes")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#set-the-logging-level"},"Set the Logging Level")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#verify-image-before-pulling"},"Verify Image before Pulling")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#specify-the-tag"},"Specify the Tag")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#container-security-scanning"},"Container Security Scanning")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#registry-security"},"Registry Security")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#security-modules"},"Security Modules"))),(0,r.kt)("h3",{id:"keep-docker-up-to-date"},"Keep Docker Up-To-Date"),(0,r.kt)("p",null,"To prevent known container escape vulnerabilities, which typically end in escalating to root/administrator privileges, patching Docker Engine and Docker Machine is crucial. For more info, see the ",(0,r.kt)("a",{parentName:"p",href:"https://docs.docker.com/engine/install/"},"Docker Installation Docs"),"."),(0,r.kt)("h3",{id:"set-resource-quotas"},"Set Resource Quotas"),(0,r.kt)("p",null,"Docker enables you to limit resource consumption (CPU, memory, disk) on a per-container basis. This not only enhances system performance, but also prevents a compromised container from consuming a large amount of resources, in order to disrupt service or perform malicious activities. To learn more, see the ",(0,r.kt)("a",{parentName:"p",href:"https://docs.docker.com/config/containers/resource_constraints/"},"Resource Constraints Docs")),(0,r.kt)("p",null,"For example, to run Dashy with max of 1GB ram, and max of 50% of 1 CP core:\n",(0,r.kt)("inlineCode",{parentName:"p"},'docker run -d -p 8080:80 --cpus=".5" --memory="1024m" lissy93/dashy:latest')),(0,r.kt)("h3",{id:"dont-run-as-root"},"Don't Run as Root"),(0,r.kt)("p",null,"Running a container with admin privileges gives it more power than it needs, and can be abused. Dashy does not need any root privileges, and Docker by default doesn't run containers as root, so providing you don't specifically type sudo, you should be all good here."),(0,r.kt)("p",null,"Note that if you're facing permission issues on Debian-based systems, you may need to add your user to the Docker group. First create the group: ",(0,r.kt)("inlineCode",{parentName:"p"},"sudo groupadd docker"),", then add your (non-root) user: ",(0,r.kt)("inlineCode",{parentName:"p"},"sudo usermod \u2212aG docker [my-username]"),", finally ",(0,r.kt)("inlineCode",{parentName:"p"},"newgrp docker")," to refresh."),(0,r.kt)("h3",{id:"specify-a-user"},"Specify a User"),(0,r.kt)("p",null,"One of the best ways to prevent privilege escalation attacks, is to configure the container to use an unprivileged user. This also means that any files created by the container and mounted, will be owned by the specified user (and not root), which makes things much easier. "),(0,r.kt)("p",null,"You can specify a user, using the ",(0,r.kt)("a",{parentName:"p",href:"https://docs.docker.com/engine/reference/run/#user"},(0,r.kt)("inlineCode",{parentName:"a"},"--user")," param"),", and should include the user ID (",(0,r.kt)("inlineCode",{parentName:"p"},"UID"),"), which can be found by running ",(0,r.kt)("inlineCode",{parentName:"p"},"id -u"),", and the and the group ID (",(0,r.kt)("inlineCode",{parentName:"p"},"GID"),"), using ",(0,r.kt)("inlineCode",{parentName:"p"},"id -g"),"."),(0,r.kt)("p",null,"With Docker run, you specify it like:\n",(0,r.kt)("inlineCode",{parentName:"p"},"docker run --user 1000:1000 -p 8080:80 lissy93/dashy")),(0,r.kt)("p",null,"Of if you're using Docker-compose, you could use an environmental variable"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'version: "3.8"\nservices:\n dashy:\n image: lissy93/dashy\n user: ${CURRENT_UID}\n ports: [ 4000:80 ]\n')),(0,r.kt)("p",null,"And then to set the variable, and start the container, run: ",(0,r.kt)("inlineCode",{parentName:"p"},"CURRENT_UID=$(id -u):$(id -g) docker-compose up")),(0,r.kt)("h3",{id:"limit-capabilities"},"Limit capabilities"),(0,r.kt)("p",null,"Docker containers run with a subset of ",(0,r.kt)("a",{parentName:"p",href:"https://man7.org/linux/man-pages/man7/capabilities.7.html"},"Linux Kernal's Capabilities")," by default. It's good practice to drop privilege permissions that are not needed for any given container."),(0,r.kt)("p",null,"With Docker run, you can use the ",(0,r.kt)("inlineCode",{parentName:"p"},"--cap-drop")," flag to remove capabilities, you can also use ",(0,r.kt)("inlineCode",{parentName:"p"},"--cap-drop=all")," and then define just the required permissions using the ",(0,r.kt)("inlineCode",{parentName:"p"},"--cap-add")," option. For a list of available capabilities, see the ",(0,r.kt)("a",{parentName:"p",href:"https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities"},"Privilege Capabilities Docs"),"."),(0,r.kt)("p",null,"Note that dropping privileges and capabilities on runtime is not fool-proof, and often any leftover privileges can be used to re-escalate, see ",(0,r.kt)("a",{parentName:"p",href:"https://wiki.sei.cmu.edu/confluence/display/c/POS36-C.+Observe+correct+revocation+order+while+relinquishing+privileges"},"POS36-C"),"."),(0,r.kt)("p",null,"Here's an example using docker-compose, removing privileges that are not required for Dashy to run:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'version: "3.8"\nservices:\n dashy:\n image: lissy93/dashy\n ports: [ 4000:80 ]\n cap_drop:\n - ALL\n cap_add:\n - CHOWN\n - SETGID\n - SETUID\n - DAC_OVERRIDE\n - NET_BIND_SERVICE\n')),(0,r.kt)("h3",{id:"prevent-new-privilages-being-added"},"Prevent new Privilages being Added"),(0,r.kt)("p",null,"To prevent processes inside the container from getting additional privileges, pass in the ",(0,r.kt)("inlineCode",{parentName:"p"},"--security-opt=no-new-privileges:true")," option to the Docker run command (see ",(0,r.kt)("a",{parentName:"p",href:"https://docs.docker.com/engine/reference/run/#security-configuration"},"docs"),")."),(0,r.kt)("p",null,"Run Command:\n",(0,r.kt)("inlineCode",{parentName:"p"},"docker run --security-opt=no-new-privileges:true -p 8080:80 lissy93/dashy")),(0,r.kt)("p",null,"Docker Compose"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"security_opt:\n- no-new-privileges:true\n")),(0,r.kt)("h3",{id:"disable-inter-container-communication"},"Disable Inter-Container Communication"),(0,r.kt)("p",null,"By default Docker containers can talk to each other (using ",(0,r.kt)("a",{parentName:"p",href:"https://docs.docker.com/config/containers/container-networking/"},(0,r.kt)("inlineCode",{parentName:"a"},"docker0")," bridged network"),"). If you don't need this capability, then it should be disabled. This can be done with the ",(0,r.kt)("inlineCode",{parentName:"p"},"--icc=false")," in your run command. You can learn more about how to facilitate secure communication between containers in the ",(0,r.kt)("a",{parentName:"p",href:"https://docs.docker.com/compose/networking/"},"Compose Networking docs"),"."),(0,r.kt)("h3",{id:"dont-expose-the-docker-daemon-socket"},"Don't Expose the Docker Daemon Socket"),(0,r.kt)("p",null,"Docker socket ",(0,r.kt)("inlineCode",{parentName:"p"},"/var/run/docker.sock")," is the UNIX socket that Docker is listening to. This is the primary entry point for the Docker API. The owner of this socket is root. Giving someone access to it is equivalent to giving unrestricted root access to your host."),(0,r.kt)("p",null,"You should ",(0,r.kt)("strong",{parentName:"p"},"not")," enable TCP Docker daemon socket (",(0,r.kt)("inlineCode",{parentName:"p"},"-H tcp://0.0.0.0:XXX"),"), as doing so exposes un-encrypted and unauthenticated direct access to the Docker daemon, and if the host is connected to the internet, the daemon on your computer can be used by anyone from the public internet- which is bad. If you need TCP, you should ",(0,r.kt)("a",{parentName:"p",href:"https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-socket-option"},"see the docs")," to understand how to do this more securely.\nSimilarly, never expose ",(0,r.kt)("inlineCode",{parentName:"p"},"/var/run/docker.sock")," to other containers as a volume, as it can be exploited."),(0,r.kt)("h3",{id:"use-read-only-volumes"},"Use Read-Only Volumes"),(0,r.kt)("p",null,"You can specify that a specific volume should be read-only by appending ",(0,r.kt)("inlineCode",{parentName:"p"},":ro")," to the ",(0,r.kt)("inlineCode",{parentName:"p"},"-v")," switch. For example, while running Dashy, if we want our config to be writable, but keep all other assets protected, we would do:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"docker run -d \\\n -p 8080:80 \\\n -v ~/dashy-conf.yml:/app/public/conf.yml \\\n -v ~/dashy-icons:/app/public/item-icons:ro \\\n -v ~/dashy-theme.scss:/app/src/styles/user-defined-themes.scss:ro \\\n lissy93/dashy:latest\n")),(0,r.kt)("p",null,"You can also prevent a container from writing any changes to volumes on your host's disk, using the ",(0,r.kt)("inlineCode",{parentName:"p"},"--read-only")," flag. Although, for Dashy, you will not be able to write config changes to disk, when edited through the UI with this method. You could make this work, by specifying the config directory as a temp write location, with ",(0,r.kt)("inlineCode",{parentName:"p"},"--tmpfs /app/public/conf.yml")," - but that this will not write the volume back to your host."),(0,r.kt)("h3",{id:"set-the-logging-level"},"Set the Logging Level"),(0,r.kt)("p",null,"Logging is important, as it enables you to review events in the future, and in the case of a compromise this will let get an idea of what may have happened. The default log level is ",(0,r.kt)("inlineCode",{parentName:"p"},"INFO"),", and this is also the recommendation, use ",(0,r.kt)("inlineCode",{parentName:"p"},"--log-level info")," to ensure this is set."),(0,r.kt)("h3",{id:"verify-image-before-pulling"},"Verify Image before Pulling"),(0,r.kt)("p",null,"Only use trusted images, from verified/ official sources. If an app is open source, it is more likely to be safe, as anyone can verify the code. There are also tools available for scanning containers, "),(0,r.kt)("p",null,"Unless otherwise configured, containers can communicate among each other, so running one bad image may lead to other areas of your setup being compromised. Docker images typically contain both original code, as well as up-stream packages, and even if that image has come from a trusted source, the up-stream packages it includes may not have."),(0,r.kt)("h3",{id:"specify-the-tag"},"Specify the Tag"),(0,r.kt)("p",null,"Using fixed tags (as opposed to ",(0,r.kt)("inlineCode",{parentName:"p"},":latest")," ) will ensure immutability, meaning the base image will not change between builds. Note that for Dashy, the app is being actively developed, new features, bug fixes and general improvements are merged each week, and if you use a fixed version you will not enjoy these benefits. So it's up to you weather you would prefer a stable and reproducible environment, or the latest features and enhancements."),(0,r.kt)("h3",{id:"container-security-scanning"},"Container Security Scanning"),(0,r.kt)("p",null,"It's helpful to be aware of any potential security issues in any of the Docker images you are using. You can run a quick scan using Snyk on any image to output known vulnerabilities using ",(0,r.kt)("a",{parentName:"p",href:"https://docs.docker.com/engine/scan/"},"Docker scan"),", e.g: ",(0,r.kt)("inlineCode",{parentName:"p"},"docker scan lissy93/dashy:latest"),"."),(0,r.kt)("p",null,"A similar product is ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/aquasecurity/trivy"},"Trivy"),", which is free an open source. First install it (with your package manager), then to scan an image, just run: ",(0,r.kt)("inlineCode",{parentName:"p"},"trivy image lissy93/dashy:latest")),(0,r.kt)("p",null,"For larger systems, RedHat ",(0,r.kt)("a",{parentName:"p",href:"https://www.redhat.com/en/topics/containers/what-is-clair"},"Clair")," is an app for parsing image contents and reporting on any found vulnerabilities. You run it locally in a container, and configure it with YAML. It can be integrated with Red Hat Quay, to show results on a dashboard. Most of these use static analysis to find potential issues, and scan included packages for any known security vulnerabilities."),(0,r.kt)("h3",{id:"registry-security"},"Registry Security"),(0,r.kt)("p",null,"Although over-kill for most users, you could run your own registry locally which would give you ultimate control over all images, see the ",(0,r.kt)("a",{parentName:"p",href:"https://docs.docker.com/registry/deploying/"},"Deploying a Registry Docs")," for more info. Another option is ",(0,r.kt)("a",{parentName:"p",href:"https://docker-docs.netlify.app/ee/dtr/"},"Docker Trusted Registry"),", it's great for enterprise applications, it sits behind your firewall, running on a swarm managed by Docker Universal Control Plane, and lets you securely store and manage your Docker images, mitigating the risk of breaches from the internet."),(0,r.kt)("h3",{id:"security-modules"},"Security Modules"),(0,r.kt)("p",null,"Docker supports several modules that let you write your own security profiles."),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://www.apparmor.net/"},"AppArmor"),"is a kernel module that proactively protects the operating system and applications from external or internal threats, by enabling you to restrict programs' capabilities with per-program profiles. You can specify either a security policy by name, or by file path with the ",(0,r.kt)("inlineCode",{parentName:"p"},"apparmor")," flag in docker run. Learn more about writing profiles, ",(0,r.kt)("a",{parentName:"p",href:"https://gitlab.com/apparmor/apparmor/-/wikis/QuickProfileLanguage"},"here"),"."),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Seccomp"},"Seccomp")," (Secure Computing Mode) is a sandboxing facility in the Linux kernel that acts like a firewall for system calls (syscalls). It uses Berkeley Packet Filter (BPF) rules to filter syscalls and control how they are handled. These filters can significantly limit a containers access to the Docker Host\u2019s Linux kernel - especially for simple containers/applications. It requires a Linux-based Docker host, with secomp enabled, and you can check for this by running ",(0,r.kt)("inlineCode",{parentName:"p"},"docker info | grep seccomp"),". A great resource for learning more about this is ",(0,r.kt)("a",{parentName:"p",href:"https://training.play-with-docker.com/security-seccomp/"},"DockerLabs"),"."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"web-server-configuration"},"Web Server Configuration"),(0,r.kt)("p",null,(0,r.kt)("em",{parentName:"p"},"The following section only applies if you are not using Docker, and would like to use your own web server")),(0,r.kt)("p",null,"Dashy ships with a pre-configured Node.js server, in ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/blob/master/server.js"},(0,r.kt)("inlineCode",{parentName:"a"},"server.js"))," which serves up the contents of the ",(0,r.kt)("inlineCode",{parentName:"p"},"./dist")," directory on a given port. You can start the server by running ",(0,r.kt)("inlineCode",{parentName:"p"},"node server"),". Note that the app must have been build (run ",(0,r.kt)("inlineCode",{parentName:"p"},"yarn build"),"), and you need ",(0,r.kt)("a",{parentName:"p",href:"https://nodejs.org"},"Node.js")," installed."),(0,r.kt)("p",null,"If you wish to run Dashy from a sub page (e.g. ",(0,r.kt)("inlineCode",{parentName:"p"},"example.com/dashy"),"), then just set the ",(0,r.kt)("inlineCode",{parentName:"p"},"BASE_URL")," environmental variable to that page name (in this example, ",(0,r.kt)("inlineCode",{parentName:"p"},"/dashy"),"), before building the app, and the path to all assets will then resolve to the new path, instead of ",(0,r.kt)("inlineCode",{parentName:"p"},"./"),"."),(0,r.kt)("p",null,"However, since Dashy is just a static web application, it can be served with whatever server you like. The following section outlines how you can configure a web server."),(0,r.kt)("p",null,"Note, that if you choose not to use ",(0,r.kt)("inlineCode",{parentName:"p"},"server.js")," to serve up the app, you will loose access to the following features:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Loading page, while the app is building"),(0,r.kt)("li",{parentName:"ul"},"Writing config file to disk from the UI"),(0,r.kt)("li",{parentName:"ul"},"Website status indicators, and ping checks")),(0,r.kt)("p",null,"Example Configs"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#nginx"},"NGINX")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#apache"},"Apache")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#caddy"},"Caddy")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#firebase-hosting"},"Firebase")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#cpanel"},"cPanel"))),(0,r.kt)("h3",{id:"nginx-1"},"NGINX"),(0,r.kt)("p",null,"Create a new file in ",(0,r.kt)("inlineCode",{parentName:"p"},"/etc/nginx/sites-enabled/dashy")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"server {\n listen 80;\n listen [::]:80;\n\n root /var/www/dashy/html;\n index index.html;\n\n server_name your-domain.com www.your-domain.com;\n\n location / {\n try_files $uri $uri/ =404;\n }\n}\n")),(0,r.kt)("p",null,"To use HTML5 history mode (",(0,r.kt)("inlineCode",{parentName:"p"},"appConfig.routingMode: history"),"), replace the inside of the location block with: ",(0,r.kt)("inlineCode",{parentName:"p"},"try_files $uri $uri/ /index.html;"),"."),(0,r.kt)("p",null,"Then upload the build contents of Dashy's dist directory to that location.\nFor example: ",(0,r.kt)("inlineCode",{parentName:"p"},"scp -r ./dist/* [username]@[server_ip]:/var/www/dashy/html")),(0,r.kt)("h3",{id:"apache-1"},"Apache"),(0,r.kt)("p",null,"Copy Dashy's dist folder to your apache server, ",(0,r.kt)("inlineCode",{parentName:"p"},"sudo cp -r ./dashy/dist /var/www/html/dashy"),"."),(0,r.kt)("p",null,"In your Apache config, ",(0,r.kt)("inlineCode",{parentName:"p"},"/etc/apche2/apache2.conf")," add:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"\n Options Indexes FollowSymLinks\n AllowOverride All\n Require all granted\n\n\n\n RewriteEngine On\n RewriteBase /\n RewriteRule ^index\\.html$ - [L]\n RewriteCond %{REQUEST_FILENAME} !-f\n RewriteCond %{REQUEST_FILENAME} !-d\n RewriteRule . /index.html [L]\n\n")),(0,r.kt)("p",null,"Add a ",(0,r.kt)("inlineCode",{parentName:"p"},".htaccess")," file within ",(0,r.kt)("inlineCode",{parentName:"p"},"/var/www/html/dashy/.htaccess"),", and add:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"Options -MultiViews\nRewriteEngine On\nRewriteCond %{REQUEST_FILENAME} !-f\nRewriteRule ^ index.html [QSA,L]\n")),(0,r.kt)("p",null,"Then restart Apache, with ",(0,r.kt)("inlineCode",{parentName:"p"},"sudo systemctl restart apache2")),(0,r.kt)("h3",{id:"caddy-1"},"Caddy"),(0,r.kt)("p",null,"Caddy v2"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"try_files {path} /\n")),(0,r.kt)("p",null,"Caddy v1"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"rewrite {\n regexp .*\n to {path} /\n}\n")),(0,r.kt)("h3",{id:"firebase-hosting"},"Firebase Hosting"),(0,r.kt)("p",null,"Create a file names ",(0,r.kt)("inlineCode",{parentName:"p"},"firebase.json"),", and populate it with something similar to:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'{\n "hosting": {\n "public": "dist",\n "rewrites": [\n {\n "source": "**",\n "destination": "/index.html"\n }\n ]\n }\n}\n')),(0,r.kt)("h3",{id:"cpanel"},"cPanel"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Login to your WHM"),(0,r.kt)("li",{parentName:"ol"},"Open 'Feature Manager' on the left sidebar"),(0,r.kt)("li",{parentName:"ol"},"Under 'Manage feature list', click 'Edit'"),(0,r.kt)("li",{parentName:"ol"},"Find 'Application manager' in the list, enable it and hit 'Save'"),(0,r.kt)("li",{parentName:"ol"},"Log into your users cPanel account, and under 'Software' find 'Application Manager'"),(0,r.kt)("li",{parentName:"ol"},"Click 'Register Application', fill in the form using the path that Dashy is located, and choose a domain, and hit 'Save'"),(0,r.kt)("li",{parentName:"ol"},"The application should now show up in the list, click 'Ensure dependencies', and move the toggle switch to 'Enabled'"),(0,r.kt)("li",{parentName:"ol"},"If you need to change the port, click 'Add environmental variable', give it the name 'PORT', choose a port number and press 'Save'."),(0,r.kt)("li",{parentName:"ol"},"Dashy should now be running at your selected path an on a given port")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"running-a-modified-version-of-the-app"},"Running a Modified Version of the App"),(0,r.kt)("p",null,"If you'd like to make any code changes to the app, and deploy your modified version, this section briefly explains how."),(0,r.kt)("p",null,"The first step is to fork the project on GitHub, and clone it to your local system. Next, install the dependencies (",(0,r.kt)("inlineCode",{parentName:"p"},"yarn"),"), and start the development server (",(0,r.kt)("inlineCode",{parentName:"p"},"yarn dev"),") and visit ",(0,r.kt)("inlineCode",{parentName:"p"},"localhost:8080")," in your browser. You can then make changes to the codebase, and see the live app update in real-time. Once you've finished, running ",(0,r.kt)("inlineCode",{parentName:"p"},"yarn build")," will build the app for production, and output the assets into ",(0,r.kt)("inlineCode",{parentName:"p"},"./dist")," which can then be deployed using a web server, CDN or the built-in Node server with ",(0,r.kt)("inlineCode",{parentName:"p"},"yarn start"),". For more info on all of this, take a look at the ",(0,r.kt)("a",{parentName:"p",href:"/docs/developing"},"Developing Docs"),". To build your own Docker container from the modified app, see ",(0,r.kt)("a",{parentName:"p",href:"#building-your-own-container"},"Building your Own Container")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"building-your-own-container"},"Building your Own Container"),(0,r.kt)("p",null,"Similar to above, you'll first need to fork and clone Dashy to your local system, and then install dependencies."),(0,r.kt)("p",null,"Then, either use Dashy's default ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/blob/master/Dockerfile"},(0,r.kt)("inlineCode",{parentName:"a"},"Dockerfile"))," as is, or modify it according to your needs."),(0,r.kt)("p",null,"To build and deploy locally, first build the app with: ",(0,r.kt)("inlineCode",{parentName:"p"},"docker build -t dashy ."),", and then start the app with ",(0,r.kt)("inlineCode",{parentName:"p"},"docker run -p 8080:80 --name my-dashboard dashy"),". Or modify the ",(0,r.kt)("inlineCode",{parentName:"p"},"docker-compose.yml")," file, replacing ",(0,r.kt)("inlineCode",{parentName:"p"},"image: lissy93/dashy")," with ",(0,r.kt)("inlineCode",{parentName:"p"},"build: .")," and run ",(0,r.kt)("inlineCode",{parentName:"p"},"docker compose up"),"."),(0,r.kt)("p",null,"Your container should now be running, and will appear in the list when you run ",(0,r.kt)("inlineCode",{parentName:"p"},"docker container ls \u2013a"),". If you'd like to enter the container, run ",(0,r.kt)("inlineCode",{parentName:"p"},"docker exec -it [container-id] /bin/ash"),"."),(0,r.kt)("p",null,"You may wish to upload your image to a container registry for easier access. Note that if you choose to do this on a public registry, please name your container something other than just 'dashy', to avoid confusion with the official image.\nYou can push your build image, by running: ",(0,r.kt)("inlineCode",{parentName:"p"},"docker push ghcr.io/OWNER/IMAGE_NAME:latest"),". You will first need to authenticate, this can be done by running ",(0,r.kt)("inlineCode",{parentName:"p"},"echo $CR_PAT | docker login ghcr.io -u USERNAME --password-stdin"),", where ",(0,r.kt)("inlineCode",{parentName:"p"},"CR_PAT")," is an environmental variable containing a token generated from your GitHub account. For more info, see the ",(0,r.kt)("a",{parentName:"p",href:"https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry"},"Container Registry Docs"),"."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("hr",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2140bf91.875d4e01.js b/assets/js/2140bf91.875d4e01.js deleted file mode 100644 index 03847be5..00000000 --- a/assets/js/2140bf91.875d4e01.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[532],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return h}});var a=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=a.createContext({}),p=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},c=function(e){var t=p(e.components);return a.createElement(l.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=p(n),h=o,g=d["".concat(l,".").concat(h)]||d[h]||u[h]||i;return n?a.createElement(g,r(r({ref:t},c),{},{components:n})):a.createElement(g,r({ref:t},c))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,r=new Array(i);r[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:o,r[1]=s;for(var p=2;p{n.d(t,{Zo:()=>c,kt:()=>g});var a=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=a.createContext({}),p=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},c=function(e){var t=p(e.components);return a.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),u=p(n),h=o,g=u["".concat(l,".").concat(h)]||u[h]||d[h]||i;return n?a.createElement(g,r(r({ref:t},c),{},{components:n})):a.createElement(g,r({ref:t},c))}));function g(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,r=new Array(i);r[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:o,r[1]=s;for(var p=2;p{n.r(t),n.d(t,{contentTitle:()=>r,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>l});var a=n(7462),o=(n(7294),n(3905));const i={},r="Pages and Sections",s={unversionedId:"pages-and-sections",id:"pages-and-sections",isDocsHomePage:!1,title:"Pages and Sections",description:"Multi-Page Support",source:"@site/docs/pages-and-sections.md",sourceDirName:".",slug:"/pages-and-sections",permalink:"/docs/pages-and-sections",editUrl:"https://github.com/Lissy93/dashy/edit/gh-pages/docs/docs/pages-and-sections.md",version:"current",frontMatter:{},sidebar:"dashySidebar",previous:{title:"backup-restore",permalink:"/docs/backup-restore"},next:{title:"Showcase \ud83c\udf1f",permalink:"/docs/showcase"}},l=[{value:"Multi-Page Support",id:"multi-page-support",children:[{value:"Using Local Sub-Pages",id:"using-local-sub-pages",children:[]},{value:"Using Remote Sub-Pages",id:"using-remote-sub-pages",children:[]},{value:"Restrictions",id:"restrictions",children:[]}]},{value:"Sub-Items",id:"sub-items",children:[]}],p={toc:l},c="wrapper";function u(e){let{components:t,...n}=e;return(0,o.kt)(c,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"pages-and-sections"},"Pages and Sections"),(0,o.kt)("h2",{id:"multi-page-support"},"Multi-Page Support"),(0,o.kt)("p",null,"You can have additional pages within your dashboard, with each having it's own config file. The config files for sub-pages can either be stored locally, or hosted separately. A link to each additional page will be displayed in the navigation bar."),(0,o.kt)("p",null,"You can edit additional pages using the interactive editor, exactly the same was as your primary page (so long as it's local). But please save changes to one page, before you start editing the next. "),(0,o.kt)("h3",{id:"using-local-sub-pages"},"Using Local Sub-Pages"),(0,o.kt)("p",null,"To get started, create a new ",(0,o.kt)("inlineCode",{parentName:"p"},".yml")," config file for your sub-page, placing it within ",(0,o.kt)("inlineCode",{parentName:"p"},"/app/public"),". Then within your primary ",(0,o.kt)("inlineCode",{parentName:"p"},"conf.yml"),", choose a name, and specify the path to the new file."),(0,o.kt)("p",null,"For example:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-yaml"},"pages:\n- name: Networking Services\n path: 'networking.yml'\n- name: Work Stuff\n path: 'work.yml'\n")),(0,o.kt)("p",null,"If you're sub-page is located within ",(0,o.kt)("inlineCode",{parentName:"p"},"/app/public"),", then you only need to specify the filename, but if it's anywhere else, then the full path is required."),(0,o.kt)("h3",{id:"using-remote-sub-pages"},"Using Remote Sub-Pages"),(0,o.kt)("p",null,"Config files don't need to be local, you can store them anywhere, and data will be imported as sub-pages on page load."),(0,o.kt)("p",null,"For example:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-yaml"},"pages:\n- name: Getting Started\n path: 'https://snippet.host/tvcw/raw'\n- name: Homelab\n path: 'https://snippet.host/tetp/raw'\n- name: Browser Startpage\n path: 'https://snippet.host/zcom/raw'\n")),(0,o.kt)("p",null,"There are many options of how this can be used. You could store your config within a Git repository, in order to easily track and rollback changes. Or host your config on your NAS, to have it backed up with the rest of your files. Or use a hosted paste service, for example ",(0,o.kt)("a",{parentName:"p",href:"https://snippet.host/"},"snippet.host"),", which supports never-expiring CORS-enabled pastes, which can also be edited later."),(0,o.kt)("p",null,"You will obviously not be able to write updates to remote configs directly through the UI editor, but you can still make and preview changes, then use the export menu to get a copy of the new config, which can then be pasted to the remote source manually.\nThe config file must, of course be accessible from within Dashy. If your config contains sensitive info (like API keys, credentials, secret URLs, etc), take care not to expose it to the internet."),(0,o.kt)("p",null,"The following example shows creating a config, publishing it as a ",(0,o.kt)("a",{parentName:"p",href:"https://gist.github.com/"},"Gist"),", copying the URL to the raw file, and using it within your dashboard."),(0,o.kt)("p",{align:"center"},(0,o.kt)("img",{width:"700",alt:"Public config in a gist demo",src:"https://i.ibb.co/55jm3LG/how-to-use-remote-config-sub-page.gif"})),(0,o.kt)("h3",{id:"restrictions"},"Restrictions"),(0,o.kt)("p",null,"Only top-level fields supported by sub-pages are ",(0,o.kt)("inlineCode",{parentName:"p"},"pageInfo")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"sections"),". The ",(0,o.kt)("inlineCode",{parentName:"p"},"appConfig")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"pages")," will always be inherited from your main ",(0,o.kt)("inlineCode",{parentName:"p"},"conf.yml")," file. Other than that, sub-pages behave exactly the same as your default view, and can contain sections, items, widgets and page info like nav links, title and logo."),(0,o.kt)("p",null,"Note that since page paths are required by the router, they are set at build-time, not run-time, and so a rebuild (happens automatically) is required for changes to page paths to take effect (this only applies to changes to the ",(0,o.kt)("inlineCode",{parentName:"p"},"pages")," array, rebuild isn't required for editing page content)."),(0,o.kt)("h2",{id:"sub-items"},"Sub-Items"),(0,o.kt)("p",null,"A normal section will contain zero or more items, for example:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-yaml"},"- name: Coding\n icon: far fa-code\n items:\n - title: GitHub\n url: https://github.com/\n - title: StackOverflow\n url: http://stackoverflow.com/\n")),(0,o.kt)("p",null,"But items can also be grouped together, referred to as sub-items. This is useful for a group of less frequently used items, which you don't want to take up too much space, or for action buttons (",(0,o.kt)("em",{parentName:"p"},"coming soon"),")."),(0,o.kt)("p",null,"Item groups may also have an optional title."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-yaml"},"- name: Coding\n icon: far fa-code\n items:\n - title: Normal Item 1\n - title: Normal Item 2\n - subItems:\n - title: JavaScript\n url: https://developer.mozilla.org\n icon: si-javascript\n - title: TypeScript\n url: https://www.typescriptlang.org/docs\n icon: si-typescript\n - title: Svelt\n url: https://svelte.dev/docs\n icon: si-svelte\n - title: Go\n url: https://go.dev/doc\n icon: si-go\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/25b7c3f2.5efe5515.js b/assets/js/25b7c3f2.5efe5515.js new file mode 100644 index 00000000..71aeed70 --- /dev/null +++ b/assets/js/25b7c3f2.5efe5515.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[357],{1643:(e,t,a)=>{a.d(t,{Z:()=>r});var n,c=a(7294);function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t{a.d(t,{Z:()=>r});var n,c=a(7294);function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t{a.d(t,{Z:()=>r});var n,c=a(7294);function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t{a.d(t,{Z:()=>r});var n,c=a(7294);function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t{a.d(t,{Z:()=>r});var n,c=a(7294);function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t{a.d(t,{Z:()=>r});var n,c=a(7294);function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t{a.d(t,{Z:()=>r});var n=a(7294),c=a(6010),l=a(6742);function r(e){let{children:t,to:a,color:r}=e;return n.createElement(l.Z,{to:a,className:(0,c.Z)("button",r&&"color-btn",`btn-${r}`)},t)}},1070:(e,t,a)=>{a.r(t),a.d(t,{default:()=>ge});var n,c=a(7462),l=a(7294),r=a(6402),i=a(2263),s=a(1301),o=a(8305),d=a(1643),u=a(2577),v=a(9708);function h(){return h=Object.assign?Object.assign.bind():function(e){for(var t=1;tl.createElement("div",{key:t},l.createElement("h3",{className:"section-title"},t+1,". ",e.section),l.createElement("div",{className:"docs-links-section"},e.items.map(((e,a)=>l.createElement(he,(0,c.Z)({key:t+a,index:t+a},e)))))))))))}},8305:(e,t,a)=>{a.d(t,{Z:()=>n});const n=e=>{switch(e%4){case 0:return"pink";case 1:return"blue";case 2:return"green";case 3:return"yellow";default:return"white"}}}}]); \ No newline at end of file diff --git a/assets/js/25b7c3f2.911b29ed.js b/assets/js/25b7c3f2.911b29ed.js deleted file mode 100644 index 504e17c9..00000000 --- a/assets/js/25b7c3f2.911b29ed.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[357],{1643:function(e,t,r){var n,l=r(7294),a=["title","titleId"];function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(l[r]=e[r]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r])}return l}t.Z=function(e){var t=e.title,r=e.titleId,o=i(e,a);return l.createElement("svg",c({"aria-hidden":"true","data-prefix":"far","data-icon":"cloud-upload-alt",className:"features_cloud-sync_svg__svg-inline--fa features_cloud-sync_svg__fa-cloud-upload-alt features_cloud-sync_svg__fa-w-20",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 512","aria-labelledby":r},o),t?l.createElement("title",{id:r},t):null,n||(n=l.createElement("path",{fill:"currentColor",d:"M395.5 267.5l-99-99c-4.7-4.7-12.3-4.7-17 0l-99 99c-7.6 7.6-2.2 20.5 8.5 20.5h67v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-84h67c10.7 0 16.1-12.9 8.5-20.5zm148.2-67.4C539.7 142.1 491.4 96 432 96c-7.6 0-15.1.8-22.4 2.3C377.7 58.3 328.1 32 272 32c-84.6 0-155.5 59.7-172.3 139.8C39.9 196.1 0 254.4 0 320c0 88.4 71.6 160 160 160h336c79.5 0 144-64.5 144-144 0-61.8-39.2-115.8-96.3-135.9zM496 432H160c-61.9 0-112-50.1-112-112 0-56.4 41.7-103.1 96-110.9V208c0-70.7 57.3-128 128-128 53.5 0 99.3 32.8 118.4 79.4 11.2-9.6 25.7-15.4 41.6-15.4 35.3 0 64 28.7 64 64 0 11.8-3.2 22.9-8.8 32.4 2.9-.3 5.9-.4 8.8-.4 53 0 96 43 96 96s-43 96-96 96z"})))}},2577:function(e,t,r){var n,l=r(7294),a=["title","titleId"];function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(l[r]=e[r]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r])}return l}t.Z=function(e){var t=e.title,r=e.titleId,o=i(e,a);return l.createElement("svg",c({"aria-hidden":"true","data-prefix":"far","data-icon":"rocket-launch",className:"features_depoloyment_svg__svg-inline--fa features_depoloyment_svg__fa-rocket-launch features_depoloyment_svg__fa-w-16",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512","aria-labelledby":r},o),t?l.createElement("title",{id:r},t):null,n||(n=l.createElement("path",{fill:"currentColor",d:"M35.685 352.066C9.828 377.92-2.949 442.594.575 511.41c69.116 3.559 133.612-9.351 159.366-35.105 40.289-40.28 42.877-93.987 6.31-130.55-36.564-36.558-90.28-33.97-130.566 6.311zm81.633 84.032c-8.586 8.584-30.084 12.886-53.12 11.699-1.173-22.936 3.085-44.492 11.704-53.11 13.428-13.425 31.33-14.289 43.517-2.103 12.188 12.187 11.327 30.088-2.101 43.514zM505.163 19.297c-1.176-5.463-6.988-11.266-12.451-12.434C460.616 0 435.464 0 410.419 0 307.2 0 245.3 55.203 199.091 128H94.888c-16.297 0-35.6 11.924-42.888 26.498L2.578 253.297A28.4 28.4 0 00.062 264a24.008 24.008 0 0024.004 24H128.02a96.006 96.006 0 0196.014 96v104a24.008 24.008 0 0024.004 24 28.54 28.54 0 0010.703-2.516l98.748-49.406c14.56-7.285 26.474-26.564 26.474-42.844V312.797c72.588-46.313 128.02-108.406 128.02-211.094.093-25.15.093-50.3-6.819-82.406zM358.138 272.332c-25.332 16.162-7.506 6.74-99.316 52.209a144.482 144.482 0 00-71.41-71.367c45.373-91.684 35.896-73.75 52.212-99.453C286.664 79.617 337.741 48 410.42 48c17.649 0 33.541 0 51.373 2.248 2.305 18.264 2.244 34.469 2.182 51.455 0 72.27-31.653 123.299-105.836 170.629zM368.056 104a40 40 0 1040.006 40 40.02 40.02 0 00-40.006-40z"})))}},1502:function(e,t,r){var n,l=r(7294),a=["title","titleId"];function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(l[r]=e[r]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r])}return l}t.Z=function(e){var t=e.title,r=e.titleId,o=i(e,a);return l.createElement("svg",c({"aria-hidden":"true","data-prefix":"far","data-icon":"portal-enter",className:"features_launching_svg__svg-inline--fa features_launching_svg__fa-portal-enter features_launching_svg__fa-w-16",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512","aria-labelledby":r},o),t?l.createElement("title",{id:r},t):null,n||(n=l.createElement("path",{fill:"currentColor",d:"M416 0c-38.688 0-83.877 34.868-93.904 188.813l-.002-.006a88.194 88.194 0 00-64.813-60.233l-78.25-17.702a87.466 87.466 0 00-73.25 16.218l-48.375 37.358a24.008 24.008 0 1029.375 37.983l48.375-37.374a40.342 40.342 0 0133.313-7.374l14.875 3.375-35.313 87.34a55.771 55.771 0 0023 68.905l83.781 50.592a8.843 8.843 0 013.844 6.844 8.72 8.72 0 01-.312 2.203l-33.282 104.465a23.974 23.974 0 0016.47 29.671 24.996 24.996 0 006.624.922 23.987 23.987 0 0023.063-17.421l33.312-104.466a56.103 56.103 0 00-24.906-63.326l-51.844-31.296 41.938-104.794a39.094 39.094 0 016.406 12.062l13.969 45.937c7.218 23.67 28.687 39.045 53.406 39.139l48.406.156H392a23.986 23.986 0 0024-23.905c.062-13.266-10.656-23.484-23.938-23.53l-23.88-.085C370.02 132.875 390.699 48 416 48c26.51 0 48 93.122 48 207.993s-21.49 207.994-48 207.994c-21.354 0-39.428-60.46-45.66-143.996h-48.438c6.112 98.195 28.971 191.994 94.098 191.994 43.795 0 96-44.412 96-255.992C512 139.21 495.346 0 416 0zM272.156 95.997A47.999 47.999 0 10224.125 48a48.028 48.028 0 0048.031 47.998zm-146 220.853l-19.844 46.28a8.013 8.013 0 01-7.343 4.859H24a24 24 0 100 47.998h74.969a55.996 55.996 0 0051.5-33.936L164 350.442l-9.563-5.765a87.559 87.559 0 01-28.28-27.827z"})))}},9955:function(e,t,r){var n,l=r(7294),a=["title","titleId"];function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(l[r]=e[r]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r])}return l}t.Z=function(e){var t=e.title,r=e.titleId,o=i(e,a);return l.createElement("svg",c({"aria-hidden":"true","data-prefix":"far","data-icon":"keyboard",className:"features_shortcuts_svg__svg-inline--fa features_shortcuts_svg__fa-keyboard features_shortcuts_svg__fa-w-18",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512","aria-labelledby":r},o),t?l.createElement("title",{id:r},t):null,n||(n=l.createElement("path",{fill:"currentColor",d:"M528 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm8 336c0 4.411-3.589 8-8 8H48c-4.411 0-8-3.589-8-8V112c0-4.411 3.589-8 8-8h480c4.411 0 8 3.589 8 8v288zM170 270v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm-336 82v-28c0-6.627-5.373-12-12-12H82c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm384 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zM122 188v-28c0-6.627-5.373-12-12-12H82c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm-98 158v-16c0-6.627-5.373-12-12-12H180c-6.627 0-12 5.373-12 12v16c0 6.627 5.373 12 12 12h216c6.627 0 12-5.373 12-12z"})))}},9708:function(e,t,r){var n,l=r(7294),a=["title","titleId"];function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(l[r]=e[r]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r])}return l}t.Z=function(e){var t=e.title,r=e.titleId,o=i(e,a);return l.createElement("svg",c({"aria-hidden":"true","data-prefix":"far","data-icon":"tools",className:"features_ui-configuration_svg__svg-inline--fa features_ui-configuration_svg__fa-tools features_ui-configuration_svg__fa-w-16",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512","aria-labelledby":r},o),t?l.createElement("title",{id:r},t):null,n||(n=l.createElement("path",{fill:"currentColor",d:"M224 96.1v48.8l29.7 29.7c-6.8-34.8 3.5-70.3 28.5-95.3 20.3-20.3 47.2-31.2 75-31.2h1.2L301 105.3l15.1 90.6 90.6 15.1 57.3-57.3c.3 28.3-10.6 55.5-31.2 76.1-9.3 9.3-20.2 16.4-31.8 21.6 1.8 1.6 3.9 2.9 5.6 4.6l30.7 30.7c10.5-6.3 20.5-13.9 29.4-22.9 38.1-38.1 53.7-94.3 40.7-146.6C504.4 105 495 95.4 483 92c-12.2-3.4-25.2.1-34 9l-58.7 58.6-32.4-5.4-5.4-32.4 58.6-58.6c8.9-8.9 12.3-21.9 8.9-34-3.3-12.1-13-21.5-25.2-24.5-53.2-13.2-107.9 2-146.6 40.6C238 55.5 229.7 67 222.9 79.2l1.1.8v16.1zM106 454c-12.8 12.8-35.3 12.8-48.1 0-6.4-6.4-10-15-10-24 0-9.1 3.5-17.6 10-24l134.4-134.4-33.9-33.9L24 372C8.5 387.5 0 408.1 0 430s8.5 42.5 24 58 36.1 24 58 24 42.5-8.5 58-24l100.9-100.9c-9.7-15.8-15.2-33.8-15.7-52.1L106 454zm395.1-58.3L384 278.6c-23.1-23.1-57.6-27.6-85.4-13.9L192 158.1V96L64 0 0 64l96 128h62.1l106.6 106.6c-13.6 27.8-9.2 62.3 13.9 85.4l117.1 117.1c14.6 14.6 38.2 14.6 52.7 0l52.7-52.7c14.5-14.6 14.5-38.2 0-52.7z"})))}},4346:function(e,t,r){var n,l=r(7294),a=["title","titleId"];function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(l[r]=e[r]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r])}return l}t.Z=function(e){var t=e.title,r=e.titleId,o=i(e,a);return l.createElement("svg",c({"aria-hidden":"true","data-prefix":"fal","data-icon":"digital-tachograph",className:"features_widgets_svg__svg-inline--fa features_widgets_svg__fa-digital-tachograph features_widgets_svg__fa-w-20",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 512","aria-labelledby":r},o),t?l.createElement("title",{id:r},t):null,n||(n=l.createElement("path",{fill:"currentColor",d:"M608 96H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128c0-17.67-14.33-32-32-32zm0 288H32V128h576v256zM80 272h208c8.84 0 16-7.16 16-16v-80c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v80c0 8.84 7.16 16 16 16zm8-88h192v64H88v-64zM72 360h224c4.42 0 8-3.58 8-8v-8c0-4.42-3.58-8-8-8H72c-4.42 0-8 3.58-8 8v8c0 4.42 3.58 8 8 8zm272 0h224c4.42 0 8-3.58 8-8v-8c0-4.42-3.58-8-8-8H344c-4.42 0-8 3.58-8 8v8c0 4.42 3.58 8 8 8zM80 288c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8H80zm64 0c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8h-16zm64 0c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8h-16zm64 0c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8h-16z"})))}},1301:function(e,t,r){r.d(t,{Z:function(){return c}});var n=r(7294),l=r(6010),a=r(6742);function c(e){var t=e.children,r=e.to,c=e.color;return n.createElement(a.Z,{to:r,className:(0,l.Z)("button",c&&"color-btn","btn-"+c)},t)}},1070:function(e,t,r){r.r(t),r.d(t,{default:function(){return Ue}});var n,l=r(7462),a=r(7294),c=r(6402),i=r(2263),o=r(1301),s=r(8305),u=r(1643),f=r(2577),d=r(9708),v=["title","titleId"];function g(){return g=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(l[r]=e[r]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r])}return l}var h,m=function(e){var t=e.title,r=e.titleId,l=p(e,v);return a.createElement("svg",g({"aria-hidden":"true","data-prefix":"far","data-icon":"debug",className:"docs_troubleshooting_svg__svg-inline--fa docs_troubleshooting_svg__fa-debug docs_troubleshooting_svg__fa-w-16",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512","aria-labelledby":r},l),t?a.createElement("title",{id:r},t):null,n||(n=a.createElement("path",{fill:"currentColor",d:"M117.75 271a16 16 0 104.5 31.68l42.75-6.09a90.21 90.21 0 0010.81 39l-35.51 23.69a16 16 0 1017.7 26.61l37.64-25.1a87.82 87.82 0 0083.24 19.94L162.77 264.58zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.28 0-200-89.72-200-200a198.86 198.86 0 0142.81-123.25l280.44 280.44A198.86 198.86 0 01256 456zm157.19-76.75L345 311.08a89.64 89.64 0 002-14.49l42.73 6.11a16 16 0 104.5-31.68l-46.82-6.69v-24.65l46.82-6.7a16 16 0 10-4.5-31.68l-43.52 6.22a90.15 90.15 0 00-10-31.1l35.51-23.69A16 16 0 10354 126.11l-37.64 25.1a90.27 90.27 0 00-126.08 5.1l-57.5-57.5A198.86 198.86 0 01256 56c110.28 0 200 89.72 200 200a198.86 198.86 0 01-42.81 123.25z"})))},b=["title","titleId"];function y(){return y=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(l[r]=e[r]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r])}return l}var _,w=function(e){var t=e.title,r=e.titleId,n=O(e,b);return a.createElement("svg",y({"aria-hidden":"true","data-prefix":"far","data-icon":"server",className:"docs_managment_svg__svg-inline--fa docs_managment_svg__fa-server docs_managment_svg__fa-w-16",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512","aria-labelledby":r},n),t?a.createElement("title",{id:r},t):null,h||(h=a.createElement("path",{fill:"currentColor",d:"M424 400c0 13.255-10.745 24-24 24s-24-10.745-24-24 10.745-24 24-24 24 10.745 24 24zm-88-24c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm64-144c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm176-72a47.758 47.758 0 01-6.438 24A47.758 47.758 0 01512 208v96a47.758 47.758 0 01-6.438 24A47.758 47.758 0 01512 352v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96a47.758 47.758 0 016.438-24A47.758 47.758 0 010 304v-96a47.758 47.758 0 016.438-24A47.758 47.758 0 010 160V64c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v96zm-464 0h416V64H48v96zm416 48H48v96h416v-96zm0 144H48v96h416v-96zm-64-216c13.255 0 24-10.745 24-24s-10.745-24-24-24-24 10.745-24 24 10.745 24 24 24zm-64 0c13.255 0 24-10.745 24-24s-10.745-24-24-24-24 10.745-24 24 10.745 24 24 24z"})))},j=["title","titleId"];function z(){return z=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(l[r]=e[r]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r])}return l}var x,C=function(e){var t=e.title,r=e.titleId,n=E(e,j);return a.createElement("svg",z({"aria-hidden":"true","data-prefix":"far","data-icon":"laptop-code",className:"docs_developing_svg__svg-inline--fa docs_developing_svg__fa-laptop-code docs_developing_svg__fa-w-20",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 512","aria-labelledby":r},n),t?a.createElement("title",{id:r},t):null,_||(_=a.createElement("path",{fill:"currentColor",d:"M624 352h-48V64c0-35.2-28.8-64-64-64H128C92.8 0 64 28.8 64 64v288H16c-8.8 0-16 7.2-16 16v48c0 52.8 43.2 96 96 96h448c52.8 0 96-43.2 96-96v-48c0-8.8-7.2-16-16-16zM112 64c0-8.67 7.33-16 16-16h384c8.67 0 16 7.33 16 16v288H112V64zm480 352c0 26.47-21.53 48-48 48H96c-26.47 0-48-21.53-48-48v-16h180.9c5.57 9.39 15.38 16 27.1 16h128c11.72 0 21.52-6.61 27.1-16H592v16zM277.66 261.65l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.34 58.34c6.25 6.25 16.39 6.25 22.64 0zm73.38-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63z"})))},k=["title","titleId"];function I(){return I=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(l[r]=e[r]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r])}return l}var P,H=function(e){var t=e.title,r=e.titleId,n=M(e,k);return a.createElement("svg",I({"aria-hidden":"true","data-prefix":"far","data-icon":"graduation-cap",className:"docs_guides_svg__svg-inline--fa docs_guides_svg__fa-graduation-cap docs_guides_svg__fa-w-20",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 512","aria-labelledby":r},n),t?a.createElement("title",{id:r},t):null,x||(x=a.createElement("path",{fill:"currentColor",d:"M606.72 147.91l-258-79.57c-18.81-5.78-38.62-5.78-57.44 0l-258 79.57C13.38 154.05 0 171.77 0 192.02s13.38 37.97 33.28 44.11l22.64 6.98c-2.46 5.19-4.4 10.62-5.7 16.31C39.53 264.6 32 275.33 32 288.01c0 10.78 5.68 19.85 13.86 25.65L20.33 428.53C18.11 438.52 25.71 448 35.95 448h56.11c10.24 0 17.84-9.48 15.62-19.47L82.14 313.66c8.17-5.8 13.86-14.87 13.86-25.65 0-10.6-5.49-19.54-13.43-25.36 1.13-3.55 2.96-6.67 4.85-9.83l54.87 16.92L128 384c0 35.34 85.96 64 192 64s192-28.65 192-64l-14.28-114.26 109-33.62c19.91-6.14 33.28-23.86 33.28-44.11s-13.38-37.96-33.28-44.1zM462.44 374.47c-59.7 34.2-225.9 33.78-284.87 0l11.3-90.36 102.42 31.59c11.15 3.43 32.24 7.77 57.44 0l102.42-31.59 11.29 90.36zM334.59 269.82c-9.44 2.91-19.75 2.91-29.19 0L154.62 223.3l168.31-31.56c8.69-1.62 14.41-9.98 12.78-18.67-1.62-8.72-10.09-14.36-18.66-12.76l-203.78 38.2c-6.64 1.24-12.8 3.54-18.71 6.27L53.19 192l252.22-77.79c9.44-2.91 19.75-2.91 29.19 0l252.22 77.82-252.23 77.79z"})))},S=["title","titleId"];function L(){return L=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(l[r]=e[r]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r])}return l}var N,A=function(e){var t=e.title,r=e.titleId,n=V(e,S);return a.createElement("svg",L({"aria-hidden":"true","data-prefix":"far","data-icon":"heart-circle",className:"docs_contributing_svg__svg-inline--fa docs_contributing_svg__fa-heart-circle docs_contributing_svg__fa-w-16",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 496 512","aria-labelledby":r},n),t?a.createElement("title",{id:r},t):null,P||(P=a.createElement("path",{fill:"currentColor",d:"M361.8 162.8c-38.3-32.8-89-17.8-113.8 7.8-24.8-25.6-75.5-40.6-113.8-7.8-42.4 36.2-36.1 95.2-6 126.3l98.7 102c13 13.4 32.5 10.2 42.4 0l98.7-102c29.9-31.1 36.2-90.1-6.2-126.3zm-27.7 92.7l-86.1 89-86.1-89.1c-13-13.5-16.2-39.7 2.7-55.9 14.1-12 36.1-9 49.3 4.7l34.1 35.4 34.1-35.4c13.2-13.7 35.3-16.7 49.3-4.7 18.9 16.2 15.8 42.5 2.7 56zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200z"})))},B=["title","titleId"];function Z(){return Z=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(l[r]=e[r]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r])}return l}var q,G=function(e){var t=e.title,r=e.titleId,n=D(e,B);return a.createElement("svg",Z({"aria-hidden":"true","data-prefix":"far","data-icon":"projector",className:"docs_showcase_svg__svg-inline--fa docs_showcase_svg__fa-projector docs_showcase_svg__fa-w-20",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 512","aria-labelledby":r},n),t?a.createElement("title",{id:r},t):null,N||(N=a.createElement("path",{fill:"currentColor",d:"M307.72 133.65a16 16 0 0022.63 0l11.31-11.31a16 16 0 000-22.62l-67.88-67.89a16 16 0 00-22.63 0l-11.31 11.31a16 16 0 000 22.63zM408 128h16a16 16 0 0016-16V16a16 16 0 00-16-16h-16a16 16 0 00-16 16v96a16 16 0 0016 16zm93.65 5.65a16 16 0 0022.63 0l67.88-67.88a16 16 0 000-22.63l-11.31-11.31a16 16 0 00-22.63 0l-67.88 67.89a16 16 0 000 22.62zM112 296a24 24 0 1024 24 24 24 0 00-24-24zm480-104H480.58c-19.51-9.89-41.25-16-64.58-16s-45.07 6.11-64.58 16H48a48 48 0 00-48 48v160a48 48 0 0048 48h16l13 51.88A16 16 0 0092.49 512h23A16 16 0 00131 499.88L144 448h207.42c19.51 9.89 41.25 16 64.58 16s45.07-6.11 64.58-16H496l13 51.88A16 16 0 00524.49 512h23A16 16 0 00563 499.88L576 448h16a48 48 0 0048-48V240a48 48 0 00-48-48zM296.38 400H48V240h248.38a143.45 143.45 0 000 160zM416 416a96 96 0 1196-96 96.14 96.14 0 01-96 96zm176-16h-56.38a143.45 143.45 0 000-160H592zM176 296a24 24 0 1024 24 24 24 0 00-24-24z"})))},R=["title","titleId"];function T(){return T=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(l[r]=e[r]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r])}return l}var W,Q=function(e){var t=e.title,r=e.titleId,n=F(e,R);return a.createElement("svg",T({"aria-hidden":"true","data-prefix":"far","data-icon":"trophy-alt",className:"docs_credits_svg__svg-inline--fa docs_credits_svg__fa-trophy-alt docs_credits_svg__fa-w-18",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512","aria-labelledby":r},n),t?a.createElement("title",{id:r},t):null,q||(q=a.createElement("path",{fill:"currentColor",d:"M359.3 138.9l-43.4-6.3-19.4-39.3c-3.5-7-13.5-7.1-17 0l-19.4 39.3-43.4 6.3c-7.8 1.1-10.9 10.7-5.3 16.2l31.4 30.6-7.4 43.2c-1.3 7.7 6.8 13.7 13.8 10l38.8-20.4 38.8 20.4c6.9 3.6 15.1-2.2 13.8-10l-7.4-43.2 31.4-30.6c5.6-5.5 2.5-15.1-5.3-16.2zM448 64V16c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16v48H16C7.2 64 0 71.2 0 80v60.8C0 201.1 68.3 266 159.6 283.4c27.4 57.9 68.1 88.2 104.4 97.4V464h-64c-22.1 0-40 17.9-40 40 0 4.4 3.6 8 8 8h240c4.4 0 8-3.6 8-8 0-22.1-17.9-40-40-40h-64v-83.2c36.3-9.3 77-39.5 104.4-97.4C507.5 266.1 576 201.2 576 140.8V80c0-8.8-7.2-16-16-16H448zM48 140.8V112h80c0 39.2 2.1 76.2 12.3 116.8-55.1-18.9-92.3-58.9-92.3-88zM288 336c-53 0-112-78.4-112-216V48h224v72c0 140.5-60.8 216-112 216zm240-195.2c0 29.1-37.2 69.1-92.3 88C445.9 188.2 448 151.1 448 112h80v28.8z"})))},U=["title","titleId"];function J(){return J=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(l[r]=e[r]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r])}return l}var X,Y=function(e){var t=e.title,r=e.titleId,n=K(e,U);return a.createElement("svg",J({"aria-hidden":"true","data-prefix":"far","data-icon":"user-shield",className:"docs_authentication_svg__svg-inline--fa docs_authentication_svg__fa-user-shield docs_authentication_svg__fa-w-20",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 512","aria-labelledby":r},n),t?a.createElement("title",{id:r},t):null,W||(W=a.createElement("path",{fill:"currentColor",d:"M622.3 271.1l-115.2-45c-4.1-1.6-12.6-3.7-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9 9.6 3.7 18 1.6 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8zM356.2 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 47.1 0 70.9-13.5 85.4-15.5-2.9-15.2-4.6-31-5.1-47.5-25.6 3.2-39.5 15-80.4 15-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h351.3c-15.5-13.7-30.2-29.7-43.1-48zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z"})))},$=r(4346),ee=["title","titleId"];function te(){return te=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(l[r]=e[r]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r])}return l}var ne,le=function(e){var t=e.title,r=e.titleId,n=re(e,ee);return a.createElement("svg",te({"aria-hidden":"true","data-prefix":"far","data-icon":"icons",className:"docs_icons_svg__svg-inline--fa docs_icons_svg__fa-icons docs_icons_svg__fa-w-16",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512","aria-labelledby":r},n),t?a.createElement("title",{id:r},t):null,X||(X=a.createElement("path",{fill:"currentColor",d:"M144 343.78a48 48 0 1048 48 48 48 0 00-48-48zM101.74 213a37 37 0 0052.36 0l78.56-78.44A79.06 79.06 0 00227 17.49c-28.08-23.13-69.54-22.82-99-.86-29.45-22-71-22.3-99.05.89a79.11 79.11 0 00-5.77 117.08zM59.42 54.53A29.54 29.54 0 0178.35 48 35.08 35.08 0 01103 58.32l25 24.89 24.93-24.89c12.25-12.15 31.43-13.83 43.58-3.82a31.09 31.09 0 012.31 46.15l-70.85 70.71-70.87-70.69a31.13 31.13 0 012.32-46.14zm337.93 305.24l32.27-69.89a24 24 0 10-43.54-20.12l-63.7 138h109.27l-36.92 68.58A24 24 0 10437 499.05l75-139.28zm-141.44-72h-27.42l-7.09-14.17a27.36 27.36 0 00-25.64-17.76H92.08a27.39 27.39 0 00-25.65 17.76l-7 14.21H32a32 32 0 00-32 32V480a32 32 0 0032 32h223.91a32 32 0 0032-32V319.79a32 32 0 00-32-31.98zm-16 176.23H48V335.79h41.22l13.21-26.73 2.57-5.26h77.83l2.69 5.4 13.24 26.59h41.13zm112-256V68.24L463.83 51v78.58a84 84 0 00-16-1.69c-35.34 0-64 21.47-64 48s28.64 48 64 48 64-21.48 64-48V32c0-17.9-13.54-32-29.64-32a28.08 28.08 0 00-4.26.33L329.39 23.17c-14.63 2.25-25.5 15.74-25.5 31.66V161.6a83.25 83.25 0 00-16-1.7c-35.33 0-64 21.55-64 48.13s28.64 48.13 64 48.13 63.98-21.55 63.98-48.16z"})))},ae=["title","titleId"];function ce(){return ce=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(l[r]=e[r]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r])}return l}var oe,se=function(e){var t=e.title,r=e.titleId,n=ie(e,ae);return a.createElement("svg",ce({"aria-hidden":"true","data-prefix":"far","data-icon":"globe",className:"docs_internationalisation_svg__svg-inline--fa docs_internationalisation_svg__fa-globe docs_internationalisation_svg__fa-w-16",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 496 512","aria-labelledby":r},n),t?a.createElement("title",{id:r},t):null,ne||(ne=a.createElement("path",{fill:"currentColor",d:"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm179.3 160h-67.2c-6.7-36.5-17.5-68.8-31.2-94.7 42.9 19 77.7 52.7 98.4 94.7zM248 56c18.6 0 48.6 41.2 63.2 112H184.8C199.4 97.2 229.4 56 248 56zM48 256c0-13.7 1.4-27.1 4-40h77.7c-1 13.1-1.7 26.3-1.7 40s.7 26.9 1.7 40H52c-2.6-12.9-4-26.3-4-40zm20.7 88h67.2c6.7 36.5 17.5 68.8 31.2 94.7-42.9-19-77.7-52.7-98.4-94.7zm67.2-176H68.7c20.7-42 55.5-75.7 98.4-94.7-13.7 25.9-24.5 58.2-31.2 94.7zM248 456c-18.6 0-48.6-41.2-63.2-112h126.5c-14.7 70.8-44.7 112-63.3 112zm70.1-160H177.9c-1.1-12.8-1.9-26-1.9-40s.8-27.2 1.9-40h140.3c1.1 12.8 1.9 26 1.9 40s-.9 27.2-2 40zm10.8 142.7c13.7-25.9 24.4-58.2 31.2-94.7h67.2c-20.7 42-55.5 75.7-98.4 94.7zM366.3 296c1-13.1 1.7-26.3 1.7-40s-.7-26.9-1.7-40H444c2.6 12.9 4 26.3 4 40s-1.4 27.1-4 40h-77.7z"})))},ue=["title","titleId"];function fe(){return fe=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(l[r]=e[r]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r])}return l}var ve,ge=function(e){var t=e.title,r=e.titleId,n=de(e,ue);return a.createElement("svg",fe({"aria-hidden":"true","data-prefix":"far","data-icon":"traffic-light-go",className:"docs_status-indicators_svg__svg-inline--fa docs_status-indicators_svg__fa-traffic-light-go docs_status-indicators_svg__fa-w-12",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 384 512","aria-labelledby":r},n),t?a.createElement("title",{id:r},t):null,oe||(oe=a.createElement("path",{fill:"currentColor",d:"M384 192h-48v-45.31c28.57-16.63 48-47.24 48-82.69h-48V32c0-17.67-14.33-32-32-32H80C62.33 0 48 14.33 48 32v32H0c0 35.44 19.43 66.05 48 82.69V192H0c0 35.44 19.43 66.05 48 82.69V320H0c0 37.73 21.97 70.05 53.63 85.74C70.3 466.84 125.62 512 192 512s121.7-45.16 138.37-106.26C362.03 390.05 384 357.73 384 320h-48v-45.31c28.57-16.64 48-47.25 48-82.69zm-96 176c0 52.93-43.06 96-96 96s-96-43.07-96-96V48h192v320zm-96-192c26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48 21.49 48 48 48zm0-72c13.23 0 24 10.77 24 24s-10.77 24-24 24-24-10.77-24-24 10.77-24 24-24zm0 200c26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48 21.49 48 48 48zm0-72c13.23 0 24 10.77 24 24s-10.77 24-24 24-24-10.77-24-24 10.77-24 24-24zm0 200c26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48 21.49 48 48 48z"})))},pe=["title","titleId"];function he(){return he=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(l[r]=e[r]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r])}return l}var be,ye=function(e){var t=e.title,r=e.titleId,n=me(e,pe);return a.createElement("svg",he({"aria-hidden":"true","data-prefix":"far","data-icon":"palette",className:"docs_theming_svg__svg-inline--fa docs_theming_svg__fa-palette docs_theming_svg__fa-w-16",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512","aria-labelledby":r},n),t?a.createElement("title",{id:r},t):null,ve||(ve=a.createElement("path",{fill:"currentColor",d:"M128 224c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.4-32-32-32zM418.6 58.1C359.2 9.3 281.3-10 204.6 5 104.9 24.4 24.7 104.2 5.1 203.7c-16.7 84.2 8.1 168.3 67.8 230.6 47.3 49.4 109.7 77.8 167.9 77.8 8.8 0 17.5-.6 26.1-2 24.2-3.7 44.6-18.7 56.1-41.1 12.3-24 12.3-52.7.2-76.6-6.1-12-5.5-26.2 1.8-38 7-11.8 18.7-18.4 32-18.4h72.2c46.4 0 82.8-35.7 82.8-81.3-.2-76.4-34.3-148.1-93.4-196.6zM429.2 288H357c-29.9 0-57.2 15.4-73 41.3-16 26.1-17.3 57.8-3.6 84.9 5.1 10.1 5.1 22.7-.2 32.9-2.6 5-8.7 13.7-20.6 15.6-49.3 7.7-108.9-16.6-152-61.6-48.8-50.9-69-119.4-55.4-188 15.9-80.6 80.8-145.3 161.6-161 62.6-12.3 126.1 3.5 174.3 43.1 48.1 39.5 75.7 97.6 75.9 159.6 0 18.6-15.3 33.2-34.8 33.2zM160 128c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.4-32-32-32zm96-32.1c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32c0-17.6-14.3-32-32-32zm96 32.1c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z"})))},Oe=["title","titleId"];function _e(){return _e=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(l[r]=e[r]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r])}return l}var je,ze=function(e){var t=e.title,r=e.titleId,n=we(e,Oe);return a.createElement("svg",_e({"aria-hidden":"true","data-prefix":"far","data-icon":"rabbit-fast",className:"docs_quick-start_svg__svg-inline--fa docs_quick-start_svg__fa-rabbit-fast docs_quick-start_svg__fa-w-20",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 512","aria-labelledby":r},n),t?a.createElement("title",{id:r},t):null,be||(be=a.createElement("path",{fill:"currentColor",d:"M598.33 189.44c-1.98-1.4.26.02-41.42-25.23-1.44-8.79-3.37-17.75-5.76-26.67C542.64 105.8 516.85 32 461.17 32c-5.01 0-9.99.65-14.8 1.95-18.5 4.96-31.84 17.01-39.68 34.91-8.84-3.03-17.89-4.86-26.88-4.86-16.51 0-31.68 6.07-42.71 17.1-5.7 5.7-14.96 17.64-16.74 36.22C292.78 103.85 266.77 96 239.89 96c-40.75 0-77.54 18.47-112.37 55.99-13.71-10.22-30.11-16-47.53-16-44.19 0-80 35.75-80 79.99 0 44.19 35.76 79.99 80 79.99 10.98 0 21.54-2.34 31.33-6.55 7.3 11.89 8.74 12.68 51.15 59.01l-9.54 5.16c-15.62 10.4-24.94 27.82-24.94 46.59v23.73c0 20.19 10.44 38.29 27.88 48.42 8.78 5.11 18.44 7.66 28.12 7.66 9.53 0 19.06-2.48 27.78-7.45l42.21-24.12 14.6 15.95a48.01 48.01 0 0035.41 15.59h160c26.51 0 48-21.49 48-48 0-26.14-12.6-49.39-32.05-64h61.07c54.58 0 98.98-44.12 98.98-98.35.01-31.78-15.57-61.76-41.66-80.17zM95.87 243.1c-19.31 11.27-34.01.01-38.5-4.48-12.5-12.5-12.5-32.76 0-45.25 6.69-6.7 26.57-16.99 44.22-.69-5.94 16.23-7.56 33.47-5.72 50.42zm92.1 187.76c-3.5 2.02-6.5.81-8-.02-1.47-.88-3.97-2.92-3.97-6.92v-23.73c0-2.69 1.34-5.17 1.62-5.5l18.2-9.81 24.94 27.24-32.79 18.74zm353.05-110.88H448l-48.06 20.03c-.35-48.13-31.81-90.94-76.81-104.27l-36.31-10.77c-12.81-3.75-26.06 3.5-29.81 16.19-3.78 12.72 3.47 26.08 16.19 29.84l36.31 10.76c25.03 7.41 42.5 31.69 42.5 59.03v59.18h80c17.66 0 32 14.36 32 32H304L159.86 274.5c-22.36-24.22-22.66-61.37-.81-86.05C186.71 157.21 212.34 144 239.9 144c52.91 0 112.95 48.69 208.11 111.99 0-18.85-.38-22.24 3.75-33.12-13.16-6.88-28.53-18.32-43.38-33.17-30.93-30.92-47.64-64.35-37.33-74.65 10.74-10.74 45.13 7.8 74.66 37.32 2.58 2.58 4.9 5.18 7.28 7.78-10.27-40.77-7.88-76.17 5.81-79.84 14.11-3.8 34.71 27.54 45.99 69.65 4.37 16.3 6.67 31.8 7.1 44.98 2.6.84 5.2 1.56 7.79 2.82l50.98 30.89c13.4 9.45 21.35 24.71 21.35 40.97-.01 27.82-22.84 50.36-50.99 50.36zM512 239.99c-8.84 0-16 7.16-16 16s7.16 16 16 16 16-7.16 16-16-7.16-16-16-16z"})))},Ee=r(1502),xe=r(9955),Ce=["title","titleId"];function ke(){return ke=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(l[r]=e[r]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r])}return l}var Me,Pe=function(e){var t=e.title,r=e.titleId,n=Ie(e,Ce);return a.createElement("svg",ke({"aria-hidden":"true","data-prefix":"far","data-icon":"key",className:"docs_security_svg__svg-inline--fa docs_security_svg__fa-key docs_security_svg__fa-w-16",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512","aria-labelledby":r},n),t?a.createElement("title",{id:r},t):null,je||(je=a.createElement("path",{fill:"currentColor",d:"M320 48c79.529 0 144 64.471 144 144s-64.471 144-144 144c-18.968 0-37.076-3.675-53.66-10.339L224 368h-32v48h-48v48H48v-96l134.177-134.177A143.96 143.96 0 01176 192c0-79.529 64.471-144 144-144m0-48C213.965 0 128 85.954 128 192c0 8.832.602 17.623 1.799 26.318L7.029 341.088A24.005 24.005 0 000 358.059V488c0 13.255 10.745 24 24 24h144c13.255 0 24-10.745 24-24v-24h24c13.255 0 24-10.745 24-24v-20l40.049-40.167C293.106 382.604 306.461 384 320 384c106.035 0 192-85.954 192-192C512 85.965 426.046 0 320 0zm0 144c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z"})))},He=["title","titleId"];function Se(){return Se=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(l[r]=e[r]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r])}return l}var Ve,Ne=function(e){var t=e.title,r=e.titleId,n=Le(e,He);return a.createElement("svg",Se({"aria-hidden":"true","data-prefix":"far","data-icon":"balance-scale",className:"docs_legal_svg__svg-inline--fa docs_legal_svg__fa-balance-scale docs_legal_svg__fa-w-20",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 512","aria-labelledby":r},n),t?a.createElement("title",{id:r},t):null,Me||(Me=a.createElement("path",{fill:"currentColor",d:"M256 336h-.02c0-16.18 1.34-8.73-85.05-181.51-8.83-17.65-25.89-26.49-42.95-26.49-17.04 0-34.08 8.82-42.92 26.49C-2.06 328.75.02 320.33.02 336H0c0 44.18 57.31 80 128 80s128-35.82 128-80zM83.24 265.13c11.4-22.65 26.02-51.69 44.46-89.1.03-.01.13-.03.29-.03l.02-.04c19.82 39.64 35.03 69.81 46.7 92.96 11.28 22.38 19.7 39.12 25.55 51.08H55.83c6.2-12.68 15.24-30.69 27.41-54.87zM528 464H344V155.93c27.42-8.67 48.59-31.36 54.39-59.93H528c8.84 0 16-7.16 16-16V64c0-8.84-7.16-16-16-16H393.25C380.89 19.77 352.79 0 320 0s-60.89 19.77-73.25 48H112c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h129.61c5.8 28.57 26.97 51.26 54.39 59.93V464H112c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zM320 112c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32zm319.98 224c0-16.18 1.34-8.73-85.05-181.51-8.83-17.65-25.89-26.49-42.95-26.49-17.04 0-34.08 8.82-42.92 26.49-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zm-200.15-16c6.19-12.68 15.23-30.69 27.4-54.87 11.4-22.65 26.02-51.69 44.46-89.1.03-.01.13-.03.29-.03l.02-.04c19.82 39.64 35.03 69.81 46.7 92.96 11.28 22.38 19.7 39.12 25.55 51.08H439.83z"})))},Ae=["title","titleId"];function Be(){return Be=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(l[r]=e[r]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r])}return l}var De,qe=function(e){var t=e.title,r=e.titleId,n=Ze(e,Ae);return a.createElement("svg",Be({"aria-hidden":"true","data-prefix":"far","data-icon":"hand-sparkles",className:"docs_conduct_svg__svg-inline--fa docs_conduct_svg__fa-hand-sparkles docs_conduct_svg__fa-w-20",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 640 512","aria-labelledby":r},n),t?a.createElement("title",{id:r},t):null,Ve||(Ve=a.createElement("path",{fill:"currentColor",d:"M471.38 467.5l-1-.43-1-.49a37.63 37.63 0 01-6.06-4.23 31.74 31.74 0 01-9.47 1.65H273.14a32.29 32.29 0 01-26.69-14.3L132.34 277.8c-18-25.71 20.7-54.1 39.3-27.5l37.81 54.4c4.5 6.5 14.59 3.21 14.59-4.61V104c0-31.8 48-31.7 48 0v144a8 8 0 008 8h16a8 8 0 008-8V72c0-31.8 48-31.7 48 0v176a8 8 0 008 8h16a8 8 0 008-8V104c0-31.8 48-31.7 48 0v144a8 8 0 008 8h16a8 8 0 008-8v-64c0-31.8 48-31.7 48 0v88.3a321.9 321.9 0 01-6.2 62.79L495.6 386.4l13.27-5.53 15.63-37.49.41-1 .47-.95c5.83-11.74 18-19.6 31-20.92A371.21 371.21 0 00560 272.3V184a71.94 71.94 0 00-72-72c-2.7 0-5.4.2-8 .41V104a72.08 72.08 0 00-72-72 70.77 70.77 0 00-18.59 2.41 72 72 0 00-122.81 0A70.79 70.79 0 00248 32a72.08 72.08 0 00-72 72v92.09c-10.5-3.68-38.09-10.18-65.29 8.91A72.13 72.13 0 0093 305.3l113.5 171a79.81 79.81 0 0066.6 35.7h180.65a79.85 79.85 0 0057-24.3l-1.9-4.57zM86 156.3l20.69-49.63h.09L156.3 86a7.29 7.29 0 003.7-6 7.28 7.28 0 00-3.7-6l-49.57-20.63h-.07L86 3.7a6.65 6.65 0 00-12 0L53.34 53.33h-.05L3.7 74A7.28 7.28 0 000 80a7.29 7.29 0 003.7 6l49.57 20.67h.07L74 156.3a6.65 6.65 0 0011.92 0zM307.58 288a4 4 0 00-7.15 0L288 317.79l-29.79 12.42a4 4 0 000 7.15L288 349.78l12.42 29.78a4 4 0 007.15 0L320 349.78l29.79-12.42a4 4 0 000-7.15L320 317.79zM640 432a7.28 7.28 0 00-3.7-6l-49.57-20.67h-.07L566 355.7a6.65 6.65 0 00-11.92 0l-20.7 49.63h-.05L483.7 426a7.28 7.28 0 00-3.7 6 7.29 7.29 0 003.7 6l49.57 20.67h.07L554 508.3a6.65 6.65 0 0011.92 0l20.69-49.63.09-.05L636.3 438a7.29 7.29 0 003.7-6z"})))},Ge=["title","titleId"];function Re(){return Re=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(l[r]=e[r]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r])}return l}var Fe=function(e){var t=e.title,r=e.titleId,n=Te(e,Ge);return a.createElement("svg",Re({"aria-hidden":"true","data-prefix":"far","data-icon":"stream",className:"docs_changelog_svg__svg-inline--fa docs_changelog_svg__fa-stream docs_changelog_svg__fa-w-16",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512","aria-labelledby":r},n),t?a.createElement("title",{id:r},t):null,De||(De=a.createElement("path",{fill:"currentColor",d:"M16 128h416c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v32c0 8.84 7.16 16 16 16zm480 96H80c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-64 160H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"})))},We=(f.Z,d.Z,[{section:"Running Dashy",items:[{title:"Quick-Start",description:"TLDR Guide on running Dashy",link:"/docs/quick-start",icon:a.createElement(ze,null)},{title:"Deployment",description:"Deploying Dashy to any server",link:"/docs/deployment",icon:a.createElement(f.Z,null)},{title:"Configuring",description:"All Config Options",link:"/docs/configuring",icon:a.createElement(d.Z,null)},{title:"Management",description:"Updating, security, web server configuration, etc",link:"/docs/management",icon:a.createElement(w,null)},{title:"Troubleshooting",description:"Solutions to Common Issues",link:"/docs/troubleshooting",icon:a.createElement(m,null)}]},{section:"Feature Docs",items:[{title:"Authentication",description:"Configure login and user control",link:"/docs/authentication",icon:a.createElement(Y,null)},{title:"Alternate Views",description:"Startpage mode, Workspace and opening methods",link:"/docs/alternate-views",icon:a.createElement(Ee.Z,null)},{title:"Backup & Restore",description:"Cloud Sync, usage and background",link:"/docs/backup-restore",icon:a.createElement(u.Z,null)},{title:"Icons",description:"Available icon types for sections and items",link:"/docs/icons",icon:a.createElement(le,null)},{title:"Language Switching",description:"Changing language, and adding new locales",link:"/docs/multi-language-support",icon:a.createElement(se,null)},{title:"Status Indicators",description:"Monitoring uptime of your services with Dashy",link:"/docs/status-indicators",icon:a.createElement(ge,null)},{title:"Search & Shortcuts",description:"Filtering, web search and custom hotkeys",link:"/docs/searching",icon:a.createElement(xe.Z,null)},{title:"Theming",description:"Guide to customizing the look and feel of Dashy",link:"/docs/theming",icon:a.createElement(ye,null)},{title:"Widgets",description:"List of all pre-built and custom widgets supported",link:"/docs/widgets",icon:a.createElement($.Z,null)}]},{section:"Community",items:[{title:"Developing",description:"Dashy workflow, and running locally",link:"/docs/developing",icon:a.createElement(C,null)},{title:"Dev Guides",description:"Common development tasks",link:"/docs/development-guides",icon:a.createElement(H,null)},{title:"Contributing",description:"How you can help support Dashy's development",link:"/docs/contributing",icon:a.createElement(A,null)},{title:"Showcase",description:"See how others are using Dashy, and share your dashboard",link:"/docs/showcase",icon:a.createElement(G,null)},{title:"Credits",description:"List of people and projects that have made Dashy possible",link:"/docs/credits",icon:a.createElement(Q,null)}]},{section:"Misc",items:[{title:"Privacy & Security",description:"Configure login and user control",link:"/docs/privacy",icon:a.createElement(Pe,null)},{title:"License",description:"Configure login and user control",link:"/docs/license",icon:a.createElement(Ne,null)},{title:"Code of Conduct",description:"Configure login and user control",link:"/docs/code-of-conduct",icon:a.createElement(qe,null)},{title:"Changelog",description:"Configure login and user control",link:"/docs/changelog",icon:a.createElement(Fe,null)}]}]);function Qe(e){var t=e.title,r=e.description,n=e.icon,l=e.link,c=e.index,i=(0,s.Z)(c);return a.createElement(o.Z,{to:l,className:"docs-link",color:i},a.createElement("div",{className:"row1"},n,a.createElement("p",{className:"name"},t)),a.createElement("span",{className:"description"},r))}function Ue(){var e=(0,i.Z)().siteConfig;return a.createElement(c.Z,{title:e.title,description:"Documentation | Dashy, a self-hosted dashboard for your homelab"},a.createElement("main",{className:"docs"},a.createElement("h1",{className:"docs-title"},"Dashy Docs"),a.createElement("p",{className:"see-repo-note"},a.createElement("span",null,"Note, for the most up-to-date documentation, please see the "),a.createElement("a",{href:"https://github.com/Lissy93/dashy/tree/master/docs"},"GitHub repository")),a.createElement("div",{className:"docs-contents"},We.map((function(e,t){return a.createElement("div",{key:t},a.createElement("h3",{className:"section-title"},t+1,". ",e.section),a.createElement("div",{className:"docs-links-section"},e.items.map((function(e,r){return a.createElement(Qe,(0,l.Z)({key:t+r,index:t+r},e))}))))})))))}},8305:function(e,t){t.Z=function(e){switch(e%4){case 0:return"pink";case 1:return"blue";case 2:return"green";case 3:return"yellow";default:return"white"}}}}]); \ No newline at end of file diff --git a/assets/js/27d9d47d.4502e466.js b/assets/js/27d9d47d.4502e466.js deleted file mode 100644 index b56a309c..00000000 --- a/assets/js/27d9d47d.4502e466.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[316],{3905:function(t,e,a){a.d(e,{Zo:function(){return p},kt:function(){return d}});var r=a(7294);function o(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function s(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,r)}return a}function n(t){for(var e=1;e=0||(o[a]=t[a]);return o}(t,e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(o[a]=t[a])}return o}var l=r.createContext({}),h=function(t){var e=r.useContext(l),a=e;return t&&(a="function"==typeof t?t(e):n(n({},e),t)),a},p=function(t){var e=h(t.components);return r.createElement(l.Provider,{value:e},t.children)},u={inlineCode:"code",wrapper:function(t){var e=t.children;return r.createElement(r.Fragment,{},e)}},c=r.forwardRef((function(t,e){var a=t.components,o=t.mdxType,s=t.originalType,l=t.parentName,p=i(t,["components","mdxType","originalType","parentName"]),c=h(a),d=o,m=c["".concat(l,".").concat(d)]||c[d]||u[d]||s;return a?r.createElement(m,n(n({ref:e},p),{},{components:a})):r.createElement(m,n({ref:e},p))}));function d(t,e){var a=arguments,o=e&&e.mdxType;if("string"==typeof t||o){var s=a.length,n=new Array(s);n[0]=c;var i={};for(var l in e)hasOwnProperty.call(e,l)&&(i[l]=e[l]);i.originalType=t,i.mdxType="string"==typeof t?t:o,n[1]=i;for(var h=2;h Submitted by [@username](https://github.com/user) (optional)\n\n[An optional text description, or any interesting details] (optional)\n\n![dashboard-screenshot](https://example.com/url-to-screenshot.png) (required)\n\n---\n\n")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/27d9d47d.5617c4c7.js b/assets/js/27d9d47d.5617c4c7.js new file mode 100644 index 00000000..f2f644e9 --- /dev/null +++ b/assets/js/27d9d47d.5617c4c7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[316],{3905:(t,e,a)=>{a.d(e,{Zo:()=>p,kt:()=>m});var r=a(7294);function o(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function s(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,r)}return a}function n(t){for(var e=1;e=0||(o[a]=t[a]);return o}(t,e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(o[a]=t[a])}return o}var i=r.createContext({}),h=function(t){var e=r.useContext(i),a=e;return t&&(a="function"==typeof t?t(e):n(n({},e),t)),a},p=function(t){var e=h(t.components);return r.createElement(i.Provider,{value:e},t.children)},c="mdxType",u={inlineCode:"code",wrapper:function(t){var e=t.children;return r.createElement(r.Fragment,{},e)}},d=r.forwardRef((function(t,e){var a=t.components,o=t.mdxType,s=t.originalType,i=t.parentName,p=l(t,["components","mdxType","originalType","parentName"]),c=h(a),d=o,m=c["".concat(i,".").concat(d)]||c[d]||u[d]||s;return a?r.createElement(m,n(n({ref:e},p),{},{components:a})):r.createElement(m,n({ref:e},p))}));function m(t,e){var a=arguments,o=e&&e.mdxType;if("string"==typeof t||o){var s=a.length,n=new Array(s);n[0]=d;var l={};for(var i in e)hasOwnProperty.call(e,i)&&(l[i]=e[i]);l.originalType=t,l[c]="string"==typeof t?t:o,n[1]=l;for(var h=2;h{a.r(e),a.d(e,{contentTitle:()=>n,default:()=>c,frontMatter:()=>s,metadata:()=>l,toc:()=>i});var r=a(7462),o=(a(7294),a(3905));const s={},n="Showcase \ud83c\udf1f",l={unversionedId:"showcase",id:"showcase",isDocsHomePage:!1,title:"Showcase \ud83c\udf1f",description:"| \ud83d\udc97 Got a sweet dashboard? Submit it to the showcase! \ud83d\udc49 See How |",source:"@site/docs/showcase.md",sourceDirName:".",slug:"/showcase",permalink:"/docs/showcase",editUrl:"https://github.com/Lissy93/dashy/edit/gh-pages/docs/docs/showcase.md",version:"current",frontMatter:{},sidebar:"dashySidebar",previous:{title:"Pages and Sections",permalink:"/docs/pages-and-sections"},next:{title:"Contributing",permalink:"/docs/contributing"}},i=[{value:"Home Lab 2.0",id:"home-lab-20",children:[]},{value:"Ratty222",id:"ratty222",children:[]},{value:"Hugalafutro Dashy",id:"hugalafutro-dashy",children:[]},{value:"NAS Home Dashboard",id:"nas-home-dashboard",children:[]},{value:"Brewhack",id:"brewhack",children:[]},{value:"The Private Dashboard",id:"the-private-dashboard",children:[]},{value:"Homelab & VPS dashboard",id:"homelab--vps-dashboard",children:[]},{value:"Raspberry PI Docker Dashboard",id:"raspberry-pi-docker-dashboard",children:[]},{value:"First Week of Self-Hosting",id:"first-week-of-self-hosting",children:[]},{value:"EVO Dashboard",id:"evo-dashboard",children:[]},{value:"Networking Services",id:"networking-services",children:[]},{value:"Dashy Live",id:"dashy-live",children:[]},{value:"System Monitor",id:"system-monitor",children:[]},{value:"Browser Startpage",id:"browser-startpage",children:[]},{value:"CFT Toolbox",id:"cft-toolbox",children:[]},{value:"Bookmarks",id:"bookmarks",children:[]},{value:"Project Management",id:"project-management",children:[]},{value:"Dashy Example",id:"dashy-example",children:[]},{value:"HomeLAb 3.0",id:"homelab-30",children:[]},{value:"Ground Control",id:"ground-control",children:[]},{value:"Croco_Grievous",id:"croco_grievous",children:[]},{value:"Crypto Dash",id:"crypto-dash",children:[]},{value:"Stefantigro",id:"stefantigro",children:[]},{value:"Morning Dashboard",id:"morning-dashboard",children:[]},{value:"Yet Another Homelab",id:"yet-another-homelab",children:[]},{value:"The Dragons Lair",id:"the-dragons-lair",children:[]},{value:"Submitting your Dashboard",id:"submitting-your-dashboard",children:[]}],h={toc:i},p="wrapper";function c(t){let{components:e,...a}=t;return(0,o.kt)(p,(0,r.Z)({},h,a,{components:e,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"showcase-"},"Showcase \ud83c\udf1f"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"\ud83d\udc97 Got a sweet dashboard? Submit it to the showcase! \ud83d\udc49 ",(0,o.kt)("a",{parentName:"th",href:"#submitting-your-dashboard"},"See How"))))),(0,o.kt)("h3",{id:"home-lab-20"},"Home Lab 2.0"),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://raw.githubusercontent.com/Lissy93/dashy/master/docs/showcase/1-home-lab-material.png",alt:"screenshot-homelab"})),(0,o.kt)("hr",null),(0,o.kt)("h3",{id:"ratty222"},"Ratty222"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"By ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/ratty222"},"@ratty222")," ",(0,o.kt)("sup",null,"Re: ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/discussions/384"},"#384")))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/1862727/147582551-4c655d37-8bcc-4f95-ab41-164a9d0d6a07.png",alt:"screenshot-ratty222-dashy"})),(0,o.kt)("hr",null),(0,o.kt)("h3",{id:"hugalafutro-dashy"},"Hugalafutro Dashy"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"By ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/hugalafutro"},"@hugalafutro")," ",(0,o.kt)("sup",null,"Re: ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/discussions/505"},"#505")))),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://i.ibb.co/PDpLDKS/hugalafutro-dashy.gif"},(0,o.kt)("img",{parentName:"a",src:"https://i.ibb.co/PDpLDKS/hugalafutro-dashy.gif",alt:"hugalafutro-dashy-screenshot"}))),(0,o.kt)("hr",null),(0,o.kt)("h3",{id:"nas-home-dashboard"},"NAS Home Dashboard"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"By ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/cerealconyogurt"},"@cerealconyogurt")," ",(0,o.kt)("sup",null,"Re: ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/issues/74"},"#74")))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://raw.githubusercontent.com/Lissy93/dashy/master/docs/showcase/6-nas-home-dashboard.png",alt:"screenshot-networking-services"})),(0,o.kt)("hr",null),(0,o.kt)("h3",{id:"brewhack"},"Brewhack"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"By ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/brpeterso"},"@brpeterso")," ",(0,o.kt)("sup",null,"Re: ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/issues/680"},"#680")))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://i.ibb.co/cNjzPT4/brewhack.png",alt:"screenshot-brewhack-dashboard"})),(0,o.kt)("hr",null),(0,o.kt)("h3",{id:"the-private-dashboard"},"The Private Dashboard"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"By ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/DylanBeMe"},"@DylanBeMe")," ",(0,o.kt)("sup",null,"Re: ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/issues/419"},"#419")))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://i.ibb.co/hKS483T/private-dashboard-Dylan-Be-Me.png",alt:"screenshot-private-dashboard"})),(0,o.kt)("hr",null),(0,o.kt)("h3",{id:"homelab--vps-dashboard"},"Homelab & VPS dashboard"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"By ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/shadowking001"},"@shadowking001")," ",(0,o.kt)("sup",null,"Re: ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/issues/86"},"#86")))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://raw.githubusercontent.com/Lissy93/dashy/master/docs/showcase/8-shadowking001s-dashy.png",alt:"screenshot-shadowking001-dashy"})),(0,o.kt)("hr",null),(0,o.kt)("h3",{id:"raspberry-pi-docker-dashboard"},"Raspberry PI Docker Dashboard"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"By ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/henkiewie"},"@henkiewie")," ",(0,o.kt)("sup",null,"Re: ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/issues/622"},"#622")))),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"I use this dashboard every day. It now even includes a player for a radio stream which I configured with Logitech media server and icecast. I made an smaller version of the grafana dashboard to fit an iframe in kiosk mode, so it monitors the most important values of my RPI. The PI is in Argon m2 case and used as a NAS. The dashboard is a copy of the adventure theme with some changes saved in ",(0,o.kt)("inlineCode",{parentName:"p"},"/app/src/styles/user-defined-themes.scss"))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://i.ibb.co/jGzPm6b/henkiewie-dashy-showcase.png",alt:"screenshot-henkiewie-dashy"})),(0,o.kt)("hr",null),(0,o.kt)("h3",{id:"first-week-of-self-hosting"},"First Week of Self-Hosting"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"By ",(0,o.kt)("a",{parentName:"p",href:"https://www.reddit.com/user/RickyCZ"},"u//RickyCZ")," ",(0,o.kt)("sup",null,"via ",(0,o.kt)("a",{parentName:"p",href:"https://www.reddit.com/r/selfhosted/comments/pose15/just_got_started_a_week_ago_selfhosting_is_very/"},"Reddit")))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://raw.githubusercontent.com/Lissy93/dashy/master/docs/showcase/11-ricky-cz.png",alt:"screenshot-week-of-self-hosting"})),(0,o.kt)("hr",null),(0,o.kt)("h3",{id:"evo-dashboard"},"EVO Dashboard"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"By ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/EVOTk"},"@EVOTk")," ",(0,o.kt)("sup",null,"Re: ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/pull/316"},"#316")))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://raw.githubusercontent.com/Lissy93/dashy/master/docs/showcase/12-evo-dashboard.png",alt:"screenshot-evo-dashboard"})),(0,o.kt)("hr",null),(0,o.kt)("h3",{id:"networking-services"},"Networking Services"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"By ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/lissy93"},"@Lissy93"))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://raw.githubusercontent.com/Lissy93/dashy/master/docs/showcase/2-networking-services-minimal-dark.png",alt:"screenshot-networking-services"})),(0,o.kt)("hr",null),(0,o.kt)("h3",{id:"dashy-live"},"Dashy Live"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"By ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/lissy93"},"@Lissy93"))),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"A dashboard I made to manage all project development links from one place. View demo at ",(0,o.kt)("a",{parentName:"p",href:"https://live.dashy.to/"},"live.dashy.to"),".")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://raw.githubusercontent.com/Lissy93/dashy/master/docs/showcase/10-dashy-live.png",alt:"screenshot-dashy-live"})),(0,o.kt)("hr",null),(0,o.kt)("h3",{id:"system-monitor"},"System Monitor"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"An aggregated board for monitoring system resource usage from a single view")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://i.ibb.co/xfK6BGb/system-monitor-board.png",alt:"screenshot-monitor"})),(0,o.kt)("hr",null),(0,o.kt)("h3",{id:"browser-startpage"},"Browser Startpage"),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://i.ibb.co/rs07dS1/startpage.png",alt:"screenshot-startpage"})),(0,o.kt)("hr",null),(0,o.kt)("h3",{id:"cft-toolbox"},"CFT Toolbox"),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://raw.githubusercontent.com/Lissy93/dashy/master/docs/showcase/3-cft-toolbox.png",alt:"screenshot-cft-toolbox"})),(0,o.kt)("hr",null),(0,o.kt)("h3",{id:"bookmarks"},"Bookmarks"),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://raw.githubusercontent.com/Lissy93/dashy/master/docs/showcase/4-bookmarks-colourful.png",alt:"screenshot-bookmarks"})),(0,o.kt)("hr",null),(0,o.kt)("h3",{id:"project-management"},"Project Management"),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://raw.githubusercontent.com/Lissy93/dashy/master/docs/showcase/5-project-managment.png",alt:"screenshot-project-managment"})),(0,o.kt)("hr",null),(0,o.kt)("h3",{id:"dashy-example"},"Dashy Example"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"An example dashboard, by ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/lissy93"},"@Lissy93"),". View live at ",(0,o.kt)("a",{parentName:"p",href:"https://demo.dashy.to/"},"demo.dashy.to"),".")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://i.ibb.co/YbzqPK7/demo-dashy.png",alt:"screenshot-dashy-example"})),(0,o.kt)("hr",null),(0,o.kt)("h3",{id:"homelab-30"},"HomeLAb 3.0"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"By ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/skoogee"},"@skoogee")," (",(0,o.kt)("a",{parentName:"p",href:"http://zhrn.cc"},"http://zhrn.cc"),") ",(0,o.kt)("sup",null,(0,o.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/issues/279"},"#279")))),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"Dashy, is the most complete dashboard I ever tried, has all the features, and it sets itself apart from the rest. It is my default homepage now. I am thankful to the developer @Lissy93 for sharing such a wonderful creation.")),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://ibb.co/album/ynSwzm"},(0,o.kt)("img",{parentName:"a",src:"https://i.ibb.co/F5yBTsT/12-skoogee-homelab-3.png?",alt:"screenshot-12-skoogee-homelab-3"}))),(0,o.kt)("hr",null),(0,o.kt)("h3",{id:"ground-control"},"Ground Control"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"By ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/dtctek"},"@dtctek")," ",(0,o.kt)("sup",null,"Re: ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/issues/83"},"#83")))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/1862727/149821995-e9b41dab-186c-42e6-b5b3-e233259b241d.png",alt:"screenshot-ground-control"})),(0,o.kt)("hr",null),(0,o.kt)("h3",{id:"croco_grievous"},"Croco_Grievous"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"By ",(0,o.kt)("a",{parentName:"p",href:"https://www.reddit.com/user/Croco_Grievous/"},"u/Croco_Grievous")," ",(0,o.kt)("sup",null,"via ",(0,o.kt)("a",{parentName:"p",href:"https://www.reddit.com/r/selfhosted/comments/t4xk3z/everything_started_with_pihole_on_a_raspberry_pi/"},"reddit")))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://i.ibb.co/59XR8KL/dashy-Croco-Grievous.png",alt:"screenshot-croco-grievous-dashy"})),(0,o.kt)("hr",null),(0,o.kt)("h3",{id:"crypto-dash"},"Crypto Dash"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"Example usage of widgets to monitor cryptocurrencies news, prices and data. Config is ",(0,o.kt)("a",{parentName:"p",href:"https://gist.github.com/Lissy93/000f712a5ce98f212817d20bc16bab10#file-example-8-dashy-crypto-widgets-conf-yml"},"available here"),"\t")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/1862727/147394584-352fe3bf-740d-4624-a01b-9003a97bc832.png",alt:"screenshot-crypto-dash"})),(0,o.kt)("hr",null),(0,o.kt)("h3",{id:"stefantigro"},"Stefantigro"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"By ",(0,o.kt)("a",{parentName:"p",href:"https://www.reddit.com/user/stefantigro/"},"u/stefantigro")," ",(0,o.kt)("sup",null,"via ",(0,o.kt)("a",{parentName:"p",href:"https://www.reddit.com/r/selfhosted/comments/t5oril/been_selfhosting_close_to_half_a_year_now_all/"},"reddit")))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://i.ibb.co/1Kb43Yy/dashy-stefantigro.png",alt:"screenshot-stefantigro-dashy"})),(0,o.kt)("hr",null),(0,o.kt)("h3",{id:"morning-dashboard"},"Morning Dashboard"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"Displayed on my smart screen between 05:00 - 08:00, and includes all the info that I usually check before leaving for work")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://i.ibb.co/4Wx8zb7/morning-dashboard.png",alt:"screenshot-morning-dash"})),(0,o.kt)("hr",null),(0,o.kt)("h3",{id:"yet-another-homelab"},"Yet Another Homelab"),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://raw.githubusercontent.com/Lissy93/dashy/master/docs/showcase/9-home-lab-oblivion.png",alt:"screenshot-yet-another-homelab"})),(0,o.kt)("hr",null),(0,o.kt)("h3",{id:"the-dragons-lair"},"The Dragons Lair"),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"By ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/dr460nf1r3"},"dr460nf1r3")," ",(0,o.kt)("sup",null,"via ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/issues/684"},"#684")))),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"My new startpage featuring the stuff I use most. And of course dragons! ")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://raw.githubusercontent.com/Lissy93/dashy/master/docs/showcase/13-dragons-lair.png",alt:"screenshot-dragons-lair"})),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"submitting-your-dashboard"},"Submitting your Dashboard"),(0,o.kt)("h4",{id:"how-to-submit"},"How to Submit"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://git.io/JEtgM"},"Open an Issue")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/Lissy93/dashy/compare"},"Open a PR"))),(0,o.kt)("h4",{id:"what-to-include"},"What to Include"),(0,o.kt)("p",null,"Please include the following information:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"A single high-quality screenshot of your Dashboard"),(0,o.kt)("li",{parentName:"ul"},"A short title (it doesn't have to be particularly imaginative)"),(0,o.kt)("li",{parentName:"ul"},"An optional description, you could include details on anything interesting or unique about your dashboard, or say how you use it, and why it's awesome"),(0,o.kt)("li",{parentName:"ul"},"Optionally leave your name or username, with a link to your GitHub, Twitter or Website")),(0,o.kt)("h4",{id:"template"},"Template"),(0,o.kt)("p",null,"If you're submitting a pull request, please use a format similar to this:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"### [Dashboard Name] (required)\n\n> Submitted by [@username](https://github.com/user) (optional)\n\n[An optional text description, or any interesting details] (optional)\n\n![dashboard-screenshot](https://example.com/url-to-screenshot.png) (required)\n\n---\n\n")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/393be207.317aa2b3.js b/assets/js/393be207.317aa2b3.js deleted file mode 100644 index 3b1414cb..00000000 --- a/assets/js/393be207.317aa2b3.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[414],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return s}});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var u=r.createContext({}),i=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},l=function(e){var t=i(e.components);return r.createElement(u.Provider,{value:t},e.children)},f={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,u=e.parentName,l=p(e,["components","mdxType","originalType","parentName"]),m=i(n),s=o,y=m["".concat(u,".").concat(s)]||m[s]||f[s]||a;return n?r.createElement(y,c(c({ref:t},l),{},{components:n})):r.createElement(y,c({ref:t},l))}));function s(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,c=new Array(a);c[0]=m;var p={};for(var u in t)hasOwnProperty.call(t,u)&&(p[u]=t[u]);p.originalType=e,p.mdxType="string"==typeof e?e:o,c[1]=p;for(var i=2;i{r.d(t,{Zo:()=>u,kt:()=>y});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function p(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),i=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):p(p({},t),e)),r},u=function(e){var t=i(e.components);return n.createElement(l.Provider,{value:t},e.children)},f="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},s=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),f=i(r),s=o,y=f["".concat(l,".").concat(s)]||f[s]||m[s]||a;return r?n.createElement(y,p(p({ref:t},u),{},{components:r})):n.createElement(y,p({ref:t},u))}));function y(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,p=new Array(a);p[0]=s;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[f]="string"==typeof e?e:o,p[1]=c;for(var i=2;i{r.r(t),r.d(t,{contentTitle:()=>p,default:()=>f,frontMatter:()=>a,metadata:()=>c,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));const a={title:"Markdown page example"},p="Markdown page example",c={type:"mdx",permalink:"/markdown-page",source:"@site/src/pages/markdown-page.md"},l=[],i={toc:l},u="wrapper";function f(e){let{components:t,...r}=e;return(0,o.kt)(u,(0,n.Z)({},i,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"markdown-page-example"},"Markdown page example"),(0,o.kt)("p",null,"You don't need React to write simple standalone pages."))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/40.9e646974.js b/assets/js/40.9c8af0e5.js similarity index 58% rename from assets/js/40.9e646974.js rename to assets/js/40.9c8af0e5.js index 9e378ffa..3e03170b 100644 --- a/assets/js/40.9e646974.js +++ b/assets/js/40.9c8af0e5.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[40],{5040:function(s,e,h){h.r(e)}}]); \ No newline at end of file +"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[40],{5040:(s,e,h)=>{h.r(e)}}]); \ No newline at end of file diff --git a/assets/js/402.2b7abcef.js b/assets/js/402.2b7abcef.js deleted file mode 100644 index a399aba0..00000000 --- a/assets/js/402.2b7abcef.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[402],{830:function(e,t,n){n.d(t,{W:function(){return a}});var r=n(7294);function a(){return r.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},r.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}},2644:function(e,t,n){var r=n(5977),a=n(412),l=n(2263);t.Z=function(){var e=(0,r.k6)(),t=(0,r.TH)(),n=(0,l.Z)().siteConfig,o=(n=void 0===n?{}:n).baseUrl;return{searchValue:a.Z.canUseDOM&&new URLSearchParams(t.search).get("q")||"",updateSearchPath:function(n){var r=new URLSearchParams(t.search);n?r.set("q",n):r.delete("q"),e.replace({search:r.toString()})},generateSearchPageLink:function(e){return o+"search?q="+encodeURIComponent(e)}}}},8617:function(e,t,n){n.d(t,{Z:function(){return l}});var r=n(7294),a="iconExternalLink_wgqa",l=function(e){var t=e.width,n=void 0===t?13.5:t,l=e.height,o=void 0===l?13.5:l;return r.createElement("svg",{width:n,height:o,"aria-hidden":"true",viewBox:"0 0 24 24",className:a},r.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},4478:function(e,t,n){var r=n(7462),a=n(3366),l=n(7294),o=["width","height","className"];t.Z=function(e){var t=e.width,n=void 0===t?30:t,c=e.height,i=void 0===c?30:c,s=e.className,u=(0,a.Z)(e,o);return l.createElement("svg",(0,r.Z)({className:s,width:n,height:i,viewBox:"0 0 30 30","aria-hidden":"true"},u),l.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}},6402:function(e,t,n){n.d(t,{Z:function(){return Re}});var r=n(7294),a=n(6010),l=n(4973),o=n(9306),c="skipToContent_OuoZ";function i(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}var s=function(){var e=(0,r.useRef)(null);return(0,o.SL)((function(t){var n=t.location;e.current&&!n.hash&&i(e.current)})),r.createElement("div",{ref:e},r.createElement("a",{href:"#main",className:c,onClick:function(e){e.preventDefault();var t=document.querySelector("main:first-of-type")||document.querySelector(".main-wrapper");t&&i(t)}},r.createElement(l.Z,{id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation"},"Skip to main content")))},u="announcementBar_axC9",m="announcementBarClose_A3A1",d="announcementBarContent_6uhP",f="announcementBarCloseable_y4cp";var v=function(){var e,t=(0,o.nT)(),n=t.isClosed,c=t.close,i=(0,o.LU)().announcementBar;if(!i)return null;var s=i.content,v=i.backgroundColor,h=i.textColor,g=i.isCloseable;return!s||g&&n?null:r.createElement("div",{className:u,style:{backgroundColor:v,color:h},role:"banner"},r.createElement("div",{className:(0,a.Z)(d,(e={},e[f]=g,e)),dangerouslySetInnerHTML:{__html:s}}),g?r.createElement("button",{type:"button",className:(0,a.Z)(m,"clean-btn"),onClick:c,"aria-label":(0,l.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},r.createElement("span",{"aria-hidden":"true"},"\xd7")):null)},h=n(7462),g=n(3366),b=n(3935),E=n(2263),p=n(5977),k=n(4996),Z=n(6742),y=n(9105),C=n(2644);function w(){return r.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},r.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}var N=n(830),_=["translations"];function S(){return S=Object.assign||function(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var I="Ctrl";var D=r.forwardRef((function(e,t){var n=e.translations,a=void 0===n?{}:n,l=L(e,_),o=a.buttonText,c=void 0===o?"Search":o,i=a.buttonAriaLabel,s=void 0===i?"Search":i,u=(0,r.useMemo)((function(){return"undefined"!=typeof navigator?/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?"\u2318":I:null}),[]);return r.createElement("button",S({type:"button",className:"DocSearch DocSearch-Button","aria-label":s},l,{ref:t}),r.createElement("span",{className:"DocSearch-Button-Container"},r.createElement(N.W,null),r.createElement("span",{className:"DocSearch-Button-Placeholder"},c)),r.createElement("span",{className:"DocSearch-Button-Keys"},null!==u&&r.createElement(r.Fragment,null,r.createElement("kbd",{className:"DocSearch-Button-Key"},u===I?r.createElement(w,null):u),r.createElement("kbd",{className:"DocSearch-Button-Key"},"K"))))})),T=n(907);function B(){var e=function(){var e=(0,E.Z)().i18n,t=(0,T._r)(),n=(0,T.WS)(),r=(0,o.Oh)(),a=[o.HX].concat(Object.keys(t).map((function(e){var a,l,c=(null==n||null==(a=n.activePlugin)?void 0:a.pluginId)===e?n.activeVersion:void 0,i=r[e],s=t[e].versions.find((function(e){return e.isLast})),u=null!=(l=null!=c?c:i)?l:s;return(0,o.os)(e,u.name)})));return{locale:e.currentLocale,tags:a}}();return["language:"+e.locale,e.tags.map((function(e){return"docusaurus_tag:"+e}))]}var M="searchBox_Bc3W",x=["contextualSearch"],P=null;function A(e){var t=e.hit,n=e.children;return r.createElement(Z.Z,{to:t.url},n)}function O(e){var t=e.state,n=e.onClose,a=(0,C.Z)().generateSearchPageLink;return r.createElement(Z.Z,{to:a(t.query),onClick:n},"See all ",t.context.nbHits," results")}function R(e){var t,a,o=e.contextualSearch,c=(0,g.Z)(e,x),i=(0,E.Z)().siteMetadata,s=B(),u=null!=(t=null==(a=c.searchParameters)?void 0:a.facetFilters)?t:[],m=o?[].concat(s,u):u,d=Object.assign({},c.searchParameters,{facetFilters:m}),f=(0,k.C)().withBaseUrl,v=(0,p.k6)(),Z=(0,r.useRef)(null),C=(0,r.useRef)(null),w=(0,r.useState)(!1),N=w[0],_=w[1],S=(0,r.useState)(null),L=S[0],I=S[1],T=(0,r.useCallback)((function(){return P?Promise.resolve():Promise.all([n.e(431).then(n.bind(n,2431)),Promise.all([n.e(312),n.e(945)]).then(n.bind(n,6945)),Promise.all([n.e(312),n.e(40)]).then(n.bind(n,5040))]).then((function(e){var t=e[0].DocSearchModal;P=t}))}),[]),R=(0,r.useCallback)((function(){T().then((function(){Z.current=document.createElement("div"),document.body.insertBefore(Z.current,document.body.firstChild),_(!0)}))}),[T,_]),U=(0,r.useCallback)((function(){_(!1),Z.current.remove()}),[_]),H=(0,r.useCallback)((function(e){T().then((function(){_(!0),I(e.key)}))}),[T,_,I]),V=(0,r.useRef)({navigate:function(e){var t=e.itemUrl;v.push(t)}}).current,W=(0,r.useRef)((function(e){return e.map((function(e){var t=document.createElement("a");return t.href=e.url,Object.assign({},e,{url:f(""+t.pathname+t.hash)})}))})).current,j=(0,r.useMemo)((function(){return function(e){return r.createElement(O,(0,h.Z)({},e,{onClose:U}))}}),[U]),z=(0,r.useCallback)((function(e){return e.addAlgoliaAgent("docusaurus",i.docusaurusVersion),e}),[i.docusaurusVersion]);!function(e){var t=e.isOpen,n=e.onOpen,a=e.onClose,l=e.onInput,o=e.searchButtonRef;r.useEffect((function(){function e(e){(27===e.keyCode&&t||"k"===e.key&&(e.metaKey||e.ctrlKey)||!function(e){var t=e.target,n=t.tagName;return t.isContentEditable||"INPUT"===n||"SELECT"===n||"TEXTAREA"===n}(e)&&"/"===e.key&&!t)&&(e.preventDefault(),t?a():document.body.classList.contains("DocSearch--active")||document.body.classList.contains("DocSearch--active")||n()),o&&o.current===document.activeElement&&l&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&l(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[t,n,a,l,o])}({isOpen:N,onOpen:R,onClose:U,onInput:H,searchButtonRef:C});var F=(0,l.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"});return r.createElement(r.Fragment,null,r.createElement(y.Z,null,r.createElement("link",{rel:"preconnect",href:"https://"+c.appId+"-dsn.algolia.net",crossOrigin:"anonymous"})),r.createElement("div",{className:M},r.createElement(D,{onTouchStart:T,onFocus:T,onMouseOver:T,onClick:R,ref:C,translations:{buttonText:F,buttonAriaLabel:F}})),N&&(0,b.createPortal)(r.createElement(P,(0,h.Z)({onClose:U,initialScrollY:window.scrollY,initialQuery:L,navigator:V,transformItems:W,hitComponent:A,resultsFooterComponent:j,transformSearchClient:z},c,{searchParameters:d})),Z.current))}var U=function(){var e=(0,E.Z)().siteConfig;return r.createElement(R,e.themeConfig.algolia)},H={toggle:"toggle_iYfV"},V=function(e){var t=e.icon,n=e.style;return r.createElement("span",{className:(0,a.Z)(H.toggle,H.dark),style:n},t)},W=function(e){var t=e.icon,n=e.style;return r.createElement("span",{className:(0,a.Z)(H.toggle,H.light),style:n},t)},j=(0,r.memo)((function(e){var t=e.className,n=e.icons,l=e.checked,o=e.disabled,c=e.onChange,i=(0,r.useState)(l),s=i[0],u=i[1],m=(0,r.useState)(!1),d=m[0],f=m[1],v=(0,r.useRef)(null);return r.createElement("div",{className:(0,a.Z)("react-toggle",t,{"react-toggle--checked":s,"react-toggle--focus":d,"react-toggle--disabled":o})},r.createElement("div",{className:"react-toggle-track",role:"button",tabIndex:-1,onClick:function(){var e;return null==(e=v.current)?void 0:e.click()}},r.createElement("div",{className:"react-toggle-track-check"},n.checked),r.createElement("div",{className:"react-toggle-track-x"},n.unchecked),r.createElement("div",{className:"react-toggle-thumb"})),r.createElement("input",{ref:v,checked:s,type:"checkbox",className:"react-toggle-screenreader-only","aria-label":"Switch between dark and light mode",onChange:c,onClick:function(){return u(!s)},onFocus:function(){return f(!0)},onBlur:function(){return f(!1)}}))}));function z(e){var t=(0,o.LU)().colorMode.switchConfig,n=t.darkIcon,a=t.darkIconStyle,l=t.lightIcon,c=t.lightIconStyle,i=(0,E.Z)().isClient;return r.createElement(j,(0,h.Z)({disabled:!i,icons:{checked:r.createElement(V,{icon:n,style:a}),unchecked:r.createElement(W,{icon:l,style:c})}},e))}var F=n(5350),q=n(7898),K=function(e){var t=(0,p.TH)(),n=(0,r.useState)(e),a=n[0],l=n[1],c=(0,r.useRef)(!1),i=(0,r.useState)(0),s=i[0],u=i[1],m=(0,r.useCallback)((function(e){null!==e&&u(e.getBoundingClientRect().height)}),[]);return(0,q.Z)((function(t,n){var r=t.scrollY,a=n.scrollY;if(e)if(r=a?l(!1):r+i0&&r.createElement("div",{className:"row footer__links"},c.map((function(e,t){return r.createElement("div",{key:t,className:"col footer__col"},null!=e.title?r.createElement("div",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?r.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?r.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):r.createElement("li",{key:e.href||e.to,className:"footer__item"},r.createElement(he,e))}))):null)}))),(s||n)&&r.createElement("div",{className:"footer__bottom text--center"},s&&(s.src||s.srcDark)&&r.createElement("div",{className:"margin-bottom--sm"},s.href?r.createElement(Z.Z,{href:s.href,className:de},r.createElement(ge,{alt:s.alt,sources:u})):r.createElement(ge,{alt:s.alt,sources:u})),n?r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:n}}):null))):null},Ee=n(412),pe=(0,o.WA)("theme"),ke="light",Ze="dark",ye=function(e){return e===Ze?Ze:ke},Ce=function(e){(0,o.WA)("theme").set(ye(e))},we=function(){var e=(0,o.LU)().colorMode,t=e.defaultMode,n=e.disableSwitch,a=e.respectPrefersColorScheme,l=(0,r.useState)(function(e){return Ee.Z.canUseDOM?ye(document.documentElement.getAttribute("data-theme")):ye(e)}(t)),c=l[0],i=l[1],s=(0,r.useCallback)((function(){i(ke),Ce(ke)}),[]),u=(0,r.useCallback)((function(){i(Ze),Ce(Ze)}),[]);return(0,r.useEffect)((function(){document.documentElement.setAttribute("data-theme",ye(c))}),[c]),(0,r.useEffect)((function(){if(!n)try{var e=pe.get();null!==e&&i(ye(e))}catch(t){console.error(t)}}),[i]),(0,r.useEffect)((function(){n&&!a||window.matchMedia("(prefers-color-scheme: dark)").addListener((function(e){var t=e.matches;i(t?Ze:ke)}))}),[]),{isDarkTheme:c===Ze,setLightTheme:s,setDarkTheme:u}},Ne=n(2924);var _e=function(e){var t=we(),n=t.isDarkTheme,a=t.setLightTheme,l=t.setDarkTheme;return r.createElement(Ne.Z.Provider,{value:{isDarkTheme:n,setLightTheme:a,setDarkTheme:l}},e.children)},Se="docusaurus.tab.",Le=function(){var e=(0,r.useState)({}),t=e[0],n=e[1],a=(0,r.useCallback)((function(e,t){(0,o.WA)("docusaurus.tab."+e).set(t)}),[]);return(0,r.useEffect)((function(){try{var e={};(0,o._f)().forEach((function(t){if(t.startsWith(Se)){var n=t.substring(Se.length);e[n]=(0,o.WA)(t).get()}})),n(e)}catch(t){console.error(t)}}),[]),{tabGroupChoices:t,setTabGroupChoices:function(e,t){n((function(n){var r;return Object.assign({},n,((r={})[e]=t,r))})),a(e,t)}}},Ie=(0,r.createContext)(void 0);var De=function(e){var t=Le(),n=t.tabGroupChoices,a=t.setTabGroupChoices;return r.createElement(Ie.Provider,{value:{tabGroupChoices:n,setTabGroupChoices:a}},e.children)};function Te(e){var t=e.children;return r.createElement(_e,null,r.createElement(o.pl,null,r.createElement(De,null,r.createElement(o.L5,null,t))))}function Be(e){var t=e.locale,n=e.version,a=e.tag,l=t;return r.createElement(y.Z,null,l&&r.createElement("meta",{name:"docsearch:language",content:l}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),a&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:a}))}var Me=n(1217);function xe(){var e=(0,E.Z)().i18n,t=e.defaultLocale,n=e.locales,a=(0,o.l5)();return r.createElement(y.Z,null,n.map((function(e){return r.createElement("link",{key:e,rel:"alternate",href:a.createUrl({locale:e,fullyQualified:!0}),hrefLang:e})})),r.createElement("link",{rel:"alternate",href:a.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}))}function Pe(e){var t=e.permalink,n=(0,E.Z)().siteConfig.url,a=function(){var e=(0,E.Z)().siteConfig.url,t=(0,p.TH)().pathname;return e+(0,k.Z)(t)}(),l=t?""+n+t:a;return r.createElement(y.Z,null,r.createElement("meta",{property:"og:url",content:l}),r.createElement("link",{rel:"canonical",href:l}))}function Ae(e){var t=(0,E.Z)(),n=t.siteConfig,a=n.favicon,l=n.themeConfig,c=l.metadatas,i=l.image,s=t.i18n,u=s.currentLocale,m=s.localeConfigs,d=e.title,f=e.description,v=e.image,g=e.keywords,b=e.searchMetadatas,p=(0,k.Z)(a),Z=(0,o.pe)(d),C=u,w=m[u].direction;return r.createElement(r.Fragment,null,r.createElement(y.Z,null,r.createElement("html",{lang:C,dir:w}),a&&r.createElement("link",{rel:"shortcut icon",href:p}),r.createElement("title",null,Z),r.createElement("meta",{property:"og:title",content:Z}),v||i&&r.createElement("meta",{name:"twitter:card",content:"summary_large_image"})),r.createElement(Me.Z,{description:f,keywords:g,image:v}),r.createElement(Pe,null),r.createElement(xe,null),r.createElement(Be,(0,h.Z)({tag:o.HX,locale:u},b)),r.createElement(y.Z,null,c.map((function(e,t){return r.createElement("meta",(0,h.Z)({key:"metadata_"+t},e))}))))}var Oe=function(){(0,r.useEffect)((function(){var e="navigation-with-keyboard";function t(t){"keydown"===t.type&&"Tab"===t.key&&document.body.classList.add(e),"mousedown"===t.type&&document.body.classList.remove(e)}return document.addEventListener("keydown",t),document.addEventListener("mousedown",t),function(){document.body.classList.remove(e),document.removeEventListener("keydown",t),document.removeEventListener("mousedown",t)}}),[])};var Re=function(e){var t=e.children,n=e.noFooter,l=e.wrapperClassName,c=e.pageClassName;return Oe(),r.createElement(Te,null,r.createElement(Ae,e),r.createElement(s,null),r.createElement(v,null),r.createElement(me,null),r.createElement("div",{className:(0,a.Z)(o.kM.wrapper.main,l,c)},t),!n&&r.createElement(be,null))}},5537:function(e,t,n){var r=n(7462),a=n(3366),l=n(7294),o=n(6742),c=n(8465),i=n(4996),s=n(2263),u=["imageClassName","titleClassName"];t.Z=function(e){var t=(0,s.Z)(),n=t.siteConfig,m=n.title,d=n.themeConfig.navbar,f=d.title,v=d.logo,h=void 0===v?{src:""}:v,g=t.isClient,b=e.imageClassName,E=e.titleClassName,p=(0,a.Z)(e,u),k=(0,i.Z)(h.href||"/"),Z={light:(0,i.Z)(h.src),dark:(0,i.Z)(h.srcDark||h.src)};return l.createElement(o.Z,(0,r.Z)({to:k},p,h.target&&{target:h.target}),h.src&&l.createElement(c.Z,{key:g,className:b,sources:Z,alt:h.alt||f||m}),null!=f&&l.createElement("b",{className:E},f))}},5525:function(e,t,n){var r=n(7462),a=n(3366),l=n(7294),o=n(6010),c=n(6742),i=n(4996),s=n(5977),u=n(9306),m=n(8617),d=n(3919),f=["activeBasePath","activeBaseRegex","to","href","label","activeClassName","prependBaseUrlToHref"],v=["items","position","className"],h=["className"],g=["items","className","position"],b=["className"],E=["mobile"],p="dropdown__link--active";function k(e){var t=e.activeBasePath,n=e.activeBaseRegex,o=e.to,s=e.href,u=e.label,v=e.activeClassName,h=void 0===v?"navbar__link--active":v,g=e.prependBaseUrlToHref,b=(0,a.Z)(e,f),E=(0,i.Z)(o),k=(0,i.Z)(t),Z=(0,i.Z)(s,{forcePrependBaseUrl:!0}),y=u&&s&&!(0,d.Z)(s),C=h===p;return l.createElement(c.Z,(0,r.Z)({},s?{href:g?Z:s}:Object.assign({isNavLink:!0,activeClassName:h,to:E},t||n?{isActive:function(e,t){return n?new RegExp(n).test(t.pathname):t.pathname.startsWith(k)}}:null),b),y?l.createElement("span",null,u,l.createElement(m.Z,C&&{width:12,height:12})):u)}function Z(e){var t,n=e.items,c=e.position,i=e.className,s=(0,a.Z)(e,v),u=(0,l.useRef)(null),m=(0,l.useRef)(null),d=(0,l.useState)(!1),f=d[0],g=d[1];(0,l.useEffect)((function(){var e=function(e){u.current&&!u.current.contains(e.target)&&g(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),function(){document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)}}),[u]);var b=function(e,t){return void 0===t&&(t=!1),(0,o.Z)({"navbar__item navbar__link":!t,dropdown__link:t},e)};return n?l.createElement("div",{ref:u,className:(0,o.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--left":"left"===c,"dropdown--right":"right"===c,"dropdown--show":f})},l.createElement(k,(0,r.Z)({className:b(i)},s,{onClick:s.to?void 0:function(e){return e.preventDefault()},onKeyDown:function(e){"Enter"===e.key&&(e.preventDefault(),g(!f))}}),null!=(t=s.children)?t:s.label),l.createElement("ul",{ref:m,className:"dropdown__menu"},n.map((function(e,t){var o=e.className,c=(0,a.Z)(e,h);return l.createElement("li",{key:t},l.createElement(k,(0,r.Z)({onKeyDown:function(e){if(t===n.length-1&&"Tab"===e.key){e.preventDefault(),g(!1);var r=u.current.nextElementSibling;r&&r.focus()}},activeClassName:p,className:b(o,!0)},c)))})))):l.createElement(k,(0,r.Z)({className:b(i)},s))}function y(e){var t,n,c,i=e.items,m=e.className,d=(e.position,(0,a.Z)(e,g)),f=(0,l.useRef)(null),v=(0,s.TH)().pathname,h=(0,l.useState)((function(){var e;return null==(e=!(null!=i&&i.some((function(e){return(0,u.Mg)(e.to,v)}))))||e})),E=h[0],p=h[1],Z=function(e,t){return void 0===t&&(t=!1),(0,o.Z)("menu__link",{"menu__link--sublist":t},e)};if(!i)return l.createElement("li",{className:"menu__list-item"},l.createElement(k,(0,r.Z)({className:Z(m)},d)));var y=null!=(t=f.current)&&t.scrollHeight?(null==(n=f.current)?void 0:n.scrollHeight)+"px":void 0;return l.createElement("li",{className:(0,o.Z)("menu__list-item",{"menu__list-item--collapsed":E})},l.createElement(k,(0,r.Z)({role:"button",className:Z(m,!0)},d,{onClick:function(e){e.preventDefault(),p((function(e){return!e}))}}),null!=(c=d.children)?c:d.label),l.createElement("ul",{className:"menu__list",ref:f,style:{height:E?void 0:y}},i.map((function(e,t){var n=e.className,o=(0,a.Z)(e,b);return l.createElement("li",{className:"menu__list-item",key:t},l.createElement(k,(0,r.Z)({activeClassName:"menu__link--active",className:Z(n)},o,{onClick:d.onClick})))}))))}t.Z=function(e){var t=e.mobile,n=void 0!==t&&t,r=(0,a.Z)(e,E),o=n?y:Z;return l.createElement(o,r)}},6400:function(e,t,n){n.d(t,{Z:function(){return d}});var r=n(7462),a=n(3366),l=n(7294),o=n(5525),c=n(907),i=n(6010),s=n(9306),u=n(8780),m=["docId","activeSidebarClassName","label","docsPluginId"];function d(e){var t,n=e.docId,d=e.activeSidebarClassName,f=e.label,v=e.docsPluginId,h=(0,a.Z)(e,m),g=(0,c.Iw)(v),b=g.activeVersion,E=g.activeDoc,p=(0,s.J)(v).preferredVersion,k=(0,c.yW)(v),Z=function(e,t){var n,r=(n=[]).concat.apply(n,e.map((function(e){return e.docs}))),a=r.find((function(e){return e.id===t}));if(!a){var l=r.map((function(e){return e.id})).join("\n- ");throw new Error("DocNavbarItem: couldn't find any doc with id \""+t+'" in version'+(e.length?"s":"")+" "+e.map((function(e){return e.name})).join(", ")+'".\nAvailable doc ids are:\n- '+l)}return a}((0,u.uniq)([b,p,k].filter(Boolean)),n);return l.createElement(o.Z,(0,r.Z)({exact:!0},h,{className:(0,i.Z)(h.className,(t={},t[d]=E&&E.sidebar===Z.sidebar,t)),label:null!=f?f:Z.id,to:Z.path}))}},9308:function(e,t,n){n.d(t,{Z:function(){return m}});var r=n(7462),a=n(3366),l=n(7294),o=n(5525),c=n(907),i=n(9306),s=["mobile","docsPluginId","dropdownActiveClassDisabled","dropdownItemsBefore","dropdownItemsAfter"],u=function(e){return e.docs.find((function(t){return t.id===e.mainDocId}))};function m(e){var t,n,m=e.mobile,d=e.docsPluginId,f=e.dropdownActiveClassDisabled,v=e.dropdownItemsBefore,h=e.dropdownItemsAfter,g=(0,a.Z)(e,s),b=(0,c.Iw)(d),E=(0,c.gB)(d),p=(0,c.yW)(d),k=(0,i.J)(d),Z=k.preferredVersion,y=k.savePreferredVersionName;var C=function(){var e=E.map((function(e){var t=(null==b?void 0:b.alternateDocVersions[e.name])||u(e);return{isNavLink:!0,label:e.label,to:t.path,isActive:function(){return e===(null==b?void 0:b.activeVersion)},onClick:function(){y(e.name)}}})),t=[].concat(v,e,h);if(!(t.length<=1))return t}(),w=null!=(t=null!=(n=b.activeVersion)?n:Z)?t:p,N=m&&C?"Versions":w.label,_=m&&C?void 0:u(w).path;return l.createElement(o.Z,(0,r.Z)({},g,{mobile:m,label:N,to:_,items:C,isActive:f?function(){return!1}:void 0}))}},7250:function(e,t,n){n.d(t,{Z:function(){return u}});var r=n(7462),a=n(3366),l=n(7294),o=n(5525),c=n(907),i=n(9306),s=["label","to","docsPluginId"];function u(e){var t,n=e.label,u=e.to,m=e.docsPluginId,d=(0,a.Z)(e,s),f=(0,c.zu)(m),v=(0,i.J)(m).preferredVersion,h=(0,c.yW)(m),g=null!=(t=null!=f?f:v)?t:h,b=null!=n?n:g.label,E=null!=u?u:function(e){return e.docs.find((function(t){return t.id===e.mainDocId}))}(g).path;return l.createElement(o.Z,(0,r.Z)({},d,{label:b,to:E}))}},2924:function(e,t,n){var r=n(7294).createContext(void 0);t.Z=r},8465:function(e,t,n){n.d(t,{Z:function(){return m}});var r=n(7462),a=n(3366),l=n(7294),o=n(6010),c=n(2263),i=n(5350),s={themedImage:"themedImage_TMUO","themedImage--light":"themedImage--light_4Vu1","themedImage--dark":"themedImage--dark_uzRr"},u=["sources","className","alt"],m=function(e){var t=(0,c.Z)().isClient,n=(0,i.Z)().isDarkTheme,m=e.sources,d=e.className,f=e.alt,v=void 0===f?"":f,h=(0,a.Z)(e,u),g=t?n?["dark"]:["light"]:["light","dark"];return l.createElement(l.Fragment,null,g.map((function(e){return l.createElement("img",(0,r.Z)({key:e,src:m[e],alt:v,className:(0,o.Z)(s.themedImage,s["themedImage--"+e],d)},h))})))}},1839:function(e,t,n){var r=n(7294);t.Z=function(e){void 0===e&&(e=!0),(0,r.useEffect)((function(){return document.body.style.overflow=e?"hidden":"visible",function(){document.body.style.overflow="visible"}}),[e])}},7898:function(e,t,n){var r=n(7294),a=n(412),l=function(){return{scrollX:a.Z.canUseDOM?window.pageXOffset:0,scrollY:a.Z.canUseDOM?window.pageYOffset:0}};t.Z=function(e,t){void 0===t&&(t=[]);var n=(0,r.useRef)(l()),a=function(){var t=l();e&&e(t,n.current),n.current=t};(0,r.useEffect)((function(){var e={passive:!0};return a(),window.addEventListener("scroll",a,e),function(){return window.removeEventListener("scroll",a,e)}}),t)}},5350:function(e,t,n){var r=n(7294),a=n(2924);t.Z=function(){var e=(0,r.useContext)(a.Z);if(null==e)throw new Error('"useThemeContext" is used outside of "Layout" component. Please see https://docusaurus.io/docs/api/themes/configuration#usethemecontext.');return e}},3783:function(e,t,n){n.d(t,{D:function(){return l}});var r=n(7294),a=n(412),l={desktop:"desktop",mobile:"mobile"};t.Z=function(){var e=a.Z.canUseDOM;function t(){if(e)return window.innerWidth>996?l.desktop:l.mobile}var n=(0,r.useState)(t),o=n[0],c=n[1];return(0,r.useEffect)((function(){if(e)return window.addEventListener("resize",n),function(){return window.removeEventListener("resize",n)};function n(){c(t())}}),[]),o}}}]); \ No newline at end of file diff --git a/assets/js/402.677917c9.js b/assets/js/402.677917c9.js new file mode 100644 index 00000000..e4d7c697 --- /dev/null +++ b/assets/js/402.677917c9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[402],{830:(e,t,n)=>{n.d(t,{W:()=>r});var a=n(7294);function r(){return a.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},a.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}},2644:(e,t,n)=>{n.d(t,{Z:()=>o});var a=n(6550),r=n(412),l=n(2263);const o=function(){const e=(0,a.k6)(),t=(0,a.TH)(),{siteConfig:{baseUrl:n}={}}=(0,l.Z)();return{searchValue:r.Z.canUseDOM&&new URLSearchParams(t.search).get("q")||"",updateSearchPath:n=>{const a=new URLSearchParams(t.search);n?a.set("q",n):a.delete("q"),e.replace({search:a.toString()})},generateSearchPageLink:e=>`${n}search?q=${encodeURIComponent(e)}`}}},8617:(e,t,n)=>{n.d(t,{Z:()=>l});var a=n(7294);const r="iconExternalLink_wgqa",l=e=>{let{width:t=13.5,height:n=13.5}=e;return a.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r},a.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},4478:(e,t,n)=>{n.d(t,{Z:()=>l});var a=n(7462),r=n(7294);const l=e=>{let{width:t=30,height:n=30,className:l,...o}=e;return r.createElement("svg",(0,a.Z)({className:l,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}},6402:(e,t,n)=>{n.d(t,{Z:()=>Me});var a=n(7294),r=n(6010),l=n(4973),o=n(9306);const c="skipToContent_OuoZ";function s(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}const i=function(){const e=(0,a.useRef)(null);return(0,o.SL)((t=>{let{location:n}=t;e.current&&!n.hash&&s(e.current)})),a.createElement("div",{ref:e},a.createElement("a",{href:"#main",className:c,onClick:e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")||document.querySelector(".main-wrapper");t&&s(t)}},a.createElement(l.Z,{id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation"},"Skip to main content")))},m="announcementBar_axC9",u="announcementBarClose_A3A1",d="announcementBarContent_6uhP",h="announcementBarCloseable_y4cp";const f=function(){const{isClosed:e,close:t}=(0,o.nT)(),{announcementBar:n}=(0,o.LU)();if(!n)return null;const{content:c,backgroundColor:s,textColor:i,isCloseable:f}=n;return!c||f&&e?null:a.createElement("div",{className:m,style:{backgroundColor:s,color:i},role:"banner"},a.createElement("div",{className:(0,r.Z)(d,{[h]:f}),dangerouslySetInnerHTML:{__html:c}}),f?a.createElement("button",{type:"button",className:(0,r.Z)(u,"clean-btn"),onClick:t,"aria-label":(0,l.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},a.createElement("span",{"aria-hidden":"true"},"\xd7")):null)};var v=n(7462),g=n(3935),b=n(2263),E=n(6550),p=n(4996),k=n(6742),y=n(9105),Z=n(2644);function C(){return a.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},a.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}var w=n(830),_=["translations"];function N(){return N=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,a=new Array(t);n=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var D="Ctrl";var T=a.forwardRef((function(e,t){var n=e.translations,r=void 0===n?{}:n,l=I(e,_),o=r.buttonText,c=void 0===o?"Search":o,s=r.buttonAriaLabel,i=void 0===s?"Search":s,m=S((0,a.useState)(null),2),u=m[0],d=m[1];return(0,a.useEffect)((function(){"undefined"!=typeof navigator&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?d("\u2318"):d(D))}),[]),a.createElement("button",N({type:"button",className:"DocSearch DocSearch-Button","aria-label":i},l,{ref:t}),a.createElement("span",{className:"DocSearch-Button-Container"},a.createElement(w.W,null),a.createElement("span",{className:"DocSearch-Button-Placeholder"},c)),a.createElement("span",{className:"DocSearch-Button-Keys"},null!==u&&a.createElement(a.Fragment,null,a.createElement("kbd",{className:"DocSearch-Button-Key"},u===D?a.createElement(C,null):u),a.createElement("kbd",{className:"DocSearch-Button-Key"},"K"))))})),A=n(907);function B(){const{locale:e,tags:t}=function(){const{i18n:e}=(0,b.Z)(),t=(0,A._r)(),n=(0,A.WS)(),a=(0,o.Oh)(),r=[o.HX,...Object.keys(t).map((function(e){const r=n?.activePlugin?.pluginId===e?n.activeVersion:void 0,l=a[e],c=t[e].versions.find((e=>e.isLast)),s=r??l??c;return(0,o.os)(e,s.name)}))];return{locale:e.currentLocale,tags:r}}();return[`language:${e}`,t.map((e=>`docusaurus_tag:${e}`))]}const x={searchBox:"searchBox_Bc3W"};let M=null;function P(e){let{hit:t,children:n}=e;return a.createElement(k.Z,{to:t.url},n)}function O(e){let{state:t,onClose:n}=e;const{generateSearchPageLink:r}=(0,Z.Z)();return a.createElement(k.Z,{to:r(t.query),onClick:n},"See all ",t.context.nbHits," results")}function R(e){let{contextualSearch:t,...r}=e;const{siteMetadata:o}=(0,b.Z)(),c=B(),s=r.searchParameters?.facetFilters??[],i=t?[...c,...s]:s,m={...r.searchParameters,facetFilters:i},{withBaseUrl:u}=(0,p.C)(),d=(0,E.k6)(),h=(0,a.useRef)(null),f=(0,a.useRef)(null),[k,Z]=(0,a.useState)(!1),[C,w]=(0,a.useState)(null),_=(0,a.useCallback)((()=>M?Promise.resolve():Promise.all([n.e(431).then(n.bind(n,2431)),Promise.all([n.e(312),n.e(945)]).then(n.bind(n,6945)),Promise.all([n.e(312),n.e(40)]).then(n.bind(n,5040))]).then((e=>{let[{DocSearchModal:t}]=e;M=t}))),[]),N=(0,a.useCallback)((()=>{_().then((()=>{h.current=document.createElement("div"),document.body.insertBefore(h.current,document.body.firstChild),Z(!0)}))}),[_,Z]),S=(0,a.useCallback)((()=>{Z(!1),h.current.remove()}),[Z]),L=(0,a.useCallback)((e=>{_().then((()=>{Z(!0),w(e.key)}))}),[_,Z,w]),I=(0,a.useRef)({navigate(e){let{itemUrl:t}=e;d.push(t)}}).current,D=(0,a.useRef)((e=>e.map((e=>{const t=document.createElement("a");return t.href=e.url,{...e,url:u(`${t.pathname}${t.hash}`)}})))).current,A=(0,a.useMemo)((()=>e=>a.createElement(O,(0,v.Z)({},e,{onClose:S}))),[S]),R=(0,a.useCallback)((e=>(e.addAlgoliaAgent("docusaurus",o.docusaurusVersion),e)),[o.docusaurusVersion]);!function(e){var t=e.isOpen,n=e.onOpen,r=e.onClose,l=e.onInput,o=e.searchButtonRef;a.useEffect((function(){function e(e){(27===e.keyCode&&t||"k"===e.key.toLowerCase()&&(e.metaKey||e.ctrlKey)||!function(e){var t=e.target,n=t.tagName;return t.isContentEditable||"INPUT"===n||"SELECT"===n||"TEXTAREA"===n}(e)&&"/"===e.key&&!t)&&(e.preventDefault(),t?r():document.body.classList.contains("DocSearch--active")||document.body.classList.contains("DocSearch--active")||n()),o&&o.current===document.activeElement&&l&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&l(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[t,n,r,l,o])}({isOpen:k,onOpen:N,onClose:S,onInput:L,searchButtonRef:f});const U=(0,l.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"});return a.createElement(a.Fragment,null,a.createElement(y.Z,null,a.createElement("link",{rel:"preconnect",href:`https://${r.appId}-dsn.algolia.net`,crossOrigin:"anonymous"})),a.createElement("div",{className:x.searchBox},a.createElement(T,{onTouchStart:_,onFocus:_,onMouseOver:_,onClick:N,ref:f,translations:{buttonText:U,buttonAriaLabel:U}})),k&&(0,g.createPortal)(a.createElement(M,(0,v.Z)({onClose:S,initialScrollY:window.scrollY,initialQuery:C,navigator:I,transformItems:D,hitComponent:P,resultsFooterComponent:A,transformSearchClient:R},r,{searchParameters:m})),h.current))}const U=function(){const{siteConfig:e}=(0,b.Z)();return a.createElement(R,e.themeConfig.algolia)},V={toggle:"toggle_iYfV"},$=e=>{let{icon:t,style:n}=e;return a.createElement("span",{className:(0,r.Z)(V.toggle,V.dark),style:n},t)},H=e=>{let{icon:t,style:n}=e;return a.createElement("span",{className:(0,r.Z)(V.toggle,V.light),style:n},t)},W=(0,a.memo)((e=>{let{className:t,icons:n,checked:l,disabled:o,onChange:c}=e;const[s,i]=(0,a.useState)(l),[m,u]=(0,a.useState)(!1),d=(0,a.useRef)(null);return a.createElement("div",{className:(0,r.Z)("react-toggle",t,{"react-toggle--checked":s,"react-toggle--focus":m,"react-toggle--disabled":o})},a.createElement("div",{className:"react-toggle-track",role:"button",tabIndex:-1,onClick:()=>d.current?.click()},a.createElement("div",{className:"react-toggle-track-check"},n.checked),a.createElement("div",{className:"react-toggle-track-x"},n.unchecked),a.createElement("div",{className:"react-toggle-thumb"})),a.createElement("input",{ref:d,checked:s,type:"checkbox",className:"react-toggle-screenreader-only","aria-label":"Switch between dark and light mode",onChange:c,onClick:()=>i(!s),onFocus:()=>u(!0),onBlur:()=>u(!1)}))}));function z(e){const{colorMode:{switchConfig:{darkIcon:t,darkIconStyle:n,lightIcon:r,lightIconStyle:l}}}=(0,o.LU)(),{isClient:c}=(0,b.Z)();return a.createElement(W,(0,v.Z)({disabled:!c,icons:{checked:a.createElement($,{icon:t,style:n}),unchecked:a.createElement(H,{icon:r,style:l})}},e))}var j=n(5350),F=n(7898);const q=e=>{const t=(0,E.TH)(),[n,r]=(0,a.useState)(e),l=(0,a.useRef)(!1),[c,s]=(0,a.useState)(0),i=(0,a.useCallback)((e=>{null!==e&&s(e.getBoundingClientRect().height)}),[]);return(0,F.Z)(((t,n)=>{let{scrollY:a}=t,{scrollY:o}=n;if(!e)return;if(a=o?r(!1):a+i{e&&!t.location.hash&&r(!0)})),(0,a.useEffect)((()=>{e&&t.hash&&(l.current=!0)}),[t.hash]),{navbarRef:i,isNavbarVisible:n}};var K=n(1839),Y=n(3783),G=n(5525);const X=e=>{let{width:t=20,height:n=20,...r}=e;return a.createElement("svg",(0,v.Z)({viewBox:"0 0 20 20",width:t,height:n,"aria-hidden":"true"},r),a.createElement("path",{fill:"currentColor",d:"M19.753 10.909c-.624-1.707-2.366-2.726-4.661-2.726-.09 0-.176.002-.262.006l-.016-2.063 3.525-.607c.115-.019.133-.119.109-.231-.023-.111-.167-.883-.188-.976-.027-.131-.102-.127-.207-.109-.104.018-3.25.461-3.25.461l-.013-2.078c-.001-.125-.069-.158-.194-.156l-1.025.016c-.105.002-.164.049-.162.148l.033 2.307s-3.061.527-3.144.543c-.084.014-.17.053-.151.143.019.09.19 1.094.208 1.172.018.08.072.129.188.107l2.924-.504.035 2.018c-1.077.281-1.801.824-2.256 1.303-.768.807-1.207 1.887-1.207 2.963 0 1.586.971 2.529 2.328 2.695 3.162.387 5.119-3.06 5.769-4.715 1.097 1.506.256 4.354-2.094 5.98-.043.029-.098.129-.033.207l.619.756c.08.096.206.059.256.023 2.51-1.73 3.661-4.515 2.869-6.683zm-7.386 3.188c-.966-.121-.944-.914-.944-1.453 0-.773.327-1.58.876-2.156a3.21 3.21 0 011.229-.799l.082 4.277a2.773 2.773 0 01-1.243.131zm2.427-.553l.046-4.109c.084-.004.166-.01.252-.01.773 0 1.494.145 1.885.361.391.217-1.023 2.713-2.183 3.758zm-8.95-7.668a.196.196 0 00-.196-.145h-1.95a.194.194 0 00-.194.144L.008 16.916c-.017.051-.011.076.062.076h1.733c.075 0 .099-.023.114-.072l1.008-3.318h3.496l1.008 3.318c.016.049.039.072.113.072h1.734c.072 0 .078-.025.062-.076-.014-.05-3.083-9.741-3.494-11.04zm-2.618 6.318l1.447-5.25 1.447 5.25H3.226z"}))};function Q(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,...l}=e;const{i18n:{currentLocale:c,locales:s,localeConfigs:i}}=(0,b.Z)(),m=(0,o.l5)();function u(e){return i[e].label}const d=[...n,...s.map((e=>{const t=`pathname://${m.createUrl({locale:e,fullyQualified:!1})}`;return{isNavLink:!0,label:u(e),to:t,target:"_self",autoAddBaseUrl:!1,className:e===c?"dropdown__link--active":"",style:{textTransform:"capitalize"}}})),...r],h=t?"Languages":u(c);return a.createElement(G.Z,(0,v.Z)({},l,{href:"#",mobile:t,label:a.createElement("span",null,a.createElement(X,{style:{verticalAlign:"text-bottom",marginRight:5}}),a.createElement("span",null,h)),items:d}))}function J(e){let{mobile:t}=e;return t?null:a.createElement(U,null)}const ee={default:()=>G.Z,localeDropdown:()=>Q,search:()=>J,docsVersion:()=>n(7250).Z,docsVersionDropdown:()=>n(9308).Z,doc:()=>n(6400).Z},te=function(e){void 0===e&&(e="default");const t=ee[e];if(!t)throw new Error(`No NavbarItem component found for type "${e}".`);return t()};function ne(e){let{type:t,...n}=e;const r=te(t);return a.createElement(r,n)}var ae=n(5537),re=n(4478);const le="displayOnlyInLargeViewport_cxYs",oe="navbarHideable_RReh",ce="navbarHidden_FBwS",se="right";const ie=function(){const{navbar:{items:e,hideOnScroll:t,style:n},colorMode:{disableSwitch:l}}=(0,o.LU)(),[c,s]=(0,a.useState)(!1),{isDarkTheme:i,setLightTheme:m,setDarkTheme:u}=(0,j.Z)(),{navbarRef:d,isNavbarVisible:h}=q(t);(0,K.Z)(c);const f=(0,a.useCallback)((()=>{s(!0)}),[s]),g=(0,a.useCallback)((()=>{s(!1)}),[s]),b=(0,a.useCallback)((e=>e.target.checked?u():m()),[m,u]),E=(0,Y.Z)();(0,a.useEffect)((()=>{E===Y.D.desktop&&s(!1)}),[E]);const p=e.some((e=>"search"===e.type)),{leftItems:k,rightItems:y}=function(e){return{leftItems:e.filter((e=>"left"===(e.position??se))),rightItems:e.filter((e=>"right"===(e.position??se)))}}(e);return a.createElement("nav",{ref:d,className:(0,r.Z)("navbar","navbar--fixed-top",{"navbar--dark":"dark"===n,"navbar--primary":"primary"===n,"navbar-sidebar--show":c,[oe]:t,[ce]:t&&!h})},a.createElement("div",{className:"navbar__inner"},a.createElement("div",{className:"navbar__items"},null!=e&&0!==e.length&&a.createElement("button",{"aria-label":"Navigation bar toggle",className:"navbar__toggle clean-btn",type:"button",tabIndex:0,onClick:f,onKeyDown:f},a.createElement(re.Z,null)),a.createElement(ae.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title"}),k.map(((e,t)=>a.createElement(ne,(0,v.Z)({},e,{key:t}))))),a.createElement("div",{className:"navbar__items navbar__items--right"},y.map(((e,t)=>a.createElement(ne,(0,v.Z)({},e,{key:t})))),!l&&a.createElement(z,{className:le,checked:i,onChange:b}),!p&&a.createElement(U,null))),a.createElement("div",{role:"presentation",className:"navbar-sidebar__backdrop",onClick:g}),a.createElement("div",{className:"navbar-sidebar"},a.createElement("div",{className:"navbar-sidebar__brand"},a.createElement(ae.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title",onClick:g}),!l&&c&&a.createElement(z,{checked:i,onChange:b})),a.createElement("div",{className:"navbar-sidebar__items"},a.createElement("div",{className:"menu"},a.createElement("ul",{className:"menu__list"},e.map(((e,t)=>a.createElement(ne,(0,v.Z)({mobile:!0},e,{onClick:g,key:t})))))))))},me="footerLogoLink_SRtH";var ue=n(8465);function de(e){let{to:t,href:n,label:r,prependBaseUrlToHref:l,...o}=e;const c=(0,p.Z)(t),s=(0,p.Z)(n,{forcePrependBaseUrl:!0});return a.createElement(k.Z,(0,v.Z)({className:"footer__link-item"},n?{href:l?s:n}:{to:c},o),r)}const he=e=>{let{sources:t,alt:n}=e;return a.createElement(ue.Z,{className:"footer__logo",alt:n,sources:t})};const fe=function(){const{footer:e}=(0,o.LU)(),{copyright:t,links:n=[],logo:l={}}=e||{},c={light:(0,p.Z)(l.src),dark:(0,p.Z)(l.srcDark||l.src)};return e?a.createElement("footer",{className:(0,r.Z)("footer",{"footer--dark":"dark"===e.style})},a.createElement("div",{className:"container"},n&&n.length>0&&a.createElement("div",{className:"row footer__links"},n.map(((e,t)=>a.createElement("div",{key:t,className:"col footer__col"},null!=e.title?a.createElement("div",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?a.createElement("ul",{className:"footer__items"},e.items.map(((e,t)=>e.html?a.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):a.createElement("li",{key:e.href||e.to,className:"footer__item"},a.createElement(de,e))))):null)))),(l||t)&&a.createElement("div",{className:"footer__bottom text--center"},l&&(l.src||l.srcDark)&&a.createElement("div",{className:"margin-bottom--sm"},l.href?a.createElement(k.Z,{href:l.href,className:me},a.createElement(he,{alt:l.alt,sources:c})):a.createElement(he,{alt:l.alt,sources:c})),t?a.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}}):null))):null};var ve=n(412);const ge=(0,o.WA)("theme"),be="light",Ee="dark",pe=e=>e===Ee?Ee:be,ke=e=>{(0,o.WA)("theme").set(pe(e))},ye=()=>{const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,o.LU)(),[r,l]=(0,a.useState)((e=>ve.Z.canUseDOM?pe(document.documentElement.getAttribute("data-theme")):pe(e))(e)),c=(0,a.useCallback)((()=>{l(be),ke(be)}),[]),s=(0,a.useCallback)((()=>{l(Ee),ke(Ee)}),[]);return(0,a.useEffect)((()=>{document.documentElement.setAttribute("data-theme",pe(r))}),[r]),(0,a.useEffect)((()=>{if(!t)try{const e=ge.get();null!==e&&l(pe(e))}catch(e){console.error(e)}}),[l]),(0,a.useEffect)((()=>{t&&!n||window.matchMedia("(prefers-color-scheme: dark)").addListener((e=>{let{matches:t}=e;l(t?Ee:be)}))}),[]),{isDarkTheme:r===Ee,setLightTheme:c,setDarkTheme:s}};var Ze=n(2924);const Ce=function(e){const{isDarkTheme:t,setLightTheme:n,setDarkTheme:r}=ye();return a.createElement(Ze.Z.Provider,{value:{isDarkTheme:t,setLightTheme:n,setDarkTheme:r}},e.children)},we="docusaurus.tab.",_e=()=>{const[e,t]=(0,a.useState)({}),n=(0,a.useCallback)(((e,t)=>{(0,o.WA)(`${we}${e}`).set(t)}),[]);return(0,a.useEffect)((()=>{try{const e={};(0,o._f)().forEach((t=>{if(t.startsWith(we)){const n=t.substring(we.length);e[n]=(0,o.WA)(t).get()}})),t(e)}catch(e){console.error(e)}}),[]),{tabGroupChoices:e,setTabGroupChoices:(e,a)=>{t((t=>({...t,[e]:a}))),n(e,a)}}},Ne=(0,a.createContext)(void 0);const Se=function(e){const{tabGroupChoices:t,setTabGroupChoices:n}=_e();return a.createElement(Ne.Provider,{value:{tabGroupChoices:t,setTabGroupChoices:n}},e.children)};function Le(e){let{children:t}=e;return a.createElement(Ce,null,a.createElement(o.pl,null,a.createElement(Se,null,a.createElement(o.L5,null,t))))}function Ie(e){let{locale:t,version:n,tag:r}=e;const l=t;return a.createElement(y.Z,null,l&&a.createElement("meta",{name:"docsearch:language",content:l}),n&&a.createElement("meta",{name:"docsearch:version",content:n}),r&&a.createElement("meta",{name:"docsearch:docusaurus_tag",content:r}))}var De=n(1217);function Te(){const{i18n:{defaultLocale:e,locales:t}}=(0,b.Z)(),n=(0,o.l5)();return a.createElement(y.Z,null,t.map((e=>a.createElement("link",{key:e,rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:e}))),a.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function Ae(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,b.Z)(),r=function(){const{siteConfig:{url:e}}=(0,b.Z)(),{pathname:t}=(0,E.TH)();return e+(0,p.Z)(t)}(),l=t?`${n}${t}`:r;return a.createElement(y.Z,null,a.createElement("meta",{property:"og:url",content:l}),a.createElement("link",{rel:"canonical",href:l}))}function Be(e){const{siteConfig:{favicon:t,themeConfig:{metadatas:n,image:r}},i18n:{currentLocale:l,localeConfigs:c}}=(0,b.Z)(),{title:s,description:i,image:m,keywords:u,searchMetadatas:d}=e,h=(0,p.Z)(t),f=(0,o.pe)(s),g=l,E=c[l].direction;return a.createElement(a.Fragment,null,a.createElement(y.Z,null,a.createElement("html",{lang:g,dir:E}),t&&a.createElement("link",{rel:"shortcut icon",href:h}),a.createElement("title",null,f),a.createElement("meta",{property:"og:title",content:f}),m||r&&a.createElement("meta",{name:"twitter:card",content:"summary_large_image"})),a.createElement(De.Z,{description:i,keywords:u,image:m}),a.createElement(Ae,null),a.createElement(Te,null),a.createElement(Ie,(0,v.Z)({tag:o.HX,locale:l},d)),a.createElement(y.Z,null,n.map(((e,t)=>a.createElement("meta",(0,v.Z)({key:`metadata_${t}`},e))))))}const xe=function(){(0,a.useEffect)((()=>{const e="navigation-with-keyboard";function t(t){"keydown"===t.type&&"Tab"===t.key&&document.body.classList.add(e),"mousedown"===t.type&&document.body.classList.remove(e)}return document.addEventListener("keydown",t),document.addEventListener("mousedown",t),()=>{document.body.classList.remove(e),document.removeEventListener("keydown",t),document.removeEventListener("mousedown",t)}}),[])};const Me=function(e){const{children:t,noFooter:n,wrapperClassName:l,pageClassName:c}=e;return xe(),a.createElement(Le,null,a.createElement(Be,e),a.createElement(i,null),a.createElement(f,null),a.createElement(ie,null),a.createElement("div",{className:(0,r.Z)(o.kM.wrapper.main,l,c)},t),!n&&a.createElement(fe,null))}},5537:(e,t,n)=>{n.d(t,{Z:()=>i});var a=n(7462),r=n(7294),l=n(6742),o=n(8465),c=n(4996),s=n(2263);const i=e=>{const{siteConfig:{title:t,themeConfig:{navbar:{title:n,logo:i={src:""}}}},isClient:m}=(0,s.Z)(),{imageClassName:u,titleClassName:d,...h}=e,f=(0,c.Z)(i.href||"/"),v={light:(0,c.Z)(i.src),dark:(0,c.Z)(i.srcDark||i.src)};return r.createElement(l.Z,(0,a.Z)({to:f},h,i.target&&{target:i.target}),i.src&&r.createElement(o.Z,{key:m,className:u,sources:v,alt:i.alt||n||t}),null!=n&&r.createElement("b",{className:d},n))}},5525:(e,t,n)=>{n.d(t,{Z:()=>g});var a=n(7462),r=n(7294),l=n(6010),o=n(6742),c=n(4996),s=n(6550),i=n(9306),m=n(8617),u=n(3919);const d="dropdown__link--active";function h(e){let{activeBasePath:t,activeBaseRegex:n,to:l,href:s,label:i,activeClassName:h="navbar__link--active",prependBaseUrlToHref:f,...v}=e;const g=(0,c.Z)(l),b=(0,c.Z)(t),E=(0,c.Z)(s,{forcePrependBaseUrl:!0}),p=i&&s&&!(0,u.Z)(s),k=h===d;return r.createElement(o.Z,(0,a.Z)({},s?{href:f?E:s}:{isNavLink:!0,activeClassName:h,to:g,...t||n?{isActive:(e,t)=>n?new RegExp(n).test(t.pathname):t.pathname.startsWith(b)}:null},v),p?r.createElement("span",null,i,r.createElement(m.Z,k&&{width:12,height:12})):i)}function f(e){let{items:t,position:n,className:o,...c}=e;const s=(0,r.useRef)(null),i=(0,r.useRef)(null),[m,u]=(0,r.useState)(!1);(0,r.useEffect)((()=>{const e=e=>{s.current&&!s.current.contains(e.target)&&u(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)}}),[s]);const f=function(e,t){return void 0===t&&(t=!1),(0,l.Z)({"navbar__item navbar__link":!t,dropdown__link:t},e)};return t?r.createElement("div",{ref:s,className:(0,l.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--left":"left"===n,"dropdown--right":"right"===n,"dropdown--show":m})},r.createElement(h,(0,a.Z)({className:f(o)},c,{onClick:c.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),u(!m))}}),c.children??c.label),r.createElement("ul",{ref:i,className:"dropdown__menu"},t.map(((e,n)=>{let{className:l,...o}=e;return r.createElement("li",{key:n},r.createElement(h,(0,a.Z)({onKeyDown:e=>{if(n===t.length-1&&"Tab"===e.key){e.preventDefault(),u(!1);const t=s.current.nextElementSibling;t&&t.focus()}},activeClassName:d,className:f(l,!0)},o)))})))):r.createElement(h,(0,a.Z)({className:f(o)},c))}function v(e){let{items:t,className:n,position:o,...c}=e;const m=(0,r.useRef)(null),{pathname:u}=(0,s.TH)(),[d,f]=(0,r.useState)((()=>!t?.some((e=>(0,i.Mg)(e.to,u)))??!0)),v=function(e,t){return void 0===t&&(t=!1),(0,l.Z)("menu__link",{"menu__link--sublist":t},e)};if(!t)return r.createElement("li",{className:"menu__list-item"},r.createElement(h,(0,a.Z)({className:v(n)},c)));const g=m.current?.scrollHeight?`${m.current?.scrollHeight}px`:void 0;return r.createElement("li",{className:(0,l.Z)("menu__list-item",{"menu__list-item--collapsed":d})},r.createElement(h,(0,a.Z)({role:"button",className:v(n,!0)},c,{onClick:e=>{e.preventDefault(),f((e=>!e))}}),c.children??c.label),r.createElement("ul",{className:"menu__list",ref:m,style:{height:d?void 0:g}},t.map(((e,t)=>{let{className:n,...l}=e;return r.createElement("li",{className:"menu__list-item",key:t},r.createElement(h,(0,a.Z)({activeClassName:"menu__link--active",className:v(n)},l,{onClick:c.onClick})))}))))}const g=function(e){let{mobile:t=!1,...n}=e;const a=t?v:f;return r.createElement(a,n)}},6400:(e,t,n)=>{n.d(t,{Z:()=>m});var a=n(7462),r=n(7294),l=n(5525),o=n(907),c=n(6010),s=n(9306),i=n(8780);function m(e){let{docId:t,activeSidebarClassName:n,label:m,docsPluginId:u,...d}=e;const{activeVersion:h,activeDoc:f}=(0,o.Iw)(u),{preferredVersion:v}=(0,s.J)(u),g=(0,o.yW)(u),b=function(e,t){const n=[].concat(...e.map((e=>e.docs))),a=n.find((e=>e.id===t));if(!a){const a=n.map((e=>e.id)).join("\n- ");throw new Error(`DocNavbarItem: couldn't find any doc with id "${t}" in version${e.length?"s":""} ${e.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${a}`)}return a}((0,i.uniq)([h,v,g].filter(Boolean)),t);return r.createElement(l.Z,(0,a.Z)({exact:!0},d,{className:(0,c.Z)(d.className,{[n]:f&&f.sidebar===b.sidebar}),label:m??b.id,to:b.path}))}},9308:(e,t,n)=>{n.d(t,{Z:()=>i});var a=n(7462),r=n(7294),l=n(5525),o=n(907),c=n(9306);const s=e=>e.docs.find((t=>t.id===e.mainDocId));function i(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:i,dropdownItemsBefore:m,dropdownItemsAfter:u,...d}=e;const h=(0,o.Iw)(n),f=(0,o.gB)(n),v=(0,o.yW)(n),{preferredVersion:g,savePreferredVersionName:b}=(0,c.J)(n);const E=function(){const e=f.map((e=>{const t=h?.alternateDocVersions[e.name]||s(e);return{isNavLink:!0,label:e.label,to:t.path,isActive:()=>e===h?.activeVersion,onClick:()=>{b(e.name)}}})),t=[...m,...e,...u];if(!(t.length<=1))return t}(),p=h.activeVersion??g??v,k=t&&E?"Versions":p.label,y=t&&E?void 0:s(p).path;return r.createElement(l.Z,(0,a.Z)({},d,{mobile:t,label:k,to:y,items:E,isActive:i?()=>!1:void 0}))}},7250:(e,t,n)=>{n.d(t,{Z:()=>i});var a=n(7462),r=n(7294),l=n(5525),o=n(907),c=n(9306);const s=e=>e.docs.find((t=>t.id===e.mainDocId));function i(e){let{label:t,to:n,docsPluginId:i,...m}=e;const u=(0,o.zu)(i),{preferredVersion:d}=(0,c.J)(i),h=(0,o.yW)(i),f=u??d??h,v=t??f.label,g=n??s(f).path;return r.createElement(l.Z,(0,a.Z)({},m,{label:v,to:g}))}},2924:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n(7294).createContext(void 0)},8465:(e,t,n)=>{n.d(t,{Z:()=>i});var a=n(7462),r=n(7294),l=n(6010),o=n(2263),c=n(5350);const s={themedImage:"themedImage_TMUO","themedImage--light":"themedImage--light_4Vu1","themedImage--dark":"themedImage--dark_uzRr"},i=e=>{const{isClient:t}=(0,o.Z)(),{isDarkTheme:n}=(0,c.Z)(),{sources:i,className:m,alt:u="",...d}=e,h=t?n?["dark"]:["light"]:["light","dark"];return r.createElement(r.Fragment,null,h.map((e=>r.createElement("img",(0,a.Z)({key:e,src:i[e],alt:u,className:(0,l.Z)(s.themedImage,s[`themedImage--${e}`],m)},d)))))}},1839:(e,t,n)=>{n.d(t,{Z:()=>r});var a=n(7294);const r=function(e){void 0===e&&(e=!0),(0,a.useEffect)((()=>(document.body.style.overflow=e?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[e])}},7898:(e,t,n)=>{n.d(t,{Z:()=>o});var a=n(7294),r=n(412);const l=()=>({scrollX:r.Z.canUseDOM?window.pageXOffset:0,scrollY:r.Z.canUseDOM?window.pageYOffset:0}),o=function(e,t){void 0===t&&(t=[]);const n=(0,a.useRef)(l()),r=()=>{const t=l();e&&e(t,n.current),n.current=t};(0,a.useEffect)((()=>{const e={passive:!0};return r(),window.addEventListener("scroll",r,e),()=>window.removeEventListener("scroll",r,e)}),t)}},5350:(e,t,n)=>{n.d(t,{Z:()=>l});var a=n(7294),r=n(2924);const l=function(){const e=(0,a.useContext)(r.Z);if(null==e)throw new Error('"useThemeContext" is used outside of "Layout" component. Please see https://docusaurus.io/docs/api/themes/configuration#usethemecontext.');return e}},3783:(e,t,n)=>{n.d(t,{D:()=>l,Z:()=>o});var a=n(7294),r=n(412);const l={desktop:"desktop",mobile:"mobile"};const o=function(){const e=r.Z.canUseDOM;function t(){if(e)return window.innerWidth>996?l.desktop:l.mobile}const[n,o]=(0,a.useState)(t);return(0,a.useEffect)((()=>{if(e)return window.addEventListener("resize",n),()=>window.removeEventListener("resize",n);function n(){o(t())}}),[]),n}}}]); \ No newline at end of file diff --git a/assets/js/431.07bd0f18.js b/assets/js/431.07bd0f18.js deleted file mode 100644 index 1c0de714..00000000 --- a/assets/js/431.07bd0f18.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[431],{2431:function(e,t,r){function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t,r){var a,c=t.initialState;return{getState:function(){return c},dispatch:function(a,i){var l=function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var J,$,W,Q=null,Y=(J=-1,$=-1,W=void 0,function(e){var t=++J;return Promise.resolve(e).then((function(e){return W&&t<$?W:($=t,W=e,e)}))});function G(e){var t=e.event,r=e.nextState,n=void 0===r?{}:r,o=e.props,a=e.query,i=e.refresh,l=e.store,u=K(e,U);Q&&o.environment.clearTimeout(Q);var s=u.setCollections,f=u.setIsOpen,m=u.setQuery,p=u.setActiveItemId,d=u.setStatus;if(m(a),p(o.defaultActiveItemId),!a&&!1===o.openOnFocus){var h,v=l.getState().collections.map((function(e){return V(V({},e),{},{items:[]})}));d("idle"),s(v),f(null!==(h=n.isOpen)&&void 0!==h?h:o.shouldPanelOpen({state:l.getState()}));var y=M(Y(v).then((function(){return Promise.resolve()})));return l.pendingRequests.add(y)}d("loading"),Q=o.environment.setTimeout((function(){d("stalled")}),o.stallThreshold);var g=M(Y(o.getSources(V({query:a,refresh:i,state:l.getState()},u)).then((function(e){return Promise.all(e.map((function(e){return Promise.resolve(e.getItems(V({query:a,refresh:i,state:l.getState()},u))).then((function(t){return R(t,e.sourceId)}))}))).then(q).then((function(t){return _(t,e)})).then((function(e){return function(e){var t=e.collections,r=e.props,n=e.state,o=t.reduce((function(e,t){return j(j({},e),{},E({},t.source.sourceId,j(j({},t.source),{},{getItems:function(){return c(t.items)}})))}),{});return c(r.reshape({sources:Object.values(o),sourcesBySourceId:o,state:n})).filter(Boolean).map((function(e){return{source:e,items:e.getItems()}}))}({collections:e,props:o,state:l.getState()})}))})))).then((function(e){var r;d("idle"),s(e);var c=o.shouldPanelOpen({state:l.getState()});f(null!==(r=n.isOpen)&&void 0!==r?r:o.openOnFocus&&!a&&c||c);var m=F(l.getState());if(null!==l.getState().activeItemId&&m){var p=m.item,h=m.itemInputValue,v=m.itemUrl,y=m.source;y.onActive(V({event:t,item:p,itemInputValue:h,itemUrl:v,refresh:i,source:y,state:l.getState()},u))}})).finally((function(){d("idle"),Q&&o.environment.clearTimeout(Q)}));return l.pendingRequests.add(g)}var X=["event","props","refresh","store"];function Z(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ee(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var ne=/((gt|sm)-|galaxy nexus)|samsung[- ]/i;var oe=["props","refresh","store"],ae=["inputElement","formElement","panelElement"],ce=["inputElement"],ie=["inputElement","maxLength"],le=["item","source"];function ue(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function se(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function pe(e){var t=e.props,r=e.refresh,n=e.store,o=me(e,oe);return{getEnvironmentProps:function(e){var r=e.inputElement,o=e.formElement,a=e.panelElement;return se({onTouchStart:function(e){!n.getState().isOpen&&n.pendingRequests.isEmpty()||e.target===r||!1===[o,a].some((function(t){return r=t,n=e.target,r===n||r.contains(n);var r,n}))&&(n.dispatch("blur",null),t.debug||n.pendingRequests.cancelAll())},onTouchMove:function(e){!1!==n.getState().isOpen&&r===t.environment.document.activeElement&&e.target!==r&&r.blur()}},me(e,ae))},getRootProps:function(e){return se({role:"combobox","aria-expanded":n.getState().isOpen,"aria-haspopup":"listbox","aria-owns":n.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},e)},getFormProps:function(e){e.inputElement;return se({action:"",noValidate:!0,role:"search",onSubmit:function(a){var c;a.preventDefault(),t.onSubmit(se({event:a,refresh:r,state:n.getState()},o)),n.dispatch("submit",null),null===(c=e.inputElement)||void 0===c||c.blur()},onReset:function(a){var c;a.preventDefault(),t.onReset(se({event:a,refresh:r,state:n.getState()},o)),n.dispatch("reset",null),null===(c=e.inputElement)||void 0===c||c.focus()}},me(e,ce))},getLabelProps:function(e){return se({htmlFor:"".concat(t.id,"-input"),id:"".concat(t.id,"-label")},e)},getInputProps:function(e){var a;function c(e){(t.openOnFocus||Boolean(n.getState().query))&&G(se({event:e,props:t,query:n.getState().completion||n.getState().query,refresh:r,store:n},o)),n.dispatch("focus",null)}var i="ontouchstart"in t.environment,l=e||{},u=(l.inputElement,l.maxLength),s=void 0===u?512:u,f=me(l,ie),m=F(n.getState()),p=function(e){return Boolean(e&&e.match(ne))}(null===(a=t.environment.navigator)||void 0===a?void 0:a.userAgent),d=null!=m&&m.itemUrl&&!p?"go":"search";return se({"aria-autocomplete":"both","aria-activedescendant":n.getState().isOpen&&null!==n.getState().activeItemId?"".concat(t.id,"-item-").concat(n.getState().activeItemId):void 0,"aria-controls":n.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:n.getState().completion||n.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:d,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:s,type:"search",onChange:function(e){G(se({event:e,props:t,query:e.currentTarget.value.slice(0,s),refresh:r,store:n},o))},onKeyDown:function(e){!function(e){var t=e.event,r=e.props,n=e.refresh,o=e.store,a=re(e,X);if("ArrowUp"===t.key||"ArrowDown"===t.key){var c=function(){var e=r.environment.document.getElementById("".concat(r.id,"-item-").concat(o.getState().activeItemId));e&&(e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded(!1):e.scrollIntoView(!1))},i=function(){var e=F(o.getState());if(null!==o.getState().activeItemId&&e){var r=e.item,c=e.itemInputValue,i=e.itemUrl,l=e.source;l.onActive(ee({event:t,item:r,itemInputValue:c,itemUrl:i,refresh:n,source:l,state:o.getState()},a))}};t.preventDefault(),!1===o.getState().isOpen&&(r.openOnFocus||Boolean(o.getState().query))?G(ee({event:t,props:r,query:o.getState().query,refresh:n,store:o},a)).then((function(){o.dispatch(t.key,{nextActiveItemId:r.defaultActiveItemId}),i(),setTimeout(c,0)})):(o.dispatch(t.key,{}),i(),c())}else if("Escape"===t.key)t.preventDefault(),o.dispatch(t.key,null),o.pendingRequests.cancelAll();else if("Enter"===t.key){if(null===o.getState().activeItemId||o.getState().collections.every((function(e){return 0===e.items.length})))return;t.preventDefault();var l=F(o.getState()),u=l.item,s=l.itemInputValue,f=l.itemUrl,m=l.source;if(t.metaKey||t.ctrlKey)void 0!==f&&(m.onSelect(ee({event:t,item:u,itemInputValue:s,itemUrl:f,refresh:n,source:m,state:o.getState()},a)),r.navigator.navigateNewTab({itemUrl:f,item:u,state:o.getState()}));else if(t.shiftKey)void 0!==f&&(m.onSelect(ee({event:t,item:u,itemInputValue:s,itemUrl:f,refresh:n,source:m,state:o.getState()},a)),r.navigator.navigateNewWindow({itemUrl:f,item:u,state:o.getState()}));else if(t.altKey);else{if(void 0!==f)return m.onSelect(ee({event:t,item:u,itemInputValue:s,itemUrl:f,refresh:n,source:m,state:o.getState()},a)),void r.navigator.navigate({itemUrl:f,item:u,state:o.getState()});G(ee({event:t,nextState:{isOpen:!1},props:r,query:s,refresh:n,store:o},a)).then((function(){m.onSelect(ee({event:t,item:u,itemInputValue:s,itemUrl:f,refresh:n,source:m,state:o.getState()},a))}))}}}(se({event:e,props:t,refresh:r,store:n},o))},onFocus:c,onBlur:function(){i||(n.dispatch("blur",null),t.debug||n.pendingRequests.cancelAll())},onClick:function(r){e.inputElement!==t.environment.document.activeElement||n.getState().isOpen||c(r)}},f)},getPanelProps:function(e){return se({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){n.dispatch("mouseleave",null)}},e)},getListProps:function(e){return se({role:"listbox","aria-labelledby":"".concat(t.id,"-label"),id:"".concat(t.id,"-list")},e)},getItemProps:function(e){var a=e.item,c=e.source,i=me(e,le);return se({id:"".concat(t.id,"-item-").concat(a.__autocomplete_id),role:"option","aria-selected":n.getState().activeItemId===a.__autocomplete_id,onMouseMove:function(e){if(a.__autocomplete_id!==n.getState().activeItemId){n.dispatch("mousemove",a.__autocomplete_id);var t=F(n.getState());if(null!==n.getState().activeItemId&&t){var c=t.item,i=t.itemInputValue,l=t.itemUrl,u=t.source;u.onActive(se({event:e,item:c,itemInputValue:i,itemUrl:l,refresh:r,source:u,state:n.getState()},o))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var i=c.getItemInputValue({item:a,state:n.getState()}),l=c.getItemUrl({item:a,state:n.getState()});(l?Promise.resolve():G(se({event:e,nextState:{isOpen:!1},props:t,query:i,refresh:r,store:n},o))).then((function(){c.onSelect(se({event:e,item:a,itemInputValue:i,itemUrl:l,refresh:r,source:c,state:n.getState()},o))}))}},i)}}}var de=[{segment:"autocomplete-core",version:"1.6.3"}];function he(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ve(e){for(var t=1;t=r?null===n?null:0:o}function Se(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function je(e){for(var t=1;t0},reshape:function(e){return e.sources}},e),{},{id:null!==(r=e.id)&&void 0!==r?r:"autocomplete-".concat(f++),plugins:o,initialState:b({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var r;null===(r=e.onStateChange)||void 0===r||r.call(e,t),o.forEach((function(e){var r;return null===(r=e.onStateChange)||void 0===r?void 0:r.call(e,t)}))},onSubmit:function(t){var r;null===(r=e.onSubmit)||void 0===r||r.call(e,t),o.forEach((function(e){var r;return null===(r=e.onSubmit)||void 0===r?void 0:r.call(e,t)}))},onReset:function(t){var r;null===(r=e.onReset)||void 0===r||r.call(e,t),o.forEach((function(e){var r;return null===(r=e.onReset)||void 0===r?void 0:r.call(e,t)}))},getSources:function(r){return Promise.all([].concat(v(o.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return h(e,r)}))).then((function(e){return c(e)})).then((function(e){return e.map((function(e){return b(b({},e),{},{onSelect:function(r){e.onSelect(r),t.forEach((function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,r)}))},onActive:function(r){e.onActive(r),t.forEach((function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,r)}))}})}))}))},navigator:b({navigate:function(e){var t=e.itemUrl;n.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,r=n.open(t,"_blank","noopener");null==r||r.focus()},navigateNewWindow:function(e){var t=e.itemUrl;n.open(t,"_blank","noopener")}},e.navigator)})}(e,t),n=a(we,r,(function(e){var t=e.prevState,n=e.state;r.onStateChange(Ie({prevState:t,state:n,refresh:u},o))})),o=function(e){var t=e.store;return{setActiveItemId:function(e){t.dispatch("setActiveItemId",e)},setQuery:function(e){t.dispatch("setQuery",e)},setCollections:function(e){var r=0,n=e.map((function(e){return l(l({},e),{},{items:c(e.items).map((function(e){return l(l({},e),{},{__autocomplete_id:r++})}))})}));t.dispatch("setCollections",n)},setIsOpen:function(e){t.dispatch("setIsOpen",e)},setStatus:function(e){t.dispatch("setStatus",e)},setContext:function(e){t.dispatch("setContext",e)}}}({store:n}),i=pe(Ie({props:r,refresh:u,store:n},o));function u(){return G(Ie({event:new Event("input"),nextState:{isOpen:n.getState().isOpen},props:r,query:n.getState().query,refresh:u,store:n},o))}return r.plugins.forEach((function(e){var r;return null===(r=e.subscribe)||void 0===r?void 0:r.call(e,Ie(Ie({},o),{},{refresh:u,onSelect:function(e){t.push({onSelect:e})},onActive:function(e){t.push({onActive:e})}}))})),function(e){var t,r=e.metadata,n=e.environment;if(null===(t=n.navigator)||void 0===t?void 0:t.userAgent.includes("Algolia Crawler")){var o=n.document.createElement("meta"),a=n.document.querySelector("head");o.name="algolia:metadata",setTimeout((function(){o.content=JSON.stringify(r),a.appendChild(o)}),0)}}({metadata:ge({plugins:r.plugins,options:e}),environment:r.environment}),Ie(Ie({refresh:u},i),o)}var ke=r(7294);function Ae(e){var t=e.translations,r=(void 0===t?{}:t).searchByText,n=void 0===r?"Search by":r;return ke.createElement("a",{href:"https://www.algolia.com/ref/docsearch/?utm_source=".concat(window.location.hostname,"&utm_medium=referral&utm_content=powered_by&utm_campaign=docsearch"),target:"_blank",rel:"noopener noreferrer"},ke.createElement("span",{className:"DocSearch-Label"},n),ke.createElement("svg",{width:"77",height:"19","aria-label":"Algolia",role:"img"},ke.createElement("path",{d:"M2.5067 0h14.0245c1.384.001 2.5058 1.1205 2.5068 2.5017V16.5c-.0014 1.3808-1.1232 2.4995-2.5068 2.5H2.5067C1.1232 18.9995.0014 17.8808 0 16.5V2.4958A2.495 2.495 0 01.735.7294 2.505 2.505 0 012.5068 0zM37.95 15.0695c-3.7068.0168-3.7068-2.986-3.7068-3.4634L34.2372.3576 36.498 0v11.1794c0 .2715 0 1.9889 1.452 1.994v1.8961zm-9.1666-1.8388c.694 0 1.2086-.0397 1.5678-.1088v-2.2934a5.3639 5.3639 0 00-1.3303-.1679 4.8283 4.8283 0 00-.758.0582 2.2845 2.2845 0 00-.688.2024c-.2029.0979-.371.2362-.4919.4142-.1268.1788-.185.2826-.185.5533 0 .5297.185.8359.5205 1.0375.3355.2016.7928.3053 1.365.3053v-.0008zm-.1969-8.1817c.7463 0 1.3768.092 1.8856.2767.5088.1838.9195.4428 1.2204.7717.3068.334.5147.7777.6423 1.251.1327.4723.196.991.196 1.5603v5.798c-.5235.1036-1.05.192-1.5787.2649-.7048.1037-1.4976.156-2.3774.156-.5832 0-1.1215-.0582-1.6016-.167a3.385 3.385 0 01-1.2432-.5364 2.6034 2.6034 0 01-.8037-.9565c-.191-.3922-.29-.9447-.29-1.5208 0-.5533.11-.905.3246-1.2863a2.7351 2.7351 0 01.8849-.9329c.376-.242.8029-.415 1.2948-.5187a7.4517 7.4517 0 011.5381-.156 7.1162 7.1162 0 011.6667.2024V8.886c0-.259-.0296-.5061-.093-.7372a1.5847 1.5847 0 00-.3245-.6158 1.5079 1.5079 0 00-.6119-.4158 2.6788 2.6788 0 00-.966-.173c-.5206 0-.9948.0634-1.4283.1384a6.5481 6.5481 0 00-1.065.259l-.2712-1.849c.2831-.0986.7048-.1964 1.2491-.2943a9.2979 9.2979 0 011.752-.1501v.0008zm44.6597 8.1193c.6947 0 1.2086-.0405 1.567-.1097v-2.2942a5.3743 5.3743 0 00-1.3303-.1679c-.2485 0-.503.0177-.7573.0582a2.2853 2.2853 0 00-.688.2024 1.2333 1.2333 0 00-.4918.4142c-.1268.1788-.1843.2826-.1843.5533 0 .5297.1843.8359.5198 1.0375.3414.2066.7927.3053 1.365.3053v.0009zm-.191-8.1767c.7463 0 1.3768.0912 1.8856.2759.5087.1847.9195.4436 1.2204.7717.3.329.5147.7786.6414 1.251a5.7248 5.7248 0 01.197 1.562v5.7972c-.3466.0742-.874.1602-1.5788.2648-.7049.1038-1.4976.1552-2.3774.1552-.5832 0-1.1215-.0573-1.6016-.167a3.385 3.385 0 01-1.2432-.5356 2.6034 2.6034 0 01-.8038-.9565c-.191-.3922-.2898-.9447-.2898-1.5216 0-.5533.1098-.905.3245-1.2854a2.7373 2.7373 0 01.8849-.9338c.376-.2412.8029-.4141 1.2947-.5178a7.4545 7.4545 0 012.325-.1097c.2781.0287.5672.081.879.156v-.3686a2.7781 2.7781 0 00-.092-.738 1.5788 1.5788 0 00-.3246-.6166 1.5079 1.5079 0 00-.612-.415 2.6797 2.6797 0 00-.966-.1729c-.5205 0-.9947.0633-1.4282.1384a6.5608 6.5608 0 00-1.065.259l-.2712-1.8498c.283-.0979.7048-.1957 1.2491-.2935a9.8597 9.8597 0 011.752-.1494zm-6.79-1.072c-.7576.001-1.373-.6103-1.3759-1.3664 0-.755.6128-1.3664 1.376-1.3664.764 0 1.3775.6115 1.3775 1.3664s-.6195 1.3664-1.3776 1.3664zm1.1393 11.1507h-2.2726V5.3409l2.2734-.3568v10.0845l-.0008.0017zm-3.984 0c-3.707.0168-3.707-2.986-3.707-3.4642L59.7069.3576 61.9685 0v11.1794c0 .2715 0 1.9889 1.452 1.994V15.0703zm-7.3512-4.979c0-.975-.2138-1.7873-.6305-2.3516-.4167-.571-.9998-.852-1.747-.852-.7454 0-1.3302.281-1.7452.852-.4166.5702-.6195 1.3765-.6195 2.3516 0 .9851.208 1.6473.6254 2.2183.4158.576.9998.8587 1.7461.8587.7454 0 1.3303-.2885 1.747-.8595.4158-.5761.6237-1.2315.6237-2.2184v.0009zm2.3132-.006c0 .7609-.1099 1.3361-.3356 1.9654a4.654 4.654 0 01-.9533 1.6076A4.214 4.214 0 0155.613 14.69c-.579.2412-1.4697.3795-1.9143.3795-.4462-.005-1.3303-.1324-1.9033-.3795a4.307 4.307 0 01-1.474-1.0316c-.4115-.4445-.7293-.9801-.9609-1.6076a5.3423 5.3423 0 01-.3465-1.9653c0-.7608.104-1.493.3356-2.1155a4.683 4.683 0 01.9719-1.5958 4.3383 4.3383 0 011.479-1.0257c.5739-.242 1.2043-.3567 1.8864-.3567.6829 0 1.3125.1197 1.8906.3567a4.1245 4.1245 0 011.4816 1.0257 4.7587 4.7587 0 01.9592 1.5958c.2426.6225.3643 1.3547.3643 2.1155zm-17.0198 0c0 .9448.208 1.9932.6238 2.431.4166.4386.955.6579 1.6142.6579.3584 0 .6998-.0523 1.0176-.1502.3186-.0978.5721-.2134.775-.3517V7.0784a8.8706 8.8706 0 00-1.4926-.1906c-.8206-.0236-1.4452.312-1.8847.8468-.4335.5365-.6533 1.476-.6533 2.3516v-.0008zm6.2863 4.4485c0 1.5385-.3938 2.662-1.1866 3.3773-.791.7136-2.0005 1.0712-3.6308 1.0712-.5958 0-1.834-.1156-2.8228-.334l.3643-1.7865c.8282.173 1.9202.2193 2.4932.2193.9077 0 1.555-.1847 1.943-.5533.388-.3686.578-.916.578-1.643v-.3687a6.8289 6.8289 0 01-.8848.3349c-.3634.1096-.786.167-1.261.167-.6246 0-1.1917-.0979-1.7055-.2944a3.5554 3.5554 0 01-1.3244-.8645c-.3642-.3796-.6541-.8579-.8561-1.4289-.2028-.571-.3068-1.59-.3068-2.339 0-.7034.1099-1.5856.3245-2.1735.2198-.5871.5316-1.0949.9542-1.515.4167-.42.9255-.743 1.5213-.98a5.5923 5.5923 0 012.052-.3855c.7353 0 1.4114.092 2.0707.2024.6592.1088 1.2204.2236 1.6776.35v8.945-.0008zM11.5026 4.2418v-.6511c-.0005-.4553-.3704-.8241-.8266-.8241H8.749c-.4561 0-.826.3688-.8265.824v.669c0 .0742.0693.1264.1445.1096a6.0346 6.0346 0 011.6768-.2362 6.125 6.125 0 011.6202.2185.1116.1116 0 00.1386-.1097zm-5.2806.852l-.3296-.3282a.8266.8266 0 00-1.168 0l-.393.3922a.8199.8199 0 000 1.164l.3237.323c.0524.0515.1268.0397.1733-.0117.191-.259.3989-.507.6305-.7372.2374-.2362.48-.4437.7462-.6335.0575-.0354.0634-.1155.017-.1687zm3.5159 2.069v2.818c0 .081.0879.1392.1622.0987l2.5102-1.2964c.0574-.0287.0752-.0987.0464-.1552a3.1237 3.1237 0 00-2.603-1.574c-.0575 0-.115.0456-.115.1097l-.0008-.0009zm.0008 6.789c-2.0933.0005-3.7915-1.6912-3.7947-3.7804C5.9468 8.0821 7.6452 6.39 9.7387 6.391c2.0932-.0005 3.7911 1.6914 3.794 3.7804a3.7783 3.7783 0 01-1.1124 2.675 3.7936 3.7936 0 01-2.6824 1.1054h.0008zM9.738 4.8002c-1.9218 0-3.6975 1.0232-4.6584 2.6841a5.359 5.359 0 000 5.3683c.9609 1.661 2.7366 2.6841 4.6584 2.6841a5.3891 5.3891 0 003.8073-1.5725 5.3675 5.3675 0 001.578-3.7987 5.3574 5.3574 0 00-1.5771-3.797A5.379 5.379 0 009.7387 4.801l-.0008-.0008z",fill:"currentColor",fillRule:"evenodd"})))}function xe(e){return ke.createElement("svg",{width:"15",height:"15","aria-label":e.ariaLabel,role:"img"},ke.createElement("g",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.2"},e.children))}function Ne(e){var t=e.translations,r=void 0===t?{}:t,n=r.selectText,o=void 0===n?"to select":n,a=r.selectKeyAriaLabel,c=void 0===a?"Enter key":a,i=r.navigateText,l=void 0===i?"to navigate":i,u=r.navigateUpKeyAriaLabel,s=void 0===u?"Arrow up":u,f=r.navigateDownKeyAriaLabel,m=void 0===f?"Arrow down":f,p=r.closeText,d=void 0===p?"to close":p,h=r.closeKeyAriaLabel,v=void 0===h?"Escape key":h,y=r.searchByText,g=void 0===y?"Search by":y;return ke.createElement(ke.Fragment,null,ke.createElement("div",{className:"DocSearch-Logo"},ke.createElement(Ae,{translations:{searchByText:g}})),ke.createElement("ul",{className:"DocSearch-Commands"},ke.createElement("li",null,ke.createElement("kbd",{className:"DocSearch-Commands-Key"},ke.createElement(xe,{ariaLabel:c},ke.createElement("path",{d:"M12 3.53088v3c0 1-1 2-2 2H4M7 11.53088l-3-3 3-3"}))),ke.createElement("span",{className:"DocSearch-Label"},o)),ke.createElement("li",null,ke.createElement("kbd",{className:"DocSearch-Commands-Key"},ke.createElement(xe,{ariaLabel:m},ke.createElement("path",{d:"M7.5 3.5v8M10.5 8.5l-3 3-3-3"}))),ke.createElement("kbd",{className:"DocSearch-Commands-Key"},ke.createElement(xe,{ariaLabel:s},ke.createElement("path",{d:"M7.5 11.5v-8M10.5 6.5l-3-3-3 3"}))),ke.createElement("span",{className:"DocSearch-Label"},l)),ke.createElement("li",null,ke.createElement("kbd",{className:"DocSearch-Commands-Key"},ke.createElement(xe,{ariaLabel:v},ke.createElement("path",{d:"M13.6167 8.936c-.1065.3583-.6883.962-1.4875.962-.7993 0-1.653-.9165-1.653-2.1258v-.5678c0-1.2548.7896-2.1016 1.653-2.1016.8634 0 1.3601.4778 1.4875 1.0724M9 6c-.1352-.4735-.7506-.9219-1.46-.8972-.7092.0246-1.344.57-1.344 1.2166s.4198.8812 1.3445.9805C8.465 7.3992 8.968 7.9337 9 8.5c.032.5663-.454 1.398-1.4595 1.398C6.6593 9.898 6 9 5.963 8.4851m-1.4748.5368c-.2635.5941-.8099.876-1.5443.876s-1.7073-.6248-1.7073-2.204v-.4603c0-1.0416.721-2.131 1.7073-2.131.9864 0 1.6425 1.031 1.5443 2.2492h-2.956"}))),ke.createElement("span",{className:"DocSearch-Label"},d))))}function Re(e){var t=e.hit,r=e.children;return ke.createElement("a",{href:t.url},r)}function qe(){return ke.createElement("svg",{width:"40",height:"40",viewBox:"0 0 20 20",fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"},ke.createElement("path",{d:"M19 4.8a16 16 0 00-2-1.2m-3.3-1.2A16 16 0 001.1 4.7M16.7 8a12 12 0 00-2.8-1.4M10 6a12 12 0 00-6.7 2M12.3 14.7a4 4 0 00-4.5 0M14.5 11.4A8 8 0 0010 10M3 16L18 2M10 18h0"}))}function _e(e){var t=e.translations,r=void 0===t?{}:t,n=r.titleText,o=void 0===n?"Unable to fetch results":n,a=r.helpText,c=void 0===a?"You might want to check your network connection.":a;return ke.createElement("div",{className:"DocSearch-ErrorScreen"},ke.createElement("div",{className:"DocSearch-Screen-Icon"},ke.createElement(qe,null)),ke.createElement("p",{className:"DocSearch-Title"},o),ke.createElement("p",{className:"DocSearch-Help"},c))}function Te(){return ke.createElement("svg",{width:"40",height:"40",viewBox:"0 0 20 20",fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"},ke.createElement("path",{d:"M15.5 4.8c2 3 1.7 7-1 9.7h0l4.3 4.3-4.3-4.3a7.8 7.8 0 01-9.8 1m-2.2-2.2A7.8 7.8 0 0113.2 2.4M2 18L18 2"}))}var Le=["translations"];function Me(e){return function(e){if(Array.isArray(e))return He(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return He(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return He(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function He(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Ue(e){var t=e.translations,r=void 0===t?{}:t,n=Fe(e,Le),o=r.noResultsText,a=void 0===o?"No results for":o,c=r.suggestedQueryText,i=void 0===c?"Try searching for":c,l=r.reportMissingResultsText,u=void 0===l?"Believe this query should return results?":l,s=r.reportMissingResultsLinkText,f=void 0===s?"Let us know.":s,m=n.state.context.searchSuggestions;return ke.createElement("div",{className:"DocSearch-NoResults"},ke.createElement("div",{className:"DocSearch-Screen-Icon"},ke.createElement(Te,null)),ke.createElement("p",{className:"DocSearch-Title"},a,' "',ke.createElement("strong",null,n.state.query),'"'),m&&m.length>0&&ke.createElement("div",{className:"DocSearch-NoResults-Prefill-List"},ke.createElement("p",{className:"DocSearch-Help"},i,":"),ke.createElement("ul",null,m.slice(0,3).reduce((function(e,t){return[].concat(Me(e),[ke.createElement("li",{key:t},ke.createElement("button",{className:"DocSearch-Prefill",key:t,type:"button",onClick:function(){n.setQuery(t.toLowerCase()+" "),n.refresh(),n.inputRef.current.focus()}},t))])}),[]))),n.getMissingResultsUrl&&ke.createElement("p",{className:"DocSearch-Help"},"".concat(u," "),ke.createElement("a",{href:n.getMissingResultsUrl({query:n.state.query}),target:"_blank",rel:"noopener noreferrer"},f)))}var Be=function(){return ke.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},ke.createElement("path",{d:"M17 6v12c0 .52-.2 1-1 1H4c-.7 0-1-.33-1-1V2c0-.55.42-1 1-1h8l5 5zM14 8h-3.13c-.51 0-.87-.34-.87-.87V4",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))};function Ve(e){switch(e.type){case"lvl1":return ke.createElement(Be,null);case"content":return ke.createElement(Ke,null);default:return ke.createElement(ze,null)}}function ze(){return ke.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},ke.createElement("path",{d:"M13 13h4-4V8H7v5h6v4-4H7V8H3h4V3v5h6V3v5h4-4v5zm-6 0v4-4H3h4z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}function Ke(){return ke.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},ke.createElement("path",{d:"M17 5H3h14zm0 5H3h14zm0 5H3h14z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))}function Je(){return ke.createElement("svg",{className:"DocSearch-Hit-Select-Icon",width:"20",height:"20",viewBox:"0 0 20 20"},ke.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},ke.createElement("path",{d:"M18 3v4c0 2-2 4-4 4H2"}),ke.createElement("path",{d:"M8 17l-6-6 6-6"})))}var $e=["hit","attribute","tagName"];function We(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Qe(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Xe(e,t){return t.split(".").reduce((function(e,t){return null!=e&&e[t]?e[t]:null}),e)}function Ze(e){var t=e.hit,r=e.attribute,n=e.tagName,o=void 0===n?"span":n,a=Ge(e,$e);return(0,ke.createElement)(o,Qe(Qe({},a),{},{dangerouslySetInnerHTML:{__html:Xe(t,"_snippetResult.".concat(r,".value"))||Xe(t,r)}}))}function et(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var n,o,a=[],c=!0,i=!1;try{for(r=r.call(e);!(c=(n=r.next()).done)&&(a.push(n.value),!t||a.length!==t);c=!0);}catch(l){i=!0,o=l}finally{try{c||null==r.return||r.return()}finally{if(i)throw o}}return a}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return tt(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return tt(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function tt(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r|<\/mark>)/g,ct=RegExp(at.source);function it(e){var t,r,n,o,a,c=e;if(!c.__docsearch_parent&&!e._highlightResult)return e.hierarchy.lvl0;var i=((c.__docsearch_parent?null===(t=c.__docsearch_parent)||void 0===t||null===(r=t._highlightResult)||void 0===r||null===(n=r.hierarchy)||void 0===n?void 0:n.lvl0:null===(o=e._highlightResult)||void 0===o||null===(a=o.hierarchy)||void 0===a?void 0:a.lvl0)||{}).value;return i&&ct.test(i)?i.replace(at,""):i}function lt(){return lt=Object.assign||function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function vt(e){var t=e.translations,r=void 0===t?{}:t,n=ht(e,pt),o=r.recentSearchesTitle,a=void 0===o?"Recent":o,c=r.noRecentSearchesText,i=void 0===c?"No recent searches":c,l=r.saveRecentSearchButtonTitle,u=void 0===l?"Save this search":l,s=r.removeRecentSearchButtonTitle,f=void 0===s?"Remove this search from history":s,m=r.favoriteSearchesTitle,p=void 0===m?"Favorite":m,d=r.removeFavoriteSearchButtonTitle,h=void 0===d?"Remove this search from favorites":d;return"idle"===n.state.status&&!1===n.hasCollections?n.disableUserPersonalization?null:ke.createElement("div",{className:"DocSearch-StartScreen"},ke.createElement("p",{className:"DocSearch-Help"},i)):!1===n.hasCollections?null:ke.createElement("div",{className:"DocSearch-Dropdown-Container"},ke.createElement(nt,dt({},n,{title:a,collection:n.state.collections[0],renderIcon:function(){return ke.createElement("div",{className:"DocSearch-Hit-icon"},ke.createElement(st,null))},renderAction:function(e){var t=e.item,r=e.runFavoriteTransition,o=e.runDeleteTransition;return ke.createElement(ke.Fragment,null,ke.createElement("div",{className:"DocSearch-Hit-action"},ke.createElement("button",{className:"DocSearch-Hit-action-button",title:u,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),r((function(){n.favoriteSearches.add(t),n.recentSearches.remove(t),n.refresh()}))}},ke.createElement(ft,null))),ke.createElement("div",{className:"DocSearch-Hit-action"},ke.createElement("button",{className:"DocSearch-Hit-action-button",title:f,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),o((function(){n.recentSearches.remove(t),n.refresh()}))}},ke.createElement(mt,null))))}})),ke.createElement(nt,dt({},n,{title:p,collection:n.state.collections[1],renderIcon:function(){return ke.createElement("div",{className:"DocSearch-Hit-icon"},ke.createElement(ft,null))},renderAction:function(e){var t=e.item,r=e.runDeleteTransition;return ke.createElement("div",{className:"DocSearch-Hit-action"},ke.createElement("button",{className:"DocSearch-Hit-action-button",title:h,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),r((function(){n.favoriteSearches.remove(t),n.refresh()}))}},ke.createElement(mt,null)))}})))}var yt=["translations"];function gt(){return gt=Object.assign||function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var Ot=ke.memo((function(e){var t=e.translations,r=void 0===t?{}:t,n=bt(e,yt);if("error"===n.state.status)return ke.createElement(_e,{translations:null==r?void 0:r.errorScreen});var o=n.state.collections.some((function(e){return e.items.length>0}));return n.state.query?!1===o?ke.createElement(Ue,gt({},n,{translations:null==r?void 0:r.noResultsScreen})):ke.createElement(ut,n):ke.createElement(vt,gt({},n,{hasCollections:o,translations:null==r?void 0:r.startScreen}))}),(function(e,t){return"loading"===t.state.status||"stalled"===t.state.status}));function St(){return ke.createElement("svg",{viewBox:"0 0 38 38",stroke:"currentColor",strokeOpacity:".5"},ke.createElement("g",{fill:"none",fillRule:"evenodd"},ke.createElement("g",{transform:"translate(1 1)",strokeWidth:"2"},ke.createElement("circle",{strokeOpacity:".3",cx:"18",cy:"18",r:"18"}),ke.createElement("path",{d:"M36 18c0-9.94-8.06-18-18-18"},ke.createElement("animateTransform",{attributeName:"transform",type:"rotate",from:"0 18 18",to:"360 18 18",dur:"1s",repeatCount:"indefinite"})))))}var jt=r(830),Et=["translations"];function wt(){return wt=Object.assign||function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function It(e){var t=e.translations,r=void 0===t?{}:t,n=Pt(e,Et),o=r.resetButtonTitle,a=void 0===o?"Clear the query":o,c=r.resetButtonAriaLabel,i=void 0===c?"Clear the query":c,l=r.cancelButtonText,u=void 0===l?"Cancel":l,s=r.cancelButtonAriaLabel,f=void 0===s?"Cancel":s,m=n.getFormProps({inputElement:n.inputRef.current}).onReset;return ke.useEffect((function(){n.autoFocus&&n.inputRef.current&&n.inputRef.current.focus()}),[n.autoFocus,n.inputRef]),ke.useEffect((function(){n.isFromSelection&&n.inputRef.current&&n.inputRef.current.select()}),[n.isFromSelection,n.inputRef]),ke.createElement(ke.Fragment,null,ke.createElement("form",{className:"DocSearch-Form",onSubmit:function(e){e.preventDefault()},onReset:m},ke.createElement("label",wt({className:"DocSearch-MagnifierLabel"},n.getLabelProps()),ke.createElement(jt.W,null)),ke.createElement("div",{className:"DocSearch-LoadingIndicator"},ke.createElement(St,null)),ke.createElement("input",wt({className:"DocSearch-Input",ref:n.inputRef},n.getInputProps({inputElement:n.inputRef.current,autoFocus:n.autoFocus,maxLength:64}))),ke.createElement("button",{type:"reset",title:a,className:"DocSearch-Reset","aria-label":i,hidden:!n.state.query},ke.createElement(mt,null))),ke.createElement("button",{className:"DocSearch-Cancel",type:"reset","aria-label":f,onClick:n.onClose},u))}var Dt=["_highlightResult","_snippetResult"];function Ct(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function kt(e){return!1===function(){var e="__TEST_KEY__";try{return localStorage.setItem(e,""),localStorage.removeItem(e),!0}catch(t){return!1}}()?{setItem:function(){},getItem:function(){return[]}}:{setItem:function(t){return window.localStorage.setItem(e,JSON.stringify(t))},getItem:function(){var t=window.localStorage.getItem(e);return t?JSON.parse(t):[]}}}function At(e){var t=e.key,r=e.limit,n=void 0===r?5:r,o=kt(t),a=o.getItem().slice(0,n);return{add:function(e){var t=e,r=(t._highlightResult,t._snippetResult,Ct(t,Dt)),c=a.findIndex((function(e){return e.objectID===r.objectID}));c>-1&&a.splice(c,1),a.unshift(r),a=a.slice(0,n),o.setItem(a)},remove:function(e){a=a.filter((function(t){return t.objectID!==e.objectID})),o.setItem(a)},getAll:function(){return a}}}function xt(e){const t=`algoliasearch-client-js-${e.key}`;let r;const n=()=>(void 0===r&&(r=e.localStorage||window.localStorage),r),o=()=>JSON.parse(n().getItem(t)||"{}");return{get:(e,t,r={miss:()=>Promise.resolve()})=>Promise.resolve().then((()=>{const r=JSON.stringify(e),n=o()[r];return Promise.all([n||t(),void 0!==n])})).then((([e,t])=>Promise.all([e,t||r.miss(e)]))).then((([e])=>e)),set:(e,r)=>Promise.resolve().then((()=>{const a=o();return a[JSON.stringify(e)]=r,n().setItem(t,JSON.stringify(a)),r})),delete:e=>Promise.resolve().then((()=>{const r=o();delete r[JSON.stringify(e)],n().setItem(t,JSON.stringify(r))})),clear:()=>Promise.resolve().then((()=>{n().removeItem(t)}))}}function Nt(e){const t=[...e.caches],r=t.shift();return void 0===r?{get:(e,t,r={miss:()=>Promise.resolve()})=>t().then((e=>Promise.all([e,r.miss(e)]))).then((([e])=>e)),set:(e,t)=>Promise.resolve(t),delete:e=>Promise.resolve(),clear:()=>Promise.resolve()}:{get:(e,n,o={miss:()=>Promise.resolve()})=>r.get(e,n,o).catch((()=>Nt({caches:t}).get(e,n,o))),set:(e,n)=>r.set(e,n).catch((()=>Nt({caches:t}).set(e,n))),delete:e=>r.delete(e).catch((()=>Nt({caches:t}).delete(e))),clear:()=>r.clear().catch((()=>Nt({caches:t}).clear()))}}function Rt(e={serializable:!0}){let t={};return{get(r,n,o={miss:()=>Promise.resolve()}){const a=JSON.stringify(r);if(a in t)return Promise.resolve(e.serializable?JSON.parse(t[a]):t[a]);const c=n(),i=o&&o.miss||(()=>Promise.resolve());return c.then((e=>i(e))).then((()=>c))},set:(r,n)=>(t[JSON.stringify(r)]=e.serializable?JSON.stringify(n):n,Promise.resolve(n)),delete:e=>(delete t[JSON.stringify(e)],Promise.resolve()),clear:()=>(t={},Promise.resolve())}}function qt(e){let t=e.length-1;for(;t>0;t--){const r=Math.floor(Math.random()*(t+1)),n=e[t];e[t]=e[r],e[r]=n}return e}function _t(e,t){return t?(Object.keys(t).forEach((r=>{e[r]=t[r](e)})),e):e}function Tt(e,...t){let r=0;return e.replace(/%s/g,(()=>encodeURIComponent(t[r++])))}const Lt="4.13.1",Mt={WithinQueryParameters:0,WithinHeaders:1};function Ht(e,t){const r=e||{},n=r.data||{};return Object.keys(r).forEach((e=>{-1===["timeout","headers","queryParameters","data","cacheable"].indexOf(e)&&(n[e]=r[e])})),{data:Object.entries(n).length>0?n:void 0,timeout:r.timeout||t,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}const Ft={Read:1,Write:2,Any:3},Ut=1,Bt=2,Vt=3,zt=12e4;function Kt(e,t=Ut){return{...e,status:t,lastUpdate:Date.now()}}function Jt(e){return"string"==typeof e?{protocol:"https",url:e,accept:Ft.Any}:{protocol:e.protocol||"https",url:e.url,accept:e.accept||Ft.Any}}const $t="GET",Wt="POST";function Qt(e,t){return Promise.all(t.map((t=>e.get(t,(()=>Promise.resolve(Kt(t))))))).then((e=>{const r=e.filter((e=>function(e){return e.status===Ut||Date.now()-e.lastUpdate>zt}(e))),n=e.filter((e=>function(e){return e.status===Vt&&Date.now()-e.lastUpdate<=zt}(e))),o=[...r,...n];return{getTimeout:(e,t)=>(0===n.length&&0===e?1:n.length+3+e)*t,statelessHosts:o.length>0?o.map((e=>Jt(e))):t}}))}function Yt(e,t,r,n){const o=[],a=function(e,t){if(e.method===$t||void 0===e.data&&void 0===t.data)return;const r=Array.isArray(e.data)?e.data:{...e.data,...t.data};return JSON.stringify(r)}(r,n),c=function(e,t){const r={...e.headers,...t.headers},n={};return Object.keys(r).forEach((e=>{const t=r[e];n[e.toLowerCase()]=t})),n}(e,n),i=r.method,l=r.method!==$t?{}:{...r.data,...n.data},u={"x-algolia-agent":e.userAgent.value,...e.queryParameters,...l,...n.queryParameters};let s=0;const f=(t,l)=>{const m=t.pop();if(void 0===m)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:er(o)};const p={data:a,headers:c,method:i,url:Xt(m,r.path,u),connectTimeout:l(s,e.timeouts.connect),responseTimeout:l(s,n.timeout)},d=e=>{const r={request:p,response:e,host:m,triesLeft:t.length};return o.push(r),r},h={onSuccess:e=>function(e){try{return JSON.parse(e.content)}catch(t){throw function(e,t){return{name:"DeserializationError",message:e,response:t}}(t.message,e)}}(e),onRetry(r){const n=d(r);return r.isTimedOut&&s++,Promise.all([e.logger.info("Retryable failure",tr(n)),e.hostsCache.set(m,Kt(m,r.isTimedOut?Vt:Bt))]).then((()=>f(t,l)))},onFail(e){throw d(e),function({content:e,status:t},r){let n=e;try{n=JSON.parse(e).message}catch(o){}return function(e,t,r){return{name:"ApiError",message:e,status:t,transporterStackTrace:r}}(n,t,r)}(e,er(o))}};return e.requester.send(p).then((e=>((e,t)=>(e=>{const t=e.status;return e.isTimedOut||(({isTimedOut:e,status:t})=>!e&&0==~~t)(e)||2!=~~(t/100)&&4!=~~(t/100)})(e)?t.onRetry(e):(({status:e})=>2==~~(e/100))(e)?t.onSuccess(e):t.onFail(e))(e,h)))};return Qt(e.hostsCache,t).then((e=>f([...e.statelessHosts].reverse(),e.getTimeout)))}function Gt(e){const t={value:`Algolia for JavaScript (${e})`,add(e){const r=`; ${e.segment}${void 0!==e.version?` (${e.version})`:""}`;return-1===t.value.indexOf(r)&&(t.value=`${t.value}${r}`),t}};return t}function Xt(e,t,r){const n=Zt(r);let o=`${e.protocol}://${e.url}/${"/"===t.charAt(0)?t.substr(1):t}`;return n.length&&(o+=`?${n}`),o}function Zt(e){return Object.keys(e).map((t=>{return Tt("%s=%s",t,(r=e[t],"[object Object]"===Object.prototype.toString.call(r)||"[object Array]"===Object.prototype.toString.call(r)?JSON.stringify(e[t]):e[t]));var r})).join("&")}function er(e){return e.map((e=>tr(e)))}function tr(e){const t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...e,request:{...e.request,headers:{...e.request.headers,...t}}}}const rr=e=>{const t=e.appId,r=function(e,t,r){const n={"x-algolia-api-key":r,"x-algolia-application-id":t};return{headers:()=>e===Mt.WithinHeaders?n:{},queryParameters:()=>e===Mt.WithinQueryParameters?n:{}}}(void 0!==e.authMode?e.authMode:Mt.WithinHeaders,t,e.apiKey),n=function(e){const{hostsCache:t,logger:r,requester:n,requestsCache:o,responsesCache:a,timeouts:c,userAgent:i,hosts:l,queryParameters:u,headers:s}=e,f={hostsCache:t,logger:r,requester:n,requestsCache:o,responsesCache:a,timeouts:c,userAgent:i,headers:s,queryParameters:u,hosts:l.map((e=>Jt(e))),read(e,t){const r=Ht(t,f.timeouts.read),n=()=>Yt(f,f.hosts.filter((e=>0!=(e.accept&Ft.Read))),e,r);if(!0!==(void 0!==r.cacheable?r.cacheable:e.cacheable))return n();const o={request:e,mappedRequestOptions:r,transporter:{queryParameters:f.queryParameters,headers:f.headers}};return f.responsesCache.get(o,(()=>f.requestsCache.get(o,(()=>f.requestsCache.set(o,n()).then((e=>Promise.all([f.requestsCache.delete(o),e])),(e=>Promise.all([f.requestsCache.delete(o),Promise.reject(e)]))).then((([e,t])=>t))))),{miss:e=>f.responsesCache.set(o,e)})},write:(e,t)=>Yt(f,f.hosts.filter((e=>0!=(e.accept&Ft.Write))),e,Ht(t,f.timeouts.write))};return f}({hosts:[{url:`${t}-dsn.algolia.net`,accept:Ft.Read},{url:`${t}.algolia.net`,accept:Ft.Write}].concat(qt([{url:`${t}-1.algolianet.com`},{url:`${t}-2.algolianet.com`},{url:`${t}-3.algolianet.com`}])),...e,headers:{...r.headers(),"content-type":"application/x-www-form-urlencoded",...e.headers},queryParameters:{...r.queryParameters(),...e.queryParameters}}),o={transporter:n,appId:t,addAlgoliaAgent(e,t){n.userAgent.add({segment:e,version:t})},clearCache:()=>Promise.all([n.requestsCache.clear(),n.responsesCache.clear()]).then((()=>{}))};return _t(o,e.methods)},nr=e=>(t,r)=>t.method===$t?e.transporter.read(t,r):e.transporter.write(t,r),or=e=>(t,r={})=>_t({transporter:e.transporter,appId:e.appId,indexName:t},r.methods),ar=e=>(t,r)=>{const n=t.map((e=>({...e,params:Zt(e.params||{})})));return e.transporter.read({method:Wt,path:"1/indexes/*/queries",data:{requests:n},cacheable:!0},r)},cr=e=>(t,r)=>Promise.all(t.map((t=>{const{facetName:n,facetQuery:o,...a}=t.params;return or(e)(t.indexName,{methods:{searchForFacetValues:ur}}).searchForFacetValues(n,o,{...r,...a})}))),ir=e=>(t,r,n)=>e.transporter.read({method:Wt,path:Tt("1/answers/%s/prediction",e.indexName),data:{query:t,queryLanguages:r},cacheable:!0},n),lr=e=>(t,r)=>e.transporter.read({method:Wt,path:Tt("1/indexes/%s/query",e.indexName),data:{query:t},cacheable:!0},r),ur=e=>(t,r,n)=>e.transporter.read({method:Wt,path:Tt("1/indexes/%s/facets/%s/query",e.indexName,t),data:{facetQuery:r},cacheable:!0},n),sr=1,fr=2,mr=3;function pr(e,t,r){const n={appId:e,apiKey:t,timeouts:{connect:1,read:2,write:30},requester:{send:e=>new Promise((t=>{const r=new XMLHttpRequest;r.open(e.method,e.url,!0),Object.keys(e.headers).forEach((t=>r.setRequestHeader(t,e.headers[t])));const n=(e,n)=>setTimeout((()=>{r.abort(),t({status:0,content:n,isTimedOut:!0})}),1e3*e),o=n(e.connectTimeout,"Connection timeout");let a;r.onreadystatechange=()=>{r.readyState>r.OPENED&&void 0===a&&(clearTimeout(o),a=n(e.responseTimeout,"Socket timeout"))},r.onerror=()=>{0===r.status&&(clearTimeout(o),clearTimeout(a),t({content:r.responseText||"Network request failed",status:r.status,isTimedOut:!1}))},r.onload=()=>{clearTimeout(o),clearTimeout(a),t({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(e.data)}))},logger:(o=mr,{debug:(e,t)=>(sr>=o&&console.debug(e,t),Promise.resolve()),info:(e,t)=>(fr>=o&&console.info(e,t),Promise.resolve()),error:(e,t)=>(console.error(e,t),Promise.resolve())}),responsesCache:Rt(),requestsCache:Rt({serializable:!1}),hostsCache:Nt({caches:[xt({key:`4.13.1-${e}`}),Rt()]}),userAgent:Gt(Lt).add({segment:"Browser",version:"lite"}),authMode:Mt.WithinQueryParameters};var o;return rr({...n,...r,methods:{search:ar,searchForFacetValues:cr,multipleQueries:ar,multipleSearchForFacetValues:cr,customRequest:nr,initIndex:e=>t=>or(e)(t,{methods:{search:lr,searchForFacetValues:ur,findAnswers:ir}})}})}pr.version=Lt;var dr=pr,hr="3.1.0";function vr(){}function yr(e){return e}function gr(e,t){return e.reduce((function(e,r){var n=t(r);return e.hasOwnProperty(n)||(e[n]=[]),e[n].length<5&&e[n].push(r),e}),{})}var br=["footer","searchBox"];function Or(){return Or=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Dr(e){var t=e.appId,r=e.apiKey,n=e.indexName,o=e.placeholder,a=void 0===o?"Search docs":o,c=e.searchParameters,i=e.onClose,l=void 0===i?vr:i,u=e.transformItems,s=void 0===u?yr:u,f=e.hitComponent,m=void 0===f?Re:f,p=e.resultsFooterComponent,d=void 0===p?function(){return null}:p,h=e.navigator,v=e.initialScrollY,y=void 0===v?0:v,g=e.transformSearchClient,b=void 0===g?yr:g,O=e.disableUserPersonalization,S=void 0!==O&&O,j=e.initialQuery,E=void 0===j?"":j,w=e.translations,P=void 0===w?{}:w,I=e.getMissingResultsUrl,D=P.footer,C=P.searchBox,k=Ir(P,br),A=wr(ke.useState({query:"",collections:[],completion:null,context:{},isOpen:!1,activeItemId:null,status:"idle"}),2),x=A[0],N=A[1],R=ke.useRef(null),q=ke.useRef(null),_=ke.useRef(null),T=ke.useRef(null),L=ke.useRef(null),M=ke.useRef(10),H=ke.useRef("undefined"!=typeof window?window.getSelection().toString().slice(0,64):"").current,F=ke.useRef(E||H).current,U=function(e,t,r){return ke.useMemo((function(){var n=dr(e,t);return n.addAlgoliaAgent("docsearch",hr),!1===/docsearch.js \(.*\)/.test(n.transporter.userAgent.value)&&n.addAlgoliaAgent("docsearch-react",hr),r(n)}),[e,t,r])}(t,r,b),B=ke.useRef(At({key:"__DOCSEARCH_FAVORITE_SEARCHES__".concat(n),limit:10})).current,V=ke.useRef(At({key:"__DOCSEARCH_RECENT_SEARCHES__".concat(n),limit:0===B.getAll().length?7:4})).current,z=ke.useCallback((function(e){if(!S){var t="content"===e.type?e.__docsearch_parent:e;t&&-1===B.getAll().findIndex((function(e){return e.objectID===t.objectID}))&&V.add(t)}}),[B,V,S]),K=ke.useMemo((function(){return Ce({id:"docsearch",defaultActiveItemId:0,placeholder:a,openOnFocus:!0,initialState:{query:F,context:{searchSuggestions:[]}},navigator:h,onStateChange:function(e){N(e.state)},getSources:function(e){var t=e.query,r=e.state,o=e.setContext,a=e.setStatus;return t?U.search([{query:t,indexName:n,params:jr({attributesToRetrieve:["hierarchy.lvl0","hierarchy.lvl1","hierarchy.lvl2","hierarchy.lvl3","hierarchy.lvl4","hierarchy.lvl5","hierarchy.lvl6","content","type","url"],attributesToSnippet:["hierarchy.lvl1:".concat(M.current),"hierarchy.lvl2:".concat(M.current),"hierarchy.lvl3:".concat(M.current),"hierarchy.lvl4:".concat(M.current),"hierarchy.lvl5:".concat(M.current),"hierarchy.lvl6:".concat(M.current),"content:".concat(M.current)],snippetEllipsisText:"\u2026",highlightPreTag:"",highlightPostTag:"",hitsPerPage:20},c)}]).catch((function(e){throw"RetryError"===e.name&&a("error"),e})).then((function(e){var t=e.results[0],n=t.hits,a=t.nbHits,c=gr(n,(function(e){return it(e)}));return r.context.searchSuggestions.length0&&(W(),L.current&&L.current.focus())}),[F,W]),ke.useEffect((function(){function e(){if(q.current){var e=.01*window.innerHeight;q.current.style.setProperty("--docsearch-vh","".concat(e,"px"))}}return e(),window.addEventListener("resize",e),function(){window.removeEventListener("resize",e)}}),[]),ke.createElement("div",Or({ref:R},$({"aria-expanded":!0}),{className:["DocSearch","DocSearch-Container","stalled"===x.status&&"DocSearch-Container--Stalled","error"===x.status&&"DocSearch-Container--Errored"].filter(Boolean).join(" "),role:"button",tabIndex:0,onMouseDown:function(e){e.target===e.currentTarget&&l()}}),ke.createElement("div",{className:"DocSearch-Modal",ref:q},ke.createElement("header",{className:"DocSearch-SearchBar",ref:_},ke.createElement(It,Or({},K,{state:x,autoFocus:0===F.length,inputRef:L,isFromSelection:Boolean(F)&&F===H,translations:C,onClose:l}))),ke.createElement("div",{className:"DocSearch-Dropdown",ref:T},ke.createElement(Ot,Or({},K,{indexName:n,state:x,hitComponent:m,resultsFooterComponent:d,disableUserPersonalization:S,recentSearches:V,favoriteSearches:B,inputRef:L,translations:k,getMissingResultsUrl:I,onItemClick:function(e){z(e),l()}}))),ke.createElement("footer",{className:"DocSearch-Footer"},ke.createElement(Ne,{translations:D}))))}}}]); \ No newline at end of file diff --git a/assets/js/431.f87d0658.js b/assets/js/431.f87d0658.js new file mode 100644 index 00000000..f2af6ea5 --- /dev/null +++ b/assets/js/431.f87d0658.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[431],{2431:(e,t,r)=>{function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t,r){var a,c=t.initialState;return{getState:function(){return c},dispatch:function(a,i){var l=function(e){for(var t=1;twr});var f=0;var m=function(){};function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function d(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function h(e,t){var r=[];return Promise.resolve(e(t)).then((function(e){return Array.isArray(e),Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){if(e.sourceId,r.includes(e.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(e.sourceId)," is not unique."));r.push(e.sourceId);var t=function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var J,z,W,Q=null,Z=(J=-1,z=-1,W=void 0,function(e){var t=++J;return Promise.resolve(e).then((function(e){return W&&t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var ne=/((gt|sm)-|galaxy nexus)|samsung[- ]/i;var oe=["props","refresh","store"],ae=["inputElement","formElement","panelElement"],ce=["inputElement"],ie=["inputElement","maxLength"],le=["item","source"];function se(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ue(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function pe(e){var t=e.props,r=e.refresh,n=e.store,o=me(e,oe);return{getEnvironmentProps:function(e){var r=e.inputElement,o=e.formElement,a=e.panelElement;function c(e){!n.getState().isOpen&&n.pendingRequests.isEmpty()||e.target===r||!1===[o,a].some((function(t){return r=t,n=e.target,r===n||r.contains(n);var r,n}))&&(n.dispatch("blur",null),t.debug||n.pendingRequests.cancelAll())}return ue({onTouchStart:c,onMouseDown:c,onTouchMove:function(e){!1!==n.getState().isOpen&&r===t.environment.document.activeElement&&e.target!==r&&r.blur()}},me(e,ae))},getRootProps:function(e){return ue({role:"combobox","aria-expanded":n.getState().isOpen,"aria-haspopup":"listbox","aria-owns":n.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},e)},getFormProps:function(e){e.inputElement;return ue({action:"",noValidate:!0,role:"search",onSubmit:function(a){var c;a.preventDefault(),t.onSubmit(ue({event:a,refresh:r,state:n.getState()},o)),n.dispatch("submit",null),null===(c=e.inputElement)||void 0===c||c.blur()},onReset:function(a){var c;a.preventDefault(),t.onReset(ue({event:a,refresh:r,state:n.getState()},o)),n.dispatch("reset",null),null===(c=e.inputElement)||void 0===c||c.focus()}},me(e,ce))},getLabelProps:function(e){return ue({htmlFor:"".concat(t.id,"-input"),id:"".concat(t.id,"-label")},e)},getInputProps:function(e){var a;function c(e){(t.openOnFocus||Boolean(n.getState().query))&&G(ue({event:e,props:t,query:n.getState().completion||n.getState().query,refresh:r,store:n},o)),n.dispatch("focus",null)}var i=e||{},l=(i.inputElement,i.maxLength),s=void 0===l?512:l,u=me(i,ie),f=F(n.getState()),p=function(e){return Boolean(e&&e.match(ne))}((null===(a=t.environment.navigator)||void 0===a?void 0:a.userAgent)||""),d=null!=f&&f.itemUrl&&!p?"go":"search";return ue({"aria-autocomplete":"both","aria-activedescendant":n.getState().isOpen&&null!==n.getState().activeItemId?"".concat(t.id,"-item-").concat(n.getState().activeItemId):void 0,"aria-controls":n.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:n.getState().completion||n.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:d,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:s,type:"search",onChange:function(e){G(ue({event:e,props:t,query:e.currentTarget.value.slice(0,s),refresh:r,store:n},o))},onKeyDown:function(e){!function(e){var t=e.event,r=e.props,n=e.refresh,o=e.store,a=re(e,Y);if("ArrowUp"===t.key||"ArrowDown"===t.key){var c=function(){var e=r.environment.document.getElementById("".concat(r.id,"-item-").concat(o.getState().activeItemId));e&&(e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded(!1):e.scrollIntoView(!1))},i=function(){var e=F(o.getState());if(null!==o.getState().activeItemId&&e){var r=e.item,c=e.itemInputValue,i=e.itemUrl,l=e.source;l.onActive(ee({event:t,item:r,itemInputValue:c,itemUrl:i,refresh:n,source:l,state:o.getState()},a))}};t.preventDefault(),!1===o.getState().isOpen&&(r.openOnFocus||Boolean(o.getState().query))?G(ee({event:t,props:r,query:o.getState().query,refresh:n,store:o},a)).then((function(){o.dispatch(t.key,{nextActiveItemId:r.defaultActiveItemId}),i(),setTimeout(c,0)})):(o.dispatch(t.key,{}),i(),c())}else if("Escape"===t.key)t.preventDefault(),o.dispatch(t.key,null),o.pendingRequests.cancelAll();else if("Tab"===t.key)o.dispatch("blur",null),o.pendingRequests.cancelAll();else if("Enter"===t.key){if(null===o.getState().activeItemId||o.getState().collections.every((function(e){return 0===e.items.length})))return void(r.debug||o.pendingRequests.cancelAll());t.preventDefault();var l=F(o.getState()),s=l.item,u=l.itemInputValue,f=l.itemUrl,m=l.source;if(t.metaKey||t.ctrlKey)void 0!==f&&(m.onSelect(ee({event:t,item:s,itemInputValue:u,itemUrl:f,refresh:n,source:m,state:o.getState()},a)),r.navigator.navigateNewTab({itemUrl:f,item:s,state:o.getState()}));else if(t.shiftKey)void 0!==f&&(m.onSelect(ee({event:t,item:s,itemInputValue:u,itemUrl:f,refresh:n,source:m,state:o.getState()},a)),r.navigator.navigateNewWindow({itemUrl:f,item:s,state:o.getState()}));else if(t.altKey);else{if(void 0!==f)return m.onSelect(ee({event:t,item:s,itemInputValue:u,itemUrl:f,refresh:n,source:m,state:o.getState()},a)),void r.navigator.navigate({itemUrl:f,item:s,state:o.getState()});G(ee({event:t,nextState:{isOpen:!1},props:r,query:u,refresh:n,store:o},a)).then((function(){m.onSelect(ee({event:t,item:s,itemInputValue:u,itemUrl:f,refresh:n,source:m,state:o.getState()},a))}))}}}(ue({event:e,props:t,refresh:r,store:n},o))},onFocus:c,onBlur:m,onClick:function(r){e.inputElement!==t.environment.document.activeElement||n.getState().isOpen||c(r)}},u)},getPanelProps:function(e){return ue({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){n.dispatch("mouseleave",null)}},e)},getListProps:function(e){return ue({role:"listbox","aria-labelledby":"".concat(t.id,"-label"),id:"".concat(t.id,"-list")},e)},getItemProps:function(e){var a=e.item,c=e.source,i=me(e,le);return ue({id:"".concat(t.id,"-item-").concat(a.__autocomplete_id),role:"option","aria-selected":n.getState().activeItemId===a.__autocomplete_id,onMouseMove:function(e){if(a.__autocomplete_id!==n.getState().activeItemId){n.dispatch("mousemove",a.__autocomplete_id);var t=F(n.getState());if(null!==n.getState().activeItemId&&t){var c=t.item,i=t.itemInputValue,l=t.itemUrl,s=t.source;s.onActive(ue({event:e,item:c,itemInputValue:i,itemUrl:l,refresh:r,source:s,state:n.getState()},o))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var i=c.getItemInputValue({item:a,state:n.getState()}),l=c.getItemUrl({item:a,state:n.getState()});(l?Promise.resolve():G(ue({event:e,nextState:{isOpen:!1},props:t,query:i,refresh:r,store:n},o))).then((function(){c.onSelect(ue({event:e,item:a,itemInputValue:i,itemUrl:l,refresh:r,source:c,state:n.getState()},o))}))}},i)}}}var de=[{segment:"autocomplete-core",version:"1.7.4"}];function he(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ve(e){for(var t=1;t=r?null===n?null:0:o}function Se(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Ee(e){for(var t=1;t0},reshape:function(e){return e.sources}},e),{},{id:null!==(r=e.id)&&void 0!==r?r:"autocomplete-".concat(f++),plugins:o,initialState:b({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var r;null===(r=e.onStateChange)||void 0===r||r.call(e,t),o.forEach((function(e){var r;return null===(r=e.onStateChange)||void 0===r?void 0:r.call(e,t)}))},onSubmit:function(t){var r;null===(r=e.onSubmit)||void 0===r||r.call(e,t),o.forEach((function(e){var r;return null===(r=e.onSubmit)||void 0===r?void 0:r.call(e,t)}))},onReset:function(t){var r;null===(r=e.onReset)||void 0===r||r.call(e,t),o.forEach((function(e){var r;return null===(r=e.onReset)||void 0===r?void 0:r.call(e,t)}))},getSources:function(r){return Promise.all([].concat(v(o.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return h(e,r)}))).then((function(e){return c(e)})).then((function(e){return e.map((function(e){return b(b({},e),{},{onSelect:function(r){e.onSelect(r),t.forEach((function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,r)}))},onActive:function(r){e.onActive(r),t.forEach((function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,r)}))}})}))}))},navigator:b({navigate:function(e){var t=e.itemUrl;n.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,r=n.open(t,"_blank","noopener");null==r||r.focus()},navigateNewWindow:function(e){var t=e.itemUrl;n.open(t,"_blank","noopener")}},e.navigator)})}(e,t),n=a(we,r,(function(e){var t=e.prevState,n=e.state;r.onStateChange(Ie({prevState:t,state:n,refresh:s},o))})),o=function(e){var t=e.store;return{setActiveItemId:function(e){t.dispatch("setActiveItemId",e)},setQuery:function(e){t.dispatch("setQuery",e)},setCollections:function(e){var r=0,n=e.map((function(e){return l(l({},e),{},{items:c(e.items).map((function(e){return l(l({},e),{},{__autocomplete_id:r++})}))})}));t.dispatch("setCollections",n)},setIsOpen:function(e){t.dispatch("setIsOpen",e)},setStatus:function(e){t.dispatch("setStatus",e)},setContext:function(e){t.dispatch("setContext",e)}}}({store:n}),i=pe(Ie({props:r,refresh:s,store:n},o));function s(){return G(Ie({event:new Event("input"),nextState:{isOpen:n.getState().isOpen},props:r,query:n.getState().query,refresh:s,store:n},o))}return r.plugins.forEach((function(e){var r;return null===(r=e.subscribe)||void 0===r?void 0:r.call(e,Ie(Ie({},o),{},{refresh:s,onSelect:function(e){t.push({onSelect:e})},onActive:function(e){t.push({onActive:e})}}))})),function(e){var t,r,n=e.metadata,o=e.environment;if(null===(t=o.navigator)||void 0===t||null===(r=t.userAgent)||void 0===r?void 0:r.includes("Algolia Crawler")){var a=o.document.createElement("meta"),c=o.document.querySelector("head");a.name="algolia:metadata",setTimeout((function(){a.content=JSON.stringify(n),c.appendChild(a)}),0)}}({metadata:ge({plugins:r.plugins,options:e}),environment:r.environment}),Ie(Ie({refresh:s},i),o)}var ke=r(7294),Ae=64;function xe(e){var t=e.translations,r=(void 0===t?{}:t).searchByText,n=void 0===r?"Search by":r;return ke.createElement("a",{href:"https://www.algolia.com/ref/docsearch/?utm_source=".concat(window.location.hostname,"&utm_medium=referral&utm_content=powered_by&utm_campaign=docsearch"),target:"_blank",rel:"noopener noreferrer"},ke.createElement("span",{className:"DocSearch-Label"},n),ke.createElement("svg",{width:"77",height:"19","aria-label":"Algolia",role:"img",id:"Layer_1",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 2196.2 500"},ke.createElement("defs",null,ke.createElement("style",null,".cls-1,.cls-2{fill:#003dff;}.cls-2{fill-rule:evenodd;}")),ke.createElement("path",{className:"cls-2",d:"M1070.38,275.3V5.91c0-3.63-3.24-6.39-6.82-5.83l-50.46,7.94c-2.87,.45-4.99,2.93-4.99,5.84l.17,273.22c0,12.92,0,92.7,95.97,95.49,3.33,.1,6.09-2.58,6.09-5.91v-40.78c0-2.96-2.19-5.51-5.12-5.84-34.85-4.01-34.85-47.57-34.85-54.72Z"}),ke.createElement("rect",{className:"cls-1",x:"1845.88",y:"104.73",width:"62.58",height:"277.9",rx:"5.9",ry:"5.9"}),ke.createElement("path",{className:"cls-2",d:"M1851.78,71.38h50.77c3.26,0,5.9-2.64,5.9-5.9V5.9c0-3.62-3.24-6.39-6.82-5.83l-50.77,7.95c-2.87,.45-4.99,2.92-4.99,5.83v51.62c0,3.26,2.64,5.9,5.9,5.9Z"}),ke.createElement("path",{className:"cls-2",d:"M1764.03,275.3V5.91c0-3.63-3.24-6.39-6.82-5.83l-50.46,7.94c-2.87,.45-4.99,2.93-4.99,5.84l.17,273.22c0,12.92,0,92.7,95.97,95.49,3.33,.1,6.09-2.58,6.09-5.91v-40.78c0-2.96-2.19-5.51-5.12-5.84-34.85-4.01-34.85-47.57-34.85-54.72Z"}),ke.createElement("path",{className:"cls-2",d:"M1631.95,142.72c-11.14-12.25-24.83-21.65-40.78-28.31-15.92-6.53-33.26-9.85-52.07-9.85-18.78,0-36.15,3.17-51.92,9.85-15.59,6.66-29.29,16.05-40.76,28.31-11.47,12.23-20.38,26.87-26.76,44.03-6.38,17.17-9.24,37.37-9.24,58.36,0,20.99,3.19,36.87,9.55,54.21,6.38,17.32,15.14,32.11,26.45,44.36,11.29,12.23,24.83,21.62,40.6,28.46,15.77,6.83,40.12,10.33,52.4,10.48,12.25,0,36.78-3.82,52.7-10.48,15.92-6.68,29.46-16.23,40.78-28.46,11.29-12.25,20.05-27.04,26.25-44.36,6.22-17.34,9.24-33.22,9.24-54.21,0-20.99-3.34-41.19-10.03-58.36-6.38-17.17-15.14-31.8-26.43-44.03Zm-44.43,163.75c-11.47,15.75-27.56,23.7-48.09,23.7-20.55,0-36.63-7.8-48.1-23.7-11.47-15.75-17.21-34.01-17.21-61.2,0-26.89,5.59-49.14,17.06-64.87,11.45-15.75,27.54-23.52,48.07-23.52,20.55,0,36.63,7.78,48.09,23.52,11.47,15.57,17.36,37.98,17.36,64.87,0,27.19-5.72,45.3-17.19,61.2Z"}),ke.createElement("path",{className:"cls-2",d:"M894.42,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-14.52,22.58-22.99,49.63-22.99,78.73,0,44.89,20.13,84.92,51.59,111.1,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47,1.23,0,2.46-.03,3.68-.09,.36-.02,.71-.05,1.07-.07,.87-.05,1.75-.11,2.62-.2,.34-.03,.68-.08,1.02-.12,.91-.1,1.82-.21,2.73-.34,.21-.03,.42-.07,.63-.1,32.89-5.07,61.56-30.82,70.9-62.81v57.83c0,3.26,2.64,5.9,5.9,5.9h50.42c3.26,0,5.9-2.64,5.9-5.9V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,206.92c-12.2,10.16-27.97,13.98-44.84,15.12-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-42.24,0-77.12-35.89-77.12-79.37,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33v142.83Z"}),ke.createElement("path",{className:"cls-2",d:"M2133.97,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-14.52,22.58-22.99,49.63-22.99,78.73,0,44.89,20.13,84.92,51.59,111.1,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47,1.23,0,2.46-.03,3.68-.09,.36-.02,.71-.05,1.07-.07,.87-.05,1.75-.11,2.62-.2,.34-.03,.68-.08,1.02-.12,.91-.1,1.82-.21,2.73-.34,.21-.03,.42-.07,.63-.1,32.89-5.07,61.56-30.82,70.9-62.81v57.83c0,3.26,2.64,5.9,5.9,5.9h50.42c3.26,0,5.9-2.64,5.9-5.9V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,206.92c-12.2,10.16-27.97,13.98-44.84,15.12-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-42.24,0-77.12-35.89-77.12-79.37,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33v142.83Z"}),ke.createElement("path",{className:"cls-2",d:"M1314.05,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-11.79,18.34-19.6,39.64-22.11,62.59-.58,5.3-.88,10.68-.88,16.14s.31,11.15,.93,16.59c4.28,38.09,23.14,71.61,50.66,94.52,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47h0c17.99,0,34.61-5.93,48.16-15.97,16.29-11.58,28.88-28.54,34.48-47.75v50.26h-.11v11.08c0,21.84-5.71,38.27-17.34,49.36-11.61,11.08-31.04,16.63-58.25,16.63-11.12,0-28.79-.59-46.6-2.41-2.83-.29-5.46,1.5-6.27,4.22l-12.78,43.11c-1.02,3.46,1.27,7.02,4.83,7.53,21.52,3.08,42.52,4.68,54.65,4.68,48.91,0,85.16-10.75,108.89-32.21,21.48-19.41,33.15-48.89,35.2-88.52V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,64.1s.65,139.13,0,143.36c-12.08,9.77-27.11,13.59-43.49,14.7-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-1.32,0-2.63-.03-3.94-.1-40.41-2.11-74.52-37.26-74.52-79.38,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33Z"}),ke.createElement("path",{className:"cls-1",d:"M249.83,0C113.3,0,2,110.09,.03,246.16c-2,138.19,110.12,252.7,248.33,253.5,42.68,.25,83.79-10.19,120.3-30.03,3.56-1.93,4.11-6.83,1.08-9.51l-23.38-20.72c-4.75-4.21-11.51-5.4-17.36-2.92-25.48,10.84-53.17,16.38-81.71,16.03-111.68-1.37-201.91-94.29-200.13-205.96,1.76-110.26,92-199.41,202.67-199.41h202.69V407.41l-115-102.18c-3.72-3.31-9.42-2.66-12.42,1.31-18.46,24.44-48.53,39.64-81.93,37.34-46.33-3.2-83.87-40.5-87.34-86.81-4.15-55.24,39.63-101.52,94-101.52,49.18,0,89.68,37.85,93.91,85.95,.38,4.28,2.31,8.27,5.52,11.12l29.95,26.55c3.4,3.01,8.79,1.17,9.63-3.3,2.16-11.55,2.92-23.58,2.07-35.92-4.82-70.34-61.8-126.93-132.17-131.26-80.68-4.97-148.13,58.14-150.27,137.25-2.09,77.1,61.08,143.56,138.19,145.26,32.19,.71,62.03-9.41,86.14-26.95l150.26,133.2c6.44,5.71,16.61,1.14,16.61-7.47V9.48C499.66,4.25,495.42,0,490.18,0H249.83Z"})))}function Ne(e){return ke.createElement("svg",{width:"15",height:"15","aria-label":e.ariaLabel,role:"img"},ke.createElement("g",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.2"},e.children))}function Re(e){var t=e.translations,r=void 0===t?{}:t,n=r.selectText,o=void 0===n?"to select":n,a=r.selectKeyAriaLabel,c=void 0===a?"Enter key":a,i=r.navigateText,l=void 0===i?"to navigate":i,s=r.navigateUpKeyAriaLabel,u=void 0===s?"Arrow up":s,f=r.navigateDownKeyAriaLabel,m=void 0===f?"Arrow down":f,p=r.closeText,d=void 0===p?"to close":p,h=r.closeKeyAriaLabel,v=void 0===h?"Escape key":h,y=r.searchByText,g=void 0===y?"Search by":y;return ke.createElement(ke.Fragment,null,ke.createElement("div",{className:"DocSearch-Logo"},ke.createElement(xe,{translations:{searchByText:g}})),ke.createElement("ul",{className:"DocSearch-Commands"},ke.createElement("li",null,ke.createElement("kbd",{className:"DocSearch-Commands-Key"},ke.createElement(Ne,{ariaLabel:c},ke.createElement("path",{d:"M12 3.53088v3c0 1-1 2-2 2H4M7 11.53088l-3-3 3-3"}))),ke.createElement("span",{className:"DocSearch-Label"},o)),ke.createElement("li",null,ke.createElement("kbd",{className:"DocSearch-Commands-Key"},ke.createElement(Ne,{ariaLabel:m},ke.createElement("path",{d:"M7.5 3.5v8M10.5 8.5l-3 3-3-3"}))),ke.createElement("kbd",{className:"DocSearch-Commands-Key"},ke.createElement(Ne,{ariaLabel:u},ke.createElement("path",{d:"M7.5 11.5v-8M10.5 6.5l-3-3-3 3"}))),ke.createElement("span",{className:"DocSearch-Label"},l)),ke.createElement("li",null,ke.createElement("kbd",{className:"DocSearch-Commands-Key"},ke.createElement(Ne,{ariaLabel:v},ke.createElement("path",{d:"M13.6167 8.936c-.1065.3583-.6883.962-1.4875.962-.7993 0-1.653-.9165-1.653-2.1258v-.5678c0-1.2548.7896-2.1016 1.653-2.1016.8634 0 1.3601.4778 1.4875 1.0724M9 6c-.1352-.4735-.7506-.9219-1.46-.8972-.7092.0246-1.344.57-1.344 1.2166s.4198.8812 1.3445.9805C8.465 7.3992 8.968 7.9337 9 8.5c.032.5663-.454 1.398-1.4595 1.398C6.6593 9.898 6 9 5.963 8.4851m-1.4748.5368c-.2635.5941-.8099.876-1.5443.876s-1.7073-.6248-1.7073-2.204v-.4603c0-1.0416.721-2.131 1.7073-2.131.9864 0 1.6425 1.031 1.5443 2.2492h-2.956"}))),ke.createElement("span",{className:"DocSearch-Label"},d))))}function qe(e){var t=e.hit,r=e.children;return ke.createElement("a",{href:t.url},r)}function Te(){return ke.createElement("svg",{width:"40",height:"40",viewBox:"0 0 20 20",fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"},ke.createElement("path",{d:"M19 4.8a16 16 0 00-2-1.2m-3.3-1.2A16 16 0 001.1 4.7M16.7 8a12 12 0 00-2.8-1.4M10 6a12 12 0 00-6.7 2M12.3 14.7a4 4 0 00-4.5 0M14.5 11.4A8 8 0 0010 10M3 16L18 2M10 18h0"}))}function _e(e){var t=e.translations,r=void 0===t?{}:t,n=r.titleText,o=void 0===n?"Unable to fetch results":n,a=r.helpText,c=void 0===a?"You might want to check your network connection.":a;return ke.createElement("div",{className:"DocSearch-ErrorScreen"},ke.createElement("div",{className:"DocSearch-Screen-Icon"},ke.createElement(Te,null)),ke.createElement("p",{className:"DocSearch-Title"},o),ke.createElement("p",{className:"DocSearch-Help"},c))}function Le(){return ke.createElement("svg",{width:"40",height:"40",viewBox:"0 0 20 20",fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"},ke.createElement("path",{d:"M15.5 4.8c2 3 1.7 7-1 9.7h0l4.3 4.3-4.3-4.3a7.8 7.8 0 01-9.8 1m-2.2-2.2A7.8 7.8 0 0113.2 2.4M2 18L18 2"}))}var Me=["translations"];function He(e){return function(e){if(Array.isArray(e))return Fe(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Fe(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Fe(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Fe(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Be(e){var t=e.translations,r=void 0===t?{}:t,n=Ue(e,Me),o=r.noResultsText,a=void 0===o?"No results for":o,c=r.suggestedQueryText,i=void 0===c?"Try searching for":c,l=r.reportMissingResultsText,s=void 0===l?"Believe this query should return results?":l,u=r.reportMissingResultsLinkText,f=void 0===u?"Let us know.":u,m=n.state.context.searchSuggestions;return ke.createElement("div",{className:"DocSearch-NoResults"},ke.createElement("div",{className:"DocSearch-Screen-Icon"},ke.createElement(Le,null)),ke.createElement("p",{className:"DocSearch-Title"},a,' "',ke.createElement("strong",null,n.state.query),'"'),m&&m.length>0&&ke.createElement("div",{className:"DocSearch-NoResults-Prefill-List"},ke.createElement("p",{className:"DocSearch-Help"},i,":"),ke.createElement("ul",null,m.slice(0,3).reduce((function(e,t){return[].concat(He(e),[ke.createElement("li",{key:t},ke.createElement("button",{className:"DocSearch-Prefill",key:t,type:"button",onClick:function(){n.setQuery(t.toLowerCase()+" "),n.refresh(),n.inputRef.current.focus()}},t))])}),[]))),n.getMissingResultsUrl&&ke.createElement("p",{className:"DocSearch-Help"},"".concat(s," "),ke.createElement("a",{href:n.getMissingResultsUrl({query:n.state.query}),target:"_blank",rel:"noopener noreferrer"},f)))}var Ve=function(){return ke.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},ke.createElement("path",{d:"M17 6v12c0 .52-.2 1-1 1H4c-.7 0-1-.33-1-1V2c0-.55.42-1 1-1h8l5 5zM14 8h-3.13c-.51 0-.87-.34-.87-.87V4",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))};function Ke(e){switch(e.type){case"lvl1":return ke.createElement(Ve,null);case"content":return ke.createElement(Je,null);default:return ke.createElement($e,null)}}function $e(){return ke.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},ke.createElement("path",{d:"M13 13h4-4V8H7v5h6v4-4H7V8H3h4V3v5h6V3v5h4-4v5zm-6 0v4-4H3h4z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}function Je(){return ke.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},ke.createElement("path",{d:"M17 5H3h14zm0 5H3h14zm0 5H3h14z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))}function ze(){return ke.createElement("svg",{className:"DocSearch-Hit-Select-Icon",width:"20",height:"20",viewBox:"0 0 20 20"},ke.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},ke.createElement("path",{d:"M18 3v4c0 2-2 4-4 4H2"}),ke.createElement("path",{d:"M8 17l-6-6 6-6"})))}var We=["hit","attribute","tagName"];function Qe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Ze(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Xe(e,t){return t.split(".").reduce((function(e,t){return null!=e&&e[t]?e[t]:null}),e)}function et(e){var t=e.hit,r=e.attribute,n=e.tagName,o=void 0===n?"span":n,a=Ye(e,We);return(0,ke.createElement)(o,Ze(Ze({},a),{},{dangerouslySetInnerHTML:{__html:Xe(t,"_snippetResult.".concat(r,".value"))||Xe(t,r)}}))}function tt(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var n,o,a=[],c=!0,i=!1;try{for(r=r.call(e);!(c=(n=r.next()).done)&&(a.push(n.value),!t||a.length!==t);c=!0);}catch(l){i=!0,o=l}finally{try{c||null==r.return||r.return()}finally{if(i)throw o}}return a}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return rt(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return rt(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function rt(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r|<\/mark>)/g,it=RegExp(ct.source);function lt(e){var t,r,n,o,a,c=e;if(!c.__docsearch_parent&&!e._highlightResult)return e.hierarchy.lvl0;var i=((c.__docsearch_parent?null===(t=c.__docsearch_parent)||void 0===t||null===(r=t._highlightResult)||void 0===r||null===(n=r.hierarchy)||void 0===n?void 0:n.lvl0:null===(o=e._highlightResult)||void 0===o||null===(a=o.hierarchy)||void 0===a?void 0:a.lvl0)||{}).value;return i&&it.test(i)?i.replace(ct,""):i}function st(){return st=Object.assign||function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function yt(e){var t=e.translations,r=void 0===t?{}:t,n=vt(e,dt),o=r.recentSearchesTitle,a=void 0===o?"Recent":o,c=r.noRecentSearchesText,i=void 0===c?"No recent searches":c,l=r.saveRecentSearchButtonTitle,s=void 0===l?"Save this search":l,u=r.removeRecentSearchButtonTitle,f=void 0===u?"Remove this search from history":u,m=r.favoriteSearchesTitle,p=void 0===m?"Favorite":m,d=r.removeFavoriteSearchButtonTitle,h=void 0===d?"Remove this search from favorites":d;return"idle"===n.state.status&&!1===n.hasCollections?n.disableUserPersonalization?null:ke.createElement("div",{className:"DocSearch-StartScreen"},ke.createElement("p",{className:"DocSearch-Help"},i)):!1===n.hasCollections?null:ke.createElement("div",{className:"DocSearch-Dropdown-Container"},ke.createElement(ot,ht({},n,{title:a,collection:n.state.collections[0],renderIcon:function(){return ke.createElement("div",{className:"DocSearch-Hit-icon"},ke.createElement(ft,null))},renderAction:function(e){var t=e.item,r=e.runFavoriteTransition,o=e.runDeleteTransition;return ke.createElement(ke.Fragment,null,ke.createElement("div",{className:"DocSearch-Hit-action"},ke.createElement("button",{className:"DocSearch-Hit-action-button",title:s,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),r((function(){n.favoriteSearches.add(t),n.recentSearches.remove(t),n.refresh()}))}},ke.createElement(mt,null))),ke.createElement("div",{className:"DocSearch-Hit-action"},ke.createElement("button",{className:"DocSearch-Hit-action-button",title:f,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),o((function(){n.recentSearches.remove(t),n.refresh()}))}},ke.createElement(pt,null))))}})),ke.createElement(ot,ht({},n,{title:p,collection:n.state.collections[1],renderIcon:function(){return ke.createElement("div",{className:"DocSearch-Hit-icon"},ke.createElement(mt,null))},renderAction:function(e){var t=e.item,r=e.runDeleteTransition;return ke.createElement("div",{className:"DocSearch-Hit-action"},ke.createElement("button",{className:"DocSearch-Hit-action-button",title:h,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),r((function(){n.favoriteSearches.remove(t),n.refresh()}))}},ke.createElement(pt,null)))}})))}var gt=["translations"];function bt(){return bt=Object.assign||function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var St=ke.memo((function(e){var t=e.translations,r=void 0===t?{}:t,n=Ot(e,gt);if("error"===n.state.status)return ke.createElement(_e,{translations:null==r?void 0:r.errorScreen});var o=n.state.collections.some((function(e){return e.items.length>0}));return n.state.query?!1===o?ke.createElement(Be,bt({},n,{translations:null==r?void 0:r.noResultsScreen})):ke.createElement(ut,n):ke.createElement(yt,bt({},n,{hasCollections:o,translations:null==r?void 0:r.startScreen}))}),(function(e,t){return"loading"===t.state.status||"stalled"===t.state.status}));function Et(){return ke.createElement("svg",{viewBox:"0 0 38 38",stroke:"currentColor",strokeOpacity:".5"},ke.createElement("g",{fill:"none",fillRule:"evenodd"},ke.createElement("g",{transform:"translate(1 1)",strokeWidth:"2"},ke.createElement("circle",{strokeOpacity:".3",cx:"18",cy:"18",r:"18"}),ke.createElement("path",{d:"M36 18c0-9.94-8.06-18-18-18"},ke.createElement("animateTransform",{attributeName:"transform",type:"rotate",from:"0 18 18",to:"360 18 18",dur:"1s",repeatCount:"indefinite"})))))}var jt=r(830),wt=["translations"];function Pt(){return Pt=Object.assign||function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Dt(e){var t=e.translations,r=void 0===t?{}:t,n=It(e,wt),o=r.resetButtonTitle,a=void 0===o?"Clear the query":o,c=r.resetButtonAriaLabel,i=void 0===c?"Clear the query":c,l=r.cancelButtonText,s=void 0===l?"Cancel":l,u=r.cancelButtonAriaLabel,f=void 0===u?"Cancel":u,m=n.getFormProps({inputElement:n.inputRef.current}).onReset;return ke.useEffect((function(){n.autoFocus&&n.inputRef.current&&n.inputRef.current.focus()}),[n.autoFocus,n.inputRef]),ke.useEffect((function(){n.isFromSelection&&n.inputRef.current&&n.inputRef.current.select()}),[n.isFromSelection,n.inputRef]),ke.createElement(ke.Fragment,null,ke.createElement("form",{className:"DocSearch-Form",onSubmit:function(e){e.preventDefault()},onReset:m},ke.createElement("label",Pt({className:"DocSearch-MagnifierLabel"},n.getLabelProps()),ke.createElement(jt.W,null)),ke.createElement("div",{className:"DocSearch-LoadingIndicator"},ke.createElement(Et,null)),ke.createElement("input",Pt({className:"DocSearch-Input",ref:n.inputRef},n.getInputProps({inputElement:n.inputRef.current,autoFocus:n.autoFocus,maxLength:Ae}))),ke.createElement("button",{type:"reset",title:a,className:"DocSearch-Reset","aria-label":i,hidden:!n.state.query},ke.createElement(pt,null))),ke.createElement("button",{className:"DocSearch-Cancel",type:"reset","aria-label":f,onClick:n.onClose},s))}var Ct=["_highlightResult","_snippetResult"];function kt(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function At(e){return!1===function(){var e="__TEST_KEY__";try{return localStorage.setItem(e,""),localStorage.removeItem(e),!0}catch(t){return!1}}()?{setItem:function(){},getItem:function(){return[]}}:{setItem:function(t){return window.localStorage.setItem(e,JSON.stringify(t))},getItem:function(){var t=window.localStorage.getItem(e);return t?JSON.parse(t):[]}}}function xt(e){var t=e.key,r=e.limit,n=void 0===r?5:r,o=At(t),a=o.getItem().slice(0,n);return{add:function(e){var t=e,r=(t._highlightResult,t._snippetResult,kt(t,Ct)),c=a.findIndex((function(e){return e.objectID===r.objectID}));c>-1&&a.splice(c,1),a.unshift(r),a=a.slice(0,n),o.setItem(a)},remove:function(e){a=a.filter((function(t){return t.objectID!==e.objectID})),o.setItem(a)},getAll:function(){return a}}}function Nt(e){const t=`algoliasearch-client-js-${e.key}`;let r;const n=()=>(void 0===r&&(r=e.localStorage||window.localStorage),r),o=()=>JSON.parse(n().getItem(t)||"{}");return{get:(e,t,r={miss:()=>Promise.resolve()})=>Promise.resolve().then((()=>{const r=JSON.stringify(e),n=o()[r];return Promise.all([n||t(),void 0!==n])})).then((([e,t])=>Promise.all([e,t||r.miss(e)]))).then((([e])=>e)),set:(e,r)=>Promise.resolve().then((()=>{const a=o();return a[JSON.stringify(e)]=r,n().setItem(t,JSON.stringify(a)),r})),delete:e=>Promise.resolve().then((()=>{const r=o();delete r[JSON.stringify(e)],n().setItem(t,JSON.stringify(r))})),clear:()=>Promise.resolve().then((()=>{n().removeItem(t)}))}}function Rt(e){const t=[...e.caches],r=t.shift();return void 0===r?{get:(e,t,r={miss:()=>Promise.resolve()})=>t().then((e=>Promise.all([e,r.miss(e)]))).then((([e])=>e)),set:(e,t)=>Promise.resolve(t),delete:e=>Promise.resolve(),clear:()=>Promise.resolve()}:{get:(e,n,o={miss:()=>Promise.resolve()})=>r.get(e,n,o).catch((()=>Rt({caches:t}).get(e,n,o))),set:(e,n)=>r.set(e,n).catch((()=>Rt({caches:t}).set(e,n))),delete:e=>r.delete(e).catch((()=>Rt({caches:t}).delete(e))),clear:()=>r.clear().catch((()=>Rt({caches:t}).clear()))}}function qt(e={serializable:!0}){let t={};return{get(r,n,o={miss:()=>Promise.resolve()}){const a=JSON.stringify(r);if(a in t)return Promise.resolve(e.serializable?JSON.parse(t[a]):t[a]);const c=n(),i=o&&o.miss||(()=>Promise.resolve());return c.then((e=>i(e))).then((()=>c))},set:(r,n)=>(t[JSON.stringify(r)]=e.serializable?JSON.stringify(n):n,Promise.resolve(n)),delete:e=>(delete t[JSON.stringify(e)],Promise.resolve()),clear:()=>(t={},Promise.resolve())}}function Tt(e){let t=e.length-1;for(;t>0;t--){const r=Math.floor(Math.random()*(t+1)),n=e[t];e[t]=e[r],e[r]=n}return e}function _t(e,t){return t?(Object.keys(t).forEach((r=>{e[r]=t[r](e)})),e):e}function Lt(e,...t){let r=0;return e.replace(/%s/g,(()=>encodeURIComponent(t[r++])))}const Mt="4.17.0",Ht={WithinQueryParameters:0,WithinHeaders:1};function Ft(e,t){const r=e||{},n=r.data||{};return Object.keys(r).forEach((e=>{-1===["timeout","headers","queryParameters","data","cacheable"].indexOf(e)&&(n[e]=r[e])})),{data:Object.entries(n).length>0?n:void 0,timeout:r.timeout||t,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}const Ut={Read:1,Write:2,Any:3},Bt={Up:1,Down:2,Timeouted:3},Vt=12e4;function Kt(e,t=Bt.Up){return{...e,status:t,lastUpdate:Date.now()}}function $t(e){return"string"==typeof e?{protocol:"https",url:e,accept:Ut.Any}:{protocol:e.protocol||"https",url:e.url,accept:e.accept||Ut.Any}}const Jt={Delete:"DELETE",Get:"GET",Post:"POST",Put:"PUT"};function zt(e,t){return Promise.all(t.map((t=>e.get(t,(()=>Promise.resolve(Kt(t))))))).then((e=>{const r=e.filter((e=>function(e){return e.status===Bt.Up||Date.now()-e.lastUpdate>Vt}(e))),n=e.filter((e=>function(e){return e.status===Bt.Timeouted&&Date.now()-e.lastUpdate<=Vt}(e))),o=[...r,...n];return{getTimeout:(e,t)=>(0===n.length&&0===e?1:n.length+3+e)*t,statelessHosts:o.length>0?o.map((e=>$t(e))):t}}))}const Wt=(e,t)=>(e=>{const t=e.status;return e.isTimedOut||(({isTimedOut:e,status:t})=>!e&&0==~~t)(e)||2!=~~(t/100)&&4!=~~(t/100)})(e)?t.onRetry(e):(({status:e})=>2==~~(e/100))(e)?t.onSuccess(e):t.onFail(e);function Qt(e,t,r,n){const o=[],a=function(e,t){if(e.method===Jt.Get||void 0===e.data&&void 0===t.data)return;const r=Array.isArray(e.data)?e.data:{...e.data,...t.data};return JSON.stringify(r)}(r,n),c=function(e,t){const r={...e.headers,...t.headers},n={};return Object.keys(r).forEach((e=>{const t=r[e];n[e.toLowerCase()]=t})),n}(e,n),i=r.method,l=r.method!==Jt.Get?{}:{...r.data,...n.data},s={"x-algolia-agent":e.userAgent.value,...e.queryParameters,...l,...n.queryParameters};let u=0;const f=(t,l)=>{const m=t.pop();if(void 0===m)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:Xt(o)};const p={data:a,headers:c,method:i,url:Gt(m,r.path,s),connectTimeout:l(u,e.timeouts.connect),responseTimeout:l(u,n.timeout)},d=e=>{const r={request:p,response:e,host:m,triesLeft:t.length};return o.push(r),r},h={onSuccess:e=>function(e){try{return JSON.parse(e.content)}catch(t){throw function(e,t){return{name:"DeserializationError",message:e,response:t}}(t.message,e)}}(e),onRetry(r){const n=d(r);return r.isTimedOut&&u++,Promise.all([e.logger.info("Retryable failure",er(n)),e.hostsCache.set(m,Kt(m,r.isTimedOut?Bt.Timeouted:Bt.Down))]).then((()=>f(t,l)))},onFail(e){throw d(e),function({content:e,status:t},r){let n=e;try{n=JSON.parse(e).message}catch(o){}return function(e,t,r){return{name:"ApiError",message:e,status:t,transporterStackTrace:r}}(n,t,r)}(e,Xt(o))}};return e.requester.send(p).then((e=>Wt(e,h)))};return zt(e.hostsCache,t).then((e=>f([...e.statelessHosts].reverse(),e.getTimeout)))}function Zt(e){const t={value:`Algolia for JavaScript (${e})`,add(e){const r=`; ${e.segment}${void 0!==e.version?` (${e.version})`:""}`;return-1===t.value.indexOf(r)&&(t.value=`${t.value}${r}`),t}};return t}function Gt(e,t,r){const n=Yt(r);let o=`${e.protocol}://${e.url}/${"/"===t.charAt(0)?t.substr(1):t}`;return n.length&&(o+=`?${n}`),o}function Yt(e){return Object.keys(e).map((t=>{return Lt("%s=%s",t,(r=e[t],"[object Object]"===Object.prototype.toString.call(r)||"[object Array]"===Object.prototype.toString.call(r)?JSON.stringify(e[t]):e[t]));var r})).join("&")}function Xt(e){return e.map((e=>er(e)))}function er(e){const t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...e,request:{...e.request,headers:{...e.request.headers,...t}}}}const tr=e=>{const t=e.appId,r=function(e,t,r){const n={"x-algolia-api-key":r,"x-algolia-application-id":t};return{headers:()=>e===Ht.WithinHeaders?n:{},queryParameters:()=>e===Ht.WithinQueryParameters?n:{}}}(void 0!==e.authMode?e.authMode:Ht.WithinHeaders,t,e.apiKey),n=function(e){const{hostsCache:t,logger:r,requester:n,requestsCache:o,responsesCache:a,timeouts:c,userAgent:i,hosts:l,queryParameters:s,headers:u}=e,f={hostsCache:t,logger:r,requester:n,requestsCache:o,responsesCache:a,timeouts:c,userAgent:i,headers:u,queryParameters:s,hosts:l.map((e=>$t(e))),read(e,t){const r=Ft(t,f.timeouts.read),n=()=>Qt(f,f.hosts.filter((e=>0!=(e.accept&Ut.Read))),e,r);if(!0!==(void 0!==r.cacheable?r.cacheable:e.cacheable))return n();const o={request:e,mappedRequestOptions:r,transporter:{queryParameters:f.queryParameters,headers:f.headers}};return f.responsesCache.get(o,(()=>f.requestsCache.get(o,(()=>f.requestsCache.set(o,n()).then((e=>Promise.all([f.requestsCache.delete(o),e])),(e=>Promise.all([f.requestsCache.delete(o),Promise.reject(e)]))).then((([e,t])=>t))))),{miss:e=>f.responsesCache.set(o,e)})},write:(e,t)=>Qt(f,f.hosts.filter((e=>0!=(e.accept&Ut.Write))),e,Ft(t,f.timeouts.write))};return f}({hosts:[{url:`${t}-dsn.algolia.net`,accept:Ut.Read},{url:`${t}.algolia.net`,accept:Ut.Write}].concat(Tt([{url:`${t}-1.algolianet.com`},{url:`${t}-2.algolianet.com`},{url:`${t}-3.algolianet.com`}])),...e,headers:{...r.headers(),"content-type":"application/x-www-form-urlencoded",...e.headers},queryParameters:{...r.queryParameters(),...e.queryParameters}}),o={transporter:n,appId:t,addAlgoliaAgent(e,t){n.userAgent.add({segment:e,version:t})},clearCache:()=>Promise.all([n.requestsCache.clear(),n.responsesCache.clear()]).then((()=>{}))};return _t(o,e.methods)},rr=e=>(t,r)=>t.method===Jt.Get?e.transporter.read(t,r):e.transporter.write(t,r),nr=e=>(t,r={})=>_t({transporter:e.transporter,appId:e.appId,indexName:t},r.methods),or=e=>(t,r)=>{const n=t.map((e=>({...e,params:Yt(e.params||{})})));return e.transporter.read({method:Jt.Post,path:"1/indexes/*/queries",data:{requests:n},cacheable:!0},r)},ar=e=>(t,r)=>Promise.all(t.map((t=>{const{facetName:n,facetQuery:o,...a}=t.params;return nr(e)(t.indexName,{methods:{searchForFacetValues:lr}}).searchForFacetValues(n,o,{...r,...a})}))),cr=e=>(t,r,n)=>e.transporter.read({method:Jt.Post,path:Lt("1/answers/%s/prediction",e.indexName),data:{query:t,queryLanguages:r},cacheable:!0},n),ir=e=>(t,r)=>e.transporter.read({method:Jt.Post,path:Lt("1/indexes/%s/query",e.indexName),data:{query:t},cacheable:!0},r),lr=e=>(t,r,n)=>e.transporter.read({method:Jt.Post,path:Lt("1/indexes/%s/facets/%s/query",e.indexName,t),data:{facetQuery:r},cacheable:!0},n),sr={Debug:1,Info:2,Error:3};function ur(e,t,r){const n={appId:e,apiKey:t,timeouts:{connect:1,read:2,write:30},requester:{send:e=>new Promise((t=>{const r=new XMLHttpRequest;r.open(e.method,e.url,!0),Object.keys(e.headers).forEach((t=>r.setRequestHeader(t,e.headers[t])));const n=(e,n)=>setTimeout((()=>{r.abort(),t({status:0,content:n,isTimedOut:!0})}),1e3*e),o=n(e.connectTimeout,"Connection timeout");let a;r.onreadystatechange=()=>{r.readyState>r.OPENED&&void 0===a&&(clearTimeout(o),a=n(e.responseTimeout,"Socket timeout"))},r.onerror=()=>{0===r.status&&(clearTimeout(o),clearTimeout(a),t({content:r.responseText||"Network request failed",status:r.status,isTimedOut:!1}))},r.onload=()=>{clearTimeout(o),clearTimeout(a),t({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(e.data)}))},logger:(o=sr.Error,{debug:(e,t)=>(sr.Debug>=o&&console.debug(e,t),Promise.resolve()),info:(e,t)=>(sr.Info>=o&&console.info(e,t),Promise.resolve()),error:(e,t)=>(console.error(e,t),Promise.resolve())}),responsesCache:qt(),requestsCache:qt({serializable:!1}),hostsCache:Rt({caches:[Nt({key:`${Mt}-${e}`}),qt()]}),userAgent:Zt(Mt).add({segment:"Browser",version:"lite"}),authMode:Ht.WithinQueryParameters};var o;return tr({...n,...r,methods:{search:or,searchForFacetValues:ar,multipleQueries:or,multipleSearchForFacetValues:ar,customRequest:rr,initIndex:e=>t=>nr(e)(t,{methods:{search:ir,searchForFacetValues:lr,findAnswers:cr}})}})}ur.version=Mt;const fr=ur;var mr="3.3.3";function pr(){}function dr(e){return e}function hr(e,t){return e.reduce((function(e,r){var n=t(r);return e.hasOwnProperty(n)||(e[n]=[]),e[n].length<5&&e[n].push(r),e}),{})}var vr=["footer","searchBox"];function yr(){return yr=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function wr(e){var t=e.appId,r=e.apiKey,n=e.indexName,o=e.placeholder,a=void 0===o?"Search docs":o,c=e.searchParameters,i=e.onClose,l=void 0===i?pr:i,s=e.transformItems,u=void 0===s?dr:s,f=e.hitComponent,m=void 0===f?qe:f,p=e.resultsFooterComponent,d=void 0===p?function(){return null}:p,h=e.navigator,v=e.initialScrollY,y=void 0===v?0:v,g=e.transformSearchClient,b=void 0===g?dr:g,O=e.disableUserPersonalization,S=void 0!==O&&O,E=e.initialQuery,j=void 0===E?"":E,w=e.translations,P=void 0===w?{}:w,I=e.getMissingResultsUrl,D=P.footer,C=P.searchBox,k=jr(P,vr),A=Sr(ke.useState({query:"",collections:[],completion:null,context:{},isOpen:!1,activeItemId:null,status:"idle"}),2),x=A[0],N=A[1],R=ke.useRef(null),q=ke.useRef(null),T=ke.useRef(null),_=ke.useRef(null),L=ke.useRef(null),M=ke.useRef(10),H=ke.useRef("undefined"!=typeof window?window.getSelection().toString().slice(0,Ae):"").current,F=ke.useRef(j||H).current,U=function(e,t,r){return ke.useMemo((function(){var n=fr(e,t);return n.addAlgoliaAgent("docsearch",mr),!1===/docsearch.js \(.*\)/.test(n.transporter.userAgent.value)&&n.addAlgoliaAgent("docsearch-react",mr),r(n)}),[e,t,r])}(t,r,b),B=ke.useRef(xt({key:"__DOCSEARCH_FAVORITE_SEARCHES__".concat(n),limit:10})).current,V=ke.useRef(xt({key:"__DOCSEARCH_RECENT_SEARCHES__".concat(n),limit:0===B.getAll().length?7:4})).current,K=ke.useCallback((function(e){if(!S){var t="content"===e.type?e.__docsearch_parent:e;t&&-1===B.getAll().findIndex((function(e){return e.objectID===t.objectID}))&&V.add(t)}}),[B,V,S]),$=ke.useMemo((function(){return Ce({id:"docsearch",defaultActiveItemId:0,placeholder:a,openOnFocus:!0,initialState:{query:F,context:{searchSuggestions:[]}},navigator:h,onStateChange:function(e){N(e.state)},getSources:function(e){var t=e.query,r=e.state,o=e.setContext,a=e.setStatus;return t?U.search([{query:t,indexName:n,params:br({attributesToRetrieve:["hierarchy.lvl0","hierarchy.lvl1","hierarchy.lvl2","hierarchy.lvl3","hierarchy.lvl4","hierarchy.lvl5","hierarchy.lvl6","content","type","url"],attributesToSnippet:["hierarchy.lvl1:".concat(M.current),"hierarchy.lvl2:".concat(M.current),"hierarchy.lvl3:".concat(M.current),"hierarchy.lvl4:".concat(M.current),"hierarchy.lvl5:".concat(M.current),"hierarchy.lvl6:".concat(M.current),"content:".concat(M.current)],snippetEllipsisText:"\u2026",highlightPreTag:"",highlightPostTag:"",hitsPerPage:20},c)}]).catch((function(e){throw"RetryError"===e.name&&a("error"),e})).then((function(e){var t=e.results[0],n=t.hits,a=t.nbHits,c=hr(n,(function(e){return lt(e)}));return r.context.searchSuggestions.length0&&(W(),L.current&&L.current.focus())}),[F,W]),ke.useEffect((function(){function e(){if(q.current){var e=.01*window.innerHeight;q.current.style.setProperty("--docsearch-vh","".concat(e,"px"))}}return e(),window.addEventListener("resize",e),function(){window.removeEventListener("resize",e)}}),[]),ke.createElement("div",yr({ref:R},z({"aria-expanded":!0}),{className:["DocSearch","DocSearch-Container","stalled"===x.status&&"DocSearch-Container--Stalled","error"===x.status&&"DocSearch-Container--Errored"].filter(Boolean).join(" "),role:"button",tabIndex:0,onMouseDown:function(e){e.target===e.currentTarget&&l()}}),ke.createElement("div",{className:"DocSearch-Modal",ref:q},ke.createElement("header",{className:"DocSearch-SearchBar",ref:T},ke.createElement(Dt,yr({},$,{state:x,autoFocus:0===F.length,inputRef:L,isFromSelection:Boolean(F)&&F===H,translations:C,onClose:l}))),ke.createElement("div",{className:"DocSearch-Dropdown",ref:_},ke.createElement(St,yr({},$,{indexName:n,state:x,hitComponent:m,resultsFooterComponent:d,disableUserPersonalization:S,recentSearches:V,favoriteSearches:B,inputRef:L,translations:k,getMissingResultsUrl:I,onItemClick:function(e){K(e),l()}}))),ke.createElement("footer",{className:"DocSearch-Footer"},ke.createElement(Re,{translations:D}))))}}}]); \ No newline at end of file diff --git a/assets/js/486.1cefe950.js b/assets/js/486.1cefe950.js new file mode 100644 index 00000000..d5bf2f26 --- /dev/null +++ b/assets/js/486.1cefe950.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[486],{6742:(e,t,n)=>{n.d(t,{Z:()=>f});var r=n(7294),o=n(3727),a=n(2263),i=n(3919),s=n(412);const c=(0,r.createContext)({collectLink:()=>{}});var u=n(4996),l=n(8780);const f=function(e){let{isNavLink:t,to:n,href:f,activeClassName:d,isActive:p,"data-noBrokenLinkCheck":v,autoAddBaseUrl:g=!0,...h}=e;var m;const{siteConfig:{trailingSlash:y}}=(0,a.Z)(),{withBaseUrl:b}=(0,u.C)(),w=(0,r.useContext)(c),_=n||f,P=(0,i.Z)(_),D=null==_?void 0:_.replace("pathname://","");let O=void 0!==D?(A=D,g&&(e=>e.startsWith("/"))(A)?b(A):A):void 0;var A;O&&P&&(O=(0,l.applyTrailingSlash)(O,y));const E=(0,r.useRef)(!1),j=t?o.OL:o.rU,V=s.Z.canUseIntersectionObserver;let x;(0,r.useEffect)((()=>(!V&&P&&null!=O&&window.docusaurus.prefetch(O),()=>{V&&x&&x.disconnect()})),[O,V,P]);const S=null!==(m=null==O?void 0:O.startsWith("#"))&&void 0!==m&&m,C=!O||!P||S;return O&&P&&!S&&!v&&w.collectLink(O),C?r.createElement("a",{href:O,..._&&!P&&{target:"_blank",rel:"noopener noreferrer"},...h}):r.createElement(j,{...h,onMouseEnter:()=>{E.current||null==O||(window.docusaurus.preload(O),E.current=!0)},innerRef:e=>{var t,n;V&&e&&P&&(t=e,n=()=>{null!=O&&window.docusaurus.prefetch(O)},x=new window.IntersectionObserver((e=>{e.forEach((e=>{t===e.target&&(e.isIntersecting||e.intersectionRatio>0)&&(x.unobserve(t),x.disconnect(),n())}))})),x.observe(t))},to:O||"",...t&&{isActive:p,activeClassName:d}})}},4973:(e,t,n)=>{n.d(t,{Z:()=>f,I:()=>l});var r=n(7294);const o=/{\w+}/g,a="{}";function i(e,t){const n=[],i=e.replace(o,(e=>{const o=e.substr(1,e.length-2),i=null==t?void 0:t[o];if(void 0!==i){const e=r.isValidElement(i)?i:String(i);return n.push(e),a}return e}));return 0===n.length?e:n.every((e=>"string"==typeof e))?i.split(a).reduce(((e,t,r)=>{var o;return e.concat(t).concat(null!==(o=n[r])&&void 0!==o?o:"")}),""):i.split(a).reduce(((e,t,o)=>[...e,r.createElement(r.Fragment,{key:o},t,n[o])]),[])}function s(e){let{children:t,values:n}=e;return i(t,n)}var c=n(7529);function u(e){let{id:t,message:n}=e;var r;return null!==(r=c[null!=t?t:n])&&void 0!==r?r:n}function l(e,t){let{message:n,id:r}=e;var o;return i(null!==(o=u({message:n,id:r}))&&void 0!==o?o:n,t)}function f(e){let{children:t,id:n,values:o}=e;var a;const i=null!==(a=u({message:t,id:n}))&&void 0!==a?a:t;return r.createElement(s,{values:o},i)}},3919:(e,t,n)=>{function r(e){return!0===/^(\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>o,b:()=>r})},8143:(e,t,n)=>{n.r(t),n.d(t,{BrowserRouter:()=>r.VK,HashRouter:()=>r.UT,Link:()=>r.rU,MemoryRouter:()=>r.VA,NavLink:()=>r.OL,Prompt:()=>r.NL,Redirect:()=>r.l_,Route:()=>r.AW,Router:()=>r.F0,StaticRouter:()=>r.gx,Switch:()=>r.rs,generatePath:()=>r.Gn,matchPath:()=>r.LX,useHistory:()=>r.k6,useLocation:()=>r.TH,useParams:()=>r.UO,useRouteMatch:()=>r.$B,withRouter:()=>r.EN});var r=n(3727)},4996:(e,t,n)=>{n.d(t,{C:()=>a,Z:()=>i});var r=n(2263),o=n(3919);function a(){const{siteConfig:{baseUrl:e="/",url:t}={}}=(0,r.Z)();return{withBaseUrl:(n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n)return n;if(n.startsWith("#"))return n;if((0,o.b)(n))return n;if(a)return t+n;const s=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+s:s}(t,e,n,r)}}function i(e,t){void 0===t&&(t={});const{withBaseUrl:n}=a();return n(e,t)}},8084:(e,t,n)=>{n.r(t),n.d(t,{default:()=>a,useAllPluginInstancesData:()=>i,usePluginData:()=>s});var r=n(2263);const o="default";function a(){const{globalData:e}=(0,r.Z)();if(!e)throw new Error("Docusaurus global data not found.");return e}function i(e){const t=a()[e];if(!t)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return t}function s(e,t){void 0===t&&(t=o);const n=i(e)[t];if(!n)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return n}},8408:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getDocVersionSuggestions=t.getActiveDocContext=t.getActiveVersion=t.getLatestVersion=t.getActivePlugin=void 0;const r=n(8143);t.getActivePlugin=function(e,t,n){void 0===n&&(n={});const o=Object.entries(e).find((e=>{let[n,o]=e;return!!r.matchPath(t,{path:o.path,exact:!1,strict:!1})})),a=o?{pluginId:o[0],pluginData:o[1]}:void 0;if(!a&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return a};t.getLatestVersion=e=>e.versions.find((e=>e.isLast));t.getActiveVersion=(e,n)=>{const o=t.getLatestVersion(e);return[...e.versions.filter((e=>e!==o)),o].find((e=>!!r.matchPath(n,{path:e.path,exact:!1,strict:!1})))};t.getActiveDocContext=(e,n)=>{const o=t.getActiveVersion(e,n),a=null==o?void 0:o.docs.find((e=>!!r.matchPath(n,{path:e.path,exact:!0,strict:!1})));return{activeVersion:o,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}};t.getDocVersionSuggestions=(e,n)=>{const r=t.getLatestVersion(e),o=t.getActiveDocContext(e,n);return{latestDocSuggestion:null==o?void 0:o.alternateDocVersions[r.name],latestVersionSuggestion:r}}},6730:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.useDocVersionSuggestions=t.useActiveDocContext=t.useActiveVersion=t.useLatestVersion=t.useVersions=t.useActivePluginAndVersion=t.useActivePlugin=t.useDocsData=t.useAllDocsData=void 0;const r=n(655),o=n(8143),a=r.__importStar(n(8084)),i=n(8408);t.useAllDocsData=()=>{var e;return null!==(e=a.default()["docusaurus-plugin-content-docs"])&&void 0!==e?e:{}};t.useDocsData=e=>a.usePluginData("docusaurus-plugin-content-docs",e);t.useActivePlugin=function(e){void 0===e&&(e={});const n=t.useAllDocsData(),{pathname:r}=o.useLocation();return i.getActivePlugin(n,r,e)};t.useActivePluginAndVersion=function(e){void 0===e&&(e={});const n=t.useActivePlugin(e),{pathname:r}=o.useLocation();if(n){return{activePlugin:n,activeVersion:i.getActiveVersion(n.pluginData,r)}}};t.useVersions=e=>t.useDocsData(e).versions;t.useLatestVersion=e=>{const n=t.useDocsData(e);return i.getLatestVersion(n)};t.useActiveVersion=e=>{const n=t.useDocsData(e),{pathname:r}=o.useLocation();return i.getActiveVersion(n,r)};t.useActiveDocContext=e=>{const n=t.useDocsData(e),{pathname:r}=o.useLocation();return i.getActiveDocContext(n,r)};t.useDocVersionSuggestions=e=>{const n=t.useDocsData(e),{pathname:r}=o.useLocation();return i.getDocVersionSuggestions(n,r)}},1217:(e,t,n)=>{n.d(t,{Z:()=>s});var r=n(7294),o=n(9105),a=n(9306),i=n(4996);function s(e){let{title:t,description:n,keywords:s,image:c}=e;const{image:u}=(0,a.LU)(),l=(0,a.pe)(t),f=(0,i.Z)(c||u,{absolute:!0});return r.createElement(o.Z,null,t&&r.createElement("title",null,l),t&&r.createElement("meta",{property:"og:title",content:l}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),s&&r.createElement("meta",{name:"keywords",content:Array.isArray(s)?s.join(","):s}),f&&r.createElement("meta",{property:"og:image",content:f}),f&&r.createElement("meta",{name:"twitter:image",content:f}))}},907:(e,t,n)=>{n.d(t,{Iw:()=>r.useActiveDocContext,Jo:()=>r.useDocVersionSuggestions,WS:()=>r.useActivePluginAndVersion,_r:()=>r.useAllDocsData,gA:()=>r.useActivePlugin,gB:()=>r.useVersions,yW:()=>r.useLatestVersion,zh:()=>r.useDocsData,zu:()=>r.useActiveVersion});var r=n(6730)},9306:(e,t,n)=>{n.d(t,{pl:()=>H,HX:()=>g,L5:()=>I,kM:()=>F,WA:()=>u,os:()=>h,Mg:()=>b,_f:()=>l,bc:()=>v,l5:()=>d,nT:()=>G,J:()=>M,Oh:()=>Z,SL:()=>V,c2:()=>E,D9:()=>j,LU:()=>o,pe:()=>w});var r=n(2263);function o(){return(0,r.Z)().siteConfig.themeConfig}const a="localStorage";function i(e){if(void 0===e&&(e=a),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,s||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),s=!0),null}var t}let s=!1;const c={get:()=>null,set:()=>{},del:()=>{}};const u=(e,t)=>{if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t}}(e);const n=i(null==t?void 0:t.persistence);return null===n?c:{get:()=>n.getItem(e),set:t=>n.setItem(e,t),del:()=>n.removeItem(e)}};function l(e){void 0===e&&(e=a);const t=i(e);if(!t)return[];const n=[];for(let r=0;r{const n=e=>!e||(null==e?void 0:e.endsWith("/"))?e:`${e}/`;return n(e)===n(t)},w=e=>{const{siteConfig:t={}}=(0,r.Z)(),{title:n,titleDelimiter:o="|"}=t;return e&&e.trim().length?`${e.trim()} ${o} ${n}`:n};var _=n(7294);const P=["zero","one","two","few","many","other"];function D(e){return P.filter((t=>e.includes(t)))}const O={locale:"en",pluralForms:D(["one","other"]),select:e=>1===e?"one":"other"};function A(){const{i18n:{currentLocale:e}}=(0,r.Z)();return(0,_.useMemo)((()=>{if(!Intl.PluralRules)return console.error("Intl.PluralRules not available!\nDocusaurus will fallback to a default/fallback (English) Intl.PluralRules implementation.\n "),O;try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:D(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to a default/fallback (English) Intl.PluralRules implementation.\n`),O}}),[e])}function E(){const e=A();return{selectMessage:(t,n)=>function(e,t,n){const r=e.split("|");if(1===r.length)return r[0];{r.length>n.pluralForms.length&&console.error(`For locale=${n.locale}, a maximum of ${n.pluralForms.length} plural forms are expected (${n.pluralForms}), but the message contains ${r.length} plural forms: ${e} `);const o=n.select(t),a=n.pluralForms.indexOf(o);return r[Math.min(a,r.length-1)]}}(n,t,e)}}function j(e){const t=(0,_.useRef)();return(0,_.useEffect)((()=>{t.current=e})),t.current}function V(e){const t=(0,f.TH)(),n=j(t),r=(0,_.useRef)(!0);(0,_.useEffect)((()=>{r.current?r.current=!1:e({location:t,previousLocation:n})}),[t])}const x=e=>`docs-preferred-version-${e}`,S={save:(e,t,n)=>{u(x(e),{persistence:t}).set(n)},read:(e,t)=>u(x(e),{persistence:t}).get(),clear:(e,t)=>{u(x(e),{persistence:t}).del()}};function C(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;const o={};return t.forEach((e=>{o[e]=function(e){const t=S.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(S.clear(e,n),{preferredVersionName:null})}(e)})),o}function k(){const e=(0,m._r)(),t=o().docs.versionPersistence,n=(0,_.useMemo)((()=>Object.keys(e)),[e]),[r,a]=(0,_.useState)((()=>function(e){const t={};return e.forEach((e=>{t[e]={preferredVersionName:null}})),t}(n)));(0,_.useEffect)((()=>{a(C({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[r,(0,_.useMemo)((()=>({savePreferredVersion:function(e,n){S.save(e,t,n),a((t=>({...t,[e]:{preferredVersionName:n}})))}})),[a])]}const L=(0,_.createContext)(null);function I(e){let{children:t}=e;return y?_.createElement(R,null,t):_.createElement(_.Fragment,null,t)}function R(e){let{children:t}=e;const n=k();return _.createElement(L.Provider,{value:n},t)}function $(){const e=(0,_.useContext)(L);if(!e)throw new Error('Can\'t find docs preferred context, maybe you forgot to use the "DocsPreferredVersionContextProvider"?');return e}const T="default";function M(e){void 0===e&&(e=T);const t=(0,m.zh)(e),[n,r]=$(),{preferredVersionName:o}=n[e];return{preferredVersion:o?t.versions.find((e=>e.name===o)):null,savePreferredVersionName:(0,_.useCallback)((t=>{r.savePreferredVersion(e,t)}),[r])}}function Z(){const e=(0,m._r)(),[t]=$();const n=Object.keys(e),r={};return n.forEach((n=>{r[n]=function(n){const r=e[n],{preferredVersionName:o}=t[n];return o?r.versions.find((e=>e.name===o)):null}(n)})),r}const F={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagsPostPage:"blog-tags-post-page",docPage:"doc-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docPages:"docs-wrapper",mdxPages:"mdx-wrapper"}},B=u("docusaurus.announcement.dismiss"),N=u("docusaurus.announcement.id"),U=()=>"true"===B.get(),W=e=>B.set(String(e)),z=(0,_.createContext)(null),H=e=>{let{children:t}=e;const n=(()=>{const{announcementBar:e}=o(),{isClient:t}=(0,r.Z)(),[n,a]=(0,_.useState)((()=>!!t&&U()));(0,_.useEffect)((()=>{a(U())}),[]);const i=(0,_.useCallback)((()=>{W(!0),a(!0)}),[]);return(0,_.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=N.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;N.set(t),r&&W(!1),!r&&U()||a(!1)}),[]),(0,_.useMemo)((()=>({isClosed:n,close:i})),[n])})();return _.createElement(z.Provider,{value:n},t)},G=()=>{const e=(0,_.useContext)(z);if(!e)throw new Error("useAnnouncementBar(): AnnouncementBar not found in React context: make sure to use the AnnouncementBarProvider on top of the tree");return e}},8802:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(e.startsWith("#"))return e;if(void 0===t)return e;const[n]=e.split(/[#?]/),r="/"===n?"/":(o=n,t?function(e){return e.endsWith("/")?e:`${e}/`}(o):function(e){return e.endsWith("/")?e.slice(0,-1):e}(o));var o;return e.replace(n,r)}},8780:function(e,t,n){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.uniq=t.applyTrailingSlash=void 0;var o=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(o).default}});var a=n(9964);Object.defineProperty(t,"uniq",{enumerable:!0,get:function(){return r(a).default}})},9964:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return Array.from(new Set(e))}},6010:(e,t,n)=>{function r(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;to});const o=function(){for(var e,t,n=0,o="";n{n.r(t),n.d(t,{__assign:()=>a,__asyncDelegator:()=>A,__asyncGenerator:()=>O,__asyncValues:()=>E,__await:()=>D,__awaiter:()=>v,__classPrivateFieldGet:()=>C,__classPrivateFieldIn:()=>L,__classPrivateFieldSet:()=>k,__createBinding:()=>h,__decorate:()=>s,__esDecorate:()=>u,__exportStar:()=>m,__extends:()=>o,__generator:()=>g,__importDefault:()=>S,__importStar:()=>x,__makeTemplateObject:()=>j,__metadata:()=>p,__param:()=>c,__propKey:()=>f,__read:()=>b,__rest:()=>i,__runInitializers:()=>l,__setFunctionName:()=>d,__spread:()=>w,__spreadArray:()=>P,__spreadArrays:()=>_,__values:()=>y});var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var a=function(){return a=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0;s--)(o=e[s])&&(i=(a<3?o(i):a>3?o(t,n,i):o(t,n))||i);return a>3&&i&&Object.defineProperty(t,n,i),i}function c(e,t){return function(n,r){t(n,r,e)}}function u(e,t,n,r,o,a){function i(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var s,c=r.kind,u="getter"===c?"get":"setter"===c?"set":"value",l=!t&&e?r.static?e:e.prototype:null,f=t||(l?Object.getOwnPropertyDescriptor(l,r.name):{}),d=!1,p=n.length-1;p>=0;p--){var v={};for(var g in r)v[g]="access"===g?{}:r[g];for(var g in r.access)v.access[g]=r.access[g];v.addInitializer=function(e){if(d)throw new TypeError("Cannot add initializers after decoration has completed");a.push(i(e||null))};var h=(0,n[p])("accessor"===c?{get:f.get,set:f.set}:f[u],v);if("accessor"===c){if(void 0===h)continue;if(null===h||"object"!=typeof h)throw new TypeError("Object expected");(s=i(h.get))&&(f.get=s),(s=i(h.set))&&(f.set=s),(s=i(h.init))&&o.push(s)}else(s=i(h))&&("field"===c?o.push(s):f[u]=s)}l&&Object.defineProperty(l,r.name,f),d=!0}function l(e,t,n){for(var r=arguments.length>2,o=0;o0&&o[o.length-1])||6!==s[0]&&2!==s[0])){i=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function b(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,a=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=a.next()).done;)i.push(r.value)}catch(s){o={error:s}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(o)throw o.error}}return i}function w(){for(var e=[],t=0;t1||s(e,t)}))})}function s(e,t){try{(n=o[e](t)).value instanceof D?Promise.resolve(n.value.v).then(c,u):l(a[0][2],n)}catch(r){l(a[0][3],r)}var n}function c(e){s("next",e)}function u(e){s("throw",e)}function l(e,t){e(t),a.shift(),a.length&&s(a[0][0],a[0][1])}}function A(e){var t,n;return t={},r("next"),r("throw",(function(e){throw e})),r("return"),t[Symbol.iterator]=function(){return this},t;function r(r,o){t[r]=e[r]?function(t){return(n=!n)?{value:D(e[r](t)),done:!1}:o?o(t):t}:o}}function E(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=y(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,o){(function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)})(r,o,(t=e[n](t)).done,t.value)}))}}}function j(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var V=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t};function x(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&h(t,e,n);return V(t,e),t}function S(e){return e&&e.__esModule?e:{default:e}}function C(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)}function k(e,t,n,r,o){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!o:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?o.call(e,n):o?o.value=n:t.set(e,n),n}function L(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)}}}]); \ No newline at end of file diff --git a/assets/js/486.bbbfae86.js b/assets/js/486.bbbfae86.js deleted file mode 100644 index 89a31185..00000000 --- a/assets/js/486.bbbfae86.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[486],{6742:function(e,n,t){t.d(n,{Z:function(){return d}});var r=t(3366),o=t(7294),u=t(3727),i=t(2263),a=t(3919),c=t(412),s=(0,o.createContext)({collectLink:function(){}}),l=t(4996),f=t(8780),v=["isNavLink","to","href","activeClassName","isActive","data-noBrokenLinkCheck","autoAddBaseUrl"];var d=function(e){var n,t,d=e.isNavLink,p=e.to,g=e.href,h=e.activeClassName,m=e.isActive,y=e["data-noBrokenLinkCheck"],b=e.autoAddBaseUrl,w=void 0===b||b,P=(0,r.Z)(e,v),_=(0,i.Z)().siteConfig.trailingSlash,D=(0,l.C)().withBaseUrl,A=(0,o.useContext)(s),O=p||g,E=(0,a.Z)(O),V=null==O?void 0:O.replace("pathname://",""),j=void 0!==V?(t=V,w&&function(e){return e.startsWith("/")}(t)?D(t):t):void 0;j&&E&&(j=(0,f.applyTrailingSlash)(j,_));var S,x=(0,o.useRef)(!1),C=d?u.OL:u.rU,k=c.Z.canUseIntersectionObserver;(0,o.useEffect)((function(){return!k&&E&&null!=j&&window.docusaurus.prefetch(j),function(){k&&S&&S.disconnect()}}),[j,k,E]);var L=null!==(n=null==j?void 0:j.startsWith("#"))&&void 0!==n&&n,I=!j||!E||L;return j&&E&&!L&&!y&&A.collectLink(j),I?o.createElement("a",Object.assign({href:j},O&&!E&&{target:"_blank",rel:"noopener noreferrer"},P)):o.createElement(C,Object.assign({},P,{onMouseEnter:function(){x.current||null==j||(window.docusaurus.preload(j),x.current=!0)},innerRef:function(e){var n,t;k&&e&&E&&(n=e,t=function(){null!=j&&window.docusaurus.prefetch(j)},(S=new window.IntersectionObserver((function(e){e.forEach((function(e){n===e.target&&(e.isIntersecting||e.intersectionRatio>0)&&(S.unobserve(n),S.disconnect(),t())}))}))).observe(n))},to:j||""},d&&{isActive:m,activeClassName:h}))}},4973:function(e,n,t){t.d(n,{Z:function(){return f},I:function(){return l}});var r=t(7294),o=/{\w+}/g,u="{}";function i(e,n){var t=[],i=e.replace(o,(function(e){var o=e.substr(1,e.length-2),i=null==n?void 0:n[o];if(void 0!==i){var a=r.isValidElement(i)?i:String(i);return t.push(a),u}return e}));return 0===t.length?e:t.every((function(e){return"string"==typeof e}))?i.split(u).reduce((function(e,n,r){var o;return e.concat(n).concat(null!==(o=t[r])&&void 0!==o?o:"")}),""):i.split(u).reduce((function(e,n,o){return[].concat(e,[r.createElement(r.Fragment,{key:o},n,t[o])])}),[])}function a(e){return i(e.children,e.values)}var c=t(7529);function s(e){var n,t=e.id,r=e.message;return null!==(n=c[null!=t?t:r])&&void 0!==n?n:r}function l(e,n){var t,r=e.message;return i(null!==(t=s({message:r,id:e.id}))&&void 0!==t?t:r,n)}function f(e){var n,t=e.children,o=e.id,u=e.values,i=null!==(n=s({message:t,id:o}))&&void 0!==n?n:t;return r.createElement(a,{values:u},i)}},3919:function(e,n,t){function r(e){return!0===/^(\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!r(e)}t.d(n,{Z:function(){return o},b:function(){return r}})},8143:function(e,n,t){t.r(n),t.d(n,{BrowserRouter:function(){return r.VK},HashRouter:function(){return r.UT},Link:function(){return r.rU},MemoryRouter:function(){return r.VA},NavLink:function(){return r.OL},Prompt:function(){return r.NL},Redirect:function(){return r.l_},Route:function(){return r.AW},Router:function(){return r.F0},StaticRouter:function(){return r.gx},Switch:function(){return r.rs},generatePath:function(){return r.Gn},matchPath:function(){return r.LX},useHistory:function(){return r.k6},useLocation:function(){return r.TH},useParams:function(){return r.UO},useRouteMatch:function(){return r.$B},withRouter:function(){return r.EN}});var r=t(3727)},4996:function(e,n,t){t.d(n,{C:function(){return u},Z:function(){return i}});var r=t(2263),o=t(3919);function u(){var e=(0,r.Z)().siteConfig,n=(e=void 0===e?{}:e).baseUrl,t=void 0===n?"/":n,u=e.url;return{withBaseUrl:function(e,n){return function(e,n,t,r){var u=void 0===r?{}:r,i=u.forcePrependBaseUrl,a=void 0!==i&&i,c=u.absolute,s=void 0!==c&&c;if(!t)return t;if(t.startsWith("#"))return t;if((0,o.b)(t))return t;if(a)return n+t;var l=t.startsWith(n)?t:n+t.replace(/^\//,"");return s?e+l:l}(u,t,e,n)}}}function i(e,n){return void 0===n&&(n={}),(0,u().withBaseUrl)(e,n)}},8084:function(e,n,t){t.r(n),t.d(n,{default:function(){return o},useAllPluginInstancesData:function(){return u},usePluginData:function(){return i}});var r=t(2263);function o(){var e=(0,r.Z)().globalData;if(!e)throw new Error("Docusaurus global data not found.");return e}function u(e){var n=o()[e];if(!n)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin.');return n}function i(e,n){void 0===n&&(n="default");var t=u(e)[n];if(!t)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin with id "'+n+'".');return t}},8408:function(e,n,t){Object.defineProperty(n,"__esModule",{value:!0}),n.getDocVersionSuggestions=n.getActiveDocContext=n.getActiveVersion=n.getLatestVersion=n.getActivePlugin=void 0;var r=t(8143);n.getActivePlugin=function(e,n,t){void 0===t&&(t={});var o=Object.entries(e).find((function(e){e[0];var t=e[1];return!!r.matchPath(n,{path:t.path,exact:!1,strict:!1})})),u=o?{pluginId:o[0],pluginData:o[1]}:void 0;if(!u&&t.failfast)throw new Error("Can't find active docs plugin for \""+n+'" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: '+Object.values(e).map((function(e){return e.path})).join(", "));return u};n.getLatestVersion=function(e){return e.versions.find((function(e){return e.isLast}))};n.getActiveVersion=function(e,t){var o=n.getLatestVersion(e);return[].concat(e.versions.filter((function(e){return e!==o})),[o]).find((function(e){return!!r.matchPath(t,{path:e.path,exact:!1,strict:!1})}))};n.getActiveDocContext=function(e,t){var o,u,i=n.getActiveVersion(e,t),a=null==i?void 0:i.docs.find((function(e){return!!r.matchPath(t,{path:e.path,exact:!0,strict:!1})}));return{activeVersion:i,activeDoc:a,alternateDocVersions:a?(o=a.id,u={},e.versions.forEach((function(e){e.docs.forEach((function(n){n.id===o&&(u[e.name]=n)}))})),u):{}}};n.getDocVersionSuggestions=function(e,t){var r=n.getLatestVersion(e),o=n.getActiveDocContext(e,t);return{latestDocSuggestion:null==o?void 0:o.alternateDocVersions[r.name],latestVersionSuggestion:r}}},6730:function(e,n,t){Object.defineProperty(n,"__esModule",{value:!0}),n.useDocVersionSuggestions=n.useActiveDocContext=n.useActiveVersion=n.useLatestVersion=n.useVersions=n.useActivePluginAndVersion=n.useActivePlugin=n.useDocsData=n.useAllDocsData=void 0;var r=t(655),o=t(8143),u=r.__importStar(t(8084)),i=t(8408);n.useAllDocsData=function(){var e;return null!==(e=u.default()["docusaurus-plugin-content-docs"])&&void 0!==e?e:{}};n.useDocsData=function(e){return u.usePluginData("docusaurus-plugin-content-docs",e)};n.useActivePlugin=function(e){void 0===e&&(e={});var t=n.useAllDocsData(),r=o.useLocation().pathname;return i.getActivePlugin(t,r,e)};n.useActivePluginAndVersion=function(e){void 0===e&&(e={});var t=n.useActivePlugin(e),r=o.useLocation().pathname;if(t)return{activePlugin:t,activeVersion:i.getActiveVersion(t.pluginData,r)}};n.useVersions=function(e){return n.useDocsData(e).versions};n.useLatestVersion=function(e){var t=n.useDocsData(e);return i.getLatestVersion(t)};n.useActiveVersion=function(e){var t=n.useDocsData(e),r=o.useLocation().pathname;return i.getActiveVersion(t,r)};n.useActiveDocContext=function(e){var t=n.useDocsData(e),r=o.useLocation().pathname;return i.getActiveDocContext(t,r)};n.useDocVersionSuggestions=function(e){var t=n.useDocsData(e),r=o.useLocation().pathname;return i.getDocVersionSuggestions(t,r)}},1217:function(e,n,t){t.d(n,{Z:function(){return a}});var r=t(7294),o=t(9105),u=t(9306),i=t(4996);function a(e){var n=e.title,t=e.description,a=e.keywords,c=e.image,s=(0,u.LU)().image,l=(0,u.pe)(n),f=(0,i.Z)(c||s,{absolute:!0});return r.createElement(o.Z,null,n&&r.createElement("title",null,l),n&&r.createElement("meta",{property:"og:title",content:l}),t&&r.createElement("meta",{name:"description",content:t}),t&&r.createElement("meta",{property:"og:description",content:t}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),f&&r.createElement("meta",{property:"og:image",content:f}),f&&r.createElement("meta",{name:"twitter:image",content:f}))}},907:function(e,n,t){t.d(n,{Iw:function(){return r.useActiveDocContext},Jo:function(){return r.useDocVersionSuggestions},WS:function(){return r.useActivePluginAndVersion},_r:function(){return r.useAllDocsData},gA:function(){return r.useActivePlugin},gB:function(){return r.useVersions},yW:function(){return r.useLatestVersion},zh:function(){return r.useDocsData},zu:function(){return r.useActiveVersion}});var r=t(6730)},9306:function(e,n,t){t.d(n,{pl:function(){return z},HX:function(){return g},L5:function(){return I},kM:function(){return B},WA:function(){return s},os:function(){return h},Mg:function(){return b},_f:function(){return l},bc:function(){return p},l5:function(){return v},nT:function(){return G},J:function(){return M},Oh:function(){return Z},SL:function(){return j},c2:function(){return E},D9:function(){return V},LU:function(){return o},pe:function(){return w}});var r=t(2263);function o(){return(0,r.Z)().siteConfig.themeConfig}var u="localStorage";function i(e){if(void 0===e&&(e=u),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(t){return n=t,a||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",n),a=!0),null}var n}var a=!1;var c={get:function(){return null},set:function(){},del:function(){}};var s=function(e,n){if("undefined"==typeof window)return function(e){function n(){throw new Error('Illegal storage API usage for storage key "'+e+'".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.')}return{get:n,set:n,del:n}}(e);var t=i(null==n?void 0:n.persistence);return null===t?c:{get:function(){return t.getItem(e)},set:function(n){return t.setItem(e,n)},del:function(){return t.removeItem(e)}}};function l(e){void 0===e&&(e=u);var n=i(e);if(!n)return[];for(var t=[],r=0;rt.pluralForms.length&&console.error("For locale="+t.locale+", a maximum of "+t.pluralForms.length+" plural forms are expected ("+t.pluralForms+"), but the message contains "+r.length+" plural forms: "+e+" ");var o=t.select(n),u=t.pluralForms.indexOf(o);return r[Math.min(u,r.length-1)]}(t,n,e)}}}function V(e){var n=(0,P.useRef)();return(0,P.useEffect)((function(){n.current=e})),n.current}function j(e){var n=(0,f.TH)(),t=V(n),r=(0,P.useRef)(!0);(0,P.useEffect)((function(){r.current?r.current=!1:e({location:n,previousLocation:t})}),[n])}var S=function(e){return"docs-preferred-version-"+e},x={save:function(e,n,t){s(S(e),{persistence:n}).set(t)},read:function(e,n){return s(S(e),{persistence:n}).get()},clear:function(e,n){s(S(e),{persistence:n}).del()}};function C(e){var n=e.pluginIds,t=e.versionPersistence,r=e.allDocsData;var o={};return n.forEach((function(e){o[e]=function(e){var n=x.read(e,t);return r[e].versions.some((function(e){return e.name===n}))?{preferredVersionName:n}:(x.clear(e,t),{preferredVersionName:null})}(e)})),o}function k(){var e=(0,m._r)(),n=o().docs.versionPersistence,t=(0,P.useMemo)((function(){return Object.keys(e)}),[e]),r=(0,P.useState)((function(){return function(e){var n={};return e.forEach((function(e){n[e]={preferredVersionName:null}})),n}(t)})),u=r[0],i=r[1];return(0,P.useEffect)((function(){i(C({allDocsData:e,versionPersistence:n,pluginIds:t}))}),[e,n,t]),[u,(0,P.useMemo)((function(){return{savePreferredVersion:function(e,t){x.save(e,n,t),i((function(n){var r;return Object.assign({},n,((r={})[e]={preferredVersionName:t},r))}))}}}),[i])]}var L=(0,P.createContext)(null);function I(e){var n=e.children;return y?P.createElement(R,null,n):P.createElement(P.Fragment,null,n)}function R(e){var n=e.children,t=k();return P.createElement(L.Provider,{value:t},n)}function T(){var e=(0,P.useContext)(L);if(!e)throw new Error('Can\'t find docs preferred context, maybe you forgot to use the "DocsPreferredVersionContextProvider"?');return e}function M(e){void 0===e&&(e="default");var n=(0,m.zh)(e),t=T(),r=t[0],o=t[1],u=r[e].preferredVersionName;return{preferredVersion:u?n.versions.find((function(e){return e.name===u})):null,savePreferredVersionName:(0,P.useCallback)((function(n){o.savePreferredVersion(e,n)}),[o])}}function Z(){var e=(0,m._r)(),n=T()[0];var t=Object.keys(e),r={};return t.forEach((function(t){r[t]=function(t){var r=e[t],o=n[t].preferredVersionName;return o?r.versions.find((function(e){return e.name===o})):null}(t)})),r}var B={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagsPostPage:"blog-tags-post-page",docPage:"doc-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docPages:"docs-wrapper",mdxPages:"mdx-wrapper"}},N=s("docusaurus.announcement.dismiss"),U=s("docusaurus.announcement.id"),F=function(){return"true"===N.get()},W=function(e){return N.set(String(e))},H=(0,P.createContext)(null),z=function(e){var n=e.children,t=function(){var e=o().announcementBar,n=(0,r.Z)().isClient,t=(0,P.useState)((function(){return!!n&&F()})),u=t[0],i=t[1];(0,P.useEffect)((function(){i(F())}),[]);var a=(0,P.useCallback)((function(){W(!0),i(!0)}),[]);return(0,P.useEffect)((function(){if(e){var n=e.id,t=U.get();"annoucement-bar"===t&&(t="announcement-bar");var r=n!==t;U.set(n),r&&W(!1),!r&&F()||i(!1)}}),[]),(0,P.useMemo)((function(){return{isClosed:u,close:a}}),[u])}();return P.createElement(H.Provider,{value:t},n)},G=function(){var e=(0,P.useContext)(H);if(!e)throw new Error("useAnnouncementBar(): AnnouncementBar not found in React context: make sure to use the AnnouncementBarProvider on top of the tree");return e}},8802:function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,n){if(e.startsWith("#"))return e;if(void 0===n)return e;var t,r=e.split(/[#?]/)[0],o="/"===r?"/":(t=r,n?function(e){return e.endsWith("/")?e:e+"/"}(t):function(e){return e.endsWith("/")?e.slice(0,-1):e}(t));return e.replace(r,o)}},8780:function(e,n,t){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(n,"__esModule",{value:!0}),n.uniq=n.applyTrailingSlash=void 0;var o=t(8802);Object.defineProperty(n,"applyTrailingSlash",{enumerable:!0,get:function(){return r(o).default}});var u=t(9964);Object.defineProperty(n,"uniq",{enumerable:!0,get:function(){return r(u).default}})},9964:function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return Array.from(new Set(e))}},6010:function(e,n,t){function r(e){var n,t,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(n=0;n=0;a--)(o=e[a])&&(i=(u<3?o(i):u>3?o(n,t,i):o(n,t))||i);return u>3&&i&&Object.defineProperty(n,t,i),i}function c(e,n){return function(t,r){n(t,r,e)}}function s(e,n){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,n)}function l(e,n,t,r){return new(t||(t=Promise))((function(o,u){function i(e){try{c(r.next(e))}catch(n){u(n)}}function a(e){try{c(r.throw(e))}catch(n){u(n)}}function c(e){var n;e.done?o(e.value):(n=e.value,n instanceof t?n:new t((function(e){e(n)}))).then(i,a)}c((r=r.apply(e,n||[])).next())}))}function f(e,n){var t,r,o,u,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return u={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(u[Symbol.iterator]=function(){return this}),u;function a(u){return function(a){return function(u){if(t)throw new TypeError("Generator is already executing.");for(;i;)try{if(t=1,r&&(o=2&u[0]?r.return:u[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,u[1])).done)return o;switch(r=0,o&&(u=[2&u[0],o.value]),u[0]){case 0:case 1:o=u;break;case 4:return i.label++,{value:u[1],done:!1};case 5:i.label++,r=u[1],u=[0];continue;case 7:u=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==u[0]&&2!==u[0])){i=0;continue}if(3===u[0]&&(!o||u[1]>o[0]&&u[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")}function g(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var r,o,u=t.call(e),i=[];try{for(;(void 0===n||n-- >0)&&!(r=u.next()).done;)i.push(r.value)}catch(a){o={error:a}}finally{try{r&&!r.done&&(t=u.return)&&t.call(u)}finally{if(o)throw o.error}}return i}function h(){for(var e=[],n=0;n1||a(e,n)}))})}function a(e,n){try{(t=o[e](n)).value instanceof b?Promise.resolve(t.value.v).then(c,s):l(u[0][2],t)}catch(r){l(u[0][3],r)}var t}function c(e){a("next",e)}function s(e){a("throw",e)}function l(e,n){e(n),u.shift(),u.length&&a(u[0][0],u[0][1])}}function P(e){var n,t;return n={},r("next"),r("throw",(function(e){throw e})),r("return"),n[Symbol.iterator]=function(){return this},n;function r(r,o){n[r]=e[r]?function(n){return(t=!t)?{value:b(e[r](n)),done:"return"===r}:o?o(n):n}:o}}function _(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n,t=e[Symbol.asyncIterator];return t?t.call(e):(e=p(e),n={},r("next"),r("throw"),r("return"),n[Symbol.asyncIterator]=function(){return this},n);function r(t){n[t]=e[t]&&function(n){return new Promise((function(r,o){(function(e,n,t,r){Promise.resolve(r).then((function(n){e({value:n,done:t})}),n)})(r,o,(n=e[t](n)).done,n.value)}))}}}function D(e,n){return Object.defineProperty?Object.defineProperty(e,"raw",{value:n}):e.raw=n,e}var A=Object.create?function(e,n){Object.defineProperty(e,"default",{enumerable:!0,value:n})}:function(e,n){e.default=n};function O(e){if(e&&e.__esModule)return e;var n={};if(null!=e)for(var t in e)"default"!==t&&Object.prototype.hasOwnProperty.call(e,t)&&v(n,e,t);return A(n,e),n}function E(e){return e&&e.__esModule?e:{default:e}}function V(e,n,t,r){if("a"===t&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof n?e!==n||!r:!n.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===t?r:"a"===t?r.call(e):r?r.value:n.get(e)}function j(e,n,t,r,o){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof n?e!==n||!o:!n.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?o.call(e,t):o?o.value=t:n.set(e,t),t}function S(e,n){if(null===n||"object"!=typeof n&&"function"!=typeof n)throw new TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?n===e:e.has(n)}}}]); \ No newline at end of file diff --git a/assets/js/4bdb0d83.262fc887.js b/assets/js/4bdb0d83.262fc887.js deleted file mode 100644 index d0d6f2a8..00000000 --- a/assets/js/4bdb0d83.262fc887.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[781],{3905:function(t,e,n){n.d(e,{Zo:function(){return m},kt:function(){return N}});var a=n(7294);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function l(t){for(var e=1;e=0||(r[n]=t[n]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}var d=a.createContext({}),p=function(t){var e=a.useContext(d),n=e;return t&&(n="function"==typeof t?t(e):l(l({},e),t)),n},m=function(t){var e=p(t.components);return a.createElement(d.Provider,{value:e},t.children)},s={inlineCode:"code",wrapper:function(t){var e=t.children;return a.createElement(a.Fragment,{},e)}},k=a.forwardRef((function(t,e){var n=t.components,r=t.mdxType,i=t.originalType,d=t.parentName,m=o(t,["components","mdxType","originalType","parentName"]),k=p(n),N=r,u=k["".concat(d,".").concat(N)]||k[N]||s[N]||i;return n?a.createElement(u,l(l({ref:e},m),{},{components:n})):a.createElement(u,l({ref:e},m))}));function N(t,e){var n=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=n.length,l=new Array(i);l[0]=k;var o={};for(var d in e)hasOwnProperty.call(e,d)&&(o[d]=e[d]);o.originalType=t,o.mdxType="string"==typeof t?t:r,l[1]=o;for(var p=2;pPageInfo",id:"pageinfo",children:[]},{value:"pageInfo.navLinks (optional)",id:"pageinfonavlinks-optional",children:[]},{value:"pages[] (optional)",id:"pages-optional",children:[]},{value:"appConfig (optional)",id:"appconfig-optional",children:[]},{value:"appConfig.auth (optional)",id:"appconfigauth-optional",children:[]},{value:"appConfig.auth.users (optional)",id:"appconfigauthusers-optional",children:[]},{value:"appConfig.auth.keycloak (optional)",id:"appconfigauthkeycloak-optional",children:[]},{value:"appConfig.webSearch (optional)",id:"appconfigwebsearch-optional",children:[]},{value:"appConfig.hideComponents (optional)",id:"appconfighidecomponents-optional",children:[]},{value:"section",id:"section",children:[]},{value:"section.item",id:"sectionitem",children:[]},{value:"item.displayData (optional)",id:"itemdisplaydata-optional",children:[]},{value:"section.widget (optional)",id:"sectionwidget-optional",children:[]},{value:"section.displayData (optional)",id:"sectiondisplaydata-optional",children:[]},{value:"section.icon and section.item.icon",id:"sectionicon-and-sectionitemicon",children:[]},{value:"section.displayData.hideForKeycloakUsers, section.displayData.showForKeycloakUsers, item.displayData.hideForKeycloakUsers and item.displayData.showForKeycloakUsers",id:"sectiondisplaydatahideforkeycloakusers-sectiondisplaydatashowforkeycloakusers-itemdisplaydatahideforkeycloakusers-and-itemdisplaydatashowforkeycloakusers",children:[]},{value:"Notes",id:"notes",children:[{value:"Editing Config through the UI",id:"editing-config-through-the-ui",children:[]},{value:"About YAML",id:"about-yaml",children:[]},{value:"Config Saving Methods",id:"config-saving-methods",children:[]},{value:"Preventing Changes",id:"preventing-changes",children:[]},{value:"Example",id:"example",children:[]}]}],s={toc:m};function k(t){var e=t.components,n=(0,r.Z)(t,l);return(0,i.kt)("wrapper",(0,a.Z)({},s,n,{components:e,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"configuring"},"Configuring"),(0,i.kt)("p",null,"All app configuration is specified in ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/blob/master/public/conf.yml"},(0,i.kt)("inlineCode",{parentName:"a"},"/public/conf.yml"))," which is in ",(0,i.kt)("a",{parentName:"p",href:"https://yaml.org/"},"YAML Format")," format. If you're using Docker, this file can be passed in as a volume. Changes can either be made directly to this file, or done ",(0,i.kt)("a",{parentName:"p",href:"#editing-config-through-the-ui"},"through the UI"),". From the UI you can also export, backup, reset, validate and download your configuration file."),(0,i.kt)("h4",{id:"there-are-three-ways-to-edit-the-config"},"There are three ways to edit the config"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"Directly in the YAML file")," ",(0,i.kt)("em",{parentName:"li"},"(5/5 reliability, 3/5 usability)"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Write changes directly to the conf.yml file, optionally using one of the templates provided. This can be done in your favorite editor and uploading to your server, or directly editing the file via SSH, but the easiest method would be to use ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/coder/code-server"},"Code Server")))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"UI JSON Editor")," ",(0,i.kt)("em",{parentName:"li"},"(4/5 reliability, 4/5 usability)"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"From the UI, under the config menu there is a JSON editor, with built-in validation, documentation and advanced options"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"UI Visual Editor")," ",(0,i.kt)("em",{parentName:"li"},"(3/5 reliability, 5/5 usability)"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"From the UI, enter the Interactive Edit Mode, then click any part of the page to edit. Changes are previewed live, and then saved to disk"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"REST API")," ",(0,i.kt)("em",{parentName:"li"},"(Coming soon)"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Programmatically edit config either through the command line, using a script or a third-party application")))),(0,i.kt)("h4",{id:"tips"},"Tips"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"You may find it helpful to look at some sample config files to get you started, a collection of which can be found ",(0,i.kt)("a",{parentName:"li",href:"https://gist.github.com/Lissy93/000f712a5ce98f212817d20bc16bab10"},"here")),(0,i.kt)("li",{parentName:"ul"},"You can check that your config file fits the schema, by running ",(0,i.kt)("inlineCode",{parentName:"li"},"yarn validate-config")),(0,i.kt)("li",{parentName:"ul"},"After modifying your config, the app needs to be recompiled, by running ",(0,i.kt)("inlineCode",{parentName:"li"},"yarn build")," - this happens automatically if you're using Docker"),(0,i.kt)("li",{parentName:"ul"},"It is recommended to keep a backup of your config file. You can download it under Config menu, or use the ",(0,i.kt)("a",{parentName:"li",href:"/docs/backup-restore"},"Cloud Backup")," feature."),(0,i.kt)("li",{parentName:"ul"},"You can make use of YAML features, like anchors, comments, multi-line strings, etc to reuse attributes and keep your config file readable"),(0,i.kt)("li",{parentName:"ul"},"Once you have finished configuring your dashboard, you can choose to ",(0,i.kt)("a",{parentName:"li",href:"#preventing-changes"},"disable UI config")," if you wish"),(0,i.kt)("li",{parentName:"ul"},"All fields are optional, unless otherwise stated.")),(0,i.kt)("p",null,"The following file provides a reference of all supported configuration options."),(0,i.kt)("h4",{id:"contents"},"Contents"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#pageinfo"},(0,i.kt)("strong",{parentName:"a"},(0,i.kt)("inlineCode",{parentName:"strong"},"pageInfo")))," - Header text, footer, title, navigation, etc",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#pageinfonavlinks-optional"},(0,i.kt)("inlineCode",{parentName:"a"},"navLinks"))," - Links to display in the navigation bar"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#pages-optional"},(0,i.kt)("strong",{parentName:"a"},(0,i.kt)("inlineCode",{parentName:"strong"},"pages")))," - List of additional config files, for multi-page dashboards"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#appconfig-optional"},(0,i.kt)("strong",{parentName:"a"},(0,i.kt)("inlineCode",{parentName:"strong"},"appConfig")))," - Main application settings",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#appconfigwebsearch-optional"},(0,i.kt)("inlineCode",{parentName:"a"},"webSearch"))," - Configure web search engine options"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#appconfighidecomponents-optional"},(0,i.kt)("inlineCode",{parentName:"a"},"hideComponents"))," - Show/ hide page components"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#appconfigauth-optional"},(0,i.kt)("inlineCode",{parentName:"a"},"auth"))," - Built-in authentication setup",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#appconfigauthusers-optional"},(0,i.kt)("inlineCode",{parentName:"a"},"users"))," - List or users (for simple auth)"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#appconfigauthkeycloak-optional"},(0,i.kt)("inlineCode",{parentName:"a"},"keycloak"))," - Auth config for Keycloak"))))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#section"},(0,i.kt)("strong",{parentName:"a"},(0,i.kt)("inlineCode",{parentName:"strong"},"sections")))," - List of sections",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#sectiondisplaydata-optional"},(0,i.kt)("inlineCode",{parentName:"a"},"displayData"))," - Section display settings",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#sectiondisplaydatahideforkeycloakusers-sectiondisplaydatashowforkeycloakusers-itemdisplaydatahideforkeycloakusers-and-itemdisplaydatashowforkeycloakusers"},(0,i.kt)("inlineCode",{parentName:"a"},"show/hideForKeycloakUsers"))," - Set user controls"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#sectionicon-and-sectionitemicon"},(0,i.kt)("inlineCode",{parentName:"a"},"icon"))," - Icon for a section"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#sectionitem"},(0,i.kt)("inlineCode",{parentName:"a"},"items"))," - List of items",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#sectionicon-and-sectionitemicon"},(0,i.kt)("inlineCode",{parentName:"a"},"icon"))," - Icon for an item"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#itemdisplaydata-optional"},(0,i.kt)("inlineCode",{parentName:"a"},"displayData"))," - Item display settings",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#sectiondisplaydatahideforkeycloakusers-sectiondisplaydatashowforkeycloakusers-itemdisplaydatahideforkeycloakusers-and-itemdisplaydatashowforkeycloakusers"},(0,i.kt)("inlineCode",{parentName:"a"},"show/hideForKeycloakUsers"))," - Set user controls"))))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#sectionwidget-optional"},(0,i.kt)("inlineCode",{parentName:"a"},"widgets"))," - List of widgets"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#notes"},(0,i.kt)("strong",{parentName:"a"},"Notes")),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#editing-config-through-the-ui"},"Editing Config through the UI")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#about-yaml"},"About YAML")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#config-saving-methods"},"Config Saving Methods")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#preventing-changes"},"Preventing Changes")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#example"},"Example"))))),(0,i.kt)("hr",null),(0,i.kt)("h3",{id:"top-level-fields"},"Top-Level Fields"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Field")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Type")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Required")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Description")))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"pageInfo"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"object")),(0,i.kt)("td",{parentName:"tr",align:null},"Required"),(0,i.kt)("td",{parentName:"tr",align:null},"Basic meta data like title, description, nav bar links, footer text. See ",(0,i.kt)("a",{parentName:"td",href:"#pageinfo"},(0,i.kt)("inlineCode",{parentName:"a"},"pageInfo")))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"appConfig"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"object")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Settings related to how the app functions, including API keys and global styles. See ",(0,i.kt)("a",{parentName:"td",href:"#appconfig-optional"},(0,i.kt)("inlineCode",{parentName:"a"},"appConfig")))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"sections"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"array")),(0,i.kt)("td",{parentName:"tr",align:null},"Required"),(0,i.kt)("td",{parentName:"tr",align:null},"An array of sections, each containing an array of items, which will be displayed as links. See ",(0,i.kt)("a",{parentName:"td",href:"#section"},(0,i.kt)("inlineCode",{parentName:"a"},"section")))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"pages"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"array")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"An array additional config files, used for multi-page dashboards. See ",(0,i.kt)("a",{parentName:"td",href:"#pages-optional"},(0,i.kt)("inlineCode",{parentName:"a"},"pages")))))),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,i.kt)("h3",{id:"pageinfo"},(0,i.kt)("inlineCode",{parentName:"h3"},"PageInfo")),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Field")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Type")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Required")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Description")))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"title"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},"Required"),(0,i.kt)("td",{parentName:"tr",align:null},"Your dashboard title, displayed in the header and browser tab")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"description"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Description of your dashboard, also displayed as a subtitle")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"navLinks"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"array")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Optional list of a maximum of 6 links, which will be displayed in the navigation bar. See ",(0,i.kt)("a",{parentName:"td",href:"#pageinfonavlinks-optional"},(0,i.kt)("inlineCode",{parentName:"a"},"navLinks")))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"footerText"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Text to display in the footer (note that this will override the default footer content). This can also include HTML and inline CSS")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"logo"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"The path to an image to display in the header (to the right of the title). This can be either local, where ",(0,i.kt)("inlineCode",{parentName:"td"},"/")," is the root of ",(0,i.kt)("inlineCode",{parentName:"td"},"./public"),", or any remote image, such as ",(0,i.kt)("inlineCode",{parentName:"td"},"https://i.ibb.co/yhbt6CY/dashy.png"),". It's recommended to scale your image down, so that it doesn't impact load times")))),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,i.kt)("h3",{id:"pageinfonavlinks-optional"},(0,i.kt)("inlineCode",{parentName:"h3"},"pageInfo.navLinks")," ",(0,i.kt)("em",{parentName:"h3"},"(optional)")),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Field")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Type")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Required")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Description")))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"title"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},"Required"),(0,i.kt)("td",{parentName:"tr",align:null},"The text to display on the link button")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"path"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},"Required"),(0,i.kt)("td",{parentName:"tr",align:null},"The URL to navigate to when clicked. Can be relative (e.g. ",(0,i.kt)("inlineCode",{parentName:"td"},"/about"),") or absolute (e.g. ",(0,i.kt)("inlineCode",{parentName:"td"},"https://example.com")," or ",(0,i.kt)("inlineCode",{parentName:"td"},"http://192.168.1.1"),")")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"target"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"The opening method (external links only). Can be either ",(0,i.kt)("inlineCode",{parentName:"td"},"newtab"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"sametab"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"top")," or ",(0,i.kt)("inlineCode",{parentName:"td"},"parent"),". Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"newtab"))))),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,i.kt)("h3",{id:"pages-optional"},(0,i.kt)("inlineCode",{parentName:"h3"},"pages[]")," ",(0,i.kt)("em",{parentName:"h3"},"(optional)")),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Field")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Type")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Required")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Description")))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"name"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},"Required"),(0,i.kt)("td",{parentName:"tr",align:null},"A unique name for that page")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"path"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},"Required"),(0,i.kt)("td",{parentName:"tr",align:null},"The path (local or remote) to the config file to use.",(0,i.kt)("br",null),"For files located within ",(0,i.kt)("inlineCode",{parentName:"td"},"/public"),", you only need to specify filename, for externally hosted files you must include the full URL")))),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,i.kt)("h3",{id:"appconfig-optional"},(0,i.kt)("inlineCode",{parentName:"h3"},"appConfig")," ",(0,i.kt)("em",{parentName:"h3"},"(optional)")),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Field")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Type")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Required")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Description")))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"language"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"The 2 (or 4-digit) ",(0,i.kt)("a",{parentName:"td",href:"https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes"},"ISO 639-1 code")," for your language, e.g. ",(0,i.kt)("inlineCode",{parentName:"td"},"en")," or ",(0,i.kt)("inlineCode",{parentName:"td"},"en-GB"),". This must be a language that the app has already been ",(0,i.kt)("a",{parentName:"td",href:"https://github.com/Lissy93/dashy/tree/master/src/assets/locales"},"translated")," into. If your language is unavailable, Dashy will fallback to English. By default Dashy will attempt to auto-detect your language, although this may not work on some privacy browsers.")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"startingView"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"enum")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Which page to load by default, and on the base page or domain root. You can still switch to different views from within the UI. Can be either ",(0,i.kt)("inlineCode",{parentName:"td"},"default"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"minimal")," or ",(0,i.kt)("inlineCode",{parentName:"td"},"workspace"),". Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"default"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"defaultOpeningMethod"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"enum")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"The default opening method for items, if no ",(0,i.kt)("inlineCode",{parentName:"td"},"target")," is specified for a given item. Can be either ",(0,i.kt)("inlineCode",{parentName:"td"},"newtab"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"sametab"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"modal"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"workspace"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"clipboard"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"top")," or ",(0,i.kt)("inlineCode",{parentName:"td"},"parent"),". Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"newtab"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"statusCheck"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"When set to ",(0,i.kt)("inlineCode",{parentName:"td"},"true"),", Dashy will ping each of your services and display their status as a dot next to each item. This can be overridden by setting ",(0,i.kt)("inlineCode",{parentName:"td"},"statusCheck")," under each item. Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"false"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"statusCheckInterval"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"The number of seconds between checks. If set to ",(0,i.kt)("inlineCode",{parentName:"td"},"0")," then service will only be checked on initial page load, which is usually the desired functionality. If value is less than ",(0,i.kt)("inlineCode",{parentName:"td"},"10")," you may experience a hit in performance. Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"0"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"webSearch"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"object")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Configuration options for the web search feature, set your default search engine, opening method or disable web search. See ",(0,i.kt)("a",{parentName:"td",href:"#appconfigwebsearch-optional"},(0,i.kt)("inlineCode",{parentName:"a"},"webSearch")))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"backgroundImg"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Path to an optional full-screen app background image. This can be either remote (http) or local (/). Note that this will slow down initial load")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"enableFontAwesome"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"If set to ",(0,i.kt)("inlineCode",{parentName:"td"},"true")," font-awesome will be loaded, if set to ",(0,i.kt)("inlineCode",{parentName:"td"},"false")," they will not be. if left blank font-awesome will be enabled only if required by 1 or more icons")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"enableMaterialDesignIcons"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"If set to ",(0,i.kt)("inlineCode",{parentName:"td"},"true")," mdi icons will be loaded, if set to ",(0,i.kt)("inlineCode",{parentName:"td"},"false")," they will not be. Where ",(0,i.kt)("inlineCode",{parentName:"td"},"true")," is enabled, if left blank material design icons will be enabled only if required by 1 or more icons")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"fontAwesomeKey"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"If you have a font-awesome key, then you can use it here and make use of premium icons. It is a 10-digit alpha-numeric string from you're FA kit URL (e.g. ",(0,i.kt)("inlineCode",{parentName:"td"},"13014ae648"),")")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"faviconApi"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"enum")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Only applicable if you are using favicons for item icons. Specifies which service to use to resolve favicons. Set to ",(0,i.kt)("inlineCode",{parentName:"td"},"local")," to do this locally, without using an API. Services running locally will use this option always. Available options are: ",(0,i.kt)("inlineCode",{parentName:"td"},"local"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"faviconkit"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"iconhorse"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"google"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"clearbit"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"webmasterapi")," and ",(0,i.kt)("inlineCode",{parentName:"td"},"allesedv"),". Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"faviconkit"),". See ",(0,i.kt)("a",{parentName:"td",href:"/docs/icons#favicons"},"Icons")," for more info")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"auth"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"object")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"All settings relating to user authentication. See ",(0,i.kt)("a",{parentName:"td",href:"#appconfigauth-optional"},(0,i.kt)("inlineCode",{parentName:"a"},"auth")))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"layout"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"enum")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Layout for homepage, either ",(0,i.kt)("inlineCode",{parentName:"td"},"horizontal"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"vertical")," or ",(0,i.kt)("inlineCode",{parentName:"td"},"auto"),". Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"auto"),". This specifies the layout and direction of how sections are positioned on the home screen. This can also be modified and overridden from the UI.")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"iconSize"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"enum")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"The size of link items / icons. Can be either ",(0,i.kt)("inlineCode",{parentName:"td"},"small"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"medium,")," or ",(0,i.kt)("inlineCode",{parentName:"td"},"large"),". Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"medium"),". This can also be set directly from the UI.")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"colCount"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"number")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"The number of columns of sections displayed on the homepage, using the default view. Should be in integer between ",(0,i.kt)("inlineCode",{parentName:"td"},"1")," and ",(0,i.kt)("inlineCode",{parentName:"td"},"8"),". Note that by default this is applied responsively, based on current screen size, and specifying a value here will override this behavior, which may not be desirable.")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"theme"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"The default theme for first load (you can change this later from the UI)")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"cssThemes"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string[]")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"An array of custom theme names which can be used in the theme switcher dropdown")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"customColors"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"object")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Enables you to apply a custom color palette to any given theme. Use the theme name (lowercase) as the key, for an object including key-value-pairs, with the color variable name as keys, and 6-digit hex code as value. See ",(0,i.kt)("a",{parentName:"td",href:"/docs/theming#modifying-theme-colors"},"Theming")," for more info")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"externalStyleSheet"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")," or ",(0,i.kt)("inlineCode",{parentName:"td"},"string[]")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Either a URL to an external stylesheet or an array or URLs, which can be applied as themes within the UI")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"customCss"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Raw CSS that will be applied to the page. This can also be set from the UI. Please minify it first.")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"hideComponents"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"object")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"A list of key page components (header, footer, search, settings, etc) that are present by default, but can be removed using this option. See ",(0,i.kt)("a",{parentName:"td",href:"#appconfighideComponents-optional"},(0,i.kt)("inlineCode",{parentName:"a"},"appConfig.hideComponents")))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"routingMode"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Can be either ",(0,i.kt)("inlineCode",{parentName:"td"},"hash")," or ",(0,i.kt)("inlineCode",{parentName:"td"},"history"),". Determines the URL format for sub-pages, hash mode will look like ",(0,i.kt)("inlineCode",{parentName:"td"},"/#/home")," whereas with history mode available you have nice clean URLs, like ",(0,i.kt)("inlineCode",{parentName:"td"},"/home"),". For more info, see the ",(0,i.kt)("a",{parentName:"td",href:"https://router.vuejs.org/guide/essentials/history-mode.html#example-server-configurations"},"Vue docs"),". If you're hosting Dashy with a custom BASE_URL, you will find that a bit of extra server config is necessary to get history mode working, so here you may want to instead use ",(0,i.kt)("inlineCode",{parentName:"td"},"hash")," mode.Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"history"),".")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"enableMultiTasking"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"If set to true, will keep apps open in the background when in the workspace view. Useful for quickly switching between multiple sites, and preserving their state, but comes at the cost of performance.")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"workspaceLandingUrl"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"The URL or an app, service or website to launch when the workspace view is opened, before another service has been launched")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"preventWriteToDisk"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"If set to ",(0,i.kt)("inlineCode",{parentName:"td"},"true"),", users will be prevented from saving config changes to disk through the UI")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"preventLocalSave"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"If set to ",(0,i.kt)("inlineCode",{parentName:"td"},"true"),", users will be prevented from applying config changes to local storage")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"disableConfiguration"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"If set to true, no users will be able to view or edit the config through the UI")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"widgetsAlwaysUseProxy"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"If set to ",(0,i.kt)("inlineCode",{parentName:"td"},"true"),", requests made by widgets will always be proxied, same as setting ",(0,i.kt)("inlineCode",{parentName:"td"},"useProxy: true")," on each widget. Note that this may break some widgets.")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"showSplashScreen"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"If set to ",(0,i.kt)("inlineCode",{parentName:"td"},"true"),", a loading screen will be shown. Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"false"),".")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"enableErrorReporting"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Enable reporting of unexpected errors and crashes. This is off by default, and ",(0,i.kt)("strong",{parentName:"td"},"no data will ever be captured unless you explicitly enable it"),". Turning on error reporting helps previously unknown bugs get discovered and fixed. Dashy uses ",(0,i.kt)("a",{parentName:"td",href:"https://github.com/getsentry/sentry"},"Sentry")," for error reporting. Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"false"),".")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"sentryDsn"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"If you need to monitor errors in your instance, then you can use Sentry to collect and process bug reports. Sentry can be self-hosted, or used as SaaS, once your instance is setup, then all you need to do is pass in the DSN here, and enable error reporting. You can learn more on the ",(0,i.kt)("a",{parentName:"td",href:"https://docs.sentry.io/product/sentry-basics/dsn-explainer/"},"Sentry DSN Docs"),". Note that this will only ever be used if ",(0,i.kt)("inlineCode",{parentName:"td"},"enableErrorReporting")," is explicitly enabled.")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"disableSmartSort"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"For the most-used and last-used app sort functions to work, a basic open-count is stored in local storage. If you do not want this to happen, then disable smart sort here, but you wil no longer be able to use these sort options. Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"false"),".")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"disableUpdateChecks"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"If set to true, Dashy will not check for updates. Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"false"),".")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"enableServiceWorker"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Service workers cache web applications to improve load times and offer basic offline functionality, and are enabled by default in Dashy. The service worker can sometimes cause older content to be cached, requiring the app to be hard-refreshed. If you do not want SW functionality, or are having issues with caching, set this property to ",(0,i.kt)("inlineCode",{parentName:"td"},"true")," to disable all service workers.")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"disableContextMenu"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"If set to ",(0,i.kt)("inlineCode",{parentName:"td"},"true"),", the custom right-click context menu will be disabled. Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"false"),".")))),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,i.kt)("h3",{id:"appconfigauth-optional"},(0,i.kt)("inlineCode",{parentName:"h3"},"appConfig.auth")," ",(0,i.kt)("em",{parentName:"h3"},"(optional)")),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Field")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Type")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Required")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Description")))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"users"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"array")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"An array of objects containing usernames and hashed passwords. If this is not provided, then authentication will be off by default, and you will not need any credentials to access the app. See ",(0,i.kt)("a",{parentName:"td",href:"#appconfigauthusers-optional"},(0,i.kt)("inlineCode",{parentName:"a"},"appConfig.auth.users")),". ",(0,i.kt)("br",null),(0,i.kt)("strong",{parentName:"td"},"Note")," this method of authentication is handled on the client side, so for security critical situations, it is recommended to use an ",(0,i.kt)("a",{parentName:"td",href:"/docs/authentication#alternative-authentication-methods"},"alternate authentication method"),".")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"enableKeycloak"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"If set to ",(0,i.kt)("inlineCode",{parentName:"td"},"true"),", then authentication using Keycloak will be anabled. Note that you need to have an instance running, and have also configured ",(0,i.kt)("inlineCode",{parentName:"td"},"auth.keycloak"),". Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"false"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"keycloak"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"object")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Config options to point Dashy to your Keycloak server. Requires ",(0,i.kt)("inlineCode",{parentName:"td"},"enableKeycloak: true"),". See ",(0,i.kt)("a",{parentName:"td",href:"#appconfigauthkeycloak-optional"},(0,i.kt)("inlineCode",{parentName:"a"},"auth.keycloak"))," for more info")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"enableGuestAccess"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"When set to ",(0,i.kt)("inlineCode",{parentName:"td"},"true"),", an unauthenticated user will be able to access the dashboard, with read-only access, without having to login. Requires ",(0,i.kt)("inlineCode",{parentName:"td"},"auth.users")," to be configured. Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"false"),".")))),(0,i.kt)("p",null,"For more info, see the ",(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("a",{parentName:"strong",href:"/docs/authentication"},"Authentication Docs"))),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,i.kt)("h3",{id:"appconfigauthusers-optional"},(0,i.kt)("inlineCode",{parentName:"h3"},"appConfig.auth.users")," ",(0,i.kt)("em",{parentName:"h3"},"(optional)")),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Field")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Type")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Required")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Description")))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"user"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},"Required"),(0,i.kt)("td",{parentName:"tr",align:null},"Username to log in with")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"hash"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},"Required"),(0,i.kt)("td",{parentName:"tr",align:null},"A SHA-256 hashed password")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"type"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"The user type, either admin or normal")))),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,i.kt)("h3",{id:"appconfigauthkeycloak-optional"},(0,i.kt)("inlineCode",{parentName:"h3"},"appConfig.auth.keycloak")," ",(0,i.kt)("em",{parentName:"h3"},"(optional)")),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Field")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Type")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Required")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Description")))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"serverUrl"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},"Required"),(0,i.kt)("td",{parentName:"tr",align:null},"The URL (or URL/ IP + Port) where your keycloak server is running")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"realm"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},"Required"),(0,i.kt)("td",{parentName:"tr",align:null},"The name of the realm (must already be created) that you want to use")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"clientId"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},"Required"),(0,i.kt)("td",{parentName:"tr",align:null},"The Client ID of the client you created for use with Dashy")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"legacySupport"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"If using Keycloak 17 or older, then set this to ",(0,i.kt)("inlineCode",{parentName:"td"},"true"))))),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,i.kt)("h3",{id:"appconfigwebsearch-optional"},(0,i.kt)("inlineCode",{parentName:"h3"},"appConfig.webSearch")," ",(0,i.kt)("em",{parentName:"h3"},"(optional)")),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Field")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Type")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Required")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Description")))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"disableWebSearch"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Web search is enabled by default, but can be disabled by setting this property to ",(0,i.kt)("inlineCode",{parentName:"td"},"true"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"searchEngine"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Set the key name for your search engine. Can also use a custom engine by setting this property to ",(0,i.kt)("inlineCode",{parentName:"td"},"custom"),". Currently supported: ",(0,i.kt)("inlineCode",{parentName:"td"},"duckduckgo"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"google"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"whoogle"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"qwant"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"startpage"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"searx-bar")," and ",(0,i.kt)("inlineCode",{parentName:"td"},"searx-info"),". Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"duckduckgo"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"customSearchEngine"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"You can also use a custom search engine, or your own self-hosted instance. This requires ",(0,i.kt)("inlineCode",{parentName:"td"},"searchEngine: custom")," to be set. Then add the URL of your service, with GET query string included here")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"openingMethod"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Set your preferred opening method for search results: ",(0,i.kt)("inlineCode",{parentName:"td"},"newtab"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"sametab"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"workspace"),". Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"newtab"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"searchBangs"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"object")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"A key-value-pair set of custom search ",(0,i.kt)("em",{parentName:"td"},"bangs")," for redirecting query to a specific app or search engine. The key of each should be the bang you will type (typically starting with ",(0,i.kt)("inlineCode",{parentName:"td"},"/"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"!")," or ",(0,i.kt)("inlineCode",{parentName:"td"},":"),"), and value is the destination, either as a search engine key (e.g. ",(0,i.kt)("inlineCode",{parentName:"td"},"reddit"),") or a URL with search parameters (e.g. ",(0,i.kt)("inlineCode",{parentName:"td"},"https://en.wikipedia.org/w/?search="),")")))),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,i.kt)("h3",{id:"appconfighidecomponents-optional"},(0,i.kt)("inlineCode",{parentName:"h3"},"appConfig.hideComponents")," ",(0,i.kt)("em",{parentName:"h3"},"(optional)")),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Field")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Type")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Required")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Description")))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"hideHeading"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"If set to ",(0,i.kt)("inlineCode",{parentName:"td"},"true"),", the page title & sub-title will not be visible. Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"false"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"hideNav"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"If set to ",(0,i.kt)("inlineCode",{parentName:"td"},"true"),", the navigation menu will not be visible. Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"false"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"hideSearch"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"If set to ",(0,i.kt)("inlineCode",{parentName:"td"},"true"),", the search bar will not be visible. Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"false"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"hideSettings"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"If set to ",(0,i.kt)("inlineCode",{parentName:"td"},"true"),", the settings menu will be initially collapsed. Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"false"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"hideFooter"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"If set to ",(0,i.kt)("inlineCode",{parentName:"td"},"true"),", the footer will not be visible. Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"false"))))),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,i.kt)("h3",{id:"section"},(0,i.kt)("inlineCode",{parentName:"h3"},"section")),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Field")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Type")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Required")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Description")))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"name"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},"Required"),(0,i.kt)("td",{parentName:"tr",align:null},"The title for the section")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"icon"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"An single icon to be displayed next to the title. See ",(0,i.kt)("a",{parentName:"td",href:"#sectionicon-and-sectionitemicon"},(0,i.kt)("inlineCode",{parentName:"a"},"section.icon")))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"items"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"array")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"An array of items to be displayed within the section. See ",(0,i.kt)("a",{parentName:"td",href:"#sectionitem"},(0,i.kt)("inlineCode",{parentName:"a"},"item")),". Sections must include either 1 or more items, or 1 or more widgets.")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"widgets"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"array")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"An array of widgets to be displayed within the section. See ",(0,i.kt)("a",{parentName:"td",href:"#sectionwidget-optional"},(0,i.kt)("inlineCode",{parentName:"a"},"widget")))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"displayData"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"object")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Meta-data to optionally overide display settings for a given section. See ",(0,i.kt)("a",{parentName:"td",href:"#sectiondisplaydata-optional"},(0,i.kt)("inlineCode",{parentName:"a"},"displayData")))))),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,i.kt)("h3",{id:"sectionitem"},(0,i.kt)("inlineCode",{parentName:"h3"},"section.item")),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Field")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Type")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Required")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Description")))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"title"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},"Required"),(0,i.kt)("td",{parentName:"tr",align:null},"The text to display/ title of a given item. Max length ",(0,i.kt)("inlineCode",{parentName:"td"},"18"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"description"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Additional info about an item, which is shown in the tooltip on hover, or visible on large tiles")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"url"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},"Required"),(0,i.kt)("td",{parentName:"tr",align:null},"The URL / location of web address for when the item is clicked")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"icon"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"The icon for a given item. Can be a font-awesome icon, favicon, remote URL or local URL. See ",(0,i.kt)("a",{parentName:"td",href:"#sectionicon-and-sectionitemicon"},(0,i.kt)("inlineCode",{parentName:"a"},"item.icon")))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"target"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"The opening method for when the item is clicked, either ",(0,i.kt)("inlineCode",{parentName:"td"},"newtab"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"sametab"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"modal"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"workspace"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"clipboard"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"top")," or ",(0,i.kt)("inlineCode",{parentName:"td"},"parent"),". Where ",(0,i.kt)("inlineCode",{parentName:"td"},"newtab")," will open the link in a new tab, ",(0,i.kt)("inlineCode",{parentName:"td"},"sametab")," will open it in the current tab, and ",(0,i.kt)("inlineCode",{parentName:"td"},"modal")," will open a pop-up modal, ",(0,i.kt)("inlineCode",{parentName:"td"},"workspace")," will open in the Workspace view and ",(0,i.kt)("inlineCode",{parentName:"td"},"clipboard")," will copy the URL to system clipboard (but not launch app). Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"newtab"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"hotkey"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"number")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Give frequently opened applications a numeric hotkey, between ",(0,i.kt)("inlineCode",{parentName:"td"},"0 - 9"),". You can then just press that key to launch that application.")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"tags"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string[]")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"A list of tags, which can be used for improved search")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"statusCheck"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"When set to ",(0,i.kt)("inlineCode",{parentName:"td"},"true"),", Dashy will ping the URL associated with the current service, and display its status as a dot next to the item. The value here will override ",(0,i.kt)("inlineCode",{parentName:"td"},"appConfig.statusCheck")," so you can turn off or on checks for a given service. Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"appConfig.statusCheck"),", falls back to ",(0,i.kt)("inlineCode",{parentName:"td"},"false"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"statusCheckUrl"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"If you've enabled ",(0,i.kt)("inlineCode",{parentName:"td"},"statusCheck"),", and want to use a different URL to what is defined under the item, then specify it here")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"statusCheckHeaders"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"object")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"If you're endpoint requires any specific headers for the status checking, then define them here")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"statusCheckAllowInsecure"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"By default, any request to insecure content will be blocked. Setting this option to ",(0,i.kt)("inlineCode",{parentName:"td"},"true")," will disable the ",(0,i.kt)("inlineCode",{parentName:"td"},"rejectUnauthorized")," option, enabling you to ping non-HTTPS services for the current item. Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"false"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"statusCheckAcceptCodes"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"If your service's response code is anything other than 2xx, then you can opt to specify an alternative success code. E.g. if you expect your server to return 403, but still want the status indicator to be green, set this value to ",(0,i.kt)("inlineCode",{parentName:"td"},"403"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"statusCheckMaxRedirects"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"number")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"If your service redirects to another page, and you would like status checks to follow redirects, then specify the maximum number of redirects here. Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"0")," / will not follow redirects")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"color"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"An optional color for the text and font-awesome icon to be displayed in. Note that this will override the current theme and so may not display well")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"backgroundColor"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"An optional background fill color for the that given item. Again, this will override the current theme and so might not display well against the background")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"provider"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"The name of the provider for a given service, useful for when including hosted apps. In some themes, this is visible under the item name")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"displayData"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"object")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Meta-data to optionally overide display settings for a given item. See ",(0,i.kt)("a",{parentName:"td",href:"#itemdisplaydata-optional"},(0,i.kt)("inlineCode",{parentName:"a"},"displayData")))))),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,i.kt)("h3",{id:"itemdisplaydata-optional"},(0,i.kt)("inlineCode",{parentName:"h3"},"item.displayData")," ",(0,i.kt)("em",{parentName:"h3"},"(optional)")),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Field")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Type")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Required")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Description")))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"hideForUsers"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string[]")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Current item will be visible to all users, except for those specified in this list")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"showForUsers"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string[]")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Current item will be hidden from all users, except for those specified in this list")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"hideForGuests"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Current item will be visible for logged in users, but not for guests (see ",(0,i.kt)("inlineCode",{parentName:"td"},"appConfig.enableGuestAccess"),"). Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"false"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"hideForKeycloakUsers"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"object")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Current item will be visible to all keycloak users, except for those configured via these groups and roles. See ",(0,i.kt)("inlineCode",{parentName:"td"},"hideForKeycloakUsers"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"showForKeycloakUsers"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"object")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Current item will be hidden from all keycloak users, except for those configured via these groups and roles. See ",(0,i.kt)("inlineCode",{parentName:"td"},"showForKeycloakUsers"))))),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,i.kt)("h3",{id:"sectionwidget-optional"},(0,i.kt)("inlineCode",{parentName:"h3"},"section.widget")," ",(0,i.kt)("em",{parentName:"h3"},"(optional)")),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Field")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Type")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Required")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Description")))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"type"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},"Required"),(0,i.kt)("td",{parentName:"tr",align:null},"The widget type. See ",(0,i.kt)("a",{parentName:"td",href:"/docs/widgets"},"Widget Docs")," for full list of supported widgets")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"options"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"object")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Some widgets accept either optional or required additional options. Again, see the ",(0,i.kt)("a",{parentName:"td",href:"/docs/widgets"},"Widget Docs")," for full list of options")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"updateInterval"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"number")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"You can keep a widget constantly updated by specifying an update interval, in seconds. See ",(0,i.kt)("a",{parentName:"td",href:"/docs/widgets#continuous-updates"},"Continuous Updates Docs")," for more info")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"useProxy"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Some widgets make API requests to services that are not CORS-enabled. For these instances, you will need to route requests through a proxy, Dashy has a built in CORS-proxy, which you can use by setting this option to ",(0,i.kt)("inlineCode",{parentName:"td"},"true"),". Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"false"),". See the ",(0,i.kt)("a",{parentName:"td",href:"/docs/widgets#proxying-requests"},"Proxying Requests Docs")," for more info")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"timeout"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"number")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Request timeout in milliseconds, defaults to \xbd a second (",(0,i.kt)("inlineCode",{parentName:"td"},"500"),")")))),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,i.kt)("h3",{id:"sectiondisplaydata-optional"},(0,i.kt)("inlineCode",{parentName:"h3"},"section.displayData")," ",(0,i.kt)("em",{parentName:"h3"},"(optional)")),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Field")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Type")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Required")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Description")))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"sortBy"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"The sort order for items within the current section. By default items are displayed in the order in which they are listed in within the config. The following sort options are supported: ",(0,i.kt)("inlineCode",{parentName:"td"},"most-used")," (most opened apps first), ",(0,i.kt)("inlineCode",{parentName:"td"},"last-used")," (the most recently used apps), ",(0,i.kt)("inlineCode",{parentName:"td"},"alphabetical"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"reverse-alphabetical"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"random")," and ",(0,i.kt)("inlineCode",{parentName:"td"},"default"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"collapsed"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"If true, the section will be collapsed initially, and will need to be clicked to open. Useful for less regularly used, or very long sections. Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"false"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"cutToHeight"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"By default, sections will fill available space. Set this option to true to match section height with content height")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"rows"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"number")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Height of the section, specified as the number of rows it should span vertically, e.g. ",(0,i.kt)("inlineCode",{parentName:"td"},"2"),". Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"1"),". Max is ",(0,i.kt)("inlineCode",{parentName:"td"},"5"),".")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"cols"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"number")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Width of the section, specified as the number of columns the section should span horizontally, e.g. ",(0,i.kt)("inlineCode",{parentName:"td"},"2"),". Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"1"),". Max is ",(0,i.kt)("inlineCode",{parentName:"td"},"5"),".")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"itemSize"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Specify the size for items within this group, either ",(0,i.kt)("inlineCode",{parentName:"td"},"small"),", ",(0,i.kt)("inlineCode",{parentName:"td"},"medium")," or ",(0,i.kt)("inlineCode",{parentName:"td"},"large"),". Note that this will overide any settings specified through the UI")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"color"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"A custom accent color for the section, as a hex code or HTML color (e.g. ",(0,i.kt)("inlineCode",{parentName:"td"},"#fff"),")")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"customStyles"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Custom CSS properties that should be applied to that section, e.g. ",(0,i.kt)("inlineCode",{parentName:"td"},"border: 2px dashed #ff0000;"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"sectionLayout"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Specify which CSS layout will be used to responsivley place items. Can be either ",(0,i.kt)("inlineCode",{parentName:"td"},"auto")," (which uses flex layout), or ",(0,i.kt)("inlineCode",{parentName:"td"},"grid"),". If ",(0,i.kt)("inlineCode",{parentName:"td"},"grid")," is selected, then ",(0,i.kt)("inlineCode",{parentName:"td"},"itemCountX")," and ",(0,i.kt)("inlineCode",{parentName:"td"},"itemCountY")," may also be set. Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"auto"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"itemCountX"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"number")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"The number of items to display per row / horizontally. If not set, it will be calculated automatically based on available space. Can only be set if ",(0,i.kt)("inlineCode",{parentName:"td"},"sectionLayout")," is set to ",(0,i.kt)("inlineCode",{parentName:"td"},"grid"),". Must be a whole number between ",(0,i.kt)("inlineCode",{parentName:"td"},"1")," and ",(0,i.kt)("inlineCode",{parentName:"td"},"12"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"itemCountY"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"number")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"The number of items to display per column / vertically. If not set, it will be calculated automatically based on available space. If ",(0,i.kt)("inlineCode",{parentName:"td"},"itemCountX")," is set, then ",(0,i.kt)("inlineCode",{parentName:"td"},"itemCountY")," can be calculated automatically. Can only be set if ",(0,i.kt)("inlineCode",{parentName:"td"},"sectionLayout")," is set to ",(0,i.kt)("inlineCode",{parentName:"td"},"grid"),". Must be a whole number between ",(0,i.kt)("inlineCode",{parentName:"td"},"1")," and ",(0,i.kt)("inlineCode",{parentName:"td"},"12"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"hideForUsers"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string[]")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Current section will be visible to all users, except for those specified in this list")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"showForUsers"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string[]")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Current section will be hidden from all users, except for those specified in this list")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"hideForGuests"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"boolean")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Current section will be visible for logged in users, but not for guests (see ",(0,i.kt)("inlineCode",{parentName:"td"},"appConfig.enableGuestAccess"),"). Defaults to ",(0,i.kt)("inlineCode",{parentName:"td"},"false"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"hideForKeycloakUsers"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"object")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Current section will be visible to all keycloak users, except for those configured via these groups and roles. See ",(0,i.kt)("inlineCode",{parentName:"td"},"hideForKeycloakUsers"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"showForKeycloakUsers"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"object")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Current section will be hidden from all keycloak users, except for those configured via these groups and roles. See ",(0,i.kt)("inlineCode",{parentName:"td"},"showForKeycloakUsers"))))),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,i.kt)("h3",{id:"sectionicon-and-sectionitemicon"},(0,i.kt)("inlineCode",{parentName:"h3"},"section.icon")," and ",(0,i.kt)("inlineCode",{parentName:"h3"},"section.item.icon")),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Field")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Type")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Required")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Description")))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"icon"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"The icon for a given item or section. ",(0,i.kt)("br",null),"See ",(0,i.kt)("a",{parentName:"td",href:"/docs/icons"},"Icon Docs")," for all available supported icon types, including: auto-fetched favicons, generative icons, emoji icons, home-lab service logos, font-awesome, simple-icons, material icons, and icons specified by URL")))),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,i.kt)("h3",{id:"sectiondisplaydatahideforkeycloakusers-sectiondisplaydatashowforkeycloakusers-itemdisplaydatahideforkeycloakusers-and-itemdisplaydatashowforkeycloakusers"},(0,i.kt)("inlineCode",{parentName:"h3"},"section.displayData.hideForKeycloakUsers"),", ",(0,i.kt)("inlineCode",{parentName:"h3"},"section.displayData.showForKeycloakUsers"),", ",(0,i.kt)("inlineCode",{parentName:"h3"},"item.displayData.hideForKeycloakUsers")," and ",(0,i.kt)("inlineCode",{parentName:"h3"},"item.displayData.showForKeycloakUsers")),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Field")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Type")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Required")),(0,i.kt)("th",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"th"},"Description")))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"groups"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string[]")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Current Section or Item will be hidden or shown based on the user having any of the groups in this list")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},(0,i.kt)("inlineCode",{parentName:"strong"},"roles"))),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"string[]")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("em",{parentName:"td"},"Optional")),(0,i.kt)("td",{parentName:"tr",align:null},"Current Section or Item will be hidden or shown based on the user having any of the roles in this list")))),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,i.kt)("hr",null),(0,i.kt)("h2",{id:"notes"},"Notes"),(0,i.kt)("h3",{id:"editing-config-through-the-ui"},"Editing Config through the UI"),(0,i.kt)("p",null,"Config can be modified directly through the UI, and then written to disk, or applied locally. This can be done wither with the raw config editor (introduced in V 0.6.5 / ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/pull/3"},"#3"),"), or the interactive editor (introduced in V 1.8.9 / ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/pull/298"},"#298"),")."),(0,i.kt)("p",{align:"center"},(0,i.kt)("a",{href:"https://ibb.co/CzkyMNb"},(0,i.kt)("b",null,"Interactive Editor"),(0,i.kt)("br",null),(0,i.kt)("img",{alt:"Interactive Editor demo",src:"https://user-images.githubusercontent.com/1862727/139543020-b0576d28-0830-476f-afc8-a815d4de6def.gif",width:"600"})),(0,i.kt)("br",null),(0,i.kt)("a",{href:"https://ibb.co/zRv542H"},(0,i.kt)("b",null,"JSON Editor"),(0,i.kt)("br",null),(0,i.kt)("img",{alt:"Config Editor demo",src:"https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/config-editor-demo.gif",width:"600"}))),(0,i.kt)("h3",{id:"about-yaml"},"About YAML"),(0,i.kt)("p",null,"If you're new to YAML, it's pretty straight-forward. The format is exactly the same as that of JSON, but instead of using curly braces, structure is denoted using whitespace. This ",(0,i.kt)("a",{parentName:"p",href:"https://linuxhandbook.com/yaml-basics/"},"quick guide")," should get you up to speed in a few minutes, for more advanced topics take a look at this ",(0,i.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/YAML"},"Wikipedia article"),"."),(0,i.kt)("h3",{id:"config-saving-methods"},"Config Saving Methods"),(0,i.kt)("p",null,"When updating the config through the JSON editor in the UI, you have two save options: ",(0,i.kt)("strong",{parentName:"p"},"Local")," or ",(0,i.kt)("strong",{parentName:"p"},"Write to Disk"),"."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Changes saved locally will only be applied to the current user through the browser, and will not apply to other instances - you either need to use the cloud sync feature, or manually update the conf.yml file."),(0,i.kt)("li",{parentName:"ul"},"On the other-hand, if you choose to write changes to disk, then your main ",(0,i.kt)("inlineCode",{parentName:"li"},"conf.yml")," file will be updated, and changes will be applied to all users, and visible across all devices. For this functionality to work, you must be running Dashy with using the Docker container, or the Node server. A backup of your current configuration will also be saved in the same directory. ")),(0,i.kt)("h3",{id:"preventing-changes"},"Preventing Changes"),(0,i.kt)("p",null,"If you have authentication set up, then any user who is not an admin (with ",(0,i.kt)("inlineCode",{parentName:"p"},"type: admin"),") will not be able to write changes to disk."),(0,i.kt)("p",null,"You can also prevent changes from any user being written to disk, using ",(0,i.kt)("inlineCode",{parentName:"p"},"preventWriteToDisk"),". Or prevent any changes from being saved locally in browser storage, using ",(0,i.kt)("inlineCode",{parentName:"p"},"preventLocalSave"),"."),(0,i.kt)("p",null,"To disable all UI config features, set ",(0,i.kt)("inlineCode",{parentName:"p"},"disableConfiguration"),"."),(0,i.kt)("h3",{id:"example"},"Example"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-yaml"},"---\npageInfo:\n title: Home Lab\nsections: # An array of sections\n- name: Section 1 - Getting Started\n items: # An array of items\n - title: GitHub\n description: Source code and documentation on GitHub\n icon: fab fa-github\n url: https://github.com/Lissy93/dashy\n - title: Issues\n description: View currently open issues, or raise a new one\n icon: fas fa-bug\n url: https://github.com/Lissy93/dashy/issues\n - title: Demo\n description: A live demo\n icon: far fa-rocket\n url: https://dashy-demo-1.netlify.app \n- name: Section 2 - Local Services\n items:\n - title: Firewall\n icon: favicon\n url: http://192.168.1.1/\n - title: Game Server\n icon: https://i.ibb.co/710B3Yc/space-invader-x256.png\n url: http://192.168.130.1/\n")),(0,i.kt)("p",null,"For more example config files, see: ",(0,i.kt)("a",{parentName:"p",href:"https://gist.github.com/Lissy93/000f712a5ce98f212817d20bc16bab10"},"this gist")),(0,i.kt)("p",null,"If you need any help, feel free to ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/issues/new?assignees=Lissy93&labels=%F0%9F%A4%B7%E2%80%8D%E2%99%82%EF%B8%8F+Question&template=question.md&title=%5BQUESTION%5D"},"Raise an Issue")," or ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/discussions"},"Start a Discussion")),(0,i.kt)("p",null,"Happy Configuring \ud83e\udd13\ud83d\udd27"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4bdb0d83.584578b8.js b/assets/js/4bdb0d83.584578b8.js new file mode 100644 index 00000000..2b80388b --- /dev/null +++ b/assets/js/4bdb0d83.584578b8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[781],{3905:(t,e,n)=>{n.d(e,{Zo:()=>m,kt:()=>u});var a=n(7294);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function l(t){for(var e=1;e=0||(r[n]=t[n]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}var d=a.createContext({}),p=function(t){var e=a.useContext(d),n=e;return t&&(n="function"==typeof t?t(e):l(l({},e),t)),n},m=function(t){var e=p(t.components);return a.createElement(d.Provider,{value:e},t.children)},s="mdxType",k={inlineCode:"code",wrapper:function(t){var e=t.children;return a.createElement(a.Fragment,{},e)}},N=a.forwardRef((function(t,e){var n=t.components,r=t.mdxType,i=t.originalType,d=t.parentName,m=o(t,["components","mdxType","originalType","parentName"]),s=p(n),N=r,u=s["".concat(d,".").concat(N)]||s[N]||k[N]||i;return n?a.createElement(u,l(l({ref:e},m),{},{components:n})):a.createElement(u,l({ref:e},m))}));function u(t,e){var n=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=n.length,l=new Array(i);l[0]=N;var o={};for(var d in e)hasOwnProperty.call(e,d)&&(o[d]=e[d]);o.originalType=t,o[s]="string"==typeof t?t:r,l[1]=o;for(var p=2;p{n.r(e),n.d(e,{contentTitle:()=>l,default:()=>s,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var a=n(7462),r=(n(7294),n(3905));const i={},l="Configuring",o={unversionedId:"configuring",id:"configuring",isDocsHomePage:!1,title:"Configuring",description:"All app configuration is specified in /public/conf.yml which is in YAML Format format. If you're using Docker, this file can be passed in as a volume. Changes can either be made directly to this file, or done through the UI. From the UI you can also export, backup, reset, validate and download your configuration file.",source:"@site/docs/configuring.md",sourceDirName:".",slug:"/configuring",permalink:"/docs/configuring",editUrl:"https://github.com/Lissy93/dashy/edit/gh-pages/docs/docs/configuring.md",version:"current",frontMatter:{},sidebar:"dashySidebar",previous:{title:"Deployment",permalink:"/docs/deployment"},next:{title:"App Management",permalink:"/docs/management"}},d=[{value:"Top-Level Fields",id:"top-level-fields",children:[]},{value:"PageInfo",id:"pageinfo",children:[]},{value:"pageInfo.navLinks (optional)",id:"pageinfonavlinks-optional",children:[]},{value:"pages[] (optional)",id:"pages-optional",children:[]},{value:"appConfig (optional)",id:"appconfig-optional",children:[]},{value:"appConfig.auth (optional)",id:"appconfigauth-optional",children:[]},{value:"appConfig.auth.users (optional)",id:"appconfigauthusers-optional",children:[]},{value:"appConfig.auth.keycloak (optional)",id:"appconfigauthkeycloak-optional",children:[]},{value:"appConfig.webSearch (optional)",id:"appconfigwebsearch-optional",children:[]},{value:"appConfig.hideComponents (optional)",id:"appconfighidecomponents-optional",children:[]},{value:"section",id:"section",children:[]},{value:"section.item",id:"sectionitem",children:[]},{value:"item.displayData (optional)",id:"itemdisplaydata-optional",children:[]},{value:"section.widget (optional)",id:"sectionwidget-optional",children:[]},{value:"section.displayData (optional)",id:"sectiondisplaydata-optional",children:[]},{value:"section.icon and section.item.icon",id:"sectionicon-and-sectionitemicon",children:[]},{value:"section.displayData.hideForKeycloakUsers, section.displayData.showForKeycloakUsers, item.displayData.hideForKeycloakUsers and item.displayData.showForKeycloakUsers",id:"sectiondisplaydatahideforkeycloakusers-sectiondisplaydatashowforkeycloakusers-itemdisplaydatahideforkeycloakusers-and-itemdisplaydatashowforkeycloakusers",children:[]},{value:"Notes",id:"notes",children:[{value:"Editing Config through the UI",id:"editing-config-through-the-ui",children:[]},{value:"About YAML",id:"about-yaml",children:[]},{value:"Config Saving Methods",id:"config-saving-methods",children:[]},{value:"Preventing Changes",id:"preventing-changes",children:[]},{value:"Example",id:"example",children:[]}]}],p={toc:d},m="wrapper";function s(t){let{components:e,...n}=t;return(0,r.kt)(m,(0,a.Z)({},p,n,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"configuring"},"Configuring"),(0,r.kt)("p",null,"All app configuration is specified in ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/blob/master/public/conf.yml"},(0,r.kt)("inlineCode",{parentName:"a"},"/public/conf.yml"))," which is in ",(0,r.kt)("a",{parentName:"p",href:"https://yaml.org/"},"YAML Format")," format. If you're using Docker, this file can be passed in as a volume. Changes can either be made directly to this file, or done ",(0,r.kt)("a",{parentName:"p",href:"#editing-config-through-the-ui"},"through the UI"),". From the UI you can also export, backup, reset, validate and download your configuration file."),(0,r.kt)("h4",{id:"there-are-three-ways-to-edit-the-config"},"There are three ways to edit the config"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Directly in the YAML file")," ",(0,r.kt)("em",{parentName:"li"},"(5/5 reliability, 3/5 usability)"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Write changes directly to the conf.yml file, optionally using one of the templates provided. This can be done in your favorite editor and uploading to your server, or directly editing the file via SSH, but the easiest method would be to use ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/coder/code-server"},"Code Server")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"UI JSON Editor")," ",(0,r.kt)("em",{parentName:"li"},"(4/5 reliability, 4/5 usability)"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"From the UI, under the config menu there is a JSON editor, with built-in validation, documentation and advanced options"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"UI Visual Editor")," ",(0,r.kt)("em",{parentName:"li"},"(3/5 reliability, 5/5 usability)"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"From the UI, enter the Interactive Edit Mode, then click any part of the page to edit. Changes are previewed live, and then saved to disk"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"REST API")," ",(0,r.kt)("em",{parentName:"li"},"(Coming soon)"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Programmatically edit config either through the command line, using a script or a third-party application")))),(0,r.kt)("h4",{id:"tips"},"Tips"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"You may find it helpful to look at some sample config files to get you started, a collection of which can be found ",(0,r.kt)("a",{parentName:"li",href:"https://gist.github.com/Lissy93/000f712a5ce98f212817d20bc16bab10"},"here")),(0,r.kt)("li",{parentName:"ul"},"You can check that your config file fits the schema, by running ",(0,r.kt)("inlineCode",{parentName:"li"},"yarn validate-config")),(0,r.kt)("li",{parentName:"ul"},"After modifying your config, the app needs to be recompiled, by running ",(0,r.kt)("inlineCode",{parentName:"li"},"yarn build")," - this happens automatically if you're using Docker"),(0,r.kt)("li",{parentName:"ul"},"It is recommended to keep a backup of your config file. You can download it under Config menu, or use the ",(0,r.kt)("a",{parentName:"li",href:"/docs/backup-restore"},"Cloud Backup")," feature."),(0,r.kt)("li",{parentName:"ul"},"You can make use of YAML features, like anchors, comments, multi-line strings, etc to reuse attributes and keep your config file readable"),(0,r.kt)("li",{parentName:"ul"},"Once you have finished configuring your dashboard, you can choose to ",(0,r.kt)("a",{parentName:"li",href:"#preventing-changes"},"disable UI config")," if you wish"),(0,r.kt)("li",{parentName:"ul"},"All fields are optional, unless otherwise stated.")),(0,r.kt)("p",null,"The following file provides a reference of all supported configuration options."),(0,r.kt)("h4",{id:"contents"},"Contents"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#pageinfo"},(0,r.kt)("strong",{parentName:"a"},(0,r.kt)("inlineCode",{parentName:"strong"},"pageInfo")))," - Header text, footer, title, navigation, etc",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#pageinfonavlinks-optional"},(0,r.kt)("inlineCode",{parentName:"a"},"navLinks"))," - Links to display in the navigation bar"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#pages-optional"},(0,r.kt)("strong",{parentName:"a"},(0,r.kt)("inlineCode",{parentName:"strong"},"pages")))," - List of additional config files, for multi-page dashboards"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#appconfig-optional"},(0,r.kt)("strong",{parentName:"a"},(0,r.kt)("inlineCode",{parentName:"strong"},"appConfig")))," - Main application settings",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#appconfigwebsearch-optional"},(0,r.kt)("inlineCode",{parentName:"a"},"webSearch"))," - Configure web search engine options"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#appconfighidecomponents-optional"},(0,r.kt)("inlineCode",{parentName:"a"},"hideComponents"))," - Show/ hide page components"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#appconfigauth-optional"},(0,r.kt)("inlineCode",{parentName:"a"},"auth"))," - Built-in authentication setup",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#appconfigauthusers-optional"},(0,r.kt)("inlineCode",{parentName:"a"},"users"))," - List or users (for simple auth)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#appconfigauthkeycloak-optional"},(0,r.kt)("inlineCode",{parentName:"a"},"keycloak"))," - Auth config for Keycloak"))))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#section"},(0,r.kt)("strong",{parentName:"a"},(0,r.kt)("inlineCode",{parentName:"strong"},"sections")))," - List of sections",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#sectiondisplaydata-optional"},(0,r.kt)("inlineCode",{parentName:"a"},"displayData"))," - Section display settings",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#sectiondisplaydatahideforkeycloakusers-sectiondisplaydatashowforkeycloakusers-itemdisplaydatahideforkeycloakusers-and-itemdisplaydatashowforkeycloakusers"},(0,r.kt)("inlineCode",{parentName:"a"},"show/hideForKeycloakUsers"))," - Set user controls"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#sectionicon-and-sectionitemicon"},(0,r.kt)("inlineCode",{parentName:"a"},"icon"))," - Icon for a section"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#sectionitem"},(0,r.kt)("inlineCode",{parentName:"a"},"items"))," - List of items",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#sectionicon-and-sectionitemicon"},(0,r.kt)("inlineCode",{parentName:"a"},"icon"))," - Icon for an item"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#itemdisplaydata-optional"},(0,r.kt)("inlineCode",{parentName:"a"},"displayData"))," - Item display settings",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#sectiondisplaydatahideforkeycloakusers-sectiondisplaydatashowforkeycloakusers-itemdisplaydatahideforkeycloakusers-and-itemdisplaydatashowforkeycloakusers"},(0,r.kt)("inlineCode",{parentName:"a"},"show/hideForKeycloakUsers"))," - Set user controls"))))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#sectionwidget-optional"},(0,r.kt)("inlineCode",{parentName:"a"},"widgets"))," - List of widgets"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#notes"},(0,r.kt)("strong",{parentName:"a"},"Notes")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#editing-config-through-the-ui"},"Editing Config through the UI")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#about-yaml"},"About YAML")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#config-saving-methods"},"Config Saving Methods")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#preventing-changes"},"Preventing Changes")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#example"},"Example"))))),(0,r.kt)("hr",null),(0,r.kt)("h3",{id:"top-level-fields"},"Top-Level Fields"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Field")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Type")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Required")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Description")))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"pageInfo"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"object")),(0,r.kt)("td",{parentName:"tr",align:null},"Required"),(0,r.kt)("td",{parentName:"tr",align:null},"Basic meta data like title, description, nav bar links, footer text. See ",(0,r.kt)("a",{parentName:"td",href:"#pageinfo"},(0,r.kt)("inlineCode",{parentName:"a"},"pageInfo")))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"appConfig"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"object")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Settings related to how the app functions, including API keys and global styles. See ",(0,r.kt)("a",{parentName:"td",href:"#appconfig-optional"},(0,r.kt)("inlineCode",{parentName:"a"},"appConfig")))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"sections"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"array")),(0,r.kt)("td",{parentName:"tr",align:null},"Required"),(0,r.kt)("td",{parentName:"tr",align:null},"An array of sections, each containing an array of items, which will be displayed as links. See ",(0,r.kt)("a",{parentName:"td",href:"#section"},(0,r.kt)("inlineCode",{parentName:"a"},"section")))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"pages"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"array")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"An array additional config files, used for multi-page dashboards. See ",(0,r.kt)("a",{parentName:"td",href:"#pages-optional"},(0,r.kt)("inlineCode",{parentName:"a"},"pages")))))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("h3",{id:"pageinfo"},(0,r.kt)("inlineCode",{parentName:"h3"},"PageInfo")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Field")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Type")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Required")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Description")))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"title"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Required"),(0,r.kt)("td",{parentName:"tr",align:null},"Your dashboard title, displayed in the header and browser tab")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"description"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Description of your dashboard, also displayed as a subtitle")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"navLinks"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"array")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Optional list of a maximum of 6 links, which will be displayed in the navigation bar. See ",(0,r.kt)("a",{parentName:"td",href:"#pageinfonavlinks-optional"},(0,r.kt)("inlineCode",{parentName:"a"},"navLinks")))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"footerText"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Text to display in the footer (note that this will override the default footer content). This can also include HTML and inline CSS")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"logo"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"The path to an image to display in the header (to the right of the title). This can be either local, where ",(0,r.kt)("inlineCode",{parentName:"td"},"/")," is the root of ",(0,r.kt)("inlineCode",{parentName:"td"},"./public"),", or any remote image, such as ",(0,r.kt)("inlineCode",{parentName:"td"},"https://i.ibb.co/yhbt6CY/dashy.png"),". It's recommended to scale your image down, so that it doesn't impact load times")))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("h3",{id:"pageinfonavlinks-optional"},(0,r.kt)("inlineCode",{parentName:"h3"},"pageInfo.navLinks")," ",(0,r.kt)("em",{parentName:"h3"},"(optional)")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Field")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Type")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Required")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Description")))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"title"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Required"),(0,r.kt)("td",{parentName:"tr",align:null},"The text to display on the link button")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"path"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Required"),(0,r.kt)("td",{parentName:"tr",align:null},"The URL to navigate to when clicked. Can be relative (e.g. ",(0,r.kt)("inlineCode",{parentName:"td"},"/about"),") or absolute (e.g. ",(0,r.kt)("inlineCode",{parentName:"td"},"https://example.com")," or ",(0,r.kt)("inlineCode",{parentName:"td"},"http://192.168.1.1"),")")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"target"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"The opening method (external links only). Can be either ",(0,r.kt)("inlineCode",{parentName:"td"},"newtab"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"sametab"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"top")," or ",(0,r.kt)("inlineCode",{parentName:"td"},"parent"),". Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"newtab"))))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("h3",{id:"pages-optional"},(0,r.kt)("inlineCode",{parentName:"h3"},"pages[]")," ",(0,r.kt)("em",{parentName:"h3"},"(optional)")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Field")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Type")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Required")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Description")))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"name"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Required"),(0,r.kt)("td",{parentName:"tr",align:null},"A unique name for that page")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"path"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Required"),(0,r.kt)("td",{parentName:"tr",align:null},"The path (local or remote) to the config file to use.",(0,r.kt)("br",null),"For files located within ",(0,r.kt)("inlineCode",{parentName:"td"},"/public"),", you only need to specify filename, for externally hosted files you must include the full URL")))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("h3",{id:"appconfig-optional"},(0,r.kt)("inlineCode",{parentName:"h3"},"appConfig")," ",(0,r.kt)("em",{parentName:"h3"},"(optional)")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Field")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Type")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Required")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Description")))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"language"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"The 2 (or 4-digit) ",(0,r.kt)("a",{parentName:"td",href:"https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes"},"ISO 639-1 code")," for your language, e.g. ",(0,r.kt)("inlineCode",{parentName:"td"},"en")," or ",(0,r.kt)("inlineCode",{parentName:"td"},"en-GB"),". This must be a language that the app has already been ",(0,r.kt)("a",{parentName:"td",href:"https://github.com/Lissy93/dashy/tree/master/src/assets/locales"},"translated")," into. If your language is unavailable, Dashy will fallback to English. By default Dashy will attempt to auto-detect your language, although this may not work on some privacy browsers.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"startingView"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"enum")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Which page to load by default, and on the base page or domain root. You can still switch to different views from within the UI. Can be either ",(0,r.kt)("inlineCode",{parentName:"td"},"default"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"minimal")," or ",(0,r.kt)("inlineCode",{parentName:"td"},"workspace"),". Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"default"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"defaultOpeningMethod"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"enum")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"The default opening method for items, if no ",(0,r.kt)("inlineCode",{parentName:"td"},"target")," is specified for a given item. Can be either ",(0,r.kt)("inlineCode",{parentName:"td"},"newtab"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"sametab"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"modal"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"workspace"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"clipboard"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"top")," or ",(0,r.kt)("inlineCode",{parentName:"td"},"parent"),". Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"newtab"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"statusCheck"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"When set to ",(0,r.kt)("inlineCode",{parentName:"td"},"true"),", Dashy will ping each of your services and display their status as a dot next to each item. This can be overridden by setting ",(0,r.kt)("inlineCode",{parentName:"td"},"statusCheck")," under each item. Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"false"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"statusCheckInterval"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"The number of seconds between checks. If set to ",(0,r.kt)("inlineCode",{parentName:"td"},"0")," then service will only be checked on initial page load, which is usually the desired functionality. If value is less than ",(0,r.kt)("inlineCode",{parentName:"td"},"10")," you may experience a hit in performance. Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"0"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"webSearch"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"object")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Configuration options for the web search feature, set your default search engine, opening method or disable web search. See ",(0,r.kt)("a",{parentName:"td",href:"#appconfigwebsearch-optional"},(0,r.kt)("inlineCode",{parentName:"a"},"webSearch")))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"backgroundImg"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Path to an optional full-screen app background image. This can be either remote (http) or local (/). Note that this will slow down initial load")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"enableFontAwesome"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"If set to ",(0,r.kt)("inlineCode",{parentName:"td"},"true")," font-awesome will be loaded, if set to ",(0,r.kt)("inlineCode",{parentName:"td"},"false")," they will not be. if left blank font-awesome will be enabled only if required by 1 or more icons")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"enableMaterialDesignIcons"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"If set to ",(0,r.kt)("inlineCode",{parentName:"td"},"true")," mdi icons will be loaded, if set to ",(0,r.kt)("inlineCode",{parentName:"td"},"false")," they will not be. Where ",(0,r.kt)("inlineCode",{parentName:"td"},"true")," is enabled, if left blank material design icons will be enabled only if required by 1 or more icons")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"fontAwesomeKey"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"If you have a font-awesome key, then you can use it here and make use of premium icons. It is a 10-digit alpha-numeric string from you're FA kit URL (e.g. ",(0,r.kt)("inlineCode",{parentName:"td"},"13014ae648"),")")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"faviconApi"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"enum")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Only applicable if you are using favicons for item icons. Specifies which service to use to resolve favicons. Set to ",(0,r.kt)("inlineCode",{parentName:"td"},"local")," to do this locally, without using an API. Services running locally will use this option always. Available options are: ",(0,r.kt)("inlineCode",{parentName:"td"},"local"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"faviconkit"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"iconhorse"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"google"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"clearbit"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"webmasterapi")," and ",(0,r.kt)("inlineCode",{parentName:"td"},"allesedv"),". Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"faviconkit"),". See ",(0,r.kt)("a",{parentName:"td",href:"/docs/icons#favicons"},"Icons")," for more info")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"auth"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"object")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"All settings relating to user authentication. See ",(0,r.kt)("a",{parentName:"td",href:"#appconfigauth-optional"},(0,r.kt)("inlineCode",{parentName:"a"},"auth")))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"layout"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"enum")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Layout for homepage, either ",(0,r.kt)("inlineCode",{parentName:"td"},"horizontal"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"vertical")," or ",(0,r.kt)("inlineCode",{parentName:"td"},"auto"),". Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"auto"),". This specifies the layout and direction of how sections are positioned on the home screen. This can also be modified and overridden from the UI.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"iconSize"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"enum")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"The size of link items / icons. Can be either ",(0,r.kt)("inlineCode",{parentName:"td"},"small"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"medium,")," or ",(0,r.kt)("inlineCode",{parentName:"td"},"large"),". Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"medium"),". This can also be set directly from the UI.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"colCount"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"number")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"The number of columns of sections displayed on the homepage, using the default view. Should be in integer between ",(0,r.kt)("inlineCode",{parentName:"td"},"1")," and ",(0,r.kt)("inlineCode",{parentName:"td"},"8"),". Note that by default this is applied responsively, based on current screen size, and specifying a value here will override this behavior, which may not be desirable.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"theme"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"The default theme for first load (you can change this later from the UI)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"cssThemes"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string[]")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"An array of custom theme names which can be used in the theme switcher dropdown")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"customColors"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"object")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Enables you to apply a custom color palette to any given theme. Use the theme name (lowercase) as the key, for an object including key-value-pairs, with the color variable name as keys, and 6-digit hex code as value. See ",(0,r.kt)("a",{parentName:"td",href:"/docs/theming#modifying-theme-colors"},"Theming")," for more info")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"externalStyleSheet"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")," or ",(0,r.kt)("inlineCode",{parentName:"td"},"string[]")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Either a URL to an external stylesheet or an array or URLs, which can be applied as themes within the UI")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"customCss"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Raw CSS that will be applied to the page. This can also be set from the UI. Please minify it first.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"hideComponents"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"object")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"A list of key page components (header, footer, search, settings, etc) that are present by default, but can be removed using this option. See ",(0,r.kt)("a",{parentName:"td",href:"#appconfighideComponents-optional"},(0,r.kt)("inlineCode",{parentName:"a"},"appConfig.hideComponents")))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"routingMode"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Can be either ",(0,r.kt)("inlineCode",{parentName:"td"},"hash")," or ",(0,r.kt)("inlineCode",{parentName:"td"},"history"),". Determines the URL format for sub-pages, hash mode will look like ",(0,r.kt)("inlineCode",{parentName:"td"},"/#/home")," whereas with history mode available you have nice clean URLs, like ",(0,r.kt)("inlineCode",{parentName:"td"},"/home"),". For more info, see the ",(0,r.kt)("a",{parentName:"td",href:"https://router.vuejs.org/guide/essentials/history-mode.html#example-server-configurations"},"Vue docs"),". If you're hosting Dashy with a custom BASE_URL, you will find that a bit of extra server config is necessary to get history mode working, so here you may want to instead use ",(0,r.kt)("inlineCode",{parentName:"td"},"hash")," mode.Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"history"),".")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"enableMultiTasking"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"If set to true, will keep apps open in the background when in the workspace view. Useful for quickly switching between multiple sites, and preserving their state, but comes at the cost of performance.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"workspaceLandingUrl"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"The URL or an app, service or website to launch when the workspace view is opened, before another service has been launched")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"preventWriteToDisk"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"If set to ",(0,r.kt)("inlineCode",{parentName:"td"},"true"),", users will be prevented from saving config changes to disk through the UI")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"preventLocalSave"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"If set to ",(0,r.kt)("inlineCode",{parentName:"td"},"true"),", users will be prevented from applying config changes to local storage")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"disableConfiguration"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"If set to true, no users will be able to view or edit the config through the UI")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"widgetsAlwaysUseProxy"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"If set to ",(0,r.kt)("inlineCode",{parentName:"td"},"true"),", requests made by widgets will always be proxied, same as setting ",(0,r.kt)("inlineCode",{parentName:"td"},"useProxy: true")," on each widget. Note that this may break some widgets.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"showSplashScreen"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"If set to ",(0,r.kt)("inlineCode",{parentName:"td"},"true"),", a loading screen will be shown. Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"false"),".")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"enableErrorReporting"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Enable reporting of unexpected errors and crashes. This is off by default, and ",(0,r.kt)("strong",{parentName:"td"},"no data will ever be captured unless you explicitly enable it"),". Turning on error reporting helps previously unknown bugs get discovered and fixed. Dashy uses ",(0,r.kt)("a",{parentName:"td",href:"https://github.com/getsentry/sentry"},"Sentry")," for error reporting. Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"false"),".")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"sentryDsn"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"If you need to monitor errors in your instance, then you can use Sentry to collect and process bug reports. Sentry can be self-hosted, or used as SaaS, once your instance is setup, then all you need to do is pass in the DSN here, and enable error reporting. You can learn more on the ",(0,r.kt)("a",{parentName:"td",href:"https://docs.sentry.io/product/sentry-basics/dsn-explainer/"},"Sentry DSN Docs"),". Note that this will only ever be used if ",(0,r.kt)("inlineCode",{parentName:"td"},"enableErrorReporting")," is explicitly enabled.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"disableSmartSort"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"For the most-used and last-used app sort functions to work, a basic open-count is stored in local storage. If you do not want this to happen, then disable smart sort here, but you wil no longer be able to use these sort options. Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"false"),".")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"disableUpdateChecks"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"If set to true, Dashy will not check for updates. Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"false"),".")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"enableServiceWorker"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Service workers cache web applications to improve load times and offer basic offline functionality, and are enabled by default in Dashy. The service worker can sometimes cause older content to be cached, requiring the app to be hard-refreshed. If you do not want SW functionality, or are having issues with caching, set this property to ",(0,r.kt)("inlineCode",{parentName:"td"},"true")," to disable all service workers.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"disableContextMenu"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"If set to ",(0,r.kt)("inlineCode",{parentName:"td"},"true"),", the custom right-click context menu will be disabled. Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"false"),".")))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("h3",{id:"appconfigauth-optional"},(0,r.kt)("inlineCode",{parentName:"h3"},"appConfig.auth")," ",(0,r.kt)("em",{parentName:"h3"},"(optional)")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Field")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Type")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Required")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Description")))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"users"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"array")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"An array of objects containing usernames and hashed passwords. If this is not provided, then authentication will be off by default, and you will not need any credentials to access the app. See ",(0,r.kt)("a",{parentName:"td",href:"#appconfigauthusers-optional"},(0,r.kt)("inlineCode",{parentName:"a"},"appConfig.auth.users")),". ",(0,r.kt)("br",null),(0,r.kt)("strong",{parentName:"td"},"Note")," this method of authentication is handled on the client side, so for security critical situations, it is recommended to use an ",(0,r.kt)("a",{parentName:"td",href:"/docs/authentication#alternative-authentication-methods"},"alternate authentication method"),".")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"enableKeycloak"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"If set to ",(0,r.kt)("inlineCode",{parentName:"td"},"true"),", then authentication using Keycloak will be anabled. Note that you need to have an instance running, and have also configured ",(0,r.kt)("inlineCode",{parentName:"td"},"auth.keycloak"),". Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"false"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"keycloak"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"object")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Config options to point Dashy to your Keycloak server. Requires ",(0,r.kt)("inlineCode",{parentName:"td"},"enableKeycloak: true"),". See ",(0,r.kt)("a",{parentName:"td",href:"#appconfigauthkeycloak-optional"},(0,r.kt)("inlineCode",{parentName:"a"},"auth.keycloak"))," for more info")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"enableGuestAccess"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"When set to ",(0,r.kt)("inlineCode",{parentName:"td"},"true"),", an unauthenticated user will be able to access the dashboard, with read-only access, without having to login. Requires ",(0,r.kt)("inlineCode",{parentName:"td"},"auth.users")," to be configured. Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"false"),".")))),(0,r.kt)("p",null,"For more info, see the ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"/docs/authentication"},"Authentication Docs"))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("h3",{id:"appconfigauthusers-optional"},(0,r.kt)("inlineCode",{parentName:"h3"},"appConfig.auth.users")," ",(0,r.kt)("em",{parentName:"h3"},"(optional)")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Field")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Type")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Required")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Description")))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"user"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Required"),(0,r.kt)("td",{parentName:"tr",align:null},"Username to log in with")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"hash"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Required"),(0,r.kt)("td",{parentName:"tr",align:null},"A SHA-256 hashed password")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"type"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"The user type, either admin or normal")))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("h3",{id:"appconfigauthkeycloak-optional"},(0,r.kt)("inlineCode",{parentName:"h3"},"appConfig.auth.keycloak")," ",(0,r.kt)("em",{parentName:"h3"},"(optional)")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Field")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Type")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Required")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Description")))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"serverUrl"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Required"),(0,r.kt)("td",{parentName:"tr",align:null},"The URL (or URL/ IP + Port) where your keycloak server is running")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"realm"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Required"),(0,r.kt)("td",{parentName:"tr",align:null},"The name of the realm (must already be created) that you want to use")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"clientId"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Required"),(0,r.kt)("td",{parentName:"tr",align:null},"The Client ID of the client you created for use with Dashy")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"legacySupport"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"If using Keycloak 17 or older, then set this to ",(0,r.kt)("inlineCode",{parentName:"td"},"true"))))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("h3",{id:"appconfigwebsearch-optional"},(0,r.kt)("inlineCode",{parentName:"h3"},"appConfig.webSearch")," ",(0,r.kt)("em",{parentName:"h3"},"(optional)")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Field")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Type")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Required")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Description")))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"disableWebSearch"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Web search is enabled by default, but can be disabled by setting this property to ",(0,r.kt)("inlineCode",{parentName:"td"},"true"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"searchEngine"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Set the key name for your search engine. Can also use a custom engine by setting this property to ",(0,r.kt)("inlineCode",{parentName:"td"},"custom"),". Currently supported: ",(0,r.kt)("inlineCode",{parentName:"td"},"duckduckgo"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"google"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"whoogle"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"qwant"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"startpage"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"searx-bar")," and ",(0,r.kt)("inlineCode",{parentName:"td"},"searx-info"),". Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"duckduckgo"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"customSearchEngine"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"You can also use a custom search engine, or your own self-hosted instance. This requires ",(0,r.kt)("inlineCode",{parentName:"td"},"searchEngine: custom")," to be set. Then add the URL of your service, with GET query string included here")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"openingMethod"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Set your preferred opening method for search results: ",(0,r.kt)("inlineCode",{parentName:"td"},"newtab"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"sametab"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"workspace"),". Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"newtab"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"searchBangs"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"object")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"A key-value-pair set of custom search ",(0,r.kt)("em",{parentName:"td"},"bangs")," for redirecting query to a specific app or search engine. The key of each should be the bang you will type (typically starting with ",(0,r.kt)("inlineCode",{parentName:"td"},"/"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"!")," or ",(0,r.kt)("inlineCode",{parentName:"td"},":"),"), and value is the destination, either as a search engine key (e.g. ",(0,r.kt)("inlineCode",{parentName:"td"},"reddit"),") or a URL with search parameters (e.g. ",(0,r.kt)("inlineCode",{parentName:"td"},"https://en.wikipedia.org/w/?search="),")")))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("h3",{id:"appconfighidecomponents-optional"},(0,r.kt)("inlineCode",{parentName:"h3"},"appConfig.hideComponents")," ",(0,r.kt)("em",{parentName:"h3"},"(optional)")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Field")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Type")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Required")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Description")))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"hideHeading"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"If set to ",(0,r.kt)("inlineCode",{parentName:"td"},"true"),", the page title & sub-title will not be visible. Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"false"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"hideNav"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"If set to ",(0,r.kt)("inlineCode",{parentName:"td"},"true"),", the navigation menu will not be visible. Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"false"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"hideSearch"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"If set to ",(0,r.kt)("inlineCode",{parentName:"td"},"true"),", the search bar will not be visible. Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"false"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"hideSettings"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"If set to ",(0,r.kt)("inlineCode",{parentName:"td"},"true"),", the settings menu will be initially collapsed. Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"false"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"hideFooter"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"If set to ",(0,r.kt)("inlineCode",{parentName:"td"},"true"),", the footer will not be visible. Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"false"))))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("h3",{id:"section"},(0,r.kt)("inlineCode",{parentName:"h3"},"section")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Field")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Type")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Required")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Description")))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"name"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Required"),(0,r.kt)("td",{parentName:"tr",align:null},"The title for the section")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"icon"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"An single icon to be displayed next to the title. See ",(0,r.kt)("a",{parentName:"td",href:"#sectionicon-and-sectionitemicon"},(0,r.kt)("inlineCode",{parentName:"a"},"section.icon")))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"items"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"array")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"An array of items to be displayed within the section. See ",(0,r.kt)("a",{parentName:"td",href:"#sectionitem"},(0,r.kt)("inlineCode",{parentName:"a"},"item")),". Sections must include either 1 or more items, or 1 or more widgets.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"widgets"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"array")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"An array of widgets to be displayed within the section. See ",(0,r.kt)("a",{parentName:"td",href:"#sectionwidget-optional"},(0,r.kt)("inlineCode",{parentName:"a"},"widget")))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"displayData"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"object")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Meta-data to optionally overide display settings for a given section. See ",(0,r.kt)("a",{parentName:"td",href:"#sectiondisplaydata-optional"},(0,r.kt)("inlineCode",{parentName:"a"},"displayData")))))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("h3",{id:"sectionitem"},(0,r.kt)("inlineCode",{parentName:"h3"},"section.item")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Field")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Type")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Required")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Description")))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"title"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Required"),(0,r.kt)("td",{parentName:"tr",align:null},"The text to display/ title of a given item. Max length ",(0,r.kt)("inlineCode",{parentName:"td"},"18"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"description"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Additional info about an item, which is shown in the tooltip on hover, or visible on large tiles")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"url"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Required"),(0,r.kt)("td",{parentName:"tr",align:null},"The URL / location of web address for when the item is clicked")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"icon"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"The icon for a given item. Can be a font-awesome icon, favicon, remote URL or local URL. See ",(0,r.kt)("a",{parentName:"td",href:"#sectionicon-and-sectionitemicon"},(0,r.kt)("inlineCode",{parentName:"a"},"item.icon")))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"target"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"The opening method for when the item is clicked, either ",(0,r.kt)("inlineCode",{parentName:"td"},"newtab"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"sametab"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"modal"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"workspace"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"clipboard"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"top")," or ",(0,r.kt)("inlineCode",{parentName:"td"},"parent"),". Where ",(0,r.kt)("inlineCode",{parentName:"td"},"newtab")," will open the link in a new tab, ",(0,r.kt)("inlineCode",{parentName:"td"},"sametab")," will open it in the current tab, and ",(0,r.kt)("inlineCode",{parentName:"td"},"modal")," will open a pop-up modal, ",(0,r.kt)("inlineCode",{parentName:"td"},"workspace")," will open in the Workspace view and ",(0,r.kt)("inlineCode",{parentName:"td"},"clipboard")," will copy the URL to system clipboard (but not launch app). Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"newtab"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"hotkey"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"number")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Give frequently opened applications a numeric hotkey, between ",(0,r.kt)("inlineCode",{parentName:"td"},"0 - 9"),". You can then just press that key to launch that application.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"tags"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string[]")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"A list of tags, which can be used for improved search")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"statusCheck"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"When set to ",(0,r.kt)("inlineCode",{parentName:"td"},"true"),", Dashy will ping the URL associated with the current service, and display its status as a dot next to the item. The value here will override ",(0,r.kt)("inlineCode",{parentName:"td"},"appConfig.statusCheck")," so you can turn off or on checks for a given service. Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"appConfig.statusCheck"),", falls back to ",(0,r.kt)("inlineCode",{parentName:"td"},"false"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"statusCheckUrl"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"If you've enabled ",(0,r.kt)("inlineCode",{parentName:"td"},"statusCheck"),", and want to use a different URL to what is defined under the item, then specify it here")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"statusCheckHeaders"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"object")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"If you're endpoint requires any specific headers for the status checking, then define them here")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"statusCheckAllowInsecure"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"By default, any request to insecure content will be blocked. Setting this option to ",(0,r.kt)("inlineCode",{parentName:"td"},"true")," will disable the ",(0,r.kt)("inlineCode",{parentName:"td"},"rejectUnauthorized")," option, enabling you to ping non-HTTPS services for the current item. Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"false"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"statusCheckAcceptCodes"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"If your service's response code is anything other than 2xx, then you can opt to specify an alternative success code. E.g. if you expect your server to return 403, but still want the status indicator to be green, set this value to ",(0,r.kt)("inlineCode",{parentName:"td"},"403"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"statusCheckMaxRedirects"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"number")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"If your service redirects to another page, and you would like status checks to follow redirects, then specify the maximum number of redirects here. Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"0")," / will not follow redirects")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"color"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"An optional color for the text and font-awesome icon to be displayed in. Note that this will override the current theme and so may not display well")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"backgroundColor"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"An optional background fill color for the that given item. Again, this will override the current theme and so might not display well against the background")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"provider"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"The name of the provider for a given service, useful for when including hosted apps. In some themes, this is visible under the item name")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"displayData"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"object")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Meta-data to optionally overide display settings for a given item. See ",(0,r.kt)("a",{parentName:"td",href:"#itemdisplaydata-optional"},(0,r.kt)("inlineCode",{parentName:"a"},"displayData")))))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("h3",{id:"itemdisplaydata-optional"},(0,r.kt)("inlineCode",{parentName:"h3"},"item.displayData")," ",(0,r.kt)("em",{parentName:"h3"},"(optional)")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Field")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Type")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Required")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Description")))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"hideForUsers"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string[]")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Current item will be visible to all users, except for those specified in this list")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"showForUsers"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string[]")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Current item will be hidden from all users, except for those specified in this list")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"hideForGuests"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Current item will be visible for logged in users, but not for guests (see ",(0,r.kt)("inlineCode",{parentName:"td"},"appConfig.enableGuestAccess"),"). Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"false"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"hideForKeycloakUsers"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"object")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Current item will be visible to all keycloak users, except for those configured via these groups and roles. See ",(0,r.kt)("inlineCode",{parentName:"td"},"hideForKeycloakUsers"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"showForKeycloakUsers"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"object")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Current item will be hidden from all keycloak users, except for those configured via these groups and roles. See ",(0,r.kt)("inlineCode",{parentName:"td"},"showForKeycloakUsers"))))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("h3",{id:"sectionwidget-optional"},(0,r.kt)("inlineCode",{parentName:"h3"},"section.widget")," ",(0,r.kt)("em",{parentName:"h3"},"(optional)")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Field")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Type")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Required")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Description")))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"type"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},"Required"),(0,r.kt)("td",{parentName:"tr",align:null},"The widget type. See ",(0,r.kt)("a",{parentName:"td",href:"/docs/widgets"},"Widget Docs")," for full list of supported widgets")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"options"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"object")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Some widgets accept either optional or required additional options. Again, see the ",(0,r.kt)("a",{parentName:"td",href:"/docs/widgets"},"Widget Docs")," for full list of options")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"updateInterval"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"number")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"You can keep a widget constantly updated by specifying an update interval, in seconds. See ",(0,r.kt)("a",{parentName:"td",href:"/docs/widgets#continuous-updates"},"Continuous Updates Docs")," for more info")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"useProxy"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Some widgets make API requests to services that are not CORS-enabled. For these instances, you will need to route requests through a proxy, Dashy has a built in CORS-proxy, which you can use by setting this option to ",(0,r.kt)("inlineCode",{parentName:"td"},"true"),". Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"false"),". See the ",(0,r.kt)("a",{parentName:"td",href:"/docs/widgets#proxying-requests"},"Proxying Requests Docs")," for more info")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"timeout"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"number")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Request timeout in milliseconds, defaults to \xbd a second (",(0,r.kt)("inlineCode",{parentName:"td"},"500"),")")))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("h3",{id:"sectiondisplaydata-optional"},(0,r.kt)("inlineCode",{parentName:"h3"},"section.displayData")," ",(0,r.kt)("em",{parentName:"h3"},"(optional)")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Field")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Type")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Required")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Description")))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"sortBy"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"The sort order for items within the current section. By default items are displayed in the order in which they are listed in within the config. The following sort options are supported: ",(0,r.kt)("inlineCode",{parentName:"td"},"most-used")," (most opened apps first), ",(0,r.kt)("inlineCode",{parentName:"td"},"last-used")," (the most recently used apps), ",(0,r.kt)("inlineCode",{parentName:"td"},"alphabetical"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"reverse-alphabetical"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"random")," and ",(0,r.kt)("inlineCode",{parentName:"td"},"default"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"collapsed"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"If true, the section will be collapsed initially, and will need to be clicked to open. Useful for less regularly used, or very long sections. Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"false"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"cutToHeight"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"By default, sections will fill available space. Set this option to true to match section height with content height")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"rows"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"number")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Height of the section, specified as the number of rows it should span vertically, e.g. ",(0,r.kt)("inlineCode",{parentName:"td"},"2"),". Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"1"),". Max is ",(0,r.kt)("inlineCode",{parentName:"td"},"5"),".")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"cols"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"number")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Width of the section, specified as the number of columns the section should span horizontally, e.g. ",(0,r.kt)("inlineCode",{parentName:"td"},"2"),". Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"1"),". Max is ",(0,r.kt)("inlineCode",{parentName:"td"},"5"),".")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"itemSize"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Specify the size for items within this group, either ",(0,r.kt)("inlineCode",{parentName:"td"},"small"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"medium")," or ",(0,r.kt)("inlineCode",{parentName:"td"},"large"),". Note that this will overide any settings specified through the UI")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"color"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"A custom accent color for the section, as a hex code or HTML color (e.g. ",(0,r.kt)("inlineCode",{parentName:"td"},"#fff"),")")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"customStyles"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Custom CSS properties that should be applied to that section, e.g. ",(0,r.kt)("inlineCode",{parentName:"td"},"border: 2px dashed #ff0000;"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"sectionLayout"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Specify which CSS layout will be used to responsivley place items. Can be either ",(0,r.kt)("inlineCode",{parentName:"td"},"auto")," (which uses flex layout), or ",(0,r.kt)("inlineCode",{parentName:"td"},"grid"),". If ",(0,r.kt)("inlineCode",{parentName:"td"},"grid")," is selected, then ",(0,r.kt)("inlineCode",{parentName:"td"},"itemCountX")," and ",(0,r.kt)("inlineCode",{parentName:"td"},"itemCountY")," may also be set. Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"auto"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"itemCountX"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"number")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"The number of items to display per row / horizontally. If not set, it will be calculated automatically based on available space. Can only be set if ",(0,r.kt)("inlineCode",{parentName:"td"},"sectionLayout")," is set to ",(0,r.kt)("inlineCode",{parentName:"td"},"grid"),". Must be a whole number between ",(0,r.kt)("inlineCode",{parentName:"td"},"1")," and ",(0,r.kt)("inlineCode",{parentName:"td"},"12"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"itemCountY"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"number")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"The number of items to display per column / vertically. If not set, it will be calculated automatically based on available space. If ",(0,r.kt)("inlineCode",{parentName:"td"},"itemCountX")," is set, then ",(0,r.kt)("inlineCode",{parentName:"td"},"itemCountY")," can be calculated automatically. Can only be set if ",(0,r.kt)("inlineCode",{parentName:"td"},"sectionLayout")," is set to ",(0,r.kt)("inlineCode",{parentName:"td"},"grid"),". Must be a whole number between ",(0,r.kt)("inlineCode",{parentName:"td"},"1")," and ",(0,r.kt)("inlineCode",{parentName:"td"},"12"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"hideForUsers"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string[]")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Current section will be visible to all users, except for those specified in this list")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"showForUsers"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string[]")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Current section will be hidden from all users, except for those specified in this list")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"hideForGuests"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"boolean")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Current section will be visible for logged in users, but not for guests (see ",(0,r.kt)("inlineCode",{parentName:"td"},"appConfig.enableGuestAccess"),"). Defaults to ",(0,r.kt)("inlineCode",{parentName:"td"},"false"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"hideForKeycloakUsers"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"object")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Current section will be visible to all keycloak users, except for those configured via these groups and roles. See ",(0,r.kt)("inlineCode",{parentName:"td"},"hideForKeycloakUsers"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"showForKeycloakUsers"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"object")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Current section will be hidden from all keycloak users, except for those configured via these groups and roles. See ",(0,r.kt)("inlineCode",{parentName:"td"},"showForKeycloakUsers"))))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("h3",{id:"sectionicon-and-sectionitemicon"},(0,r.kt)("inlineCode",{parentName:"h3"},"section.icon")," and ",(0,r.kt)("inlineCode",{parentName:"h3"},"section.item.icon")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Field")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Type")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Required")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Description")))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"icon"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"The icon for a given item or section. ",(0,r.kt)("br",null),"See ",(0,r.kt)("a",{parentName:"td",href:"/docs/icons"},"Icon Docs")," for all available supported icon types, including: auto-fetched favicons, generative icons, emoji icons, home-lab service logos, font-awesome, simple-icons, material icons, and icons specified by URL")))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("h3",{id:"sectiondisplaydatahideforkeycloakusers-sectiondisplaydatashowforkeycloakusers-itemdisplaydatahideforkeycloakusers-and-itemdisplaydatashowforkeycloakusers"},(0,r.kt)("inlineCode",{parentName:"h3"},"section.displayData.hideForKeycloakUsers"),", ",(0,r.kt)("inlineCode",{parentName:"h3"},"section.displayData.showForKeycloakUsers"),", ",(0,r.kt)("inlineCode",{parentName:"h3"},"item.displayData.hideForKeycloakUsers")," and ",(0,r.kt)("inlineCode",{parentName:"h3"},"item.displayData.showForKeycloakUsers")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Field")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Type")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Required")),(0,r.kt)("th",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"th"},"Description")))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"groups"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string[]")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Current Section or Item will be hidden or shown based on the user having any of the groups in this list")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},(0,r.kt)("inlineCode",{parentName:"strong"},"roles"))),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"string[]")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("em",{parentName:"td"},"Optional")),(0,r.kt)("td",{parentName:"tr",align:null},"Current Section or Item will be hidden or shown based on the user having any of the roles in this list")))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"notes"},"Notes"),(0,r.kt)("h3",{id:"editing-config-through-the-ui"},"Editing Config through the UI"),(0,r.kt)("p",null,"Config can be modified directly through the UI, and then written to disk, or applied locally. This can be done wither with the raw config editor (introduced in V 0.6.5 / ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/pull/3"},"#3"),"), or the interactive editor (introduced in V 1.8.9 / ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/pull/298"},"#298"),")."),(0,r.kt)("p",{align:"center"},(0,r.kt)("a",{href:"https://ibb.co/CzkyMNb"},(0,r.kt)("b",null,"Interactive Editor"),(0,r.kt)("br",null),(0,r.kt)("img",{alt:"Interactive Editor demo",src:"https://user-images.githubusercontent.com/1862727/139543020-b0576d28-0830-476f-afc8-a815d4de6def.gif",width:"600"})),(0,r.kt)("br",null),(0,r.kt)("a",{href:"https://ibb.co/zRv542H"},(0,r.kt)("b",null,"JSON Editor"),(0,r.kt)("br",null),(0,r.kt)("img",{alt:"Config Editor demo",src:"https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/config-editor-demo.gif",width:"600"}))),(0,r.kt)("h3",{id:"about-yaml"},"About YAML"),(0,r.kt)("p",null,"If you're new to YAML, it's pretty straight-forward. The format is exactly the same as that of JSON, but instead of using curly braces, structure is denoted using whitespace. This ",(0,r.kt)("a",{parentName:"p",href:"https://linuxhandbook.com/yaml-basics/"},"quick guide")," should get you up to speed in a few minutes, for more advanced topics take a look at this ",(0,r.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/YAML"},"Wikipedia article"),"."),(0,r.kt)("h3",{id:"config-saving-methods"},"Config Saving Methods"),(0,r.kt)("p",null,"When updating the config through the JSON editor in the UI, you have two save options: ",(0,r.kt)("strong",{parentName:"p"},"Local")," or ",(0,r.kt)("strong",{parentName:"p"},"Write to Disk"),"."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Changes saved locally will only be applied to the current user through the browser, and will not apply to other instances - you either need to use the cloud sync feature, or manually update the conf.yml file."),(0,r.kt)("li",{parentName:"ul"},"On the other-hand, if you choose to write changes to disk, then your main ",(0,r.kt)("inlineCode",{parentName:"li"},"conf.yml")," file will be updated, and changes will be applied to all users, and visible across all devices. For this functionality to work, you must be running Dashy with using the Docker container, or the Node server. A backup of your current configuration will also be saved in the same directory. ")),(0,r.kt)("h3",{id:"preventing-changes"},"Preventing Changes"),(0,r.kt)("p",null,"If you have authentication set up, then any user who is not an admin (with ",(0,r.kt)("inlineCode",{parentName:"p"},"type: admin"),") will not be able to write changes to disk."),(0,r.kt)("p",null,"You can also prevent changes from any user being written to disk, using ",(0,r.kt)("inlineCode",{parentName:"p"},"preventWriteToDisk"),". Or prevent any changes from being saved locally in browser storage, using ",(0,r.kt)("inlineCode",{parentName:"p"},"preventLocalSave"),"."),(0,r.kt)("p",null,"To disable all UI config features, set ",(0,r.kt)("inlineCode",{parentName:"p"},"disableConfiguration"),"."),(0,r.kt)("h3",{id:"example"},"Example"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"---\npageInfo:\n title: Home Lab\nsections: # An array of sections\n- name: Section 1 - Getting Started\n items: # An array of items\n - title: GitHub\n description: Source code and documentation on GitHub\n icon: fab fa-github\n url: https://github.com/Lissy93/dashy\n - title: Issues\n description: View currently open issues, or raise a new one\n icon: fas fa-bug\n url: https://github.com/Lissy93/dashy/issues\n - title: Demo\n description: A live demo\n icon: far fa-rocket\n url: https://dashy-demo-1.netlify.app \n- name: Section 2 - Local Services\n items:\n - title: Firewall\n icon: favicon\n url: http://192.168.1.1/\n - title: Game Server\n icon: https://i.ibb.co/710B3Yc/space-invader-x256.png\n url: http://192.168.130.1/\n")),(0,r.kt)("p",null,"For more example config files, see: ",(0,r.kt)("a",{parentName:"p",href:"https://gist.github.com/Lissy93/000f712a5ce98f212817d20bc16bab10"},"this gist")),(0,r.kt)("p",null,"If you need any help, feel free to ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/issues/new?assignees=Lissy93&labels=%F0%9F%A4%B7%E2%80%8D%E2%99%82%EF%B8%8F+Question&template=question.md&title=%5BQUESTION%5D"},"Raise an Issue")," or ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/discussions"},"Start a Discussion")),(0,r.kt)("p",null,"Happy Configuring \ud83e\udd13\ud83d\udd27"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#"},"\u2b06\ufe0f Back to Top"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4d54d076.925cbe0c.js b/assets/js/4d54d076.925cbe0c.js new file mode 100644 index 00000000..79fb4d96 --- /dev/null +++ b/assets/js/4d54d076.925cbe0c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[80],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var s=a(7294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,s)}return a}function i(e){for(var t=1;t=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(s=0;s=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var l=s.createContext({}),h=function(e){var t=s.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=h(e.components);return s.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return s.createElement(s.Fragment,{},t)}},c=s.forwardRef((function(e,t){var a=e.components,o=e.mdxType,r=e.originalType,l=e.parentName,p=n(e,["components","mdxType","originalType","parentName"]),u=h(a),c=o,m=u["".concat(l,".").concat(c)]||u[c]||d[c]||r;return a?s.createElement(m,i(i({ref:t},p),{},{components:a})):s.createElement(m,i({ref:t},p))}));function m(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=a.length,i=new Array(r);i[0]=c;var n={};for(var l in t)hasOwnProperty.call(t,l)&&(n[l]=t[l]);n.originalType=e,n[u]="string"==typeof e?e:o,i[1]=n;for(var h=2;h{a.r(t),a.d(t,{contentTitle:()=>i,default:()=>u,frontMatter:()=>r,metadata:()=>n,toc:()=>l});var s=a(7462),o=(a(7294),a(3905));const r={},i="Contributing",n={unversionedId:"contributing",id:"contributing",isDocsHomePage:!1,title:"Contributing",description:"First off, thank you for considering contributing towards Dashy! \ud83d\ude4c",source:"@site/docs/contributing.md",sourceDirName:".",slug:"/contributing",permalink:"/docs/contributing",editUrl:"https://github.com/Lissy93/dashy/edit/gh-pages/docs/docs/contributing.md",version:"current",frontMatter:{},sidebar:"dashySidebar",previous:{title:"Showcase \ud83c\udf1f",permalink:"/docs/showcase"},next:{title:"Developing",permalink:"/docs/developing"}},l=[{value:"Take a 2-minute survey",id:"take-a-2-minute-survey",children:[]},{value:"Share your dashboard",id:"share-your-dashboard",children:[]},{value:"Make a small donation",id:"make-a-small-donation",children:[]},{value:"Enable Anonymous Bug Reports",id:"enable-anonymous-bug-reports",children:[]},{value:"Add Translations",id:"add-translations",children:[]},{value:"Submit a PR",id:"submit-a-pr",children:[]},{value:"Improve the Docs",id:"improve-the-docs",children:[]},{value:"Raise a bug",id:"raise-a-bug",children:[]},{value:"Join the discussion",id:"join-the-discussion",children:[]},{value:"Request a feature via BountySource",id:"request-a-feature-via-bountysource",children:[]},{value:"Spread the word",id:"spread-the-word",children:[]},{value:"Star, Upvote or Leave a Review",id:"star-upvote-or-leave-a-review",children:[]},{value:"Follow for More",id:"follow-for-more",children:[{value:"Contributors",id:"contributors",children:[]},{value:"Star-Gazers Over Time",id:"star-gazers-over-time",children:[]}]}],h={toc:l},p="wrapper";function u(e){let{components:t,...a}=e;return(0,o.kt)(p,(0,s.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"contributing"},"Contributing"),(0,o.kt)("p",null,"First off, thank you for considering contributing towards Dashy! \ud83d\ude4c\nThere are several ways that you can help out, and any contributions, however small will always be very much appreciated.\nYou will be appropriately credited in the readme - huge thank you to ",(0,o.kt)("a",{parentName:"p",href:"/docs/credits"},"everyone who has helped")," so far \ud83d\udc9e"),(0,o.kt)("h2",{id:"take-a-2-minute-survey"},"Take a 2-minute survey"),(0,o.kt)("p",null,"Help improve Dashy by taking a very short, 6-question survey. This will give me a better understanding of what is important to you, so that I can make Dashy better in the future :)"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://survey.typeform.com/to/gl0L68ou"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/badge/Take_the-Survey-%231a86fd?style=for-the-badge&logo=buddy",alt:"Take the Survey"}))),(0,o.kt)("h2",{id:"share-your-dashboard"},"Share your dashboard"),(0,o.kt)("p",null,"Dashy now has a ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/blob/master/docs/showcase.md#dashy-showcase-"},"Showcase")," where you can show off a screenshot of your dashboard, and get inspiration from other users (and I really love seeing how people are using Dashy). To ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/blob/master/docs/showcase.md#submitting-your-dashboard"},"submit your dashboard"),", either open a PR or raise an issue."),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/issues/new?assignees=&labels=%F0%9F%92%AF+Showcase&template=showcase-addition.yml&title=%5BSHOWCASE%5D+%3Ctitle%3E"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/badge/Add_your_Dashboard-Showcase-%238616ee?style=for-the-badge&logo=feathub&logoColor=8616ee",alt:"Add your Dashboard to the Showcase"}))),(0,o.kt)("h2",{id:"make-a-small-donation"},"Make a small donation"),(0,o.kt)("p",null,"Donations help to cover server costs, development time and caffeine ;)\nDon't feel any pressure to donate anything, as Dashy and my other projects will always be 100% free, for everyone, for ever."),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://github.com/sponsors/Lissy93"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/badge/Sponsor_on_GitHub-Lissy93-%23ff4dda?style=for-the-badge&logo=githubsponsors&logoColor=ff4dda",alt:"Sponsor Lissy93 on GitHub"}))),(0,o.kt)("p",null,"Sponsoring will give you several perks - for $1 / \xa30.75 per month, you'll get a sponsor badge on your profile, be credited on the Dashy's readme, with a link to your website/ profile/ socials, get priority support, have your feature ideas implemented, plus lots more. For more info, see ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/sponsors/Lissy93"},"@Lissy93's Sponsor Page"),"."),(0,o.kt)("h2",{id:"enable-anonymous-bug-reports"},"Enable Anonymous Bug Reports"),(0,o.kt)("p",null,"Bug reports helps me to discover bugs I was unaware of, and then fix them, in order to make Dashy more reliable long term. This is a simple, yet really helpful step you can take to help improve Dashy. ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/getsentry/sentry"},"Sentry")," is an open source error tracking and performance monitoring tool, which enables the identification any errors which occur in the production app (only if you enable it). "),(0,o.kt)("p",null,"To enable error reporting:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-yaml"},"appConfig:\n enableErrorReporting: true\n")),(0,o.kt)("p",null,"All reporting is ",(0,o.kt)("strong",{parentName:"p"},"disabled")," by default, and no data will ever be sent to any external endpoint without your explicit consent. All statistics are anonomized and stored securely. For more about privacy and security, see the ",(0,o.kt)("a",{parentName:"p",href:"https://sentry.io/security/"},"Sentry Security Docs"),"."),(0,o.kt)("h2",{id:"add-translations"},"Add Translations"),(0,o.kt)("p",null,"If you speak another language, then adding translations will help make Dashy available to non-native English speakers. This is a very quick and easy task, as all application text is located in ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/blob/master/src/assets/locales/en.json"},(0,o.kt)("inlineCode",{parentName:"a"},"locales/en.json")),", so adding a new language is as simple as copying this file and translating the values. You don't have to translate it all, as any missing attributes will just fallback to English. For a full tutorial, see the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/blob/master/docs/multi-language-support.md"},"Multi-Language Support Docs"),"."),(0,o.kt)("h2",{id:"submit-a-pr"},"Submit a PR"),(0,o.kt)("p",null,"Contributing to the code or docs is super helpful. You can fix a bug, add a new feature or improve an existing one. If you've built your own custom widget, theme or view, consider sharing it in a PR. I've written ",(0,o.kt)("a",{parentName:"p",href:"/docs/development-guides"},"several guides")," to help you get started, and the steps for setting up the development environment are outlined in the ",(0,o.kt)("a",{parentName:"p",href:"/docs/developing"},"Development Docs"),". Feel free to ask if you have any questions."),(0,o.kt)("h2",{id:"improve-the-docs"},"Improve the Docs"),(0,o.kt)("p",null,"Found a typo, or something that isn't as clear as it could be? Maybe I've missed something off altogether, or you hit a roadblock that took you a while to figure out. Submitting a pull request to add to or improve the documentation will help future users get Dashy up and running more easily.\nAll content is located either in the ",(0,o.kt)("a",{parentName:"p",href:"/README"},(0,o.kt)("inlineCode",{parentName:"a"},"./README"))," or ",(0,o.kt)("a",{parentName:"p",href:"/docs"},(0,o.kt)("inlineCode",{parentName:"a"},"/docs/"))," directory, and synced to the Wiki and website using a GH ",(0,o.kt)("a",{parentName:"p",href:"/actions/workflows/wiki-sync.yml"},"action"),"."),(0,o.kt)("h2",{id:"raise-a-bug"},"Raise a bug"),(0,o.kt)("p",null,"If you've found a bug, then please do raise it as an issue. This will help me know if there's something that needs fixing. Try and include as much detail as possible, such as your environment, steps to reproduce, any console output and maybe an example screenshot or recording if necessary."),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/issues/new?assignees=lissy93&labels=%F0%9F%90%9B+Bug&template=bug.yml&title=%5BBUG%5D+%3Ctitle%3E"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/badge/Raise_a-Bug-%23dc2d76?style=for-the-badge&logo=dependabot",alt:"Raise a Bug"}))),(0,o.kt)("h2",{id:"join-the-discussion"},"Join the discussion"),(0,o.kt)("p",null,"I've enabled the discussion feature on GitHub, here you can share tips and tricks, useful information, or your dashboard. You can also ask questions, and offer basic support to other users."),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/discussions"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/badge/Join_the-Discussion-%23ffd000?style=for-the-badge&logo=livechat",alt:"Join the Discussion on GitHub"}))),(0,o.kt)("h2",{id:"request-a-feature-via-bountysource"},"Request a feature via BountySource"),(0,o.kt)("p",null,"BountySource is a platform for sponsoring the development of certain features on open source projects. If there is a feature you'd like implemented into Dashy, but either isn't high enough priority or is deemed to be more work than it's worth, then you can instead contribute a bounty towards it's development. You won't pay a penny until your proposal is fully built, and you are satisfied with the result. This helps support the developers, and makes Dashy better for everyone."),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://www.bountysource.com/teams/dashy"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/badge/BountySource-Dashy-%23F67909?style=for-the-badge&logo=openbugbounty",alt:"Request a Feature on BountySource"}))),(0,o.kt)("h2",{id:"spread-the-word"},"Spread the word"),(0,o.kt)("p",null,"Dashy is still a relatively young project, and as such not many people know of it. It would be great to see more users, and so it would be awesome if you could consider sharing with your friends or on social platforms."),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://mastodon.social/?text=Check%20out%20Dashy%2C%20the%20privacy-friendly%2C%20self-hosted%20startpage%20for%20organizing%20your%20life%3A%20https%3A%2F%2Fgithub.com%2FLissy93%2Fdashy%20-%20By%20%40lissy93%40mastodon.social"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/badge/Share-Mastodon-%232b90d9?style=flat-square&logo=mastodon",alt:"Share Dashy on Mastodon"})),"\n",(0,o.kt)("a",{parentName:"p",href:"http://www.reddit.com/submit?url=https://github.com/Lissy93/dashy&title=Dashy%20-%20The%20self-hosted%20dashboard%20for%20your%20homelab%20%F0%9F%9A%80"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/badge/Share-Reddit-%23FF5700?style=flat-square&logo=reddit",alt:"Share Dashy on Reddit"})),"\n",(0,o.kt)("a",{parentName:"p",href:"https://twitter.com/intent/tweet?url=https://github.com/lissy93/dashy&text=Check%20out%20Dashy%20by%20@Lissy_Sykes,%20the%20self-hosted%20dashboard%20for%20your%20homelab%20%F0%9F%9A%80"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/badge/Share-Twitter-%231DA1F2?style=flat-square&logo=twitter",alt:"Share Dashy on Twitter"})),"\n",(0,o.kt)("a",{parentName:"p",href:"https://www.facebook.com/sharer/sharer.php?u=https://github.com/lissy93/dashy"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/badge/Share-Facebook-%234267B2?style=flat-square&logo=facebook",alt:"Share Dashy on Facebook"})),"\n",(0,o.kt)("a",{parentName:"p",href:"https://www.linkedin.com/shareArticle?mini=true&url=https://github.com/lissy93/dashy"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/badge/Share-LinkedIn-%230077b5?style=flat-square&logo=linkedin",alt:"Share Dashy on LinkedIn"})),"\n",(0,o.kt)("a",{parentName:"p",href:"https://pinterest.com/pin/create/button/?url=https://github.com/lissy93/dashy&media=https://raw.githubusercontent.com/Lissy93/dashy/master/docs/showcase/1-home-lab-material.png&description=Check%20out%20Dashy,%20the%20self-hosted%20dashboard%20for%20your%20homelab%20%F0%9F%9A%80"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/badge/Share-Pinterest-%23E60023?style=flat-square&logo=pinterest",alt:"Share Dashy on Pinterest"})),"\n",(0,o.kt)("a",{parentName:"p",href:"https://vk.com/share.php?url=https%3A%2F%2Fgithub.com%2Flissy93%2Fdashy%2F&title=Check%20out%20Dashy%20-%20The%20Self-Hosted%20Dashboard%20for%20your%20Homelab%20%F0%9F%9A%80"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/badge/Share-VK-%234C75A3?style=flat-square&logo=vk",alt:"Share Dashy on VK"})),"\n",(0,o.kt)("a",{parentName:"p",href:"viber://forward?text=https%3A%2F%2Fgithub.com%2Flissy93%2Fdashy%0ACheck%20out%20Dashy%2C%20the%20self-hosted%20dashboard%20for%20your%20homelab%20%F0%9F%9A%80"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/badge/Share-Viber-%238176d6?style=flat-square&logo=viber",alt:"Share Dashy via Viber"})),"\n",(0,o.kt)("a",{parentName:"p",href:"https://t.me/share/url?url=https%3A%2F%2Fgithub.com%2Flissy93%2Fdashy&text=Check%20out%20Dashy%2C%20the%20self-hosted%20dashboard%20for%20your%20homelab%20%F0%9F%9A%80"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/badge/Share-Telegram-%230088cc?style=flat-square&logo=telegram",alt:"Share Dashy via Telegram"})),"\n",(0,o.kt)("a",{parentName:"p",href:"mailto:info@example.com?&subject=Check%20out%20Dashy%20-%20The%20self-hosted%20dashboard%20for%20your%20homelab%20%F0%9F%9A%80&cc=&bcc=&body=https://github.com/lissy93/dashy"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/badge/Share-Email-%238A90C7?style=flat-square&logo=protonmail",alt:"Share Dashy via Email"}))),(0,o.kt)("h2",{id:"star-upvote-or-leave-a-review"},"Star, Upvote or Leave a Review"),(0,o.kt)("p",null,"Dashy is on the following platforms, and if you could spare a few seconds to give it an upvote or review, this will also help new users discover Dashy"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://www.producthunt.com/posts/dashy"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/badge/Review-ProductHunt-%23b74424?style=flat-square&logo=producthunt",alt:"ProductHunt"})),"\n",(0,o.kt)("a",{parentName:"p",href:"https://alternativeto.net/software/dashy/about/"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/badge/Review-AlternativeTo-%235581a6?style=flat-square&logo=abletonlive",alt:"AlternativeTo"})),"\n",(0,o.kt)("a",{parentName:"p",href:"https://www.slant.co/improve/topics/27783/viewpoints/1/~self-hosted-homelab-startpage~dashy"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/badge/Review-Slant-%2346a1df?style=flat-square&logo=capacitor",alt:"Slant"})),"\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/Lissy93/dashy/stargazers"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/github/stars/Lissy93/Dashy?color=ba96d6&label=Star%20-%20GitHub&logo=github&style=flat-square",alt:"Star on GitHub"})),"\n",(0,o.kt)("a",{parentName:"p",href:"https://hub.docker.com/r/lissy93/dashy"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/docker/stars/lissy93/dashy?color=4cb6e0&label=Star%20-%20Docker&logo=docker&style=flat-square",alt:"Star on DockerHub"}))),(0,o.kt)("h2",{id:"follow-for-more"},"Follow for More"),(0,o.kt)("p",null,"If you've enjoyed Dashy, you can follow the me to get updates about other projects that I am working on."),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://twitter.com/Lissy_Sykes"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/twitter/follow/Lissy_Sykes?style=social&logo=twitter",alt:"Alicia Sykes on Twitter"})),"\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/Lissy93"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/github/followers/lissy93?label=Lissy93&style=social",alt:"Alicia Sykes on GitHub"})),"\n",(0,o.kt)("a",{parentName:"p",href:"https://mastodon.social/web/accounts/1032965"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/mastodon/follow/1032965?domain=https%3A%2F%2Fmastodon.social",alt:"Alicia Sykes on Mastodon"})),"\n",(0,o.kt)("a",{parentName:"p",href:"https://keybase.io/aliciasykes"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/badge/aliciasykes--lightgrey?style=social&logo=Keybase",alt:"Alicia Sykes on Keybase"})),"\n",(0,o.kt)("a",{parentName:"p",href:"https://aliciasykes.com"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/badge/aliciasykes.com--lightgrey?style=social&logo=Tencent%20QQ",alt:"Alicia Sykes's Website"})),"\n",(0,o.kt)("a",{parentName:"p",href:"https://notes.aliciasykes.com/"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/badge/Blog--lightgrey?style=social&logo=micro.blog",alt:"Alicia Sykes's Blog"})),"\n",(0,o.kt)("a",{parentName:"p",href:"https://keybase.io/aliciasykes/pgp_keys.asc"},(0,o.kt)("img",{parentName:"a",src:"https://img.shields.io/badge/PGP--lightgrey?style=social&logo=Let%E2%80%99s%20Encrypt",alt:"Alicia Sykes's PGP"}))),(0,o.kt)("p",null,"If you like, you could also consider ",(0,o.kt)("a",{parentName:"p",href:"https://notes.aliciasykes.com/subscribe"},"subscribing to my mailing list")," for occasional blog post updates."),(0,o.kt)("hr",null),(0,o.kt)("h3",{id:"contributors"},"Contributors"),(0,o.kt)("p",null,"For a full list of Dashy's contributors, see the ",(0,o.kt)("a",{parentName:"p",href:"/docs/credits"},"Credits Page")),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/docs/credits"},(0,o.kt)("img",{parentName:"a",src:"https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/CONTRIBUTORS.svg",alt:"Auto-generated contributors"}))),(0,o.kt)("h3",{id:"star-gazers-over-time"},"Star-Gazers Over Time"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://seladb.github.io/StarTrack-js/#/preload?r=Lissy93,dashy"},(0,o.kt)("img",{parentName:"a",src:"https://starchart.cc/Lissy93/dashy.svg",alt:"Stargazers"}))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4d54d076.d63fea3e.js b/assets/js/4d54d076.d63fea3e.js deleted file mode 100644 index c9110b40..00000000 --- a/assets/js/4d54d076.d63fea3e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[80],{3905:function(e,t,a){a.d(t,{Zo:function(){return u},kt:function(){return c}});var s=a(7294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,s)}return a}function i(e){for(var t=1;t=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(s=0;s=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var l=s.createContext({}),h=function(e){var t=s.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},u=function(e){var t=h(e.components);return s.createElement(l.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return s.createElement(s.Fragment,{},t)}},d=s.forwardRef((function(e,t){var a=e.components,o=e.mdxType,r=e.originalType,l=e.parentName,u=n(e,["components","mdxType","originalType","parentName"]),d=h(a),c=o,m=d["".concat(l,".").concat(c)]||d[c]||p[c]||r;return a?s.createElement(m,i(i({ref:t},u),{},{components:a})):s.createElement(m,i({ref:t},u))}));function c(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=a.length,i=new Array(r);i[0]=d;var n={};for(var l in t)hasOwnProperty.call(t,l)&&(n[l]=t[l]);n.originalType=e,n.mdxType="string"==typeof e?e:o,i[1]=n;for(var h=2;h=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),u=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=u(e.components);return a.createElement(s.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=u(n),m=r,h=d["".concat(s,".").concat(m)]||d[m]||p[m]||i;return n?a.createElement(h,o(o({ref:t},c),{},{components:n})):a.createElement(h,o({ref:t},c))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var u=2;u{a.d(t,{Zo:()=>u,kt:()=>h});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=n.createContext({}),c=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},u=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(a),m=r,h=p["".concat(s,".").concat(m)]||p[m]||d[m]||i;return a?n.createElement(h,o(o({ref:t},u),{},{components:a})):n.createElement(h,o({ref:t},u))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:r,o[1]=l;for(var c=2;c{a.r(t),a.d(t,{contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var n=a(7462),r=(a(7294),a(3905));const i={},o=void 0,l={unversionedId:"readme",id:"readme",isDocsHomePage:!1,title:"readme",description:"Dashy Docs",source:"@site/docs/readme.md",sourceDirName:".",slug:"/readme",permalink:"/docs/readme",editUrl:"https://github.com/Lissy93/dashy/edit/gh-pages/docs/docs/readme.md",version:"current",frontMatter:{}},s=[{value:"Running Dashy",id:"running-dashy",children:[]},{value:"Development and Contributing",id:"development-and-contributing",children:[]},{value:"Feature Docs",id:"feature-docs",children:[]},{value:"Misc",id:"misc",children:[]}],c={toc:s},u="wrapper";function p(e){let{components:t,...a}=e;return(0,r.kt)(u,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://i.ibb.co/4mdNf7M/heading-docs.png",alt:"Dashy Docs"})),(0,r.kt)("h3",{id:"running-dashy"},"Running Dashy"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/quick-start"},"Quick Start")," - TDLR guide on getting Dashy up and running"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/deployment"},"Deployment")," - Full guide on deploying Dashy either locally or online"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/configuring"},"Configuring")," - Complete list of all available options in the config file"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/management"},"App Management")," - Managing your app, updating, security, web server configuration, etc"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/troubleshooting"},"Troubleshooting")," - Common errors and problems, and how to fix them")),(0,r.kt)("h3",{id:"development-and-contributing"},"Development and Contributing"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/developing"},"Developing")," - Running Dashy development server locally, and general workflow"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/development-guides"},"Development Guides")," - Common development tasks, to help new contributors"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/contributing"},"Contributing")," - How you can help keep Dashy alive"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/showcase"},"Showcase")," - See how others are using Dashy, and share your dashboard"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/credits"},"Credits")," - List of people and projects that have made Dashy possible"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/release-workflow"},"Release Workflow")," - Info about releases, CI and automated tasks")),(0,r.kt)("h3",{id:"feature-docs"},"Feature Docs"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/authentication"},"Authentication")," - Guide to setting up authentication to protect your dashboard"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/alternate-views"},"Alternate Views")," - Outline of available pages / views and item opening methods"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/backup-restore"},"Backup & Restore")," - Guide to backing up config with Dashy's cloud sync feature"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/icons"},"Icons")," - Outline of all available icon types for sections and items, with examples"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/multi-language-support"},"Language Switching")," - Details on how to switch language, or add a new locale"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/pages-and-sections"},"Pages and Sections")," - Multi-page support, sections, items and sub-items"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/status-indicators"},"Status Indicators")," - Using Dashy to monitor uptime and status of your apps"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/searching"},"Searching & Shortcuts")," - Searching, launching methods + keyboard shortcuts"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/theming"},"Theming")," - Complete guide to applying, writing and modifying themes + styles"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/widgets"},"Widgets")," - List of all dynamic content widgets, with usage guides and examples")),(0,r.kt)("h3",{id:"misc"},"Misc"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/privacy"},"Privacy & Security")," - List of requests, potential issues, and security resources"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/LICENSE"},"License")," - Copy of the MIT License"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/.github/LEGAL"},"Legal")," - Licenses of direct dependencies"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/.github/CODE_OF_CONDUCT"},"Code of Conduct")," - Contributor Covenant Code of Conduct"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/.github/CHANGELOG"},"Changelog")," - Details of recent changes, and historical versions")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/608.3a1d3896.js b/assets/js/608.3a1d3896.js new file mode 100644 index 00000000..ff001024 --- /dev/null +++ b/assets/js/608.3a1d3896.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[608],{4608:(e,t,a)=>{a.r(t),a.d(t,{default:()=>r});var n=a(7294),o=a(6402),l=a(4973);const r=function(){return n.createElement(o.Z,{title:(0,l.I)({id:"theme.NotFound.title",message:"Page Not Found"})},n.createElement("main",{className:"container margin-vert--xl"},n.createElement("div",{className:"row"},n.createElement("div",{className:"col col--6 col--offset-3"},n.createElement("h1",{className:"hero__title"},n.createElement(l.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),n.createElement("p",null,n.createElement(l.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),n.createElement("p",null,n.createElement(l.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."))))))}}}]); \ No newline at end of file diff --git a/assets/js/608.ef4abb81.js b/assets/js/608.ef4abb81.js deleted file mode 100644 index 9a299203..00000000 --- a/assets/js/608.ef4abb81.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[608],{4608:function(e,t,a){a.r(t);var n=a(7294),o=a(6402),l=a(4973);t.default=function(){return n.createElement(o.Z,{title:(0,l.I)({id:"theme.NotFound.title",message:"Page Not Found"})},n.createElement("main",{className:"container margin-vert--xl"},n.createElement("div",{className:"row"},n.createElement("div",{className:"col col--6 col--offset-3"},n.createElement("h1",{className:"hero__title"},n.createElement(l.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),n.createElement("p",null,n.createElement(l.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),n.createElement("p",null,n.createElement(l.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."))))))}}}]); \ No newline at end of file diff --git a/assets/js/625b1ed7.a891f9d2.js b/assets/js/625b1ed7.a891f9d2.js deleted file mode 100644 index 7faf0f67..00000000 --- a/assets/js/625b1ed7.a891f9d2.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdashy=self.webpackChunkdashy||[]).push([[168],{3905:function(e,t,a){a.d(t,{Zo:function(){return p},kt:function(){return d}});var n=a(7294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function r(e){for(var t=1;t=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var l=n.createContext({}),c=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},p=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var a=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),h=c(a),d=o,m=h["".concat(l,".").concat(d)]||h[d]||u[d]||i;return a?n.createElement(m,r(r({ref:t},p),{},{components:a})):n.createElement(m,r({ref:t},p))}));function d(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=a.length,r=new Array(i);r[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:o,r[1]=s;for(var c=2;c